source "toolchain/toolchain-buildroot/Config.in"
source "toolchain/toolchain-external/Config.in"
-source "toolchain/toolchain-common.in"
+
+# Generic toolchain options
+
+# we want gdb config in the middle of both source and external
+# toolchains, but mconf won't let us source the same file twice,
+# so put it here instead
+source "package/gdb/Config.in.host"
+
+comment "Toolchain Generic Options"
+
+# https://sourceware.org/bugzilla/show_bug.cgi?id=19615
+# Affect toolchains built with binutils 2.26 (fixed in binutils 2.26.1).
+config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19615
+ bool
+
+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735
+# exception_ptr, nested_exception, and future from libstdc++ are not
+# available for architectures not supporting always lock-free atomic
+# ints before GCC 7
+config BR2_TOOLCHAIN_HAS_GCC_BUG_64735
+ bool
+ default y if BR2_nios2
+ default y if BR2_ARM_CPU_ARMV4
+ default y if BR2_ARM_CPU_ARMV5
+ default y if BR2_sparc_v8
+ default y if BR2_m68k_cf5208
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7
+
+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_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_SHADOW_PASSWORDS
+ bool
+
+config BR2_TOOLCHAIN_HAS_SSP
+ bool
+
+config BR2_TOOLCHAIN_SUPPORTS_PIE
+ bool
+
+config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
+ bool "Copy gconv libraries"
+ depends on BR2_TOOLCHAIN_USES_GLIBC
+ help
+ The gconv libraries are used to convert between different
+ character sets (charsets).
+
+ Say 'y' if you need to store and/or display different charsets.
+
+config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST
+ string "Gconv libraries to copy"
+ depends on BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
+ help
+ Set to the list of gconv libraries to copy.
+ Leave empty to copy all gconv libraries.
+
+ Specify only the basename of the libraries, leave
+ out the .so extension. Eg.:
+ IBM850 ISO8859-15 UNICODE
+
+ Note: the full set of gconv libs are ~8MiB (on ARM).
+
+# 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_USE_MMU
+ bool "Enable MMU support" if BR2_ARCH_HAS_MMU_OPTIONAL
+ default y if BR2_ARCH_HAS_MMU_OPTIONAL || BR2_ARCH_HAS_MMU_MANDATORY
+ help
+ If your target has a MMU, you should say Y here. If you
+ are unsure, just say Y.
+
+config BR2_TARGET_OPTIMIZATION
+ string "Target Optimizations"
+ default ""
+ help
+ Optimizations to use when building for the target host.
+ NOTE: gcc optimization level is defined in build options.
+
+config BR2_TARGET_LDFLAGS
+ string "Target linker options"
+ help
+ Extra options to pass to the linker when building for the target.
+
+ Note that options with a '$' sign (eg. -Wl,-rpath='$ORIGIN/../lib')
+ are not supported.
+
+config BR2_ECLIPSE_REGISTER
+ bool "Register toolchain within Eclipse Buildroot plug-in"
+ help
+ This options tells Buildroot to generate the necessary
+ configuration files to make your toolchain appear within
+ Eclipse, through the Eclipse Buildroot plugin.
+
+# 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
+
+# This order guarantees that the highest version is set, as kconfig
+# stops affecting a value on the first matching default.
+config BR2_TOOLCHAIN_HEADERS_AT_LEAST
+ string
+ default "4.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
+ default "4.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
+ default "4.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
+ default "4.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
+ default "4.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
+ default "4.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
+ default "4.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
+ default "4.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
+ default "4.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
+ default "4.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
+ default "4.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
+ default "4.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
+ default "4.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
+ default "4.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
+ default "4.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
+ default "4.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
+ default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
+ default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
+ default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
+ default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
+ default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
+ default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
+ default "3.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
+ default "3.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
+ default "3.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
+ default "3.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
+ default "3.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
+ default "3.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
+ default "3.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
+ default "3.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
+ default "3.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
+ default "3.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
+ default "3.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
+ default "3.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
+ default "3.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
+ default "3.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
+ default "2.6"
+
+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
+
+# This order guarantees that the highest version is set, as kconfig
+# stops affecting a value on the first matching default.
+config BR2_TOOLCHAIN_GCC_AT_LEAST
+ string
+ default "7" if BR2_TOOLCHAIN_GCC_AT_LEAST_7
+ default "6" if BR2_TOOLCHAIN_GCC_AT_LEAST_6
+ default "5" if BR2_TOOLCHAIN_GCC_AT_LEAST_5
+ default "4.9" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+ default "4.8" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+ default "4.7" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
+ default "4.6" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
+ default "4.5" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
+ default "4.4" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
+ default "4.3" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
+
+config BR2_TOOLCHAIN_HAS_MNAN_OPTION
+ bool
+ default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
+config BR2_TOOLCHAIN_HAS_SYNC_1
+ bool
+ default y
+ depends on !BR2_bfin
+ depends on !BR2_m68k_cf
+ depends on !BR2_microblaze
+ depends on !BR2_sparc
+ depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
+
+config BR2_TOOLCHAIN_HAS_SYNC_2
+ bool
+ default y if BR2_TOOLCHAIN_HAS_SYNC_1
+
+config BR2_TOOLCHAIN_HAS_SYNC_4
+ bool
+ default y
+ depends on !BR2_m68k_cf
+ depends on !BR2_sparc
+ depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
+
+# The availability of __sync for 8-byte types on ARM is somewhat
+# complicated:
+#
+# - It appeared in gcc starting with gcc 4.7.
+#
+# - On ARMv7, there is no problem, it can be directly implemented in
+# userspace.
+#
+# - On < ARMv7, it requires help from the kernel. Unfortunately, the
+# libgcc code implementing 8-byte __sync with the help from the
+# kernel calls __write() when a failure occurs, which is a function
+# internal to glibc, not available in uClibc and musl. This means
+# that the 8-byte __sync operations are not available on < ARMv7
+# with uClibc and musl. This problem was fixed as part of gcc
+# PR68059, which was backported to the gcc 5 branch, but isn't yet
+# part of any gcc 5.x release.
+#
+config BR2_TOOLCHAIN_ARM_HAS_SYNC_8
+ bool
+ default y
+ depends on BR2_arm || BR2_armeb
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
+ depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_ARM_CPU_ARMV7A
+
+# 8-byte intrinsics available on most x86 CPUs, except a few old ones
+config BR2_TOOLCHAIN_X86_HAS_SYNC_8
+ bool
+ default y
+ depends on BR2_i386
+ depends on !BR2_x86_i486
+ depends on !BR2_x86_c3
+ depends on !BR2_x86_winchip_c6
+ depends on !BR2_x86_winchip2
+
+# 8-byte intrinsics available:
+# - On all 64 bits architecture
+# - On a certain combinations of ARM platforms
+# - On certain x86 32 bits CPUs
+config BR2_TOOLCHAIN_HAS_SYNC_8
+ bool
+ default y if BR2_ARCH_IS_64
+ default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8
+ default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8
+
+# 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_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
+
+# - libquadmath is not needed/available on all architectures (but gcc
+# correctly handles this already).
+# - At least, libquadmath is available on:
+# - i*86
+# - x86_64
+# - When available, libquadmath requires wchar support.
+config BR2_TOOLCHAIN_HAS_LIBQUADMATH
+ bool
+ default y if BR2_i386 || BR2_x86_64
endmenu