-
Notifications
You must be signed in to change notification settings - Fork 574
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Creating a separate directory for Sundials 5.
- Loading branch information
1 parent
b1265e4
commit 9d81458
Showing
3 changed files
with
204 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
using BinaryBuilder | ||
|
||
name = "Sundials" | ||
version = v"5.1.0" | ||
|
||
# Collection of sources required to build SundialsBuilder | ||
sources = [ | ||
"https://github.com/LLNL/sundials/archive/v$(version).tar.gz" => | ||
"101be83221f9a0ab185ecce04d003ba38660cc71eb81b8a7cf96d1cc08b3d7f9", | ||
"./bundled", | ||
] | ||
|
||
# Bash recipe for building across all platforms | ||
script = raw""" | ||
cd $WORKSPACE/srcdir/sundials-*/ | ||
if [[ "${target}" == *-mingw* ]]; then | ||
atomic_patch -p1 $WORKSPACE/srcdir/patches/Sundials_windows.patch | ||
fi | ||
CMAKE_FLAGS=(-DCMAKE_INSTALL_PREFIX=${prefix} -DCMAKE_TOOLCHAIN_FILE="${CMAKE_TARGET_TOOLCHAIN}") | ||
CMAKE_FLAGS+=(-DCMAKE_BUILD_TYPE=Release -DEXAMPLES_ENABLE_C=OFF) | ||
CMAKE_FLAGS+=(-DKLU_ENABLE=ON -DKLU_INCLUDE_DIR="$prefix/include" -DKLU_LIBRARY_DIR="$libdir") | ||
CMAKE_FLAGS+=(-DLAPACK_ENABLE=ON) | ||
if [[ ${nbits} == 64 ]] && [[ ${target} != aarch64* ]]; then | ||
atomic_patch -p1 $WORKSPACE/srcdir/patches/Sundials_Fortran.patch | ||
CMAKE_FLAGS+=(-DLAPACK_LIBRARIES="${libdir}/libopenblas64_.${dlext}") | ||
else | ||
CMAKE_FLAGS+=(-DLAPACK_LIBRARIES="${libdir}/libopenblas.${dlext}") | ||
fi | ||
export CFLAGS="-lgfortran" | ||
if [[ "${target}" == i686-* ]] || [[ "${target}" == x86_64-* ]]; then | ||
export CFLAGS="${CFLAGS} -lquadmath" | ||
elif [[ "${target}" == powerpc64le-* ]]; then | ||
export CFLAGS="${CFLAGS} -lgomp -ldl -lm -lpthread -Wl,-rpath-link,/opt/${target}/${target}/lib64" | ||
fi | ||
mkdir build | ||
cd build | ||
cmake "${CMAKE_FLAGS[@]}" .. | ||
make -j${nproc} | ||
make install | ||
# Move libraries to ${libdir} on Windows | ||
if [[ "${target}" == *-mingw* ]]; then | ||
mv ${prefix}/lib/libsundials_*.${dlext} "${libdir}" | ||
fi | ||
""" | ||
|
||
# We attempt to build for all defined platforms | ||
platforms = supported_platforms() | ||
platforms = expand_gfortran_versions(platforms) | ||
|
||
products = [ | ||
LibraryProduct("libsundials_arkode", :libsundials_arkode), | ||
LibraryProduct("libsundials_cvode", :libsundials_cvode), | ||
LibraryProduct("libsundials_cvodes", :libsundials_cvodes), | ||
LibraryProduct("libsundials_ida", :libsundials_ida), | ||
LibraryProduct("libsundials_idas", :libsundials_idas), | ||
LibraryProduct("libsundials_kinsol", :libsundials_kinsol), | ||
LibraryProduct("libsundials_nvecmanyvector", :libsundials_nvecmanyvector), | ||
LibraryProduct("libsundials_nvecserial", :libsundials_nvecserial), | ||
LibraryProduct("libsundials_sunlinsolband", :libsundials_sunlinsolband), | ||
LibraryProduct("libsundials_sunlinsoldense", :libsundials_sunlinsoldense), | ||
LibraryProduct("libsundials_sunlinsolklu", :libsundials_sunlinsolklu), | ||
LibraryProduct("libsundials_sunlinsollapackband", :libsundials_sunlinsollapackband), | ||
LibraryProduct("libsundials_sunlinsollapackdense", :libsundials_sunlinsollapackdense), | ||
LibraryProduct("libsundials_sunlinsolpcg", :libsundials_sunlinsolpcg), | ||
LibraryProduct("libsundials_sunlinsolspbcgs", :libsundials_sunlinsolspbcgs), | ||
LibraryProduct("libsundials_sunlinsolspfgmr", :libsundials_sunlinsolspfgmr), | ||
LibraryProduct("libsundials_sunlinsolspgmr", :libsundials_sunlinsolspgmr), | ||
LibraryProduct("libsundials_sunlinsolsptfqmr", :libsundials_sunlinsolsptfqmr), | ||
LibraryProduct("libsundials_sunmatrixband", :libsundials_sunmatrixband), | ||
LibraryProduct("libsundials_sunmatrixdense", :libsundials_sunmatrixdense), | ||
LibraryProduct("libsundials_sunmatrixsparse", :libsundials_sunmatrixsparse), | ||
LibraryProduct("libsundials_sunnonlinsolfixedpoint", :libsundials_sunnonlinsolfixedpoint), | ||
LibraryProduct("libsundials_sunnonlinsolnewton", :libsundials_sunnonlinsolnewton), | ||
] | ||
|
||
dependencies = [ | ||
"OpenBLAS_jll", | ||
"SuiteSparse_jll", | ||
] | ||
|
||
# Build the tarballs, and possibly a `build.jl` as well. | ||
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; preferred_gcc_version = v"6") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
diff --git a/CMakeLists.txt b/CMakeLists.txt | ||
|
||
--- a/CMakeLists.txt | ||
+++ b/CMakeLists.txt | ||
@@ -757,27 +757,27 @@ if(SUNDIALS_F77_FUNC_CASE AND SUNDIALS_F77_FUNC_UNDERSCORES) | ||
# (e.g. g77 mangles mysub to mysub_ and my_sub to my_sub__) | ||
if(SUNDIALS_F77_FUNC_CASE MATCHES "LOWER") | ||
if(SUNDIALS_F77_FUNC_UNDERSCORES MATCHES "NONE") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name ## _64") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name ## _64") | ||
elseif(SUNDIALS_F77_FUNC_UNDERSCORES MATCHES "ONE") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name ## _") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name ## _") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name ## _64_") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name ## _64_") | ||
elseif(SUNDIALS_F77_FUNC_UNDERSCORES MATCHES "TWO") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name ## __") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name ## __") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name ## _64__") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name ## _64__") | ||
else() | ||
message(FATAL_ERROR "Invalid SUNDIALS_F77_FUNC_UNDERSCORES option.") | ||
endif() | ||
elseif(SUNDIALS_F77_FUNC_CASE MATCHES "UPPER") | ||
if(SUNDIALS_F77_FUNC_UNDERSCORES MATCHES "NONE") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME ## _64") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME ## _64") | ||
elseif(SUNDIALS_F77_FUNC_UNDERSCORES MATCHES "ONE") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME ## _") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME ## _") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME ## _64_") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME ## _64_") | ||
elseif(SUNDIALS_F77_FUNC_UNDERSCORES MATCHES "TWO") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME ## __") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME ## __") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME ## _64__") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME ## _64__") | ||
else() | ||
message(FATAL_ERROR "Invalid SUNDIALS_F77_FUNC_UNDERSCORES option.") | ||
endif() | ||
diff --git a/config/SundialsFortran.cmake b/config/SundialsFortran.cmake | ||
index 9ad6151..5111f47 100644 | ||
--- a/config/SundialsFortran.cmake | ||
+++ b/config/SundialsFortran.cmake | ||
@@ -291,42 +291,42 @@ if(NEED_FORTRAN_NAME_MANGLING) | ||
|
||
# Symbols NO underscores | ||
if(${CMAKE_Fortran_SCHEME_NO_UNDERSCORES} MATCHES "mysub") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name ## _64") | ||
endif() | ||
if(${CMAKE_Fortran_SCHEME_NO_UNDERSCORES} MATCHES "mysub_") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name ## _") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name ## _64_") | ||
endif() | ||
if(${CMAKE_Fortran_SCHEME_NO_UNDERSCORES} MATCHES "mysub__") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name ## __") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) name ## _64__") | ||
endif() | ||
if(${CMAKE_Fortran_SCHEME_NO_UNDERSCORES} MATCHES "MYSUB") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME ## _64") | ||
endif() | ||
if(${CMAKE_Fortran_SCHEME_NO_UNDERSCORES} MATCHES "MYSUB_") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME ## _") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME ## _64_") | ||
endif() | ||
if(${CMAKE_Fortran_SCHEME_NO_UNDERSCORES} MATCHES "MYSUB__") | ||
- set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME ## __") | ||
+ set(F77_MANGLE_MACRO1 "#define SUNDIALS_F77_FUNC(name,NAME) NAME ## _64__") | ||
endif() | ||
|
||
# Symbols WITH underscores | ||
if(${CMAKE_Fortran_SCHEME_WITH_UNDERSCORES} MATCHES "my_sub") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name ## _64") | ||
endif() | ||
if(${CMAKE_Fortran_SCHEME_WITH_UNDERSCORES} MATCHES "my_sub_") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name ## _") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name ## _64_") | ||
endif() | ||
if(${CMAKE_Fortran_SCHEME_WITH_UNDERSCORES} MATCHES "my_sub__") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name ## __") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) name ## _64__") | ||
endif() | ||
if(${CMAKE_Fortran_SCHEME_WITH_UNDERSCORES} MATCHES "MY_SUB") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME ## _64") | ||
endif() | ||
if(${CMAKE_Fortran_SCHEME_WITH_UNDERSCORES} MATCHES "MY_SUB_") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME ## _") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME ## _64_") | ||
endif() | ||
if(${CMAKE_Fortran_SCHEME_WITH_UNDERSCORES} MATCHES "MY_SUB__") | ||
- set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME ## __") | ||
+ set(F77_MANGLE_MACRO2 "#define SUNDIALS_F77_FUNC_(name,NAME) NAME ## _64__") | ||
endif() | ||
|
||
# name-mangling scheme has been set |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
diff --git a/config/FindKLU.cmake b/config/FindKLU.cmake | ||
|
||
--- a/config/FindKLU.cmake | ||
+++ b/config/FindKLU.cmake | ||
@@ -60,10 +60,6 @@ endif () | ||
|
||
if (NOT SUITESPARSECONFIG_LIBRARY) | ||
set(SUITESPARSECONFIG_LIBRARY_NAME suitesparseconfig) | ||
- # NOTE: no prefix for this library on windows | ||
- if(WIN32 AND NOT MSYS) | ||
- set(CMAKE_FIND_LIBRARY_PREFIXES "") | ||
- endif() | ||
find_library( SUITESPARSECONFIG_LIBRARY ${SUITESPARSECONFIG_LIBRARY_NAME} ${KLU_LIBRARY_DIR} NO_DEFAULT_PATH) | ||
mark_as_advanced(SUITESPARSECONFIG_LIBRARY) | ||
endif () |