# HG changeset patch # User Sebastien Jodogne # Date 1614251718 -3600 # Node ID d64e6f401a8a388484d54f9ebb1ec383a7dac403 # Parent e40148c916b812fbe50b9e3145de422ea9f7abb2 additional option in DownloadOrthancFramework: ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES diff -r e40148c916b8 -r d64e6f401a8a OrthancFramework/Resources/CMake/DownloadOrthancFramework.cmake --- a/OrthancFramework/Resources/CMake/DownloadOrthancFramework.cmake Thu Feb 25 11:02:23 2021 +0100 +++ b/OrthancFramework/Resources/CMake/DownloadOrthancFramework.cmake Thu Feb 25 12:15:18 2021 +0100 @@ -429,6 +429,7 @@ if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system") set(ORTHANC_FRAMEWORK_LIBDIR "" CACHE PATH "") set(ORTHANC_FRAMEWORK_USE_SHARED ON CACHE BOOL "Whether to use the shared library or the static library") + set(ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES "" CACHE STRING "Additional libraries to link against, separated by whitespaces, typically needed if using the static library (a typical value is \"uuid curl civetweb\")") if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND CMAKE_COMPILER_IS_GNUCXX) # MinGW @@ -460,6 +461,12 @@ ${ORTHANC_FRAMEWORK_LIBDIR}/${Prefix}OrthancFramework${Suffix}) endif() + if (NOT ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES STREQUAL "") + # https://stackoverflow.com/a/5272993/881731 + string(REPLACE " " ";" tmp ${ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES}) + list(APPEND ORTHANC_FRAMEWORK_LIBRARIES ${tmp}) + endif() + if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" OR ORTHANC_FRAMEWORK_STATIC) include_directories(${ORTHANC_FRAMEWORK_ROOT}/..) @@ -522,7 +529,8 @@ list(APPEND ORTHANC_FRAMEWORK_LIBRARIES ${Boost_LIBRARIES}) # Optional component - Lua - if (ENABLE_LUA) + if (ENABLE_LUA OR + NOT ORTHANC_FRAMEWORK_USE_SHARED) include(FindLua) if (NOT LUA_FOUND) @@ -534,7 +542,8 @@ endif() # Optional component - SQLite - if (ENABLE_SQLITE) + if (ENABLE_SQLITE OR + NOT ORTHANC_FRAMEWORK_USE_SHARED) CHECK_INCLUDE_FILE(sqlite3.h HAVE_SQLITE_H) if (NOT HAVE_SQLITE_H) message(FATAL_ERROR "Please install the libsqlite3-dev package") @@ -543,7 +552,8 @@ endif() # Optional component - Pugixml - if (ENABLE_PUGIXML) + if (ENABLE_PUGIXML OR + NOT ORTHANC_FRAMEWORK_USE_SHARED) CHECK_INCLUDE_FILE_CXX(pugixml.hpp HAVE_PUGIXML_H) if (NOT HAVE_PUGIXML_H) message(FATAL_ERROR "Please install the libpugixml-dev package") @@ -552,14 +562,16 @@ endif() # Optional component - DCMTK - if (ENABLE_DCMTK) + if (ENABLE_DCMTK OR + NOT ORTHANC_FRAMEWORK_USE_SHARED) include(FindDCMTK NO_MODULE) list(APPEND ORTHANC_FRAMEWORK_LIBRARIES ${DCMTK_LIBRARIES}) include_directories(${DCMTK_INCLUDE_DIRS}) endif() # Optional component - OpenSSL - if (ENABLE_SSL) + if (ENABLE_SSL OR + NOT ORTHANC_FRAMEWORK_USE_SHARED) include(FindOpenSSL) if (NOT ${OPENSSL_FOUND}) message(FATAL_ERROR "Unable to find OpenSSL") @@ -569,46 +581,6 @@ endif() endif() - if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" AND - NOT ORTHANC_FRAMEWORK_USE_SHARED) - # Static library has more dependencies - - # Mandatory dependency: libuuid - CHECK_INCLUDE_FILE(uuid/uuid.h HAVE_UUID_H) - if (NOT HAVE_UUID_H) - message(FATAL_ERROR "Please install uuid-dev, e2fsprogs (OpenBSD) or e2fsprogs-libuuid (FreeBSD)") - endif() - - find_library(LIBUUID uuid - PATHS - /usr/lib - /usr/local/lib - ) - - check_library_exists(${LIBUUID} uuid_generate_random "" HAVE_LIBUUID) - if (NOT HAVE_LIBUUID) - message(FATAL_ERROR "Unable to find the uuid library") - endif() - - list(APPEND ORTHANC_FRAMEWORK_LIBRARIES ${LIBUUID}) - - # Optional component - libcurl - if (ENABLE_WEB_CLIENT) - include(FindCURL) - include_directories(${CURL_INCLUDE_DIRS}) - list(APPEND ORTHANC_FRAMEWORK_LIBRARIES ${CURL_LIBRARIES}) - endif() - - # Optional component - civetweb - if (ENABLE_WEB_SERVER) - CHECK_INCLUDE_FILE_CXX(civetweb.h HAVE_CIVETWEB_H) - if (NOT HAVE_CIVETWEB_H) - message(FATAL_ERROR "Please install the libcivetweb-dev package") - endif() - list(APPEND ORTHANC_FRAMEWORK_LIBRARIES civetweb) - endif() - endif() - # Look for Orthanc framework shared library include(CheckCXXSymbolExists) diff -r e40148c916b8 -r d64e6f401a8a OrthancFramework/SharedLibrary/CMakeLists.txt --- a/OrthancFramework/SharedLibrary/CMakeLists.txt Thu Feb 25 11:02:23 2021 +0100 +++ b/OrthancFramework/SharedLibrary/CMakeLists.txt Thu Feb 25 12:15:18 2021 +0100 @@ -45,6 +45,7 @@ set(ORTHANC_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH "") SET(UNIT_TESTS_WITH_HTTP_CONNEXIONS ON CACHE BOOL "Allow unit tests to make HTTP requests") set(BUILD_SHARED_LIBRARY ON CACHE BOOL "Whether to build a shared library instead of a static library") +set(ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES "" CACHE STRING "Additional libraries to link against, separated by whitespaces, typically needed if using the static library (a typical value is \"uuid curl civetweb\")") @@ -298,6 +299,10 @@ ${ORTHANC_CORE_SOURCES} ${ORTHANC_DICOM_SOURCES} ) + + # Add the "-fPIC" option to use the static library from Orthanc + # plugins (the latter being shared libraries) + set_property(TARGET OrthancFramework PROPERTY POSITION_INDEPENDENT_CODE ON) endif() endif() @@ -525,6 +530,7 @@ -DUSE_SYSTEM_BOOST:BOOL=${USE_SYSTEM_BOOST} -DUSE_SYSTEM_GOOGLE_TEST:BOOL=${USE_SYSTEM_GOOGLE_TEST} -DORTHANC_FRAMEWORK_USE_SHARED:BOOL=${BUILD_SHARED_LIBRARY} + -DORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES:STRING=${ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES} ${Flags} ) diff -r e40148c916b8 -r d64e6f401a8a OrthancFramework/UnitTestsSources/CMakeLists.txt --- a/OrthancFramework/UnitTestsSources/CMakeLists.txt Thu Feb 25 11:02:23 2021 +0100 +++ b/OrthancFramework/UnitTestsSources/CMakeLists.txt Thu Feb 25 12:15:18 2021 +0100 @@ -48,7 +48,6 @@ set(ENABLE_PUGIXML ON) set(ENABLE_SQLITE ON) set(ENABLE_WEB_CLIENT ON) -set(ENABLE_WEB_SERVER ON) if (NOT ORTHANC_FRAMEWORK_STATIC) set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test")