Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 12 Mar 2015 21:00:33 +0900
From:      Warner Losh <imp@bsdimp.com>
To:        Mark Millard <markmi@dsl-only.net>
Cc:        freebsd-toolchain@freebsd.org, FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
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
Message-ID:  <B5B7E302-09E0-4E94-8251-ED08EB75D38E@bsdimp.com>
In-Reply-To: <DBD1D803-FD36-490E-9661-5347CBD55D94@dsl-only.net>
References:  <DBD1D803-FD36-490E-9661-5347CBD55D94@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--Apple-Mail=_6A1F383F-178D-40FC-8401-540EAFC36504
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8


> On Mar 12, 2015, at 6:36 PM, Mark Millard <markmi@dsl-only.net> wrote:
>=20
> Basic context for the observation (powerpc64 example):
>=20
> # 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-NODEBU=
G  powerpc
>=20
>=20
> As COMPILER_FEATURES context first I note that bsd.compiler.mk uses =
the rule...
>=20
> .if ${COMPILER_TYPE} =3D=3D "clang" || \
>        (${COMPILER_TYPE} =3D=3D "gcc" && ${COMPILER_VERSION} >=3D =
40800)
> COMPILER_FEATURES=3D      c++11
> .else
> COMPILER_FEATURES=3D
> .endif
>=20
> 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.
>=20
> 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=E2=80=A6

Clang can only be built by a new gcc or clang. Old gcc can=E2=80=99t =
build it, so if you don=E2=80=99t have a new gcc, you can=E2=80=99t =
build clang. The default compiler was gcc on 10.1. There likely should =
be an UPDATING entry to make this clear.

Warner


> .include <bsd.compiler.mk>
> .if !${COMPILER_FEATURES:Mc++11}
> # If the compiler is not C++11 capable, disable clang and use gcc =
instead.
> __DEFAULT_YES_OPTIONS+=3DGCC GCC_BOOTSTRAP GNUCXX
> __DEFAULT_NO_OPTIONS+=3DCLANG CLANG_BOOTSTRAP CLANG_FULL CLANG_IS_CC
> .elif ${__T} =3D=3D "amd64" || ${__T} =3D=3D "i386"
> # On x86, clang is enabled, and will be installed as the default cc.
> __DEFAULT_YES_OPTIONS+=3DCLANG CLANG_BOOTSTRAP CLANG_FULL CLANG_IS_CC
> __DEFAULT_NO_OPTIONS+=3DGCC GCC_BOOTSTRAP GNUCXX
> .elif ${__TT} =3D=3D "arm" && ${__T:Marm*eb*} =3D=3D ""
> # 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+=3DCLANG CLANG_BOOTSTRAP CLANG_IS_CC
> __DEFAULT_NO_OPTIONS+=3DCLANG_FULL GCC GCC_BOOTSTRAP GNUCXX
> .elif ${__T:Mpowerpc*}
> # On powerpc, clang is enabled, but gcc is installed as the default =
cc.
> __DEFAULT_YES_OPTIONS+=3DCLANG CLANG_FULL GCC GCC_BOOTSTRAP GNUCXX
> __DEFAULT_NO_OPTIONS+=3DCLANG_BOOTSTRAP CLANG_IS_CC
> .else
> # Everything else disables clang, and uses gcc instead.
> __DEFAULT_YES_OPTIONS+=3DGCC GCC_BOOTSTRAP GNUCXX
> __DEFAULT_NO_OPTIONS+=3DCLANG CLANG_BOOTSTRAP CLANG_FULL CLANG_IS_CC
> .endif
>=20
>=20
>=20
> 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...
>=20
> # 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
> .elif ${__T} =3D=3D "arm" || ${__T} =3D=3D "armv6"
> __DEFAULT_YES_OPTIONS+=3DCLANG
> # GCC is unable to build the full clang on arm, disable it by default.
> __DEFAULT_NO_OPTIONS+=3DCLANG_FULL
> .else
> __DEFAULT_NO_OPTIONS+=3DCLANG CLANG_FULL
> .endif
> # Clang the default system compiler only on little-endian arm and x86.
> .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
> .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
>=20
>=20
> =3D=3D=3D
> Mark Millard
> markmi at dsl-only.net
>=20
> _______________________________________________
> 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"


--Apple-Mail=_6A1F383F-178D-40FC-8401-540EAFC36504
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP using GPGMail

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIcBAEBCgAGBQJVAX/hAAoJEGwc0Sh9sBEAwgIQANRi0LrupCGQz4G5KErQJxZy
bj8D1ePk4nXsoU/wZFqkzBhblVICVINYMz9fp/qo0qCfU1gqvrwS28wl9vX+igSP
WsNF/gOy294zfGhsz+Aw4BDXyYIFpYzFzzv7HFHYRasLmdSvVRg7p789ahMv6e1U
FaopGD/VKA28CFjeTHO4Q0OED44QPhdEaoPDM+GY3X8wWGNwTrXkrt7vK5yLnlsi
u5OlgTERpM4mUGaIcGLsNAGSaXRlDg2bsDCduoL7wRS/KWj7VHEVogzokDuEkIxm
y05G6OP+1XolQOV46y1Fmep1ojhTzwOmsVqp3wGLlCbg16E7bD4pTSfyfU1s6n0F
MwOqI6ih5v5xCMPmgIVAdwNXpWhkmKbMfkwJkn/RIYXcEFTwLwbADYhnnkuUNmf0
YRxSl8wIh2YQFV0SeSv/0LW5wk9s9N5TLBaPvtY4vQ0+UWm/v9JidE0r0kXAcYpk
F3MaMNoDbnrfpHDbN438VYVfaVg0LnEDWVIoa5PFi7UePNx9covi5+fSKCbW7yjZ
tWtOnHGnyTJKURoAr+8/PeyLUWwfJ9M8x5qy0UIrXm9Sl9s/dSMPSc6SiVCFjkWm
ZzRTZgay229wKNx+m0rHQ6J8Kmde8qXaU5D7cZ36KlWlsOg6jQWmf8Xim7vv7N/9
5Suc1gfvaL4f6gCI++Gj
=xlm5
-----END PGP SIGNATURE-----

--Apple-Mail=_6A1F383F-178D-40FC-8401-540EAFC36504--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B5B7E302-09E0-4E94-8251-ED08EB75D38E>