level-zero
level-zero copied to clipboard
Error building with clang-cl on Windows
The following errors occur when trying to set clang-cl.exe instead of cl.exe as host compiler:
[1/39] Building CXX object source\CMakeFiles\ze_loader.dir\lib\ze_libapi.cpp.obj
FAILED: source/CMakeFiles/ze_loader.dir/lib/ze_libapi.cpp.obj
C:\PROGRA~1\LLVM\bin\clang-cl.exe /nologo -TP -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -Dze_loader_EXPORTS -ID:\a\llvm\llvm\build\tools\sycl\plugins\level_zero\level_zero\level_zero_loader\include -ID:\a\llvm\llvm\build\tools\sycl\plugins\level_zero\level_zero\level_zero_loader\source\wrapper\include -ID:\a\llvm\llvm\build\tools\sycl\plugins\level_zero\level_zero\level_zero_loader -ID:\a\llvm\llvm\build\tools\sycl\plugins\level_zero\level_zero\level_zero_loader\source\inc /DWIN32 /D_WINDOWS /W3 /GR /EHsc /guard:cf /Qspectre /WX /W3 /wd4996 /MP /MT /O2 /Ob2 /DNDEBUG /Zi -std:c++14 /showIncludes /Fosource\CMakeFiles\ze_loader.dir\lib\ze_libapi.cpp.obj /Fdsource\CMakeFiles\ze_loader.dir\ -c -- D:\a\llvm\llvm\build\tools\sycl\plugins\level_zero\level_zero\level_zero_loader\source\lib\ze_libapi.cpp
clang-cl: error: argument unused during compilation: '/Qspectre' [-Werror,-Wunused-command-line-argument]
clang-cl: error: argument unused during compilation: '/MP' [-Werror,-Wunused-command-line-argument]
[2/39] Building CXX object source\CMakeFiles\ze_loader.dir\lib\zet_libapi.cpp.obj
FAILED: source/CMakeFiles/ze_loader.dir/lib/zet_libapi.cpp.obj
C:\PROGRA~1\LLVM\bin\clang-cl.exe /nologo -TP -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -Dze_loader_EXPORTS -ID:\a\llvm\llvm\build\tools\sycl\plugins\level_zero\level_zero\level_zero_loader\include -ID:\a\llvm\llvm\build\tools\sycl\plugins\level_zero\level_zero\level_zero_loader\source\wrapper\include -ID:\a\llvm\llvm\build\tools\sycl\plugins\level_zero\level_zero\level_zero_loader -ID:\a\llvm\llvm\build\tools\sycl\plugins\level_zero\level_zero\level_zero_loader\source\inc /DWIN32 /D_WINDOWS /W3 /GR /EHsc /guard:cf /Qspectre /WX /W3 /wd4996 /MP /MT /O2 /Ob2 /DNDEBUG /Zi -std:c++14 /showIncludes /Fosource\CMakeFiles\ze_loader.dir\lib\zet_libapi.cpp.obj /Fdsource\CMakeFiles\ze_loader.dir\ -c -- D:\a\llvm\llvm\build\tools\sycl\plugins\level_zero\level_zero\level_zero_loader\source\lib\zet_libapi.cpp
clang-cl: error: argument unused during compilation: '/Qspectre' [-Werror,-Wunused-command-line-argument]
clang-cl: error: argument unused during compilation: '/MP' [-Werror,-Wunused-command-line-argument]
[3/39] Building RC object source\CMakeFiles\ze_loader.dir\ZeLoaderVersion.rc.res
Microsoft (R) Windows (R) Resource Compiler Version 10.0.10011.16384
Copyright (C) Microsoft Corporation. All rights reserved.
ninja: build stopped: subcommand failed.
We don't validate this with clang-cl on windows. What cmake commands/options are you using? It looks like cmake is detecting clang-cl as MSVC
@bmyates see below
You're not checking for msvc at all: https://github.com/oneapi-src/level-zero/blob/7da12ad29129b912e736639dfa110474b8eda49f/CMakeLists.txt#L74-L83
According to the documentation MSVC
is true if host compiler can understand cl.exe
compiler options, which is very confusing.
Also, not all msvc versions support Spectre mitigations. So, what you really want to do is to check if these flags are supported and only then use them.
C:\Users\alexb\Projects\level-zero\build>cmake -GNinja -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl ..
-- The C compiler identification is Clang 13.0.0 with MSVC-like command-line
-- The CXX compiler identification is Clang 13.0.0 with MSVC-like command-line
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/LLVM/bin/clang-cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/LLVM/bin/clang-cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: C:/Program Files/Git/cmd/git.exe (found version "2.35.1.windows.2")
-- Using patch version from commit count in git repository: 9
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/alexb/Projects/level-zero/build
C:\Users\alexb\Projects\level-zero\build>ninja
[1/42] Building CXX object source\CMakeFiles\ze_loader.dir\lib\ze_libddi.cpp.obj
FAILED: source/CMakeFiles/ze_loader.dir/lib/ze_libddi.cpp.obj
C:\PROGRA~1\LLVM\bin\clang-cl.exe /nologo -TP -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -DLOADER_VERSION_MAJOR=1 -DLOADER_VERSION_MINOR=7 -DLOADER_VERSION_PATCH=9 -Dze_loader_EXPORTS -IC:\Users\alexb\Projects\level-zero\include -IC:\Users\alexb\Projects\level-zero\source\wrapper\include -IC:\Users\alexb\Projects\level-zero -IC:\Users\alexb\Projects\level-zero\source\inc /DWIN32 /D_WINDOWS /W3 /GR /EHsc /guard:cf /Qspectre /WX /W3 /wd4996 /MP /EHsc /MTd /Zi /Ob0 /Od /RTC1 -std:c++14 /showIncludes /Fosource\CMakeFiles\ze_loader.dir\lib\ze_libddi.cpp.obj /Fdsource\CMakeFiles\ze_loader.dir\ -c -- C:\Users\alexb\Projects\level-zero\source\lib\ze_libddi.cpp
clang-cl: error: argument unused during compilation: '/Qspectre' [-Werror,-Wunused-command-line-argument]
clang-cl: error: argument unused during compilation: '/MP' [-Werror,-Wunused-command-line-argument]
[2/42] Building CXX object source\CMakeFiles\ze_loader.dir\lib\zet_libapi.cpp.obj
FAILED: source/CMakeFiles/ze_loader.dir/lib/zet_libapi.cpp.obj
C:\PROGRA~1\LLVM\bin\clang-cl.exe /nologo -TP -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -DLOADER_VERSION_MAJOR=1 -DLOADER_VERSION_MINOR=7 -DLOADER_VERSION_PATCH=9 -Dze_loader_EXPORTS -IC:\Users\alexb\Projects\level-zero\include -IC:\Users\alexb\Projects\level-zero\source\wrapper\include -IC:\Users\alexb\Projects\level-zero -IC:\Users\alexb\Projects\level-zero\source\inc /DWIN32 /D_WINDOWS /W3 /GR /EHsc /guard:cf /Qspectre /WX /W3 /wd4996 /MP /EHsc /MTd /Zi /Ob0 /Od /RTC1 -std:c++14 /showIncludes /Fosource\CMakeFiles\ze_loader.dir\lib\zet_libapi.cpp.obj /Fdsource\CMakeFiles\ze_loader.dir\ -c -- C:\Users\alexb\Projects\level-zero\source\lib\zet_libapi.cpp
clang-cl: error: argument unused during compilation: '/Qspectre' [-Werror,-Wunused-command-line-argument]
clang-cl: error: argument unused during compilation: '/MP' [-Werror,-Wunused-command-line-argument]
[3/42] Building CXX object source\CMakeFiles\ze_loader.dir\lib\ze_libapi.cpp.obj
FAILED: source/CMakeFiles/ze_loader.dir/lib/ze_libapi.cpp.obj
C:\PROGRA~1\LLVM\bin\clang-cl.exe /nologo -TP -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -DLOADER_VERSION_MAJOR=1 -DLOADER_VERSION_MINOR=7 -DLOADER_VERSION_PATCH=9 -Dze_loader_EXPORTS -IC:\Users\alexb\Projects\level-zero\include -IC:\Users\alexb\Projects\level-zero\source\wrapper\include -IC:\Users\alexb\Projects\level-zero -IC:\Users\alexb\Projects\level-zero\source\inc /DWIN32 /D_WINDOWS /W3 /GR /EHsc /guard:cf /Qspectre /WX /W3 /wd4996 /MP /EHsc /MTd /Zi /Ob0 /Od /RTC1 -std:c++14 /showIncludes /Fosource\CMakeFiles\ze_loader.dir\lib\ze_libapi.cpp.obj /Fdsource\CMakeFiles\ze_loader.dir\ -c -- C:\Users\alexb\Projects\level-zero\source\lib\ze_libapi.cpp
clang-cl: error: argument unused during compilation: '/Qspectre' [-Werror,-Wunused-command-line-argument]
clang-cl: error: argument unused during compilation: '/MP' [-Werror,-Wunused-command-line-argument]
[4/42] Building CXX object source\CMakeFiles\ze_loader.dir\lib\zes_libapi.cpp.obj
FAILED: source/CMakeFiles/ze_loader.dir/lib/zes_libapi.cpp.obj
C:\PROGRA~1\LLVM\bin\clang-cl.exe /nologo -TP -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -DLOADER_VERSION_MAJOR=1 -DLOADER_VERSION_MINOR=7 -DLOADER_VERSION_PATCH=9 -Dze_loader_EXPORTS -IC:\Users\alexb\Projects\level-zero\include -IC:\Users\alexb\Projects\level-zero\source\wrapper\include -IC:\Users\alexb\Projects\level-zero -IC:\Users\alexb\Projects\level-zero\source\inc /DWIN32 /D_WINDOWS /W3 /GR /EHsc /guard:cf /Qspectre /WX /W3 /wd4996 /MP /EHsc /MTd /Zi /Ob0 /Od /RTC1 -std:c++14 /showIncludes /Fosource\CMakeFiles\ze_loader.dir\lib\zes_libapi.cpp.obj /Fdsource\CMakeFiles\ze_loader.dir\ -c -- C:\Users\alexb\Projects\level-zero\source\lib\zes_libapi.cpp
clang-cl: error: argument unused during compilation: '/Qspectre' [-Werror,-Wunused-command-line-argument]
clang-cl: error: argument unused during compilation: '/MP' [-Werror,-Wunused-command-line-argument]
[5/42] Building CXX object source\CMakeFiles\ze_loader.dir\lib\zet_libddi.cpp.obj
FAILED: source/CMakeFiles/ze_loader.dir/lib/zet_libddi.cpp.obj
C:\PROGRA~1\LLVM\bin\clang-cl.exe /nologo -TP -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -DLOADER_VERSION_MAJOR=1 -DLOADER_VERSION_MINOR=7 -DLOADER_VERSION_PATCH=9 -Dze_loader_EXPORTS -IC:\Users\alexb\Projects\level-zero\include -IC:\Users\alexb\Projects\level-zero\source\wrapper\include -IC:\Users\alexb\Projects\level-zero -IC:\Users\alexb\Projects\level-zero\source\inc /DWIN32 /D_WINDOWS /W3 /GR /EHsc /guard:cf /Qspectre /WX /W3 /wd4996 /MP /EHsc /MTd /Zi /Ob0 /Od /RTC1 -std:c++14 /showIncludes /Fosource\CMakeFiles\ze_loader.dir\lib\zet_libddi.cpp.obj /Fdsource\CMakeFiles\ze_loader.dir\ -c -- C:\Users\alexb\Projects\level-zero\source\lib\zet_libddi.cpp
clang-cl: error: argument unused during compilation: '/Qspectre' [-Werror,-Wunused-command-line-argument]
clang-cl: error: argument unused during compilation: '/MP' [-Werror,-Wunused-command-line-argument]
[6/42] Building CXX object source\CMakeFiles\ze_loader.dir\lib\zel_tracing_libddi.cpp.obj
FAILED: source/CMakeFiles/ze_loader.dir/lib/zel_tracing_libddi.cpp.obj
C:\PROGRA~1\LLVM\bin\clang-cl.exe /nologo -TP -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -DLOADER_VERSION_MAJOR=1 -DLOADER_VERSION_MINOR=7 -DLOADER_VERSION_PATCH=9 -Dze_loader_EXPORTS -IC:\Users\alexb\Projects\level-zero\include -IC:\Users\alexb\Projects\level-zero\source\wrapper\include -IC:\Users\alexb\Projects\level-zero -IC:\Users\alexb\Projects\level-zero\source\inc /DWIN32 /D_WINDOWS /W3 /GR /EHsc /guard:cf /Qspectre /WX /W3 /wd4996 /MP /EHsc /MTd /Zi /Ob0 /Od /RTC1 -std:c++14 /showIncludes /Fosource\CMakeFiles\ze_loader.dir\lib\zel_tracing_libddi.cpp.obj /Fdsource\CMakeFiles\ze_loader.dir\ -c -- C:\Users\alexb\Projects\level-zero\source\lib\zel_tracing_libddi.cpp
clang-cl: error: argument unused during compilation: '/Qspectre' [-Werror,-Wunused-command-line-argument]
clang-cl: error: argument unused during compilation: '/MP' [-Werror,-Wunused-command-line-argument]
[7/42] Building CXX object source\CMakeFiles\ze_loader.dir\lib\windows\lib_init.cpp.obj
FAILED: source/CMakeFiles/ze_loader.dir/lib/windows/lib_init.cpp.obj
C:\PROGRA~1\LLVM\bin\clang-cl.exe /nologo -TP -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -DLOADER_VERSION_MAJOR=1 -DLOADER_VERSION_MINOR=7 -DLOADER_VERSION_PATCH=9 -Dze_loader_EXPORTS -IC:\Users\alexb\Projects\level-zero\include -IC:\Users\alexb\Projects\level-zero\source\wrapper\include -IC:\Users\alexb\Projects\level-zero -IC:\Users\alexb\Projects\level-zero\source\inc /DWIN32 /D_WINDOWS /W3 /GR /EHsc /guard:cf /Qspectre /WX /W3 /wd4996 /MP /EHsc /MTd /Zi /Ob0 /Od /RTC1 -std:c++14 /showIncludes /Fosource\CMakeFiles\ze_loader.dir\lib\windows\lib_init.cpp.obj /Fdsource\CMakeFiles\ze_loader.dir\ -c -- C:\Users\alexb\Projects\level-zero\source\lib\windows\lib_init.cpp
clang-cl: error: argument unused during compilation: '/Qspectre' [-Werror,-Wunused-command-line-argument]
clang-cl: error: argument unused during compilation: '/MP' [-Werror,-Wunused-command-line-argument]
[8/42] Building CXX object source\CMakeFiles\ze_loader.dir\lib\zel_tracing_libapi.cpp.obj
FAILED: source/CMakeFiles/ze_loader.dir/lib/zel_tracing_libapi.cpp.obj
C:\PROGRA~1\LLVM\bin\clang-cl.exe /nologo -TP -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -DLOADER_VERSION_MAJOR=1 -DLOADER_VERSION_MINOR=7 -DLOADER_VERSION_PATCH=9 -Dze_loader_EXPORTS -IC:\Users\alexb\Projects\level-zero\include -IC:\Users\alexb\Projects\level-zero\source\wrapper\include -IC:\Users\alexb\Projects\level-zero -IC:\Users\alexb\Projects\level-zero\source\inc /DWIN32 /D_WINDOWS /W3 /GR /EHsc /guard:cf /Qspectre /WX /W3 /wd4996 /MP /EHsc /MTd /Zi /Ob0 /Od /RTC1 -std:c++14 /showIncludes /Fosource\CMakeFiles\ze_loader.dir\lib\zel_tracing_libapi.cpp.obj /Fdsource\CMakeFiles\ze_loader.dir\ -c -- C:\Users\alexb\Projects\level-zero\source\lib\zel_tracing_libapi.cpp
clang-cl: error: argument unused during compilation: '/Qspectre' [-Werror,-Wunused-command-line-argument]
clang-cl: error: argument unused during compilation: '/MP' [-Werror,-Wunused-command-line-argument]
[9/42] Building CXX object source\CMakeFiles\ze_loader.dir\lib\zes_libddi.cpp.obj
FAILED: source/CMakeFiles/ze_loader.dir/lib/zes_libddi.cpp.obj
C:\PROGRA~1\LLVM\bin\clang-cl.exe /nologo -TP -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -DLOADER_VERSION_MAJOR=1 -DLOADER_VERSION_MINOR=7 -DLOADER_VERSION_PATCH=9 -Dze_loader_EXPORTS -IC:\Users\alexb\Projects\level-zero\include -IC:\Users\alexb\Projects\level-zero\source\wrapper\include -IC:\Users\alexb\Projects\level-zero -IC:\Users\alexb\Projects\level-zero\source\inc /DWIN32 /D_WINDOWS /W3 /GR /EHsc /guard:cf /Qspectre /WX /W3 /wd4996 /MP /EHsc /MTd /Zi /Ob0 /Od /RTC1 -std:c++14 /showIncludes /Fosource\CMakeFiles\ze_loader.dir\lib\zes_libddi.cpp.obj /Fdsource\CMakeFiles\ze_loader.dir\ -c -- C:\Users\alexb\Projects\level-zero\source\lib\zes_libddi.cpp
clang-cl: error: argument unused during compilation: '/Qspectre' [-Werror,-Wunused-command-line-argument]
clang-cl: error: argument unused during compilation: '/MP' [-Werror,-Wunused-command-line-argument]
[10/42] Building RC object source\CMakeFiles\ze_loader.dir\ZeLoaderVersion.rc.res
Microsoft (R) Windows (R) Resource Compiler Version 10.0.10011.16384
Copyright (C) Microsoft Corporation. All rights reserved.
ninja: build stopped: subcommand failed.