mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 21:58:04 +00:00
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>
This commit is contained in:
parent
d026b19cdc
commit
65a716bb95
@ -159,6 +159,19 @@ menu "Global build settings"
|
|||||||
Adds LTO flags to the CFLAGS and LDFLAGS.
|
Adds LTO flags to the CFLAGS and LDFLAGS.
|
||||||
Packages can choose to opt-out via setting PKG_BUILD_FLAGS:=no-lto
|
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
|
config IPV6
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
@ -200,7 +213,7 @@ menu "Global build settings"
|
|||||||
|
|
||||||
config SSTRIP_DISCARD_TRAILING_ZEROES
|
config SSTRIP_DISCARD_TRAILING_ZEROES
|
||||||
bool "Strip trailing zero bytes"
|
bool "Strip trailing zero bytes"
|
||||||
depends on USE_SSTRIP
|
depends on USE_SSTRIP && !USE_MOLD
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Use sstrip's -z option to discard trailing zero bytes
|
Use sstrip's -z option to discard trailing zero bytes
|
||||||
|
12
config/check-hostcxx.sh
Executable file
12
config/check-hostcxx.sh
Executable file
@ -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
|
Loading…
Reference in New Issue
Block a user