Mercurial > hg > orthanc-webviewer
annotate CMakeLists.txt @ 49:c06f1c00ce56
improved sdk download
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 30 Jul 2015 14:50:49 +0200 |
parents | 1c776248a8eb |
children | 7b4b8b82112e |
rev | line source |
---|---|
0 | 1 # Orthanc - A Lightweight, RESTful DICOM Store |
2 # Copyright (C) 2012-2015 Sebastien Jodogne, Medical Physics | |
3 # Department, University Hospital of Liege, Belgium | |
4 # | |
5 # This program is free software: you can redistribute it and/or | |
6 # modify it under the terms of the GNU Affero General Public License | |
7 # as published by the Free Software Foundation, either version 3 of | |
8 # the License, or (at your option) any later version. | |
9 # | |
10 # This program is distributed in the hope that it will be useful, but | |
11 # WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 # Affero General Public License for more details. | |
14 # | |
15 # You should have received a copy of the GNU Affero General Public License | |
16 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
17 | |
18 | |
19 cmake_minimum_required(VERSION 2.8) | |
20 | |
13 | 21 project(OrthancWebViewer) |
0 | 22 |
42
6eb4082b3414
fix mainline version
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
40
diff
changeset
|
23 set(ORTHANC_WEBVIEWER_VERSION "mainline") |
8 | 24 |
0 | 25 # Parameters of the build |
26 set(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") | |
27 SET(STANDALONE_BUILD ON CACHE BOOL "Standalone build (all the resources are embedded, necessary for releases)") | |
28 set(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages") | |
29 | |
30 # Advanced parameters to fine-tune linking against system libraries | |
31 set(USE_SYSTEM_BOOST ON CACHE BOOL "Use the system version of Boost") | |
32 set(USE_SYSTEM_GDCM ON CACHE BOOL "Use the system version of Grassroot DICOM (GDCM)") | |
33 set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test") | |
34 set(USE_SYSTEM_JSONCPP ON CACHE BOOL "Use the system version of JsonCpp") | |
35 set(USE_SYSTEM_LIBJPEG ON CACHE BOOL "Use the system version of libjpeg") | |
36 set(USE_SYSTEM_LIBPNG ON CACHE BOOL "Use the system version of libpng") | |
37 set(USE_SYSTEM_ZLIB ON CACHE BOOL "Use the system version of zlib") | |
38 set(USE_SYSTEM_SQLITE ON CACHE BOOL "Use the system version of SQLite") | |
39 | |
40 # Distribution-specific settings | |
41 set(USE_GTEST_DEBIAN_SOURCE_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)") | |
42 mark_as_advanced(USE_GTEST_DEBIAN_SOURCE_PACKAGE) | |
43 | |
26 | 44 set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/Orthanc) |
0 | 45 include(CheckIncludeFiles) |
46 include(CheckIncludeFileCXX) | |
47 include(CheckLibraryExists) | |
17 | 48 include(FindPythonInterp) |
26 | 49 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/Compiler.cmake) |
50 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/AutoGeneratedCode.cmake) | |
51 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/DownloadPackage.cmake) | |
0 | 52 |
26 | 53 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/BoostConfiguration.cmake) |
54 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/GoogleTestConfiguration.cmake) | |
55 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/JsonCppConfiguration.cmake) | |
56 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/LibPngConfiguration.cmake) | |
57 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/ZlibConfiguration.cmake) | |
58 include(${CMAKE_SOURCE_DIR}/Orthanc/Resources/CMake/SQLiteConfiguration.cmake) | |
59 | |
0 | 60 include(${CMAKE_SOURCE_DIR}/Resources/CMake/GdcmConfiguration.cmake) |
61 include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibJpegConfiguration.cmake) | |
62 include(${CMAKE_SOURCE_DIR}/Resources/CMake/JavaScriptLibraries.cmake) | |
63 | |
64 | |
65 # Check that the Orthanc SDK headers are available or download them | |
66 if (STATIC_BUILD) | |
49
c06f1c00ce56
improved sdk download
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
67 #set(ORTHANC_SDK_URL "https://bitbucket.org/sjodogne/orthanc/raw/default") |
c06f1c00ce56
improved sdk download
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
68 set(ORTHANC_SDK_URL "https://bitbucket.org/sjodogne/orthanc/raw/Orthanc-0.9.1") |
c06f1c00ce56
improved sdk download
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
69 |
0 | 70 file(MAKE_DIRECTORY ${AUTOGENERATED_DIR}/orthanc) |
49
c06f1c00ce56
improved sdk download
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
71 file(DOWNLOAD |
c06f1c00ce56
improved sdk download
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
72 "${ORTHANC_SDK_URL}/Plugins/Include/orthanc/OrthancCPlugin.h" |
c06f1c00ce56
improved sdk download
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
73 "${AUTOGENERATED_DIR}/orthanc/OrthancCPlugin.h" |
c06f1c00ce56
improved sdk download
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
74 STATUS StatusTmp) |
c06f1c00ce56
improved sdk download
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
75 |
c06f1c00ce56
improved sdk download
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
76 list(GET StatusTmp 0 Status) |
c06f1c00ce56
improved sdk download
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
77 if(NOT Status EQUAL 0) |
c06f1c00ce56
improved sdk download
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
48
diff
changeset
|
78 message(FATAL_ERROR "Cannot download the plugin SDK") |
0 | 79 endif() |
80 else () | |
81 CHECK_INCLUDE_FILE_CXX(orthanc/OrthancCPlugin.h HAVE_ORTHANC_H) | |
82 if (NOT HAVE_ORTHANC_H) | |
83 message(FATAL_ERROR "Please install the headers of the Orthanc plugins SDK") | |
84 endif() | |
85 endif() | |
86 | |
87 | |
88 if (STANDALONE_BUILD) | |
89 add_definitions( | |
90 -DORTHANC_STANDALONE=1 | |
91 ) | |
92 set(EMBEDDED_RESOURCES | |
93 WEB_VIEWER ${CMAKE_SOURCE_DIR}/WebApplication | |
94 ) | |
95 else() | |
96 add_definitions( | |
97 -DORTHANC_STANDALONE=0 | |
98 -DWEB_VIEWER_PATH="${CMAKE_SOURCE_DIR}/WebApplication/" | |
99 ) | |
100 endif() | |
101 | |
102 EmbedResources( | |
103 ORTHANC_EXPLORER ${CMAKE_SOURCE_DIR}/Resources/OrthancExplorer.js | |
104 JAVASCRIPT_LIBS ${JAVASCRIPT_LIBS_DIR} | |
105 ${EMBEDDED_RESOURCES} | |
106 ) | |
107 | |
108 add_definitions( | |
109 -DORTHANC_SQLITE_STANDALONE=1 | |
110 ) | |
111 | |
26 | 112 |
113 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR | |
114 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR | |
115 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") | |
116 link_libraries(rt) | |
117 elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |
118 SET(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lws2_32") | |
45
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
119 |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
120 execute_process( |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
121 COMMAND |
48 | 122 ${PYTHON_EXECUTABLE} ${ORTHANC_ROOT}/Resources/WindowsResources.py |
45
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
123 ${ORTHANC_WEBVIEWER_VERSION} "OrthancWebViewer" OrthancWebViewer.dll "Web viewer of medical images for Orthanc" |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
124 ERROR_VARIABLE Failure |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
125 OUTPUT_FILE ${AUTOGENERATED_DIR}/Version.rc |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
126 ) |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
127 |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
128 if (Failure) |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
129 message(FATAL_ERROR "Error while computing the version information: ${Failure}") |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
130 endif() |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
131 |
05ac3f595ba5
Inject version information into Windows binaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
44
diff
changeset
|
132 list(APPEND AUTOGENERATED_SOURCES ${AUTOGENERATED_DIR}/Version.rc) |
26 | 133 endif() |
134 | |
44
6f27794044a2
missing version script
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
43
diff
changeset
|
135 if (CMAKE_COMPILER_IS_GNUCXX) |
46 | 136 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/Orthanc/Plugins/Samples/Common/VersionScript.map -Wl,--no-undefined") |
44
6f27794044a2
missing version script
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
43
diff
changeset
|
137 endif() |
6f27794044a2
missing version script
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
43
diff
changeset
|
138 |
26 | 139 |
0 | 140 set(CORE_SOURCES |
141 ${BOOST_SOURCES} | |
142 ${SQLITE_SOURCES} | |
143 ${LIBJPEG_SOURCES} | |
144 ${ZLIB_SOURCES} | |
145 ${LIBPNG_SOURCES} | |
29 | 146 ${JSONCPP_SOURCES} |
0 | 147 |
148 # Sources inherited from Orthanc core | |
26 | 149 ${CMAKE_SOURCE_DIR}/Orthanc/Core/ChunkedBuffer.cpp |
150 ${CMAKE_SOURCE_DIR}/Orthanc/Core/Enumerations.cpp | |
151 ${CMAKE_SOURCE_DIR}/Orthanc/Core/FileStorage/FilesystemStorage.cpp | |
152 ${CMAKE_SOURCE_DIR}/Orthanc/Core/ImageFormats/ImageAccessor.cpp | |
153 ${CMAKE_SOURCE_DIR}/Orthanc/Core/ImageFormats/ImageBuffer.cpp | |
154 ${CMAKE_SOURCE_DIR}/Orthanc/Core/ImageFormats/ImageProcessing.cpp | |
31 | 155 ${CMAKE_SOURCE_DIR}/Orthanc/Core/ImageFormats/PngReader.cpp |
26 | 156 ${CMAKE_SOURCE_DIR}/Orthanc/Core/ImageFormats/PngWriter.cpp |
157 ${CMAKE_SOURCE_DIR}/Orthanc/Core/MultiThreading/SharedMessageQueue.cpp | |
158 ${CMAKE_SOURCE_DIR}/Orthanc/Core/OrthancException.cpp | |
159 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/Connection.cpp | |
160 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/FunctionContext.cpp | |
161 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/Statement.cpp | |
162 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/StatementId.cpp | |
163 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/StatementReference.cpp | |
164 ${CMAKE_SOURCE_DIR}/Orthanc/Core/SQLite/Transaction.cpp | |
165 ${CMAKE_SOURCE_DIR}/Orthanc/Core/Toolbox.cpp | |
166 ${CMAKE_SOURCE_DIR}/Orthanc/Core/Uuid.cpp | |
167 ${CMAKE_SOURCE_DIR}/Orthanc/Resources/ThirdParty/base64/base64.cpp | |
168 ${CMAKE_SOURCE_DIR}/Orthanc/Resources/ThirdParty/md5/md5.c | |
0 | 169 |
170 ${CMAKE_SOURCE_DIR}/Plugin/Cache/CacheManager.cpp | |
171 ${CMAKE_SOURCE_DIR}/Plugin/Cache/CacheScheduler.cpp | |
172 ${CMAKE_SOURCE_DIR}/Plugin/JpegWriter.cpp | |
173 ${CMAKE_SOURCE_DIR}/Plugin/ViewerToolbox.cpp | |
174 ${CMAKE_SOURCE_DIR}/Plugin/SeriesVolumeSorter.cpp | |
175 ${CMAKE_SOURCE_DIR}/Plugin/ViewerPrefetchPolicy.cpp | |
176 ${CMAKE_SOURCE_DIR}/Plugin/InstanceInformation.cpp | |
177 ${CMAKE_SOURCE_DIR}/Plugin/InstanceInformationAdapter.cpp | |
178 ${CMAKE_SOURCE_DIR}/Plugin/SeriesInformationAdapter.cpp | |
179 ) | |
180 | |
181 add_library(OrthancWebViewer | |
182 SHARED | |
183 ${CORE_SOURCES} | |
184 ${AUTOGENERATED_SOURCES} | |
185 ${CMAKE_SOURCE_DIR}/Plugin/Plugin.cpp | |
186 | |
187 # The following files depend on GDCM | |
188 ${CMAKE_SOURCE_DIR}/Plugin/ParsedDicomImage.cpp | |
189 ${CMAKE_SOURCE_DIR}/Plugin/DecodedImageAdapter.cpp | |
190 ) | |
191 | |
26 | 192 |
0 | 193 if (STATIC_BUILD OR NOT USE_SYSTEM_GDCM) |
194 add_dependencies(OrthancWebViewer GDCM) | |
195 endif() | |
196 | |
26 | 197 target_link_libraries(OrthancWebViewer ${GDCM_LIBRARIES}) |
0 | 198 |
8 | 199 message("Setting the version of the library to ${ORTHANC_WEBVIEWER_VERSION}") |
12 | 200 |
201 add_definitions(-DORTHANC_WEBVIEWER_VERSION="${ORTHANC_WEBVIEWER_VERSION}") | |
202 | |
8 | 203 set_target_properties(OrthancWebViewer PROPERTIES |
204 VERSION ${ORTHANC_WEBVIEWER_VERSION} | |
205 SOVERSION ${ORTHANC_WEBVIEWER_VERSION}) | |
206 | |
0 | 207 install( |
8 | 208 TARGETS OrthancWebViewer |
209 RUNTIME DESTINATION lib # Destination for Windows | |
9 | 210 LIBRARY DESTINATION share/orthanc/plugins # Destination for Linux |
8 | 211 ) |
0 | 212 |
213 add_executable(UnitTests | |
214 ${CORE_SOURCES} | |
215 ${GTEST_SOURCES} | |
30 | 216 ${JSONCPP_SOURCES} |
0 | 217 UnitTestsSources/UnitTestsMain.cpp |
218 ) |