Mercurial > hg > orthanc-webviewer
annotate CMakeLists.txt @ 272:2c3555b8eabc
sync
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 01 Jul 2020 11:29:01 +0200 |
parents | 3e9307f6da67 |
children | 52b56343d268 |
rev | line source |
---|---|
0 | 1 # Orthanc - A Lightweight, RESTful DICOM Store |
122 | 2 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
0 | 3 # Department, University Hospital of Liege, Belgium |
226
aee499712ac4
upgrade to year 2020
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
224
diff
changeset
|
4 # Copyright (C) 2017-2020 Osimis S.A., Belgium |
0 | 5 # |
6 # This program is free software: you can redistribute it and/or | |
7 # modify it under the terms of the GNU Affero General Public License | |
8 # as published by the Free Software Foundation, either version 3 of | |
9 # the License, or (at your option) any later version. | |
10 # | |
11 # This program is distributed in the hope that it will be useful, but | |
12 # WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 # Affero General Public License for more details. | |
15 # | |
16 # You should have received a copy of the GNU Affero General Public License | |
17 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
18 | |
19 | |
20 cmake_minimum_required(VERSION 2.8) | |
21 | |
13 | 22 project(OrthancWebViewer) |
0 | 23 |
257 | 24 set(ORTHANC_PLUGIN_VERSION "mainline") |
8 | 25 |
206
d1ed9efdea6c
rename ORTHANC_WEBVIEWER_VERSION as ORTHANC_PLUGIN_VERSION
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
204
diff
changeset
|
26 if (ORTHANC_PLUGIN_VERSION STREQUAL "mainline") |
224
8f30b077cdb8
compilation using holy-build-box
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
215
diff
changeset
|
27 set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "mainline") |
193 | 28 set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg") |
29 else() | |
252 | 30 set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "1.7.0") |
193 | 31 set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web") |
32 endif() | |
33 | |
34 | |
0 | 35 # Parameters of the build |
36 set(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") | |
193 | 37 set(STANDALONE_BUILD ON CACHE BOOL "Standalone build (all the resources are embedded, necessary for releases)") |
0 | 38 set(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages") |
266
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
39 set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc framework (can be \"system\", \"hg\", \"archive\", \"web\" or \"path\")") |
224
8f30b077cdb8
compilation using holy-build-box
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
215
diff
changeset
|
40 set(ORTHANC_FRAMEWORK_VERSION "${ORTHANC_FRAMEWORK_DEFAULT_VERSION}" CACHE STRING "Version of the Orthanc framework") |
193 | 41 set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"") |
42 set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"") | |
0 | 43 |
270 | 44 |
0 | 45 # Advanced parameters to fine-tune linking against system libraries |
175 | 46 set(USE_SYSTEM_ORTHANC_SDK ON CACHE BOOL "Use the system version of the Orthanc plugin SDK") |
270 | 47 set(ORTHANC_FRAMEWORK_STATIC OFF CACHE BOOL "If linking against the Orthanc framework system library, indicates whether this library was statically linked") |
48 mark_as_advanced(ORTHANC_FRAMEWORK_STATIC) | |
0 | 49 |
176
55f8cf4ea237
support for Linux Standard Base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
175
diff
changeset
|
50 |
267 | 51 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR |
52 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR | |
53 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR | |
54 ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD") | |
55 set(ENABLE_PLUGINS_VERSION_SCRIPT OFF) | |
272 | 56 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/Resources/Orthanc/Plugins/VersionScriptPlugins.map") |
267 | 57 endif() |
266
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
58 |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
59 |
193 | 60 # Download and setup the Orthanc framework |
266
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
61 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system") |
269 | 62 set(ENABLE_GOOGLE_TEST ON) |
63 include(${CMAKE_SOURCE_DIR}/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake) | |
0 | 64 |
266
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
65 include_directories( |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
66 ${CMAKE_SOURCE_DIR}/Resources/Orthanc/ |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
67 ) |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
68 link_libraries(OrthancFramework) |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
69 else() |
269 | 70 include(${CMAKE_SOURCE_DIR}/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake) |
272 | 71 include(${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake) |
266
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
72 |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
73 set(ENABLE_LOCALE OFF) # Disable support for locales (notably in Boost) |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
74 set(ENABLE_GOOGLE_TEST ON) |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
75 set(ENABLE_SQLITE ON) |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
76 set(ENABLE_MODULE_JOBS OFF CACHE INTERNAL "") |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
77 set(ENABLE_MODULE_DICOM OFF CACHE INTERNAL "") |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
78 set(HAS_EMBEDDED_RESOURCES ON) |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
79 |
272 | 80 include(${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkConfiguration.cmake) |
81 include_directories(${ORTHANC_FRAMEWORK_ROOT}/Sources) | |
266
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
82 endif() |
191
993dd140bd30
Resort to Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
183
diff
changeset
|
83 |
26 | 84 |
0 | 85 include(${CMAKE_SOURCE_DIR}/Resources/CMake/JavaScriptLibraries.cmake) |
86 | |
87 | |
143
16f8471e3872
Performance warning if runtime debug assertions are turned on
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
139
diff
changeset
|
88 # Check that the Orthanc SDK headers are available |
68
45da32410346
USE_SYSTEM_ORTHANC_SDK option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
60
diff
changeset
|
89 if (STATIC_BUILD OR NOT USE_SYSTEM_ORTHANC_SDK) |
191
993dd140bd30
Resort to Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
183
diff
changeset
|
90 include_directories(${CMAKE_SOURCE_DIR}/Resources/Orthanc/Sdk-0.9.5) |
0 | 91 else () |
92 CHECK_INCLUDE_FILE_CXX(orthanc/OrthancCPlugin.h HAVE_ORTHANC_H) | |
93 if (NOT HAVE_ORTHANC_H) | |
94 message(FATAL_ERROR "Please install the headers of the Orthanc plugins SDK") | |
95 endif() | |
96 endif() | |
97 | |
98 | |
99 if (STANDALONE_BUILD) | |
100 add_definitions( | |
101 -DORTHANC_STANDALONE=1 | |
102 ) | |
103 set(EMBEDDED_RESOURCES | |
104 WEB_VIEWER ${CMAKE_SOURCE_DIR}/WebApplication | |
105 ) | |
106 else() | |
107 add_definitions( | |
108 -DORTHANC_STANDALONE=0 | |
109 -DWEB_VIEWER_PATH="${CMAKE_SOURCE_DIR}/WebApplication/" | |
110 ) | |
111 endif() | |
112 | |
204 | 113 add_definitions( |
229 | 114 -DHAS_ORTHANC_EXCEPTION=1 |
204 | 115 ) |
116 | |
0 | 117 EmbedResources( |
118 ORTHANC_EXPLORER ${CMAKE_SOURCE_DIR}/Resources/OrthancExplorer.js | |
119 JAVASCRIPT_LIBS ${JAVASCRIPT_LIBS_DIR} | |
120 ${EMBEDDED_RESOURCES} | |
121 ) | |
122 | |
26 | 123 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR |
124 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR | |
125 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") | |
126 link_libraries(rt) | |
127 elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |
128 SET(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lws2_32") | |
45
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
129 |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
130 execute_process( |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
131 COMMAND |
272 | 132 ${PYTHON_EXECUTABLE} ${ORTHANC_FRAMEWORK_ROOT}/Resources/WindowsResources.py |
206
d1ed9efdea6c
rename ORTHANC_WEBVIEWER_VERSION as ORTHANC_PLUGIN_VERSION
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
204
diff
changeset
|
133 ${ORTHANC_PLUGIN_VERSION} "OrthancWebViewer" OrthancWebViewer.dll "Web viewer of medical images for Orthanc" |
45
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
134 ERROR_VARIABLE Failure |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
135 OUTPUT_FILE ${AUTOGENERATED_DIR}/Version.rc |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
136 ) |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
137 |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
138 if (Failure) |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
139 message(FATAL_ERROR "Error while computing the version information: ${Failure}") |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
140 endif() |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
141 |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
142 list(APPEND AUTOGENERATED_SOURCES ${AUTOGENERATED_DIR}/Version.rc) |
26 | 143 endif() |
144 | |
145 | |
264
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
146 # As the "EmbeddedResources.(h|cpp)" are shared by both the |
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
147 # "UnitTests" and the "OrthancWebViewer" targets, avoid race |
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
148 # conditions in the code generation by adding a target between them |
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
149 add_custom_target( |
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
150 AutogeneratedTarget |
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
151 DEPENDS |
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
152 ${AUTOGENERATED_SOURCES} |
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
153 ) |
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
154 |
0 | 155 set(CORE_SOURCES |
156 ${CMAKE_SOURCE_DIR}/Plugin/Cache/CacheManager.cpp | |
157 ${CMAKE_SOURCE_DIR}/Plugin/Cache/CacheScheduler.cpp | |
158 ${CMAKE_SOURCE_DIR}/Plugin/ViewerToolbox.cpp | |
159 ${CMAKE_SOURCE_DIR}/Plugin/ViewerPrefetchPolicy.cpp | |
160 ${CMAKE_SOURCE_DIR}/Plugin/SeriesInformationAdapter.cpp | |
191
993dd140bd30
Resort to Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
183
diff
changeset
|
161 |
993dd140bd30
Resort to Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
183
diff
changeset
|
162 ${ORTHANC_CORE_SOURCES} |
0 | 163 ) |
164 | |
266
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
165 include_directories( |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
166 ${CMAKE_SOURCE_DIR}/Resources/Orthanc/Plugins/ |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
167 ) |
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
168 |
0 | 169 add_library(OrthancWebViewer |
170 SHARED | |
231
7097d0eaac76
Move the GDCM decoder out of the Orthanc Web viewer plugin as a separate plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
230
diff
changeset
|
171 ${AUTOGENERATED_SOURCES} |
7097d0eaac76
Move the GDCM decoder out of the Orthanc Web viewer plugin as a separate plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
230
diff
changeset
|
172 ${CMAKE_SOURCE_DIR}/Plugin/DecodedImageAdapter.cpp |
7097d0eaac76
Move the GDCM decoder out of the Orthanc Web viewer plugin as a separate plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
230
diff
changeset
|
173 ${CMAKE_SOURCE_DIR}/Plugin/Plugin.cpp |
0 | 174 ${CORE_SOURCES} |
266
4e9d30c19b4b
linking against orthanc framework library
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
264
diff
changeset
|
175 ${CMAKE_SOURCE_DIR}/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp |
0 | 176 ) |
177 | |
264
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
178 add_dependencies(OrthancWebViewer AutogeneratedTarget) |
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
179 |
26 | 180 |
206
d1ed9efdea6c
rename ORTHANC_WEBVIEWER_VERSION as ORTHANC_PLUGIN_VERSION
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
204
diff
changeset
|
181 message("Setting the version of the library to ${ORTHANC_PLUGIN_VERSION}") |
12 | 182 |
206
d1ed9efdea6c
rename ORTHANC_WEBVIEWER_VERSION as ORTHANC_PLUGIN_VERSION
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
204
diff
changeset
|
183 add_definitions(-DORTHANC_PLUGIN_VERSION="${ORTHANC_PLUGIN_VERSION}") |
12 | 184 |
8 | 185 set_target_properties(OrthancWebViewer PROPERTIES |
206
d1ed9efdea6c
rename ORTHANC_WEBVIEWER_VERSION as ORTHANC_PLUGIN_VERSION
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
204
diff
changeset
|
186 VERSION ${ORTHANC_PLUGIN_VERSION} |
d1ed9efdea6c
rename ORTHANC_WEBVIEWER_VERSION as ORTHANC_PLUGIN_VERSION
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
204
diff
changeset
|
187 SOVERSION ${ORTHANC_PLUGIN_VERSION}) |
8 | 188 |
0 | 189 install( |
8 | 190 TARGETS OrthancWebViewer |
191 RUNTIME DESTINATION lib # Destination for Windows | |
9 | 192 LIBRARY DESTINATION share/orthanc/plugins # Destination for Linux |
8 | 193 ) |
0 | 194 |
195 add_executable(UnitTests | |
259 | 196 ${AUTOGENERATED_SOURCES} |
0 | 197 ${CORE_SOURCES} |
172 | 198 ${GOOGLE_TEST_SOURCES} |
0 | 199 UnitTestsSources/UnitTestsMain.cpp |
200 ) | |
183 | 201 |
264
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
202 add_dependencies(UnitTests AutogeneratedTarget) |
38e9bb57f761
avoid race condition in CMake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
263
diff
changeset
|
203 |
183 | 204 target_link_libraries(UnitTests ${GOOGLE_TEST_LIBRARIES}) |