|
| 1 | +# F2PY headers |
| 2 | +execute_process( |
| 3 | + COMMAND "${TRIQS_PYTHON_EXECUTABLE}" -c |
| 4 | + "import numpy.f2py; print(numpy.f2py.get_include())" |
| 5 | + OUTPUT_VARIABLE F2PY_INCLUDE_DIR |
| 6 | + OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 7 | + |
| 8 | +add_library(fortranobject OBJECT "${F2PY_INCLUDE_DIR}/fortranobject.c") |
| 9 | +target_link_libraries(fortranobject PUBLIC Python::NumPy) |
| 10 | +target_include_directories(fortranobject PUBLIC "${F2PY_INCLUDE_DIR}") |
| 11 | +set_property(TARGET fortranobject PROPERTY POSITION_INDEPENDENT_CODE ON) |
1 | 12 |
|
2 | | -# List the sources |
3 | | -set(module_name "getpmatelk") |
4 | | -set(fortran_src_file "${CMAKE_CURRENT_SOURCE_DIR}/getpmatelk.f90") |
5 | | - |
6 | | -set(generated_module_file ${module_name}${TRIQS_PYTHON_MODULE_EXT}) |
7 | | - |
8 | | -add_custom_target(${module_name} ALL |
9 | | - DEPENDS ${generated_module_file} |
10 | | - ) |
11 | | - |
12 | | -# for Intel fortran compilers we manually have to link against libiomp5 (-fqopenmp is always on in f2py) |
13 | | -if(CMAKE_Fortran_COMPILER_ID MATCHES "Intel") |
14 | | - set(F2PY_INTEL_OPTIONS -liomp5 --fcompiler=intelem) |
15 | | -endif() |
16 | | - |
17 | | -##generate the fortran python wrapper shared library |
18 | 13 | add_custom_command( |
19 | | - OUTPUT ${generated_module_file} |
20 | | - COMMAND ${TRIQS_PYTHON_EXECUTABLE} -m numpy.f2py --build-dir ${CMAKE_CURRENT_BINARY_DIR}/meson --f90exec=${CMAKE_Fortran_COMPILER} --f77exec=${CMAKE_Fortran_COMPILER} ${F2PY_INTEL_OPTIONS} -c ${fortran_src_file} -m ${module_name} > elk_f2py.log |
21 | | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
22 | | - ) |
23 | | - |
24 | | -# where to install |
25 | | -install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DESTINATION |
26 | | -${TRIQS_PYTHON_LIB_DEST_ROOT}/${PROJECT_NAME}/converters/elktools FILES_MATCHING PATTERN "*.so" |
27 | | -PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE |
28 | | -WORLD_READ WORLD_EXECUTE PATTERN "CMakeFiles" EXCLUDE) |
| 14 | + OUTPUT getpmatelkmodule.c getpmatelk-f2pywrappers.f getpmatelk-f2pywrappers2.f90 |
| 15 | + DEPENDS getpmatelk.f90 |
| 16 | + VERBATIM |
| 17 | + COMMAND "${CMAKE_COMMAND}" -E touch "getpmatelkmodule.c" "getpmatelk-f2pywrappers.f" "getpmatelk-f2pywrappers2.f90" |
| 18 | + COMMAND "${TRIQS_PYTHON_EXECUTABLE}" -m numpy.f2py |
| 19 | + "${CMAKE_CURRENT_SOURCE_DIR}/getpmatelk.f90" -m getpmatelk --lower) |
| 20 | + |
| 21 | +Python_add_library(getpmatelk MODULE |
| 22 | + "${CMAKE_CURRENT_BINARY_DIR}/getpmatelkmodule.c" |
| 23 | + "${CMAKE_CURRENT_BINARY_DIR}/getpmatelk-f2pywrappers.f" |
| 24 | + "${CMAKE_CURRENT_BINARY_DIR}/getpmatelk-f2pywrappers2.f90" |
| 25 | + "${CMAKE_CURRENT_SOURCE_DIR}/getpmatelk.f90") |
| 26 | +set_property(TARGET getpmatelk PROPERTY SUFFIX "${TRIQS_PYTHON_MODULE_EXT}") |
| 27 | +target_link_libraries(getpmatelk PRIVATE fortranobject) |
| 28 | + |
| 29 | +install(TARGETS getpmatelk DESTINATION ${TRIQS_PYTHON_LIB_DEST_ROOT}/${PROJECT_NAME}/converters/elktools/elkwrappers) |
29 | 30 |
|
30 | 31 | # user warning |
31 | 32 | message(STATUS "-----------------------------------------------------------------------------") |
32 | 33 | message(STATUS " ******** USER NOTE ******** ") |
33 | 34 | message(STATUS " This version of DFTTools contains interface routines to read Elk's binary ") |
34 | 35 | message(STATUS " files. ") |
35 | 36 | message(STATUS "-----------------------------------------------------------------------------") |
36 | | - |
0 commit comments