kumquat-buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in.options
Vincent Fazio 338e62bd5d toolchain: allow using custom headers newer than latest known ones
When Buildroot is released, it knows up to a certain kernel header
version, and no later. However, it is possible that an external
toolchain will be used, that uses headers newer than the latest version
Buildroot knows about.

This may also happen when testing a development, an rc-class, or a newly
released kernel, either in an external toolchain, or with an internal
toolchain with custom headers (same-as-kernel, custom version, custom
git, custom tarball).

In the current state, Buildroot would refuse to use such toolchains,
because the test is for strict equality.

We'd like to make that situation possible, but we also want the user not
to be lenient at the same time, and select the right headers version
when it is known.

So, we add a new Kconfig blind option that the latest kernel headers
version selects. This options is then used to decide whether we do a
strict or loose check of the kernel headers.

Suggested-by: Aaron Sierra <asierra@xes-inc.com>
Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
[yann.morin.1998@free.fr:
  - only do a loose check for the latest version
  - expand commit log
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Tested-by: Vincent Fazio <vfazio@xes-inc.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2020-02-08 20:25:10 +01:00

455 lines
13 KiB
Plaintext

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_REL_BIN_PATH
string "Toolchain relative binary path"
default "bin"
depends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD
help
Path to where the binaries (e.g. the compiler) can be found,
relative to the downloaded toolchain root directory. The
default is "bin" and is correct for most toolchains.
config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
string "Toolchain prefix"
default "$(ARCH)-linux"
choice
bool "External toolchain gcc version"
help
Set to the gcc version that is used by your external
toolchain.
config BR2_TOOLCHAIN_EXTERNAL_GCC_9
bool "9.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_9
config BR2_TOOLCHAIN_EXTERNAL_GCC_8
bool "8.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_8
config BR2_TOOLCHAIN_EXTERNAL_GCC_7
bool "7.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_7
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
config BR2_TOOLCHAIN_EXTERNAL_GCC_OLD
bool "older"
help
Use this option if your GCC version is older than any of the
above.
Note that the Buildroot community doesn't do any testing with
such old toolchains. Some packages may fail to build in
surprising ways, or the generated root filesystem may not
work at all. Use such old toolchains at your own risk.
endchoice
comment "GCC older than 4.8 is not tested by Buildroot. Use at your own risk."
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
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
If your toolchain uses headers newer than the latest version
in the choice, then select the latest version.
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_4
bool "5.4.x or later"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_3
bool "5.3.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_2
bool "5.2.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_1
bool "5.1.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_0
bool "5.0.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_20
bool "4.20.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_19
bool "4.19.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_18
bool "4.18.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_17
bool "4.17.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16
bool "4.16.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_15
bool "4.15.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14
bool "4.14.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13
bool "4.13.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_12
bool "4.12.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_11
bool "4.11.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10
bool "4.10.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9
bool "4.9.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
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
comment "Kernel headers older than 3.13 is not tested by Buildroot. Use at your own risk."
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
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
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?"
default y
select BR2_TOOLCHAIN_HAS_THREADS
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?"
default y
select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
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?"
default y
select BR2_TOOLCHAIN_HAS_THREADS_NPTL
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?"
default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
default y if BR2_TOOLCHAIN_EXTERNAL_MUSL
select BR2_TOOLCHAIN_HAS_SSP
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?"
default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
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_DLANG
bool "Toolchain has D support?"
select BR2_TOOLCHAIN_HAS_DLANG
help
Select this option if your external toolchain has D
support.
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_EXTERNAL_OPENMP
bool "Toolchain has OpenMP support?"
select BR2_TOOLCHAIN_HAS_OPENMP
help
Select this option if your external toolchain has OpenMP
support. If you don't know, leave the default value,
Buildroot will tell you if it's correct or not.
endif