Mercurial > hg > orthanc
annotate CMakeLists.txt @ 134:bdc60d16cc98
improved cmake
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 09 Oct 2012 11:58:22 +0200 |
parents | 1969ff16457c |
children | a2dbb5024fdf |
rev | line source |
---|---|
12 | 1 cmake_minimum_required(VERSION 2.8) |
2 | |
57 | 3 project(Orthanc) |
134 | 4 |
5 # Parameters of the build | |
6 SET(STATIC_BUILD ON CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") | |
7 SET(STANDALONE_BUILD OFF CACHE BOOL "Standalone build (all the resources are embedded, necessary for releases)") | |
8 SET(ENABLE_SSL ON CACHE BOOL "Include support for SSL") | |
9 SET(BUILD_UNIT_TESTS ON CACHE BOOL "Build the unit tests") | |
10 SET(DEBIAN_FORCE_HARDENING OFF CACHE BOOL "Force the injection of Debian hardening flags (unrecommended)") | |
11 SET(USE_DYNAMIC_JSONCPP OFF CACHE BOOL "Use the dynamic version of JsonCpp (only for Debian sid)") | |
12 SET(USE_DYNAMIC_GOOGLE_LOG ON CACHE BOOL "Use the dynamic version of Google Log") | |
13 SET(USE_DYNAMIC_GOOGLE_TEST ON CACHE BOOL "Use the dynamic version of Google Test (not for Debian sid)") | |
14 SET(USE_STATIC_DEBIAN_GOOGLE_TEST OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (only for Debian sid)") | |
15 | |
16 # Version of the build, should always be "mainline" except in release branches | |
17 add_definitions( | |
18 -DORTHANC_VERSION="mainline" | |
19 ) | |
20 | |
21 # Some basic inclusions | |
12 | 22 include(CheckIncludeFiles) |
101 | 23 include(CheckIncludeFileCXX) |
134 | 24 include(${CMAKE_SOURCE_DIR}/Resources/CMake/AutoGeneratedCode.cmake) |
25 include(${CMAKE_SOURCE_DIR}/Resources/CMake/DownloadPackage.cmake) | |
26 include(${CMAKE_SOURCE_DIR}/Resources/CMake/Compiler.cmake) | |
133 | 27 |
134 | 28 # Configuration of the standalone builds |
19 | 29 if (${CMAKE_CROSSCOMPILING}) |
134 | 30 # Cross-compilation implies the standalone build |
19 | 31 SET(STANDALONE_BUILD ON) |
32 endif() | |
33 | |
134 | 34 if (${STANDALONE_BUILD}) |
35 # We embed all the resources in the binaries for standalone builds | |
36 add_definitions(-DORTHANC_STANDALONE=1) | |
37 EmbedResources( | |
38 PREPARE_DATABASE OrthancServer/PrepareDatabase.sql | |
39 ORTHANC_EXPLORER OrthancExplorer | |
40 ) | |
12 | 41 else() |
134 | 42 add_definitions( |
43 -DORTHANC_STANDALONE=0 | |
44 -DORTHANC_PATH=\"${CMAKE_SOURCE_DIR}\" | |
45 ) | |
46 EmbedResources( | |
47 PREPARE_DATABASE OrthancServer/PrepareDatabase.sql | |
48 ) | |
12 | 49 endif() |
50 | |
51 | |
134 | 52 # Prepare the third-party dependencies |
22 | 53 SET(THIRD_PARTY_SOURCES |
54 ${CMAKE_SOURCE_DIR}/Resources/md5/md5.c | |
24 | 55 ${CMAKE_SOURCE_DIR}/Resources/base64/base64.cpp |
22 | 56 ) |
26 | 57 |
102
7593b57dc1bf
switch to google log
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
101
diff
changeset
|
58 include(${CMAKE_SOURCE_DIR}/Resources/CMake/GoogleLogConfiguration.cmake) |
7593b57dc1bf
switch to google log
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
101
diff
changeset
|
59 |
29
042ac60f5bf9
simplified build of curl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
26
diff
changeset
|
60 if (${ENABLE_SSL}) |
57 | 61 add_definitions(-DORTHANC_SSL_ENABLED=1) |
29
042ac60f5bf9
simplified build of curl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
26
diff
changeset
|
62 include(${CMAKE_SOURCE_DIR}/Resources/CMake/OpenSslConfiguration.cmake) |
042ac60f5bf9
simplified build of curl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
26
diff
changeset
|
63 else() |
57 | 64 add_definitions(-DORTHANC_SSL_ENABLED=0) |
29
042ac60f5bf9
simplified build of curl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
26
diff
changeset
|
65 endif() |
042ac60f5bf9
simplified build of curl
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
26
diff
changeset
|
66 |
12 | 67 include(${CMAKE_SOURCE_DIR}/Resources/CMake/BoostConfiguration.cmake) |
68 include(${CMAKE_SOURCE_DIR}/Resources/CMake/DcmtkConfiguration.cmake) | |
69 include(${CMAKE_SOURCE_DIR}/Resources/CMake/MongooseConfiguration.cmake) | |
70 include(${CMAKE_SOURCE_DIR}/Resources/CMake/ZlibConfiguration.cmake) | |
71 include(${CMAKE_SOURCE_DIR}/Resources/CMake/SQLiteConfiguration.cmake) | |
72 include(${CMAKE_SOURCE_DIR}/Resources/CMake/JsonCppConfiguration.cmake) | |
73 include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibCurlConfiguration.cmake) | |
74 include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibPngConfiguration.cmake) | |
75 | |
76 | |
134 | 77 # The main instructions to build the Orthanc binaries |
12 | 78 add_library(CoreLibrary |
79 STATIC | |
80 ${AUTOGENERATED_SOURCES} | |
81 ${THIRD_PARTY_SOURCES} | |
82 | |
83 Core/ChunkedBuffer.cpp | |
84 Core/Compression/BufferCompressor.cpp | |
85 Core/Compression/ZlibCompressor.cpp | |
81 | 86 Core/Compression/ZipWriter.cpp |
57 | 87 Core/OrthancException.cpp |
12 | 88 Core/DicomFormat/DicomArray.cpp |
89 Core/DicomFormat/DicomMap.cpp | |
90 Core/DicomFormat/DicomTag.cpp | |
79 | 91 Core/DicomFormat/DicomIntegerPixelAccessor.cpp |
12 | 92 Core/FileStorage.cpp |
93 Core/HttpServer/EmbeddedResourceHttpHandler.cpp | |
94 Core/HttpServer/FilesystemHttpHandler.cpp | |
95 Core/HttpServer/HttpHandler.cpp | |
96 Core/HttpServer/HttpOutput.cpp | |
97 Core/HttpServer/MongooseServer.cpp | |
98 Core/MultiThreading/BagOfRunnablesBySteps.cpp | |
99 Core/PngWriter.cpp | |
100 Core/SQLite/Connection.cpp | |
101 Core/SQLite/FunctionContext.cpp | |
102 Core/SQLite/Statement.cpp | |
103 Core/SQLite/StatementId.cpp | |
104 Core/SQLite/StatementReference.cpp | |
105 Core/SQLite/Transaction.cpp | |
106 Core/Toolbox.cpp | |
107 Core/Uuid.cpp | |
108 | |
57 | 109 OrthancCppClient/HttpClient.cpp |
110 OrthancCppClient/HttpException.cpp | |
12 | 111 ) |
112 | |
113 add_library(ServerLibrary | |
57 | 114 OrthancServer/DicomProtocol/DicomFindAnswers.cpp |
115 OrthancServer/DicomProtocol/DicomServer.cpp | |
116 OrthancServer/DicomProtocol/DicomUserConnection.cpp | |
117 OrthancServer/FromDcmtkBridge.cpp | |
118 OrthancServer/Internals/CommandDispatcher.cpp | |
119 OrthancServer/Internals/FindScp.cpp | |
120 OrthancServer/Internals/MoveScp.cpp | |
121 OrthancServer/Internals/StoreScp.cpp | |
122 OrthancServer/OrthancInitialization.cpp | |
123 OrthancServer/OrthancRestApi.cpp | |
124 OrthancServer/ServerIndex.cpp | |
125 OrthancServer/ToDcmtkBridge.cpp | |
12 | 126 ) |
127 | |
128 # Ensure autogenerated code is built before building ServerLibrary | |
129 add_dependencies(ServerLibrary CoreLibrary) | |
130 | |
57 | 131 add_executable(Orthanc |
132 OrthancServer/main.cpp | |
12 | 133 ) |
134 | |
134 | 135 target_link_libraries(Orthanc ServerLibrary CoreLibrary) |
120
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
136 |
12 | 137 |
134 | 138 # Build the unit tests if required |
120
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
139 if (BUILD_UNIT_TESTS) |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
140 include(${CMAKE_SOURCE_DIR}/Resources/CMake/GoogleTestConfiguration.cmake) |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
141 add_executable(UnitTests |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
142 ${GTEST_SOURCES} |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
143 UnitTests/main.cpp |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
144 UnitTests/SQLite.cpp |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
145 UnitTests/SQLiteChromium.cpp |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
146 UnitTests/Versions.cpp |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
147 UnitTests/Zip.cpp |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
148 ) |
134 | 149 target_link_libraries(UnitTests ServerLibrary CoreLibrary) |
120
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
150 endif() |
5af0a4345d06
disabling of unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
102
diff
changeset
|
151 |
12 | 152 |
134 | 153 # Generate the Doxygen documentation if Doxygen is present |
12 | 154 find_package(Doxygen) |
155 if (DOXYGEN_FOUND) | |
156 configure_file( | |
57 | 157 ${CMAKE_SOURCE_DIR}/Resources/Orthanc.doxygen |
158 ${CMAKE_CURRENT_BINARY_DIR}/Orthanc.doxygen | |
12 | 159 @ONLY) |
160 add_custom_target(doc | |
57 | 161 ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Orthanc.doxygen |
12 | 162 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
163 COMMENT "Generating API documentation with Doxygen" VERBATIM | |
164 ) | |
134 | 165 endif() |