diff --git a/mingw-w64-sundials/0001-sundials-link-errors.patch b/mingw-w64-sundials/0001-sundials-link-errors.patch index 4f75de573c48..4713e971a669 100644 --- a/mingw-w64-sundials/0001-sundials-link-errors.patch +++ b/mingw-w64-sundials/0001-sundials-link-errors.patch @@ -1,330 +1,41 @@ diff -Naur sundials-5.7.0.orig/cmake/SundialsBuildOptionsPost.cmake sundials-5.7.0/cmake/SundialsBuildOptionsPost.cmake --- sundials-5.7.0.orig/cmake/SundialsBuildOptionsPost.cmake 2021-01-29 15:14:52.000000000 -0600 -+++ sundials-5.7.0/cmake/SundialsBuildOptionsPost.cmake 2021-07-08 18:20:57.773489500 -0500 ++++ sundials-5.7.0/cmake/SundialsBuildOptionsPost.cmake 2021-07-12 14:56:16.412442500 -0500 @@ -204,3 +204,24 @@ DEPENDS_ON ENABLE_PETSC PETSC_FOUND ADVANCED) list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNNONLINSOL_PETSCSNES") + -+set(SUNDIALS_NVECTOR_F2C_TYPES) -+if(BUILD_NVECTOR_SERIAL) -+ list(APPEND SUNDIALS_NVECTOR_F2C_TYPES "serial") -+ set(SUNDIALS_NVECTOR_F2C_serial_SUFFIX "") -+endif() ++set (SUNDIALS_NVECTOR_F2C_TYPES) ++if (BUILD_NVECTOR_SERIAL) ++ list (APPEND SUNDIALS_NVECTOR_F2C_TYPES "serial") ++ set (SUNDIALS_NVECTOR_F2C_serial_SUFFIX "_serial") ++endif () + -+if(BUILD_NVECTOR_PARALLEL) -+ list(APPEND SUNDIALS_NVECTOR_F2C_TYPES "parallel") -+ set(SUNDIALS_NVECTOR_F2C_parallel_SUFFIX "_parallel") -+endif() ++if (BUILD_NVECTOR_PARALLEL) ++ list (APPEND SUNDIALS_NVECTOR_F2C_TYPES "parallel") ++ set (SUNDIALS_NVECTOR_F2C_parallel_SUFFIX "_parallel") ++endif () + -+if(BUILD_NVECTOR_OPENMP) -+ list(APPEND SUNDIALS_NVECTOR_F2C_TYPES "openmp") -+ set(SUNDIALS_NVECTOR_F2C_openmp_SUFFIX "_openmp") -+endif() ++if (BUILD_NVECTOR_OPENMP) ++ list (APPEND SUNDIALS_NVECTOR_F2C_TYPES "openmp") ++ set (SUNDIALS_NVECTOR_F2C_openmp_SUFFIX "_openmp") ++endif () + +if (BUILD_NVECTOR_PARALLEL) + list (APPEND SUNDIALS_NVECTOR_F2C_TYPES "pthreads") + set (SUNDIALS_NVECTOR_F2C_pthreads_SUFFIX "_pthreads") +endif () -diff -Naur sundials-5.7.0.orig/src/arkode/fcmix/CMakeLists.txt sundials-5.7.0/src/arkode/fcmix/CMakeLists.txt ---- sundials-5.7.0.orig/src/arkode/fcmix/CMakeLists.txt 2021-01-29 15:14:53.000000000 -0600 -+++ sundials-5.7.0/src/arkode/fcmix/CMakeLists.txt 2021-07-08 14:00:57.312960900 -0500 -@@ -38,35 +38,37 @@ - farksparsemass.c - ) - --sundials_add_library(sundials_farkode -- SOURCES -- ${farkode_SOURCES} -- OBJECT_LIBRARIES -- sundials_fnvecserial_obj -- sundials_fsunmatrixband_obj -- sundials_fsunmatrixdense_obj -- sundials_fsunmatrixsparse_obj -- sundials_fsunlinsolband_obj -- sundials_fsunlinsoldense_obj -- sundials_fsunlinsolspbcgs_obj -- sundials_fsunlinsolspfgmr_obj -- sundials_fsunlinsolspgmr_obj -- sundials_fsunlinsolsptfqmr_obj -- sundials_fsunlinsolpcg_obj -- sundials_fsunnonlinsolnewton_obj -- sundials_fsunnonlinsolfixedpoint_obj -- LINK_LIBRARIES -- PRIVATE sundials_arkode -- INCLUDE_DIRECTORIES -- PRIVATE ../ -- OUTPUT_NAME -- sundials_farkode -- VERSION -- ${arkodelib_VERSION} -- SOVERSION -- ${arkodelib_SOVERSION} -- STATIC_ONLY --) -+foreach (type ${SUNDIALS_NVECTOR_F2C_TYPES}) -+ sundials_add_library(sundials_farkode${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} -+ SOURCES -+ ${farkode_SOURCES} -+ OBJECT_LIBRARIES -+ sundials_fnvecserial_obj -+ sundials_fsunmatrixband_obj -+ sundials_fsunmatrixdense_obj -+ sundials_fsunmatrixsparse_obj -+ sundials_fsunlinsolband_obj -+ sundials_fsunlinsoldense_obj -+ sundials_fsunlinsolspbcgs${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolspfgmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolspgmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolsptfqmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolpcg${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunnonlinsolnewton_obj -+ sundials_fsunnonlinsolfixedpoint_obj -+ LINK_LIBRARIES -+ PRIVATE sundials_arkode -+ INCLUDE_DIRECTORIES -+ PRIVATE ../ -+ OUTPUT_NAME -+ sundials_farkode${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} -+ VERSION -+ ${arkodelib_VERSION} -+ SOVERSION -+ ${arkodelib_SOVERSION} -+ STATIC_ONLY -+ ) -+endforeach () - - # - message(STATUS "Added ARKODE FCMIX module") -diff -Naur sundials-5.7.0.orig/src/cvode/fcmix/CMakeLists.txt sundials-5.7.0/src/cvode/fcmix/CMakeLists.txt ---- sundials-5.7.0.orig/src/cvode/fcmix/CMakeLists.txt 2021-01-29 15:15:48.000000000 -0600 -+++ sundials-5.7.0/src/cvode/fcmix/CMakeLists.txt 2021-07-08 14:01:02.380827900 -0500 -@@ -31,35 +31,37 @@ - fcvsparse.c - ) - --sundials_add_library(sundials_fcvode -- SOURCES -- ${fcvode_SOURCES} -- OBJECT_LIBRARIES -- sundials_fnvecserial_obj -- sundials_fsunmatrixband_obj -- sundials_fsunmatrixdense_obj -- sundials_fsunmatrixsparse_obj -- sundials_fsunlinsolband_obj -- sundials_fsunlinsoldense_obj -- sundials_fsunlinsolspbcgs_obj -- sundials_fsunlinsolspfgmr_obj -- sundials_fsunlinsolspgmr_obj -- sundials_fsunlinsolsptfqmr_obj -- sundials_fsunlinsolpcg_obj -- sundials_fsunnonlinsolnewton_obj -- sundials_fsunnonlinsolfixedpoint_obj -- LINK_LIBRARIES -- PRIVATE sundials_cvode -- INCLUDE_DIRECTORIES -- PRIVATE ../ -- OUTPUT_NAME -- sundials_fcvode -- VERSION -- ${cvodelib_VERSION} -- SOVERSION -- ${cvodelib_SOVERSION} -- STATIC_ONLY --) -+foreach (type ${SUNDIALS_NVECTOR_F2C_TYPES}) -+ sundials_add_library(sundials_fcvode${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} -+ SOURCES -+ ${fcvode_SOURCES} -+ OBJECT_LIBRARIES -+ sundials_fnvecserial_obj -+ sundials_fsunmatrixband_obj -+ sundials_fsunmatrixdense_obj -+ sundials_fsunmatrixsparse_obj -+ sundials_fsunlinsolband_obj -+ sundials_fsunlinsoldense_obj -+ sundials_fsunlinsolspbcgs${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolspfgmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolspgmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolsptfqmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolpcg${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunnonlinsolnewton_obj -+ sundials_fsunnonlinsolfixedpoint_obj -+ LINK_LIBRARIES -+ PRIVATE sundials_cvode -+ INCLUDE_DIRECTORIES -+ PRIVATE ../ -+ OUTPUT_NAME -+ sundials_fcvode${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} -+ VERSION -+ ${cvodelib_VERSION} -+ SOVERSION -+ ${cvodelib_SOVERSION} -+ STATIC_ONLY -+ ) -+endforeach () - - # - message(STATUS "Added CVODE FCMIX module") -diff -Naur sundials-5.7.0.orig/src/ida/fcmix/CMakeLists.txt sundials-5.7.0/src/ida/fcmix/CMakeLists.txt ---- sundials-5.7.0.orig/src/ida/fcmix/CMakeLists.txt 2021-01-29 15:16:40.000000000 -0600 -+++ sundials-5.7.0/src/ida/fcmix/CMakeLists.txt 2021-07-08 14:01:13.185805900 -0500 -@@ -29,35 +29,37 @@ - fidasparse.c - ) - --sundials_add_library(sundials_fida -- SOURCES -- ${fida_SOURCES} -- OBJECT_LIBRARIES -- sundials_fnvecserial_obj -- sundials_fsunmatrixband_obj -- sundials_fsunmatrixdense_obj -- sundials_fsunmatrixsparse_obj -- sundials_fsunlinsolband_obj -- sundials_fsunlinsoldense_obj -- sundials_fsunlinsolspbcgs_obj -- sundials_fsunlinsolspfgmr_obj -- sundials_fsunlinsolspgmr_obj -- sundials_fsunlinsolsptfqmr_obj -- sundials_fsunlinsolpcg_obj -- sundials_fsunnonlinsolnewton_obj -- sundials_fsunnonlinsolfixedpoint_obj -- LINK_LIBRARIES -- PRIVATE sundials_ida -- INCLUDE_DIRECTORIES -- PRIVATE ../ -- OUTPUT_NAME -- sundials_fida -- VERSION -- ${idalib_VERSION} -- SOVERSION -- ${idalib_SOVERSION} -- STATIC_ONLY --) -+foreach (type ${SUNDIALS_NVECTOR_F2C_TYPES}) -+ sundials_add_library(sundials_fida${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} -+ SOURCES -+ ${fida_SOURCES} -+ OBJECT_LIBRARIES -+ sundials_fnvecserial_obj -+ sundials_fsunmatrixband_obj -+ sundials_fsunmatrixdense_obj -+ sundials_fsunmatrixsparse_obj -+ sundials_fsunlinsolband_obj -+ sundials_fsunlinsoldense_obj -+ sundials_fsunlinsolspbcgs${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolspfgmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolspgmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolsptfqmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolpcg${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunnonlinsolnewton_obj -+ sundials_fsunnonlinsolfixedpoint_obj -+ LINK_LIBRARIES -+ PRIVATE sundials_ida -+ INCLUDE_DIRECTORIES -+ PRIVATE ../ -+ OUTPUT_NAME -+ sundials_fida${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} -+ VERSION -+ ${idalib_VERSION} -+ SOVERSION -+ ${idalib_SOVERSION} -+ STATIC_ONLY -+ ) -+endforeach () - - # - message(STATUS "Added IDA FCMIX module") -diff -Naur sundials-5.7.0.orig/src/kinsol/fcmix/CMakeLists.txt sundials-5.7.0/src/kinsol/fcmix/CMakeLists.txt ---- sundials-5.7.0.orig/src/kinsol/fcmix/CMakeLists.txt 2021-01-29 15:17:27.000000000 -0600 -+++ sundials-5.7.0/src/kinsol/fcmix/CMakeLists.txt 2021-07-08 14:01:19.360682000 -0500 -@@ -27,35 +27,36 @@ - fkinsparse.c - ) - --sundials_add_library(sundials_fkinsol -- SOURCES -- ${fkinsol_SOURCES} -- OBJECT_LIBRARIES -- sundials_fnvecserial_obj -- sundials_fsunmatrixband_obj -- sundials_fsunmatrixdense_obj -- sundials_fsunmatrixsparse_obj -- sundials_fsunlinsolband_obj -- sundials_fsunlinsoldense_obj -- sundials_fsunlinsolspbcgs_obj -- sundials_fsunlinsolspfgmr_obj -- sundials_fsunlinsolspgmr_obj -- sundials_fsunlinsolsptfqmr_obj -- sundials_fsunlinsolpcg_obj -- sundials_fsunnonlinsolnewton_obj -- sundials_fsunnonlinsolfixedpoint_obj -- LINK_LIBRARIES -- PRIVATE sundials_kinsol -- INCLUDE_DIRECTORIES -- PRIVATE ../ -- OUTPUT_NAME -- sundials_fkinsol -- VERSION -- ${kinsollib_VERSION} -- SOVERSION -- ${kinsollib_SOVERSION} -- STATIC_ONLY --) -- -+foreach (type ${SUNDIALS_NVECTOR_F2C_TYPES}) -+ sundials_add_library(sundials_fkinsol${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} -+ SOURCES -+ ${fkinsol_SOURCES} -+ OBJECT_LIBRARIES -+ sundials_fnvecserial_obj -+ sundials_fsunmatrixband_obj -+ sundials_fsunmatrixdense_obj -+ sundials_fsunmatrixsparse_obj -+ sundials_fsunlinsolband_obj -+ sundials_fsunlinsoldense_obj -+ sundials_fsunlinsolspbcgs${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolspfgmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolspgmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolsptfqmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunlinsolpcg${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX}_obj -+ sundials_fsunnonlinsolnewton_obj -+ sundials_fsunnonlinsolfixedpoint_obj -+ LINK_LIBRARIES -+ PRIVATE sundials_kinsol -+ INCLUDE_DIRECTORIES -+ PRIVATE ../ -+ OUTPUT_NAME -+ sundials_fkinsol${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} -+ VERSION -+ ${kinsollib_VERSION} -+ SOVERSION -+ ${kinsollib_SOVERSION} -+ STATIC_ONLY -+ ) -+endforeach () - # - message(STATUS "Added KINSOL FCMIX module") diff -Naur sundials-5.7.0.orig/src/sunlinsol/pcg/CMakeLists.txt sundials-5.7.0/src/sunlinsol/pcg/CMakeLists.txt --- sundials-5.7.0.orig/src/sunlinsol/pcg/CMakeLists.txt 2021-01-29 15:14:53.000000000 -0600 -+++ sundials-5.7.0/src/sunlinsol/pcg/CMakeLists.txt 2021-07-08 14:01:40.077057100 -0500 -@@ -44,18 +44,20 @@ ++++ sundials-5.7.0/src/sunlinsol/pcg/CMakeLists.txt 2021-07-12 14:56:53.128858200 -0500 +@@ -55,8 +55,25 @@ + ${sunlinsollib_VERSION} + SOVERSION + ${sunlinsollib_SOVERSION} ++ STATIC_ONLY + ) - # If FCMIX is enabled, build and install the Fortran77 library - if(BUILD_FORTRAN77_INTERFACE) -- sundials_add_library(sundials_fsunlinsolpcg -- SOURCES -- fsunlinsol_pcg.c -- LINK_LIBRARIES -- PRIVATE sundials_sunlinsolpcg -- OUTPUT_NAME -- sundials_fsunlinsolpcg -- VERSION -- ${sunlinsollib_VERSION} -- SOVERSION -- ${sunlinsollib_SOVERSION} -- ) + foreach (type ${SUNDIALS_NVECTOR_F2C_TYPES}) + sundials_add_library(sundials_fsunlinsolpcg${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} + SOURCES @@ -337,30 +48,23 @@ diff -Naur sundials-5.7.0.orig/src/sunlinsol/pcg/CMakeLists.txt sundials-5.7.0/s + ${sunlinsollib_VERSION} + SOVERSION + ${sunlinsollib_SOVERSION} ++ SHARED_ONLY + ) + endforeach () - ++ # message(STATUS "Added SUNLINSOL_PCG F77 interface") + endif() diff -Naur sundials-5.7.0.orig/src/sunlinsol/spbcgs/CMakeLists.txt sundials-5.7.0/src/sunlinsol/spbcgs/CMakeLists.txt --- sundials-5.7.0.orig/src/sunlinsol/spbcgs/CMakeLists.txt 2021-01-29 15:14:53.000000000 -0600 -+++ sundials-5.7.0/src/sunlinsol/spbcgs/CMakeLists.txt 2021-07-08 14:01:44.238214000 -0500 -@@ -44,17 +44,19 @@ - - # If FCMIX is enabled, build and install the Fortran77 library - if(BUILD_FORTRAN77_INTERFACE) -- sundials_add_library(sundials_fsunlinsolspbcgs -- SOURCES -- fsunlinsol_spbcgs.c -- LINK_LIBRARIES -- PRIVATE sundials_sunlinsolspbcgs -- OUTPUT_NAME -- sundials_fsunlinsolspbcgs -- VERSION -- ${sunlinsollib_VERSION} -- SOVERSION -- ${sunlinsollib_SOVERSION} -- ) ++++ sundials-5.7.0/src/sunlinsol/spbcgs/CMakeLists.txt 2021-07-12 14:57:17.252858600 -0500 +@@ -55,6 +55,23 @@ + ${sunlinsollib_VERSION} + SOVERSION + ${sunlinsollib_SOVERSION} ++ STATIC_ONLY + ) ++ + foreach (type ${SUNDIALS_NVECTOR_F2C_TYPES}) + sundials_add_library(sundials_fsunlinsolspbcgs${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} + SOURCES @@ -373,29 +77,21 @@ diff -Naur sundials-5.7.0.orig/src/sunlinsol/spbcgs/CMakeLists.txt sundials-5.7. + ${sunlinsollib_VERSION} + SOVERSION + ${sunlinsollib_SOVERSION} ++ SHARED_ONLY + ) + endforeach () message(STATUS "Added SUNLINSOL_SPBCGS F77 interface") endif() diff -Naur sundials-5.7.0.orig/src/sunlinsol/spfgmr/CMakeLists.txt sundials-5.7.0/src/sunlinsol/spfgmr/CMakeLists.txt --- sundials-5.7.0.orig/src/sunlinsol/spfgmr/CMakeLists.txt 2021-01-29 15:14:53.000000000 -0600 -+++ sundials-5.7.0/src/sunlinsol/spfgmr/CMakeLists.txt 2021-07-08 14:01:47.890476900 -0500 -@@ -43,17 +43,19 @@ - - # If FCMIX is enabled, build and install the Fortran77 library - if(BUILD_FORTRAN77_INTERFACE) -- sundials_add_library(sundials_fsunlinsolspfgmr -- SOURCES -- fsunlinsol_spfgmr.c -- LINK_LIBRARIES -- PRIVATE sundials_sunlinsolspfgmr -- OUTPUT_NAME -- sundials_fsunlinsolspfgmr -- VERSION -- ${sunlinsollib_VERSION} -- SOVERSION -- ${sunlinsollib_SOVERSION} -- ) ++++ sundials-5.7.0/src/sunlinsol/spfgmr/CMakeLists.txt 2021-07-12 14:57:31.730571900 -0500 +@@ -54,6 +54,23 @@ + ${sunlinsollib_VERSION} + SOVERSION + ${sunlinsollib_SOVERSION} ++ STATIC_ONLY + ) ++ + foreach (type ${SUNDIALS_NVECTOR_F2C_TYPES}) + sundials_add_library(sundials_fsunlinsolspfgmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} + SOURCES @@ -408,29 +104,21 @@ diff -Naur sundials-5.7.0.orig/src/sunlinsol/spfgmr/CMakeLists.txt sundials-5.7. + ${sunlinsollib_VERSION} + SOVERSION + ${sunlinsollib_SOVERSION} ++ SHARED_ONLY + ) + endforeach () message(STATUS "Added SUNLINSOL_SPFGMR F77 interface") endif() diff -Naur sundials-5.7.0.orig/src/sunlinsol/spgmr/CMakeLists.txt sundials-5.7.0/src/sunlinsol/spgmr/CMakeLists.txt --- sundials-5.7.0.orig/src/sunlinsol/spgmr/CMakeLists.txt 2021-01-29 15:14:53.000000000 -0600 -+++ sundials-5.7.0/src/sunlinsol/spgmr/CMakeLists.txt 2021-07-08 14:01:52.372517400 -0500 -@@ -43,17 +43,19 @@ - - # If FCMIX is enabled, build and install the Fortran77 library - if(BUILD_FORTRAN77_INTERFACE) -- sundials_add_library(sundials_fsunlinsolspgmr -- SOURCES -- fsunlinsol_spgmr.c -- LINK_LIBRARIES -- PRIVATE sundials_sunlinsolspgmr -- OUTPUT_NAME -- sundials_fsunlinsolspgmr -- VERSION -- ${sunlinsollib_VERSION} -- SOVERSION -- ${sunlinsollib_SOVERSION} -- ) ++++ sundials-5.7.0/src/sunlinsol/spgmr/CMakeLists.txt 2021-07-12 14:57:43.994334100 -0500 +@@ -54,6 +54,23 @@ + ${sunlinsollib_VERSION} + SOVERSION + ${sunlinsollib_SOVERSION} ++ STATIC_ONLY + ) ++ + foreach (type ${SUNDIALS_NVECTOR_F2C_TYPES}) + sundials_add_library(sundials_fsunlinsolspgmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} + SOURCES @@ -443,29 +131,21 @@ diff -Naur sundials-5.7.0.orig/src/sunlinsol/spgmr/CMakeLists.txt sundials-5.7.0 + ${sunlinsollib_VERSION} + SOVERSION + ${sunlinsollib_SOVERSION} ++ SHARED_ONLY + ) + endforeach () message(STATUS "Added SUNLINSOL_SPGMR F77 interface") endif() diff -Naur sundials-5.7.0.orig/src/sunlinsol/sptfqmr/CMakeLists.txt sundials-5.7.0/src/sunlinsol/sptfqmr/CMakeLists.txt --- sundials-5.7.0.orig/src/sunlinsol/sptfqmr/CMakeLists.txt 2021-01-29 15:14:53.000000000 -0600 -+++ sundials-5.7.0/src/sunlinsol/sptfqmr/CMakeLists.txt 2021-07-08 14:01:56.528639300 -0500 -@@ -43,17 +43,19 @@ - - # If FCMIX is enabled, build and install the Fortran77 library - if(BUILD_FORTRAN77_INTERFACE) -- sundials_add_library(sundials_fsunlinsolsptfqmr -- SOURCES -- fsunlinsol_sptfqmr.c -- LINK_LIBRARIES -- PRIVATE sundials_sunlinsolsptfqmr -- OUTPUT_NAME -- sundials_fsunlinsolsptfqmr -- VERSION -- ${sunlinsollib_VERSION} -- SOVERSION -- ${sunlinsollib_SOVERSION} -- ) ++++ sundials-5.7.0/src/sunlinsol/sptfqmr/CMakeLists.txt 2021-07-12 14:57:56.830062600 -0500 +@@ -54,6 +54,23 @@ + ${sunlinsollib_VERSION} + SOVERSION + ${sunlinsollib_SOVERSION} ++ STATIC_ONLY + ) ++ + foreach (type ${SUNDIALS_NVECTOR_F2C_TYPES}) + sundials_add_library(sundials_fsunlinsolsptfqmr${SUNDIALS_NVECTOR_F2C_${type}_SUFFIX} + SOURCES @@ -478,6 +158,7 @@ diff -Naur sundials-5.7.0.orig/src/sunlinsol/sptfqmr/CMakeLists.txt sundials-5.7 + ${sunlinsollib_VERSION} + SOVERSION + ${sunlinsollib_SOVERSION} ++ SHARED_ONLY + ) + endforeach () message(STATUS "Added SUNLINSOL_SPTFQMR F77 interface") diff --git a/mingw-w64-sundials/0004-sundials-superlu_dist-manual-index-size.patch b/mingw-w64-sundials/0004-sundials-superlu_dist-manual-index-size.patch new file mode 100644 index 000000000000..70f2f48bf42e --- /dev/null +++ b/mingw-w64-sundials/0004-sundials-superlu_dist-manual-index-size.patch @@ -0,0 +1,11 @@ +--- sundials-5.7.0.orig/cmake/tpl/FindSUPERLUDIST.cmake 2021-01-29 15:14:51.000000000 -0600 ++++ sundials-5.7.0/cmake/tpl/FindSUPERLUDIST.cmake 2021-07-10 15:12:16.512453400 -0500 +@@ -68,7 +68,7 @@ + endif() + + # find the library configuration file +-if(SUPERLUDIST_LIBRARY AND SUPERLUDIST_INCLUDE_DIR) ++if(SUPERLUDIST_LIBRARY AND SUPERLUDIST_INCLUDE_DIR AND NOT SUPERLUDIST_INDEX_SIZE) + find_file(SUPERLUDIST_CONFIG_PATH superlu_dist_config.h PATHS ${SUPERLUDIST_INCLUDE_DIR}) + file(STRINGS ${SUPERLUDIST_CONFIG_PATH} _strings_with_index_size REGEX "XSDK_INDEX_SIZE") + list(GET _strings_with_index_size 0 _index_size_string) diff --git a/mingw-w64-sundials/0005-sundials-superlu_dist-test-link-errors.patch b/mingw-w64-sundials/0005-sundials-superlu_dist-test-link-errors.patch new file mode 100644 index 000000000000..81183a8dfac6 --- /dev/null +++ b/mingw-w64-sundials/0005-sundials-superlu_dist-test-link-errors.patch @@ -0,0 +1,28 @@ +diff -Naur sundials-5.7.0.orig/examples/sunmatrix/slunrloc/CMakeLists.txt sundials-5.7.0/examples/sunmatrix/slunrloc/CMakeLists.txt +--- sundials-5.7.0.orig/examples/sunmatrix/slunrloc/CMakeLists.txt 2021-01-29 15:14:53.000000000 -0600 ++++ sundials-5.7.0/examples/sunmatrix/slunrloc/CMakeLists.txt 2021-07-10 15:16:21.416232400 -0500 +@@ -51,10 +51,7 @@ + if(NOT TARGET ${example}) + # example source files + add_executable(${example} ${example}.cpp +- ../test_sunmatrix.c +- ../../../src/sundials/sundials_matrix.c +- ../../../src/sundials/sundials_linearsolver.c +- ../../../src/sundials/sundials_nvector.c) ++ ../test_sunmatrix.c) + + # folder to organize targets in an IDE + set_target_properties(${example} PROPERTIES FOLDER "Examples") +diff -Naur sundials-5.7.0.orig/examples/sunnonlinsol/petsc/CMakeLists.txt sundials-5.7.0/examples/sunnonlinsol/petsc/CMakeLists.txt +--- sundials-5.7.0.orig/examples/sunnonlinsol/petsc/CMakeLists.txt 2021-01-29 15:14:53.000000000 -0600 ++++ sundials-5.7.0/examples/sunnonlinsol/petsc/CMakeLists.txt 2021-07-10 14:41:17.323285500 -0500 +@@ -64,8 +64,7 @@ + # example source files once for testing with different inputs + if(NOT TARGET ${example}) + # example source files +- add_executable(${example} +- ${shared_SOURCES} ${example}.c) ++ add_executable(${example} ${example}.c) + + # folder to organize targets in an IDE + set_target_properties(${example} PROPERTIES FOLDER "Examples") diff --git a/mingw-w64-sundials/0006-sundials-petsc-integration.patch b/mingw-w64-sundials/0006-sundials-petsc-integration.patch new file mode 100644 index 000000000000..d2fccf6c00fc --- /dev/null +++ b/mingw-w64-sundials/0006-sundials-petsc-integration.patch @@ -0,0 +1,37 @@ +diff -Naur sundials-5.7.0.orig/cmake/tpl/FindPETSC.cmake sundials-5.7.0/cmake/tpl/FindPETSC.cmake +--- sundials-5.7.0.orig/cmake/tpl/FindPETSC.cmake 2021-01-29 15:14:51.000000000 -0600 ++++ sundials-5.7.0/cmake/tpl/FindPETSC.cmake 2021-07-12 16:44:17.643057200 -0500 +@@ -423,8 +423,8 @@ + # The location of these files has changed with different PETSc versions, + # so look in a few different locations for them. + if (EXISTS "${PETSC_LIBRARY_DIR}/petsc/conf/petscvariables") # > 3.5 +- set (petsc_conf_rules "${PETSC_LIBRARY_DIR}/petsc/conf/rules") +- set (petsc_conf_variables "${PETSC_LIBRARY_DIR}/petsc/conf/variables") ++ set (petsc_conf_rules "${PETSC_LIBRARY_DIR}/petsc/conf/petscrules") ++ set (petsc_conf_variables "${PETSC_LIBRARY_DIR}/petsc/conf/petscvariables") + elseif (EXISTS "${PETSC_INCLUDE_DIR}/petscconf.h") # > 2.3.3 + set (petsc_conf_rules "${PETSC_DIR_}/conf/rules") + set (petsc_conf_variables "${PETSC_DIR_}/conf/variables") +@@ -518,7 +518,10 @@ + # There is no libpetscvec + set (PETSC_LIBRARY_VEC "NOTFOUND" CACHE INTERNAL "Cleared" FORCE) + +- petsc_find_library_in_list (SINGLE petsc PETSC_LIBRARIES_REMAINING) ++ if (NOT PETSC_LIBRARY_SINGLE) ++ petsc_find_library_in_list (SINGLE petsc PETSC_LIBRARIES_REMAINING) ++ endif () ++ + # Debian 9/Ubuntu 16.04 uses _real and _complex extensions when using libraries in /usr/lib/petsc. + if (NOT PETSC_LIBRARY_SINGLE) + petsc_find_library_in_list (SINGLE petsc_real PETSC_LIBRARIES_REMAINING) +diff -Naur sundials-5.7.0.orig/CMakeLists.txt sundials-5.7.0/CMakeLists.txt +--- sundials-5.7.0.orig/CMakeLists.txt 2021-01-29 15:14:45.000000000 -0600 ++++ sundials-5.7.0/CMakeLists.txt 2021-07-12 16:44:39.489633200 -0500 +@@ -256,6 +256,7 @@ + # install SUNDIALSConfig.cmake + configure_file( + ${PROJECT_SOURCE_DIR}/cmake/SUNDIALSConfig.cmake.in SUNDIALSConfig.cmake ++ ESCAPE_QUOTES + @ONLY + ) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SUNDIALSConfig.cmake" diff --git a/mingw-w64-sundials/PKGBUILD b/mingw-w64-sundials/PKGBUILD index 522a98d8f348..b1f026bc0d80 100644 --- a/mingw-w64-sundials/PKGBUILD +++ b/mingw-w64-sundials/PKGBUILD @@ -15,46 +15,47 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-msmpi" "${MINGW_PACKAGE_PREFIX}-openblas" "${MINGW_PACKAGE_PREFIX}-openmp" - "${MINGW_PACKAGE_PREFIX}-suitesparse") + "${MINGW_PACKAGE_PREFIX}-petsc" + "${MINGW_PACKAGE_PREFIX}-suitesparse" + "${MINGW_PACKAGE_PREFIX}-superlu_dist") makedepends=('make' 'patch' 'sed' "${MINGW_PACKAGE_PREFIX}-cmake>=3.12.0" "${MINGW_PACKAGE_PREFIX}-gcc" - "${MINGW_PACKAGE_PREFIX}-gcc-fortran") + "${MINGW_PACKAGE_PREFIX}-gcc-fortran" + "${MINGW_PACKAGE_PREFIX}-petsc-build") optdepends=("${MINGW_PACKAGE_PREFIX}-python: for running examples") conflicts=("${MINGW_PACKAGE_PREFIX}-cvode") source=("${_realname}-${pkgver}.tar.gz"::https://github.com/LLNL/sundials/releases/download/v5.7.0/sundials-5.7.0.tar.gz '0001-sundials-link-errors.patch' '0002-sundials-missing-export.patch' - '0003-sundials-use-default-installdirs.patch') -sha256sums=('48DA7BAA8152DDB22AED1B02D82D1DBB4FBFEA22ACF67634011AA0303A100A43' - 'AB4D3B7BC2AA8F363665E37BB5F51C3B62F8A0F7A6C668E74678FE3AF7D4BB5C' - '7F119FBCC8A630A4E3443E3BBA252DAFB4B1567CED1BF1389052253529E97DDC' - '310B9BEB86426FD2F817391BAF72C0F9AEFE9DC31E737DAED5CC0280B7693311') + '0003-sundials-use-default-installdirs.patch' + '0004-sundials-superlu_dist-manual-index-size.patch' + '0005-sundials-superlu_dist-test-link-errors.patch' + '0006-sundials-petsc-integration.patch') +options=('staticlibs' 'strip') +sha256sums=('48da7baa8152ddb22aed1b02d82d1dbb4fbfea22acf67634011aa0303a100a43' + '59c58bc601e99c33d5e49b7c84448feaf260808fd64696a5e24a93a577c716d8' + '7f119fbcc8a630a4e3443e3bba252dafb4b1567ced1bf1389052253529e97ddc' + '310b9beb86426fd2f817391baf72c0f9aefe9dc31e737daed5cc0280b7693311' + '30800e35e46f04e0d19b245e2529e2be578043417d9bdf88c536442212cb23de' + 'af3391ca031778c238e430d3a78631842f5407806020e90529de14850addce69' + '0d57be6ac23224a768159e958676a3b5e541d57cf9df9763a4a101932382d3f5') prepare() { - patch -d "${_realname}-${pkgver}" -p1 < 0001-sundials-link-errors.patch - patch -d "${_realname}-${pkgver}" -p1 < 0002-sundials-missing-export.patch - patch -d "${_realname}-${pkgver}" -p1 < 0003-sundials-use-default-installdirs.patch + patch -d ${_realname}-${pkgver} -p1 < 0001-sundials-link-errors.patch + patch -d ${_realname}-${pkgver} -p1 < 0002-sundials-missing-export.patch + patch -d ${_realname}-${pkgver} -p1 < 0003-sundials-use-default-installdirs.patch + patch -d ${_realname}-${pkgver} -p1 < 0004-sundials-superlu_dist-manual-index-size.patch + patch -d ${_realname}-${pkgver} -p1 < 0005-sundials-superlu_dist-test-link-errors.patch + patch -d ${_realname}-${pkgver} -p1 < 0006-sundials-petsc-integration.patch } build() { [[ -d build-${MINGW_PACKAGE_PREFIX} ]] && rm -rf build-${MINGW_PACKAGE_PREFIX} - # Note: SuperLU_DIST is incompatible because it is built with 32-bit indices. - - # Why is there zero documentation on the PETSc architectures other than the PKGBUILD? - # Seriously, are people just supposed to know what 'dto' means? "Ah yes, of course that - # means the double-precision-real OpenMP optimized build." Absurd. In any case, the - # current packaging of PETSc isn't compatible without a bunch of patches to SUNDIALS. - - # Set the precision of types. - if [[ "${CARCH}" == "i686" ]]; then - _index_type_size=32 - else - _index_type_size=64 - fi + local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX}) I_MPI_ROOT="" \ MSYS2_ARG_CONV_EXCL="CMAKE_INSTALL_PREFIX=;EXAMPLES_INSTALL_PATH=" \ @@ -93,10 +94,10 @@ build() { -D ENABLE_MPI=ON \ -D ENABLE_OPENMP=ON \ -D ENABLE_OPENMP_DEVICE=OFF \ - -D ENABLE_PETSC=OFF \ + -D ENABLE_PETSC=ON \ -D ENABLE_PTHREAD=ON \ -D ENABLE_RAJA=OFF \ - -D ENABLE_SUPERLUDIST=OFF \ + -D ENABLE_SUPERLUDIST=ON \ -D ENABLE_SUPERLUMT=OFF \ -D ENABLE_SYCL=OFF \ -D ENABLE_TRILINOS=OFF \ @@ -109,14 +110,20 @@ build() { -D EXAMPLES_ENABLE_F2003=OFF \ -D EXAMPLES_INSTALL=ON \ -D EXAMPLES_INSTALL_PATH=${MINGW_PREFIX}/share/sundials/examples \ - -D Fortran_INSTALL_MODDIR=include/sundials \ -D KLU_LIBRARY=${MINGW_PREFIX}/lib/libklu.dll.a \ + -D LAPACK_LIBRARIES=${MINGW_PREFIX}/lib/libopenblas.dll.a \ -D MPI_C_COMPILER=${MINGW_PREFIX}/bin/mpicc.exe \ -D MPI_CXX_COMPILER=${MINGW_PREFIX}/bin/mpicxx.exe \ -D MPI_Fortran_COMPILER=${MINGW_PREFIX}/bin/mpifort.exe \ + -D PETSC_INCLUDES="${PREFIX_WIN}"/src/petsc-3.14.5/dmo/include\;"${PREFIX_WIN}"/src/petsc-3.14.5/include \ + -D PETSC_LIBRARIES=${MINGW_PREFIX}/src/petsc-3.14.5/dmo/lib/libpetsc-dmo.dll.a \ + -D PETSC_LIBRARY_SINGLE=${MINGW_PREFIX}/src/petsc-3.14.5/dmo/lib/libpetsc-dmo.dll.a \ -D SUNDIALS_BUILD_WITH_MONITORING=ON \ - -D SUNDIALS_INDEX_SIZE=${_index_type_size} \ + -D SUNDIALS_INDEX_SIZE=32 \ -D SUNDIALS_PRECISION=DOUBLE \ + -D SUPERLUDIST_INCLUDE_DIR="${PREFIX_WIN}"/include/superlu_dist \ + -D SUPERLUDIST_INDEX_SIZE=32 \ + -D SUPERLUDIST_OpenMP=ON \ -B build-${MINGW_PACKAGE_PREFIX} \ -S ${_realname}-${pkgver} @@ -124,20 +131,19 @@ build() { } check() { - # LAPACK tests fail because our LAPACK (OpenBLAS) has 32-bit precision (I think. The overall - # results of the tests are fine. It's just something happening in the setup). - - # Note: The maintainer should have mpiexec.exe installed (https://www.microsoft.com/en-us/download/details.aspx?id=57467). - ${MINGW_PREFIX}/bin/ctest --exclude-regex sunlinsol_lapack --test-dir build-${MINGW_PACKAGE_PREFIX} + # Skip tests requiring MPI. + ${MINGW_PREFIX}/bin/ctest \ + --exclude-regex "mpi|parallel|petsc|superludist|slunrloc" \ + --test-dir build-${MINGW_PACKAGE_PREFIX} } package() { DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install build-${MINGW_PACKAGE_PREFIX} # Install the LICENSE and NOTICE files to the system licenses directory. - install -d "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/" - install -D -m644 "${srcdir}/${_realname}-${pkgver}"/{LICENSE,NOTICE} \ - "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/" + install -D --mode=644 \ + --target-directory="${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}" \ + "${srcdir}/${_realname}-${pkgver}"/{LICENSE,NOTICE} ## Patch various files to be relocatable.