-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
121 lines (104 loc) · 3.72 KB
/
CMakeLists.txt
File metadata and controls
121 lines (104 loc) · 3.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#
# Build AMICI library
#
project(amici)
cmake_minimum_required(VERSION 2.8)
set(AMICI_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(CheckCXXCompilerFlag)
set(MY_CXX_FLAGS -Wall)
foreach(FLAG ${MY_CXX_FLAGS})
unset(CUR_FLAG_SUPPORTED CACHE)
CHECK_CXX_COMPILER_FLAG(${FLAG} CUR_FLAG_SUPPORTED)
if(${CUR_FLAG_SUPPORTED})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}")
endif()
endforeach(FLAG)
add_definitions(-DAMICI_WITHOUT_MATLAB)
set(SUITESPARSE_DIR "${AMICI_DIR}/SuiteSparse/")
set(SUNDIALS_LIB_DIR "${AMICI_DIR}/sundials/build/lib")
set(CMAKE_MODULE_PATH ${AMICI_DIR}/CMakeModules)
find_package(HDF5 COMPONENTS C HL CXX REQUIRED)
# AMICI requires BLAS, currently Intel MKL, CBLAS or MATLAB BLAS can be used.
# The latter is not supported via CMake yet.
set(BLAS "CBLAS" CACHE STRING "BLAS library to use")
set_property(CACHE BLAS PROPERTY STRINGS "CBLAS" "MKL" "ACCELERATE")
add_definitions(-DAMICI_BLAS_${BLAS})
if(${BLAS} STREQUAL "MKL")
set(BLAS_INCLUDE_DIRS "" CACHE STRING "")
set(BLAS_LIBRARIES -lmkl CACHE STRING "")
else()
set(BLAS_INCLUDE_DIRS "" CACHE STRING "")
set(BLAS_LIBRARIES -lcblas CACHE STRING "")
endif()
include_directories("${AMICI_DIR}/include/")
include_directories("${HDF5_INCLUDE_DIRS}")
include_directories("${AMICI_DIR}/sundials/include")
include_directories("${AMICI_DIR}/sundials/src")
include_directories("${SUITESPARSE_DIR}/include")
if(NOT "${BLAS_INCLUDE_DIRS}" STREQUAL "")
include_directories(${BLAS_INCLUDE_DIRS})
endif()
# Library source files
set(AMICI_SRC_LIST
${AMICI_DIR}/src/symbolic_functions.cpp
${AMICI_DIR}/src/cblas.cpp
${AMICI_DIR}/src/amici.cpp
${AMICI_DIR}/src/misc.cpp
${AMICI_DIR}/src/rdata.cpp
${AMICI_DIR}/src/edata.cpp
${AMICI_DIR}/src/hdf5.cpp
${AMICI_DIR}/src/spline.cpp
${AMICI_DIR}/src/solver.cpp
${AMICI_DIR}/src/solver_cvodes.cpp
${AMICI_DIR}/src/solver_idas.cpp
${AMICI_DIR}/src/model.cpp
${AMICI_DIR}/src/model_ode.cpp
${AMICI_DIR}/src/model_dae.cpp
${AMICI_DIR}/src/newton_solver.cpp
${AMICI_DIR}/src/forwardproblem.cpp
${AMICI_DIR}/src/steadystateproblem.cpp
${AMICI_DIR}/src/backwardproblem.cpp
)
add_library(${PROJECT_NAME} ${AMICI_SRC_LIST})
target_link_libraries(${PROJECT_NAME}
${SUNDIALS_LIB_DIR}/libsundials_nvecserial${CMAKE_STATIC_LIBRARY_SUFFIX}
${SUNDIALS_LIB_DIR}/libsundials_cvodes${CMAKE_STATIC_LIBRARY_SUFFIX}
${SUNDIALS_LIB_DIR}/libsundials_idas${CMAKE_STATIC_LIBRARY_SUFFIX}
${SUITESPARSE_DIR}/KLU/Lib/libklu${CMAKE_STATIC_LIBRARY_SUFFIX}
${SUITESPARSE_DIR}/COLAMD/Lib/libcolamd${CMAKE_STATIC_LIBRARY_SUFFIX}
${SUITESPARSE_DIR}/BTF/Lib/libbtf${CMAKE_STATIC_LIBRARY_SUFFIX}
${SUITESPARSE_DIR}/AMD/Lib/libamd${CMAKE_STATIC_LIBRARY_SUFFIX}
${SUITESPARSE_DIR}/SuiteSparse_config/libsuitesparseconfig${CMAKE_STATIC_LIBRARY_SUFFIX}
${HDF5_HL_LIBRARIES}
${HDF5_C_LIBRARIES}
${HDF5_CXX_LIBRARIES}
${BLAS_LIBRARIES}
-ldl -lz -lm
)
if($ENV{ENABLE_GCOV_COVERAGE})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 --coverage")
endif()
include(CMakeModules/clang-tools.cmake)
# <Export cmake configuration>
include(GenerateExportHeader)
generate_export_header(amici)
install(TARGETS ${PROJECT_NAME} EXPORT AmiciTargets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
export(EXPORT AmiciTargets
FILE "${CMAKE_CURRENT_BINARY_DIR}/AmiciTargets.cmake"
NAMESPACE Upstream::
)
get_property(AmiciConfigIncludes DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
configure_file(CMakeModules/AmiciConfig.cmake
"${CMAKE_CURRENT_BINARY_DIR}/AmiciConfig.cmake"
@ONLY
)
# Register package
export(PACKAGE Amici)
# </Export cmake configuration>