linuxOS_D21X/package/toolchain/Config.in
2024-11-29 16:23:11 +08:00

443 lines
11 KiB
Plaintext

menu "Toolchain"
# Invisible option that makes sure the toolchain package always gets
# built
config BR2_TOOLCHAIN
bool
default y
config BR2_USE_MMU
bool
default y
help
If your target has a MMU, you should say Y here. If you
are unsure, just say Y.
# Should be selected for glibc or eglibc
config BR2_TOOLCHAIN_USES_GLIBC
bool
select BR2_USE_WCHAR
select BR2_ENABLE_LOCALE
select BR2_TOOLCHAIN_HAS_FULL_GETTEXT
select BR2_TOOLCHAIN_HAS_THREADS
select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
select BR2_TOOLCHAIN_HAS_THREADS_NPTL
select BR2_TOOLCHAIN_HAS_UCONTEXT
select BR2_TOOLCHAIN_SUPPORTS_PIE
config BR2_TOOLCHAIN_USES_UCLIBC
bool
# ucontext is only available for a subset of the supported
# architectures
select BR2_TOOLCHAIN_HAS_UCONTEXT if BR2_ARM_CPU_HAS_ARM || BR2_i386 \
|| BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el \
|| BR2_sparc || BR2_x86_64
select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_STATIC_LIBS
config BR2_TOOLCHAIN_USES_MUSL
bool
select BR2_USE_WCHAR
select BR2_ENABLE_LOCALE
select BR2_TOOLCHAIN_HAS_THREADS
select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
select BR2_TOOLCHAIN_HAS_THREADS_NPTL
select BR2_TOOLCHAIN_HAS_UCONTEXT
select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_STATIC_LIBS
config BR2_TOOLCHAIN_EXTERNAL
bool # "External toolchain"
default y
help
Select if you want to use an existing cross-compiling
toolchain. Buildroot can either download automatically a
toolchain, or use an already installed toolchain.
source "package/toolchain/toolchain-external/Config.in"
# Generic toolchain options
# Atomic types can be:
# - never lock-free
# - sometimes lock-free
# - always lock-free
# see https://en.cppreference.com/w/c/atomic/ATOMIC_LOCK_FREE_consts
#
# On most architectures, gcc provides "always lock-free" atomic types,
# but a few architectures are limited to "sometimes lock-free"
# types. This hidden option allows to know if the architecture
# provides "always lock-free" atomic types.
config BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
bool
default y
config BR2_TOOLCHAIN_HAS_NATIVE_RPC
bool
config BR2_USE_WCHAR
bool
config BR2_ENABLE_LOCALE
bool
config BR2_INSTALL_LIBSTDCPP
bool
config BR2_TOOLCHAIN_HAS_DLANG
bool
config BR2_TOOLCHAIN_HAS_FORTRAN
bool
config BR2_TOOLCHAIN_HAS_THREADS
bool
config BR2_TOOLCHAIN_HAS_THREADS_DEBUG
bool
config BR2_TOOLCHAIN_HAS_THREADS_NPTL
bool
config BR2_TOOLCHAIN_HAS_SSP
bool
config BR2_TOOLCHAIN_HAS_UCONTEXT
bool
config BR2_TOOLCHAIN_SUPPORTS_PIE
bool
# This boolean is true if the toolchain provides a built-in full
# featured gettext implementation (glibc), and false if only a stub
# gettext implementation is provided (uclibc, musl)
config BR2_TOOLCHAIN_HAS_FULL_GETTEXT
bool
config BR2_TOOLCHAIN_HAS_SYNC_4
bool
default y
# Options for packages to depend on, if they require at least a
# specific version of the kernel headers.
# Toolchains should choose the adequate option (ie. the highest
# version, not all of them).
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
bool
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14
select BR2_TOOLCHAIN_HEADERS_LATEST
# This should be selected by the latest version, above, to indicate that
# Buildroot does not know of more recent headers than the ones selected.
# This allows using toolchains with headers more recent than Buildroot
# knows about, while still enforcing strict check for older headers.
config BR2_TOOLCHAIN_HEADERS_LATEST
bool
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
bool
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
config BR2_TOOLCHAIN_GCC_AT_LEAST_5
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
config BR2_TOOLCHAIN_GCC_AT_LEAST_6
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_5
config BR2_TOOLCHAIN_GCC_AT_LEAST_7
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_6
config BR2_TOOLCHAIN_GCC_AT_LEAST_8
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_7
config BR2_TOOLCHAIN_GCC_AT_LEAST_9
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_8
config BR2_TOOLCHAIN_GCC_AT_LEAST_10
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_9
# libatomic is available since gcc 4.8, when thread support is
# enabled. Also, libatomic doesn't recognize "uclinux" as a valid OS
# part of the tuple, and is therefore not build on uclinux targets,
# which is why BR2_BINFMT_FLAT configurations are excluded.
config BR2_TOOLCHAIN_HAS_LIBATOMIC
bool
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \
!BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 && \
BR2_TOOLCHAIN_HAS_THREADS && \
!BR2_BINFMT_FLAT
# __atomic intrinsics are available:
# - with gcc 4.8, either through built-ins or libatomic, on all
# architectures. Since we don't want to separate the cases where
# libatomic is needed vs. not needed, we simplify thing and only
# support situations where libatomic is available, even if on some
# architectures libatomic is not strictly needed as all __atomic
# intrinsics might be built-in. The only case where libatomic is
# missing entirely is when the toolchain does not have support for
# threads. However, a package that does not need threads but still
# uses atomics is quite a corner case, which does not warrant the
# added complexity.
# - with gcc 4.7, libatomic did not exist, so only built-ins are
# available. This means that __atomic can only be used in a subset
# of the architectures
config BR2_TOOLCHAIN_HAS_ATOMIC
bool
default y if BR2_TOOLCHAIN_HAS_LIBATOMIC
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_ARCH_IS_64
endmenu