[PATCH] D123777: [CMake] Check for problematic MSVC + /arch:AVX configuration

Nico Weber via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 19 16:05:40 PDT 2022


thakis added a comment.

In case it helps anyone in the future:

I ran

  % /Applications/CMake.app/Contents/bin/cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS='clang;lld' -DLLVM_ENABLE_RUNTIMES='compiler-rt' -DLLVM_APPEND_VC_REV=NO -DLLVM_TARGETS_TO_BUILD='X86' ../llvm-project/llvm

followed by

  % ninja runtimes

<y build eventually failed with:

  ...
  [2736/2740] Performing configure step for 'runtimes'
  -- Linker detection: ld64
  CMake Error at /Users/thakis/src/llvm-project/llvm/cmake/modules/CheckProblematicConfigurations.cmake:14 (if):
    if given arguments:
  
      "STREQUAL" "MSVC"
  
    Unknown arguments specified
  Call Stack (most recent call first):
    /Users/thakis/src/llvm-project/llvm/cmake/modules/HandleLLVMOptions.cmake:10 (include)
    CMakeLists.txt:149 (include)

That error went away with the obvious patch [1], but then things failed later like so:

  CMake Error at /Users/thakis/src/llvm-project/compiler-rt/CMakeLists.txt:450 (message):
    -g is not supported by host compiler

The problem was that I'm on an arm64 system but didn't include AArch64 in `LLVM_TARGETS_TO_BUILD`, so runtimes/runtimes-bins/CMakeFiles/CMakeError.log ended up with lots of `error: unable to create target: 'No available targets are compatible with triple "arm64-apple-macosx12.0.0"'`.

The fix, of course, was to add both `ARM` and `AArch64` to `LLVM_TARGETS_TO_BUILD` in addition to X86 (`-DLLVM_TARGETS_TO_BUILD='X86;ARM;AArch64'`), and clobbering the "runtimes" dir in the build dir so that cmake picks it up.

(Adding just `AArch64` lead to `error: unable to create target: 'No available targets are compatible with triple "thumbv7em-apple-unknown-macho"'`).

1:

  % git diff
  diff --git a/llvm/cmake/modules/CheckProblematicConfigurations.cmake b/llvm/cmake/modules/CheckProblematicConfigurations.cmake
  index e133873d756c..71484172cfb6 100644
  --- a/llvm/cmake/modules/CheckProblematicConfigurations.cmake
  +++ b/llvm/cmake/modules/CheckProblematicConfigurations.cmake
  @@ -11,7 +11,7 @@ endmacro()
   
   # MSVC and /arch:AVX is untested and have created problems before. See:
   # https://github.com/llvm/llvm-project/issues/54645
  -if(${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
  +if("${CMAKE_CXX_COMPILER_ID}" STREQUAL MSVC)
     string(TOLOWER "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}" _FLAGS)
     if(_FLAGS MATCHES "/arch:avx[0-9]*")
       log_problematic("Compiling LLVM with MSVC and the /arch:AVX flag is known to cause issues with parts of LLVM.\nSee https://github.com/llvm/llvm-project/issues/54645 for details.\nUse clang-cl if you want to enable AVX instructions.")

(Posting this here since the first symptom of my mistake led me to this patch. It's innocent, but it's where I looked first, so maybe this helps someone else.)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D123777



More information about the llvm-commits mailing list