[llvm] 84f80b1 - [CMake] Only detect the linker once in AddLLVM.cmake
Louis Dionne via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 19 10:53:50 PST 2020
Author: Louis Dionne
Date: 2020-02-19T13:53:38-05:00
New Revision: 84f80b1faaeb385a178f4b517d92d29ca6a6d854
URL: https://github.com/llvm/llvm-project/commit/84f80b1faaeb385a178f4b517d92d29ca6a6d854
DIFF: https://github.com/llvm/llvm-project/commit/84f80b1faaeb385a178f4b517d92d29ca6a6d854.diff
LOG: [CMake] Only detect the linker once in AddLLVM.cmake
Summary:
Otherwise, the build output contains a bunch of "Linker detection: <xxx>"
lines that are really redundant. We also make redundant calls to the
linker, although that is a smaller concern.
Reviewers: smeenai
Subscribers: mgorny, fedor.sergeev, jkorous, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D68648
Added:
Modified:
llvm/cmake/modules/AddLLVM.cmake
Removed:
################################################################################
diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake
index 71ed1b8a3af1..408423ba1887 100644
--- a/llvm/cmake/modules/AddLLVM.cmake
+++ b/llvm/cmake/modules/AddLLVM.cmake
@@ -162,49 +162,54 @@ function(add_llvm_symbol_exports target_name export_file)
set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE)
endfunction(add_llvm_symbol_exports)
-if(APPLE)
- execute_process(
- COMMAND "${CMAKE_LINKER}" -v
- ERROR_VARIABLE stderr
- )
- set(LLVM_LINKER_DETECTED YES)
- if("${stderr}" MATCHES "PROJECT:ld64")
- set(LLVM_LINKER_IS_LD64 YES)
- message(STATUS "Linker detection: ld64")
- else()
- set(LLVM_LINKER_DETECTED NO)
- message(STATUS "Linker detection: unknown")
- endif()
-elseif(NOT WIN32)
- # Detect what linker we have here
- if( LLVM_USE_LINKER )
- set(command ${CMAKE_C_COMPILER} -fuse-ld=${LLVM_USE_LINKER} -Wl,--version)
- else()
- separate_arguments(flags UNIX_COMMAND "${CMAKE_EXE_LINKER_FLAGS}")
- set(command ${CMAKE_C_COMPILER} ${flags} -Wl,--version)
- endif()
- execute_process(
- COMMAND ${command}
- OUTPUT_VARIABLE stdout
- ERROR_VARIABLE stderr
- )
- set(LLVM_LINKER_DETECTED YES)
- if("${stdout}" MATCHES "GNU gold")
- set(LLVM_LINKER_IS_GOLD YES)
- message(STATUS "Linker detection: GNU Gold")
- elseif("${stdout}" MATCHES "^LLD")
- set(LLVM_LINKER_IS_LLD YES)
- message(STATUS "Linker detection: LLD")
- elseif("${stdout}" MATCHES "GNU ld")
- set(LLVM_LINKER_IS_GNULD YES)
- message(STATUS "Linker detection: GNU ld")
- elseif("${stderr}" MATCHES "Solaris Link Editors" OR
- "${stdout}" MATCHES "Solaris Link Editors")
- set(LLVM_LINKER_IS_SOLARISLD YES)
- message(STATUS "Linker detection: Solaris ld")
- else()
- set(LLVM_LINKER_DETECTED NO)
- message(STATUS "Linker detection: unknown")
+if (NOT DEFINED LLVM_LINKER_DETECTED)
+ if(APPLE)
+ execute_process(
+ COMMAND "${CMAKE_LINKER}" -v
+ ERROR_VARIABLE stderr
+ )
+ if("${stderr}" MATCHES "PROJECT:ld64")
+ set(LLVM_LINKER_DETECTED YES CACHE INTERNAL "")
+ set(LLVM_LINKER_IS_LD64 YES CACHE INTERNAL "")
+ message(STATUS "Linker detection: ld64")
+ else()
+ set(LLVM_LINKER_DETECTED NO CACHE INTERNAL "")
+ message(STATUS "Linker detection: unknown")
+ endif()
+ elseif(NOT WIN32)
+ # Detect what linker we have here
+ if( LLVM_USE_LINKER )
+ set(command ${CMAKE_C_COMPILER} -fuse-ld=${LLVM_USE_LINKER} -Wl,--version)
+ else()
+ separate_arguments(flags UNIX_COMMAND "${CMAKE_EXE_LINKER_FLAGS}")
+ set(command ${CMAKE_C_COMPILER} ${flags} -Wl,--version)
+ endif()
+ execute_process(
+ COMMAND ${command}
+ OUTPUT_VARIABLE stdout
+ ERROR_VARIABLE stderr
+ )
+ if("${stdout}" MATCHES "GNU gold")
+ set(LLVM_LINKER_DETECTED YES CACHE INTERNAL "")
+ set(LLVM_LINKER_IS_GOLD YES CACHE INTERNAL "")
+ message(STATUS "Linker detection: GNU Gold")
+ elseif("${stdout}" MATCHES "^LLD")
+ set(LLVM_LINKER_DETECTED YES CACHE INTERNAL "")
+ set(LLVM_LINKER_IS_LLD YES CACHE INTERNAL "")
+ message(STATUS "Linker detection: LLD")
+ elseif("${stdout}" MATCHES "GNU ld")
+ set(LLVM_LINKER_DETECTED YES CACHE INTERNAL "")
+ set(LLVM_LINKER_IS_GNULD YES CACHE INTERNAL "")
+ message(STATUS "Linker detection: GNU ld")
+ elseif("${stderr}" MATCHES "Solaris Link Editors" OR
+ "${stdout}" MATCHES "Solaris Link Editors")
+ set(LLVM_LINKER_DETECTED YES CACHE INTERNAL "")
+ set(LLVM_LINKER_IS_SOLARISLD YES CACHE INTERNAL "")
+ message(STATUS "Linker detection: Solaris ld")
+ else()
+ set(LLVM_LINKER_DETECTED NO CACHE INTERNAL "")
+ message(STATUS "Linker detection: unknown")
+ endif()
endif()
endif()
More information about the llvm-commits
mailing list