[llvm] ee7ee71 - Explicitly specify CMAKE_AR in WinMsvc.cmake

Shoaib Meenai via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 23 18:06:08 PDT 2020


Author: Gwen Mittertreiner
Date: 2020-09-23T18:05:29-07:00
New Revision: ee7ee71f40e904a8380d6439ac4741304b4a2dfd

URL: https://github.com/llvm/llvm-project/commit/ee7ee71f40e904a8380d6439ac4741304b4a2dfd
DIFF: https://github.com/llvm/llvm-project/commit/ee7ee71f40e904a8380d6439ac4741304b4a2dfd.diff

LOG: Explicitly specify CMAKE_AR in WinMsvc.cmake

As of cmake 3.18, cmake changes how it searches for compilers for
Windows (see
https://gitlab.kitware.com/cmake/cmake/-/commit/55196a1440e26917d40e6a7a3eb8d9fb323fa657)
and now finds llvm-ar instead of llvm-lib as CMAKE_AR. This explicitly
specifies CMAKE_AR as llvm-lib so the correct program is found.

Reviewed By: smeenai

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

Added: 
    

Modified: 
    llvm/cmake/modules/LLVMExternalProjectUtils.cmake
    llvm/cmake/platforms/WinMsvc.cmake

Removed: 
    


################################################################################
diff  --git a/llvm/cmake/modules/LLVMExternalProjectUtils.cmake b/llvm/cmake/modules/LLVMExternalProjectUtils.cmake
index db3a536b0c24..c01a6dd71d9f 100644
--- a/llvm/cmake/modules/LLVMExternalProjectUtils.cmake
+++ b/llvm/cmake/modules/LLVMExternalProjectUtils.cmake
@@ -56,6 +56,8 @@ function(llvm_ExternalProject_Add name source_dir)
     set(ARG_TOOLCHAIN_TOOLS clang lld llvm-ar llvm-ranlib llvm-nm llvm-objdump)
     if(_cmake_system_name STREQUAL Darwin)
       list(APPEND ARG_TOOLCHAIN_TOOLS llvm-libtool-darwin llvm-lipo)
+    elseif(_cmake_system_name STREQUAL Windows)
+      list(APPEND ARG_TOOLCHAIN_TOOLS llvm-lib)
     else()
       # TODO: These tools don't fully support Mach-O format yet.
       list(APPEND ARG_TOOLCHAIN_TOOLS llvm-objcopy llvm-strip)
@@ -144,7 +146,11 @@ function(llvm_ExternalProject_Add name source_dir)
       endif()
     endif()
     if(llvm-ar IN_LIST TOOLCHAIN_TOOLS)
-      list(APPEND compiler_args -DCMAKE_AR=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ar${CMAKE_EXECUTABLE_SUFFIX})
+      if(_cmake_system_name STREQUAL Windows)
+        list(APPEND compiler_args -DCMAKE_AR=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-lib${CMAKE_EXECUTABLE_SUFFIX})
+      else()
+        list(APPEND compiler_args -DCMAKE_AR=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-ar${CMAKE_EXECUTABLE_SUFFIX})
+      endif()
     endif()
     if(llvm-libtool-darwin IN_LIST TOOLCHAIN_TOOLS)
       list(APPEND compiler_args -DCMAKE_LIBTOOL=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-libtool-darwin${CMAKE_EXECUTABLE_SUFFIX})

diff  --git a/llvm/cmake/platforms/WinMsvc.cmake b/llvm/cmake/platforms/WinMsvc.cmake
index 6b78b069dbf9..4a6bef2e01cc 100644
--- a/llvm/cmake/platforms/WinMsvc.cmake
+++ b/llvm/cmake/platforms/WinMsvc.cmake
@@ -232,6 +232,7 @@ endif()
 set(CMAKE_C_COMPILER "${LLVM_NATIVE_TOOLCHAIN}/bin/clang-cl" CACHE FILEPATH "")
 set(CMAKE_CXX_COMPILER "${LLVM_NATIVE_TOOLCHAIN}/bin/clang-cl" CACHE FILEPATH "")
 set(CMAKE_LINKER "${LLVM_NATIVE_TOOLCHAIN}/bin/lld-link" CACHE FILEPATH "")
+set(CMAKE_AR "${LLVM_NATIVE_TOOLCHAIN}/bin/llvm-lib" CACHE FILEPATH "")
 
 # Even though we're cross-compiling, we need some native tools (e.g. llvm-tblgen), and those
 # native tools have to be built before we can start doing the cross-build.  LLVM supports


        


More information about the llvm-commits mailing list