[PATCH] D97451: [PR48898][CMake] Support MinGW Toolchain tools in llvm_ExternalProject_Add

Markus Böck via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 25 02:15:39 PST 2021


zero9178 updated this revision to Diff 326328.
zero9178 marked an inline comment as done.
zero9178 added a comment.

Addressed reviewers comments:
Corrected appending the correct tools to ARG_TOOLCHAIN_TOOLS in the case when use_mingw_toolchain_tools is set.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D97451/new/

https://reviews.llvm.org/D97451

Files:
  llvm/cmake/modules/LLVMExternalProjectUtils.cmake


Index: llvm/cmake/modules/LLVMExternalProjectUtils.cmake
===================================================================
--- llvm/cmake/modules/LLVMExternalProjectUtils.cmake
+++ llvm/cmake/modules/LLVMExternalProjectUtils.cmake
@@ -46,9 +46,19 @@
     ${ARGN})
   canonicalize_tool_name(${name} nameCanon)
 
+  if (MINGW)
+    set(use_mingw_toolchain_tools ON)
+  endif()
+
   foreach(arg ${ARG_CMAKE_ARGS})
     if(arg MATCHES "^-DCMAKE_SYSTEM_NAME=")
       string(REGEX REPLACE "^-DCMAKE_SYSTEM_NAME=(.*)$" "\\1" _cmake_system_name "${arg}")
+    elseif (arg MATCHES "^-DCMAKE_(C|ASM|CXX)_COMPILER_TARGET=(.*)-windows-(gnu|msvc).*$")
+      if (${CMAKE_MATCH_3} STREQUAL "msvc")
+        set(use_mingw_toolchain_tools OFF)
+      else()
+        set(use_mingw_toolchain_tools ON)
+      endif ()
     endif()
   endforeach()
 
@@ -65,7 +75,7 @@
       list(APPEND ARG_TOOLCHAIN_TOOLS 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)
+      elseif(_cmake_system_name STREQUAL Windows AND NOT use_mingw_toolchain_tools)
         list(APPEND ARG_TOOLCHAIN_TOOLS llvm-lib)
       else()
         # TODO: These tools don't fully support Mach-O format yet.
@@ -138,7 +148,7 @@
 
   if(ARG_USE_TOOLCHAIN AND NOT CMAKE_CROSSCOMPILING)
     if(CLANG_IN_TOOLCHAIN)
-      if(_cmake_system_name STREQUAL Windows)
+      if(_cmake_system_name STREQUAL Windows AND NOT use_mingw_toolchain_tools)
         set(compiler_args -DCMAKE_C_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}
                           -DCMAKE_CXX_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}
                           -DCMAKE_ASM_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
@@ -149,14 +159,14 @@
       endif()
     endif()
     if(lld IN_LIST TOOLCHAIN_TOOLS)
-      if(_cmake_system_name STREQUAL Windows)
+      if(_cmake_system_name STREQUAL Windows AND NOT use_mingw_toolchain_tools)
         list(APPEND compiler_args -DCMAKE_LINKER=${LLVM_RUNTIME_OUTPUT_INTDIR}/lld-link${CMAKE_EXECUTABLE_SUFFIX})
       elseif(NOT _cmake_system_name STREQUAL Darwin)
         list(APPEND compiler_args -DCMAKE_LINKER=${LLVM_RUNTIME_OUTPUT_INTDIR}/ld.lld${CMAKE_EXECUTABLE_SUFFIX})
       endif()
     endif()
     if(llvm-ar IN_LIST TOOLCHAIN_TOOLS)
-      if(_cmake_system_name STREQUAL Windows)
+      if(_cmake_system_name STREQUAL Windows AND NOT use_mingw_toolchain_tools)
         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})


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D97451.326328.patch
Type: text/x-patch
Size: 2828 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210225/72f91bcd/attachment.bin>


More information about the llvm-commits mailing list