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}