Post by ChrisPost by Mark Millard via freebsd-portsChris portmaster at bsdforge.com wrote on
Post by ChrisPost by Kevin Oberman. . .
You can greatly reduce the build-time for devel/llvm* by changing the
config to BE_NATIVE to avoid building backends for all FreeBSD supported
platforms. Obviously this is not acceptable for many cases, but if you
never cross-compile for other platforms, it's a really big win.
If I understand correctly. Isn't your suggestion synonymous with
WITHOUT_CROSS_COMPILER?
So far as I know, devel/llvm* builds make no use of WITHOUT_CROSS_COMPILER
definitions ( documented in src.conf ) or what I mention below (also from
src.conf documentation).
As for what is analogous in src.conf's documentation for system
builds: BE_NATIVE in an devel/llvm* for a given context would be
WITHOUT_LLVM_TARGET_AARCH64 vs. WITH_LLVM_TARGET_AARCH64
WITHOUT_LLVM_TARGET_ARM vs. WITH_LLVM_TARGET_ARM
WITHOUT_LLVM_TARGET_MIPS vs. WITH_LLVM_TARGET_MIPS
WITHOUT_LLVM_TARGET_POWERPC vs. WITH_LLVM_TARGET_POWERPC
WITHOUT_LLVM_TARGET_RISCV vs. WITH_LLVM_TARGET_RISCV
WITHOUT_LLVM_TARGET_X86 vs. WITH_LLVM_TARGET_X86
Some of the mixes would simulate the various devel/llvm* ports
BE_NATIVE's intent for various platforms. (BE_NATIVE does not
work in all contexts, last I tried it anyway.)
Ahh. My mistake I guess. I somehow got the idea that defining
WITHOUT_CROSS_COMPILER caused llvm to build only what's needed
build/bootstrap for the arch it's (currently) running on. Which
would, of course. Slim down the buildtime/installed footprint.
(I'm not trying to have my wording below cover older gcc based
FreeBSD alternatives.)
13.x of FreeBSD building 14.0 (for example) generally uses a
bootstrap compiler even for the same architecture. A difference
is the default target of the two compilers, such as:
aarch64-unknown-freebsd13.0
vs.
aarch64-unknown-freebsd14.0
even if that were the only difference at the time. (A different
form of "cross"?)
devel/llvm* does not have this bootstrapping issue that
is driven by FreeBSD definitions for building FreeBSD
--instead of by processor architecture.
WITHOUT_CROSS_COMPILER for a FreeBSD system build
causes:
WITHOUT_CLANG_BOOTSTRAP
WITHOUT_ELFTOOLCHAIN_BOOTSTRAP
WITHOUT_LLD_BOOTSTRAP
and so can not be used for the 13.x to 14.0
example: such is not an example of "close"
if I understand right:
WITHOUT_CROSS_COMPILER
Set to not build any cross compiler in the cross-tools stage of
buildworld. When compiling a different version of FreeBSD than
what is installed on the system, provide an alternate compiler
with XCC to ensure success. When compiling with an identical
version of FreeBSD to the host, this option may be safely used.
This option may also be safe when the host version of FreeBSD is
close to the sources being built, but all bets are off if there
have been any changes to the toolchain between the versions.
When set, it enforces these options:
WITHOUT_CLANG_BOOTSTRAP
WITHOUT_ELFTOOLCHAIN_BOOTSTRAP
WITHOUT_LLD_BOOTSTRAP
(One might have compilers around for XCC and such symbol use
but that is a different kind of context.)
===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)