Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Apr 2019 18:40:47 +0000 (UTC)
From:      Enji Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r346576 - head/share/mk
Message-ID:  <201904221840.x3MIelCv074928@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Mon Apr 22 18:40:46 2019
New Revision: 346576
URL: https://svnweb.freebsd.org/changeset/base/346576

Log:
  Fix up CXXSTD support originally added in r345708
  
  r345708 worked for the base system, but unfortunately, caused a lot of
  disruption for third-party packages that relied on C++, since bsd.sys.mk is
  used by applications outside the base system. The defaults picked didn't match
  the compiler's defaults and broke some builds that didn't specify a standard,
  as well as some that overrode the value by setting `-std=gnu++14` (for
  example) manually.
  
  This change takes a more relaxed approach to appending `-std=${CXXSTD}` to
  CXXFLAGS, by only doing so when the value is specified, as opposed to
  overriding the standard set by an end-user. This avoids the need for having
  to bake NOP default into bsd.sys.mk for supported compiler-toolchain
  versions.
  
  In order to make this change possible, add CXXSTD to Makefile snippets which
  relied on the default value (c++11) added in r345708.
  
  MFC after:      2 weeks
  MFC with:       r345708, r346574
  Reviewed by:    emaste
  Reported by:    jbeich
  Differential Revision: https://reviews.freebsd.org/D19895 (as part of a larger change)

Modified:
  head/share/mk/bsd.sys.mk
  head/share/mk/googletest.test.inc.mk

Modified: head/share/mk/bsd.sys.mk
==============================================================================
--- head/share/mk/bsd.sys.mk	Mon Apr 22 18:40:24 2019	(r346575)
+++ head/share/mk/bsd.sys.mk	Mon Apr 22 18:40:46 2019	(r346576)
@@ -25,17 +25,9 @@ CFLAGS+=	-std=iso9899:1999
 CFLAGS+=	-std=${CSTD}
 .endif # CSTD
 
-.if ${COMPILER_FEATURES:Mc++11}
-CXXSTD?=	c++11
-.elif ${COMPILER_TYPE} == "gcc"
-# Prior versions of g++ support C++98 with GNU extensions by default.
-CXXSTD?=	gnu++98
-.else
-# Assume that the compiler supports at least C++98.
-CXXSTD?=	c++98
-.endif
+.if !empty(CXXSTD)
 CXXFLAGS+=	-std=${CXXSTD}
-# CXXSTD
+.endif
 
 # -pedantic is problematic because it also imposes namespace restrictions
 #CFLAGS+=	-pedantic

Modified: head/share/mk/googletest.test.inc.mk
==============================================================================
--- head/share/mk/googletest.test.inc.mk	Mon Apr 22 18:40:24 2019	(r346575)
+++ head/share/mk/googletest.test.inc.mk	Mon Apr 22 18:40:46 2019	(r346576)
@@ -9,4 +9,6 @@ GTESTS_CXXFLAGS+= -frtti
 # libgmock's, etc, headers.
 CXXFLAGS+=	-I${DESTDIR}${INCLUDEDIR}/private
 
+CXXSTD?=	c++11
+
 NO_WTHREAD_SAFETY=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201904221840.x3MIelCv074928>