comparison Resources/Orthanc/DownloadOrthancFramework.cmake @ 149:d0b02fd48a92

sync
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 29 Jun 2020 19:20:45 +0200
parents e4f1fb4412ea
children 063aa53b5917
comparison
equal deleted inserted replaced
148:4d3c3e58986d 149:d0b02fd48a92
33 ## 33 ##
34 ## Check whether the parent script sets the mandatory variables 34 ## Check whether the parent script sets the mandatory variables
35 ## 35 ##
36 36
37 if (NOT DEFINED ORTHANC_FRAMEWORK_SOURCE OR 37 if (NOT DEFINED ORTHANC_FRAMEWORK_SOURCE OR
38 (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" AND 38 (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system" AND
39 NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" AND
39 NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "web" AND 40 NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "web" AND
40 NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" AND 41 NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" AND
41 NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "path")) 42 NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "path"))
42 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_SOURCE must be set to \"hg\", \"web\", \"archive\" or \"path\"") 43 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_SOURCE must be set to \"system\", \"hg\", \"web\", \"archive\" or \"path\"")
43 endif() 44 endif()
44 45
45 46
46 ## 47 ##
47 ## Detection of the requested version 48 ## Detection of the requested version
110 set(ORTHANC_FRAMEWORK_MD5 "3c29de1e289b5472342947168f0105c0") 111 set(ORTHANC_FRAMEWORK_MD5 "3c29de1e289b5472342947168f0105c0")
111 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.7") 112 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.7")
112 set(ORTHANC_FRAMEWORK_MD5 "e1b76f01116d9b5d4ac8cc39980560e3") 113 set(ORTHANC_FRAMEWORK_MD5 "e1b76f01116d9b5d4ac8cc39980560e3")
113 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.8") 114 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.8")
114 set(ORTHANC_FRAMEWORK_MD5 "82323e8c49a667f658a3639ea4dbc336") 115 set(ORTHANC_FRAMEWORK_MD5 "82323e8c49a667f658a3639ea4dbc336")
116 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.6.0")
117 set(ORTHANC_FRAMEWORK_MD5 "eab428d6e53f61e847fa360bb17ebe25")
118 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.6.1")
119 set(ORTHANC_FRAMEWORK_MD5 "3971f5de96ba71dc9d3f3690afeaa7c0")
120 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.7.0")
121 set(ORTHANC_FRAMEWORK_MD5 "ce5f689e852b01d3672bd3d2f952a5ef")
122 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.7.1")
123 set(ORTHANC_FRAMEWORK_MD5 "3c171217f930abe80246997bdbcaf7cc")
124
125 # Below this point are development snapshots that were used to
126 # release some plugin, before an official release of the Orthanc
127 # framework was available. Here is the command to be used to
128 # generate a proper archive:
129 #
130 # $ hg archive /tmp/Orthanc-`hg id -i | sed 's/\+//'`.tar.gz
131 #
132 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "ae0e3fd609df")
133 # DICOMweb 1.1 (framework pre-1.6.0)
134 set(ORTHANC_FRAMEWORK_MD5 "7e09e9b530a2f527854f0b782d7e0645")
115 endif() 135 endif()
116 endif() 136 endif()
117 endif() 137 endif()
118 else() 138
139 elseif (NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
119 message("Using the Orthanc framework from a path of the filesystem. Assuming mainline version.") 140 message("Using the Orthanc framework from a path of the filesystem. Assuming mainline version.")
120 set(ORTHANC_FRAMEWORK_MAJOR 999) 141 set(ORTHANC_FRAMEWORK_MAJOR 999)
121 set(ORTHANC_FRAMEWORK_MINOR 999) 142 set(ORTHANC_FRAMEWORK_MINOR 999)
122 set(ORTHANC_FRAMEWORK_REVISION 999) 143 set(ORTHANC_FRAMEWORK_REVISION 999)
123 endif() 144 endif()
201 RESULT_VARIABLE Failure 222 RESULT_VARIABLE Failure
202 ) 223 )
203 else() 224 else()
204 message("Forking the Orthanc source repository using Mercurial") 225 message("Forking the Orthanc source repository using Mercurial")
205 execute_process( 226 execute_process(
206 COMMAND ${ORTHANC_FRAMEWORK_HG} clone "https://bitbucket.org/sjodogne/orthanc" 227 COMMAND ${ORTHANC_FRAMEWORK_HG} clone "https://hg.orthanc-server.com/orthanc/"
207 WORKING_DIRECTORY ${CMAKE_BINARY_DIR} 228 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
208 RESULT_VARIABLE Failure 229 RESULT_VARIABLE Failure
209 ) 230 )
210 endif() 231 endif()
211 232
350 if (NOT IS_DIRECTORY "${ORTHANC_ROOT}") 371 if (NOT IS_DIRECTORY "${ORTHANC_ROOT}")
351 message(FATAL_ERROR "The Orthanc framework was not uncompressed at the proper location. Check the CMake instructions.") 372 message(FATAL_ERROR "The Orthanc framework was not uncompressed at the proper location. Check the CMake instructions.")
352 endif() 373 endif()
353 endif() 374 endif()
354 endif() 375 endif()
376
377
378
379 ##
380 ## Case of the Orthanc framework installed as a shared library in a
381 ## GNU/Linux distribution (typically Debian)
382 ##
383
384 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
385 set(ORTHANC_FRAMEWORK_LIBDIR "" CACHE PATH "")
386
387 if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND
388 CMAKE_COMPILER_IS_GNUCXX) # MinGW
389 set(DYNAMIC_MINGW_STDLIB ON) # Disable static linking against libc (to throw exceptions)
390 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++")
391 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++")
392 endif()
393
394 include(CheckIncludeFile)
395 include(CheckIncludeFileCXX)
396 include(FindPythonInterp)
397 include(${CMAKE_CURRENT_LIST_DIR}/Compiler.cmake)
398 include(${CMAKE_CURRENT_LIST_DIR}/DownloadPackage.cmake)
399 include(${CMAKE_CURRENT_LIST_DIR}/AutoGeneratedCode.cmake)
400 set(EMBED_RESOURCES_PYTHON ${CMAKE_CURRENT_LIST_DIR}/EmbedResources.py)
401
402 if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" AND
403 NOT ORTHANC_FRAMEWORK_STATIC)
404 # Look for mandatory dependency JsonCpp (cf. JsonCppConfiguration.cmake)
405 find_path(JSONCPP_INCLUDE_DIR json/reader.h
406 /usr/include/jsoncpp
407 /usr/local/include/jsoncpp
408 )
409
410 message("JsonCpp include dir: ${JSONCPP_INCLUDE_DIR}")
411 include_directories(${JSONCPP_INCLUDE_DIR})
412 link_libraries(jsoncpp)
413
414 CHECK_INCLUDE_FILE_CXX(${JSONCPP_INCLUDE_DIR}/json/reader.h HAVE_JSONCPP_H)
415 if (NOT HAVE_JSONCPP_H)
416 message(FATAL_ERROR "Please install the libjsoncpp-dev package")
417 endif()
418
419 # Look for mandatory dependency Boost (cf. BoostConfiguration.cmake)
420 include(FindBoost)
421 find_package(Boost COMPONENTS filesystem thread system date_time regex)
422
423 if (NOT Boost_FOUND)
424 message(FATAL_ERROR "Unable to locate Boost on this system")
425 endif()
426
427 include_directories(${Boost_INCLUDE_DIRS})
428 link_libraries(${Boost_LIBRARIES})
429
430 # Optional component - Lua
431 if (ENABLE_LUA)
432 include(FindLua)
433
434 if (NOT LUA_FOUND)
435 message(FATAL_ERROR "Please install the liblua-dev package")
436 endif()
437
438 include_directories(${LUA_INCLUDE_DIR})
439 link_libraries(${LUA_LIBRARIES})
440 endif()
441
442 # Optional component - SQLite
443 if (ENABLE_SQLITE)
444 CHECK_INCLUDE_FILE(sqlite3.h HAVE_SQLITE_H)
445 if (NOT HAVE_SQLITE_H)
446 message(FATAL_ERROR "Please install the libsqlite3-dev package")
447 endif()
448 link_libraries(sqlite3)
449 endif()
450 endif()
451
452 # Optional component - Google Test
453 if (ENABLE_GOOGLE_TEST)
454 set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test")
455 set(USE_GOOGLE_TEST_DEBIAN_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)")
456 mark_as_advanced(USE_GOOGLE_TEST_DEBIAN_PACKAGE)
457 include(${CMAKE_CURRENT_LIST_DIR}/GoogleTestConfiguration.cmake)
458 endif()
459
460 # Look for Orthanc framework shared library
461 include(CheckCXXSymbolExists)
462
463 if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
464 set(ORTHANC_FRAMEWORK_INCLUDE_DIR ${ORTHANC_FRAMEWORK_ROOT})
465 include_directories(${ORTHANC_FRAMEWORK_ROOT}/..)
466 else()
467 find_path(ORTHANC_FRAMEWORK_INCLUDE_DIR OrthancFramework.h
468 /usr/include/orthanc-framework
469 /usr/local/include/orthanc-framework
470 ${ORTHANC_FRAMEWORK_ROOT}
471 )
472 endif()
473
474 message("Orthanc framework include dir: ${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
475 include_directories(${ORTHANC_FRAMEWORK_INCLUDE_DIR})
476
477 set(CMAKE_REQUIRED_INCLUDES "${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
478
479 if (NOT "${ORTHANC_FRAMEWORK_LIBDIR}" STREQUAL "")
480 set(CMAKE_REQUIRED_LIBRARIES "-L${ORTHANC_FRAMEWORK_LIBDIR} -lOrthancFramework")
481 else()
482 set(CMAKE_REQUIRED_LIBRARIES "OrthancFramework")
483 endif()
484
485 check_cxx_symbol_exists("Orthanc::InitializeFramework" "OrthancFramework.h" HAVE_ORTHANC_FRAMEWORK)
486 if(NOT HAVE_ORTHANC_FRAMEWORK)
487 message(FATAL_ERROR "Cannot find the Orthanc framework")
488 endif()
489
490 if (NOT "${ORTHANC_FRAMEWORK_ROOT}" STREQUAL "")
491 include_directories(${ORTHANC_FRAMEWORK_ROOT})
492 endif()
493
494 if (NOT "${ORTHANC_FRAMEWORK_LIBDIR}" STREQUAL "")
495 link_directories(${ORTHANC_FRAMEWORK_LIBDIR})
496 endif()
497 endif()