@@ -2,24 +2,24 @@ cmake_minimum_required(VERSION 3.13)
2
2
cmake_policy (SET CMP0074 NEW )
3
3
set (CMAKE_VERBOSE_MAKEFILE ON )
4
4
5
- if (DEFINED Python_EXECUTABLE )
6
- set (PYTHON_EXECUTABLE ${Python_EXECUTABLE} )
7
- endif ()
5
+ if (DEFINED Python_EXECUTABLE )
6
+ set (PYTHON_EXECUTABLE ${Python_EXECUTABLE} )
7
+ endif ()
8
8
9
- if (DEFINED ENV{VCPKG_ROOT_DIR} AND NOT DEFINED VCPKG_ROOT_DIR )
10
- set (VCPKG_ROOT_DIR "$ENV{VCPKG_ROOT_DIR} "
11
- CACHE STRING "Vcpkg root directory" )
12
- endif ()
9
+ if (DEFINED ENV{VCPKG_ROOT_DIR} AND NOT DEFINED VCPKG_ROOT_DIR )
10
+ set (VCPKG_ROOT_DIR "$ENV{VCPKG_ROOT_DIR} "
11
+ CACHE STRING "Vcpkg root directory" )
12
+ endif ()
13
13
14
- if (DEFINED VCPKG_ROOT_DIR )
15
- set (CMAKE_TOOLCHAIN_FILE ${VCPKG_ROOT_DIR} /scripts/buildsystems/vcpkg.cmake
16
- CACHE STRING "Vcpkg toolchain file" )
17
- endif ()
14
+ if (DEFINED VCPKG_ROOT_DIR )
15
+ set (CMAKE_TOOLCHAIN_FILE ${VCPKG_ROOT_DIR} /scripts/buildsystems/vcpkg.cmake
16
+ CACHE STRING "Vcpkg toolchain file" )
17
+ endif ()
18
18
19
- if (DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT DEFINED VCPKG_TARGET_TRIPLET )
20
- set (VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET} "
21
- CACHE STRING "Vcpkg target triplet" )
22
- endif ()
19
+ if (DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT DEFINED VCPKG_TARGET_TRIPLET )
20
+ set (VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET} "
21
+ CACHE STRING "Vcpkg target triplet" )
22
+ endif ()
23
23
24
24
project (idaklu )
25
25
@@ -28,143 +28,143 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
28
28
set (CMAKE_CXX_EXTENSIONS OFF )
29
29
set (CMAKE_EXPORT_COMPILE_COMMANDS 1 )
30
30
set (CMAKE_POSITION_INDEPENDENT_CODE ON )
31
- if (NOT MSVC )
31
+ if (NOT MSVC )
32
32
# MSVC does not support variable length arrays (vla)
33
33
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=vla" )
34
- endif ()
34
+ endif ()
35
35
36
36
# casadi seems to compile without the newer versions of std::string
37
37
add_compile_definitions (_GLIBCXX_USE_CXX11_ABI=0 )
38
38
39
- if (NOT PYBIND11_DIR )
40
- set (PYBIND11_DIR pybind11 )
41
- endif ()
39
+ if (NOT PYBIND11_DIR )
40
+ set (PYBIND11_DIR pybind11 )
41
+ endif ()
42
42
add_subdirectory (${PYBIND11_DIR} )
43
43
44
44
# Check Casadi build flag
45
- if (NOT DEFINED PYBAMM_IDAKLU_EXPR_CASADI )
46
- set (PYBAMM_IDAKLU_EXPR_CASADI ON )
47
- endif ()
45
+ if (NOT DEFINED PYBAMM_IDAKLU_EXPR_CASADI )
46
+ set (PYBAMM_IDAKLU_EXPR_CASADI ON )
47
+ endif ()
48
48
message ("PYBAMM_IDAKLU_EXPR_CASADI: ${PYBAMM_IDAKLU_EXPR_CASADI} " )
49
49
50
50
# Casadi PyBaMM source files
51
51
set (IDAKLU_EXPR_CASADI_SOURCE_FILES "" )
52
- if (${PYBAMM_IDAKLU_EXPR_CASADI} STREQUAL "ON" )
53
- add_compile_definitions (CASADI_ENABLE )
54
- set (IDAKLU_EXPR_CASADI_SOURCE_FILES
55
- src/pybammsolvers/idaklu_source/Expressions/Casadi/CasadiFunctions.cpp
56
- src/pybammsolvers/idaklu_source/Expressions/Casadi/CasadiFunctions.hpp
57
- )
58
- endif ()
52
+ if (${PYBAMM_IDAKLU_EXPR_CASADI} STREQUAL "ON" )
53
+ add_compile_definitions (CASADI_ENABLE )
54
+ set (IDAKLU_EXPR_CASADI_SOURCE_FILES
55
+ src/pybammsolvers/idaklu_source/Expressions/Casadi/CasadiFunctions.cpp
56
+ src/pybammsolvers/idaklu_source/Expressions/Casadi/CasadiFunctions.hpp
57
+ )
58
+ endif ()
59
59
60
60
# Check IREE build flag
61
- if (NOT DEFINED PYBAMM_IDAKLU_EXPR_IREE )
62
- set (PYBAMM_IDAKLU_EXPR_IREE OFF )
63
- endif ()
61
+ if (NOT DEFINED PYBAMM_IDAKLU_EXPR_IREE )
62
+ set (PYBAMM_IDAKLU_EXPR_IREE OFF )
63
+ endif ()
64
64
message ("PYBAMM_IDAKLU_EXPR_IREE: ${PYBAMM_IDAKLU_EXPR_IREE} " )
65
65
66
66
# IREE (MLIR expression evaluation) PyBaMM source files
67
67
set (IDAKLU_EXPR_IREE_SOURCE_FILES "" )
68
- if (${PYBAMM_IDAKLU_EXPR_IREE} STREQUAL "ON" )
69
- add_compile_definitions (IREE_ENABLE )
70
- # Source file list
71
- set (IDAKLU_EXPR_IREE_SOURCE_FILES
72
- src/pybammsolvers/idaklu_source/Expressions/IREE/iree_jit.cpp
73
- src/pybammsolvers/idaklu_source/Expressions/IREE/iree_jit.hpp
74
- src/pybammsolvers/idaklu_source/Expressions/IREE/IREEFunctions.cpp
75
- src/pybammsolvers/idaklu_source/Expressions/IREE/IREEFunctions.hpp
76
- src/pybammsolvers/idaklu_source/Expressions/IREE/ModuleParser.cpp
77
- src/pybammsolvers/idaklu_source/Expressions/IREE/ModuleParser.hpp
78
- )
79
- endif ()
68
+ if (${PYBAMM_IDAKLU_EXPR_IREE} STREQUAL "ON" )
69
+ add_compile_definitions (IREE_ENABLE )
70
+ # Source file list
71
+ set (IDAKLU_EXPR_IREE_SOURCE_FILES
72
+ src/pybammsolvers/idaklu_source/Expressions/IREE/iree_jit.cpp
73
+ src/pybammsolvers/idaklu_source/Expressions/IREE/iree_jit.hpp
74
+ src/pybammsolvers/idaklu_source/Expressions/IREE/IREEFunctions.cpp
75
+ src/pybammsolvers/idaklu_source/Expressions/IREE/IREEFunctions.hpp
76
+ src/pybammsolvers/idaklu_source/Expressions/IREE/ModuleParser.cpp
77
+ src/pybammsolvers/idaklu_source/Expressions/IREE/ModuleParser.hpp
78
+ )
79
+ endif ()
80
80
81
81
# The complete (all dependencies) sources list should be mirrored in setup.py
82
82
pybind11_add_module (idaklu
83
- # pybind11 interface
84
- src/pybammsolvers/idaklu.cpp
85
- # IDAKLU solver (SUNDIALS)
86
- src/pybammsolvers/idaklu_source/idaklu_solver.hpp
87
- src/pybammsolvers/idaklu_source/IDAKLUSolver.cpp
88
- src/pybammsolvers/idaklu_source/IDAKLUSolver.hpp
89
- src/pybammsolvers/idaklu_source/IDAKLUSolverGroup.cpp
90
- src/pybammsolvers/idaklu_source/IDAKLUSolverGroup.hpp
91
- src/pybammsolvers/idaklu_source/IDAKLUSolverOpenMP.inl
92
- src/pybammsolvers/idaklu_source/IDAKLUSolverOpenMP.hpp
93
- src/pybammsolvers/idaklu_source/IDAKLUSolverOpenMP_solvers.cpp
94
- src/pybammsolvers/idaklu_source/IDAKLUSolverOpenMP_solvers.hpp
95
- src/pybammsolvers/idaklu_source/sundials_functions.inl
96
- src/pybammsolvers/idaklu_source/sundials_functions.hpp
97
- src/pybammsolvers/idaklu_source/IdakluJax.cpp
98
- src/pybammsolvers/idaklu_source/IdakluJax.hpp
99
- src/pybammsolvers/idaklu_source/common.hpp
100
- src/pybammsolvers/idaklu_source/common.cpp
101
- src/pybammsolvers/idaklu_source/Solution.cpp
102
- src/pybammsolvers/idaklu_source/Solution.hpp
103
- src/pybammsolvers/idaklu_source/SolutionData.cpp
104
- src/pybammsolvers/idaklu_source/SolutionData.hpp
105
- src/pybammsolvers/idaklu_source/observe.cpp
106
- src/pybammsolvers/idaklu_source/observe.hpp
107
- src/pybammsolvers/idaklu_source/Options.hpp
108
- src/pybammsolvers/idaklu_source/Options.cpp
109
- # IDAKLU expressions / function evaluation [abstract]
110
- src/pybammsolvers/idaklu_source/Expressions/Expressions.hpp
111
- src/pybammsolvers/idaklu_source/Expressions/Base/Expression.hpp
112
- src/pybammsolvers/idaklu_source/Expressions/Base/ExpressionSet.hpp
113
- src/pybammsolvers/idaklu_source/Expressions/Base/ExpressionTypes.hpp
114
- # IDAKLU expressions - concrete implementations
115
- ${IDAKLU_EXPR_CASADI_SOURCE_FILES}
116
- ${IDAKLU_EXPR_IREE_SOURCE_FILES}
83
+ # pybind11 interface
84
+ src/pybammsolvers/idaklu.cpp
85
+ # IDAKLU solver (SUNDIALS)
86
+ src/pybammsolvers/idaklu_source/idaklu_solver.hpp
87
+ src/pybammsolvers/idaklu_source/IDAKLUSolver.cpp
88
+ src/pybammsolvers/idaklu_source/IDAKLUSolver.hpp
89
+ src/pybammsolvers/idaklu_source/IDAKLUSolverGroup.cpp
90
+ src/pybammsolvers/idaklu_source/IDAKLUSolverGroup.hpp
91
+ src/pybammsolvers/idaklu_source/IDAKLUSolverOpenMP.inl
92
+ src/pybammsolvers/idaklu_source/IDAKLUSolverOpenMP.hpp
93
+ src/pybammsolvers/idaklu_source/IDAKLUSolverOpenMP_solvers.cpp
94
+ src/pybammsolvers/idaklu_source/IDAKLUSolverOpenMP_solvers.hpp
95
+ src/pybammsolvers/idaklu_source/sundials_functions.inl
96
+ src/pybammsolvers/idaklu_source/sundials_functions.hpp
97
+ src/pybammsolvers/idaklu_source/IdakluJax.cpp
98
+ src/pybammsolvers/idaklu_source/IdakluJax.hpp
99
+ src/pybammsolvers/idaklu_source/common.hpp
100
+ src/pybammsolvers/idaklu_source/common.cpp
101
+ src/pybammsolvers/idaklu_source/Solution.cpp
102
+ src/pybammsolvers/idaklu_source/Solution.hpp
103
+ src/pybammsolvers/idaklu_source/SolutionData.cpp
104
+ src/pybammsolvers/idaklu_source/SolutionData.hpp
105
+ src/pybammsolvers/idaklu_source/observe.cpp
106
+ src/pybammsolvers/idaklu_source/observe.hpp
107
+ src/pybammsolvers/idaklu_source/Options.hpp
108
+ src/pybammsolvers/idaklu_source/Options.cpp
109
+ # IDAKLU expressions / function evaluation [abstract]
110
+ src/pybammsolvers/idaklu_source/Expressions/Expressions.hpp
111
+ src/pybammsolvers/idaklu_source/Expressions/Base/Expression.hpp
112
+ src/pybammsolvers/idaklu_source/Expressions/Base/ExpressionSet.hpp
113
+ src/pybammsolvers/idaklu_source/Expressions/Base/ExpressionTypes.hpp
114
+ # IDAKLU expressions - concrete implementations
115
+ ${IDAKLU_EXPR_CASADI_SOURCE_FILES}
116
+ ${IDAKLU_EXPR_IREE_SOURCE_FILES}
117
117
)
118
118
119
119
if (NOT DEFINED USE_PYTHON_CASADI )
120
- set (USE_PYTHON_CASADI TRUE )
121
- endif ()
120
+ set (USE_PYTHON_CASADI TRUE )
121
+ endif ()
122
122
123
123
124
124
execute_process (
125
- COMMAND "${PYTHON_EXECUTABLE} " -c
126
- "import os; import sysconfig; print(os.path.join(sysconfig.get_path('purelib'), 'casadi', 'cmake'))"
127
- OUTPUT_VARIABLE CASADI_DIR
128
- OUTPUT_STRIP_TRAILING_WHITESPACE )
125
+ COMMAND "${PYTHON_EXECUTABLE} " -c
126
+ "import os; import sysconfig; print(os.path.join(sysconfig.get_path('purelib'), 'casadi', 'cmake'))"
127
+ OUTPUT_VARIABLE CASADI_DIR
128
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
129
129
130
130
if (CASADI_DIR )
131
- file (TO_CMAKE_PATH ${CASADI_DIR} CASADI_DIR )
132
- message ("Found Python casadi path: ${CASADI_DIR} " )
133
- else ()
134
- message (FATAL_ERROR "Did not find casadi path}" )
135
- endif ()
136
-
137
- if (${USE_PYTHON_CASADI} )
138
- message ("Trying to link against Python casadi package in ${CASADI_DIR} " )
139
- find_package (casadi CONFIG PATHS ${CASADI_DIR} REQUIRED NO_DEFAULT_PATH )
140
- else ()
141
- message ("Trying to link against any casadi package apart from the Python one" )
142
- set (CMAKE_IGNORE_PATH "${CASADI_DIR} /cmake" )
143
- find_package (casadi CONFIG REQUIRED )
144
- endif ()
131
+ file (TO_CMAKE_PATH ${CASADI_DIR} CASADI_DIR )
132
+ message ("Found Python casadi path: ${CASADI_DIR} " )
133
+ else ()
134
+ message (FATAL_ERROR "Did not find casadi path}" )
135
+ endif ()
136
+
137
+ if (${USE_PYTHON_CASADI} )
138
+ message ("Trying to link against Python casadi package in ${CASADI_DIR} " )
139
+ find_package (casadi CONFIG PATHS ${CASADI_DIR} REQUIRED NO_DEFAULT_PATH )
140
+ else ()
141
+ message ("Trying to link against any casadi package apart from the Python one" )
142
+ set (CMAKE_IGNORE_PATH "${CASADI_DIR} /cmake" )
143
+ find_package (casadi CONFIG REQUIRED )
144
+ endif ()
145
145
146
146
set_target_properties (
147
- idaklu PROPERTIES
148
- INSTALL_RPATH "${CASADI_DIR} "
149
- INSTALL_RPATH_USE_LINK_PATH TRUE
147
+ idaklu PROPERTIES
148
+ INSTALL_RPATH "${CASADI_DIR} "
149
+ INSTALL_RPATH_USE_LINK_PATH TRUE
150
150
)
151
151
152
152
# openmp
153
153
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
154
- execute_process (
155
- COMMAND "brew" "--prefix"
156
- OUTPUT_VARIABLE HOMEBREW_PREFIX
157
- OUTPUT_STRIP_TRAILING_WHITESPACE )
158
- if (OpenMP_ROOT )
159
- set (OpenMP_ROOT "${OpenMP_ROOT} :${HOMEBREW_PREFIX} /opt/libomp" )
160
- else ()
161
- set (OpenMP_ROOT "${HOMEBREW_PREFIX} /opt/libomp" )
162
- endif ()
163
- endif ()
154
+ execute_process (
155
+ COMMAND "brew" "--prefix"
156
+ OUTPUT_VARIABLE HOMEBREW_PREFIX
157
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
158
+ if (OpenMP_ROOT )
159
+ set (OpenMP_ROOT "${OpenMP_ROOT} :${HOMEBREW_PREFIX} /opt/libomp" )
160
+ else ()
161
+ set (OpenMP_ROOT "${HOMEBREW_PREFIX} /opt/libomp" )
162
+ endif ()
163
+ endif ()
164
164
find_package (OpenMP )
165
- if (OpenMP_CXX_FOUND )
165
+ if (OpenMP_CXX_FOUND )
166
166
target_link_libraries (idaklu PRIVATE OpenMP::OpenMP_CXX )
167
- endif ()
167
+ endif ()
168
168
169
169
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR} )
170
170
# Sundials
@@ -176,24 +176,24 @@ target_link_libraries(idaklu PRIVATE ${SUNDIALS_LIBRARIES} casadi)
176
176
# link suitesparse
177
177
# if using vcpkg, use config mode to
178
178
# find suitesparse. Otherwise, use FindSuiteSparse module
179
- if (DEFINED VCPKG_ROOT_DIR )
180
- find_package (SuiteSparse CONFIG REQUIRED )
181
- else ()
182
- find_package (SuiteSparse REQUIRED )
183
- message ("SuiteSparse found in ${SuiteSparse_INCLUDE_DIRS} : ${SuiteSparse_LIBRARIES} " )
184
- endif ()
179
+ if (DEFINED VCPKG_ROOT_DIR )
180
+ find_package (SuiteSparse CONFIG REQUIRED )
181
+ else ()
182
+ find_package (SuiteSparse REQUIRED )
183
+ message ("SuiteSparse found in ${SuiteSparse_INCLUDE_DIRS} : ${SuiteSparse_LIBRARIES} " )
184
+ endif ()
185
185
include_directories (${SuiteSparse_INCLUDE_DIRS} )
186
186
target_link_libraries (idaklu PRIVATE ${SuiteSparse_LIBRARIES} )
187
187
188
188
# IREE (MLIR compiler and runtime library) build settings
189
- if (${PYBAMM_IDAKLU_EXPR_IREE} STREQUAL "ON" )
190
- set (IREE_BUILD_COMPILER ON )
191
- set (IREE_BUILD_TESTS OFF )
192
- set (IREE_BUILD_SAMPLES OFF )
193
- add_subdirectory (iree EXCLUDE_FROM_ALL )
194
- set (IREE_COMPILER_ROOT "${CMAKE_CURRENT_SOURCE_DIR} /iree/compiler" )
195
- target_include_directories (idaklu SYSTEM PRIVATE "${IREE_COMPILER_ROOT} /bindings/c/iree/compiler" )
196
- target_compile_options (idaklu PRIVATE ${IREE_DEFAULT_COPTS} )
197
- target_link_libraries (idaklu PRIVATE iree_compiler_bindings_c_loader )
198
- target_link_libraries (idaklu PRIVATE iree_runtime_runtime )
199
- endif ()
189
+ if (${PYBAMM_IDAKLU_EXPR_IREE} STREQUAL "ON" )
190
+ set (IREE_BUILD_COMPILER ON )
191
+ set (IREE_BUILD_TESTS OFF )
192
+ set (IREE_BUILD_SAMPLES OFF )
193
+ add_subdirectory (iree EXCLUDE_FROM_ALL )
194
+ set (IREE_COMPILER_ROOT "${CMAKE_CURRENT_SOURCE_DIR} /iree/compiler" )
195
+ target_include_directories (idaklu SYSTEM PRIVATE "${IREE_COMPILER_ROOT} /bindings/c/iree/compiler" )
196
+ target_compile_options (idaklu PRIVATE ${IREE_DEFAULT_COPTS} )
197
+ target_link_libraries (idaklu PRIVATE iree_compiler_bindings_c_loader )
198
+ target_link_libraries (idaklu PRIVATE iree_runtime_runtime )
199
+ endif ()
0 commit comments