[PATCH] D54153: Fix compilation issue in VS2017 with Clang-tablegen and LLVM-tablegen

Alexandre Ganea via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 8 05:42:10 PST 2018


aganea added a comment.

I managed to reproduce the issue with Ninja as well. It happens rarely, 1 out 5 runs.

  aganea at PC MINGW64 /f/svn/llvm
  $ rmdir -rf build
  $ cmake -G Ninja f:/svn/llvm -DCMAKE_BUILD_TYPE=Debug -DLLVM_OPTIMIZED_TABLEGEN=true -DLLVM_EXTERNAL_CLANG_SOURCE_DIR=f:/svn/clang -DLLVM_EXTERNAL_LLD_SOURCE_DIR=f:/svn/lld -DLLVM_TOOL_LLD_BUILD=true -DLLVM_TOOL_CLANG_BUILD=true -DLLVM_ENABLE_LLD=true -DCMAKE_C_COMPILER="c:/Program Files/LLVM/bin/clang-cl.exe" -DCMAKE_CXX_COMPILER="c:/Program Files/LLVM/bin/clang-cl.exe"
  [...]
  [576/3829] Configuring NATIVE LLVM...
  FAILED: NATIVE/CMakeCache.txt
  cmd.exe /C "cd /D F:\svn\buildninja\NATIVE && "C:\Program Files\CMake\bin\cmake.exe" -G Ninja -DCMAKE_MAKE_PROGRAM="C:/PROGRA~2/MIB055~1/2017/PROFES~1/Common7/IDE/COMMON~1/MICROS~1/CMake/Ninja/ninja.exe" "-DCMAKE_C_COMPILER=c:/Program Files/LLVM/bin/clang-cl.exe" "-DCMAKE_CXX_COMPILER=c:/Program Files/LLVM/bin/clang-cl.exe" F:/svn/llvm -DLLVM_TARGET_IS_CROSSCOMPILE_HOST=TRUE -DLLVM_TARGETS_TO_BUILD="AArch64;AMDGPU;ARM;BPF;Hexagon;Lanai;Mips;MSP430;NVPTX;PowerPC;Sparc;SystemZ;WebAssembly;X86;XCore" -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="" -DLLVM_DEFAULT_TARGET_TRIPLE="x86_64-pc-windows-msvc" -DLLVM_TARGET_ARCH="host" -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_LINKER=lld -DLLVM_EXTERNAL_CLANG_SOURCE_DIR=f:/svn/clang"
  -- The C compiler identification is Clang 7.0.0
  -- The CXX compiler identification is Clang 7.0.0
  -- The ASM compiler identification is Clang
  [...]
  -- Looking for __chkstk
  -- Looking for __chkstk - found
  -- Looking for __chkstk_ms
  CMake Error: Unable to open check cache file for write. F:/svn/buildninja/NATIVE/CMakeFiles/CMakeTmp/CMakeFiles/cmake.check_cache
  CMake Error at C:/Program Files/CMake/share/cmake-3.12/Modules/CheckFunctionExists.cmake:72 (try_compile):
    Failed to configure test project build system.
  Call Stack (most recent call first):
    cmake/config-ix.cmake:222 (check_function_exists)
    CMakeLists.txt:578 (include)
  
  
  -- Configuring incomplete, errors occurred!
  See also "F:/svn/buildninja/NATIVE/CMakeFiles/CMakeOutput.log".
  See also "F:/svn/buildninja/NATIVE/CMakeFiles/CMakeError.log".
  [577/3829] Linking CXX shared library bin\OptRemarks.dll
  link.exe: warning: ignoring unknown argument: -fuse-ld=lld
  link.exe: warning: ignoring unknown argument: -fuse-ld=lld
  [581/3829] Linking CXX executable bin\llvm-undname.exe
  link.exe: warning: ignoring unknown argument: -fuse-ld=lld
  link.exe: warning: ignoring unknown argument: -fuse-ld=lld
  [589/3829] Building CXX object utils\benchmark\src\CMakeFiles\benchmark.dir\sysinfo.cc.obj
  F:\svn\llvm\utils\benchmark\src\sysinfo.cc(349,7):  warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]
        default:
        ^
  1 warning generated.
  ninja: build stopped: subcommand failed.

Unfortunately, my fix doesn't work here. It looks like the dependencies are in the wrong order in `F:\svn\buildninja\build.ninja`:

  #############################################
  # Utility command for CONFIGURE_LLVM_NATIVE
  
  build CONFIGURE_LLVM_NATIVE: phony CMakeFiles\CONFIGURE_LLVM_NATIVE NATIVE\CMakeCache.txt CREATE_LLVM_NATIVE
  
  #############################################
  # Custom command for NATIVE\CMakeCache.txt
  
  build NATIVE\CMakeCache.txt: CUSTOM_COMMAND || CREATE_LLVM_NATIVE
    COMMAND = cmd.exe /C "cd /D F:\svn\buildninja\NATIVE && "C:\Program Files\CMake\bin\cmake.exe" -G Ninja -DCMAKE_MAKE_PROGRAM="C:/PROGRA~2/MIB055~1/2017/PROFES~1/Common7/IDE/COMMON~1/MICROS~1/CMake/Ninja/ninja.exe" "-DCMAKE_C_COMPILER=c:/Program Files/LLVM/bin/clang-cl.exe" "-DCMAKE_CXX_COMPILER=c:/Program Files/LLVM/bin/clang-cl.exe" F:/svn/llvm -DLLVM_TARGET_IS_CROSSCOMPILE_HOST=TRUE -DLLVM_TARGETS_TO_BUILD="AArch64;AMDGPU;ARM;BPF;Hexagon;Lanai;Mips;MSP430;NVPTX;PowerPC;Sparc;SystemZ;WebAssembly;X86;XCore" -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="" -DLLVM_DEFAULT_TARGET_TRIPLE="x86_64-pc-windows-msvc" -DLLVM_TARGET_ARCH="host" -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_LINKER=lld -DLLVM_EXTERNAL_CLANG_SOURCE_DIR=f:/svn/clang"
    DESC = Configuring NATIVE LLVM...
    restat = 1
  
  #############################################
  # Utility command for LLVM-tablegen-host
  
  build utils\TableGen\LLVM-tablegen-host: phony utils\TableGen\CMakeFiles\LLVM-tablegen-host NATIVE\bin\llvm-tblgen CONFIGURE_LLVM_NATIVE bin\llvm-tblgen.exe
  
  #############################################
  # Utility command for CLANG-tablegen-host
  
  build tools\clang\utils\TableGen\CLANG-tablegen-host: phony tools\clang\utils\TableGen\CMakeFiles\CLANG-tablegen-host NATIVE\bin\clang-tblgen CONFIGURE_LLVM_NATIVE bin\clang-tblgen.exe utils\TableGen\LLVM-tablegen-host

The `LLVM-tablegen-host` dependency for `CLANG-tablegen-host` comes at the end, and it really looks like `CONFIGURE_LLVM_NATIVE` is called for both tablegen-host configs, before `LLVM-tablegen-host` dependency can kick in.
I've tried moving around the call to `add_dependencies()`, but the dependency list in the Ninja build script remains in the same order. Any advice?


Repository:
  rL LLVM

https://reviews.llvm.org/D54153





More information about the llvm-commits mailing list