KhronosGroup / KhronosGroup/SPIRV-LLVM-Translator

llvm_release_140 branch fails to build with SPIRV Tools integration on Windows with MSVC

Open
#1,454 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
LLVM
Stars
625
Forks
279
Avg merge
3d 5h
Merged PRs (30d)
34

Description

### General information
- [x] Build is in tree
- [Build environment information](https://github.com/pal1000/mesa-dist-win/blob/6b81ea216472b53aba1f9dba359585a2fe0a7009/buildinfo/msvc.txt)
- Branch: llvm_release_140
- Commit: e95eb30ace4954a3a7e8e17a3cc22f7382d4a47e
- SPIRV headers commit always syncs with `spirv-headers-tag.conf`
### SPIRV LLVM translator build configuration command
````
cmake "C:\Software\DEVELO~1\projects\llvm-project\llvm" -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_CRT_RELEASE=MT -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_TARGETS_TO_BUILD=AMDGPU;X86 -DLLVM_OPTIMIZED_TABLEGEN=TRUE -DLLVM_INCLUDE_UTILS=OFF -DLLVM_INCLUDE_RUNTIMES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_GO_TESTS=OFF -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_BUILD_LLVM_C_DYLIB=OFF -DLLVM_ENABLE_DIA_SDK=OFF -DCLANG_BUILD_TOOLS=ON -DLLVM_ENABLE_RTTI=ON -DLLVM_ENABLE_TERMINFO=OFF -DCMAKE_INSTALL_PREFIX="C:/Software/DEVELO~1/projects/llvm/build/spv-x64" -DLLVM_SPIRV_INCLUDE_TESTS=OFF
````
- Build command `ninja projects/SPIRV-LLVM-Translator/install`
### Build Log
````
[1/2] Linking CXX executable bin\llvm-spirv.exe
FAILED: bin/llvm-spirv.exe
cmd.exe /C "cd . && C:\Software\Development\projects\cmake\bin\cmake.exe -E vs_link_exe --intdir=projects\SPIRV-LLVM-Translator\tools\llvm-spirv\CMakeFiles\llvm-spirv.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\mt.exe --manifests -- C:\PROGRA~2\MICROS~3\2022\BUILDT~1\VC\Tools\MSVC\1431~1.311\bin\Hostx64\x64\link.exe /nologo projects\SPIRV-LLVM-Translator\tools\llvm-spirv\CMakeFiles\llvm-spirv.dir\llvm-spirv.cpp.obj projects\SPIRV-LLVM-Translator\tools\llvm-spirv\CMakeFiles\llvm-spirv.dir\__\__\__\__\resources\windows_version_resource.rc.res /out:bin\llvm-spirv.exe /implib:lib\llvm-spirv.lib /pdb:bin\llvm-spirv.pdb /version:0.0 /machine:x64 /STACK:10000000 /INCREMENTAL:NO /subsystem:console lib\LLVMSPIRVLib.lib lib\LLVMAnalysis.lib lib\LLVMBitReader.lib lib\LLVMBitWriter.lib lib\LLVMCore.lib lib\LLVMSupport.lib lib\LLVMTransformUtils.lib -LC:/Software/DEVELO~1/projects/spirv-tools/build/x64/lib -lSPIRV-Tools-opt -lSPIRV-Tools -lSPIRV-Tools-link lib\LLVMCodeGen.lib lib\LLVMBitWriter.lib lib\LLVMScalarOpts.lib lib\LLVMAggressiveInstCombine.lib lib\LLVMInstCombine.lib lib\LLVMTarget.lib lib\LLVMIRReader.lib lib\LLVMAsmParser.lib lib\LLVMLinker.lib lib\LLVMTransformUtils.lib lib\LLVMAnalysis.lib lib\LLVMProfileData.lib lib\LLVMDebugInfoDWARF.lib lib\LLVMObject.lib lib\LLVMBitReader.lib lib\LLVMCore.lib lib\LLVMRemarks.lib lib\LLVMBitstreamReader.lib lib\LLVMMCParser.lib lib\LLVMMC.lib lib\LLVMDebugInfoCodeView.lib lib\LLVMTextAPI.lib lib\LLVMBinaryFormat.lib lib\LLVMSupport.lib lib\LLVMDemangle.lib psapi.lib shell32.lib ole32.lib uuid.lib advapi32.lib delayimp.lib -delayload:shell32.dll -delayload:ole32.dll kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
LINK: command "C:\PROGRA~2\MICROS~3\2022\BUILDT~1\VC\Tools\MSVC\1431~1.311\bin\Hostx64\x64\link.exe /nologo projects\SPIRV-LLVM-Translator\tools\llvm-spirv\CMakeFiles\llvm-spirv.dir\llvm-spirv.cpp.obj projects\SPIRV-LLVM-Translator\tools\llvm-spirv\CMakeFiles\llvm-spirv.dir\__\__\__\__\resources\windows_version_resource.rc.res /out:bin\llvm-spirv.exe /implib:lib\llvm-spirv.lib /pdb:bin\llvm-spirv.pdb /version:0.0 /machine:x64 /STACK:10000000 /INCREMENTAL:NO /subsystem:console lib\LLVMSPIRVLib.lib lib\LLVMAnalysis.lib lib\LLVMBitReader.lib lib\LLVMBitWriter.lib lib\LLVMCore.lib lib\LLVMSupport.lib lib\LLVMTransformUtils.lib -LC:/Software/DEVELO~1/projects/spirv-tools/build/x64/lib -lSPIRV-Tools-opt -lSPIRV-Tools -lSPIRV-Tools-link lib\LLVMCodeGen.lib lib\LLVMBitWriter.lib lib\LLVMScalarOpts.lib lib\LLVMAggressiveInstCombine.lib lib\LLVMInstCombine.lib lib\LLVMTarget.lib lib\LLVMIRReader.lib lib\LLVMAsmParser.lib lib\LLVMLinker.lib lib\LLVMTransformUtils.lib lib\LLVMAnalysis.lib lib\LLVMProfileData.lib lib\LLVMDebugInfoDWARF.lib lib\LLVMObject.lib lib\LLVMBitReader.lib lib\LLVMCore.lib lib\LLVMRemarks.lib lib\LLVMBitstreamReader.lib lib\LLVMMCParser.lib lib\LLVMMC.lib lib\LLVMDebugInfoCodeView.lib lib\LLVMTextAPI.lib lib\LLVMBinaryFormat.lib lib\LLVMSupport.lib lib\LLVMDemangle.lib psapi.lib shell32.lib ole32.lib uuid.lib advapi32.lib delayimp.lib -delayload:shell32.dll -delayload:ole32.dll kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:bin\llvm-spirv.exe.manifest" failed (exit code 1120) with the following output:
LINK : warning LNK4044: unrecognized option '/LC:/Software/DEVELO~1/projects/spirv-tools/build/x64/lib'; ignored
LINK : warning LNK4044: unrecognized option '/lSPIRV-Tools-opt'; ignored
LINK : warning LNK4044: unrecognized option '/lSPIRV-Tools'; ignored
LINK : warning LNK4044: unrecognized option '/lSPIRV-Tools-link'; ignored
llvm-spirv.cpp.obj : error LNK2019: unresolved external symbol "public: __cdecl spvtools::SpirvTools::SpirvTools(enum spv_target_env)" (??0SpirvTools@spvtools@@QEAA@W4spv_target_env@@@Z) referenced in function "int __cdecl convertLLVMToSPIRV(class SPIRV::TranslatorOpts const &)" (?convertLLVMToSPIRV@@YAHAEBVTranslatorOpts@SPIRV@@@Z)
llvm-spirv.cpp.obj : error LNK2019: unresolved external symbol "public: __cdecl spvtools::SpirvTools::~SpirvTools(void)" (??1SpirvTools@spvtools@@QEAA@XZ) referenced in function "int __cdecl convertLLVMToSPIRV(class SPIRV::TranslatorOpts const &)" (?convertLLVMToSPIRV@@YAHAEBVTranslatorOpts@SPIRV@@@Z)
llvm-spirv.cpp.obj : error LNK2019: unresolved external symbol "public: void __cdecl spvtools::SpirvTools::SetMessageConsumer(class std::function)" (?SetMessageConsumer@SpirvTools@spvtools@@QEAAXV?$function@$$A6AXW4spv_message_level_t@@PEBDAEBUspv_position_t@@1@Z@std@@@Z) referenced in function "int __cdecl convertLLVMToSPIRV(class SPIRV::TranslatorOpts const &)" (?convertLLVMToSPIRV@@YAHAEBVTranslatorOpts@SPIRV@@@Z)
llvm-spirv.cpp.obj : error LNK2019: unresolved external symbol "public: bool __cdecl spvtools::SpirvTools::Disassemble(unsigned int const *,unsigned __int64,class std::basic_string,class std::allocator > *,unsigned int)const " (?Disassemble@SpirvTools@spvtools@@QEBA_NPEBI_KPEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@Z) referenced in function "int __cdecl convertLLVMToSPIRV(class SPIRV::TranslatorOpts const &)" (?convertLLVMToSPIRV@@YAHAEBVTranslatorOpts@SPIRV@@@Z)
bin\llvm-spirv.exe : fatal error LNK1120: 4 unresolved externals
ninja: build stopped: subcommand failed.
````

Contributor guide

Open the contributing guide

Research direction

Reproduce the `ninja projects/SPIRV-LLVM-Translator/install` build using the reported CMake configuration and Windows MSVC environment. Start with the generated link command for `projects/SPIRV-LLVM-Translator/tools/llvm-spirv` and the SPIR-V Tools library arguments. Done means the `llvm-spirv.exe` link completes without unresolved SPIR-V Tools symbols.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.