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

ginkgo 1.7.0: Compilation with Visual Studio 2022 and C++20 fails `'uncaught_exception': is not a member of 'std'` #1495

Closed SpaceIm closed 9 months ago

SpaceIm commented 9 months ago

ginkgo 1.7.0 fails to compile with Visual Studio 2022 and C++20

Build log:

-- Using Conan toolchain: C:/Users/spaceim/.conan2/p/b/ginkgab6631353a2b8/b/build/Release/generators/conan_toolchain.cmake
-- Conan toolchain: C++ Standard 20 with extensions OFF
-- Conan toolchain: Setting BUILD_SHARED_LIBS = ON
-- The C compiler identification is MSVC 19.38.33130.0
-- The CXX compiler identification is MSVC 19.38.33130.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.38.33130/bin/Hostx64/x64/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/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.38.33130/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Could NOT find PAPI (missing: PAPI_LIBRARY PAPI_INCLUDE_DIR sde) (Required is at least version "7.0.1.0")
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - not found
-- Found Threads: TRUE
-- Performing Test Ginkgo_C_COVERAGE_SUPPORTED
-- Performing Test Ginkgo_C_COVERAGE_SUPPORTED - Failed
-- Performing Test Ginkgo_C_TSAN_SUPPORTED
-- Performing Test Ginkgo_C_TSAN_SUPPORTED - Failed
-- Performing Test Ginkgo_C_ASAN_SUPPORTED
-- Performing Test Ginkgo_C_ASAN_SUPPORTED - Failed
-- Performing Test Ginkgo_C_LSAN_SUPPORTED
-- Performing Test Ginkgo_C_LSAN_SUPPORTED - Failed
-- Performing Test Ginkgo_C_UBSAN_SUPPORTED
-- Performing Test Ginkgo_C_UBSAN_SUPPORTED - Failed
-- Performing Test Ginkgo_CXX_COVERAGE_SUPPORTED
-- Performing Test Ginkgo_CXX_COVERAGE_SUPPORTED - Failed
-- Performing Test Ginkgo_CXX_TSAN_SUPPORTED
-- Performing Test Ginkgo_CXX_TSAN_SUPPORTED - Failed
-- Performing Test Ginkgo_CXX_ASAN_SUPPORTED
-- Performing Test Ginkgo_CXX_ASAN_SUPPORTED - Failed
-- Performing Test Ginkgo_CXX_LSAN_SUPPORTED
-- Performing Test Ginkgo_CXX_LSAN_SUPPORTED - Failed
-- Performing Test Ginkgo_CXX_UBSAN_SUPPORTED
-- Performing Test Ginkgo_CXX_UBSAN_SUPPORTED - Failed
-- Performing Test Ginkgo_HIP_COVERAGE_SUPPORTED
-- Performing Test Ginkgo_HIP_COVERAGE_SUPPORTED - Failed
-- Performing Test Ginkgo_HIP_TSAN_SUPPORTED
-- Performing Test Ginkgo_HIP_TSAN_SUPPORTED - Failed
-- Performing Test Ginkgo_HIP_ASAN_SUPPORTED
-- Performing Test Ginkgo_HIP_ASAN_SUPPORTED - Failed
-- Performing Test Ginkgo_HIP_LSAN_SUPPORTED
-- Performing Test Ginkgo_HIP_LSAN_SUPPORTED - Failed
-- Performing Test Ginkgo_HIP_UBSAN_SUPPORTED
-- Performing Test Ginkgo_HIP_UBSAN_SUPPORTED - Failed
-- Looking for C++ include cxxabi.h
-- Looking for C++ include cxxabi.h - not found
-- Could NOT find VTune (missing: VTune_EXECUTABLE VTune_LIBRARY VTune_INCLUDE_DIR)
-- Could NOT find METIS (missing: METIS_LIBRARY METIS_INCLUDE_DIR)
fatal: not a git repository (or any of the parent directories): .git
-- Ginkgo is not in a git repository, so no git hook was installed
--
---------------------------------------------------------------------------------------------------------
--
--    Summary of Configuration for Ginkgo (version 1.7.0 with tag master)
--
--    Ginkgo configuration:
--        CMAKE_BUILD_TYPE:                           Release
--        BUILD_SHARED_LIBS:                          ON
--        CMAKE_INSTALL_PREFIX:                       C:/Users/spaceim/.conan2/p/b/ginkgab6631353a2b8/p
--        PROJECT_SOURCE_DIR:                         C:/Users/spaceim/.conan2/p/b/ginkgab6631353a2b8/b/src
--        PROJECT_BINARY_DIR:                         C:/Users/spaceim/.conan2/p/b/ginkgab6631353a2b8/b/build/Release
--        CMAKE_CXX_COMPILER:                         MSVC 19.38.33130.0 on platform Windows AMD64
--                                                    C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.38.33130/bin/Hostx64/x64/cl.exe
--    User configuration:
--      Enabled modules:
--        GINKGO_BUILD_OMP:                           False
--        GINKGO_BUILD_MPI:                           OFF
--        GINKGO_BUILD_REFERENCE:                     ON
--        GINKGO_BUILD_CUDA:                          False
--        GINKGO_BUILD_HIP:                           OFF
--        GINKGO_BUILD_SYCL:                          OFF
--      Enabled features:
--        GINKGO_MIXED_PRECISION:                     OFF
--        GINKGO_HAVE_GPU_AWARE_MPI:                  OFF
--      Tests, benchmarks and examples:
--        GINKGO_BUILD_TESTS:                         OFF
--        GINKGO_FAST_TESTS:                          OFF
--        GINKGO_BUILD_EXAMPLES:                      OFF
--        GINKGO_EXTLIB_EXAMPLE:
--        GINKGO_BUILD_BENCHMARKS:                    OFF
--        GINKGO_BENCHMARK_ENABLE_TUNING:             OFF
--      Documentation:
--        GINKGO_BUILD_DOC:                           OFF
--        GINKGO_VERBOSE_LEVEL:                       1
--
---------------------------------------------------------------------------------------------------------
--
--      Developer Tools:
--        GINKGO_DEVEL_TOOLS:                         OFF
--        GINKGO_WITH_CLANG_TIDY:                     OFF
--        GINKGO_WITH_IWYU:                           OFF
--        GINKGO_CHECK_CIRCULAR_DEPS:                 OFF
--        GINKGO_WITH_CCACHE:                         ON
---------------------------------------------------------------------------------------------------------
--
--      Components:
--        GINKGO_BUILD_PAPI_SDE:                      OFF
--        GINKGO_BUILD_HWLOC:                         OFF
--
--  Detailed information (More compiler flags, module configuration) can be found in detailed.log
--
--
--  Now, run  cmake --build .  to compile Ginkgo!
--
---------------------------------------------------------------------------------------------------------

