CXXSTD is 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 Relnotes: yes Differential Revision: https://reviews.freebsd.org/D19732
This commit is contained in:
parent
9638d3e2e6
commit
aeeceba42b
@ -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++
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -50,8 +50,8 @@ PROGS+= h_getopt h_getopt_long
|
||||
|
||||
CFLAGS+= -I${.CURDIR}
|
||||
|
||||
CXXFLAGS.cxa_thread_atexit_test+= -std=c++11
|
||||
CXXFLAGS.cxa_thread_atexit_nothr_test+= -std=c++11
|
||||
CXXSTD.cxa_thread_atexit_test= c++11
|
||||
CXXSTD.cxa_thread_atexit_nothr_test= c++11
|
||||
LIBADD.cxa_thread_atexit_test+= pthread
|
||||
|
||||
.for t in h_getopt h_getopt_long
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -22,8 +22,8 @@ PROGS += ${PROGS_CXX}
|
||||
|
||||
.if defined(PROG)
|
||||
# just one of many
|
||||
PROG_OVERRIDE_VARS += BINDIR BINGRP BINOWN BINMODE DPSRCS MAN NO_WERROR \
|
||||
PROGNAME SRCS STRIP WARNS
|
||||
PROG_OVERRIDE_VARS += BINDIR BINGRP BINOWN BINMODE CSTD CXXSTD DPSRCS MAN \
|
||||
NO_WERROR PROGNAME SRCS STRIP WARNS
|
||||
PROG_VARS += CFLAGS CXXFLAGS DEBUG_FLAGS DPADD INTERNALPROG LDADD LIBADD \
|
||||
LINKS LDFLAGS MLINKS ${PROG_OVERRIDE_VARS}
|
||||
.for v in ${PROG_VARS:O:u}
|
||||
|
@ -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)
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user