Mercurial > hg > orthanc-databases
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() |