File: sitkProjectLanguageCommon.cmake

package info (click to toggle)
simpleitk 1.0.1-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 75,056 kB
  • sloc: cpp: 25,403; python: 3,060; sh: 1,131; ansic: 369; java: 260; cs: 215; makefile: 51; ruby: 47; tcl: 22
file content (115 lines) | stat: -rw-r--r-- 3,300 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
105
106
107
108
109
110
111
112
113
114
115

foreach(p
    CMP0042 # CMake 3.0
    CMP0063 # CMake 3.3.2
    )
  if(POLICY ${p})
    cmake_policy(SET ${p} NEW)
  endif()
endforeach()


#
# Project setup
#

if (NOT CMAKE_PROJECT_NAME STREQUAL "SimpleITK" )

  set( SimpleITK_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../.." )
  list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_LIST_DIR}")

  find_package(SimpleITK REQUIRED)
  include(${SimpleITK_USE_FILE})

  if(MSVC)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
  endif()
else()
  set(SimpleITK_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
endif()


# Setup build locations to the wrapping language sub directories
if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY OR CMAKE_PROJECT_NAME STREQUAL "SimpleITK" )
  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
endif()
if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY OR CMAKE_PROJECT_NAME STREQUAL "SimpleITK" )
  set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
endif()
if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY OR CMAKE_PROJECT_NAME STREQUAL "SimpleITK" )
  set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
endif()


# Since most language libraries are not installed with CMake, the
# RPATH does not get fixed up during installation. So skip the RPATH
if(NOT DEFINED CMAKE_SKIP_BUILD_RPATH)
  set(CMAKE_SKIP_BUILD_RPATH 1)
endif()

if(NOT TARGET dist)
  add_custom_target( dist ${CMAKE_COMMAND} -E echo "Finished generating wrapped package for distribution..." )
endif()

# TODO these should be moved into UseSimpleITK
if(NOT SimpleITK_DOC_FILES)
  set ( SimpleITK_DOC_FILES
    "${SimpleITK_SOURCE_DIR}/LICENSE"
    "${SimpleITK_SOURCE_DIR}/NOTICE"
    "${SimpleITK_SOURCE_DIR}/Readme.md"
  )
endif()

#
# General SWIG configuration
#

find_package ( SWIG 3 REQUIRED )

include (sitkUseSWIG)

set(SimpleITK_WRAPPING_COMMON_DIR
  ${SimpleITK_SOURCE_DIR}/Wrapping/Common)

if ( CMAKE_PROJECT_NAME STREQUAL "SimpleITK" )
  file(GLOB SWIG_EXTRA_DEPS
    "${SimpleITK_SOURCE_DIR}/Code/Common/include/*.h"
    "${SimpleITK_SOURCE_DIR}/Code/Registration/include/*.h"
    "${SimpleITK_SOURCE_DIR}/Code/IO/include/*.h")
  list( APPEND SWIG_EXTRA_DEPS
    "${SimpleITK_BINARY_DIR}/Code/BasicFilters/include/SimpleITKBasicFiltersGeneratedHeaders.h"
    ${SimpleITKBasicFiltersGeneratedHeader} )
else()
  find_file( _file
    NAMES SimpleITKBasicFiltersGeneratedHeaders.h
    PATHS ${SimpleITK_INCLUDE_DIRS}
    NO_DEFAULT_PATH )
  list( APPEND SWIG_EXTRA_DEPS ${_file} )
endif()

# make a manual list of dependencies for the Swig.i files
list( APPEND SWIG_EXTRA_DEPS
  "${SimpleITK_WRAPPING_COMMON_DIR}/SimpleITK_Common.i"
  )

# check if uint64_t is the same as unsigned long
try_compile(SITK_ULONG_SAME_AS_UINT64
  ${PROJECT_BINARY_DIR}/CMakeTmp
  ${SimpleITK_SOURCE_DIR}/CMake/same_uint64_ulong.cxx )

# when "-DSWIGWORDSIZE64" is defined SWIG used unsigned long for uint64_t types
if(${SITK_ULONG_SAME_AS_UINT64} )
  set ( CMAKE_SWIG_GLOBAL_FLAGS "-DSWIGWORDSIZE64" )
endif()

set ( CMAKE_SWIG_GLOBAL_FLAGS -I${SimpleITK_WRAPPING_COMMON_DIR} ${CMAKE_SWIG_GLOBAL_FLAGS} )

include(sitkTargetLinkLibrariesWithDynamicLookup)
sitk_check_dynamic_lookup(MODULE
  SHARED
  SITK_UNDEFINED_SYMBOLS_ALLOWED
  )

include(sitkStripOption)
include(sitkForbidDownloadsOption)
include(sitkSITKLegacyNaming)