From owner-freebsd-toolchain@FreeBSD.ORG Thu Mar 12 17:04:59 2015 Return-Path: Delivered-To: freebsd-toolchain@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 60DF7BA8; Thu, 12 Mar 2015 17:04:59 +0000 (UTC) Received: from d.mail.sonic.net (d.mail.sonic.net [64.142.111.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 445489D1; Thu, 12 Mar 2015 17:04:59 +0000 (UTC) Received: from comporellon.tachypleus.net (polaris.tachypleus.net [75.101.50.44]) (authenticated bits=0) by d.mail.sonic.net (8.15.1/8.15.1) with ESMTPSA id t2CH4pOQ000804 (version=TLSv1.2 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 12 Mar 2015 10:04:51 -0700 Message-ID: <5501C732.7050502@freebsd.org> Date: Thu, 12 Mar 2015 10:04:50 -0700 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: freebsd-toolchain@freebsd.org, FreeBSD PowerPC ML Subject: Re: powerpc/powerpc64 11.0-CURRENT not building clang by default: src.opt.mk not equivalent to 10.1-STABLE bsd.own.mk on the issue References: <7A17FBA1-9499-4862-83DF-1C4010D96003@dsl-only.net> In-Reply-To: <7A17FBA1-9499-4862-83DF-1C4010D96003@dsl-only.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Sonic-CAuth: UmFuZG9tSVbbWFrQH+mrWUWqfnxGGAhhx+gTbLQFJvbtevgCiP1qJpDL0a6CpB4XClK2MsImII036B6PLLvfZ0VUazFPjoJy3h5iZ2dV0Ho= X-Sonic-ID: C;gOmB5dnI5BGiEr5YxQPdhw== M;9AnP5dnI5BGiEr5YxQPdhw== X-Spam-Flag: No X-Sonic-Spam-Details: 0.0/5.0 by cerberusd X-BeenThere: freebsd-toolchain@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Maintenance of FreeBSD's integrated toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Mar 2015 17:04:59 -0000 This is not the right one. That is related to clang 3.4. The issue is that clang 3.5+ require a C++11 compiler to build. GCC 4.2 is not a C++11 compiler and so the clang build was disabled. This makes the upgrade path when clang becomes the default compiler a little bumpy, but that did not seem to be a reason to hold off on the 3.5 upgrade across the board. -Nathan On 03/12/15 10:01, Mark Millard wrote: > Well there is an entry but when I read it I did not find it clear about the 10.x status. > > I think the implication is that the 9.x paragraph also applies to 10.x: > > On 9.x [and 10.x] installations where clang is enabled by default, e.g. on x86 and > powerpc, libc++ will not be enabled by default, so libc++ should be > built (with clang) and installed first. If both clang and libc++ are > missing, build clang first, then use it to build libc++. > > === > Mark Millard > markmi@dsl-only.net > > On 2015-Mar-12, at 05:00 AM, Warner Losh wrote: > > >> On Mar 12, 2015, at 6:36 PM, Mark Millard wrote: >> >> Basic context for the observation (powerpc64 example): >> >> # freebsd-version -ku; uname -a >> 11.0-CURRENT >> 11.0-CURRENT >> FreeBSD FBSDG5C0 11.0-CURRENT FreeBSD 11.0-CURRENT #0 r279514M: Wed Mar 11 19:23:14 PDT 2015 root@FBSDG4C0:/usr/obj/powerpc.powerpc64/usr/srcC/sys/GENERIC64vtsc-NODEBUG powerpc >> >> >> As COMPILER_FEATURES context first I note that bsd.compiler.mk uses the rule... >> >> .if ${COMPILER_TYPE} == "clang" || \ >> (${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 40800) >> COMPILER_FEATURES= c++11 >> .else >> COMPILER_FEATURES= >> .endif >> >> So powerpc/powerpc64 ends up with COMPILER_FEATURES being empty unless COMPILER_TYPE has been forced to be "clang" or ${CC} already is clang based. >> >> But src.opts.mk will never indicate to build clang when !${COMPILER_FEATURES:Mc++11} : that logic has priority over things like ${__T:Mpowerpc*} tests… > Clang can only be built by a new gcc or clang. Old gcc can’t build it, so if you don’t have a new gcc, you can’t build clang. The default compiler was gcc on 10.1. There likely should be an UPDATING entry to make this clear. > > Warner > > >> .include >> .if !${COMPILER_FEATURES:Mc++11} >> # If the compiler is not C++11 capable, disable clang and use gcc instead. >> __DEFAULT_YES_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX >> __DEFAULT_NO_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_FULL CLANG_IS_CC >> .elif ${__T} == "amd64" || ${__T} == "i386" >> # On x86, clang is enabled, and will be installed as the default cc. >> __DEFAULT_YES_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_FULL CLANG_IS_CC >> __DEFAULT_NO_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX >> .elif ${__TT} == "arm" && ${__T:Marm*eb*} == "" >> # On little-endian arm, clang is enabled, and it is installed as the default >> # cc, but since gcc is unable to build the full clang, disable it by default. >> __DEFAULT_YES_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_IS_CC >> __DEFAULT_NO_OPTIONS+=CLANG_FULL GCC GCC_BOOTSTRAP GNUCXX >> .elif ${__T:Mpowerpc*} >> # On powerpc, clang is enabled, but gcc is installed as the default cc. >> __DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL GCC GCC_BOOTSTRAP GNUCXX >> __DEFAULT_NO_OPTIONS+=CLANG_BOOTSTRAP CLANG_IS_CC >> .else >> # Everything else disables clang, and uses gcc instead. >> __DEFAULT_YES_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX >> __DEFAULT_NO_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_FULL CLANG_IS_CC >> .endif >> >> >> >> By contrast the old bsd.own.mk logic from 10.1-STABLE did not depend on testing !${COMPILER_FEATURES:Mc++11} (or analogous) before deciding for powerpc/powerpc64... >> >> # 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 >> .elif ${__T} == "arm" || ${__T} == "armv6" >> __DEFAULT_YES_OPTIONS+=CLANG >> # GCC is unable to build the full clang on arm, disable it by default. >> __DEFAULT_NO_OPTIONS+=CLANG_FULL >> .else >> __DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL >> .endif >> # Clang the default system compiler only on little-endian arm and x86. >> .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 >> .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 >> >> >> === >> Mark Millard >> markmi at dsl-only.net >> >> _______________________________________________ >> freebsd-toolchain@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-toolchain >> To unsubscribe, send any mail to "freebsd-toolchain-unsubscribe@freebsd.org" > > _______________________________________________ > freebsd-toolchain@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-toolchain > To unsubscribe, send any mail to "freebsd-toolchain-unsubscribe@freebsd.org" >