-- Configuring done (45.1s)
-- Generating done (1.3s)
CMake Warning:
  Manually-specified variables were not used by the project:

    CMAKE_POLICY_DEFAULT_CMP0091

-- Build files have been written to: C:/Users/spaceim/.conan2/p/b/ginkgab6631353a2b8/b/build/Release

ginkgo/1.7.0: Running CMake.build()
ginkgo/1.7.0: RUN: cmake --build "C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\build\Release" -- -j8
conanvcvars.bat: Activating environment Visual Studio 17 - amd64 - vcvars_ver=14.3
[vcvarsall.bat] Environment initialized for: 'x64'
[3/161] Building CXX object devices\CMakeFiles\ginkgo_device.dir\machine_topology.cpp.obj
FAILED: devices/CMakeFiles/ginkgo_device.dir/machine_topology.cpp.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\cl.exe  /nologo /TP -Dginkgo_device_EXPORTS -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\build\Release\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src /DWIN32 /D_WINDOWS /GR /EHsc /bigobj /O2 /Ob2 /DNDEBUG -std:c++20 -MD /showIncludes /Fodevices\CMakeFiles\ginkgo_device.dir\machine_topology.cpp.obj /Fddevices\CMakeFiles\ginkgo_device.dir\ /FS -c C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\devices\machine_topology.cpp
C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include\ginkgo/core/base/std_extensions.hpp(79): error C2039: 'uncaught_exception': is not a member of 'std'
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\complex(60): note: see declaration of 'std'
[4/161] Building CXX object devices\hip\CMakeFiles\ginkgo_hip_device.dir\executor.cpp.obj
FAILED: devices/hip/CMakeFiles/ginkgo_hip_device.dir/executor.cpp.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\cl.exe  /nologo /TP  -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\build\Release\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src /DWIN32 /D_WINDOWS /GR /EHsc /bigobj /O2 /Ob2 /DNDEBUG -std:c++20 -MD /showIncludes /Fodevices\hip\CMakeFiles\ginkgo_hip_device.dir\executor.cpp.obj /Fddevices\hip\CMakeFiles\ginkgo_hip_device.dir\ /FS -c C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\devices\hip\executor.cpp
C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include\ginkgo/core/base/std_extensions.hpp(79): error C2039: 'uncaught_exception': is not a member of 'std'
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\complex(60): note: see declaration of 'std'
[5/161] Building CXX object devices\cuda\CMakeFiles\ginkgo_cuda_device.dir\executor.cpp.obj
FAILED: devices/cuda/CMakeFiles/ginkgo_cuda_device.dir/executor.cpp.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\cl.exe  /nologo /TP  -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\build\Release\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src /DWIN32 /D_WINDOWS /GR /EHsc /bigobj /O2 /Ob2 /DNDEBUG -std:c++20 -MD /showIncludes /Fodevices\cuda\CMakeFiles\ginkgo_cuda_device.dir\executor.cpp.obj /Fddevices\cuda\CMakeFiles\ginkgo_cuda_device.dir\ /FS -c C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\devices\cuda\executor.cpp
C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include\ginkgo/core/base/std_extensions.hpp(79): error C2039: 'uncaught_exception': is not a member of 'std'
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\complex(60): note: see declaration of 'std'
[6/161] Building CXX object devices\dpcpp\CMakeFiles\ginkgo_dpcpp_device.dir\executor.cpp.obj
FAILED: devices/dpcpp/CMakeFiles/ginkgo_dpcpp_device.dir/executor.cpp.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\cl.exe  /nologo /TP  -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\build\Release\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src /DWIN32 /D_WINDOWS /GR /EHsc /bigobj /O2 /Ob2 /DNDEBUG -std:c++20 -MD /showIncludes /Fodevices\dpcpp\CMakeFiles\ginkgo_dpcpp_device.dir\executor.cpp.obj /Fddevices\dpcpp\CMakeFiles\ginkgo_dpcpp_device.dir\ /FS -c C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\devices\dpcpp\executor.cpp
C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include\ginkgo/core/base/std_extensions.hpp(79): error C2039: 'uncaught_exception': is not a member of 'std'
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\complex(60): note: see declaration of 'std'
[7/161] Building CXX object devices\omp\CMakeFiles\ginkgo_omp_device.dir\executor.cpp.obj
FAILED: devices/omp/CMakeFiles/ginkgo_omp_device.dir/executor.cpp.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\cl.exe  /nologo /TP  -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\build\Release\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src /DWIN32 /D_WINDOWS /GR /EHsc /bigobj /O2 /Ob2 /DNDEBUG -std:c++20 -MD /showIncludes /Fodevices\omp\CMakeFiles\ginkgo_omp_device.dir\executor.cpp.obj /Fddevices\omp\CMakeFiles\ginkgo_omp_device.dir\ /FS -c C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\devices\omp\executor.cpp
C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include\ginkgo/core/base/std_extensions.hpp(79): error C2039: 'uncaught_exception': is not a member of 'std'
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\complex(60): note: see declaration of 'std'
[8/161] Building CXX object reference\CMakeFiles\ginkgo_reference.dir\base\batch_multi_vector_kernels.cpp.obj
FAILED: reference/CMakeFiles/ginkgo_reference.dir/base/batch_multi_vector_kernels.cpp.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\cl.exe  /nologo /TP -Dginkgo_reference_EXPORTS -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\build\Release\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src /DWIN32 /D_WINDOWS /GR /EHsc /bigobj /O2 /Ob2 /DNDEBUG -std:c++20 -MD /showIncludes /Foreference\CMakeFiles\ginkgo_reference.dir\base\batch_multi_vector_kernels.cpp.obj /Fdreference\CMakeFiles\ginkgo_reference.dir\ /FS -c C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\reference\base\batch_multi_vector_kernels.cpp
C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include\ginkgo/core/base/std_extensions.hpp(79): error C2039: 'uncaught_exception': is not a member of 'std'
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\functional(31): note: see declaration of 'std'
[9/161] Building CXX object reference\CMakeFiles\ginkgo_reference.dir\base\device_matrix_data_kernels.cpp.obj
FAILED: reference/CMakeFiles/ginkgo_reference.dir/base/device_matrix_data_kernels.cpp.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\cl.exe  /nologo /TP -Dginkgo_reference_EXPORTS -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\build\Release\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src /DWIN32 /D_WINDOWS /GR /EHsc /bigobj /O2 /Ob2 /DNDEBUG -std:c++20 -MD /showIncludes /Foreference\CMakeFiles\ginkgo_reference.dir\base\device_matrix_data_kernels.cpp.obj /Fdreference\CMakeFiles\ginkgo_reference.dir\ /FS -c C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\reference\base\device_matrix_data_kernels.cpp
C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include\ginkgo/core/base/std_extensions.hpp(79): error C2039: 'uncaught_exception': is not a member of 'std'
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\functional(31): note: see declaration of 'std'
[10/161] Building CXX object reference\CMakeFiles\ginkgo_reference.dir\base\index_set_kernels.cpp.obj
FAILED: reference/CMakeFiles/ginkgo_reference.dir/base/index_set_kernels.cpp.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\cl.exe  /nologo /TP -Dginkgo_reference_EXPORTS -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\build\Release\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include -IC:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src /DWIN32 /D_WINDOWS /GR /EHsc /bigobj /O2 /Ob2 /DNDEBUG -std:c++20 -MD /showIncludes /Foreference\CMakeFiles\ginkgo_reference.dir\base\index_set_kernels.cpp.obj /Fdreference\CMakeFiles\ginkgo_reference.dir\ /FS -c C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\reference\base\index_set_kernels.cpp
C:\Users\spaceim\.conan2\p\b\ginkgab6631353a2b8\b\src\include\ginkgo/core/base/std_extensions.hpp(79): error C2039: 'uncaught_exception': is not a member of 'std'
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\functional(31): note: see declaration of 'std'
ninja: build stopped: subcommand failed.
yhmtsai commented 9 months ago

