File: CMakeLists.txt

package info (click to toggle)
tomopy 1.10.4%2Bds1-7
  • links: PTS, VCS
  • area: contrib
  • in suites: bookworm
  • size: 16,112 kB
  • sloc: cpp: 7,861; python: 6,065; ansic: 5,403; sh: 169; makefile: 152
file content (104 lines) | stat: -rw-r--r-- 4,350 bytes parent folder | download
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()