forked from llnl/Adiak
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
68 lines (58 loc) · 2.25 KB
/
CMakeLists.txt
File metadata and controls
68 lines (58 loc) · 2.25 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
set(PYADIAK_BINDING_SOURCES
mod.cpp
pyadiak_tool.cpp
pyadiak.cpp
types.cpp
)
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
set(PYADIAK_SYSCONFIG_SCHEME "posix_user" CACHE STRING "Scheme used for searching for pyadiak's install path. Valid options can be determined with 'sysconfig.get_scheme_names()'")
execute_process(
COMMAND
${Python_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/get_python_install_paths.py purelib ${PYADIAK_SYSCONFIG_SCHEME}
OUTPUT_VARIABLE
PYADIAK_SITELIB)
execute_process(
COMMAND
${Python_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/get_python_install_paths.py platlib ${PYADIAK_SYSCONFIG_SCHEME}
OUTPUT_VARIABLE
PYADIAK_SITEARCH)
set(PYADIAK_SITELIB "${PYADIAK_SITELIB}/pyadiak")
set(PYADIAK_SITEARCH "${PYADIAK_SITEARCH}/pyadiak")
pybind11_add_module(__pyadiak_impl ${PYADIAK_BINDING_SOURCES})
target_link_libraries(__pyadiak_impl PUBLIC adiak)
target_compile_features(__pyadiak_impl PUBLIC cxx_std_11)
target_include_directories(__pyadiak_impl PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
execute_process(
COMMAND python3 -c "import mpi4py, os; print(os.path.join(os.path.dirname(mpi4py.__file__), 'include'))"
OUTPUT_VARIABLE MPI4PY_INCLUDE_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
include_directories(${MPI4PY_INCLUDE_DIR})
add_custom_target(
pyadiak_py_source_copy ALL # Always build pycaliper_test
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/pyadiak
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/pyadiak ${CMAKE_CURRENT_BINARY_DIR}/pyadiak
COMMENT "Copying pyadiak Python source to ${CMAKE_CURRENT_BINARY_DIR}/pyadiak"
)
add_dependencies(__pyadiak_impl pyadiak_py_source_copy)
install(
DIRECTORY
pyadiak/
DESTINATION
${PYADIAK_SITELIB}
)
install(
TARGETS
__pyadiak_impl
ARCHIVE DESTINATION
${PYADIAK_SITEARCH}
LIBRARY DESTINATION
${PYADIAK_SITEARCH}
)
# Put the compiled extension inside the pyadiak package in the build tree
set(_py_pkg_dir "${CMAKE_BINARY_DIR}/src/interface/python/pyadiak")
set_target_properties(__pyadiak_impl PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${_py_pkg_dir}" # where the .so (MODULE/LIBRARY) goes
RUNTIME_OUTPUT_DIRECTORY "${_py_pkg_dir}"
ARCHIVE_OUTPUT_DIRECTORY "${_py_pkg_dir}"
)