From owner-svn-src-head@FreeBSD.ORG Fri Sep 6 20:35:00 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 D0B817CE; Fri, 6 Sep 2013 20:35:00 +0000 (UTC) (envelope-from delphij@gmail.com) Received: from mail-qe0-x22f.google.com (mail-qe0-x22f.google.com [IPv6:2607:f8b0:400d:c02::22f]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5E25122DB; Fri, 6 Sep 2013 20:35:00 +0000 (UTC) Received: by mail-qe0-f47.google.com with SMTP id b4so1970075qen.34 for ; Fri, 06 Sep 2013 13:34:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=O+NkvIM+X6WURT0gdjdMU4X/ZmDCd9CTsOEku9Esj8U=; b=0Q/NnTeBquago+Snx8gPjmnDdKGCpQTyOPPTTBelu3aJ9jvJOnqT0NBqcKkB0+3+30 16Do8te/Qpei9EL+EV2F2wCbo+ylrUsr9qmuf3xMzhtmQWZYL3e3ZAoADU1c4Lu24V62 u6ICen59h+TwhzP06Wsf2itp7BL6T7ifIFMNp3foXFMLtDEOc9IMHXydMCOFjui9vPWM PMbgPmyQ8DNfQUrb8hIBsO5d86J7TFgkAXmuGoCiyICL+IHcrt+TobIF0i8R3Xs++qnf fY5xeD2teeqINTfWCfE8VCFwh2EqvdrywhjL4WmUCNY3o+kCOI0qPZuj6WJ/timw+xtV 0agQ== MIME-Version: 1.0 X-Received: by 10.224.2.71 with SMTP id 7mr4037045qai.97.1378499699480; Fri, 06 Sep 2013 13:34:59 -0700 (PDT) Received: by 10.49.63.73 with HTTP; Fri, 6 Sep 2013 13:34:59 -0700 (PDT) In-Reply-To: <201309062008.r86K836C048843@svn.freebsd.org> References: <201309062008.r86K836C048843@svn.freebsd.org> Date: Fri, 6 Sep 2013 13:34:59 -0700 Message-ID: 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: Xin LI To: David Chisnall Content-Type: text/plain; charset=UTF-8 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:35:00 -0000 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 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 https://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die