Thanks for the report. I've now bracketed the extra flag in a check that we're compiling with clang, which should fix it, so let me know if it still breaks for you.
David On 6 Sep 2013, at 21:34, Xin LI <delp...@gmail.com> wrote: > 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"