diff --git a/CHANGELOG.md b/CHANGELOG.md index 0615b18f2a..2f9c4a7684 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,9 @@ Fixed a CMake bug that caused an MPI linking error for our C++ examples in some Fixed a bug in `ARKodeSPRKTable_Create` where the coefficient arrays where not allocated. +Fix bug on LLP64 platforms (like Windows 64-bit) where `KLU_INDEXTYPE` could be +32 bits wide even if `SUNDIALS_INT64_T` is defined. + ## Changes to SUNDIALS in release v7.0.0 ### Major Feature diff --git a/cmake/tpl/FindKLU.cmake b/cmake/tpl/FindKLU.cmake index 96b9d7343b..a3d817d037 100644 --- a/cmake/tpl/FindKLU.cmake +++ b/cmake/tpl/FindKLU.cmake @@ -46,7 +46,7 @@ if (NOT (KLU_INCLUDE_DIR OR KLU_LIBRARY_DIR OR KLU_LIBRARY)) endif() # Set library prefixes for Windows -if(WIN32) +if(MSVC OR ("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC")) set(CMAKE_FIND_LIBRARY_PREFIXES lib ${CMAKE_FIND_LIBRARY_PREFIXES}) set(CMAKE_FIND_LIBRARY_SUFFIXES d.lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) elseif(APPLE) @@ -95,7 +95,7 @@ endif () if (NOT SUITESPARSECONFIG_LIBRARY) set(SUITESPARSECONFIG_LIBRARY_NAME suitesparseconfig) # NOTE: no prefix for this library on windows - if(WIN32 AND NOT MSYS) + if(MSVC OR ("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC")) set(CMAKE_FIND_LIBRARY_PREFIXES "") endif() find_library( SUITESPARSECONFIG_LIBRARY ${SUITESPARSECONFIG_LIBRARY_NAME} ${KLU_LIBRARY_DIR} NO_DEFAULT_PATH) diff --git a/doc/shared/RecentChanges.rst b/doc/shared/RecentChanges.rst index d6d4f2d78a..a86448f38d 100644 --- a/doc/shared/RecentChanges.rst +++ b/doc/shared/RecentChanges.rst @@ -69,3 +69,6 @@ Fixed a CMake bug that caused an MPI linking error for our C++ examples in some Fixed a bug in :c:func:`ARKodeSPRKTable_Create` where the coefficient arrays where not allocated. + +Fix bug on LLP64 platforms (like Windows 64-bit) where ``KLU_INDEXTYPE`` could be +32 bits wide even if ``SUNDIALS_INT64_T`` is defined. diff --git a/src/sunlinsol/klu/sunlinsol_klu.c b/src/sunlinsol/klu/sunlinsol_klu.c index cbdaa54135..568dc1d549 100644 --- a/src/sunlinsol/klu/sunlinsol_klu.c +++ b/src/sunlinsol/klu/sunlinsol_klu.c @@ -16,6 +16,7 @@ * the SUNLINSOL package. * -----------------------------------------------------------------*/ +#include #include #include #include @@ -49,7 +50,7 @@ */ #if defined(SUNDIALS_INT64_T) -#define KLU_INDEXTYPE long int +#define KLU_INDEXTYPE int64_t #else #define KLU_INDEXTYPE int #endif