1
1
2
- cmake_minimum_required ( VERSION 3.2 )
2
+ cmake_minimum_required ( VERSION 3.2 )
3
+
4
+ find_package ( Python3 3.5 REQUIRED )
5
+
3
6
set ( CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Supported configuration types" FORCE )
4
-
7
+
5
8
project ( njoy LANGUAGES Fortran )
6
9
get_directory_property ( is_subproject PARENT_DIRECTORY )
7
10
include ( CMakeDependentOption REQUIRED )
@@ -35,7 +38,7 @@ if ( static AND ( "${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin" ) )
35
38
endif ()
36
39
37
40
CMAKE_DEPENDENT_OPTION ( static_libraries "Statically link component libraries" OFF "NOT static" ON )
38
- CMAKE_DEPENDENT_OPTION ( static_njoy "Statically link the njoy component library" OFF "NOT static;NOT static_libraries" ON )
41
+ CMAKE_DEPENDENT_OPTION ( static_njoy "Statically link the njoy component library" OFF "NOT static;NOT static_libraries" ON )
39
42
40
43
if ( profile_generate AND profile_use )
41
44
message ( FATAL_ERROR "Cannot both generate and use execution profile in the same configuration" )
@@ -46,7 +49,7 @@ if ( profile_generate )
46
49
endif ()
47
50
48
51
set ( CMAKE_Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR} /fortran_modules" CACHE PATH "directory for fortran modules" )
49
- file ( MAKE_DIRECTORY "${CMAKE_Fortran_MODULE_DIRECTORY} " )
52
+ file ( MAKE_DIRECTORY "${CMAKE_Fortran_MODULE_DIRECTORY} " )
50
53
51
54
set ( njoy_GNU_Linux_common_flags "-Wall" "-Wextra" )
52
55
set ( njoy_GNU_Linux_DEBUG_flags "-O0" "-g" "-gdwarf-3" "-frounding-math" "-fsignaling-nans" "-fcheck=all" "-ffpe-trap=invalid,zero,overflow" )
@@ -89,7 +92,7 @@ if ( static_njoy )
89
92
set ( njoy_library_linkage STATIC )
90
93
else ()
91
94
set ( njoy_library_linkage SHARED )
92
- endif ()
95
+ endif ()
93
96
94
97
set ( CMAKE_SKIP_BUILD_RPATH FALSE )
95
98
set ( CMAKE_BUILD_WITH_INSTALL_RPATH FALSE )
@@ -119,7 +122,7 @@ execute_process(
119
122
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
120
123
OUTPUT_VARIABLE GIT_HASH
121
124
OUTPUT_STRIP_TRAILING_WHITESPACE
122
- )
125
+ )
123
126
124
127
message ( STATUS "" )
125
128
message ( STATUS "-----------------------------------------------------------" )
@@ -130,7 +133,7 @@ message( STATUS "Git commit hash: ${GIT_HASH}" )
130
133
message ( STATUS "" )
131
134
message ( STATUS "-----------------------------------------------------------" )
132
135
133
- add_library ( njoy ${njoy_library_linkage}
136
+ add_library ( njoy ${njoy_library_linkage}
134
137
"${CMAKE_CURRENT_SOURCE_DIR} /src/acecm.f90"
135
138
"${CMAKE_CURRENT_SOURCE_DIR} /src/acedo.f90"
136
139
"${CMAKE_CURRENT_SOURCE_DIR} /src/acefc.f90"
@@ -175,20 +178,20 @@ target_include_directories( njoy PUBLIC "${CMAKE_Fortran_MODULE_DIRECTORY}" )
175
178
176
179
set ( PREFIX njoy_${CMAKE_Fortran_COMPILER_ID}_${CMAKE_SYSTEM_NAME} )
177
180
178
- target_compile_options ( njoy PRIVATE
181
+ target_compile_options ( njoy PRIVATE
179
182
${${PREFIX}_common_flags}
180
183
$< $< BOOL:${njoy_strict} > :${${PREFIX} _njoy_strict_flags}>
181
184
$< $< BOOL:${static} > :${${PREFIX} _static_flags}>
182
185
$< $< BOOL:${is_subproject} > :${${PREFIX} _subproject_flags}>
183
186
$< $< NOT:$< BOOL:${is_subproject} > > :${${PREFIX} _base_project_flags}>
184
187
$< $< CONFIG:DEBUG> :
185
- ${${PREFIX}_DEBUG_flags}
188
+ ${${PREFIX}_DEBUG_flags}
186
189
$< $< BOOL:${coverage} > :${${PREFIX} _coverage_flags}> >
187
190
$< $< CONFIG:RELEASE> :
188
- ${${PREFIX}_RELEASE_flags}
189
- $< $< BOOL:${profile_generate} > :${${PREFIX} _profile_generate_flags}>
190
- $< $< BOOL:${profile_use} > :${${PREFIX} _profile_use_flags}>
191
- $< $< BOOL:${link_time_optimization} > :${${PREFIX} _link_time_optimization_flags}>
191
+ ${${PREFIX}_RELEASE_flags}
192
+ $< $< BOOL:${profile_generate} > :${${PREFIX} _profile_generate_flags}>
193
+ $< $< BOOL:${profile_use} > :${${PREFIX} _profile_use_flags}>
194
+ $< $< BOOL:${link_time_optimization} > :${${PREFIX} _link_time_optimization_flags}>
192
195
$< $< BOOL:${nonportable_optimization} > :${${PREFIX} _nonportable_optimization_flags}> >
193
196
${Fortran_appended_flags} ${njoy_appended_flags} )
194
197
@@ -197,27 +200,27 @@ target_link_libraries( njoy PUBLIC "$<$<AND:$<CONFIG:RELEASE>,$<BOOL:${link_time
197
200
if ( NOT is_subproject )
198
201
add_executable ( njoy_executable src/main.f90 )
199
202
set_target_properties ( njoy_executable PROPERTIES OUTPUT_NAME njoy )
200
- target_compile_options ( njoy_executable PRIVATE
203
+ target_compile_options ( njoy_executable PRIVATE
201
204
${${PREFIX}_common_flags}
202
205
$< $< BOOL:${njoy_strict} > :${${PREFIX} _njoy_strict_flags}>
203
206
$< $< BOOL:${static} > :${${PREFIX} _static_flags}>
204
207
$< $< BOOL:${is_subproject} > :${${PREFIX} _subproject_flags}>
205
208
$< $< NOT:$< BOOL:${is_subproject} > > :${${PREFIX} _base_project_flags}>
206
209
$< $< CONFIG:DEBUG> :
207
- ${${PREFIX}_DEBUG_flags}
210
+ ${${PREFIX}_DEBUG_flags}
208
211
$< $< BOOL:${coverage} > :${${PREFIX} _coverage_flags}> >
209
212
$< $< CONFIG:RELEASE> :
210
- ${${PREFIX}_RELEASE_flags}
211
- $< $< BOOL:${profile_generate} > :${${PREFIX} _profile_generate_flags}>
212
- $< $< BOOL:${profile_use} > :${${PREFIX} _profile_use_flags}>
213
- $< $< BOOL:${link_time_optimization} > :${${PREFIX} _link_time_optimization_flags}>
213
+ ${${PREFIX}_RELEASE_flags}
214
+ $< $< BOOL:${profile_generate} > :${${PREFIX} _profile_generate_flags}>
215
+ $< $< BOOL:${profile_use} > :${${PREFIX} _profile_use_flags}>
216
+ $< $< BOOL:${link_time_optimization} > :${${PREFIX} _link_time_optimization_flags}>
214
217
$< $< BOOL:${nonportable_optimization} > :${${PREFIX} _nonportable_optimization_flags}> >
215
218
${Fortran_appended_flags} ${njoy_appended_flags} )
216
219
target_link_libraries ( njoy_executable PUBLIC njoy )
217
220
endif ()
218
221
219
222
if ( NOT is_subproject )
220
- enable_testing ()
223
+ enable_testing ()
221
224
add_subdirectory ( tests )
222
225
endif ()
223
226
@@ -226,21 +229,21 @@ if ( NOT is_subproject )
226
229
list ( APPEND installation_targets njoy_executable )
227
230
endif ()
228
231
229
- install ( TARGETS ${installation_targets}
232
+ install ( TARGETS ${installation_targets}
230
233
RUNTIME DESTINATION bin
231
234
LIBRARY DESTINATION lib
232
235
ARCHIVE DESTINATION lib
233
- PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
234
- GROUP_EXECUTE GROUP_READ
236
+ PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
237
+ GROUP_EXECUTE GROUP_READ
235
238
WORLD_EXECUTE WORLD_READ )
236
239
237
- file ( RELATIVE_PATH relative_fortran_module_files_path
240
+ file ( RELATIVE_PATH relative_fortran_module_files_path
238
241
"${CMAKE_CURRENT_SOURCE_DIR} " "${CMAKE_Fortran_MODULE_DIRECTORY} " )
239
- file ( GLOB fortran_module_files
242
+ file ( GLOB fortran_module_files
240
243
RELATIVE "${relative_fortran_module_files_path} "
241
244
*.mod )
242
- install ( FILES ${fortran_module_files}
245
+ install ( FILES ${fortran_module_files}
243
246
DESTINATION include
244
- PERMISSIONS OWNER_READ OWNER_WRITE
245
- GROUP_READ
247
+ PERMISSIONS OWNER_READ OWNER_WRITE
248
+ GROUP_READ
246
249
WORLD_READ )
0 commit comments