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


_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to