From owner-svn-src-head@FreeBSD.ORG Fri Sep 6 20:43:11 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 0AB80DC8; Fri, 6 Sep 2013 20:43:11 +0000 (UTC) (envelope-from theraven@FreeBSD.org) Received: from theravensnest.org (theraven.freebsd.your.org [216.14.102.27]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 97B51232B; Fri, 6 Sep 2013 20:43:10 +0000 (UTC) Received: from [192.168.0.2] (cpc27-cmbg15-2-0-cust235.5-4.cable.virginmedia.com [86.27.188.236]) (authenticated bits=0) by theravensnest.org (8.14.5/8.14.5) with ESMTP id r86Kh7E7073919 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Fri, 6 Sep 2013 20:43:08 GMT (envelope-from theraven@FreeBSD.org) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: svn commit: r255321 - in head: contrib/llvm/tools/clang/lib/Driver gnu/lib gnu/usr.bin/cc share/mk sys/sys tools/build/options From: David Chisnall In-Reply-To: Date: Fri, 6 Sep 2013 21:43:01 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201309062008.r86K836C048843@svn.freebsd.org> To: Xin LI X-Mailer: Apple Mail (2.1508) Cc: "svn-src-head@freebsd.org" , "svn-src-all@freebsd.org" , "src-committers@freebsd.org" X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Sep 2013 20:43:11 -0000 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 wrote: > Will this break cross building on 9.x host? I hit this: >=20 > c++ -O2 -pipe = -I/tank/home/delphij/head/lib/clang/libllvmsupport/../../../contrib/llvm/i= nclude > = -I/tank/home/delphij/head/lib/clang/libllvmsupport/../../../contrib/llvm/t= ools/clang/include > = -I/tank/home/delphij/head/lib/clang/libllvmsupport/../../../contrib/llvm/l= ib/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=3D\"x86_64-unknown-freebsd10.0\" > -DLLVM_HOST_TRIPLE=3D\"x86_64-unknown-freebsd10.0\" > -DDEFAULT_SYSROOT=3D\"\" > -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" >=20 > On Fri, Sep 6, 2013 at 1:08 PM, David Chisnall = wrote: >> Author: theraven >> Date: Fri Sep 6 20:08:03 2013 >> New Revision: 255321 >> URL: http://svnweb.freebsd.org/changeset/base/255321 >>=20 >> 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. >>=20 >> 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). >>=20 >> 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. >>=20 >> Sorry to all of the people who helped who I forgot to mention by = name. >>=20 >> Reviewed by: bapt, imp, dim, ... >>=20 >> 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 >>=20 >> Modified: head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- 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 >> } >> } >>=20 >> +ToolChain::CXXStdlibType >> +FreeBSD::GetCXXStdlibType(const ArgList &Args) const { >> + if (Arg *A =3D Args.getLastArg(options::OPT_stdlib_EQ)) { >> + StringRef Value =3D A->getValue(); >> + if (Value =3D=3D "libc++") >> + return ToolChain::CST_Libcxx; >> + if (Value =3D=3D "libstdc++") >> + return ToolChain::CST_Libstdcxx; >> + getDriver().Diag(diag::err_drv_invalid_stdlib_name) >> + << A->getAsString(Args); >> + } >> + >> + return getTriple().getOSMajorVersion() >=3D 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) =3D=3D 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. >>=20 >> NetBSD::NetBSD(const Driver &D, const llvm::Triple& Triple, const = ArgList &Args) >>=20 >> Modified: head/contrib/llvm/tools/clang/lib/Driver/ToolChains.h >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- 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); >>=20 >> + virtual CXXStdlibType GetCXXStdlibType(const ArgList &Args) const; >> + >> virtual bool IsMathErrnoDefault() const { return false; } >> virtual bool IsObjCNonFragileABIDefault() const { return true; } >>=20 >> + virtual void AddClangCXXStdlibIncludeArgs(const ArgList = &DriverArgs, >> + ArgStringList &CC1Args) = const; >> + >> virtual bool UseSjLjExceptions() const; >> protected: >> virtual Tool *buildAssembler() const; >>=20 >> Modified: head/gnu/lib/Makefile >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- 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+=3D libssp >>=20 >> # libsupc++ uses libstdc++ headers, although 'make includes' should >> # have taken care of that already. >> -.if ${MK_CXX} !=3D "no" >> +.if ${MK_GNUCXX} !=3D "no" >> SUBDIR+=3D libstdc++ libsupc++ >> .endif >>=20 >>=20 >> Modified: head/gnu/usr.bin/cc/Makefile >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- 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+=3D cpp >> .endif >>=20 >> .if ${MK_CXX} !=3D "no" >> -SUBDIR+=3D cc1plus c++ c++filt >> +.if ${MK_GNUCXX} !=3D "no" >> +SUBDIR+=3D cc1plus c++ >> +.endif >> +# This should be moved into the above block once c++filt from = elftoolchain or >> +# similar is provided. >> +SUBDIR+=3D c++filt >> .endif >>=20 >> .if ${MK_GCOV} !=3D "no" >>=20 >> Modified: head/share/mk/bsd.own.mk >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- 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 =3D \ >> FP_LIBC \ >> FREEBSD_UPDATE \ >> GAMES \ >> - GCC \ >> GCOV \ >> GDB \ >> GNU \ >> @@ -400,6 +399,11 @@ __T=3D${TARGET_ARCH} >> .else >> __T=3D${MACHINE_ARCH} >> .endif >> +.if defined(TARGET) >> +__TT=3D${TARGET} >> +.else >> +__TT=3D${MACHINE_ARCH} >> +.endif >> # Clang is only for x86, powerpc and little-endian arm right now, by = default. >> .if ${__T} =3D=3D "amd64" || ${__T} =3D=3D "i386" || ${__T:Mpowerpc*} >> __DEFAULT_YES_OPTIONS+=3DCLANG CLANG_FULL >> @@ -414,8 +418,30 @@ __DEFAULT_NO_OPTIONS+=3DCLANG CLANG_FULL >> .if ${__T} =3D=3D "amd64" || ${__T} =3D=3D "arm" || ${__T} =3D=3D = "armv6" || \ >> ${__T} =3D=3D "i386" >> __DEFAULT_YES_OPTIONS+=3DCLANG_IS_CC >> +# The pc98 bootloader requires gcc to build and so we must leave gcc = enabled >> +# for pc98 for now. >> +.if ${__TT} =3D=3D "pc98" >> +__DEFAULT_NO_OPTIONS+=3DGNUCXX >> +__DEFAULT_YES_OPTIONS+=3DGCC >> +.else >> +__DEFAULT_NO_OPTIONS+=3DGCC 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+=3D -Wno-c++11-extensions >> .else >> +# If clang is not cc, then build gcc by default >> __DEFAULT_NO_OPTIONS+=3DCLANG_IS_CC >> +__DEFAULT_YES_OPTIONS+=3DGCC >> +# And if g++ is c++, build the rest of the GNU C++ stack >> +.if defined(WITHOUT_CXX) >> +__DEFAULT_NO_OPTIONS+=3DGNUCXX >> +.else >> +__DEFAULT_YES_OPTIONS+=3DGNUCXX >> +.endif >> .endif >> # FDT is needed only for arm, mips and powerpc >> .if ${__T:Marm*} || ${__T:Mpowerpc*} || ${__T:Mmips*} >>=20 >> Modified: head/sys/sys/param.h >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- 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 */ >>=20 >> /* >> * __FreeBSD_kernel__ indicates that this system uses the kernel of = FreeBSD, >>=20 >> Added: head/tools/build/options/WITHOUT_GNUCXX >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- /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. >>=20 >> Added: head/tools/build/options/WITH_GNUCXX >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- /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. >=20 >=20 >=20 > --=20 > Xin LI https://www.delphij.net/ > FreeBSD - The Power to Serve! Live free or die