diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index 073adcba4a683c..5b53a67e0a5792 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn @@ -671,3 +671,10 @@ config("specs_default") { ldflags = cflags } } + +config("link_as_needed") { + # ld64.lld on clang used by Apple does not have a --as-needed option + if (current_os != "mac" && current_os != "ios") { + ldflags = [ "-Wl,--as-needed" ] + } +} diff --git a/build/config/defaults.gni b/build/config/defaults.gni index 08bd0030ee786b..aec03cc733a0a3 100644 --- a/build/config/defaults.gni +++ b/build/config/defaults.gni @@ -61,6 +61,10 @@ declare_args() { # Defaults configs for pie. default_configs_pie = [ "${build_root}/config/compiler:pie_default" ] + # Default configs for GNU ld --as-needed + default_configs_link_as_needed = + [ "${build_root}/config/compiler:link_as_needed" ] + # Defaults configs for warnings. default_configs_warnings = [ "${build_root}/config/compiler:warnings_default" ] @@ -124,3 +128,4 @@ default_configs += default_configs_extra executable_default_configs = [] executable_default_configs += default_configs_pie +executable_default_configs += default_configs_link_as_needed