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