buildsystem: support choosing default linker

Default linker can be set with DEFAULT_LINKER in options.

Packages can influence linker selection both by positive and/or
negative PKG_BUILD_FLAGS, eg +bfd or -gold.

Positive build flags take priority over the default linker so eg
DEFAULT_LINKER="gold" and PKG_BUILD_FLAGS="+bfd" will select bfd.

Negative flags mean a specific linker should not be used, eg -gold
prevents using gold.

If the default linker is disabled via a build flag then any other
available linker will be used.

Optional linkers like gold have to be enabled with eg GOLD_SUPPORT="yes"
in options. If an optional linker is not enabled it won't be a candidate
for linker selection. So eg "+mold" will have no effect if MOLD_SUPPORT
isn't set to "yes".

Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
Matthias Reichl
2022-09-25 15:09:46 +02:00
parent b1d73ad348
commit 4bcc171bd2
5 changed files with 58 additions and 10 deletions

View File

@@ -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 - 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}"
config_message+="\n - CFLAGS:\t\t\t\t ${TARGET_CFLAGS}"