[go: up one dir, main page]

Build failure on windows with LLVM

Summary

The build fails on windows with missing symbols at the link stage.

Environment

  • Operating System : Windows
  • Architecture : x64
  • Eigen Version : master
  • Compiler Version : clang-cl and flang 22 (git main)
  • Compile Flags : cmake release build type
  • Vector Extension : cpu supports avx2

Steps to reproduce

  1. Clone the eigen repo.
  2. Build LLVM from source (since flang isn't distributed in the windows release) with flang enabled.
  3. configure with cmake. set C and CXX compiler to clang-cl, Fortran compiler to flang. Build type to release, and build_shared_libs to on.(not sure if it only happens with shared libs but that is what I ran)

What is the current bug behavior?

Doesn't link the eigen_lapack lib.

What is the expected correct behavior?

The build succeeds.

Warning Messages

[1/1] Linking CXX shared library lapack\eigen_lapack.dll
FAILED: [code=4294967295] lapack/eigen_lapack.dll lapack/eigen_lapack.lib
C:\WINDOWS\system32\cmd.exe /C "cd . && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_dll --msvc-ver=1950 --intdir=lapack\CMakeFiles\eigen_lapack.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\rc.exe --mt=E:\LLVM\bin\llvm-mt.exe --manifests  -- E:\LLVM\bin\lld-link.exe /nologo lapack\CMakeFiles\eigen_lapack.dir\dsecnd_INT_CPU_TIME.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\second_INT_CPU_TIME.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\single.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\double.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\complex_single.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\complex_double.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\__\blas\xerbla.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\slarft.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlarft.f.obj lapack\CMakeFiles\eigen_lapack.dir\clarft.f.obj lapack\CMakeFiles\eigen_lapack.dir\zlarft.f.obj lapack\CMakeFiles\eigen_lapack.dir\slarfb.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlarfb.f.obj lapack\CMakeFiles\eigen_lapack.dir\clarfb.f.obj lapack\CMakeFiles\eigen_lapack.dir\zlarfb.f.obj lapack\CMakeFiles\eigen_lapack.dir\slarfg.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlarfg.f.obj lapack\CMakeFiles\eigen_lapack.dir\clarfg.f.obj lapack\CMakeFiles\eigen_lapack.dir\zlarfg.f.obj lapack\CMakeFiles\eigen_lapack.dir\slarf.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlarf.f.obj lapack\CMakeFiles\eigen_lapack.dir\clarf.f.obj lapack\CMakeFiles\eigen_lapack.dir\zlarf.f.obj lapack\CMakeFiles\eigen_lapack.dir\sladiv.f.obj lapack\CMakeFiles\eigen_lapack.dir\dladiv.f.obj lapack\CMakeFiles\eigen_lapack.dir\cladiv.f.obj lapack\CMakeFiles\eigen_lapack.dir\zladiv.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilaslr.f.obj lapack\CMakeFiles\eigen_lapack.dir\iladlr.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilaclr.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilazlr.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilaslc.f.obj lapack\CMakeFiles\eigen_lapack.dir\iladlc.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilaclc.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilazlc.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlapy2.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlapy3.f.obj lapack\CMakeFiles\eigen_lapack.dir\slapy2.f.obj lapack\CMakeFiles\eigen_lapack.dir\slapy3.f.obj lapack\CMakeFiles\eigen_lapack.dir\clacgv.f.obj lapack\CMakeFiles\eigen_lapack.dir\zlacgv.f.obj lapack\CMakeFiles\eigen_lapack.dir\slamch.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlamch.f.obj  /out:lapack\eigen_lapack.dll /implib:lapack\eigen_lapack.lib /pdb:lapack\eigen_lapack.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO -LIBPATH:E:\LLVM\lib\clang\22\lib\windows   -LIBPATH:E:\LLVM\lib   -LIBPATH:E:\LLVM\lib\clang\22\lib\x86_64-pc-windows-msvc blas\eigen_blas.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
LINK: command "E:\LLVM\bin\lld-link.exe /nologo lapack\CMakeFiles\eigen_lapack.dir\dsecnd_INT_CPU_TIME.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\second_INT_CPU_TIME.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\single.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\double.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\complex_single.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\complex_double.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\__\blas\xerbla.cpp.obj lapack\CMakeFiles\eigen_lapack.dir\slarft.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlarft.f.obj lapack\CMakeFiles\eigen_lapack.dir\clarft.f.obj lapack\CMakeFiles\eigen_lapack.dir\zlarft.f.obj lapack\CMakeFiles\eigen_lapack.dir\slarfb.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlarfb.f.obj lapack\CMakeFiles\eigen_lapack.dir\clarfb.f.obj lapack\CMakeFiles\eigen_lapack.dir\zlarfb.f.obj lapack\CMakeFiles\eigen_lapack.dir\slarfg.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlarfg.f.obj lapack\CMakeFiles\eigen_lapack.dir\clarfg.f.obj lapack\CMakeFiles\eigen_lapack.dir\zlarfg.f.obj lapack\CMakeFiles\eigen_lapack.dir\slarf.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlarf.f.obj lapack\CMakeFiles\eigen_lapack.dir\clarf.f.obj lapack\CMakeFiles\eigen_lapack.dir\zlarf.f.obj lapack\CMakeFiles\eigen_lapack.dir\sladiv.f.obj lapack\CMakeFiles\eigen_lapack.dir\dladiv.f.obj lapack\CMakeFiles\eigen_lapack.dir\cladiv.f.obj lapack\CMakeFiles\eigen_lapack.dir\zladiv.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilaslr.f.obj lapack\CMakeFiles\eigen_lapack.dir\iladlr.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilaclr.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilazlr.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilaslc.f.obj lapack\CMakeFiles\eigen_lapack.dir\iladlc.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilaclc.f.obj lapack\CMakeFiles\eigen_lapack.dir\ilazlc.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlapy2.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlapy3.f.obj lapack\CMakeFiles\eigen_lapack.dir\slapy2.f.obj lapack\CMakeFiles\eigen_lapack.dir\slapy3.f.obj lapack\CMakeFiles\eigen_lapack.dir\clacgv.f.obj lapack\CMakeFiles\eigen_lapack.dir\zlacgv.f.obj lapack\CMakeFiles\eigen_lapack.dir\slamch.f.obj lapack\CMakeFiles\eigen_lapack.dir\dlamch.f.obj /out:lapack\eigen_lapack.dll /implib:lapack\eigen_lapack.lib /pdb:lapack\eigen_lapack.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO -LIBPATH:E:\LLVM\lib\clang\22\lib\windows -LIBPATH:E:\LLVM\lib -LIBPATH:E:\LLVM\lib\clang\22\lib\x86_64-pc-windows-msvc blas\eigen_blas.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST:EMBED,ID=2" failed (exit code 1) with the following output:
lld-link: error: undefined symbol: lsame_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarft.f.obj:(slarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarft.f.obj:(slarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarft.f.obj:(slarft_)
>>> referenced 85 more times

lld-link: error: undefined symbol: sgemv_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarft.f.obj:(slarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarft.f.obj:(slarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarft.f.obj:(slarft_)
>>> referenced 3 more times

lld-link: error: undefined symbol: strmv_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarft.f.obj:(slarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarft.f.obj:(slarft_)

lld-link: error: undefined symbol: dgemv_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarft.f.obj:(dlarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarft.f.obj:(dlarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarft.f.obj:(dlarft_)
>>> referenced 3 more times

lld-link: error: undefined symbol: dtrmv_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarft.f.obj:(dlarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarft.f.obj:(dlarft_)

lld-link: error: undefined symbol: cgemv_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarft.f.obj:(clarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarft.f.obj:(clarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarf.f.obj:(clarf_)
>>> referenced 1 more times

lld-link: error: undefined symbol: cgemm_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarft.f.obj:(clarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarft.f.obj:(clarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarfb.f.obj:(clarfb_)
>>> referenced 15 more times

lld-link: error: undefined symbol: ctrmv_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarft.f.obj:(clarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarft.f.obj:(clarft_)

lld-link: error: undefined symbol: zgemv_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\zlarft.f.obj:(zlarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\zlarft.f.obj:(zlarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\zlarf.f.obj:(zlarf_)
>>> referenced 1 more times

lld-link: error: undefined symbol: zgemm_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\zlarft.f.obj:(zlarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\zlarft.f.obj:(zlarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\zlarfb.f.obj:(zlarfb_)
>>> referenced 15 more times

lld-link: error: undefined symbol: ztrmv_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\zlarft.f.obj:(zlarft_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\zlarft.f.obj:(zlarft_)

lld-link: error: undefined symbol: scopy_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarfb.f.obj:(slarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarfb.f.obj:(slarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarfb.f.obj:(slarfb_)
>>> referenced 5 more times

lld-link: error: undefined symbol: strmm_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarfb.f.obj:(slarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarfb.f.obj:(slarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarfb.f.obj:(slarfb_)
>>> referenced 21 more times

lld-link: error: undefined symbol: sgemm_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarfb.f.obj:(slarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarfb.f.obj:(slarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\slarfb.f.obj:(slarfb_)
>>> referenced 13 more times

lld-link: error: undefined symbol: dcopy_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarfb.f.obj:(dlarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarfb.f.obj:(dlarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarfb.f.obj:(dlarfb_)
>>> referenced 5 more times

lld-link: error: undefined symbol: dtrmm_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarfb.f.obj:(dlarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarfb.f.obj:(dlarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarfb.f.obj:(dlarfb_)
>>> referenced 21 more times

lld-link: error: undefined symbol: dgemm_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarfb.f.obj:(dlarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarfb.f.obj:(dlarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\dlarfb.f.obj:(dlarfb_)
>>> referenced 13 more times

lld-link: error: undefined symbol: ccopy_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarfb.f.obj:(clarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarfb.f.obj:(clarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarfb.f.obj:(clarfb_)
>>> referenced 5 more times

lld-link: error: undefined symbol: ctrmm_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarfb.f.obj:(clarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarfb.f.obj:(clarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\clarfb.f.obj:(clarfb_)
>>> referenced 21 more times

lld-link: error: undefined symbol: zcopy_
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\zlarfb.f.obj:(zlarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\zlarfb.f.obj:(zlarfb_)
>>> referenced by lapack\CMakeFiles\eigen_lapack.dir\zlarfb.f.obj:(zlarfb_)
>>> referenced 5 more times

lld-link: error: too many errors emitted, stopping now (use /errorlimit:0 to see all errors)
ninja: build stopped: subcommand failed.
  • Have a plan to fix this issue.