1
+ cmake_minimum_required (VERSION 3.17.2...3.29)
2
+ project (${SKBUILD_PROJECT_NAME} LANGUAGES Fortran)
3
+
4
+ find_package (
5
+ Python
6
+ COMPONENTS Interpreter Development.Module NumPy
7
+ REQUIRED)
8
+
9
+ # F2PY headers
10
+ execute_process (
11
+ COMMAND "${PYTHON_EXECUTABLE} " -c
12
+ "import numpy.f2py; print(numpy.f2py.get_include())"
13
+ OUTPUT_VARIABLE F2PY_INCLUDE_DIR
14
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
15
+
16
+ add_library (fortranobject OBJECT "${F2PY_INCLUDE_DIR} /fortranobject.c" )
17
+
18
+ # Find the FFTW3 installation on your system
19
+ find_package (PkgConfig REQUIRED)
20
+ pkg_search_module(FFTW REQUIRED fftw3 IMPORTED_TARGET)
21
+ include_directories (PkgConfig::FFTW)
22
+ link_libraries (PkgConfig::FFTW)
23
+
24
+ target_link_libraries (fortranobject PUBLIC Python::NumPy)
25
+ target_include_directories (fortranobject PUBLIC "${F2PY_INCLUDE_DIR} " )
26
+ set_property (TARGET fortranobject PROPERTY POSITION_INDEPENDENT_CODE ON )
27
+
28
+ add_custom_command (
29
+ OUTPUT mccoremodule.c mccore-f2pywrappers.f
30
+ DEPENDS src/relmt/mccore.f90
31
+ VERBATIM
32
+ COMMAND "${Python_EXECUTABLE} " -m numpy.f2py
33
+ "${CMAKE_CURRENT_SOURCE_DIR} /src/relmt/mccore.f90" -m mccore --lower)
34
+
35
+ python_add_library(
36
+ mccore MODULE "${CMAKE_CURRENT_BINARY_DIR} /mccoremodule.c"
37
+ "${CMAKE_CURRENT_BINARY_DIR} /mccore-f2pywrappers.f"
38
+ "${CMAKE_CURRENT_SOURCE_DIR} /src/relmt/mccore.f90" WITH_SOABI)
39
+ target_link_libraries (mccore PRIVATE fortranobject)
40
+
41
+ install (TARGETS mccore DESTINATION .)
0 commit comments