Mercurial > hg > orthanc
annotate CMakeLists.txt @ 133:1969ff16457c
help
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 08 Oct 2012 13:27:49 +0200 |
parents | b09b0ffd9941 |
children | bdc60d16cc98 |
rev | line source |
---|---|
12 | 1 cmake_minimum_required(VERSION 2.8) |
2 | |
57 | 3 project(Orthanc) |
12 | 4 include(${CMAKE_SOURCE_DIR}/Resources/CMake/AutoGeneratedCode.cmake) |
5 include(${CMAKE_SOURCE_DIR}/Resources/CMake/DownloadPackage.cmake) | |
6 include(CheckIncludeFiles) | |
101 | 7 include(CheckIncludeFileCXX) |
12 | 8 |
133 | 9 add_definitions(-DORTHANC_VERSION="mainline") |
10 | |
12 | 11 SET(STATIC_BUILD ON CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") |
19 | 12 SET(STANDALONE_BUILD OFF CACHE BOOL "Standalone build (necessary for cross-compilation or binary releases)") |
23 | 13 SET(ENABLE_SSL ON CACHE BOOL "Include support for SSL") |
120
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
14 SET(BUILD_UNIT_TESTS ON CACHE BOOL "Build the unit tests") |
97 | 15 SET(DEBIAN_HARDENING OFF CACHE BOOL "Use Debian hardening flags") |
124
1267071a697e
dynamic jsoncpp in debian unstable
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
120
diff
changeset
|
16 SET(USE_DYNAMIC_JSONCPP OFF CACHE BOOL "Use the dynamic version of JsonCpp, only for Debian Unstable") |
130
b09b0ffd9941
trying to statically build google log
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
124
diff
changeset
|
17 SET(USE_DYNAMIC_GOOGLE_LOG ON CACHE BOOL "Use the dynamic version of Google Log") |
12 | 18 |
19 | 19 if (${CMAKE_CROSSCOMPILING}) |
20 SET(STANDALONE_BUILD ON) | |
21 endif() | |
22 | |
23 if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |
12 | 24 CHECK_INCLUDE_FILES(rpc.h HAVE_UUID_H) |
25 else() | |
26 CHECK_INCLUDE_FILES(uuid/uuid.h HAVE_UUID_H) | |
27 endif() | |
28 | |
101 | 29 if (NOT HAVE_UUID_H) |
12 | 30 message(FATAL_ERROR "Please install the uuid-dev package") |
31 endif() | |
32 | |
33 | |
22 | 34 SET(THIRD_PARTY_SOURCES |
35 ${CMAKE_SOURCE_DIR}/Resources/md5/md5.c | |
24 | 36 ${CMAKE_SOURCE_DIR}/Resources/base64/base64.cpp |
22 | 37 ) |
26 | 38 |
102
7593b57dc1bf
switch to google log
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
101
diff
changeset
|
39 include(${CMAKE_SOURCE_DIR}/Resources/CMake/GoogleLogConfiguration.cmake) |
7593b57dc1bf
switch to google log
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
101
diff
changeset
|
40 |
29
042ac60f5bf9
simplified build of curl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
26
diff
changeset
|
41 if (${ENABLE_SSL}) |
57 | 42 add_definitions(-DORTHANC_SSL_ENABLED=1) |
29
042ac60f5bf9
simplified build of curl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
26
diff
changeset
|
43 include(${CMAKE_SOURCE_DIR}/Resources/CMake/OpenSslConfiguration.cmake) |
042ac60f5bf9
simplified build of curl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
26
diff
changeset
|
44 else() |
57 | 45 add_definitions(-DORTHANC_SSL_ENABLED=0) |
29
042ac60f5bf9
simplified build of curl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
26
diff
changeset
|
46 endif() |
042ac60f5bf9
simplified build of curl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
26
diff
changeset
|
47 |
12 | 48 include(${CMAKE_SOURCE_DIR}/Resources/CMake/BoostConfiguration.cmake) |
49 include(${CMAKE_SOURCE_DIR}/Resources/CMake/DcmtkConfiguration.cmake) | |
50 include(${CMAKE_SOURCE_DIR}/Resources/CMake/MongooseConfiguration.cmake) | |
51 include(${CMAKE_SOURCE_DIR}/Resources/CMake/ZlibConfiguration.cmake) | |
52 include(${CMAKE_SOURCE_DIR}/Resources/CMake/SQLiteConfiguration.cmake) | |
53 include(${CMAKE_SOURCE_DIR}/Resources/CMake/JsonCppConfiguration.cmake) | |
54 include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibCurlConfiguration.cmake) | |
55 include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibPngConfiguration.cmake) | |
56 | |
57 | |
58 if (${CMAKE_COMPILER_IS_GNUCXX}) | |
26 | 59 set(CMAKE_C_FLAGS "-Wall -Wno-long-long -Wno-implicit-function-declaration") |
60 # --std=c99 makes libcurl not to compile | |
61 # -pedantic gives a lot of warnings on OpenSSL | |
12 | 62 set(CMAKE_CXX_FLAGS "-Wall -pedantic -Wno-long-long -Wno-variadic-macros") |
63 elseif (${MSVC}) | |
64 # http://stackoverflow.com/a/6510446 | |
65 foreach(flag_var | |
66 CMAKE_C_FLAGS_DEBUG | |
67 CMAKE_CXX_FLAGS_DEBUG | |
68 CMAKE_C_FLAGS_RELEASE | |
69 CMAKE_CXX_FLAGS_RELEASE | |
70 CMAKE_C_FLAGS_MINSIZEREL | |
71 CMAKE_CXX_FLAGS_MINSIZEREL | |
72 CMAKE_C_FLAGS_RELWITHDEBINFO | |
73 CMAKE_CXX_FLAGS_RELWITHDEBINFO) | |
74 string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") | |
75 string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}") | |
76 endforeach(flag_var) | |
77 add_definitions( | |
78 -D_CRT_SECURE_NO_WARNINGS=1 | |
79 -D_CRT_SECURE_NO_DEPRECATE=1 | |
80 ) | |
81 include_directories(${CMAKE_SOURCE_DIR}/Resources/VisualStudio) | |
82 link_libraries(netapi32) | |
83 endif() | |
84 | |
85 | |
86 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") | |
97 | 87 if (DEBIAN_HARDENING) |
88 execute_process( | |
89 COMMAND dpkg-buildflags --get CPPFLAGS | |
90 OUTPUT_VARIABLE DEBIAN_CPP_FLAGS | |
91 OUTPUT_STRIP_TRAILING_WHITESPACE) | |
92 execute_process( | |
93 COMMAND dpkg-buildflags --get CFLAGS | |
94 OUTPUT_VARIABLE DEBIAN_C_FLAGS | |
95 OUTPUT_STRIP_TRAILING_WHITESPACE) | |
96 execute_process( | |
97 COMMAND dpkg-buildflags --get CXXFLAGS | |
98 OUTPUT_VARIABLE DEBIAN_CXX_FLAGS | |
99 OUTPUT_STRIP_TRAILING_WHITESPACE) | |
100 execute_process( | |
101 COMMAND dpkg-buildflags --get LDFLAGS | |
102 OUTPUT_VARIABLE DEBIAN_LD_FLAGS | |
103 OUTPUT_STRIP_TRAILING_WHITESPACE) | |
104 | |
105 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${DEBIAN_C_FLAGS} ${DEBIAN_CPP_FLAGS}") | |
106 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DEBIAN_CXX_FLAGS} ${DEBIAN_CPP_FLAGS}") | |
107 endif() | |
108 | |
12 | 109 add_definitions( |
110 -D_LARGEFILE64_SOURCE=1 | |
111 -D_FILE_OFFSET_BITS=64 | |
112 ) | |
97 | 113 set(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed ${DEBIAN_LD_FLAGS}") |
114 set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined ${DEBIAN_LD_FLAGS}") | |
115 set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined ${DEBIAN_LD_FLAGS}") | |
12 | 116 |
117 # http://www.mail-archive.com/cmake@cmake.org/msg08837.html | |
118 set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") | |
119 link_libraries(uuid pthread rt) | |
120 | |
121 elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |
122 add_definitions( | |
123 -DWINVER=0x0501 | |
124 -D_CRT_SECURE_NO_WARNINGS=1 | |
125 ) | |
126 link_libraries(rpcrt4 ws2_32) | |
127 endif() | |
128 | |
129 | |
130 if (${STATIC_BUILD}) | |
57 | 131 add_definitions(-DORTHANC_STATIC=1) |
12 | 132 else() |
57 | 133 add_definitions(-DORTHANC_STATIC=0) |
12 | 134 endif() |
135 | |
19 | 136 if (${STANDALONE_BUILD}) |
12 | 137 add_definitions( |
57 | 138 -DORTHANC_STANDALONE=1 |
12 | 139 ) |
140 | |
141 EmbedResources( | |
57 | 142 PREPARE_DATABASE OrthancServer/PrepareDatabase.sql |
143 ORTHANC_EXPLORER OrthancExplorer | |
12 | 144 ) |
145 | |
146 else() | |
147 add_definitions( | |
57 | 148 -DORTHANC_STANDALONE=0 |
149 -DORTHANC_PATH=\"${CMAKE_SOURCE_DIR}\" | |
12 | 150 ) |
151 | |
152 EmbedResources( | |
57 | 153 PREPARE_DATABASE OrthancServer/PrepareDatabase.sql |
12 | 154 ) |
155 endif() | |
156 | |
157 | |
158 add_library(CoreLibrary | |
159 STATIC | |
160 ${AUTOGENERATED_SOURCES} | |
161 ${THIRD_PARTY_SOURCES} | |
162 | |
163 Core/ChunkedBuffer.cpp | |
164 Core/Compression/BufferCompressor.cpp | |
165 Core/Compression/ZlibCompressor.cpp | |
81 | 166 Core/Compression/ZipWriter.cpp |
57 | 167 Core/OrthancException.cpp |
12 | 168 Core/DicomFormat/DicomArray.cpp |
169 Core/DicomFormat/DicomMap.cpp | |
170 Core/DicomFormat/DicomTag.cpp | |
79 | 171 Core/DicomFormat/DicomIntegerPixelAccessor.cpp |
12 | 172 Core/FileStorage.cpp |
173 Core/HttpServer/EmbeddedResourceHttpHandler.cpp | |
174 Core/HttpServer/FilesystemHttpHandler.cpp | |
175 Core/HttpServer/HttpHandler.cpp | |
176 Core/HttpServer/HttpOutput.cpp | |
177 Core/HttpServer/MongooseServer.cpp | |
178 Core/MultiThreading/BagOfRunnablesBySteps.cpp | |
179 Core/PngWriter.cpp | |
180 Core/SQLite/Connection.cpp | |
181 Core/SQLite/FunctionContext.cpp | |
182 Core/SQLite/Statement.cpp | |
183 Core/SQLite/StatementId.cpp | |
184 Core/SQLite/StatementReference.cpp | |
185 Core/SQLite/Transaction.cpp | |
186 Core/Toolbox.cpp | |
187 Core/Uuid.cpp | |
188 | |
57 | 189 OrthancCppClient/HttpClient.cpp |
190 OrthancCppClient/HttpException.cpp | |
12 | 191 ) |
192 | |
193 add_library(ServerLibrary | |
57 | 194 OrthancServer/DicomProtocol/DicomFindAnswers.cpp |
195 OrthancServer/DicomProtocol/DicomServer.cpp | |
196 OrthancServer/DicomProtocol/DicomUserConnection.cpp | |
197 OrthancServer/FromDcmtkBridge.cpp | |
198 OrthancServer/Internals/CommandDispatcher.cpp | |
199 OrthancServer/Internals/FindScp.cpp | |
200 OrthancServer/Internals/MoveScp.cpp | |
201 OrthancServer/Internals/StoreScp.cpp | |
202 OrthancServer/OrthancInitialization.cpp | |
203 OrthancServer/OrthancRestApi.cpp | |
204 OrthancServer/ServerIndex.cpp | |
205 OrthancServer/ToDcmtkBridge.cpp | |
12 | 206 ) |
207 | |
208 # Ensure autogenerated code is built before building ServerLibrary | |
209 add_dependencies(ServerLibrary CoreLibrary) | |
210 | |
57 | 211 add_executable(Orthanc |
212 OrthancServer/main.cpp | |
12 | 213 ) |
214 | |
120
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
215 TARGET_LINK_LIBRARIES(Orthanc ServerLibrary CoreLibrary) |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
216 |
12 | 217 |
120
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
218 if (BUILD_UNIT_TESTS) |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
219 include(${CMAKE_SOURCE_DIR}/Resources/CMake/GoogleTestConfiguration.cmake) |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
220 add_executable(UnitTests |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
221 ${GTEST_SOURCES} |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
222 UnitTests/main.cpp |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
223 UnitTests/SQLite.cpp |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
224 UnitTests/SQLiteChromium.cpp |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
225 UnitTests/Versions.cpp |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
226 UnitTests/Zip.cpp |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
227 ) |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
228 TARGET_LINK_LIBRARIES(UnitTests ServerLibrary CoreLibrary) |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
229 endif() |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
230 |
12 | 231 |
232 find_package(Doxygen) | |
233 if (DOXYGEN_FOUND) | |
234 configure_file( | |
57 | 235 ${CMAKE_SOURCE_DIR}/Resources/Orthanc.doxygen |
236 ${CMAKE_CURRENT_BINARY_DIR}/Orthanc.doxygen | |
12 | 237 @ONLY) |
238 add_custom_target(doc | |
57 | 239 ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Orthanc.doxygen |
12 | 240 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
241 COMMENT "Generating API documentation with Doxygen" VERBATIM | |
242 ) | |
243 endif(DOXYGEN_FOUND) |