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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
# If a specific Python version should be used, it will be defined in ADIOS2_Python_Version.txt
if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/ADIOS2_Python_Version.txt)
file(READ ${CMAKE_CURRENT_LIST_DIR}/ADIOS2_Python_Version.txt PYVER)
include(${PROJECT_SOURCE_DIR}/cmake/DetectPythonOptions.cmake)
endif()
include(${PROJECT_SOURCE_DIR}/cmake/ADIOSFunctions.cmake)
Python_add_library(adios2_py${PYVER} MODULE
WITH_SOABI
py11ADIOS.cpp
py11IO.cpp
py11Variable.cpp
py11Attribute.cpp
py11Engine.cpp
py11Operator.cpp
py11Query.cpp
py11glue.cpp
)
target_compile_definitions(adios2_py${PYVER} PRIVATE "ADIOS2_PYTHON_MODULE_NAME=adios2_bindings${ADIOS2_LIBRARY_SUFFIX}")
if(ADIOS2_HAVE_MPI)
target_sources(adios2_py${PYVER} PRIVATE
py11ADIOSMPI.cpp
py11IOMPI.cpp
)
set(maybe_adios2_cxx11_mpi adios2_cxx11_mpi)
set(maybe_adios2_core_mpi adios2_core_mpi)
set(maybe_mpi4py Python::mpi4py)
else()
set(maybe_adios2_cxx11_mpi)
set(maybe_adios2_core_mpi)
set(maybe_mpi4py)
endif()
target_link_libraries(adios2_py${PYVER} PRIVATE
${maybe_adios2_cxx11_mpi} adios2_cxx11
${maybe_adios2_core_mpi} adios2_core
adios2::thirdparty::pybind11
${maybe_mpi4py}
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/__init__.py.in
${CMAKE_PYTHON_OUTPUT_DIRECTORY}/adios2/bindings/__init__.py
@ONLY
)
# usercustomize.py will be read by python before everything else.
# This is needed for Windows since Windows requires to point Python to the dll
# locations of ADIOS2 during our unit tests execution.
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/usercustomize.py.in
${CMAKE_PYTHON_OUTPUT_DIRECTORY}/usercustomize.py
@ONLY
)
# We need the $<0:> for the Windows python unittests to work
set_target_properties(adios2_py${PYVER} PROPERTIES
CXX_VISIBILITY_PRESET hidden
OUTPUT_NAME adios2_bindings${ADIOS2_LIBRARY_SUFFIX}
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/adios2/bindings$<0:>
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/adios2/bindings$<0:>
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/adios2/bindings$<0:>
PDB_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/adios2/bindings$<0:>
COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/adios2/bindings$<0:>
)
set(install_location "${CMAKE_INSTALL_PYTHONDIR}/adios2")
if (ADIOS2_USE_PIP)
set(install_location ${CMAKE_INSTALL_LIBDIR})
endif()
string(REGEX REPLACE "[^/]+" ".." relative_base "${install_location}/bindings")
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
set_property(TARGET adios2_py${PYVER} APPEND PROPERTY
INSTALL_RPATH "$ORIGIN/${relative_base}/${CMAKE_INSTALL_LIBDIR}"
)
endif()
install(TARGETS adios2_py${PYVER}
DESTINATION ${install_location}/bindings
COMPONENT adios2_python-python${PYVER}
)
install(FILES ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/adios2/bindings/__init__.py
DESTINATION ${install_location}/bindings
COMPONENT adios2_python-python
)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test
DESTINATION ${install_location}
COMPONENT adios2_python-python
)
|