Mercurial > hg > orthanc-transfers
diff CMakeLists.txt @ 0:95226b754d9e
initial release
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 17 Sep 2018 11:34:55 +0200 |
parents | |
children | 734066ca3b7d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CMakeLists.txt Mon Sep 17 11:34:55 2018 +0200 @@ -0,0 +1,162 @@ +# Orthanc - A Lightweight, RESTful DICOM Store +# Copyright (C) 2018 Osimis S.A., Belgium +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU Affero General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +cmake_minimum_required(VERSION 2.8) +project(OrthancTransfersAccelerator) + +set(ORTHANC_PLUGIN_VERSION "mainline") + +if (ORTHANC_PLUGIN_VERSION STREQUAL "mainline") + set(ORTHANC_FRAMEWORK_VERSION "mainline") + set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg") +else() + set(ORTHANC_FRAMEWORK_VERSION "1.4.2") + set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web") +endif() + + +# Parameters of the build +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\"") +set(ORTHANC_SDK_VERSION "framework" CACHE STRING "Version of the Orthanc plugin SDK to use, if not using the system version (can be \"1.4.2\" or \"framework\")") + +# Advanced parameters to fine-tune linking against system libraries +set(USE_SYSTEM_ORTHANC_SDK ON CACHE BOOL "Use the system version of the Orthanc plugin SDK") + + +# Download and setup the Orthanc framework +include(${CMAKE_CURRENT_LIST_DIR}/Resources/Orthanc/DownloadOrthancFramework.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake) + +set(HAS_EMBEDDED_RESOURCES ON) +set(ENABLE_LOCALE OFF) # Disable support for locales (notably in Boost) +set(ENABLE_GOOGLE_TEST ON) +set(ENABLE_MODULE_IMAGES OFF) +set(ENABLE_MODULE_JOBS OFF) +set(ENABLE_MODULE_DICOM OFF) +set(ENABLE_ZLIB ON) + +include(${ORTHANC_ROOT}/Resources/CMake/OrthancFrameworkConfiguration.cmake) +include_directories(${ORTHANC_ROOT}) + + +# Check that the Orthanc SDK headers are available +if (STATIC_BUILD OR NOT USE_SYSTEM_ORTHANC_SDK) + if (ORTHANC_SDK_VERSION STREQUAL "1.4.2") + include_directories(${CMAKE_CURRENT_LIST_DIR}/Resources/Orthanc/Sdk-1.4.2) + elseif (ORTHANC_SDK_VERSION STREQUAL "framework") + include_directories(${ORTHANC_ROOT}/Plugins/Include) + else() + message(FATAL_ERROR "Unsupported version of the Orthanc plugin SDK: ${ORTHANC_SDK_VERSION}") + endif() +else () + CHECK_INCLUDE_FILE_CXX(orthanc/OrthancCDatabasePlugin.h HAVE_ORTHANC_H) + if (NOT HAVE_ORTHANC_H) + message(FATAL_ERROR "Please install the headers of the Orthanc plugins SDK") + endif() +endif() + + + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + execute_process( + COMMAND + ${PYTHON_EXECUTABLE} ${ORTHANC_ROOT}/Resources/WindowsResources.py + ${ORTHANC_PLUGIN_VERSION} "TransfersAccelerator index plugin" OrthancTransfersAccelerator.dll + "TransfersAccelerator as a database back-end to Orthanc (index)" + ERROR_VARIABLE Failure + OUTPUT_FILE ${AUTOGENERATED_DIR}/Version.rc + ) + + if (Failure) + message(FATAL_ERROR "Error while computing the version information: ${Failure}") + endif() + + set(PLUGIN_RESOURCES ${AUTOGENERATED_DIR}/Version.rc) +endif() + + + +EmbedResources( + ORTHANC_EXPLORER ${CMAKE_SOURCE_DIR}/Resources/OrthancExplorer.js + ) + +set(FRAMEWORK_SOURCES + Framework/DicomInstanceInfo.cpp + Framework/DownloadArea.cpp + Framework/HttpQueries/DetectTransferPlugin.cpp + Framework/HttpQueries/HttpQueriesQueue.cpp + Framework/HttpQueries/HttpQueriesRunner.cpp + Framework/OrthancInstancesCache.cpp + Framework/PullMode/BucketPullQuery.cpp + Framework/PullMode/PullJob.cpp + Framework/PushMode/ActivePushTransactions.cpp + Framework/PushMode/BucketPushQuery.cpp + Framework/PushMode/PushJob.cpp + Framework/SourceDicomInstance.cpp + Framework/StatefulOrthancJob.cpp + Framework/TransferBucket.cpp + Framework/TransferQuery.cpp + Framework/TransferScheduler.cpp + Framework/TransferToolbox.cpp + ${ORTHANC_ROOT}/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp + ) + + + +add_library(OrthancTransfersAccelerator SHARED + Plugin/Plugin.cpp + Plugin/PluginContext.cpp + + ${FRAMEWORK_SOURCES} + ${PLUGIN_RESOURCES} + ${ORTHANC_CORE_SOURCES} + ${AUTOGENERATED_SOURCES} + ) + +message("Setting the version of the library to ${ORTHANC_PLUGIN_VERSION}") + +add_definitions( + -DORTHANC_PLUGIN_VERSION="${ORTHANC_PLUGIN_VERSION}" + -DHAS_ORTHANC_EXCEPTION=1 + ) + +set_target_properties(OrthancTransfersAccelerator PROPERTIES + VERSION ${ORTHANC_PLUGIN_VERSION} + SOVERSION ${ORTHANC_PLUGIN_VERSION} + COMPILE_FLAGS -DORTHANC_ENABLE_LOGGING_PLUGIN=1 + ) + +install( + TARGETS OrthancTransfersAccelerator + RUNTIME DESTINATION lib # Destination for Windows + LIBRARY DESTINATION share/orthanc/plugins # Destination for Linux + ) + +add_executable(UnitTests + UnitTests/UnitTestsMain.cpp + + ${FRAMEWORK_SOURCES} + ${ORTHANC_CORE_SOURCES} + ${GOOGLE_TEST_SOURCES} + ) + +target_link_libraries(UnitTests ${GOOGLE_TEST_LIBRARIES}) +set_target_properties(UnitTests PROPERTIES + COMPILE_FLAGS -DORTHANC_ENABLE_LOGGING_PLUGIN=0 + )