Will this break cross building on 9.x host? I hit this: c++ -O2 -pipe -I/tank/home/delphij/head/lib/clang/libllvmsupport/../../../contrib/llvm/include -I/tank/home/delphij/head/lib/clang/libllvmsupport/../../../contrib/llvm/tools/clang/include -I/tank/home/delphij/head/lib/clang/libllvmsupport/../../../contrib/llvm/lib/Support -I. -I/tank/home/delphij/head/lib/clang/libllvmsupport/../../../contrib/llvm/../../lib/clang/include -DLLVM_ON_UNIX -DLLVM_ON_FREEBSD -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -fno-strict-aliasing -DLLVM_DEFAULT_TARGET_TRIPLE=\"x86_64-unknown-freebsd10.0\" -DLLVM_HOST_TRIPLE=\"x86_64-unknown-freebsd10.0\" -DDEFAULT_SYSROOT=\"\" -I/tank/home/delphij/obj/tank/home/delphij/head/tmp/legacy/usr/include -Wno-c++11-extensions -fno-exceptions -fno-rtti -c /tank/home/delphij/head/lib/clang/libllvmsupport/../../../contrib/llvm/lib/Support/APFloat.cpp -o APFloat.o cc1plus: error: unrecognized command line option "-Wno-c++11-extensions"
On Fri, Sep 6, 2013 at 1:08 PM, David Chisnall <thera...@freebsd.org> wrote: > Author: theraven > Date: Fri Sep 6 20:08:03 2013 > New Revision: 255321 > URL: http://svnweb.freebsd.org/changeset/base/255321 > > Log: > On platforms where clang is the default compiler, don't build gcc or > libstdc++. > To enable them, set WITH_GCC and WITH_GNUCXX in src.conf. > Make clang default to using libc++ on FreeBSD 10. > Bumped __FreeBSD_version for the change. > > GCC is still enabled on PC98, because the PC98 bootloader requires GCC to > build > (or, at least, hard-codes the use of gcc into its build). > > Thanks to everyone who helped make the ports tree ready for this (and bapt > for coordinating them all). Also to imp for reviewing this and working on > the > forward-porting of the changes in our gcc so that we're getting to a much > better place with regard to external toolchains. > > Sorry to all of the people who helped who I forgot to mention by name. > > Reviewed by: bapt, imp, dim, ... > > Added: > head/tools/build/options/WITHOUT_GNUCXX (contents, props changed) > head/tools/build/options/WITH_GNUCXX (contents, props changed) > Modified: > head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp > head/contrib/llvm/tools/clang/lib/Driver/ToolChains.h > head/gnu/lib/Makefile > head/gnu/usr.bin/cc/Makefile > head/share/mk/bsd.own.mk > head/sys/sys/param.h > > Modified: head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp > ============================================================================== > --- head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp Fri Sep 6 > 18:41:57 2013 (r255320) > +++ head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp Fri Sep 6 > 20:08:03 2013 (r255321) > @@ -1851,6 +1851,38 @@ bool FreeBSD::UseSjLjExceptions() const > } > } > > +ToolChain::CXXStdlibType > +FreeBSD::GetCXXStdlibType(const ArgList &Args) const { > + if (Arg *A = Args.getLastArg(options::OPT_stdlib_EQ)) { > + StringRef Value = A->getValue(); > + if (Value == "libc++") > + return ToolChain::CST_Libcxx; > + if (Value == "libstdc++") > + return ToolChain::CST_Libstdcxx; > + getDriver().Diag(diag::err_drv_invalid_stdlib_name) > + << A->getAsString(Args); > + } > + > + return getTriple().getOSMajorVersion() >= 10 ? ToolChain::CST_Libcxx : > + ToolChain::CST_Libstdcxx; > +} > + > +void FreeBSD::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, > + ArgStringList &CC1Args) const { > + if (DriverArgs.hasArg(options::OPT_nostdlibinc) || > + DriverArgs.hasArg(options::OPT_nostdincxx)) > + return; > + > + if (GetCXXStdlibType(DriverArgs) == ToolChain::CST_Libcxx) > + addSystemInclude(DriverArgs, CC1Args, > + getDriver().SysRoot + "/usr/include/c++/v1"); > + else > + addSystemInclude(DriverArgs, CC1Args, > + getDriver().SysRoot + "/usr/include/c++/4.2"); > + return; > + > +} > + > /// NetBSD - NetBSD tool chain which can call as(1) and ld(1) directly. > > NetBSD::NetBSD(const Driver &D, const llvm::Triple& Triple, const ArgList > &Args) > > Modified: head/contrib/llvm/tools/clang/lib/Driver/ToolChains.h > ============================================================================== > --- head/contrib/llvm/tools/clang/lib/Driver/ToolChains.h Fri Sep 6 > 18:41:57 2013 (r255320) > +++ head/contrib/llvm/tools/clang/lib/Driver/ToolChains.h Fri Sep 6 > 20:08:03 2013 (r255321) > @@ -458,9 +458,14 @@ class LLVM_LIBRARY_VISIBILITY FreeBSD : > public: > FreeBSD(const Driver &D, const llvm::Triple& Triple, const ArgList &Args); > > + virtual CXXStdlibType GetCXXStdlibType(const ArgList &Args) const; > + > virtual bool IsMathErrnoDefault() const { return false; } > virtual bool IsObjCNonFragileABIDefault() const { return true; } > > + virtual void AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, > + ArgStringList &CC1Args) const; > + > virtual bool UseSjLjExceptions() const; > protected: > virtual Tool *buildAssembler() const; > > Modified: head/gnu/lib/Makefile > ============================================================================== > --- head/gnu/lib/Makefile Fri Sep 6 18:41:57 2013 (r255320) > +++ head/gnu/lib/Makefile Fri Sep 6 20:08:03 2013 (r255321) > @@ -10,7 +10,7 @@ SUBDIR+= libssp > > # libsupc++ uses libstdc++ headers, although 'make includes' should > # have taken care of that already. > -.if ${MK_CXX} != "no" > +.if ${MK_GNUCXX} != "no" > SUBDIR+= libstdc++ libsupc++ > .endif > > > Modified: head/gnu/usr.bin/cc/Makefile > ============================================================================== > --- head/gnu/usr.bin/cc/Makefile Fri Sep 6 18:41:57 2013 > (r255320) > +++ head/gnu/usr.bin/cc/Makefile Fri Sep 6 20:08:03 2013 > (r255321) > @@ -12,7 +12,12 @@ SUBDIR+= cpp > .endif > > .if ${MK_CXX} != "no" > -SUBDIR+= cc1plus c++ c++filt > +.if ${MK_GNUCXX} != "no" > +SUBDIR+= cc1plus c++ > +.endif > +# This should be moved into the above block once c++filt from elftoolchain or > +# similar is provided. > +SUBDIR+= c++filt > .endif > > .if ${MK_GCOV} != "no" > > Modified: head/share/mk/bsd.own.mk > ============================================================================== > --- head/share/mk/bsd.own.mk Fri Sep 6 18:41:57 2013 (r255320) > +++ head/share/mk/bsd.own.mk Fri Sep 6 20:08:03 2013 (r255321) > @@ -284,7 +284,6 @@ __DEFAULT_YES_OPTIONS = \ > FP_LIBC \ > FREEBSD_UPDATE \ > GAMES \ > - GCC \ > GCOV \ > GDB \ > GNU \ > @@ -400,6 +399,11 @@ __T=${TARGET_ARCH} > .else > __T=${MACHINE_ARCH} > .endif > +.if defined(TARGET) > +__TT=${TARGET} > +.else > +__TT=${MACHINE_ARCH} > +.endif > # Clang is only for x86, powerpc and little-endian arm right now, by default. > .if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*} > __DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL > @@ -414,8 +418,30 @@ __DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL > .if ${__T} == "amd64" || ${__T} == "arm" || ${__T} == "armv6" || \ > ${__T} == "i386" > __DEFAULT_YES_OPTIONS+=CLANG_IS_CC > +# The pc98 bootloader requires gcc to build and so we must leave gcc enabled > +# for pc98 for now. > +.if ${__TT} == "pc98" > +__DEFAULT_NO_OPTIONS+=GNUCXX > +__DEFAULT_YES_OPTIONS+=GCC > +.else > +__DEFAULT_NO_OPTIONS+=GCC GNUCXX > +.endif > +# The libc++ headers use c++11 extensions. These are normally silenced > because > +# they are treated as system headers, but we explicitly disable that warning > +# suppression when building the base system to catch bugs in our headers. > +# Eventually we'll want to start building the base system C++ code as C++11, > +# but not yet. > +CXXFLAGS+= -Wno-c++11-extensions > .else > +# If clang is not cc, then build gcc by default > __DEFAULT_NO_OPTIONS+=CLANG_IS_CC > +__DEFAULT_YES_OPTIONS+=GCC > +# And if g++ is c++, build the rest of the GNU C++ stack > +.if defined(WITHOUT_CXX) > +__DEFAULT_NO_OPTIONS+=GNUCXX > +.else > +__DEFAULT_YES_OPTIONS+=GNUCXX > +.endif > .endif > # FDT is needed only for arm, mips and powerpc > .if ${__T:Marm*} || ${__T:Mpowerpc*} || ${__T:Mmips*} > > Modified: head/sys/sys/param.h > ============================================================================== > --- head/sys/sys/param.h Fri Sep 6 18:41:57 2013 (r255320) > +++ head/sys/sys/param.h Fri Sep 6 20:08:03 2013 (r255321) > @@ -58,7 +58,7 @@ > * in the range 5 to 9. > */ > #undef __FreeBSD_version > -#define __FreeBSD_version 1000053 /* Master, propagated to newvers */ > +#define __FreeBSD_version 1000054 /* Master, propagated to newvers */ > > /* > * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, > > Added: head/tools/build/options/WITHOUT_GNUCXX > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/tools/build/options/WITHOUT_GNUCXX Fri Sep 6 20:08:03 2013 > (r255321) > @@ -0,0 +1,3 @@ > +.\" $FreeBSD$ > +Do not build the GNU C++ stack (g++, libstdc++). > +This is the default on platforms where clang is the system compiler. > > Added: head/tools/build/options/WITH_GNUCXX > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/tools/build/options/WITH_GNUCXX Fri Sep 6 20:08:03 2013 > (r255321) > @@ -0,0 +1,3 @@ > +.\" $FreeBSD$ > +Build the GNU C++ stack (g++, libstdc++). > +This is the default on platforms where gcc is the system compiler. -- Xin LI <delp...@delphij.net> https://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"