[compiler-rt][CMake] Properly set COMPILER_RT_HAS_LLD
authorArthur Eubanks <aeubanks@google.com>
Thu, 23 Feb 2023 19:21:33 +0000 (11:21 -0800)
committerArthur Eubanks <aeubanks@google.com>
Wed, 31 May 2023 16:11:04 +0000 (09:11 -0700)
LLVM_TOOL_LLD_BUILD is a relic of the pre-monorepo times. This causes us to never set COMPILER_RT_HAS_LLD.

Instead, set it from the runtimes build if lld is being built and lld is used as the compiler-rt linker.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D144660

compiler-rt/CMakeLists.txt
llvm/runtimes/CMakeLists.txt

index 6489aa1..80954df 100644 (file)
@@ -738,14 +738,8 @@ if(COMPILER_RT_USE_LIBCXX)
   endif()
 endif()
 
-set(COMPILER_RT_LLD_PATH ${LLVM_MAIN_SRC_DIR}/tools/lld)
-if(EXISTS ${COMPILER_RT_LLD_PATH}/ AND LLVM_TOOL_LLD_BUILD)
+if(COMPILER_RT_HAS_TRUNK_LLD AND LLVM_USE_LINKER STREQUAL "lld")
   set(COMPILER_RT_HAS_LLD TRUE)
-else()
-  set(COMPILER_RT_LLD_PATH ${LLVM_MAIN_SRC_DIR}/../lld)
-  if(EXISTS ${COMPILER_RT_LLD_PATH}/ AND LLVM_TOOL_LLD_BUILD)
-    set(COMPILER_RT_HAS_LLD TRUE)
-  endif()
 endif()
 
 if(ANDROID)
index 75256c1..4f2c1a1 100644 (file)
@@ -226,6 +226,10 @@ function(runtime_default_target)
 
   set_enable_per_target_runtime_dir()
 
+  if ("lld" IN_LIST LLVM_ENABLE_PROJECTS)
+    list(APPEND extra_args -DCOMPILER_RT_HAS_TRUNK_LLD=TRUE)
+  endif()
+
   llvm_ExternalProject_Add(runtimes
                            ${CMAKE_CURRENT_SOURCE_DIR}/../../runtimes
                            DEPENDS ${ARG_DEPENDS}
@@ -242,6 +246,7 @@ function(runtime_default_target)
                                       ${COMMON_CMAKE_ARGS}
                                       ${RUNTIMES_CMAKE_ARGS}
                                       ${ARG_CMAKE_ARGS}
+                                      ${extra_args}
                            PASSTHROUGH_PREFIXES LLVM_ENABLE_RUNTIMES
                                                 LLVM_USE_LINKER
                                                 ${ARG_PREFIXES}
@@ -334,6 +339,10 @@ function(runtime_register_target name)
 
   set_enable_per_target_runtime_dir()
 
+  if ("lld" IN_LIST LLVM_ENABLE_PROJECTS)
+    list(APPEND ${name}_extra_args -DCOMPILER_RT_HAS_TRUNK_LLD=TRUE)
+  endif()
+
   llvm_ExternalProject_Add(runtimes-${name}
                            ${CMAKE_CURRENT_SOURCE_DIR}/../../runtimes
                            DEPENDS ${ARG_DEPENDS}