Thanks for reporting the issue. It was also an issue when compiler use C++17 (deprecated warning ) or C++20 + (not a member). It's fixed in https://github.com/ginkgo-project/ginkgo/pull/1331, but MSVC does not update __cplusplus like the other compilers by default (see https://learn.microsoft.com/en-us/cpp/build/reference/zc-cplusplus?view=msvc-170), which is the reason for this issue. one quick fix on your side might work, add /Zc:__cplusplus to CMAKE_CXX_FLAGS.

SpaceIm commented 9 months ago

Actually I would expect something more robust in ginkgo source code instead of forcing users to pass /Zc:__cplusplus:

#if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
yhmtsai commented 9 months ago

Yes, it is exactly what I currently do. It will not be available in 1.7.0 release but will be in next release or later develop

SpaceIm commented 9 months ago

Ok thanks, I'll backport this fix in ginkgo 1.7.0 recipe in conancenter (we have 1.3.0, 1.4.0 & 1.7.0, this issue occurs only in 1.7.0).

yhmtsai commented 9 months ago

That will be great if you can also check whether this branch https://github.com/ginkgo-project/ginkgo/tree/msvc_lang work on your side without any additional flags. It should also solve the deprecated warning when using C++17 in MSVC.

yhmtsai commented 9 months ago

