comparison Applications/CMakeLists.txt @ 0:4a7a53257c7d

initial commit
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 22 Oct 2016 21:48:33 +0200
parents
children d0108402e85c
comparison
equal deleted inserted replaced
-1:000000000000 0:4a7a53257c7d
1 cmake_minimum_required(VERSION 2.8)
2 project(OrthancWSIApplications)
3
4
5 #####################################################################
6 ## Parameters of the build
7 #####################################################################
8
9 # Generic parameters
10 SET(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)")
11 SET(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages")
12
13 # Optional components
14 SET(ENABLE_SSL OFF CACHE BOOL "Include support for SSL")
15 SET(USE_DCMTK_361 OFF CACHE BOOL "Use forthcoming DCMTK version 3.6.1 in static builds (instead of 3.6.0)")
16
17 if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
18 set(TMP ON)
19 else()
20 set(TMP OFF)
21 endif()
22
23
24 # Advanced parameters to fine-tune linking against system libraries
25 SET(USE_SYSTEM_BOOST ON CACHE BOOL "Use the system version of Boost")
26 SET(USE_SYSTEM_CURL ON CACHE BOOL "Use the system version of LibCurl")
27 SET(USE_SYSTEM_DCMTK ON CACHE BOOL "Use the system version of DCMTK")
28 SET(USE_SYSTEM_JSONCPP ON CACHE BOOL "Use the system version of JsonCpp")
29 SET(USE_SYSTEM_LIBJPEG ON CACHE BOOL "Use the system version of libjpeg")
30 SET(USE_SYSTEM_LIBPNG ON CACHE BOOL "Use the system version of libpng")
31 SET(USE_SYSTEM_LIBTIFF ON CACHE BOOL "Use the system version of libtiff")
32 SET(USE_SYSTEM_OPENJPEG ON CACHE BOOL "Use the system version of OpenJpeg")
33 SET(USE_SYSTEM_OPENSSL ON CACHE BOOL "Use the system version of OpenSSL")
34 SET(USE_SYSTEM_ZLIB ON CACHE BOOL "Use the system version of ZLib")
35
36 SET(DCMTK_DICTIONARY_DIR "" CACHE PATH "Directory containing the DCMTK dictionaries \"dicom.dic\" and \"private.dic\" (only when using system version of DCMTK)")
37
38
39 #####################################################################
40 ## Configure mandatory third-party components
41 #####################################################################
42
43 SET(ORTHANC_WSI_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
44 SET(ORTHANC_ROOT ${ORTHANC_WSI_DIR}/Framework/Orthanc)
45 SET(USE_OPENJPEG_JP2 ON)
46 SET(ENABLE_JPEG OFF) # Disable DCMTK's support for JPEG, that clashes with libtiff
47 SET(ENABLE_JPEG_LOSSLESS OFF) # Disable DCMTK's support for JPEG-LS
48 SET(ENABLE_DCMTK_NETWORK OFF) # Disable DCMTK's support for DICOM networking
49 SET(STANDALONE_BUILD ON) # Embed DCMTK's dictionaries for static builds
50
51 include(CheckIncludeFiles)
52 include(CheckIncludeFileCXX)
53 include(CheckLibraryExists)
54 include(FindPythonInterp)
55 include(FindPkgConfig)
56
57 include(${ORTHANC_ROOT}/Resources/CMake/Compiler.cmake)
58 include(${ORTHANC_ROOT}/Resources/CMake/AutoGeneratedCode.cmake)
59 include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
60
61 # Third-party components shipped with Orthanc
62 include(${ORTHANC_ROOT}/Resources/CMake/DcmtkConfiguration.cmake)
63 include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake)
64 include(${ORTHANC_ROOT}/Resources/CMake/LibCurlConfiguration.cmake)
65 include(${ORTHANC_ROOT}/Resources/CMake/LibJpegConfiguration.cmake)
66 include(${ORTHANC_ROOT}/Resources/CMake/LibPngConfiguration.cmake)
67 include(${ORTHANC_ROOT}/Resources/CMake/ZlibConfiguration.cmake)
68
69 include(${ORTHANC_WSI_DIR}/Resources/CMake/BoostExtendedConfiguration.cmake)
70 include(${ORTHANC_WSI_DIR}/Resources/CMake/OpenJpegConfiguration.cmake)
71 include(${ORTHANC_WSI_DIR}/Resources/CMake/LibTiffConfiguration.cmake)
72
73 add_definitions(
74 -DORTHANC_ENABLE_BASE64=1
75 -DORTHANC_ENABLE_CURL=1
76 -DORTHANC_ENABLE_DCMTK=1
77 -DORTHANC_ENABLE_LOGGING=1
78 -DORTHANC_ENABLE_MD5=0
79 -DORTHANC_JPEG_ENABLED=0 # Disable DCMTK's support for JPEG
80 -DORTHANC_PKCS11_ENABLED=0
81 -DORTHANC_PLUGINS_ENABLED=1 # To enable class Orthanc::SharedLibrary
82 -DORTHANC_PUGIXML_ENABLED=0
83 )
84
85
86 #####################################################################
87 ## Configure optional third-party components
88 #####################################################################
89
90 if (ENABLE_SSL)
91 set(ENABLE_PKCS11 OFF)
92 add_definitions(-DORTHANC_SSL_ENABLED=1)
93 include(${ORTHANC_ROOT}/Resources/CMake/OpenSslConfiguration.cmake)
94 else()
95 add_definitions(-DORTHANC_SSL_ENABLED=0)
96 endif()
97
98
99 #####################################################################
100 ## Create the static library containing the framework
101 #####################################################################
102
103 EmbedResources(
104 ${DCMTK_DICTIONARIES}
105 BRIGHTFIELD_OPTICAL_PATH ${ORTHANC_WSI_DIR}/Resources/BrightfieldOpticalPath.json
106 SAMPLE_DATASET ${ORTHANC_WSI_DIR}/Resources/SampleDataset.json
107 SRGB_ICC_PROFILE ${ORTHANC_WSI_DIR}/Resources/sRGB.icc
108 )
109
110 add_library(OrthancWSIFramework STATIC
111 #${ORTHANC_WSI_DIR}/Framework/Messaging/PluginOrthancConnection.cpp
112 ${ORTHANC_WSI_DIR}/Framework/Algorithms/PyramidReader.cpp
113 ${ORTHANC_WSI_DIR}/Framework/Algorithms/ReconstructPyramidCommand.cpp
114 ${ORTHANC_WSI_DIR}/Framework/Algorithms/TranscodeTileCommand.cpp
115 ${ORTHANC_WSI_DIR}/Framework/DicomToolbox.cpp
116 ${ORTHANC_WSI_DIR}/Framework/DicomizerParameters.cpp
117 ${ORTHANC_WSI_DIR}/Framework/Enumerations.cpp
118 ${ORTHANC_WSI_DIR}/Framework/ImageToolbox.cpp
119 ${ORTHANC_WSI_DIR}/Framework/ImagedVolumeParameters.cpp
120 ${ORTHANC_WSI_DIR}/Framework/Inputs/DecodedTiledPyramid.cpp
121 ${ORTHANC_WSI_DIR}/Framework/Inputs/DicomPyramid.cpp
122 ${ORTHANC_WSI_DIR}/Framework/Inputs/DicomPyramidInstance.cpp
123 ${ORTHANC_WSI_DIR}/Framework/Inputs/DicomPyramidLevel.cpp
124 ${ORTHANC_WSI_DIR}/Framework/Inputs/HierarchicalTiff.cpp
125 ${ORTHANC_WSI_DIR}/Framework/Inputs/OpenSlideLibrary.cpp
126 ${ORTHANC_WSI_DIR}/Framework/Inputs/OpenSlidePyramid.cpp
127 ${ORTHANC_WSI_DIR}/Framework/Inputs/PyramidWithRawTiles.cpp
128 ${ORTHANC_WSI_DIR}/Framework/Inputs/SingleLevelDecodedPyramid.cpp
129 ${ORTHANC_WSI_DIR}/Framework/Inputs/TiledPyramidStatistics.cpp
130 ${ORTHANC_WSI_DIR}/Framework/Jpeg2000Reader.cpp
131 ${ORTHANC_WSI_DIR}/Framework/Jpeg2000Writer.cpp
132 ${ORTHANC_WSI_DIR}/Framework/Messaging/CurlOrthancConnection.cpp
133 ${ORTHANC_WSI_DIR}/Framework/Messaging/FolderTarget.cpp
134 ${ORTHANC_WSI_DIR}/Framework/Messaging/IOrthancConnection.cpp
135 ${ORTHANC_WSI_DIR}/Framework/Messaging/OrthancConnectionBase.cpp
136 ${ORTHANC_WSI_DIR}/Framework/Messaging/OrthancTarget.cpp
137 ${ORTHANC_WSI_DIR}/Framework/Outputs/DicomPyramidWriter.cpp
138 ${ORTHANC_WSI_DIR}/Framework/Outputs/HierarchicalTiffWriter.cpp
139 ${ORTHANC_WSI_DIR}/Framework/Outputs/InMemoryTiledImage.cpp
140 ${ORTHANC_WSI_DIR}/Framework/Outputs/MultiframeDicomWriter.cpp
141 ${ORTHANC_WSI_DIR}/Framework/Outputs/PyramidWriterBase.cpp
142 ${ORTHANC_WSI_DIR}/Framework/Outputs/TruncatedPyramidWriter.cpp
143
144 ${ORTHANC_ROOT}/Core/ChunkedBuffer.cpp
145 ${ORTHANC_ROOT}/Core/DicomFormat/DicomArray.cpp
146 ${ORTHANC_ROOT}/Core/DicomFormat/DicomMap.cpp
147 ${ORTHANC_ROOT}/Core/DicomFormat/DicomTag.cpp
148 ${ORTHANC_ROOT}/Core/DicomFormat/DicomValue.cpp
149 ${ORTHANC_ROOT}/Core/Enumerations.cpp
150 ${ORTHANC_ROOT}/Core/HttpClient.cpp
151 ${ORTHANC_ROOT}/Core/Images/IImageWriter.cpp
152 ${ORTHANC_ROOT}/Core/Images/Image.cpp
153 ${ORTHANC_ROOT}/Core/Images/ImageAccessor.cpp
154 ${ORTHANC_ROOT}/Core/Images/ImageBuffer.cpp
155 ${ORTHANC_ROOT}/Core/Images/ImageProcessing.cpp
156 ${ORTHANC_ROOT}/Core/Images/JpegErrorManager.cpp
157 ${ORTHANC_ROOT}/Core/Images/JpegReader.cpp
158 ${ORTHANC_ROOT}/Core/Images/JpegWriter.cpp
159 ${ORTHANC_ROOT}/Core/Images/PngReader.cpp
160 ${ORTHANC_ROOT}/Core/Images/PngWriter.cpp
161 ${ORTHANC_ROOT}/Core/Logging.cpp
162 ${ORTHANC_ROOT}/Core/MultiThreading/BagOfTasksProcessor.cpp
163 ${ORTHANC_ROOT}/Core/MultiThreading/SharedMessageQueue.cpp
164 ${ORTHANC_ROOT}/Core/Toolbox.cpp
165 ${ORTHANC_ROOT}/Core/Uuid.cpp
166 ${ORTHANC_ROOT}/Core/WebServiceParameters.cpp
167 ${ORTHANC_ROOT}/OrthancServer/FromDcmtkBridge.cpp
168 ${ORTHANC_ROOT}/OrthancServer/ServerEnumerations.cpp
169 ${ORTHANC_ROOT}/OrthancServer/ToDcmtkBridge.cpp
170 ${ORTHANC_ROOT}/Plugins/Engine/SharedLibrary.cpp
171 ${ORTHANC_ROOT}/Resources/ThirdParty/base64/base64.cpp
172
173 # Mandatory components
174 ${BOOST_SOURCES}
175 ${JSONCPP_SOURCES}
176 ${ZLIB_SOURCES}
177 ${LIBPNG_SOURCES}
178 ${LIBJPEG_SOURCES}
179 ${DCMTK_SOURCES}
180 ${LIBTIFF_SOURCES}
181 ${OPENJPEG_SOURCES}
182
183 # Optional components
184 ${OPENSSL_SOURCES}
185 ${CURL_SOURCES}
186
187 ${AUTOGENERATED_SOURCES}
188 )
189
190
191 #####################################################################
192 ## Build the WSI DICOM-izer
193 #####################################################################
194
195 add_executable(OrthancWSIDicomizer
196 Dicomizer.cpp
197 ApplicationToolbox.cpp
198 )
199
200 target_link_libraries(OrthancWSIDicomizer OrthancWSIFramework ${DCMTK_LIBRARIES})
201
202
203 #####################################################################
204 ## Build the DICOM-to-TIFF conversion tool
205 #####################################################################
206
207 add_executable(OrthancWSIDicomToTiff
208 DicomToTiff.cpp
209 ApplicationToolbox.cpp
210 )
211
212 target_link_libraries(OrthancWSIDicomToTiff OrthancWSIFramework ${DCMTK_LIBRARIES})
213
214
215 #####################################################################
216 ## Generate the documentation if Doxygen is present
217 #####################################################################
218
219 find_package(Doxygen)
220 if (DOXYGEN_FOUND)
221 configure_file(
222 ${ORTHANC_WSI_DIR}/Resources/OrthancWSI.doxygen
223 ${CMAKE_CURRENT_BINARY_DIR}/OrthancWSI.doxygen
224 @ONLY)
225
226 add_custom_target(doc
227 ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/OrthancWSI.doxygen
228 COMMENT "Generating documentation with Doxygen" VERBATIM
229 )
230 else()
231 message("Doxygen not found. The documentation will not be built.")
232 endif()