On 2016-Jun-21, at 3:11 PM, Mark Millard <markmi at dsl-only.net> wrote:

> Bryan Drewery bdrewery at FreeBSD.org wrote on Tue Jun 21 19:03:46 UTC 2016 :
> 
>> This feature is where the bootstrap compiler in buildworld is not built
>> if the one in /usr/bin/cc matches what would be built.  It is very
>> conservative and requires a complete match of major/minor version and
>> the compiler revision (__FreeBSD_cc_version).
>> 
>> The only complaint so far about this feature was that when we bumped the
>> compiler revision, too much of clang would rebuild.  That was addressed
>> in r301277.
>> 
>> I would like to enable this feature by default in head for 11.0.
>> 
>> Unless there are any objections I will do so in a few days.
>> 
>> -- 
>> Regards,
>> Bryan Drewery
> 
> I've only been using WITH_SYSTEM_COMPILER= for system-clang based builds with 
> the host matching TARGET_ARCH ("self hosted").
> 
> For xtoolchain use (self-hosted or not) I've been using in my src.conf files 
> for such contexts: 
> 
> WITHOUT_CROSS_COMPILER=
> WITHOUT_SYSTEM_COMPILER=
> WITHOUT_BINUTILS_BOOTSTRAP=
> WITHOUT_CLANG_BOOTSTRAP=
> 
> For cross builds (all being amd64 -> something else, such as armv6, 
> powerpc64, or powerpc) based on using some build of the system clang 3.8.0 
> I've been using:
> 
> WITH_CROSS_COMPILER=
> WITHOUT_SYSTEM_COMPILER=
> WITH_BINUTILS_BOOTSTRAP=
> WITH_CLANG_BOOTSTRAP=
> 
> As I understand the history the paths for finding tools, headers, etc. built 
> into the clang cross compiler were not necessarily the same as for the live 
> the system compiler that has paths appropriate specifically to self-hosting. 
> This helped avoid getting the wrong versions of files involved.

A historical example was cross builds running the live-system's ld when the use 
of ld was implicit in a clang/clang++ command instead of being a direct use of 
${XLD}.

In other words: such implicit use of ld by /usr/bin/clang and /usr/bin/clang++ 
would not go find the ld built by WITH_BINUTILS_BOOTSTRAP= but would instead 
use /usr/bin/ld (which was for the wrong TARGET_ARCH).

It looks like testing the current handling of such WITH_SYSTEM_COMPILER= issues 
in a form that allows WITHOUT_CROSS_COMPILER= operation requires building not 
using WITH_META_MODE= : man src.conf says that WITH_META_MODE= enforces 
WITHOUT_SYSTEM_COMPILER= .

My normal build procedures now use WITH_META_MODE= so such a test would be 
special. Let me know if you want my to make such a test.


> This was true despite the normal clang code generation being able to target 
> other architectures.
> 
> As for self-hosted system-clang based builds I've been using:
> 
> #WITH_CROSS_COMPILER=
> WITH_SYSTEM_COMPILER=
> WITH_BINUTILS_BOOTSTRAP=
> #WITH_CLANG_BOOTSTRAP=
> 
> (So in this case I've left some things implicit in operation.)
> 
> As stands I'll not notice the SYSTEM_COMPILER default's consequences because 
> I'm always explicit about WITH vs. WITHOUT for SYSTM_COMPILER. If you want 
> some sort of experiment(s), let me know.
> 
> But I only currently have an amd64 context and a rpi2 armv6 context. The 
> dual-proessor, each dual-core powerpc64 was much faster at self-hosted 
> xtoolchain builds compared to any self-hosted rpi2 build but I do not have 
> access to the powerpc family for now. Self-hosted amd64 xtoolchain builds do 
> not work yet for normal settings: duplicate declarations tend to stop the 
> builds if one leaves on the warnings-as-errors status for buildkernel. (At 
> least last that I tried such.)
> 
> ===
> Mark Millard
> markmi at dsl-only.net


===
Mark Millard
markmi at dsl-only.net

_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to