]> rtime.felk.cvut.cz Git - coffee/buildroot.git/blobdiff - toolchain/Config.in
toolchain: merge toolchain-common.in to Config.in
[coffee/buildroot.git] / toolchain / Config.in
index bf1166b601b4037ae53c8ea73166c488dc8e83a7..91035c71d76e6b889f97da7068c8aed815d40cdf 100644 (file)
@@ -56,6 +56,475 @@ endchoice
 
 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