From e485a16a8dc306a522ecb84ae9d8ceae19fe6b5d Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Thu, 6 Oct 2022 19:39:35 +0200 Subject: [PATCH] build system: add support for mold & linker PKG_BUILD_FLAGS --- config/functions | 2 +- config/optimize | 1 + config/show_config | 1 + distributions/LibreELEC/options | 5 ++++- packages/readme.md | 1 + 5 files changed, 8 insertions(+), 2 deletions(-) diff --git a/config/functions b/config/functions index e1216a3e88..7fd8972f1c 100644 --- a/config/functions +++ b/config/functions @@ -270,7 +270,7 @@ linker_allowed() { get_target_linker() { # all known linkers, in descending order of priority # those are candidates for explicit opt-in via PKG_BUILD_FLAGS - local all_linkers="gold bfd" + local all_linkers="mold gold bfd" # linkers to choose from unless disabled via PKG_BUILD_FLAGS local linker_candidates="${DEFAULT_LINKER:-bfd} ${all_linkers}" diff --git a/config/optimize b/config/optimize index 14eb946aca..843d399388 100644 --- a/config/optimize +++ b/config/optimize @@ -31,6 +31,7 @@ LDFLAGS_OPTIM_LTO_COMMON="-fuse-linker-plugin" LDFLAGS_OPTIM_LINKER_COMPILER_DEFAULT="" LDFLAGS_OPTIM_LINKER_BFD="-fuse-ld=bfd" LDFLAGS_OPTIM_LINKER_GOLD="-fuse-ld=gold" +LDFLAGS_OPTIM_LINKER_MOLD="-fuse-ld=mold" # default compiler optimization CFLAGS_OPTIM_DEFAULT="-O2 -fomit-frame-pointer -DNDEBUG" diff --git a/config/show_config b/config/show_config index 7b7628465b..82029ff957 100644 --- a/config/show_config +++ b/config/show_config @@ -31,6 +31,7 @@ show_config() { config_message+="\n - CPU features:\t\t\t ${TARGET_FEATURES}" config_message+="\n - LTO (Link Time Optimization) support: ${LTO_SUPPORT}" config_message+="\n - GOLD (Google Linker) Support:\t ${GOLD_SUPPORT}" + config_message+="\n - MOLD (Modern Linker) Support:\t ${MOLD_SUPPORT}" config_message+="\n - Default Linker:\t\t\t ${DEFAULT_LINKER}" config_message+="\n - LLVM support:\t\t\t ${LLVM_SUPPORT}" config_message+="\n - DEBUG:\t\t\t\t ${DEBUG:-no}" diff --git a/distributions/LibreELEC/options b/distributions/LibreELEC/options index ccbd590a48..67402796fc 100644 --- a/distributions/LibreELEC/options +++ b/distributions/LibreELEC/options @@ -32,7 +32,10 @@ # GOLD (Google Linker) support GOLD_SUPPORT="yes" -# default linker (bfd / gold) +# MOLD (Modern Linker) support + MOLD_SUPPORT="no" + +# default linker (bfd / gold / mold) DEFAULT_LINKER="gold" # HARDENING (security relevant linker and compiler flags) support diff --git a/packages/readme.md b/packages/readme.md index c284c5f005..7c4f4984bc 100644 --- a/packages/readme.md +++ b/packages/readme.md @@ -128,6 +128,7 @@ Set the variable `PKG_BUILD_FLAGS` in the `package.mk` to enable/disable the sin | lto-off | disabled | target, init | explicitly disable LTO in the compiler and linker | | bfd | - | target, init | `+bfd` prefers bfd linker over default linker, `-bfd` disables using bfd | | gold | - | target, init | `+gold` prefers gold linker over default linker, `-gold` disables using gold | +| mold | - | target, init | `+mold` prefers mold linker over default linker, `-mold` disables using gold | | parallel | enabled | all | `make` or `ninja` builds with multiple threads/processes (or not) | | strip | enabled | target | strips executables (or not) | | sysroot | enabled | target | installs the package to the sysroot folder (or not) |