0
|
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
|
6
|
202 install(
|
|
203 TARGETS OrthancWSIDicomizer
|
|
204 RUNTIME DESTINATION bin
|
|
205 )
|
|
206
|
0
|
207
|
|
208 #####################################################################
|
|
209 ## Build the DICOM-to-TIFF conversion tool
|
|
210 #####################################################################
|
|
211
|
|
212 add_executable(OrthancWSIDicomToTiff
|
|
213 DicomToTiff.cpp
|
|
214 ApplicationToolbox.cpp
|
|
215 )
|
|
216
|
|
217 target_link_libraries(OrthancWSIDicomToTiff OrthancWSIFramework ${DCMTK_LIBRARIES})
|
|
218
|
6
|
219 install(
|
|
220 TARGETS OrthancWSIDicomToTiff
|
|
221 RUNTIME DESTINATION bin
|
|
222 )
|
|
223
|
0
|
224
|
|
225 #####################################################################
|
|
226 ## Generate the documentation if Doxygen is present
|
|
227 #####################################################################
|
|
228
|
|
229 find_package(Doxygen)
|
|
230 if (DOXYGEN_FOUND)
|
|
231 configure_file(
|
|
232 ${ORTHANC_WSI_DIR}/Resources/OrthancWSI.doxygen
|
|
233 ${CMAKE_CURRENT_BINARY_DIR}/OrthancWSI.doxygen
|
|
234 @ONLY)
|
|
235
|
|
236 add_custom_target(doc
|
|
237 ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/OrthancWSI.doxygen
|
|
238 COMMENT "Generating documentation with Doxygen" VERBATIM
|
|
239 )
|
|
240 else()
|
|
241 message("Doxygen not found. The documentation will not be built.")
|
|
242 endif()
|