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 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
################################################################################
# #
# General #
# #
################################################################################
# ensure PIC flag is set
set(PYTHON_SITE_DIR ${CMAKE_INSTALL_PREFIX}/source)
set(BUILD_STATIC_LIBS ON CACHE BOOL "Build static libraries")
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries")
set(PTL_DEVELOPER_INSTALL OFF CACHE BOOL "Install headers, cmake export, and shared libs" FORCE)
set(CMAKE_POSITION_INDEPENDENT_CODE ON
CACHE BOOL "Position independent code" FORCE)
set(CMAKE_INSTALL_LIBDIR ${PYTHON_SITE_DIR}/tomopy/util/extern
CACHE PATH "Installation directory of libraries" FORCE)
#------------------------------------------------------------------------------#
#
# PTL submodule
#
#------------------------------------------------------------------------------#
#checkout_git_submodule(RECURSIVE TEST_FILE CMakeLists.txt
# RELATIVE_PATH source/PTL WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
if(TOMOPY_USE_PTL)
add_subdirectory(PTL)
if(BUILD_STATIC_LIBS)
list(APPEND TOMOPY_EXTERNAL_LIBRARIES ptl-static)
else()
list(APPEND TOMOPY_EXTERNAL_LIBRARIES ptl-shared)
endif()
list(APPEND ${PROJECT_NAME}_DEFINITIONS TOMOPY_USE_PTL)
endif()
#------------------------------------------------------------------------------#
#
# TomoPy Python module
#
#------------------------------------------------------------------------------#
# where to place the library
set(OUTPUT_PATH ${CMAKE_BINARY_DIR})
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/libtomo)
#------------------------------------------------------------------------------#
#
# TomoPy Python file configuration
#
#------------------------------------------------------------------------------#
if(NOT SKBUILD)
# helper macro
macro(CONFIG_INSTALL RELATIVE_PATH)
foreach(_SOURCE_FILE ${ARGN})
string(REPLACE "${CMAKE_CURRENT_LIST_DIR}" "${PROJECT_BINARY_DIR}" _BINARY_FILE
"${_SOURCE_FILE}")
configure_file(${_SOURCE_FILE} ${_BINARY_FILE} COPYONLY)
install(FILES ${_BINARY_FILE}
DESTINATION ${PYTHON_SITE_DIR}/tomopy/${RELATIVE_PATH}
COMPONENT python)
endforeach()
endmacro()
# Copy over pure python module, python testing, and setup files
file(GLOB _GENERAL "${CMAKE_CURRENT_LIST_DIR}/tomopy/*.py")
file(GLOB _DATA "${CMAKE_CURRENT_LIST_DIR}/tomopy/data/*.tif"
"${CMAKE_CURRENT_LIST_DIR}/tomopy/data/*.h5")
file(GLOB _MISC "${CMAKE_CURRENT_LIST_DIR}/tomopy/misc/*.py")
file(GLOB _PREP "${CMAKE_CURRENT_LIST_DIR}/tomopy/prep/*.py")
file(GLOB _RECON "${CMAKE_CURRENT_LIST_DIR}/tomopy/recon/*.py")
file(GLOB _SIM "${CMAKE_CURRENT_LIST_DIR}/tomopy/sim/*.py")
file(GLOB _UTIL "${CMAKE_CURRENT_LIST_DIR}/tomopy/util/*.py")
config_install("" ${_GENERAL})
config_install("data" ${_DATA})
config_install("misc" ${_MISC})
config_install("prep" ${_PREP})
config_install("recon" ${_RECON})
config_install("sim" ${_SIM})
config_install("util" ${_UTIL})
# copy of test directory to build directory
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory
${PROJECT_SOURCE_DIR}/test ${PROJECT_BINARY_DIR}/test
WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
# copy over setup.* files to build directory
file(GLOB PYSETUP "${PROJECT_SOURCE_DIR}/setup.*")
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
${PYSETUP} ${PROJECT_BINARY_DIR}/
WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
endif()
#------------------------------------------------------------------------------#
#
# Code coverage
#
#------------------------------------------------------------------------------#
if(TOMOPY_USE_COVERAGE)
foreach(_SRC_FILE ${LIBRARY_SOURCES})
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_BINARY_DIR}" _BIN_FILE "${_SRC_FILE}")
configure_file(${_SRC_FILE} ${_BIN_FILE} COPYONLY)
endforeach()
endif()
|