From owner-svn-src-all@freebsd.org Fri Mar 29 18:13:49 2019 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id ECBCD154D51F; Fri, 29 Mar 2019 18:13:48 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 92AFF720AA; Fri, 29 Mar 2019 18:13:48 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6A8622822; Fri, 29 Mar 2019 18:13:48 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2TIDmGp071983; Fri, 29 Mar 2019 18:13:48 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2TIDjFr071966; Fri, 29 Mar 2019 18:13:45 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903291813.x2TIDjFr071966@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper Date: Fri, 29 Mar 2019 18:13:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r345704 - in head: lib/clang lib/libc++ lib/libc++experimental lib/libc++fs lib/libc/tests/stdlib lib/libclang_rt lib/libcxxrt lib/libgcc_eh lib/libomp lib/ofed/libibnetdisc share/mk us... X-SVN-Group: head X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in head: lib/clang lib/libc++ lib/libc++experimental lib/libc++fs lib/libc/tests/stdlib lib/libclang_rt lib/libcxxrt lib/libgcc_eh lib/libomp lib/ofed/libibnetdisc share/mk usr.bin/dtc usr.sbin/pmc X-SVN-Commit-Revision: 345704 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 92AFF720AA X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.96)[-0.963,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Mar 2019 18:13:49 -0000 Author: ngie Date: Fri Mar 29 18:13:44 2019 New Revision: 345704 URL: https://svnweb.freebsd.org/changeset/base/345704 Log: 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 Modified: head/lib/clang/llvm.build.mk head/lib/libc++/Makefile head/lib/libc++experimental/Makefile head/lib/libc++fs/Makefile head/lib/libc/tests/stdlib/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.progs.mk 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 17:52:57 2019 (r345703) +++ head/lib/clang/llvm.build.mk Fri Mar 29 18:13:44 2019 (r345704) @@ -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 17:52:57 2019 (r345703) +++ head/lib/libc++/Makefile Fri Mar 29 18:13:44 2019 (r345704) @@ -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 17:52:57 2019 (r345703) +++ head/lib/libc++experimental/Makefile Fri Mar 29 18:13:44 2019 (r345704) @@ -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 Modified: head/lib/libc++fs/Makefile ============================================================================== --- head/lib/libc++fs/Makefile Fri Mar 29 17:52:57 2019 (r345703) +++ head/lib/libc++fs/Makefile Fri Mar 29 18:13:44 2019 (r345704) @@ -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 Modified: head/lib/libc/tests/stdlib/Makefile ============================================================================== --- head/lib/libc/tests/stdlib/Makefile Fri Mar 29 17:52:57 2019 (r345703) +++ head/lib/libc/tests/stdlib/Makefile Fri Mar 29 18:13:44 2019 (r345704) @@ -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 Modified: head/lib/libclang_rt/Makefile.inc ============================================================================== --- head/lib/libclang_rt/Makefile.inc Fri Mar 29 17:52:57 2019 (r345703) +++ head/lib/libclang_rt/Makefile.inc Fri Mar 29 18:13:44 2019 (r345704) @@ -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 17:52:57 2019 (r345703) +++ head/lib/libcxxrt/Makefile Fri Mar 29 18:13:44 2019 (r345704) @@ -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 Modified: head/lib/libgcc_eh/Makefile.inc ============================================================================== --- head/lib/libgcc_eh/Makefile.inc Fri Mar 29 17:52:57 2019 (r345703) +++ head/lib/libgcc_eh/Makefile.inc Fri Mar 29 18:13:44 2019 (r345704) @@ -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 17:52:57 2019 (r345703) +++ head/lib/libomp/Makefile Fri Mar 29 18:13:44 2019 (r345704) @@ -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 17:52:57 2019 (r345703) +++ head/lib/ofed/libibnetdisc/Makefile Fri Mar 29 18:13:44 2019 (r345704) @@ -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 Modified: head/share/mk/bsd.progs.mk ============================================================================== --- head/share/mk/bsd.progs.mk Fri Mar 29 17:52:57 2019 (r345703) +++ head/share/mk/bsd.progs.mk Fri Mar 29 18:13:44 2019 (r345704) @@ -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} Modified: head/share/mk/bsd.sys.mk ============================================================================== --- head/share/mk/bsd.sys.mk Fri Mar 29 17:52:57 2019 (r345703) +++ head/share/mk/bsd.sys.mk Fri Mar 29 18:13:44 2019 (r345704) @@ -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 17:52:57 2019 (r345703) +++ head/share/mk/googletest.test.inc.mk Fri Mar 29 18:13:44 2019 (r345704) @@ -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 17:52:57 2019 (r345703) +++ head/usr.bin/dtc/Makefile Fri Mar 29 18:13:44 2019 (r345704) @@ -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 17:52:57 2019 (r345703) +++ head/usr.sbin/pmc/Makefile Fri Mar 29 18:13:44 2019 (r345704) @@ -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