summaryrefslogtreecommitdiff
path: root/toolchain
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2016-11-07 02:20:15 +0100
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>2016-11-23 22:23:32 +0100
commitec54092c916440501006bfa51a820eb953100510 (patch)
tree20042106b6790d93d962b7b23565b7a23849cb54 /toolchain
parent06ba7f9e1ca5dcc726b1881a40c7c13e3fbcedec (diff)
toolchain-external-custom: new package
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>
Diffstat (limited to 'toolchain')
-rw-r--r--toolchain/toolchain-external/Config.in351
-rw-r--r--toolchain/toolchain-external/toolchain-external-custom/Config.in5
-rw-r--r--toolchain/toolchain-external/toolchain-external-custom/Config.in.options334
-rw-r--r--toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk15
-rw-r--r--toolchain/toolchain-external/toolchain-external.mk6
5 files changed, 361 insertions, 350 deletions
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index 5188e1a5e..e592ec252 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -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
index 000000000..a913feb34
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in
@@ -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
index 000000000..cdc25559f
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options
@@ -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
index 000000000..c4ae6125e
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk
@@ -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))
diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index 0680473ef..e13d240c2 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -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.