Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 03 Sep 2019 14:06:01 -0000
From:      Enji Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r345708 - in head: lib/clang lib/libc++ lib/libc++experimental lib/libc++fs lib/libclang_rt lib/libcxxrt lib/libgcc_eh lib/libomp lib/ofed/libibnetdisc share/mk usr.bin/dtc usr.sbin/pmc
Message-ID:  <201903291845.x2TIjRMb087865@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Fri Mar 29 18:45:27 2019
New Revision: 345708
URL: https://svnweb.freebsd.org/changeset/base/345708

Log:
  Standardize `-std=c++* as `CXXSTD`
  
  CXXSTD was added as the C++ analogue to CSTD.
  
  CXXSTD defaults to `-std=c++11` with supporting compilers; `-std=gnu++98`,
  otherwise for older versions of g++.
  
  This change standardizes the CXXSTD variable, originally added to
  googletest.test.inc.mk as part of r345203.
  
  As part of this effort, convert all `CXXFLAGS+= -std=*` calls to use `CXXSTD`.
  
  Notes:
  
  This value is not sanity checked in bsd.sys.mk, however, given the two
  most used C++ compilers on FreeBSD (clang++ and g++) support both modes, it is
  likely to work with both toolchains. This method will be refined in the future
  to support more variants of C++, as not all versions of clang++ and g++ (for
  instance) support C++14, C++17, etc.
  
  Any manual appending of `-std=*` to `CXXFLAGS` should be replaced with CXXSTD.
  Example:
  
  Before this commit:
  ```
  CXXFLAGS+=	-std=c++14
  ```
  
  After this commit:
  ```
  CXXSTD=	c++14
  ```
  
  Reviewed by:	asomers
  Approved by:	emaste (mentor)
  MFC after:	1 month
  MFC with:	r345203, r345704, r345705
  Relnotes:	yes
  Tested with:	make tinderbox
  Differential Revision:	https://reviews.freebsd.org/D19732

Modified:
  head/lib/clang/llvm.build.mk
  head/lib/libc++/Makefile
  head/lib/libc++experimental/Makefile
  head/lib/libc++fs/Makefile
  head/lib/libclang_rt/Makefile.inc
  head/lib/libcxxrt/Makefile
  head/lib/libgcc_eh/Makefile.inc
  head/lib/libomp/Makefile
  head/lib/ofed/libibnetdisc/Makefile
  head/share/mk/bsd.sys.mk
  head/share/mk/googletest.test.inc.mk
  head/usr.bin/dtc/Makefile
  head/usr.sbin/pmc/Makefile

Modified: head/lib/clang/llvm.build.mk
==============================================================================
--- head/lib/clang/llvm.build.mk	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/lib/clang/llvm.build.mk	Fri Mar 29 18:45:27 2019	(r345708)
@@ -95,7 +95,7 @@ CFLAGS+=	-ffunction-sections
 CFLAGS+=	-fdata-sections
 LDFLAGS+=	-Wl,--gc-sections
 
-CXXFLAGS+=	-std=c++11
+CXXSTD?=	c++11
 CXXFLAGS+=	-fno-exceptions
 CXXFLAGS+=	-fno-rtti
 CXXFLAGS.clang+= -stdlib=libc++

Modified: head/lib/libc++/Makefile
==============================================================================
--- head/lib/libc++/Makefile	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/lib/libc++/Makefile	Fri Mar 29 18:45:27 2019	(r345708)
@@ -76,9 +76,7 @@ CFLAGS+=	-nostdinc++
 CFLAGS+=	-nostdlib
 CFLAGS+=	-D_LIBCPP_BUILDING_LIBRARY
 CFLAGS+=	-DLIBCXXRT
-.if empty(CXXFLAGS:M-std=*)
-CXXFLAGS+=	-std=c++11
-.endif
+CXXSTD=		c++11
 
 LIBADD+=	cxxrt
 INCSGROUPS=	STD EXP EXT

Modified: head/lib/libc++experimental/Makefile
==============================================================================
--- head/lib/libc++experimental/Makefile	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/lib/libc++experimental/Makefile	Fri Mar 29 18:45:27 2019	(r345708)
@@ -20,8 +20,6 @@ CXXFLAGS+=	-nostdinc++
 CXXFLAGS+=	-nostdlib
 CXXFLAGS+=	-D_LIBCPP_BUILDING_LIBRARY
 CXXFLAGS+=	-DLIBCXXRT
-.if empty(CXXFLAGS:M-std=*)
-CXXFLAGS+=	-std=c++14
-.endif
+CXXSTD=		c++14
 
 .include <bsd.lib.mk>

Modified: head/lib/libc++fs/Makefile
==============================================================================
--- head/lib/libc++fs/Makefile	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/lib/libc++fs/Makefile	Fri Mar 29 18:45:27 2019	(r345708)
@@ -22,8 +22,6 @@ CXXFLAGS+=	-nostdinc++
 CXXFLAGS+=	-nostdlib
 CXXFLAGS+=	-D_LIBCPP_BUILDING_LIBRARY
 CXXFLAGS+=	-DLIBCXXRT
-.if empty(CXXFLAGS:M-std=*)
-CXXFLAGS+=	-std=c++14
-.endif
+CXXSTD=		c++14
 
 .include <bsd.lib.mk>

Modified: head/lib/libclang_rt/Makefile.inc
==============================================================================
--- head/lib/libclang_rt/Makefile.inc	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/lib/libclang_rt/Makefile.inc	Fri Mar 29 18:45:27 2019	(r345708)
@@ -41,4 +41,4 @@ CFLAGS+=	-funwind-tables
 CXXFLAGS+=	-fvisibility-inlines-hidden
 CXXFLAGS+=	-fvisibility=hidden
 CFLAGS+=	-I${CRTSRC}/lib
-CXXFLAGS+=	-std=c++11
+CXXSTD=		c++11

Modified: head/lib/libcxxrt/Makefile
==============================================================================
--- head/lib/libcxxrt/Makefile	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/lib/libcxxrt/Makefile	Fri Mar 29 18:45:27 2019	(r345708)
@@ -22,9 +22,7 @@ SRCS+=		libelftc_dem_gnu3.c\
 
 WARNS=		0
 CFLAGS+=	-isystem ${SRCDIR} -nostdinc++
-.if empty(CXXFLAGS:M-std=*)
-CXXFLAGS+=	-std=c++11
-.endif
+CXXSTD=		c++11
 VERSION_MAP=	${.CURDIR}/Version.map
 
 .include <bsd.lib.mk>

Modified: head/lib/libgcc_eh/Makefile.inc
==============================================================================
--- head/lib/libgcc_eh/Makefile.inc	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/lib/libgcc_eh/Makefile.inc	Fri Mar 29 18:45:27 2019	(r345708)
@@ -27,10 +27,8 @@ CXXFLAGS.${file}+=	-fno-exceptions -funwind-tables
 .endfor
 
 CFLAGS+=	-I${UNWINDINCDIR} -I${.CURDIR} -D_LIBUNWIND_IS_NATIVE_ONLY
-.if empty(CXXFLAGS:M-std=*)
-CXXFLAGS+=	-std=c++11
-.endif
 CXXFLAGS+=	-fno-rtti
+CXXSTD=		c++11
 STATIC_CXXFLAGS+= -fvisibility=hidden -fPIC
 # Probably need to just move this earlier or use CXXFLAGS
 .if ${MK_DIRDEPS_BUILD} == "yes"

Modified: head/lib/libomp/Makefile
==============================================================================
--- head/lib/libomp/Makefile	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/lib/libomp/Makefile	Fri Mar 29 18:45:27 2019	(r345708)
@@ -53,9 +53,9 @@ CFLAGS+=	-I${ITTSRC}
 CFLAGS+=	-ffunction-sections
 CFLAGS+=	-fdata-sections
 CXXFLAGS+=	-fvisibility-inlines-hidden
-CXXFLAGS+=	-std=c++11
 CXXFLAGS+=	-fno-exceptions
 CXXFLAGS+=	-fno-rtti
+CXXSTD=		c++11
 
 LDFLAGS+=	-Wl,--warn-shared-textrel
 LDFLAGS+=	-Wl,--gc-sections

Modified: head/lib/ofed/libibnetdisc/Makefile
==============================================================================
--- head/lib/ofed/libibnetdisc/Makefile	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/lib/ofed/libibnetdisc/Makefile	Fri Mar 29 18:45:27 2019	(r345708)
@@ -31,9 +31,6 @@ LIBADD=		osmcomp ibmad ibumad
 CFLAGS+=	-DHAVE_CONFIG_H=1
 CFLAGS+=	-I${_spath}
 CFLAGS+=	-I${SYSROOT:U${DESTDIR}}/${INCLUDEDIR}/infiniband
-.if ${COMPILER_FEATURES:Mc++11}
-CXXFLAGS+=	-std=c++11
-.endif
 VERSION_MAP=	${_spath}/libibnetdisc.map
 
 .include <bsd.lib.mk>

Modified: head/share/mk/bsd.sys.mk
==============================================================================
--- head/share/mk/bsd.sys.mk	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/share/mk/bsd.sys.mk	Fri Mar 29 18:45:27 2019	(r345708)
@@ -24,6 +24,19 @@ CFLAGS+=	-std=iso9899:1999
 .else # CSTD
 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
+CXXFLAGS+=	-std=${CXXSTD}
+# CXXSTD
+
 # -pedantic is problematic because it also imposes namespace restrictions
 #CFLAGS+=	-pedantic
 .if defined(WARNS)

Modified: head/share/mk/googletest.test.inc.mk
==============================================================================
--- head/share/mk/googletest.test.inc.mk	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/share/mk/googletest.test.inc.mk	Fri Mar 29 18:45:27 2019	(r345708)
@@ -1,13 +1,9 @@
 # $FreeBSD$
 
-# XXX: this should be defined in bsd.sys.mk
-CXXSTD?=	c++11
-
 GTESTS_CXXFLAGS+= -DGTEST_HAS_POSIX_RE=1
 GTESTS_CXXFLAGS+= -DGTEST_HAS_PTHREAD=1
 GTESTS_CXXFLAGS+= -DGTEST_HAS_STREAM_REDIRECTION=1
 GTESTS_CXXFLAGS+= -frtti
-GTESTS_CXXFLAGS+= -std=${CXXSTD}
 
 # XXX: src.libnames.mk should handle adding this directory for libgtest's,
 # libgmock's, etc, headers.

Modified: head/usr.bin/dtc/Makefile
==============================================================================
--- head/usr.bin/dtc/Makefile	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/usr.bin/dtc/Makefile	Fri Mar 29 18:45:27 2019	(r345708)
@@ -6,7 +6,7 @@ MAN=	dtc.1
 
 WARNS?=	3
 
-CXXFLAGS+=	-std=c++11 -fno-rtti -fno-exceptions
+CXXFLAGS+=	-fno-rtti -fno-exceptions
 
 NO_SHARED?=NO
 

Modified: head/usr.sbin/pmc/Makefile
==============================================================================
--- head/usr.sbin/pmc/Makefile	Fri Mar 29 18:43:46 2019	(r345707)
+++ head/usr.sbin/pmc/Makefile	Fri Mar 29 18:45:27 2019	(r345708)
@@ -6,7 +6,8 @@
 PROG_CXX=	pmc
 MAN=	
 WARNS?=	3
-CXXFLAGS+= -O0 -std=c++14
+CXXFLAGS+= -O0
+CXXSTD= c++14
 CWARNFLAGS.gcc+= -Wno-redundant-decls
 
 LIBADD=	kvm pmc m ncursesw pmcstat elf





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