Third try to enable clang lld as default linker.
Note of existing configurations:
* When lld is used, llvm-strip and llvm-objcopy are also used.
* darwin host modules do not use lld.
* lld can be disabled locally with use_clang_lld:false in Android.bp
or LOCAL_USE_CLANG_LLD:=false in Android.mk.
Bug: 73768157
Test: make checkbuild, boot and run bionic and system/core native tests
Change-Id: I3067ff8021dd6e1598f2447b80aea66a3f7e1677
diff --git a/core/soong_config.mk b/core/soong_config.mk
index 3f1fb66..355f414 100644
--- a/core/soong_config.mk
+++ b/core/soong_config.mk
@@ -102,7 +102,7 @@
$(call add_json_list, CFIIncludePaths, $(CFI_INCLUDE_PATHS) $(PRODUCT_CFI_INCLUDE_PATHS))
$(call add_json_list, IntegerOverflowExcludePaths, $(INTEGER_OVERFLOW_EXCLUDE_PATHS) $(PRODUCT_INTEGER_OVERFLOW_EXCLUDE_PATHS))
-$(call add_json_bool, UseClangLld, $(filter 1 true,$(USE_CLANG_LLD)))
+$(call add_json_bool, UseClangLld, $(call invert_bool,$(filter 0 false,$(USE_CLANG_LLD))))
$(call add_json_bool, ClangTidy, $(filter 1 true,$(WITH_TIDY)))
$(call add_json_str, TidyChecks, $(WITH_TIDY_CHECKS))
diff --git a/core/use_lld_setup.mk b/core/use_lld_setup.mk
index 17a9e27..d00a5d3 100644
--- a/core/use_lld_setup.mk
+++ b/core/use_lld_setup.mk
@@ -4,12 +4,17 @@
## Output variables: my_use_clang_lld
#############################################################
-# Use LLD only if it's not disabled by LOCAL_USE_CLANG_LLD,
-# and enabled by LOCAL_USE_CLANG_LLD or USE_CLANG_LLD.
-my_use_clang_lld := false
-ifeq (,$(filter 0 false,$(LOCAL_USE_CLANG_LLD)))
- ifneq (,$(filter 1 true,$(LOCAL_USE_CLANG_LLD) $(USE_CLANG_LLD)))
- my_use_clang_lld := true
+# Use LLD by default.
+# Do not use LLD if LOCAL_USE_CLANG_LLD is false or 0,
+# of if LOCAL_USE_CLANG_LLD is not set and USE_CLANG_LLD is 0 or false.
+my_use_clang_lld := true
+ifneq (,$(LOCAL_USE_CLANG_LLD))
+ ifneq (,$(filter 0 false,$(LOCAL_USE_CLANG_LLD)))
+ my_use_clang_lld := false
+ endif
+else
+ ifneq (,$(filter 0 false,$(USE_CLANG_LLD)))
+ my_use_clang_lld := false
endif
endif