~ubuntu-branches/debian/sid/simpleitk/sid

« back to all changes in this revision

Viewing changes to Wrapping/Python/CMakeLists.txt

  • Committer: Package Import Robot
  • Author(s): Ghislain Antony Vaillant
  • Date: 2017-11-02 08:49:18 UTC
  • Revision ID: package-import@ubuntu.com-20171102084918-7hs09ih668xq87ej
Tags: upstream-1.0.1
ImportĀ upstreamĀ versionĀ 1.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
cmake_minimum_required ( VERSION 2.8.1 FATAL_ERROR )
 
2
 
 
3
project( SimpleITK_Python )
 
4
 
 
5
 
 
6
if(POLICY CMP0026)
 
7
  # Allow use of the LOCATION target property.
 
8
  #
 
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)
 
13
endif()
 
14
 
 
15
include(../../CMake/sitkProjectLanguageCommon.cmake NO_POLICY_SCOPE)
 
16
 
 
17
if ( SITK_UNDEFINED_SYMBOLS_ALLOWED )
 
18
  set( _QUIET_LIBRARY "QUIET" )
 
19
else()
 
20
  set( _QUIET_LIBRARY "REQUIRED" )
 
21
endif()
 
22
find_package ( PythonInterp REQUIRED )
 
23
find_package ( PythonLibs ${_QUIET_LIBRARY} )
 
24
include_directories ( ${SimpleITK_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR} )
 
25
 
 
26
#
 
27
# Options
 
28
#
 
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 )
 
35
 
 
36
 
 
37
set_source_files_properties ( SimpleITK.i PROPERTIES CPLUSPLUS ON )
 
38
 
 
39
# Run swig
 
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)
 
43
endif()
 
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
 
48
  SimpleITK.i
 
49
  sitkPyCommand.cxx )
 
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}
 
56
    PRIVATE
 
57
    $<$<CONFIG:Debug>:SWIG_PYTHON_INTERPRETER_NO_DEBUG>)
 
58
endif()
 
59
sitk_target_link_libraries_with_dynamic_lookup( ${SWIG_MODULE_SimpleITKPython_TARGET_NAME} ${PYTHON_LIBRARIES} )
 
60
 
 
61
target_include_directories( ${SWIG_MODULE_SimpleITKPython_TARGET_NAME}
 
62
  PRIVATE
 
63
    ${PYTHON_INCLUDE_DIR} )
 
64
target_include_directories( ${SWIG_MODULE_SimpleITKPython_TARGET_NAME}
 
65
  PRIVATE
 
66
    ${CMAKE_CURRENT_SOURCE_DIR} )
 
67
 
 
68
set_target_properties( ${SWIG_MODULE_SimpleITK_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
 
69
if ( MSVC )
 
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}")
 
76
    endforeach( )
 
77
endif()
 
78
set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-w")
 
79
sitk_strip_target( ${SWIG_MODULE_SimpleITKPython_TARGET_NAME} )
 
80
 
 
81
 
 
82
 
 
83
# Installation
 
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}" )
 
89
 
 
90
set(SimpleITK_PYTHON_TEST_EXECUTABLE "${PYTHON_EXECUTABLE}" CACHE INTERNAL "Python executable for testing." FORCE )
 
91
 
 
92
if(DEFINED SKBUILD)
 
93
  # Currently this installation
 
94
  install(FILES
 
95
      ${CMAKE_CURRENT_BINARY_DIR}/SimpleITK.py
 
96
      ${CMAKE_CURRENT_SOURCE_DIR}/Packaging/__init__.py
 
97
      ${SimpleITK_DOC_FILES}
 
98
    DESTINATION SimpleITK
 
99
    COMPONENT Runtime
 
100
    )
 
101
 
 
102
  install(TARGETS ${SWIG_MODULE_SimpleITKPython_TARGET_NAME}
 
103
    RUNTIME DESTINATION SimpleITK
 
104
    LIBRARY DESTINATION SimpleITK
 
105
    COMPONENT Runtime
 
106
    )
 
107
else()
 
108
  include(LegacyPackaging.cmake)
 
109
endif()