Thank you very much for handling the recipe in conancenter!

SpaceIm commented 9 months ago

Yes, it fixes this issue in 1.7.0

Though I hit another issue at the end of the build, during link of ginkgo DLL of 1.7.0:

[161/161] Linking CXX shared library lib\ginkgo.dll
FAILED: lib/ginkgo.dll lib/ginkgo.lib
cmd.exe /C "cmd.exe /C ""C:\Program Files\CMake\bin\cmake.exe" -E __create_def C:\Users\spaceim\.conan2\p\b\ginkg99344c4645a0a\b\build\Release\core\CMakeFiles\ginkgo.dir\.\exports.def C:\Users\spaceim\.conan2\p\b\ginkg99344c4645a0a\b\build\Release\core\CMakeFiles\ginkgo.dir\.\exports.def.objs && cd C:\Users\spaceim\.conan2\p\b\ginkg99344c4645a0a\b\build\Release" && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_dll --intdir=core\CMakeFiles\ginkgo.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests  -- C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\link.exe /nologo core\CMakeFiles\ginkgo.dir\base\array.cpp.obj core\CMakeFiles\ginkgo.dir\base\batch_multi_vector.cpp.obj core\CMakeFiles\ginkgo.dir\base\combination.cpp.obj core\CMakeFiles\ginkgo.dir\base\composition.cpp.obj core\CMakeFiles\ginkgo.dir\base\dense_cache.cpp.obj core\CMakeFiles\ginkgo.dir\base\device_matrix_data.cpp.obj core\CMakeFiles\ginkgo.dir\base\executor.cpp.obj core\CMakeFiles\ginkgo.dir\base\index_set.cpp.obj core\CMakeFiles\ginkgo.dir\base\memory.cpp.obj core\CMakeFiles\ginkgo.dir\base\mpi.cpp.obj core\CMakeFiles\ginkgo.dir\base\mtx_io.cpp.obj core\CMakeFiles\ginkgo.dir\base\perturbation.cpp.obj core\CMakeFiles\ginkgo.dir\base\timer.cpp.obj core\CMakeFiles\ginkgo.dir\base\version.cpp.obj core\CMakeFiles\ginkgo.dir\distributed\partition.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\cholesky.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\elimination_forest.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\factorization.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\ic.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\ilu.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\lu.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\par_ic.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\par_ict.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\par_ilu.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\par_ilut.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\symbolic.cpp.obj core\CMakeFiles\ginkgo.dir\log\batch_logger.cpp.obj core\CMakeFiles\ginkgo.dir\log\convergence.cpp.obj core\CMakeFiles\ginkgo.dir\log\logger.cpp.obj core\CMakeFiles\ginkgo.dir\log\performance_hint.cpp.obj core\CMakeFiles\ginkgo.dir\log\profiler_hook.cpp.obj core\CMakeFiles\ginkgo.dir\log\profiler_hook_summary.cpp.obj core\CMakeFiles\ginkgo.dir\log\profiler_hook_summary_writer.cpp.obj core\CMakeFiles\ginkgo.dir\log\tau.cpp.obj core\CMakeFiles\ginkgo.dir\log\vtune.cpp.obj core\CMakeFiles\ginkgo.dir\log\record.cpp.obj core\CMakeFiles\ginkgo.dir\log\stream.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\batch_dense.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\batch_ell.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\batch_identity.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\coo.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\csr.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\dense.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\diagonal.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\ell.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\fbcsr.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\fft.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\hybrid.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\identity.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\permutation.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\row_gatherer.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\scaled_permutation.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\sellp.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\sparsity_csr.cpp.obj core\CMakeFiles\ginkgo.dir\multigrid\pgm.cpp.obj core\CMakeFiles\ginkgo.dir\multigrid\fixed_coarsening.cpp.obj core\CMakeFiles\ginkgo.dir\preconditioner\isai.cpp.obj core\CMakeFiles\ginkgo.dir\preconditioner\jacobi.cpp.obj core\CMakeFiles\ginkgo.dir\reorder\amd.cpp.obj core\CMakeFiles\ginkgo.dir\reorder\mc64.cpp.obj core\CMakeFiles\ginkgo.dir\reorder\rcm.cpp.obj core\CMakeFiles\ginkgo.dir\reorder\scaled_reordered.cpp.obj core\CMakeFiles\ginkgo.dir\solver\batch_bicgstab.cpp.obj core\CMakeFiles\ginkgo.dir\solver\bicg.cpp.obj core\CMakeFiles\ginkgo.dir\solver\bicgstab.cpp.obj core\CMakeFiles\ginkgo.dir\solver\cb_gmres.cpp.obj core\CMakeFiles\ginkgo.dir\solver\cg.cpp.obj core\CMakeFiles\ginkgo.dir\solver\cgs.cpp.obj core\CMakeFiles\ginkgo.dir\solver\direct.cpp.obj core\CMakeFiles\ginkgo.dir\solver\fcg.cpp.obj core\CMakeFiles\ginkgo.dir\solver\gcr.cpp.obj core\CMakeFiles\ginkgo.dir\solver\gmres.cpp.obj core\CMakeFiles\ginkgo.dir\solver\idr.cpp.obj core\CMakeFiles\ginkgo.dir\solver\ir.cpp.obj core\CMakeFiles\ginkgo.dir\solver\lower_trs.cpp.obj core\CMakeFiles\ginkgo.dir\solver\multigrid.cpp.obj core\CMakeFiles\ginkgo.dir\solver\upper_trs.cpp.obj core\CMakeFiles\ginkgo.dir\stop\combined.cpp.obj core\CMakeFiles\ginkgo.dir\stop\criterion.cpp.obj core\CMakeFiles\ginkgo.dir\stop\iteration.cpp.obj core\CMakeFiles\ginkgo.dir\stop\residual_norm.cpp.obj core\CMakeFiles\ginkgo.dir\stop\time.cpp.obj core\CMakeFiles\ginkgo.dir\__\third_party\SuiteSparse\wrapper32.cpp.obj core\CMakeFiles\ginkgo.dir\__\third_party\SuiteSparse\wrapper64.cpp.obj  /out:lib\ginkgo.dll /implib:lib\ginkgo.lib /pdb:lib\ginkgo.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO  /DEF:core\CMakeFiles\ginkgo.dir\.\exports.def  lib\ginkgo_omp.lib  lib\ginkgo_cuda.lib  lib\ginkgo_reference.lib  lib\ginkgo_hip.lib  lib\ginkgo_dpcpp.lib  lib\ginkgo_device.lib  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~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\link.exe /nologo core\CMakeFiles\ginkgo.dir\base\array.cpp.obj core\CMakeFiles\ginkgo.dir\base\batch_multi_vector.cpp.obj core\CMakeFiles\ginkgo.dir\base\combination.cpp.obj core\CMakeFiles\ginkgo.dir\base\composition.cpp.obj core\CMakeFiles\ginkgo.dir\base\dense_cache.cpp.obj core\CMakeFiles\ginkgo.dir\base\device_matrix_data.cpp.obj core\CMakeFiles\ginkgo.dir\base\executor.cpp.obj core\CMakeFiles\ginkgo.dir\base\index_set.cpp.obj core\CMakeFiles\ginkgo.dir\base\memory.cpp.obj core\CMakeFiles\ginkgo.dir\base\mpi.cpp.obj core\CMakeFiles\ginkgo.dir\base\mtx_io.cpp.obj core\CMakeFiles\ginkgo.dir\base\perturbation.cpp.obj core\CMakeFiles\ginkgo.dir\base\timer.cpp.obj core\CMakeFiles\ginkgo.dir\base\version.cpp.obj core\CMakeFiles\ginkgo.dir\distributed\partition.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\cholesky.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\elimination_forest.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\factorization.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\ic.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\ilu.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\lu.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\par_ic.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\par_ict.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\par_ilu.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\par_ilut.cpp.obj core\CMakeFiles\ginkgo.dir\factorization\symbolic.cpp.obj core\CMakeFiles\ginkgo.dir\log\batch_logger.cpp.obj core\CMakeFiles\ginkgo.dir\log\convergence.cpp.obj core\CMakeFiles\ginkgo.dir\log\logger.cpp.obj core\CMakeFiles\ginkgo.dir\log\performance_hint.cpp.obj core\CMakeFiles\ginkgo.dir\log\profiler_hook.cpp.obj core\CMakeFiles\ginkgo.dir\log\profiler_hook_summary.cpp.obj core\CMakeFiles\ginkgo.dir\log\profiler_hook_summary_writer.cpp.obj core\CMakeFiles\ginkgo.dir\log\tau.cpp.obj core\CMakeFiles\ginkgo.dir\log\vtune.cpp.obj core\CMakeFiles\ginkgo.dir\log\record.cpp.obj core\CMakeFiles\ginkgo.dir\log\stream.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\batch_dense.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\batch_ell.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\batch_identity.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\coo.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\csr.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\dense.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\diagonal.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\ell.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\fbcsr.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\fft.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\hybrid.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\identity.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\permutation.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\row_gatherer.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\scaled_permutation.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\sellp.cpp.obj core\CMakeFiles\ginkgo.dir\matrix\sparsity_csr.cpp.obj core\CMakeFiles\ginkgo.dir\multigrid\pgm.cpp.obj core\CMakeFiles\ginkgo.dir\multigrid\fixed_coarsening.cpp.obj core\CMakeFiles\ginkgo.dir\preconditioner\isai.cpp.obj core\CMakeFiles\ginkgo.dir\preconditioner\jacobi.cpp.obj core\CMakeFiles\ginkgo.dir\reorder\amd.cpp.obj core\CMakeFiles\ginkgo.dir\reorder\mc64.cpp.obj core\CMakeFiles\ginkgo.dir\reorder\rcm.cpp.obj core\CMakeFiles\ginkgo.dir\reorder\scaled_reordered.cpp.obj core\CMakeFiles\ginkgo.dir\solver\batch_bicgstab.cpp.obj core\CMakeFiles\ginkgo.dir\solver\bicg.cpp.obj core\CMakeFiles\ginkgo.dir\solver\bicgstab.cpp.obj core\CMakeFiles\ginkgo.dir\solver\cb_gmres.cpp.obj core\CMakeFiles\ginkgo.dir\solver\cg.cpp.obj core\CMakeFiles\ginkgo.dir\solver\cgs.cpp.obj core\CMakeFiles\ginkgo.dir\solver\direct.cpp.obj core\CMakeFiles\ginkgo.dir\solver\fcg.cpp.obj core\CMakeFiles\ginkgo.dir\solver\gcr.cpp.obj core\CMakeFiles\ginkgo.dir\solver\gmres.cpp.obj core\CMakeFiles\ginkgo.dir\solver\idr.cpp.obj core\CMakeFiles\ginkgo.dir\solver\ir.cpp.obj core\CMakeFiles\ginkgo.dir\solver\lower_trs.cpp.obj core\CMakeFiles\ginkgo.dir\solver\multigrid.cpp.obj core\CMakeFiles\ginkgo.dir\solver\upper_trs.cpp.obj core\CMakeFiles\ginkgo.dir\stop\combined.cpp.obj core\CMakeFiles\ginkgo.dir\stop\criterion.cpp.obj core\CMakeFiles\ginkgo.dir\stop\iteration.cpp.obj core\CMakeFiles\ginkgo.dir\stop\residual_norm.cpp.obj core\CMakeFiles\ginkgo.dir\stop\time.cpp.obj core\CMakeFiles\ginkgo.dir\__\third_party\SuiteSparse\wrapper32.cpp.obj core\CMakeFiles\ginkgo.dir\__\third_party\SuiteSparse\wrapper64.cpp.obj /out:lib\ginkgo.dll /implib:lib\ginkgo.lib /pdb:lib\ginkgo.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO /DEF:core\CMakeFiles\ginkgo.dir\.\exports.def lib\ginkgo_omp.lib lib\ginkgo_cuda.lib lib\ginkgo_reference.lib lib\ginkgo_hip.lib lib\ginkgo_dpcpp.lib lib\ginkgo_device.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 1189) with the following output:
LINK : fatal error LNK1189: library limit of 65535 objects exceeded
ninja: build stopped: subcommand failed.

I guess it's a consequence of CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS instead of proper fine-grained export of public symbols with __declspec(dllexport).

upsj commented 9 months ago

This is a long-standing issue we can't truly fix without an interface break/major release. See #715. This is Ninja-related, see https://github.com/microsoft/vcpkg/pull/34280#discussion_r1351515284 In vcpkg, we simply disable shared builds

SpaceIm commented 9 months ago

Ok I see. I've proposed a workaround in conancenter recipe: force MSBuild if msvc & shared for ginkgo>=1.5.0 if generator asked by user is Ninja: https://github.com/conan-io/conan-center-index/pull/21626/commits/cda67433a14a6a8911d442ed54916a7e8224f4db

upsj commented 9 months ago

Fixed by #1496, the rest is a packaging fix