summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorAndre Heider <a.heider@gmail.com>2023-01-27 17:13:15 +0100
committerChristian Marangi <ansuelsmth@gmail.com>2023-07-04 20:25:40 +0200
commit65a716bb95baa3b2617bafe6a86173da8cea7933 (patch)
tree166e2fe6b62a31cd1d48293ec39d3d769ce6b696 /config
parentd026b19cdcda50766e1ecc350fdc7c542e0f1c73 (diff)
downloadopenwrt-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.in15
-rwxr-xr-xconfig/check-hostcxx.sh12
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