[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