toolchain-external-custom: new package
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Mon, 7 Nov 2016 01:20:15 +0000 (02:20 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Wed, 23 Nov 2016 21:23:32 +0000 (22:23 +0100)
This commit adds a new package to support custom external toolchains.

The legacy implementation is removed.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Reviewed-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
toolchain/toolchain-external/Config.in
toolchain/toolchain-external/toolchain-external-custom/Config.in [new file with mode: 0644]
toolchain/toolchain-external/toolchain-external-custom/Config.in.options [new file with mode: 0644]
toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk [new file with mode: 0644]
toolchain/toolchain-external/toolchain-external.mk

index 5188e1a5eb2b130450d04339f1a2d4e3c50ebbd3..e592ec252841f9a1e57795056eae0acf4a13a29a 100644 (file)
@@ -43,6 +43,11 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.
 # Musl based toolchains (after all the others)
 source "toolchain/toolchain-external/toolchain-external-musl-cross/Config.in"
 
+# Kept last, so it remains the non-default choice, unless there isn't
+# any available toolchain profile for the currently selected
+# architecture.
+source "toolchain/toolchain-external/toolchain-external-custom/Config.in"
+
 config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A
        bool "Arago ARMv7 2011.09"
        depends on BR2_arm
@@ -109,12 +114,6 @@ config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC
          Toolchain for the ARC cores, from
          https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases
 
-config BR2_TOOLCHAIN_EXTERNAL_CUSTOM
-       bool "Custom toolchain"
-       help
-         Use this option to use a custom toolchain pre-installed on
-         your system.
-
 endchoice
 
 choice
@@ -146,25 +145,12 @@ config BR2_TOOLCHAIN_EXTERNAL_PATH
        help
          Path to where the external toolchain is installed.
 
-config BR2_TOOLCHAIN_EXTERNAL_URL
-       string "Toolchain URL"
-       depends on BR2_TOOLCHAIN_EXTERNAL_CUSTOM && BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD
-       help
-         URL of the custom toolchain tarball to download and install.
-
-config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
-       string "Toolchain prefix"
-       depends on BR2_TOOLCHAIN_EXTERNAL_CUSTOM
-       default "$(ARCH)-linux"
-
 config BR2_TOOLCHAIN_EXTERNAL_PREFIX
        string
        default "arc-linux"              if BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC && BR2_arcle
        default "arceb-linux"            if BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC && BR2_arceb
        default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A
        default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE
-       default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX \
-                                        if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
 
 config BR2_TOOLCHAIN_EXTERNAL_GLIBC
        bool
@@ -224,331 +210,8 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.
 # Musl based toolchains
 source "toolchain/toolchain-external/toolchain-external-musl-cross/Config.in.options"
 
-if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
-
-choice
-       bool "External toolchain gcc version"
-       default BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
-       help
-         Set to the gcc version that is used by your external
-         toolchain.
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_6
-       bool "6.x"
-       select BR2_TOOLCHAIN_GCC_AT_LEAST_6
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_5
-       bool "5.x"
-       select BR2_TOOLCHAIN_GCC_AT_LEAST_5
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_9
-       bool "4.9.x"
-       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_8
-       bool "4.8.x"
-       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_7
-       bool "4.7.x"
-       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_6
-       bool "4.6.x"
-       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_5
-       bool "4.5.x"
-       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_4
-       bool "4.4.x"
-       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
-       bool "4.3.x"
-       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
-
-endchoice
-
-choice
-       bool "External toolchain kernel headers series"
-       default BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
-       help
-         Set to the kernel headers version that were used to build
-         this external toolchain.
-
-         This is used to hide/show some packages that have strict
-         requirements on the version of kernel headers.
-
-         If unsure what version your toolchain is using, you can look
-         at the value of LINUX_VERSION_CODE in linux/version.h in your
-         toolchain. The Linux version is M.m.p, with:
-           M = ( LINUX_VERSION_CODE >> 16 ) & 0xFF
-           m = ( LINUX_VERSION_CODE >> 8  ) & 0xFF
-           p = ( LINUX_VERSION_CODE >> 0  ) & 0xFF
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_8
-       bool "4.8.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7
-       bool "4.7.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6
-       bool "4.6.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5
-       bool "4.5.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4
-       bool "4.4.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3
-       bool "4.3.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2
-       bool "4.2.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1
-       bool "4.1.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0
-       bool "4.0.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19
-       bool "3.19.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18
-       bool "3.18.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17
-       bool "3.17.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16
-       bool "3.16.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15
-       bool "3.15.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14
-       bool "3.14.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13
-       bool "3.13.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12
-       bool "3.12.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11
-       bool "3.11.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10
-       bool "3.10.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9
-       bool "3.9.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8
-       bool "3.8.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7
-       bool "3.7.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6
-       bool "3.6.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5
-       bool "3.5.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4
-       bool "3.4.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3
-       bool "3.3.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2
-       bool "3.2.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1
-       bool "3.1.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0
-       bool "3.0.x"
-       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
-       bool "2.6.x"
-
-endchoice
-
-choice
-       prompt "External toolchain C library"
-       default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
-
-config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
-       bool "uClibc/uClibc-ng"
-       select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
-       # For the time being, we assume that all custom external
-       # toolchains have shadow password support.
-       select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
-       help
-         Select this option if your external toolchain uses the
-         uClibc (available from http://www.uclibc.org/)
-         or uClibc-ng (available from http://www.uclibc-ng.org)
-         C library.
-
-config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC
-       bool "glibc/eglibc"
-       depends on !BR2_STATIC_LIBS
-       select BR2_TOOLCHAIN_EXTERNAL_GLIBC
-       help
-         Select this option if your external toolchain uses the GNU C
-         library (available from https://www.gnu.org/software/libc/)
-         or its variant the eglibc library (http://www.eglibc.org/).
-
-         Note: eglibc is a variant of glibc that (among other things)
-         can be configured to exclude some of its features. Using a
-         toolchain with eglibc configured to exclude key features may
-         cause build failures to some packages.
-
-comment "glibc only available with shared lib support"
-       depends on BR2_STATIC_LIBS
-
-config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL
-       bool "musl"
-       select BR2_TOOLCHAIN_EXTERNAL_MUSL
-       help
-         Select this option if your external toolchain uses the
-         'musl' C library, available from http://www.musl-libc.org/.
-
-endchoice
-
-if BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
-
-config BR2_TOOLCHAIN_EXTERNAL_WCHAR
-       bool "Toolchain has WCHAR support?"
-       select BR2_USE_WCHAR
-       help
-         Select this option if your external toolchain supports
-         WCHAR. If you don't know, leave the default value, Buildroot
-         will tell you if it's correct or not.
-
-config BR2_TOOLCHAIN_EXTERNAL_LOCALE
-       bool "Toolchain has locale support?"
-       select BR2_TOOLCHAIN_EXTERNAL_WCHAR
-       select BR2_ENABLE_LOCALE
-       help
-         Select this option if your external toolchain has locale
-         support. If you don't know, leave the default value,
-         Buildroot will tell you if it's correct or not.
-
-config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
-       bool "Toolchain has threads support?"
-       select BR2_TOOLCHAIN_HAS_THREADS
-       default y
-       help
-         Select this option if your external toolchain has thread
-         support. If you don't know, leave the default value,
-         Buildroot will tell you if it's correct or not.
-
-if BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
-
-config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG
-       bool "Toolchain has threads debugging support?"
-       select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
-       default y
-       help
-         Select this option if your external toolchain has thread
-         debugging support. If you don't know, leave the default
-         value, Buildroot will tell you if it's correct or not.
-
-config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL
-       bool "Toolchain has NPTL threads support?"
-       select BR2_TOOLCHAIN_HAS_THREADS_NPTL
-       default y
-       help
-         Select this option if your external toolchain uses the NPTL
-         (Native Posix Thread Library) implementation of Posix
-         threads. If you don't know, leave the default value,
-         Buildroot will tell you if it's correct or not.
-
-endif # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
-
-endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
-
-config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP
-       bool "Toolchain has SSP support?"
-       select BR2_TOOLCHAIN_HAS_SSP
-       default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
-       default y if BR2_TOOLCHAIN_EXTERNAL_MUSL
-       help
-         Selection this option if your external toolchain has Stack
-         Smashing Protection support enabled. If you don't know,
-         leave the default value, Buildroot will tell you if it's
-         correct or not.
-
-config BR2_TOOLCHAIN_EXTERNAL_INET_RPC
-       bool "Toolchain has RPC support?"
-       select BR2_TOOLCHAIN_HAS_NATIVE_RPC
-       depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL
-       default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
-       help
-         Select this option if your external toolchain supports
-         RPC. If you don't know, leave the default value, Buildroot
-         will tell you if it's correct or not.
-
-config BR2_TOOLCHAIN_EXTERNAL_CXX
-       bool "Toolchain has C++ support?"
-       select BR2_INSTALL_LIBSTDCPP
-       help
-         Select this option if your external toolchain has C++
-         support. If you don't know, leave the default value,
-         Buildroot will tell you if it's correct or not.
-
-config BR2_TOOLCHAIN_EXTERNAL_FORTRAN
-       bool "Toolchain has Fortran support?"
-       select BR2_TOOLCHAIN_HAS_FORTRAN
-       help
-         Select this option if your external toolchain has Fortran
-         support. If you don't know, leave the default value,
-         Buildroot will tell you if it's correct or not.
-
-config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS
-       string "Extra toolchain libraries to be copied to target"
-       help
-         If your external toolchain provides extra libraries that
-         need to be copied to the target filesystem, enter them
-         here, separated by spaces.
-
-endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM
+# Custom toolchains
+source "toolchain/toolchain-external/toolchain-external-custom/Config.in.options"
 
 config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
        bool "Copy gdb server to the Target"
diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in b/toolchain/toolchain-external/toolchain-external-custom/Config.in
new file mode 100644 (file)
index 0000000..a913feb
--- /dev/null
@@ -0,0 +1,5 @@
+config BR2_TOOLCHAIN_EXTERNAL_CUSTOM
+       bool "Custom toolchain"
+       help
+         Use this option to use a custom toolchain pre-installed on
+         your system.
diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options
new file mode 100644 (file)
index 0000000..cdc2555
--- /dev/null
@@ -0,0 +1,334 @@
+if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+       default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+       default "toolchain-external-custom"
+
+config BR2_TOOLCHAIN_EXTERNAL_URL
+       string "Toolchain URL"
+       depends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD
+       help
+         URL of the custom toolchain tarball to download and install.
+
+config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
+       string "Toolchain prefix"
+       default "$(ARCH)-linux"
+
+choice
+       bool "External toolchain gcc version"
+       default BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
+       help
+         Set to the gcc version that is used by your external
+         toolchain.
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_6
+       bool "6.x"
+       select BR2_TOOLCHAIN_GCC_AT_LEAST_6
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_5
+       bool "5.x"
+       select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_9
+       bool "4.9.x"
+       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_8
+       bool "4.8.x"
+       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_7
+       bool "4.7.x"
+       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_6
+       bool "4.6.x"
+       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_5
+       bool "4.5.x"
+       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_4
+       bool "4.4.x"
+       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
+       bool "4.3.x"
+       select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
+
+endchoice
+
+choice
+       bool "External toolchain kernel headers series"
+       default BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
+       help
+         Set to the kernel headers version that were used to build
+         this external toolchain.
+
+         This is used to hide/show some packages that have strict
+         requirements on the version of kernel headers.
+
+         If unsure what version your toolchain is using, you can look
+         at the value of LINUX_VERSION_CODE in linux/version.h in your
+         toolchain. The Linux version is M.m.p, with:
+           M = ( LINUX_VERSION_CODE >> 16 ) & 0xFF
+           m = ( LINUX_VERSION_CODE >> 8  ) & 0xFF
+           p = ( LINUX_VERSION_CODE >> 0  ) & 0xFF
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_8
+       bool "4.8.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7
+       bool "4.7.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6
+       bool "4.6.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5
+       bool "4.5.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4
+       bool "4.4.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3
+       bool "4.3.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2
+       bool "4.2.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1
+       bool "4.1.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0
+       bool "4.0.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19
+       bool "3.19.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18
+       bool "3.18.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17
+       bool "3.17.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16
+       bool "3.16.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15
+       bool "3.15.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14
+       bool "3.14.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13
+       bool "3.13.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12
+       bool "3.12.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11
+       bool "3.11.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10
+       bool "3.10.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9
+       bool "3.9.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8
+       bool "3.8.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7
+       bool "3.7.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6
+       bool "3.6.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5
+       bool "3.5.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4
+       bool "3.4.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3
+       bool "3.3.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2
+       bool "3.2.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1
+       bool "3.1.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0
+       bool "3.0.x"
+       select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
+       bool "2.6.x"
+
+endchoice
+
+choice
+       prompt "External toolchain C library"
+       default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
+
+config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
+       bool "uClibc/uClibc-ng"
+       select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
+       # For the time being, we assume that all custom external
+       # toolchains have shadow password support.
+       select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
+       help
+         Select this option if your external toolchain uses the
+         uClibc (available from http://www.uclibc.org/)
+         or uClibc-ng (available from http://www.uclibc-ng.org)
+         C library.
+
+config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC
+       bool "glibc/eglibc"
+       depends on !BR2_STATIC_LIBS
+       select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+       help
+         Select this option if your external toolchain uses the GNU C
+         library (available from https://www.gnu.org/software/libc/)
+         or its variant the eglibc library (http://www.eglibc.org/).
+
+         Note: eglibc is a variant of glibc that (among other things)
+         can be configured to exclude some of its features. Using a
+         toolchain with eglibc configured to exclude key features may
+         cause build failures to some packages.
+
+comment "(e)glibc only available with shared lib support"
+       depends on BR2_STATIC_LIBS
+
+config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL
+       bool "musl (experimental)"
+       select BR2_TOOLCHAIN_EXTERNAL_MUSL
+       help
+         Select this option if your external toolchain uses the
+         'musl' C library, available from http://www.musl-libc.org/.
+
+endchoice
+
+if BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
+
+config BR2_TOOLCHAIN_EXTERNAL_WCHAR
+       bool "Toolchain has WCHAR support?"
+       select BR2_USE_WCHAR
+       help
+         Select this option if your external toolchain supports
+         WCHAR. If you don't know, leave the default value, Buildroot
+         will tell you if it's correct or not.
+
+config BR2_TOOLCHAIN_EXTERNAL_LOCALE
+       bool "Toolchain has locale support?"
+       select BR2_TOOLCHAIN_EXTERNAL_WCHAR
+       select BR2_ENABLE_LOCALE
+       help
+         Select this option if your external toolchain has locale
+         support. If you don't know, leave the default value,
+         Buildroot will tell you if it's correct or not.
+
+config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
+       bool "Toolchain has threads support?"
+       select BR2_TOOLCHAIN_HAS_THREADS
+       default y
+       help
+         Select this option if your external toolchain has thread
+         support. If you don't know, leave the default value,
+         Buildroot will tell you if it's correct or not.
+
+if BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
+
+config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG
+       bool "Toolchain has threads debugging support?"
+       select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
+       default y
+       help
+         Select this option if your external toolchain has thread
+         debugging support. If you don't know, leave the default
+         value, Buildroot will tell you if it's correct or not.
+
+config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL
+       bool "Toolchain has NPTL threads support?"
+       select BR2_TOOLCHAIN_HAS_THREADS_NPTL
+       default y
+       help
+         Select this option if your external toolchain uses the NPTL
+         (Native Posix Thread Library) implementation of Posix
+         threads. If you don't know, leave the default value,
+         Buildroot will tell you if it's correct or not.
+
+endif # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
+
+endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
+
+config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP
+       bool "Toolchain has SSP support?"
+       select BR2_TOOLCHAIN_HAS_SSP
+       default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
+       default y if BR2_TOOLCHAIN_EXTERNAL_MUSL
+       help
+         Selection this option if your external toolchain has Stack
+         Smashing Protection support enabled. If you don't know,
+         leave the default value, Buildroot will tell you if it's
+         correct or not.
+
+config BR2_TOOLCHAIN_EXTERNAL_INET_RPC
+       bool "Toolchain has RPC support?"
+       select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+       depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL
+       default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
+       help
+         Select this option if your external toolchain supports
+         RPC. If you don't know, leave the default value, Buildroot
+         will tell you if it's correct or not.
+
+config BR2_TOOLCHAIN_EXTERNAL_CXX
+       bool "Toolchain has C++ support?"
+       select BR2_INSTALL_LIBSTDCPP
+       help
+         Select this option if your external toolchain has C++
+         support. If you don't know, leave the default value,
+         Buildroot will tell you if it's correct or not.
+
+config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS
+       string "Extra toolchain libraries to be copied to target"
+       help
+         If your external toolchain provides extra libraries that
+         need to be copied to the target filesystem, enter them
+         here, separated by spaces. They will be copied to the
+         target's /lib directory.
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk b/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk
new file mode 100644 (file)
index 0000000..c4ae612
--- /dev/null
@@ -0,0 +1,15 @@
+################################################################################
+#
+# toolchain-external-custom
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CUSTOM_SITE = $(patsubst %/,%,$(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL))))
+TOOLCHAIN_EXTERNAL_CUSTOM_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
+
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CUSTOM),y)
+# We can't check hashes for custom downloaded toolchains
+BR_NO_CHECK_HASH_FOR += $(TOOLCHAIN_EXTERNAL_SOURCE)
+endif
+
+$(eval $(toolchain-external-package))
index 0680473ef9b727093d23f0b6e0771c784d6a31c9..e13d240c2f6435873c9052f2d6cdc1d62b1f50e1 100644 (file)
@@ -69,12 +69,6 @@ else
 TOOLCHAIN_EXTERNAL_SYNOPSYS_ENDIANESS = be
 endif
 TOOLCHAIN_EXTERNAL_SOURCE = arc_gnu_2014.12_prebuilt_uclibc_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ENDIANESS)_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_CORE)_linux_install.tar.gz
-else
-# Custom toolchain
-TOOLCHAIN_EXTERNAL_SITE = $(patsubst %/,%,$(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL))))
-TOOLCHAIN_EXTERNAL_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
-# We can't check hashes for custom downloaded toolchains
-BR_NO_CHECK_HASH_FOR += $(TOOLCHAIN_EXTERNAL_SOURCE)
 endif
 
 # Some toolchain vendors have a regular file naming pattern.