Don't compile old gcc 4.2.1 archs by default in universe/tinderbox.
Only compile clang supporting architectures of amd64, arm, arm64, i386, and riscv as part of universe. Compile the other architectures if MAKE_OBSOLETE_GCC is defined. In all cases, explicit lists of architectures in TARGETS= on the command line override. For mips, powerpc and sparc64, do the same thing we do for risvc when MAKE_OBSOLETE_GCC isn't defined and short-circuit their universe build with an echo saying to install the xtoolchain port or pkg. PR: 241134 Discussed on: arch@ (https://lists.freebsd.org/pipermail/freebsd-arch/2019-August/019674.html) Differential Revision: https://reviews.freebsd.org/D21942
This commit is contained in:
parent
d2cb9c7641
commit
3f376e4b54
38
Makefile
38
Makefile
@ -4,8 +4,11 @@
|
||||
# The user-driven targets are:
|
||||
#
|
||||
# universe - *Really* build *everything* (buildworld and
|
||||
# all kernels on all architectures). Define the
|
||||
# MAKE_JUST_KERNELS variable to only build kernels.
|
||||
# all kernels on all architectures). Define
|
||||
# MAKE_JUST_KERNELS to only build kernels,
|
||||
# MAKE_JUST_WORLDS to only build userland, and/or
|
||||
# MAKE_OBSOLETE_GCC to build architectures unsupported
|
||||
# by clang.
|
||||
# tinderbox - Same as universe, but presents a list of failed build
|
||||
# targets and exits with an error if there were any.
|
||||
# buildworld - Rebuild *everything*, including glue to help do
|
||||
@ -81,7 +84,7 @@
|
||||
# 5. `reboot' (in single user mode: boot -s from the loader prompt).
|
||||
# 6. `mergemaster -p'
|
||||
# 7. `make installworld'
|
||||
# 8. `mergemaster' (you may wish to use -i, along with -U or -F).
|
||||
# 8. `mergemaster' (you may wish to use -i, along with -U or -F).
|
||||
# 9. `make delete-old'
|
||||
# 10. `reboot'
|
||||
# 11. `make delete-old-libs' (in case no 3rd party program uses them anymore)
|
||||
@ -481,7 +484,16 @@ worlds: .PHONY
|
||||
#
|
||||
.if make(universe) || make(universe_kernels) || make(tinderbox) || \
|
||||
make(targets) || make(universe-toolchain)
|
||||
TARGETS?=amd64 arm arm64 i386 mips powerpc riscv sparc64
|
||||
#
|
||||
# By default, build only the known-good clang-supporting platforms.
|
||||
# If MAKE_OBSOLETE_GCC is defined, built all the old GCC architectures.
|
||||
# In all cases, if the user specifies TARGETS on the command line,
|
||||
# honor that most of all.
|
||||
#
|
||||
_DEFAULT_TARGETS=amd64 arm arm64 i386 riscv
|
||||
_OBSOLETE_GCC_TARGETS=mips powerpc sparc64
|
||||
_DEFAULT_TARGETS+=${_OBSOLETE_GCC_TARGETS}
|
||||
TARGETS?=${_DEFAULT_TARGETS}
|
||||
_UNIVERSE_TARGETS= ${TARGETS}
|
||||
TARGET_ARCHES_arm?= arm armv6 armv7
|
||||
TARGET_ARCHES_arm64?= aarch64
|
||||
@ -494,11 +506,23 @@ TARGET_ARCHES_${target}?= ${target}
|
||||
.endfor
|
||||
|
||||
MAKE_PARAMS_riscv?= CROSS_TOOLCHAIN=riscv64-gcc
|
||||
.if !defined(MAKE_OBSOLETE_GCC)
|
||||
OBSOLETE_GCC_TARGETS=${_OBSOLETE_GCC_TARGETS}
|
||||
MAKE_PARAMS_mips?= CROSS_TOOLCHAIN=mips-gcc
|
||||
MAKE_PARAMS_powerpc?= CROSS_TOOLCHAIN=powerpc-gcc
|
||||
MAKE_PARAMS_sparc64?= CROSS_TOOLCHAIN=sparc64-gcc
|
||||
.endif
|
||||
|
||||
# XXX Remove architectures only supported by external toolchain from universe
|
||||
# if required toolchain packages are missing.
|
||||
TOOLCHAINS_mips= mips
|
||||
TOOLCHAINS_powerpc= powerpc64
|
||||
TOOLCHAINS_riscv= riscv64
|
||||
.for target in riscv
|
||||
TOOLCHAINS_sparc64= sparc64
|
||||
|
||||
# Remove architectures only supported by external toolchain from universe
|
||||
# if required toolchain packages are missing.
|
||||
# When MAKE_OBSOLETE_GCC is not defined, this effecitvely forces this for
|
||||
# the in-tree gcc 4.2.1 targets as well.
|
||||
.for target in riscv ${OBSOLETE_GCC_TARGETS}
|
||||
.if ${_UNIVERSE_TARGETS:M${target}}
|
||||
.for toolchain in ${TOOLCHAINS_${target}}
|
||||
.if !exists(/usr/local/share/toolchains/${toolchain}-gcc.mk)
|
||||
|
Loading…
Reference in New Issue
Block a user