Date: Fri, 5 Sep 2014 21:16:07 -0600 From: Warner Losh <imp@bsdimp.com> To: Garrett Cooper <yaneurabeya@gmail.com> Cc: freebsd-toolchain@freebsd.org, conrad.meyer@emc.com Subject: Re: Building clang in buildworld as part of the bootstrap process -- is it really necessary? Message-ID: <01C283B7-C9AF-4AE8-A192-FBC7C04D207E@bsdimp.com> In-Reply-To: <CAGHfRMD0Tm14p%2Bv=%2B6mp89eb4TSNenPSPn92XKC2XbM8m6Ut=g@mail.gmail.com> References: <CAGHfRMD0Tm14p%2Bv=%2B6mp89eb4TSNenPSPn92XKC2XbM8m6Ut=g@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On Sep 5, 2014, at 8:21 PM, Garrett Cooper <yaneurabeya@gmail.com> wrote: > Hi all, > One of the questions that came up from a co-worker is "why do I > need to build clang in buildworld if I already installed it from > ports"? I could see some valid reasons for doing this (one needs a > cross-compiler, one might need specific options that might not be set > in the ports version), but for native builds I would tend to agree > with this logic. With gcc it was wasteful building the compiler each > buildworld, but with clang it seems annoying continuing on this path > because the compile takes a long time to complete. The clang built during buildworld is used to bootstrap. So it is required sometimes. Usually when there’s a binary compatibility issue, which is rare but does happen. It is also installed as cc. The ports clang may or may not build the world. However, if you want to say “I know what I’m doing” you can set WITHOUT_CLANG_BOOTSTRAP and WITHOUT_GCC_BOOTSTRAP to tell the build to do no building of bootstrap tools and to use the host’s instead. This usually works, but may fail from time to time with port-built compilers. If you don’t want buildworld to build any compiler, you can add WITHOUT_CLANG=t and WITHOUT_GCC=t. This will create the system without any compilers. You’ll need to set CC to /usr/local/bin/clang35 or whatever as well. There may be other settings you need as well. > Alternatively, would anyone be opposed to adding some logic to > automatically bypass the bootstrap compiler, i.e. add some logic to > Makefile.inc1 that would skip compiling clang/gcc if and only if the > target triplet and version met some required values? There’s enough violent opposition to this that it will never happen. buildworld is supposed to always be safe. Don’t mess with that. It isn’t designed to be fast. If you want fast, you can tell it to be fast with different options, but it will never be fast by default because we guessed that we think it might be safe. don’t mess with buildworld. There might be support for a go-fast catch-all flag that sets a bunch of other flags to make things go fast, but once you get down that rabbit hole you’ll find one man’s optimization is another woman’s intolerable omission. tl;dr: NO. Warner [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIcBAEBCgAGBQJUCnx3AAoJEGwc0Sh9sBEAz3AP/2voqkTdU21h0vk3HAux0oVZ K9oSDo2UMn5geiREW8zh2NQHscTHdr5VVHIxWe6J2XCM7ZRgzlJlTzr9ZqJc3hAb jHogF43jxcueySdhiE+G9WLtbi9FUnT8cpyBxwNcC9VDfk2V+xaqRLq+OLT4Ar1F Ss7YJfH8FyG6Q8fhjItAOya8F4dV9tBR6iFtZ1tNmOjE5gmVM2RDKIfCcKv2BSig fiPDi1eGZFGuqzh/GDkBZ/zx/VobvJ6Itmz9JE5qx/YSzZ8WAu71AOCxmWe3zr+7 vR5h7FGq5Zhc1sEMBxpcERcO3TdT3GRbojH4MpXtFYSo7VbeD/KkwbHZjcoq2RDW TorDF1dch05MMlmrWVXYyHgQpBuGFufG5Mba0YL9J+gYzyCw5LrgI1+f1VL7Vu+s HV0tn9k9H6u0iomNLChVbz7e4Po5rS6OasBGpvOWW5+UFH2/oJ/q0KosHvTzCY8M Ok63iTdbcQkbEN61oYTzo1WSruz2ZkpyVVf46/zmuATu4ITuBfO3voM14Q5VyI6G 52r5IyUSiOvowOX6L6kjUYYxKtJubq9ocP/pVczj99Cxi5CiqW30Kqe5Ibg8FwxV OFP2/z8jVKCJvD7fD5jcf4asfD96kSkYY23479KNaqItm9u3WS5q/6XmzVvwxwNT jDdIxDK7xqY7Xjk/oLXt =cdt/ -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?01C283B7-C9AF-4AE8-A192-FBC7C04D207E>
