1
cmake_minimum_required ( VERSION 2.8.1 FATAL_ERROR )
3
project( SimpleITK_Python )
7
# Allow use of the LOCATION target property.
9
# These locations are use in a convoluted fashion with the runtime
10
# configuration. This system should be refactored to support
11
# generator expression. This would allow the use of the new policy.
12
cmake_policy(SET CMP0026 OLD)
15
include(../../CMake/sitkProjectLanguageCommon.cmake NO_POLICY_SCOPE)
17
if ( SITK_UNDEFINED_SYMBOLS_ALLOWED )
18
set( _QUIET_LIBRARY "QUIET" )
20
set( _QUIET_LIBRARY "REQUIRED" )
22
find_package ( PythonInterp REQUIRED )
23
find_package ( PythonLibs ${_QUIET_LIBRARY} )
24
include_directories ( ${SimpleITK_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR} )
29
option ( SimpleITK_PYTHON_THREADS "Enable threaded python usage by unlocking the GIL." ON )
30
mark_as_advanced( SimpleITK_PYTHON_THREADS )
31
option ( SimpleITK_PYTHON_EGG "Add building of python eggs to the dist target." OFF )
32
mark_as_advanced( SimpleITK_PYTHON_EGG )
33
option ( SimpleITK_PYTHON_WHEEL "Add building of python wheels to the dist target." ON )
34
mark_as_advanced( SimpleITK_PYTHON_WHEEL )
37
set_source_files_properties ( SimpleITK.i PROPERTIES CPLUSPLUS ON )
40
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_GLOBAL_FLAGS} -features autodoc=1 -keyword )
41
if( SimpleITK_PYTHON_THREADS )
42
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -threads)
44
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR})
45
set(SWIG_MODULE_SimpleITK_EXTRA_DEPS ${SWIG_EXTRA_DEPS}
46
${CMAKE_CURRENT_SOURCE_DIR}/Python.i )
47
SWIG_add_module ( SimpleITK python
50
set(SWIG_MODULE_SimpleITKPython_TARGET_NAME "${SWIG_MODULE_SimpleITK_TARGET_NAME}")
51
target_link_libraries( ${SWIG_MODULE_SimpleITKPython_TARGET_NAME} ${SimpleITK_LIBRARIES} )
52
if(NOT PYTHON_DEBUG_LIBRARIES AND MSVC)
53
# If there is not a specified debug library use the release library,
54
# via a special sitkPython.h header.
55
target_compile_definitions(${SWIG_MODULE_SimpleITKPython_TARGET_NAME}
57
$<$<CONFIG:Debug>:SWIG_PYTHON_INTERPRETER_NO_DEBUG>)
59
sitk_target_link_libraries_with_dynamic_lookup( ${SWIG_MODULE_SimpleITKPython_TARGET_NAME} ${PYTHON_LIBRARIES} )
61
target_include_directories( ${SWIG_MODULE_SimpleITKPython_TARGET_NAME}
63
${PYTHON_INCLUDE_DIR} )
64
target_include_directories( ${SWIG_MODULE_SimpleITKPython_TARGET_NAME}
66
${CMAKE_CURRENT_SOURCE_DIR} )
68
set_target_properties( ${SWIG_MODULE_SimpleITK_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
70
foreach ( CMAKE_CONFIGURATION_TYPE ${CMAKE_CONFIGURATION_TYPES} )
71
string(TOUPPER ${CMAKE_CONFIGURATION_TYPE} CMAKE_CONFIGURATION_TYPE)
72
set_target_properties(${SWIG_MODULE_SimpleITK_TARGET_NAME}
73
PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${CMAKE_CONFIGURATION_TYPE} "${CMAKE_CURRENT_BINARY_DIR}")
74
set_target_properties(${SWIG_MODULE_SimpleITK_TARGET_NAME}
75
PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${CMAKE_CONFIGURATION_TYPE} "${CMAKE_CURRENT_BINARY_DIR}")
78
set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-w")
79
sitk_strip_target( ${SWIG_MODULE_SimpleITKPython_TARGET_NAME} )
84
set( SimpleITK_PYTHON_PACKAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}" )
85
file( TO_NATIVE_PATH "${SimpleITK_PYTHON_PACKAGE_DIR}" SimpleITK_PYTHON_PACKAGE_DIR )
86
get_target_property( SimpleITK_BINARY_MODULE ${SWIG_MODULE_SimpleITKPython_TARGET_NAME} LOCATION )
87
get_filename_component( SimpleITK_BINARY_MODULE "${SimpleITK_BINARY_MODULE}" NAME )
88
set( SimpleITK_BINARY_MODULE "${CMAKE_CURRENT_BINARY_DIR}/${SimpleITK_BINARY_MODULE}" )
90
set(SimpleITK_PYTHON_TEST_EXECUTABLE "${PYTHON_EXECUTABLE}" CACHE INTERNAL "Python executable for testing." FORCE )
93
# Currently this installation
95
${CMAKE_CURRENT_BINARY_DIR}/SimpleITK.py
96
${CMAKE_CURRENT_SOURCE_DIR}/Packaging/__init__.py
97
${SimpleITK_DOC_FILES}
102
install(TARGETS ${SWIG_MODULE_SimpleITKPython_TARGET_NAME}
103
RUNTIME DESTINATION SimpleITK
104
LIBRARY DESTINATION SimpleITK
108
include(LegacyPackaging.cmake)