Mercurial > hg > orthanc-authorization
diff CMakeLists.txt @ 1:d5d3cb00556a
initial release
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 22 Mar 2017 16:13:52 +0100 |
parents | |
children | 7ee79efd8b3f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CMakeLists.txt Wed Mar 22 16:13:52 2017 +0100 @@ -0,0 +1,132 @@ +# Advanced authorization plugin for Orthanc +# Copyright (C) 2017 Osimis, 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(OrthancAuthorization) + +set(ORTHANC_AUTHORIZATION_VERSION "mainline") + +# Parameters of the build +set(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") +SET(STANDALONE_BUILD ON CACHE BOOL "Standalone build (all the resources are embedded, necessary for releases)") +set(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages") + +# Advanced parameters to fine-tune linking against system libraries +set(USE_SYSTEM_BOOST ON CACHE BOOL "Use the system version of Boost") +set(USE_SYSTEM_JSONCPP ON CACHE BOOL "Use the system version of JsonCpp") +set(USE_SYSTEM_ORTHANC_SDK ON CACHE BOOL "Use the system version of the Orthanc plugin SDK") + +set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/Resources/Orthanc) +set(ORTHANC_DISABLE_PATCH ON) # No need for the "patch" command-line tool +include(CheckIncludeFiles) +include(CheckIncludeFileCXX) +include(CheckLibraryExists) +include(FindPythonInterp) +include(${ORTHANC_ROOT}/Resources/CMake/Compiler.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/AutoGeneratedCode.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake) + +include(${ORTHANC_ROOT}/Resources/CMake/BoostConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake) + + +# Check that the Orthanc SDK headers are available +if (STATIC_BUILD OR NOT USE_SYSTEM_ORTHANC_SDK) + include_directories(${ORTHANC_ROOT}/Sdk-1.1.0) +else () + CHECK_INCLUDE_FILE_CXX(orthanc/OrthancCPlugin.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 "Linux" OR + ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR + ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") + link_libraries(rt) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + SET(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lws2_32") + + execute_process( + COMMAND + ${PYTHON_EXECUTABLE} ${ORTHANC_ROOT}/Resources/WindowsResources.py + ${ORTHANC_AUTHORIZATION_VERSION} "OrthancAuthorization" OrthancAuthorization.dll "Advanced authorization plugin for Orthanc" + ERROR_VARIABLE Failure + OUTPUT_FILE ${AUTOGENERATED_DIR}/Version.rc + ) + + if (Failure) + message(FATAL_ERROR "Error while computing the version information: ${Failure}") + endif() + + list(APPEND AUTOGENERATED_SOURCES ${AUTOGENERATED_DIR}/Version.rc) +endif() + +if (APPLE) + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework CoreFoundation") + SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -framework CoreFoundation") +endif() + +add_definitions( + -DHAS_ORTHANC_EXCEPTION=1 + -DORTHANC_ENABLE_MD5=0 + -DORTHANC_ENABLE_BASE64=0 + -DORTHANC_ENABLE_LOGGING=1 + -DORTHANC_ENABLE_LOGGING_PLUGIN=1 + -DORTHANC_ENABLE_PUGIXML=0 + -DORTHANC_SANDBOXED=0 + ) + +add_library(OrthancAuthorization SHARED + ${CMAKE_SOURCE_DIR}/Plugin/AccessedResource.cpp + ${CMAKE_SOURCE_DIR}/Plugin/AssociativeArray.cpp + ${CMAKE_SOURCE_DIR}/Plugin/AuthorizationParserBase.cpp + ${CMAKE_SOURCE_DIR}/Plugin/AuthorizationWebService.cpp + ${CMAKE_SOURCE_DIR}/Plugin/CachedAuthorizationService.cpp + ${CMAKE_SOURCE_DIR}/Plugin/DefaultAuthorizationParser.cpp + ${CMAKE_SOURCE_DIR}/Plugin/Enumerations.cpp + ${CMAKE_SOURCE_DIR}/Plugin/MemoryCache.cpp + ${CMAKE_SOURCE_DIR}/Plugin/OrthancResource.cpp + ${CMAKE_SOURCE_DIR}/Plugin/Plugin.cpp + ${CMAKE_SOURCE_DIR}/Plugin/ResourceHierarchyCache.cpp + ${CMAKE_SOURCE_DIR}/Plugin/Token.cpp + + ${ORTHANC_ROOT}/Core/Logging.cpp + ${ORTHANC_ROOT}/Core/Enumerations.cpp + ${ORTHANC_ROOT}/Core/Toolbox.cpp + ${ORTHANC_ROOT}/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp + + ${BOOST_SOURCES} + ${SQLITE_SOURCES} + ${JSONCPP_SOURCES} + ) + + +message("Setting the version of the plugin to ${ORTHANC_AUTHORIZATION_VERSION}") +add_definitions(-DORTHANC_AUTHORIZATION_VERSION="${ORTHANC_AUTHORIZATION_VERSION}") + +set_target_properties(OrthancAuthorization PROPERTIES + VERSION ${ORTHANC_AUTHORIZATION_VERSION} + SOVERSION ${ORTHANC_AUTHORIZATION_VERSION}) + +install( + TARGETS OrthancAuthorization + RUNTIME DESTINATION lib # Destination for Windows + LIBRARY DESTINATION share/orthanc/plugins # Destination for Linux + )