changeset 5504:9f9ed6a325bd

Build SUNDIALS IDA for Linux with KLU (bug #58795). * src/suitesparse.mk: Create symlinks to libraries without version suffix. * src/sundials-ida.mk: Unify build rules for all other platforms.
author Markus Mützel <markus.muetzel@gmx.de>
date Fri, 31 Jul 2020 14:59:35 +0200
parents 1541641533a6
children 391a0292bcaa
files src/suitesparse.mk src/sundials-ida.mk
diffstat 2 files changed, 41 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/src/suitesparse.mk	Tue Jul 28 17:10:46 2020 +0200
+++ b/src/suitesparse.mk	Fri Jul 31 14:59:35 2020 +0200
@@ -97,5 +97,14 @@
         INSTALL_INCLUDE='$($(PKG)_DESTDIR)$(HOST_INCDIR)/suitesparse/' \
         INSTALL_LIB='$($(PKG)_DESTDIR)$(HOST_LIBDIR)' \
         INSTALL_SO='$($(PKG)_SO_DIR)'
+
+    # some dependers (e.g. SUNDIALS IDA) won't find libraries with version suffix
+    if [ $(MXE_WINDOWS_BUILD) = no ]; then \
+      cd '$($(PKG)_DESTDIR)$(HOST_LIBDIR)' && ln -sf libsuitesparseconfig.so.$($(PKG)_VERSION) libsuitesparseconfig.so; \
+      cd '$($(PKG)_DESTDIR)$(HOST_LIBDIR)' && ln -sf libamd.so.2 libamd.so; \
+      cd '$($(PKG)_DESTDIR)$(HOST_LIBDIR)' && ln -sf libbtf.so.1 libbtf.so; \
+      cd '$($(PKG)_DESTDIR)$(HOST_LIBDIR)' && ln -sf libcolamd.so.2 libcolamd.so; \
+      cd '$($(PKG)_DESTDIR)$(HOST_LIBDIR)' && ln -sf libklu.so.1 libklu.so; \
+    fi
 endef
 
--- a/src/sundials-ida.mk	Tue Jul 28 17:10:46 2020 +0200
+++ b/src/sundials-ida.mk	Fri Jul 31 14:59:35 2020 +0200
@@ -18,54 +18,42 @@
     echo $($(PKG)_VERSION)
 endef
 
-$(PKG)_CMAKE_FLAGS := \
-    -DEXAMPLES_ENABLE_C=OFF \
-    -DKLU_ENABLE=ON \
-    -DKLU_INCLUDE_DIR=$(HOST_INCDIR)/suitesparse \
-    -DKLU_LIBRARY_DIR=$(HOST_LIBDIR) \
-    -DCMAKE_TOOLCHAIN_FILE='$(CMAKE_TOOLCHAIN_FILE)' \
-    -DBUILD_ARKODE=OFF \
-    -DBUILD_CVODE=OFF \
-    -DBUILD_CVODES=OFF \
-    -DBUILD_IDA=ON \
-    -DBUILD_IDAS=OFF \
-    -DBUILD_KINSOL=OFF \
-    -DBUILD_CPODES=OFF
+ifeq ($(MXE_WINDOWS_BUILD),yes)
+    $(PKG)_SUITESPARSECONFIG_LIBRARY := $(HOST_LIBDIR)/libsuitesparseconfig.dll.a
+else
+    $(PKG)_SUITESPARSECONFIG_LIBRARY := $(HOST_LIBDIR)/libsuitesparseconfig.so
+endif
 
 # Keep "sunindextype" in sync with LAPACK (bug #58795)
 ifeq ($(ENABLE_FORTRAN_INT64),yes)
-    $(PKG)_CMAKE_FLAGS += -DSUNDIALS_INDEX_SIZE=64
+    $(PKG)_INDEX_SIZE := 64
 else
-    $(PKG)_CMAKE_FLAGS += -DSUNDIALS_INDEX_SIZE=32
+    $(PKG)_INDEX_SIZE := 32
 endif
 
-ifeq ($(MXE_WINDOWS_BUILD),yes)
-
-    $(PKG)_CMAKE_FLAGS += \
-        -DSUITESPARSECONFIG_LIBRARY=$(HOST_LIBDIR)/libsuitesparseconfig.dll.a
-
-    define $(PKG)_BUILD
-        mkdir '$(1).build'
-        cd '$(1).build' && cmake \
-            $($(PKG)_CMAKE_FLAGS) \
-            '$(1)'
-        $(MAKE) -C '$(1).build' -j '$(JOBS)' install DESTDIR='$(3)' VERBOSE=1
+define $(PKG)_BUILD
+    mkdir '$(1).build'
+    cd '$(1).build' && cmake \
+        -DCMAKE_TOOLCHAIN_FILE='$(CMAKE_TOOLCHAIN_FILE)' \
+        -DBUILD_ARKODE=OFF \
+        -DBUILD_CVODE=OFF \
+        -DBUILD_CVODES=OFF \
+        -DBUILD_IDA=ON \
+        -DBUILD_IDAS=OFF \
+        -DBUILD_KINSOL=OFF \
+        -DBUILD_CPODES=OFF \
+        -DEXAMPLES_ENABLE_C=OFF \
+        -DSUITESPARSECONFIG_LIBRARY=$($(PKG)_SUITESPARSECONFIG_LIBRARY) \
+        -DSUNDIALS_INDEX_SIZE=$($(PKG)_INDEX_SIZE) \
+        -DKLU_ENABLE=ON \
+        -DKLU_INCLUDE_DIR=$(HOST_INCDIR)/suitesparse \
+        -DKLU_LIBRARY_DIR=$(HOST_LIBDIR) \
+        '$(1)'
+    $(MAKE) -C '$(1).build' -j '$(JOBS)' install DESTDIR='$(3)' VERBOSE=1
 
-        if [ $(MXE_SYSTEM) = mingw ]; then \
-            echo "Install dlls"; \
-            $(INSTALL) -d '$(3)$(HOST_BINDIR)'; \
-            mv '$(3)$(HOST_LIBDIR)/'libsundials*.dll '$(3)$(HOST_BINDIR)/'; \
-        fi
-    endef
-
-else
-
-    define $(PKG)_BUILD
-        mkdir '$(1).build'
-        cd '$(1).build' && cmake \
-            $($(PKG)_CMAKE_FLAGS) \
-            '$(1)'
-        $(MAKE) -C '$(1).build' -j '$(JOBS)' install VERBOSE=1
-    endef
-
-endif
+    if [ $(MXE_SYSTEM) = mingw ]; then \
+        echo "Install dlls"; \
+        $(INSTALL) -d '$(3)$(HOST_BINDIR)'; \
+        mv '$(3)$(HOST_LIBDIR)/'libsundials*.dll '$(3)$(HOST_BINDIR)/'; \
+    fi
+endef