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