Mercurial > hg > orthanc-webviewer
changeset 193:20636b255424
cont
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 17 Apr 2018 11:44:39 +0200 |
parents | afaa2e133e7d |
children | a1ca7cf02939 |
files | CMakeLists.txt Resources/Orthanc/DownloadOrthancFramework.cmake |
diffstat | 2 files changed, 48 insertions(+), 54 deletions(-) [+] |
line wrap: on
line diff
--- a/CMakeLists.txt Mon Apr 16 21:33:19 2018 +0200 +++ b/CMakeLists.txt Tue Apr 17 11:44:39 2018 +0200 @@ -23,28 +23,30 @@ set(ORTHANC_WEBVIEWER_VERSION "mainline") +if (ORTHANC_WEBVIEWER_VERSION STREQUAL "mainline") + set(ORTHANC_FRAMEWORK_VERSION "mainline") + set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg") +else() + set(ORTHANC_FRAMEWORK_VERSION "1.3.1") + set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web") +endif() + + # Parameters of the build set(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") -SET(STANDALONE_BUILD ON CACHE BOOL "Standalone build (all the resources are embedded, necessary for releases)") +set(STANDALONE_BUILD ON CACHE BOOL "Standalone build (all the resources are embedded, necessary for releases)") set(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages") +set(ORTHANC_FRAMEWORK_SOURCE "${ORTHANC_FRAMEWORK_DEFAULT_SOURCE}" CACHE STRING "Source of the Orthanc source code (can be \"hg\", \"archive\", \"web\" or \"path\")") +set(ORTHANC_FRAMEWORK_ARCHIVE "" CACHE STRING "Path to the Orthanc archive, if ORTHANC_FRAMEWORK_SOURCE is \"archive\"") +set(ORTHANC_FRAMEWORK_ROOT "" CACHE STRING "Path to the Orthanc source directory, if ORTHANC_FRAMEWORK_SOURCE is \"path\"") # Advanced parameters to fine-tune linking against system libraries set(USE_SYSTEM_GDCM ON CACHE BOOL "Use the system version of Grassroot DICOM (GDCM)") set(USE_SYSTEM_ORTHANC_SDK ON CACHE BOOL "Use the system version of the Orthanc plugin SDK") -# Download the Orthanc framework -if (ORTHANC_WEBVIEWER_VERSION STREQUAL "mainline") - set(ORTHANC_FRAMEWORK_SOURCE "hg") - set(ORTHANC_FRAMEWORK_VERSION "mainline") -else() - set(ORTHANC_FRAMEWORK_SOURCE "web") - set(ORTHANC_FRAMEWORK_VERSION "1.3.1") -endif() +# Download and setup the Orthanc framework include(${CMAKE_SOURCE_DIR}/Resources/Orthanc/DownloadOrthancFramework.cmake) - - -# Initialize the Orthanc framework include(${ORTHANC_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake) set(ENABLE_LOCALE OFF) # Disable support for locales (notably in Boost)
--- a/Resources/Orthanc/DownloadOrthancFramework.cmake Mon Apr 16 21:33:19 2018 +0200 +++ b/Resources/Orthanc/DownloadOrthancFramework.cmake Tue Apr 17 11:44:39 2018 +0200 @@ -43,21 +43,12 @@ endif() -if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" OR - ORTHANC_FRAMEWORK_SOURCE STREQUAL "web") - if (NOT STATIC_BUILD AND - NOT ALLOW_DOWNLOADS) - message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON") - endif() -endif() - - - ## ## Detection of the requested version ## if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" OR + ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR ORTHANC_FRAMEWORK_SOURCE STREQUAL "web") if (NOT DEFINED ORTHANC_FRAMEWORK_VERSION) message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_VERSION must be set") @@ -65,10 +56,13 @@ if (DEFINED ORTHANC_FRAMEWORK_MAJOR OR DEFINED ORTHANC_FRAMEWORK_MINOR OR - DEFINED ORTHANC_FRAMEWORK_REVISION) + DEFINED ORTHANC_FRAMEWORK_REVISION OR + DEFINED ORTHANC_FRAMEWORK_MD5) message(FATAL_ERROR "Some internal variable has been set") endif() + set(ORTHANC_FRAMEWORK_MD5 "") + if (ORTHANC_FRAMEWORK_VERSION STREQUAL "mainline") set(ORTHANC_FRAMEWORK_BRANCH "default") @@ -85,6 +79,10 @@ NOT ORTHANC_FRAMEWORK_REVISION MATCHES "^[0-9]+$") message("Bad version of the Orthanc framework: ${ORTHANC_FRAMEWORK_VERSION}") endif() + + if (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.3.1") + set(ORTHANC_FRAMEWORK_MD5 "dac95bd6cf86fb19deaf4e612961f378") + endif() endif() endif() @@ -140,7 +138,7 @@ endif() if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake) - message(FATAL_ERROR "Directory not containing a version of Orthanc: ${ORTHANC_FRAMEWORK_ROOT}") + message(FATAL_ERROR "Directory not containing the source code of Orthanc: ${ORTHANC_FRAMEWORK_ROOT}") endif() set(ORTHANC_ROOT ${ORTHANC_FRAMEWORK_ROOT}) @@ -153,8 +151,12 @@ ## if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg") + if (NOT STATIC_BUILD AND NOT ALLOW_DOWNLOADS) + message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON") + endif() + set(ORTHANC_ROOT ${CMAKE_BINARY_DIR}/orthanc) - + if (NOT EXISTS ${ORTHANC_ROOT}) message("Forking the Orthanc source repository using Mercurial") @@ -193,20 +195,6 @@ if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE) message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_ARCHIVE must provide the path to the sources of Orthanc") endif() - - set(RE "^.*/Orthanc-([0-9]+)\\.([0-9]+)\\.([0-9]+).tar.gz$") - string(REGEX REPLACE ${RE} "\\1" ORTHANC_FRAMEWORK_MAJOR ${ORTHANC_FRAMEWORK_ARCHIVE}) - string(REGEX REPLACE ${RE} "\\2" ORTHANC_FRAMEWORK_MINOR ${ORTHANC_FRAMEWORK_ARCHIVE}) - string(REGEX REPLACE ${RE} "\\3" ORTHANC_FRAMEWORK_REVISION ${ORTHANC_FRAMEWORK_ARCHIVE}) - - if (NOT ORTHANC_FRAMEWORK_MAJOR MATCHES "^[0-9]+$" OR - NOT ORTHANC_FRAMEWORK_MINOR MATCHES "^[0-9]+$" OR - NOT ORTHANC_FRAMEWORK_REVISION MATCHES "^[0-9]+$") - message("Cannot detect the version of this release of Orthanc: ${ORTHANC_FRAMEWORK_ARCHIVE}") - endif() - - set(ORTHANC_FRAMEWORK_VERSION ${ORTHANC_FRAMEWORK_MAJOR}.${ORTHANC_FRAMEWORK_MINOR}.${ORTHANC_FRAMEWORK_REVISION}) - message("Detected version of Orthanc: ${ORTHANC_FRAMEWORK_VERSION}") endif() @@ -219,16 +207,14 @@ set(ORTHANC_FRAMEMORK_FILENAME Orthanc-${ORTHANC_FRAMEWORK_VERSION}.tar.gz) set(ORTHANC_FRAMEWORK_URL "https://www.orthanc-server.com/downloads/get.php?path=/orthanc/${ORTHANC_FRAMEMORK_FILENAME}") - if (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.3.1") - set(ORTHANC_FRAMEWORK_MD5 "dac95bd6cf86fb19deaf4e612961f378") - else() - message(FATAL_ERROR "Unknown release of Orthanc: ${ORTHANC_FRAMEWORK_VERSION}") - endif() - set(ORTHANC_FRAMEWORK_ARCHIVE "${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${ORTHANC_FRAMEMORK_FILENAME}") if (NOT EXISTS "${ORTHANC_FRAMEWORK_ARCHIVE}") - message("Downloading ${ORTHANC_FRAMEWORK_ARCHIVE}") + if (NOT STATIC_BUILD AND NOT ALLOW_DOWNLOADS) + message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON") + endif() + + message("Downloading: ${ORTHANC_FRAMEWORK_ARCHIVE}") file(DOWNLOAD "${ORTHANC_FRAMEWORK_URL}" "${ORTHANC_FRAMEWORK_ARCHIVE}" @@ -237,12 +223,7 @@ INACTIVITY_TIMEOUT 60 ) else() - message("Using local copy of ${ORTHANC_FRAMEWORK_URL}") - - file(MD5 ${ORTHANC_FRAMEWORK_ARCHIVE} ActualMD5) - if (NOT "${ActualMD5}" STREQUAL "${ORTHANC_FRAMEWORK_MD5}") - message(FATAL_ERROR "The MD5 hash of a previously download file is invalid: ${ORTHANC_FRAMEWORK_ARCHIVE}") - endif() + message("Using local copy of: ${ORTHANC_FRAMEWORK_URL}") endif() endif() @@ -258,10 +239,21 @@ ORTHANC_FRAMEWORK_SOURCE STREQUAL "web") if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE OR - NOT DEFINED ORTHANC_FRAMEWORK_VERSION) + NOT DEFINED ORTHANC_FRAMEWORK_VERSION OR + NOT DEFINED ORTHANC_FRAMEWORK_MD5) message(FATAL_ERROR "Internal error") endif() + if (ORTHANC_FRAMEWORK_MD5 STREQUAL "") + message(FATAL_ERROR "Unknown release of Orthanc: ${ORTHANC_FRAMEWORK_VERSION}") + endif() + + file(MD5 ${ORTHANC_FRAMEWORK_ARCHIVE} ActualMD5) + + if (NOT "${ActualMD5}" STREQUAL "${ORTHANC_FRAMEWORK_MD5}") + message(FATAL_ERROR "The MD5 hash of the Orthanc archive is invalid: ${ORTHANC_FRAMEWORK_ARCHIVE}") + endif() + set(ORTHANC_ROOT "${CMAKE_BINARY_DIR}/Orthanc-${ORTHANC_FRAMEWORK_VERSION}") if (NOT IS_DIRECTORY "${ORTHANC_ROOT}") @@ -269,7 +261,7 @@ message(FATAL_ERROR "Archive should have the \".tar.gz\" extension: ${ORTHANC_FRAMEWORK_ARCHIVE}") endif() - message("Uncompressing ${ORTHANC_FRAMEWORK_ARCHIVE}") + message("Uncompressing: ${ORTHANC_FRAMEWORK_ARCHIVE}") if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") # How to silently extract files using 7-zip