diff options
author | Andre Heider <a.heider@gmail.com> | 2023-01-27 17:13:15 +0100 |
---|---|---|
committer | Christian Marangi <ansuelsmth@gmail.com> | 2023-07-04 20:25:40 +0200 |
commit | 65a716bb95baa3b2617bafe6a86173da8cea7933 (patch) | |
tree | 166e2fe6b62a31cd1d48293ec39d3d769ce6b696 /config | |
parent | d026b19cdcda50766e1ecc350fdc7c542e0f1c73 (diff) | |
download | openwrt-65a716bb95baa3b2617bafe6a86173da8cea7933.tar.gz openwrt-65a716bb95baa3b2617bafe6a86173da8cea7933.tar.bz2 openwrt-65a716bb95baa3b2617bafe6a86173da8cea7933.zip |
config: add a knob to use the mold linker for packages
Building it requires gcc >= 10.2 or clang >= 12.
Using sstrip with its -z argument can produce non-working binaries, like
a segfaulting `getrandom`, so don't allow that combination.
Signed-off-by: Andre Heider <a.heider@gmail.com>
Diffstat (limited to 'config')
-rw-r--r-- | config/Config-build.in | 15 | ||||
-rwxr-xr-x | config/check-hostcxx.sh | 12 |
2 files changed, 26 insertions, 1 deletions
diff --git a/config/Config-build.in b/config/Config-build.in index f8d0f8e0bd..5f9a1be858 100644 --- a/config/Config-build.in +++ b/config/Config-build.in @@ -159,6 +159,19 @@ menu "Global build settings" Adds LTO flags to the CFLAGS and LDFLAGS. Packages can choose to opt-out via setting PKG_BUILD_FLAGS:=no-lto + config MOLD + depends on (aarch64 || arm || i386 || i686 || m68k || powerpc || powerpc64 || sh4 || x86_64) + depends on !GCC_USE_VERSION_11 + def_bool $(shell, ./config/check-hostcxx.sh 10 2 12) + + config USE_MOLD + bool + prompt "Use the mold linker for all packages" + depends on MOLD + help + Link packages with mold, a modern linker + Packages can opt-out via setting PKG_BUILD_FLAGS:=no-mold + config IPV6 def_bool y @@ -200,7 +213,7 @@ menu "Global build settings" config SSTRIP_DISCARD_TRAILING_ZEROES bool "Strip trailing zero bytes" - depends on USE_SSTRIP + depends on USE_SSTRIP && !USE_MOLD default y help Use sstrip's -z option to discard trailing zero bytes diff --git a/config/check-hostcxx.sh b/config/check-hostcxx.sh new file mode 100755 index 0000000000..442f4cfb40 --- /dev/null +++ b/config/check-hostcxx.sh @@ -0,0 +1,12 @@ +cat << EOF | "$STAGING_DIR_HOST/bin/g++" -c -x c++ -o /dev/null - >/dev/null 2>&1 +#if __clang__ + #if __clang_major__ < $3 + #error "clang too old" + #endif +#else + #if __GNUC__ < $1 || (__GNUC__ == $1 && (__GNUC_MINOR__ < $2)) + #error "gcc too old" + #endif +#endif +EOF +[ $? -eq 0 ] && echo y || echo n |