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)
|