comparison Resources/Orthanc/CMake/DownloadOrthancFramework.cmake @ 272:c7dc70a0a477

upgrade to Orthanc SDK 1.9.2
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 22 Apr 2021 14:09:46 +0200
parents 3236894320d6
children 64bf8914f02e
comparison
equal deleted inserted replaced
271:6b18d3fbee82 272:c7dc70a0a477
120 set(ORTHANC_FRAMEWORK_MD5 "f8ec7554ef5d23ea4ce474b1e8214de9") 120 set(ORTHANC_FRAMEWORK_MD5 "f8ec7554ef5d23ea4ce474b1e8214de9")
121 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.8.1") 121 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.8.1")
122 set(ORTHANC_FRAMEWORK_MD5 "db094f96399cbe8b9bbdbce34884c220") 122 set(ORTHANC_FRAMEWORK_MD5 "db094f96399cbe8b9bbdbce34884c220")
123 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.8.2") 123 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.8.2")
124 set(ORTHANC_FRAMEWORK_MD5 "8bfa10e66c9931e74111be0bfb1f4548") 124 set(ORTHANC_FRAMEWORK_MD5 "8bfa10e66c9931e74111be0bfb1f4548")
125 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.9.0")
126 set(ORTHANC_FRAMEWORK_MD5 "cea0b02ce184671eaf1bd668beefbf28")
127 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.9.1")
128 set(ORTHANC_FRAMEWORK_MD5 "08eebc66ef93c3b40115c38501db5fbd")
129 elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.9.2")
130 set(ORTHANC_FRAMEWORK_MD5 "3ea66c09f64aca990016683b6375734e")
125 131
126 # Below this point are development snapshots that were used to 132 # Below this point are development snapshots that were used to
127 # release some plugin, before an official release of the Orthanc 133 # release some plugin, before an official release of the Orthanc
128 # framework was available. Here is the command to be used to 134 # framework was available. Here is the command to be used to
129 # generate a proper archive: 135 # generate a proper archive:
424 ## GNU/Linux distribution (typically Debian). New in Orthanc 1.7.2. 430 ## GNU/Linux distribution (typically Debian). New in Orthanc 1.7.2.
425 ## 431 ##
426 432
427 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system") 433 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
428 set(ORTHANC_FRAMEWORK_LIBDIR "" CACHE PATH "") 434 set(ORTHANC_FRAMEWORK_LIBDIR "" CACHE PATH "")
435 set(ORTHANC_FRAMEWORK_USE_SHARED ON CACHE BOOL "Whether to use the shared library or the static library")
436 set(ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES "" CACHE STRING "Additional libraries to link against, separated by whitespaces, typically needed if using the static library (a common minimal value is \"boost_filesystem boost_iostreams boost_locale boost_regex boost_thread jsoncpp pugixml uuid\")")
429 437
430 if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND 438 if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND
431 CMAKE_COMPILER_IS_GNUCXX) # MinGW 439 CMAKE_COMPILER_IS_GNUCXX) # MinGW
432 set(DYNAMIC_MINGW_STDLIB ON) # Disable static linking against libc (to throw exceptions) 440 set(DYNAMIC_MINGW_STDLIB ON) # Disable static linking against libc (to throw exceptions)
433 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++") 441 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++")
440 include(${CMAKE_CURRENT_LIST_DIR}/Compiler.cmake) 448 include(${CMAKE_CURRENT_LIST_DIR}/Compiler.cmake)
441 include(${CMAKE_CURRENT_LIST_DIR}/DownloadPackage.cmake) 449 include(${CMAKE_CURRENT_LIST_DIR}/DownloadPackage.cmake)
442 include(${CMAKE_CURRENT_LIST_DIR}/AutoGeneratedCode.cmake) 450 include(${CMAKE_CURRENT_LIST_DIR}/AutoGeneratedCode.cmake)
443 set(EMBED_RESOURCES_PYTHON ${CMAKE_CURRENT_LIST_DIR}/EmbedResources.py) 451 set(EMBED_RESOURCES_PYTHON ${CMAKE_CURRENT_LIST_DIR}/EmbedResources.py)
444 452
445 if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" OR 453 if (ORTHANC_FRAMEWORK_USE_SHARED)
446 ORTHANC_FRAMEWORK_STATIC) 454 list(GET CMAKE_FIND_LIBRARY_PREFIXES 0 Prefix)
447 include_directories(${ORTHANC_FRAMEWORK_ROOT}/..) 455 list(GET CMAKE_FIND_LIBRARY_SUFFIXES 0 Suffix)
448 else() 456 else()
449 # Look for mandatory dependency JsonCpp (cf. JsonCppConfiguration.cmake) 457 list(GET CMAKE_FIND_LIBRARY_PREFIXES 0 Prefix)
458 list(GET CMAKE_FIND_LIBRARY_SUFFIXES 1 Suffix)
459 endif()
460
461 # The "OrthancFramework" library must be the first one to be included
462 if ("${ORTHANC_FRAMEWORK_LIBDIR}" STREQUAL "")
463 set(ORTHANC_FRAMEWORK_LIBRARIES ${Prefix}OrthancFramework${Suffix})
464 else ()
465 set(ORTHANC_FRAMEWORK_LIBRARIES ${ORTHANC_FRAMEWORK_LIBDIR}/${Prefix}OrthancFramework${Suffix})
466 endif()
467
468 if (NOT ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES STREQUAL "")
469 # https://stackoverflow.com/a/5272993/881731
470 string(REPLACE " " ";" tmp ${ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES})
471 list(APPEND ORTHANC_FRAMEWORK_LIBRARIES ${tmp})
472 endif()
473
474 # Look for the version of the mandatory dependency JsonCpp (cf. JsonCppConfiguration.cmake)
475 if (CMAKE_CROSSCOMPILING)
476 set(JSONCPP_INCLUDE_DIR ${ORTHANC_FRAMEWORK_ROOT}/..)
477 else()
450 find_path(JSONCPP_INCLUDE_DIR json/reader.h 478 find_path(JSONCPP_INCLUDE_DIR json/reader.h
479 ${ORTHANC_FRAMEWORK_ROOT}/..
451 /usr/include/jsoncpp 480 /usr/include/jsoncpp
452 /usr/local/include/jsoncpp 481 /usr/local/include/jsoncpp
453 ) 482 )
454 483 endif()
455 message("JsonCpp include dir: ${JSONCPP_INCLUDE_DIR}") 484
456 include_directories(${JSONCPP_INCLUDE_DIR}) 485 message("JsonCpp include dir: ${JSONCPP_INCLUDE_DIR}")
457 link_libraries(jsoncpp) 486 include_directories(${JSONCPP_INCLUDE_DIR})
458 487
459 CHECK_INCLUDE_FILE_CXX(${JSONCPP_INCLUDE_DIR}/json/reader.h HAVE_JSONCPP_H) 488 CHECK_INCLUDE_FILE_CXX(${JSONCPP_INCLUDE_DIR}/json/reader.h HAVE_JSONCPP_H)
460 if (NOT HAVE_JSONCPP_H) 489 if (NOT HAVE_JSONCPP_H)
461 message(FATAL_ERROR "Please install the libjsoncpp-dev package") 490 message(FATAL_ERROR "Please install the libjsoncpp-dev package")
462 endif() 491 endif()
463 492
464 # Switch to the C++11 standard if the version of JsonCpp is 1.y.z 493 # Switch to the C++11 standard if the version of JsonCpp is 1.y.z
465 # (same as variable JSONCPP_CXX11 in the source code of Orthanc) 494 # (same as variable JSONCPP_CXX11 in the source code of Orthanc)
466 if (EXISTS ${JSONCPP_INCLUDE_DIR}/json/version.h) 495 if (EXISTS ${JSONCPP_INCLUDE_DIR}/json/version.h)
467 file(STRINGS 496 file(STRINGS
468 "${JSONCPP_INCLUDE_DIR}/json/version.h" 497 "${JSONCPP_INCLUDE_DIR}/json/version.h"
469 JSONCPP_VERSION_MAJOR1 REGEX 498 JSONCPP_VERSION_MAJOR1 REGEX
470 ".*define JSONCPP_VERSION_MAJOR.*") 499 ".*define JSONCPP_VERSION_MAJOR.*")
471 500
472 if (NOT JSONCPP_VERSION_MAJOR1) 501 if (NOT JSONCPP_VERSION_MAJOR1)
473 message(FATAL_ERROR "Unable to extract the major version of JsonCpp") 502 message(FATAL_ERROR "Unable to extract the major version of JsonCpp")
503 endif()
504
505 string(REGEX REPLACE
506 ".*JSONCPP_VERSION_MAJOR.*([0-9]+)$" "\\1"
507 JSONCPP_VERSION_MAJOR ${JSONCPP_VERSION_MAJOR1})
508 message("JsonCpp major version: ${JSONCPP_VERSION_MAJOR}")
509
510 if (JSONCPP_VERSION_MAJOR GREATER 0)
511 message("Switching to C++11 standard, as version of JsonCpp is >= 1.0.0")
512 if (CMAKE_COMPILER_IS_GNUCXX)
513 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
514 elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
515 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
474 endif() 516 endif()
475 517 endif()
476 string(REGEX REPLACE 518 else()
477 ".*JSONCPP_VERSION_MAJOR.*([0-9]+)$" "\\1" 519 message("Unable to detect the major version of JsonCpp, assuming < 1.0.0")
478 JSONCPP_VERSION_MAJOR ${JSONCPP_VERSION_MAJOR1}) 520 endif()
479 message("JsonCpp major version: ${JSONCPP_VERSION_MAJOR}") 521
480
481 if (JSONCPP_VERSION_MAJOR GREATER 0)
482 message("Switching to C++11 standard, as version of JsonCpp is >= 1.0.0")
483 if (CMAKE_COMPILER_IS_GNUCXX)
484 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
485 elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
486 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
487 endif()
488 endif()
489 else()
490 message("Unable to detect the major version of JsonCpp, assuming < 1.0.0")
491 endif()
492
493 # Look for mandatory dependency Boost (cf. BoostConfiguration.cmake)
494 include(FindBoost)
495 find_package(Boost COMPONENTS filesystem thread system date_time regex ${ORTHANC_BOOST_COMPONENTS})
496
497 if (NOT Boost_FOUND)
498 message(FATAL_ERROR "Unable to locate Boost on this system")
499 endif()
500
501 include_directories(${Boost_INCLUDE_DIRS})
502 link_libraries(${Boost_LIBRARIES})
503
504 # Optional component - Lua
505 if (ENABLE_LUA)
506 include(FindLua)
507
508 if (NOT LUA_FOUND)
509 message(FATAL_ERROR "Please install the liblua-dev package")
510 endif()
511
512 include_directories(${LUA_INCLUDE_DIR})
513 link_libraries(${LUA_LIBRARIES})
514 endif()
515
516 # Optional component - SQLite
517 if (ENABLE_SQLITE)
518 CHECK_INCLUDE_FILE(sqlite3.h HAVE_SQLITE_H)
519 if (NOT HAVE_SQLITE_H)
520 message(FATAL_ERROR "Please install the libsqlite3-dev package")
521 endif()
522 link_libraries(sqlite3)
523 endif()
524
525 # Optional component - Pugixml
526 if (ENABLE_PUGIXML)
527 CHECK_INCLUDE_FILE_CXX(pugixml.hpp HAVE_PUGIXML_H)
528 if (NOT HAVE_PUGIXML_H)
529 message(FATAL_ERROR "Please install the libpugixml-dev package")
530 endif()
531 link_libraries(pugixml)
532 endif()
533
534 # Optional component - DCMTK
535 if (ENABLE_DCMTK)
536 include(FindDCMTK)
537 include_directories(${DCMTK_INCLUDE_DIRS})
538 link_libraries(${DCMTK_LIBRARIES})
539 endif()
540
541 # Optional component - OpenSSL
542 if (ENABLE_SSL)
543 include(FindOpenSSL)
544 if (NOT ${OPENSSL_FOUND})
545 message(FATAL_ERROR "Unable to find OpenSSL")
546 endif()
547 include_directories(${OPENSSL_INCLUDE_DIR})
548 link_libraries(${OPENSSL_LIBRARIES})
549 endif()
550 endif()
551
552 # Look for Orthanc framework shared library 522 # Look for Orthanc framework shared library
553 include(CheckCXXSymbolExists) 523 include(CheckCXXSymbolExists)
554 524
555 if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") 525 if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
556 set(ORTHANC_FRAMEWORK_INCLUDE_DIR ${ORTHANC_FRAMEWORK_ROOT}) 526 set(ORTHANC_FRAMEWORK_INCLUDE_DIR ${ORTHANC_FRAMEWORK_ROOT})
566 message(FATAL_ERROR "Cannot locate the OrthancFramework.h header") 536 message(FATAL_ERROR "Cannot locate the OrthancFramework.h header")
567 endif() 537 endif()
568 538
569 message("Orthanc framework include dir: ${ORTHANC_FRAMEWORK_INCLUDE_DIR}") 539 message("Orthanc framework include dir: ${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
570 include_directories(${ORTHANC_FRAMEWORK_INCLUDE_DIR}) 540 include_directories(${ORTHANC_FRAMEWORK_INCLUDE_DIR})
571 541
572 if ("${ORTHANC_FRAMEWORK_LIBDIR}" STREQUAL "") 542 if (ORTHANC_FRAMEWORK_USE_SHARED)
573 set(ORTHANC_FRAMEWORK_LIBRARIES OrthancFramework) 543 set(CMAKE_REQUIRED_INCLUDES "${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
574 else() 544 set(CMAKE_REQUIRED_LIBRARIES "${ORTHANC_FRAMEWORK_LIBRARIES}")
575 if (MSVC) 545
576 set(Suffix ".lib") 546 check_cxx_symbol_exists("Orthanc::InitializeFramework" "OrthancFramework.h" HAVE_ORTHANC_FRAMEWORK)
577 set(Prefix "") 547 if (NOT HAVE_ORTHANC_FRAMEWORK)
578 else() 548 message(FATAL_ERROR "Cannot find the Orthanc framework")
579 list(GET CMAKE_FIND_LIBRARY_PREFIXES 0 Prefix) 549 endif()
580 list(GET CMAKE_FIND_LIBRARY_SUFFIXES 0 Suffix) 550
581 endif() 551 unset(CMAKE_REQUIRED_INCLUDES)
582 set(ORTHANC_FRAMEWORK_LIBRARIES ${ORTHANC_FRAMEWORK_LIBDIR}/${Prefix}OrthancFramework${Suffix}) 552 unset(CMAKE_REQUIRED_LIBRARIES)
583 endif() 553 endif()
584 554 endif()
585 set(CMAKE_REQUIRED_INCLUDES "${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
586 set(CMAKE_REQUIRED_LIBRARIES "${ORTHANC_FRAMEWORK_LIBRARIES}")
587
588 check_cxx_symbol_exists("Orthanc::InitializeFramework" "OrthancFramework.h" HAVE_ORTHANC_FRAMEWORK)
589 if (NOT HAVE_ORTHANC_FRAMEWORK)
590 message(FATAL_ERROR "Cannot find the Orthanc framework")
591 endif()
592
593 unset(CMAKE_REQUIRED_INCLUDES)
594 unset(CMAKE_REQUIRED_LIBRARIES)
595 endif()