level-zero icon indicating copy to clipboard operation
level-zero copied to clipboard

Error building with clang-cl on Windows

Open alexbatashev opened this issue 3 years ago • 2 comments

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.

alexbatashev avatar Feb 13 '22 06:02 alexbatashev

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 avatar Feb 13 '22 16:02 bmyates

@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.

alexbatashev avatar Feb 13 '22 16:02 alexbatashev