Mercurial > hg > orthanc
comparison CMakeLists.txt @ 838:aabc3b430890 templating
integration mainline -> templating
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 02 Jun 2014 13:24:44 +0200 |
parents | da4c30a8bcdd 22964c7ff1c3 |
children | 427a1f996b7b |
comparison
equal
deleted
inserted
replaced
825:d8f5de5b9517 | 838:aabc3b430890 |
---|---|
42 include(CheckIncludeFileCXX) | 42 include(CheckIncludeFileCXX) |
43 include(CheckLibraryExists) | 43 include(CheckLibraryExists) |
44 include(${CMAKE_SOURCE_DIR}/Resources/CMake/AutoGeneratedCode.cmake) | 44 include(${CMAKE_SOURCE_DIR}/Resources/CMake/AutoGeneratedCode.cmake) |
45 include(${CMAKE_SOURCE_DIR}/Resources/CMake/DownloadPackage.cmake) | 45 include(${CMAKE_SOURCE_DIR}/Resources/CMake/DownloadPackage.cmake) |
46 include(${CMAKE_SOURCE_DIR}/Resources/CMake/Compiler.cmake) | 46 include(${CMAKE_SOURCE_DIR}/Resources/CMake/Compiler.cmake) |
47 include(${CMAKE_SOURCE_DIR}/Resources/CMake/VisualStudioPrecompiledHeaders.cmake) | |
47 | 48 |
48 set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}) | 49 set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}) |
49 | 50 |
50 | 51 |
51 | 52 |
52 | 53 |
53 ##################################################################### | 54 ##################################################################### |
54 ## Inclusion of third-party dependencies | 55 ## List of source files |
55 ##################################################################### | 56 ##################################################################### |
56 | 57 |
57 # Configuration of the standalone builds | 58 set(ORTHANC_CORE_SOURCES |
58 if (CMAKE_CROSSCOMPILING) | |
59 # Cross-compilation implies the standalone build | |
60 SET(STANDALONE_BUILD ON) | |
61 endif() | |
62 | |
63 # Prepare the third-party dependencies | |
64 SET(THIRD_PARTY_SOURCES | |
65 ${CMAKE_SOURCE_DIR}/Resources/md5/md5.c | |
66 ${CMAKE_SOURCE_DIR}/Resources/base64/base64.cpp | |
67 ) | |
68 | |
69 include(${CMAKE_SOURCE_DIR}/Resources/CMake/GoogleLogConfiguration.cmake) | |
70 include(${CMAKE_SOURCE_DIR}/Resources/CMake/BoostConfiguration.cmake) | |
71 include(${CMAKE_SOURCE_DIR}/Resources/CMake/DcmtkConfiguration.cmake) | |
72 include(${CMAKE_SOURCE_DIR}/Resources/CMake/MongooseConfiguration.cmake) | |
73 include(${CMAKE_SOURCE_DIR}/Resources/CMake/ZlibConfiguration.cmake) | |
74 include(${CMAKE_SOURCE_DIR}/Resources/CMake/SQLiteConfiguration.cmake) | |
75 include(${CMAKE_SOURCE_DIR}/Resources/CMake/JsonCppConfiguration.cmake) | |
76 include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibPngConfiguration.cmake) | |
77 include(${CMAKE_SOURCE_DIR}/Resources/CMake/LuaConfiguration.cmake) | |
78 include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibCurlConfiguration.cmake) | |
79 include(${CMAKE_SOURCE_DIR}/Resources/CMake/PlustacheConfiguration.cmake) | |
80 | |
81 | |
82 if (${ENABLE_SSL}) | |
83 add_definitions(-DORTHANC_SSL_ENABLED=1) | |
84 include(${CMAKE_SOURCE_DIR}/Resources/CMake/OpenSslConfiguration.cmake) | |
85 else() | |
86 add_definitions(-DORTHANC_SSL_ENABLED=0) | |
87 endif() | |
88 | |
89 | |
90 | |
91 ##################################################################### | |
92 ## Autogeneration of files | |
93 ##################################################################### | |
94 | |
95 # Prepare the embedded files | |
96 set(EMBEDDED_FILES | |
97 PREPARE_DATABASE ${CMAKE_CURRENT_SOURCE_DIR}/OrthancServer/PrepareDatabase.sql | |
98 UPGRADE_DATABASE_3_TO_4 ${CMAKE_CURRENT_SOURCE_DIR}/OrthancServer/Upgrade3To4.sql | |
99 CONFIGURATION_SAMPLE ${CMAKE_CURRENT_SOURCE_DIR}/Resources/Configuration.json | |
100 LUA_TOOLBOX ${CMAKE_CURRENT_SOURCE_DIR}/Resources/Toolbox.lua | |
101 ) | |
102 | |
103 if (${STANDALONE_BUILD}) | |
104 # We embed all the resources in the binaries for standalone builds | |
105 add_definitions(-DORTHANC_STANDALONE=1) | |
106 EmbedResources( | |
107 ${EMBEDDED_FILES} | |
108 ORTHANC_EXPLORER ${CMAKE_CURRENT_SOURCE_DIR}/OrthancExplorer | |
109 ${DCMTK_DICTIONARIES} | |
110 ) | |
111 else() | |
112 add_definitions( | |
113 -DORTHANC_STANDALONE=0 | |
114 -DORTHANC_PATH=\"${CMAKE_SOURCE_DIR}\" | |
115 ) | |
116 EmbedResources( | |
117 ${EMBEDDED_FILES} | |
118 ) | |
119 endif() | |
120 | |
121 | |
122 | |
123 ##################################################################### | |
124 ## Build the core of Orthanc | |
125 ##################################################################### | |
126 | |
127 add_definitions( | |
128 -DORTHANC_VERSION="${ORTHANC_VERSION}" | |
129 ) | |
130 | |
131 list(LENGTH OPENSSL_SOURCES OPENSSL_SOURCES_LENGTH) | |
132 if (${OPENSSL_SOURCES_LENGTH} GREATER 0) | |
133 add_library(OpenSSL STATIC ${OPENSSL_SOURCES}) | |
134 endif() | |
135 | |
136 add_library(CoreLibrary | |
137 STATIC | |
138 ${AUTOGENERATED_SOURCES} | |
139 ${THIRD_PARTY_SOURCES} | |
140 ${CURL_SOURCES} | |
141 | |
142 Core/Cache/MemoryCache.cpp | 59 Core/Cache/MemoryCache.cpp |
143 Core/ChunkedBuffer.cpp | 60 Core/ChunkedBuffer.cpp |
144 Core/Compression/BufferCompressor.cpp | 61 Core/Compression/BufferCompressor.cpp |
145 Core/Compression/ZlibCompressor.cpp | 62 Core/Compression/ZlibCompressor.cpp |
146 Core/Compression/ZipWriter.cpp | 63 Core/Compression/ZipWriter.cpp |
191 OrthancCppClient/OrthancConnection.cpp | 108 OrthancCppClient/OrthancConnection.cpp |
192 OrthancCppClient/Study.cpp | 109 OrthancCppClient/Study.cpp |
193 OrthancCppClient/Series.cpp | 110 OrthancCppClient/Series.cpp |
194 OrthancCppClient/Instance.cpp | 111 OrthancCppClient/Instance.cpp |
195 OrthancCppClient/Patient.cpp | 112 OrthancCppClient/Patient.cpp |
196 ) | 113 ) |
197 | 114 |
198 | 115 |
199 ##################################################################### | 116 set(ORTHANC_SERVER_SOURCES |
200 ## Build the Orthanc server | |
201 ##################################################################### | |
202 | |
203 add_library(ServerLibrary | |
204 STATIC | |
205 ${DCMTK_SOURCES} | |
206 OrthancServer/DicomProtocol/DicomFindAnswers.cpp | 117 OrthancServer/DicomProtocol/DicomFindAnswers.cpp |
207 OrthancServer/DicomProtocol/DicomServer.cpp | 118 OrthancServer/DicomProtocol/DicomServer.cpp |
208 OrthancServer/DicomProtocol/DicomUserConnection.cpp | 119 OrthancServer/DicomProtocol/DicomUserConnection.cpp |
209 OrthancServer/DicomProtocol/RemoteModalityParameters.cpp | 120 OrthancServer/DicomProtocol/RemoteModalityParameters.cpp |
210 OrthancServer/DicomProtocol/ReusableDicomUserConnection.cpp | 121 OrthancServer/DicomProtocol/ReusableDicomUserConnection.cpp |
232 OrthancServer/ServerToolbox.cpp | 143 OrthancServer/ServerToolbox.cpp |
233 OrthancServer/OrthancFindRequestHandler.cpp | 144 OrthancServer/OrthancFindRequestHandler.cpp |
234 OrthancServer/OrthancMoveRequestHandler.cpp | 145 OrthancServer/OrthancMoveRequestHandler.cpp |
235 ) | 146 ) |
236 | 147 |
237 # Ensure autogenerated code is built before building ServerLibrary | 148 |
238 add_dependencies(ServerLibrary CoreLibrary) | 149 set(ORTHANC_UNIT_TESTS_SOURCES |
239 | |
240 add_executable(Orthanc | |
241 OrthancServer/main.cpp | |
242 ) | |
243 | |
244 target_link_libraries(Orthanc ServerLibrary CoreLibrary) | |
245 | |
246 if (${OPENSSL_SOURCES_LENGTH} GREATER 0) | |
247 target_link_libraries(Orthanc OpenSSL) | |
248 endif() | |
249 | |
250 install( | |
251 TARGETS Orthanc | |
252 RUNTIME DESTINATION sbin | |
253 ) | |
254 | |
255 | |
256 | |
257 ##################################################################### | |
258 ## Build the unit tests | |
259 ##################################################################### | |
260 | |
261 if (UNIT_TESTS_WITH_HTTP_CONNEXIONS) | |
262 add_definitions(-DUNIT_TESTS_WITH_HTTP_CONNEXIONS=1) | |
263 else() | |
264 add_definitions(-DUNIT_TESTS_WITH_HTTP_CONNEXIONS=0) | |
265 endif() | |
266 | |
267 add_definitions(-DORTHANC_BUILD_UNIT_TESTS=1) | |
268 include(${CMAKE_SOURCE_DIR}/Resources/CMake/GoogleTestConfiguration.cmake) | |
269 add_executable(UnitTests | |
270 ${GTEST_SOURCES} | |
271 UnitTestsSources/DicomMap.cpp | 150 UnitTestsSources/DicomMap.cpp |
272 UnitTestsSources/FileStorage.cpp | 151 UnitTestsSources/FileStorage.cpp |
273 UnitTestsSources/FromDcmtk.cpp | 152 UnitTestsSources/FromDcmtk.cpp |
274 UnitTestsSources/MemoryCache.cpp | 153 UnitTestsSources/MemoryCache.cpp |
275 UnitTestsSources/Png.cpp | 154 UnitTestsSources/Png.cpp |
282 UnitTestsSources/Lua.cpp | 161 UnitTestsSources/Lua.cpp |
283 UnitTestsSources/MultiThreading.cpp | 162 UnitTestsSources/MultiThreading.cpp |
284 UnitTestsSources/UnitTestsMain.cpp | 163 UnitTestsSources/UnitTestsMain.cpp |
285 UnitTestsSources/Plustache.cpp | 164 UnitTestsSources/Plustache.cpp |
286 ) | 165 ) |
166 | |
167 | |
168 | |
169 ##################################################################### | |
170 ## Inclusion of third-party dependencies | |
171 ##################################################################### | |
172 | |
173 # Configuration of the standalone builds | |
174 if (CMAKE_CROSSCOMPILING) | |
175 # Cross-compilation implies the standalone build | |
176 SET(STANDALONE_BUILD ON) | |
177 endif() | |
178 | |
179 # Prepare the third-party dependencies | |
180 SET(THIRD_PARTY_SOURCES | |
181 ${CMAKE_SOURCE_DIR}/Resources/md5/md5.c | |
182 ${CMAKE_SOURCE_DIR}/Resources/base64/base64.cpp | |
183 ) | |
184 | |
185 include(${CMAKE_SOURCE_DIR}/Resources/CMake/GoogleLogConfiguration.cmake) | |
186 include(${CMAKE_SOURCE_DIR}/Resources/CMake/BoostConfiguration.cmake) | |
187 include(${CMAKE_SOURCE_DIR}/Resources/CMake/DcmtkConfiguration.cmake) | |
188 include(${CMAKE_SOURCE_DIR}/Resources/CMake/MongooseConfiguration.cmake) | |
189 include(${CMAKE_SOURCE_DIR}/Resources/CMake/ZlibConfiguration.cmake) | |
190 include(${CMAKE_SOURCE_DIR}/Resources/CMake/SQLiteConfiguration.cmake) | |
191 include(${CMAKE_SOURCE_DIR}/Resources/CMake/JsonCppConfiguration.cmake) | |
192 include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibPngConfiguration.cmake) | |
193 include(${CMAKE_SOURCE_DIR}/Resources/CMake/LuaConfiguration.cmake) | |
194 include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibCurlConfiguration.cmake) | |
195 include(${CMAKE_SOURCE_DIR}/Resources/CMake/PlustacheConfiguration.cmake) | |
196 | |
197 | |
198 if (${ENABLE_SSL}) | |
199 add_definitions(-DORTHANC_SSL_ENABLED=1) | |
200 include(${CMAKE_SOURCE_DIR}/Resources/CMake/OpenSslConfiguration.cmake) | |
201 else() | |
202 add_definitions(-DORTHANC_SSL_ENABLED=0) | |
203 endif() | |
204 | |
205 | |
206 | |
207 ##################################################################### | |
208 ## Autogeneration of files | |
209 ##################################################################### | |
210 | |
211 # Prepare the embedded files | |
212 set(EMBEDDED_FILES | |
213 PREPARE_DATABASE ${CMAKE_CURRENT_SOURCE_DIR}/OrthancServer/PrepareDatabase.sql | |
214 UPGRADE_DATABASE_3_TO_4 ${CMAKE_CURRENT_SOURCE_DIR}/OrthancServer/Upgrade3To4.sql | |
215 CONFIGURATION_SAMPLE ${CMAKE_CURRENT_SOURCE_DIR}/Resources/Configuration.json | |
216 LUA_TOOLBOX ${CMAKE_CURRENT_SOURCE_DIR}/Resources/Toolbox.lua | |
217 ) | |
218 | |
219 if (${STANDALONE_BUILD}) | |
220 # We embed all the resources in the binaries for standalone builds | |
221 add_definitions(-DORTHANC_STANDALONE=1) | |
222 EmbedResources( | |
223 ${EMBEDDED_FILES} | |
224 ORTHANC_EXPLORER ${CMAKE_CURRENT_SOURCE_DIR}/OrthancExplorer | |
225 ${DCMTK_DICTIONARIES} | |
226 ) | |
227 else() | |
228 add_definitions( | |
229 -DORTHANC_STANDALONE=0 | |
230 -DORTHANC_PATH=\"${CMAKE_SOURCE_DIR}\" | |
231 ) | |
232 EmbedResources( | |
233 ${EMBEDDED_FILES} | |
234 ) | |
235 endif() | |
236 | |
237 | |
238 | |
239 ##################################################################### | |
240 ## Build the core of Orthanc | |
241 ##################################################################### | |
242 | |
243 # Setup precompiled headers for Microsoft Visual Studio | |
244 if (${MSVC}) | |
245 add_definitions(-DORTHANC_USE_PRECOMPILED_HEADERS=1) | |
246 | |
247 ADD_VISUAL_STUDIO_PRECOMPILED_HEADERS( | |
248 "PrecompiledHeaders.h" "Core/PrecompiledHeaders.cpp" ORTHANC_CORE_SOURCES) | |
249 | |
250 ADD_VISUAL_STUDIO_PRECOMPILED_HEADERS( | |
251 "PrecompiledHeadersServer.h" "OrthancServer/PrecompiledHeadersServer.cpp" ORTHANC_SERVER_SOURCES) | |
252 | |
253 ADD_VISUAL_STUDIO_PRECOMPILED_HEADERS( | |
254 "PrecompiledHeadersUnitTests.h" "UnitTestsSources/PrecompiledHeadersUnitTests.cpp" ORTHANC_UNIT_TESTS_SOURCES) | |
255 endif() | |
256 | |
257 | |
258 add_definitions( | |
259 -DORTHANC_VERSION="${ORTHANC_VERSION}" | |
260 ) | |
261 | |
262 list(LENGTH OPENSSL_SOURCES OPENSSL_SOURCES_LENGTH) | |
263 if (${OPENSSL_SOURCES_LENGTH} GREATER 0) | |
264 add_library(OpenSSL STATIC ${OPENSSL_SOURCES}) | |
265 endif() | |
266 | |
267 add_library(CoreLibrary | |
268 STATIC | |
269 ${AUTOGENERATED_SOURCES} | |
270 ${THIRD_PARTY_SOURCES} | |
271 ${CURL_SOURCES} | |
272 ${ORTHANC_CORE_SOURCES} | |
273 ) | |
274 | |
275 | |
276 ##################################################################### | |
277 ## Build the Orthanc server | |
278 ##################################################################### | |
279 | |
280 add_library(ServerLibrary | |
281 STATIC | |
282 ${DCMTK_SOURCES} | |
283 ${ORTHANC_SERVER_SOURCES} | |
284 ) | |
285 | |
286 # Ensure autogenerated code is built before building ServerLibrary | |
287 add_dependencies(ServerLibrary CoreLibrary) | |
288 | |
289 add_executable(Orthanc | |
290 OrthancServer/main.cpp | |
291 ) | |
292 | |
293 target_link_libraries(Orthanc ServerLibrary CoreLibrary) | |
294 | |
295 if (${OPENSSL_SOURCES_LENGTH} GREATER 0) | |
296 target_link_libraries(Orthanc OpenSSL) | |
297 endif() | |
298 | |
299 install( | |
300 TARGETS Orthanc | |
301 RUNTIME DESTINATION sbin | |
302 ) | |
303 | |
304 | |
305 | |
306 ##################################################################### | |
307 ## Build the unit tests | |
308 ##################################################################### | |
309 | |
310 if (UNIT_TESTS_WITH_HTTP_CONNEXIONS) | |
311 add_definitions(-DUNIT_TESTS_WITH_HTTP_CONNEXIONS=1) | |
312 else() | |
313 add_definitions(-DUNIT_TESTS_WITH_HTTP_CONNEXIONS=0) | |
314 endif() | |
315 | |
316 add_definitions(-DORTHANC_BUILD_UNIT_TESTS=1) | |
317 include(${CMAKE_SOURCE_DIR}/Resources/CMake/GoogleTestConfiguration.cmake) | |
318 add_executable(UnitTests | |
319 ${GTEST_SOURCES} | |
320 ${ORTHANC_UNIT_TESTS_SOURCES} | |
321 ) | |
287 target_link_libraries(UnitTests ServerLibrary CoreLibrary) | 322 target_link_libraries(UnitTests ServerLibrary CoreLibrary) |
288 | 323 |
289 if (${OPENSSL_SOURCES_LENGTH} GREATER 0) | 324 if (${OPENSSL_SOURCES_LENGTH} GREATER 0) |
290 target_link_libraries(UnitTests OpenSSL) | 325 target_link_libraries(UnitTests OpenSSL) |
291 endif() | 326 endif() |
328 else() | 363 else() |
329 set(ORTHANC_CPP_CLIENT_AUX ${OPENSSL_SOURCES}) | 364 set(ORTHANC_CPP_CLIENT_AUX ${OPENSSL_SOURCES}) |
330 endif() | 365 endif() |
331 | 366 |
332 add_library(OrthancClient SHARED | 367 add_library(OrthancClient SHARED |
333 ${ORTHANC_ROOT}/Core/OrthancException.cpp | 368 ${ORTHANC_ROOT}/OrthancCppClient/OrthancCppClient.cpp |
334 ${ORTHANC_ROOT}/Core/Enumerations.cpp | |
335 ${ORTHANC_ROOT}/Core/Toolbox.cpp | |
336 ${ORTHANC_ROOT}/Core/HttpClient.cpp | |
337 ${ORTHANC_ROOT}/Core/MultiThreading/ArrayFilledByThreads.cpp | |
338 ${ORTHANC_ROOT}/Core/MultiThreading/ThreadedCommandProcessor.cpp | |
339 ${ORTHANC_ROOT}/Core/MultiThreading/SharedMessageQueue.cpp | |
340 ${ORTHANC_ROOT}/Core/ImageFormats/ImageAccessor.cpp | |
341 ${ORTHANC_ROOT}/Core/ImageFormats/ImageBuffer.cpp | |
342 ${ORTHANC_ROOT}/Core/ImageFormats/PngReader.cpp | |
343 ${ORTHANC_ROOT}/OrthancCppClient/OrthancConnection.cpp | |
344 ${ORTHANC_ROOT}/OrthancCppClient/Series.cpp | |
345 ${ORTHANC_ROOT}/OrthancCppClient/Study.cpp | |
346 ${ORTHANC_ROOT}/OrthancCppClient/Instance.cpp | |
347 ${ORTHANC_ROOT}/OrthancCppClient/Patient.cpp | |
348 ${ORTHANC_ROOT}/OrthancCppClient/SharedLibrary/SharedLibrary.cpp | |
349 ${ORTHANC_ROOT}/Resources/md5/md5.c | 369 ${ORTHANC_ROOT}/Resources/md5/md5.c |
350 ${ORTHANC_ROOT}/Resources/base64/base64.cpp | 370 ${ORTHANC_ROOT}/Resources/base64/base64.cpp |
351 ${ORTHANC_CPP_CLIENT_AUX} | 371 ${ORTHANC_CPP_CLIENT_AUX} |
352 ${THIRD_PARTY_SOURCES} | 372 ${THIRD_PARTY_SOURCES} |
353 ${CURL_SOURCES} | 373 ${CURL_SOURCES} |