0
|
1 cmake_minimum_required(VERSION 2.8)
|
|
2 project(OrthancPython)
|
|
3
|
|
4 set(PLUGIN_VERSION "mainline")
|
|
5
|
|
6
|
|
7 set(PYTHON_VERSION "3.6" CACHE STRING "Version of Python to be used")
|
|
8 set(PYTHON_WINDOWS_ROOT "" CACHE STRING "")
|
|
9 set(USE_SYSTEM_BOOST ON CACHE BOOL "Use the system version of Boost")
|
|
10 set(USE_SYSTEM_JSONCPP ON CACHE BOOL "Use the system version of JsonCpp")
|
|
11 set(USE_LEGACY_JSONCPP OFF CACHE BOOL "Use the old branch 0.x.y of JsonCpp, that does not require a C++11 compiler (for LSB and old versions of Visual Studio)")
|
|
12 set(USE_SYSTEM_ORTHANC_SDK ON CACHE BOOL "Use the system version of the Orthanc plugin SDK")
|
|
13
|
|
14
|
|
15 include(CheckIncludeFile)
|
|
16 include(CheckIncludeFileCXX)
|
|
17 include(CheckIncludeFiles)
|
|
18 include(CheckLibraryExists)
|
|
19
|
|
20 if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
|
21 set(PYTHON_INCLUDE_DIRS ${PYTHON_WINDOWS_ROOT}/include)
|
|
22 set(PYTHON_LIBRARIES ${PYTHON_WINDOWS_ROOT}/libs/libpython27.a)
|
|
23
|
|
24 else()
|
|
25 find_package(PkgConfig REQUIRED)
|
|
26 pkg_check_modules(PYTHON_1 python-${PYTHON_VERSION}-embed)
|
|
27
|
|
28 if (PYTHON_1_FOUND)
|
|
29 set(PYTHON_INCLUDE_DIRS ${PYTHON_1_INCLUDE_DIRS})
|
|
30 set(PYTHON_LIBRARIES ${PYTHON_1_LIBRARIES})
|
|
31 else()
|
|
32 pkg_check_modules(PYTHON_2 REQUIRED python-${PYTHON_VERSION})
|
|
33 set(PYTHON_INCLUDE_DIRS ${PYTHON_2_INCLUDE_DIRS})
|
|
34 set(PYTHON_LIBRARIES ${PYTHON_2_LIBRARIES})
|
|
35 endif()
|
|
36 endif()
|
|
37
|
|
38 set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/Resources/Orthanc)
|
|
39 include(${ORTHANC_ROOT}/Resources/CMake/Compiler.cmake)
|
|
40 include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
|
|
41 include(${ORTHANC_ROOT}/Resources/CMake/BoostConfiguration.cmake)
|
|
42 include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake)
|
|
43
|
|
44 if (STATIC_BUILD OR NOT USE_SYSTEM_ORTHANC_SDK)
|
|
45 include_directories(
|
|
46 ${ORTHANC_ROOT}/Sdk-1.5.7
|
|
47 )
|
|
48 else()
|
|
49 CHECK_INCLUDE_FILE_CXX(orthanc/OrthancCPlugin.h HAVE_ORTHANC_H)
|
|
50 if (NOT HAVE_ORTHANC_H)
|
|
51 message(FATAL_ERROR "Please install the headers of the Orthanc plugins SDK")
|
|
52 endif()
|
|
53 endif()
|
|
54
|
|
55 add_definitions(
|
|
56 -DHAS_ORTHANC_EXCEPTION=0
|
|
57 )
|
|
58
|
|
59 include_directories(
|
|
60 ${ORTHANC_ROOT}/Plugins/Include
|
|
61 ${ORTHANC_ROOT}/Plugins/Samples/Common
|
|
62 ${PYTHON_INCLUDE_DIRS}
|
|
63 )
|
|
64
|
|
65 add_library(OrthancPython SHARED
|
|
66 ${BOOST_SOURCES}
|
|
67 ${JSONCPP_SOURCES}
|
|
68 ${ORTHANC_ROOT}/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp
|
|
69 Sources/Autogenerated/sdk.cpp
|
|
70 Sources/OnChangeCallback.cpp
|
|
71 Sources/OnStoredInstanceCallback.cpp
|
|
72 Sources/Plugin.cpp
|
|
73 Sources/PythonFunction.cpp
|
|
74 Sources/PythonLock.cpp
|
|
75 Sources/PythonModule.cpp
|
|
76 Sources/PythonObject.cpp
|
|
77 Sources/PythonString.cpp
|
|
78 Sources/RestCallbacks.cpp
|
|
79 )
|
|
80
|
|
81 target_link_libraries(OrthancPython ${PYTHON_LIBRARIES})
|
|
82
|
|
83 add_definitions(-DPLUGIN_VERSION="${PLUGIN_VERSION}")
|
|
84
|
|
85 set_target_properties(OrthancPython PROPERTIES
|
|
86 VERSION ${PLUGIN_VERSION}
|
|
87 SOVERSION ${PLUGIN_VERSION}
|
|
88 )
|
|
89
|
|
90 install(
|
|
91 TARGETS OrthancPython
|
|
92 RUNTIME DESTINATION lib # Destination for Windows
|
|
93 LIBRARY DESTINATION share/orthanc/plugins # Destination for Linux
|
|
94 )
|