1# Orthanc - A Lightweight, RESTful DICOM Store 2# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics 3# Department, University Hospital of Liege, Belgium 4# Copyright (C) 2017-2020 Osimis S.A., Belgium 5# 6# This program is free software: you can redistribute it and/or 7# modify it under the terms of the GNU Lesser General Public License 8# as published by the Free Software Foundation, either version 3 of 9# the License, or (at your option) any later version. 10# 11# This program is distributed in the hope that it will be useful, but 12# WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14# Lesser General Public License for more details. 15# 16# You should have received a copy of the GNU Lesser General Public 17# License along with this program. If not, see 18# <http://www.gnu.org/licenses/>. 19 20 21##################################################################### 22## Versioning information 23##################################################################### 24 25# Version of the build, should always be "mainline" except in release branches 26set(ORTHANC_VERSION "1.8.1") 27 28# Version of the database schema. History: 29# * Orthanc 0.1.0 -> Orthanc 0.3.0 = no versioning 30# * Orthanc 0.3.1 = version 2 31# * Orthanc 0.4.0 -> Orthanc 0.7.2 = version 3 32# * Orthanc 0.7.3 -> Orthanc 0.8.4 = version 4 33# * Orthanc 0.8.5 -> Orthanc 0.9.4 = version 5 34# * Orthanc 0.9.5 -> mainline = version 6 35set(ORTHANC_DATABASE_VERSION 6) 36 37# Version of the Orthanc API, can be retrieved from "/system" URI in 38# order to check whether new URI endpoints are available even if using 39# the mainline version of Orthanc 40set(ORTHANC_API_VERSION "9") 41 42 43##################################################################### 44## CMake parameters tunable by the user 45##################################################################### 46 47# Support of static compilation 48set(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages") 49set(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") 50 51# Generic parameters of the build 52set(ENABLE_CIVETWEB ON CACHE BOOL "Use Civetweb instead of Mongoose (Mongoose was the default embedded HTTP server in Orthanc <= 1.5.1)") 53set(ENABLE_PKCS11 OFF CACHE BOOL "Enable PKCS#11 for HTTPS client authentication using hardware security modules and smart cards") 54set(ENABLE_PROFILING OFF CACHE BOOL "Whether to enable the generation of profiling information with gprof") 55set(ENABLE_SSL ON CACHE BOOL "Include support for SSL") 56set(ENABLE_LUA_MODULES OFF CACHE BOOL "Enable support for loading external Lua modules (only meaningful if using static version of the Lua engine)") 57 58# Parameters to fine-tune linking against system libraries 59set(USE_SYSTEM_BOOST ON CACHE BOOL "Use the system version of Boost") 60set(USE_SYSTEM_CIVETWEB ON CACHE BOOL "Use the system version of Civetweb (experimental)") 61set(USE_SYSTEM_CURL ON CACHE BOOL "Use the system version of LibCurl") 62set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test") 63set(USE_SYSTEM_JSONCPP ON CACHE BOOL "Use the system version of JsonCpp") 64set(USE_SYSTEM_LIBICONV ON CACHE BOOL "Use the system version of libiconv") 65set(USE_SYSTEM_LIBICU ON CACHE BOOL "Use the system version of libicu") 66set(USE_SYSTEM_LIBJPEG ON CACHE BOOL "Use the system version of libjpeg") 67set(USE_SYSTEM_LIBP11 OFF CACHE BOOL "Use the system version of libp11 (PKCS#11 wrapper library)") 68set(USE_SYSTEM_LIBPNG ON CACHE BOOL "Use the system version of libpng") 69set(USE_SYSTEM_LUA ON CACHE BOOL "Use the system version of Lua") 70set(USE_SYSTEM_MONGOOSE ON CACHE BOOL "Use the system version of Mongoose") 71set(USE_SYSTEM_OPENSSL ON CACHE BOOL "Use the system version of OpenSSL") 72set(USE_SYSTEM_PUGIXML ON CACHE BOOL "Use the system version of Pugixml") 73set(USE_SYSTEM_SQLITE ON CACHE BOOL "Use the system version of SQLite") 74set(USE_SYSTEM_UUID ON CACHE BOOL "Use the system version of the uuid library from e2fsprogs") 75set(USE_SYSTEM_ZLIB ON CACHE BOOL "Use the system version of ZLib") 76 77# Parameters specific to DCMTK 78set(DCMTK_DICTIONARY_DIR "" CACHE PATH "Directory containing the DCMTK dictionaries \"dicom.dic\" and \"private.dic\" (only when using system version of DCMTK)") 79set(DCMTK_STATIC_VERSION "3.6.5" CACHE STRING "Version of DCMTK to be used in static builds (can be \"3.6.0\", \"3.6.2\", \"3.6.4\", or \"3.6.5\")") 80set(USE_DCMTK_362_PRIVATE_DIC ON CACHE BOOL "Use the dictionary of private tags from DCMTK 3.6.2 if using DCMTK 3.6.0") 81set(USE_SYSTEM_DCMTK ON CACHE BOOL "Use the system version of DCMTK") 82set(ENABLE_DCMTK_LOG ON CACHE BOOL "Enable logging internal to DCMTK") 83set(ENABLE_DCMTK_JPEG ON CACHE BOOL "Enable JPEG-LS (Lossless) decompression") 84set(ENABLE_DCMTK_JPEG_LOSSLESS ON CACHE BOOL "Enable JPEG-LS (Lossless) decompression") 85 86# Advanced and distribution-specific parameters 87set(USE_GOOGLE_TEST_DEBIAN_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)") 88set(SYSTEM_MONGOOSE_USE_CALLBACKS ON CACHE BOOL "The system version of Mongoose uses callbacks (version >= 3.7)") 89set(BOOST_LOCALE_BACKEND "libiconv" CACHE STRING "Back-end for locales that is used by Boost (can be \"gcc\", \"libiconv\", \"icu\", or \"wconv\" on Windows)") 90set(USE_PUGIXML ON CACHE BOOL "Use the Pugixml parser (turn off only for debug)") 91set(USE_LEGACY_JSONCPP OFF CACHE BOOL "Use the old branch 0.x.y of JsonCpp, that does not require a C++11 compiler (for LSB and old versions of Visual Studio)") 92set(USE_LEGACY_LIBICU OFF CACHE BOOL "Use icu icu4c-58_2, latest version not requiring a C++11 compiler (for LSB and old versions of Visual Studio)") 93set(MSVC_MULTIPLE_PROCESSES OFF CACHE BOOL "Add the /MP option to build with multiple processes if using Visual Studio") 94set(EMSCRIPTEN_TARGET_MODE "wasm" CACHE STRING "Sets the target mode for Emscripten (can be \"wasm\" or \"asm.js\")") 95set(EMSCRIPTEN_TRAP_MODE "" CACHE STRING "Sets the trap mode for Emscripten for numeric errors (can notably be empty, or \"clamp\")") 96set(OPENSSL_STATIC_VERSION "1.1.1" CACHE STRING "Version of OpenSSL to be used in static builds (can be \"1.0.2\", or \"1.1.1\")") 97set(CIVETWEB_OPENSSL_API "1.1" CACHE STRING "Version of the OpenSSL API to be used in civetweb in static builds (can be \"1.0\" or \"1.1\"") 98 99mark_as_advanced(CIVETWEB_OPENSSL_API) 100mark_as_advanced(EMSCRIPTEN_TARGET_MODE) 101mark_as_advanced(EMSCRIPTEN_TRAP_MODE) 102mark_as_advanced(SYSTEM_MONGOOSE_USE_CALLBACKS) 103mark_as_advanced(USE_DCMTK_362_PRIVATE_DIC) 104mark_as_advanced(USE_GOOGLE_TEST_DEBIAN_PACKAGE) 105mark_as_advanced(USE_PUGIXML) 106 107 108##################################################################### 109## Internal CMake parameters to enable the optional subcomponents of 110## the Orthanc framework 111##################################################################### 112 113# These options must be set to "ON" if compiling Orthanc, but might be 114# set to "OFF" by third-party projects if their associated features 115# are not required 116 117set(ENABLE_CRYPTO_OPTIONS OFF CACHE INTERNAL "Show options related to cryptography") 118set(ENABLE_JPEG OFF CACHE INTERNAL "Enable support of JPEG") 119set(ENABLE_GOOGLE_TEST OFF CACHE INTERNAL "Enable support of Google Test") 120set(ENABLE_LOCALE OFF CACHE INTERNAL "Enable support for locales (notably in Boost)") 121set(ENABLE_LUA OFF CACHE INTERNAL "Enable support of Lua scripting") 122set(ENABLE_PNG OFF CACHE INTERNAL "Enable support of PNG") 123set(ENABLE_PUGIXML OFF CACHE INTERNAL "Enable support of XML through Pugixml") 124set(ENABLE_SQLITE OFF CACHE INTERNAL "Enable support of SQLite databases") 125set(ENABLE_ZLIB OFF CACHE INTERNAL "Enable support of zlib") 126set(ENABLE_WEB_CLIENT OFF CACHE INTERNAL "Enable Web client") 127set(ENABLE_WEB_SERVER OFF CACHE INTERNAL "Enable embedded Web server") 128set(ENABLE_DCMTK OFF CACHE INTERNAL "Enable DCMTK") 129set(ENABLE_DCMTK_NETWORKING OFF CACHE INTERNAL "Enable DICOM networking in DCMTK") 130set(ENABLE_DCMTK_TRANSCODING OFF CACHE INTERNAL "Enable DICOM transcoding in DCMTK") 131set(ENABLE_OPENSSL_ENGINES OFF CACHE INTERNAL "Enable support of engines in OpenSSL") 132 133set(ORTHANC_SANDBOXED OFF CACHE INTERNAL 134 "Whether Orthanc runs inside a sandboxed environment (such as Google NaCl or WebAssembly)") 135 136set(ORTHANC_BUILDING_FRAMEWORK_LIBRARY OFF CACHE INTERNAL 137 "Whether we are in the process of building the Orthanc Framework shared library") 138 139# 140# These options can be used to turn off some modules of the Orthanc 141# framework, in order to speed up the compilation time of third-party 142# projects. 143# 144 145set(ENABLE_MODULE_IMAGES ON CACHE INTERNAL "Enable module for image processing") 146set(ENABLE_MODULE_JOBS ON CACHE INTERNAL "Enable module for jobs") 147set(ENABLE_MODULE_DICOM ON CACHE INTERNAL "Enable module for DICOM handling") 148