ginkgo-project / ginkgo

Numerical linear algebra software package
https://ginkgo-project.github.io/
BSD 3-Clause "New" or "Revised" License
398 stars 87 forks source link

Unable to build on Windows #1675

Open jrobcary opened 1 week ago

jrobcary commented 1 week ago

I am trying to build windows static. I configure with

'/winsame/cary/dev3/contrib-llvm17_vs2022/cmake-3.26.4-ser/bin/cmake.exe' \ -DCMAKE_INSTALL_PREFIX:PATH=D:/winsame/cary/dev3/contrib-llvm17_vs2022/ginkgo-1.8.0-ser \ -DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_COLOR_MAKEFILE:BOOL=FALSE \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \ -DCMAKE_C_COMPILER:FILEPATH='C:/Program Files/LLVM17/bin/clang-cl.exe' \ -DCMAKE_CXX_COMPILER:FILEPATH='C:/Program Files/LLVM17/bin/clang-cl.exe' \ -DCMAKE_C_FLAGS:STRING='/W3 -Wno-implicit-function-declaration' \ -DCMAKE_CXX_FLAGS:STRING='/W3 /GR /EHsc /Zc:__cplusplus /D_HAS_AUTO_PTR_ETC /bigobj -fms-compatibility-version=19 -Wno-register -Wno-implicit-function-declaration -Wno-microsoft-include' \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_CUDA_COMPILER:FILEPATH='C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/bin/nvcc.exe' \ -DCMAKE_CUDA_ARCHITECTURES:STRING='61;70;80' \ -DGINKGO_BUILD_HIP:BOOL=OFF \ -DGINKGO_BUILD_OMP:BOOL=OFF \ -DGINKGO_BUILD_MPI:BOOL=OFF \ -G 'NMake Makefiles JOM' D:/winsame/cary/xsd3/builds/ginkgo-1.8.0

But when I build (with jom), it dies at


LINK: command "C:\PROGRA~1\LLVM17\bin\lld-link.exe @CMakeFiles\mixed-spmv.dir\objects1.rsp /out:mixed-spmv.exe /implib:mixed-spmv.lib /pdb:D:\winsame\cary\xsd3\builds\ginkgo-1.8.0\ser\examples\mixed-spmv\mixed-spmv.pdb /version:0.0 /machine:x64 /INCREMENTAL:NO /subsystem:console -LIBPATH:C:\PROGRA~1\NVIDIA~2\CUDA\v11.8\lib\x64 ..\..\lib\ginkgo.lib ..\..\lib\ginkgo_omp.lib ..\..\lib\ginkgo_cuda.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64\cudart.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64\cublas.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64\cublasLt.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64\cusparse.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64\curand.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64\cufft.lib ..\..\lib\ginkgo_reference.lib ..\..\lib\ginkgo_hip.lib ..\..\lib\ginkgo_dpcpp.lib ..\..\lib\ginkgo_device.lib cudadevrt.lib cudart_static.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:mixed-spmv.exe.manifest" failed (exit code 1) with the following output:
lld-link: error: undefined symbol: void __cdecl gko::kernels::reference::dense::add_scaled_identity<float, float>(class std::shared_ptr<class gko::ReferenceExecutor const>, class gko::matrix::Dense<float> const *, class gko::matrix::Dense<float> const *, class gko::matrix::Dense<float> *)^M
>>> referenced by ginkgo.lib(dense.cpp.obj):(public: virtual void __cdecl gko::detail::RegisteredOperation<class `<auto> __cdecl gko::matrix::dense::`anonymous namespace'::make_add_scaled_identity<class gko::matrix::Dense<float> const *&, class gko::matrix::Dense<float> const *&, class gko::matrix::Dense<float> *&>(class matrix::dense::Dense<float> const *&, class matrix::dense::Dense<float> const *&, class matrix::dense::<auto> *&)'::`1'::<lambda_1>>::run(class std::shared_ptr<class gko::ReferenceExecutor const>) const)^M
...
upsj commented 1 week ago

Just making sure, can you reproduce this when using MSBuild (default) or Ninja (-GNinja) as the CMake generator? We don't yet test compilation with clang-cl on Windows, so this might just be an issue that slipped through the cracks