Mercurial > hg > orthanc-object-storage
diff Aws/CMakeLists.txt @ 56:b922ae86bbe1
full static linking against AWS SDK
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 22 Jun 2021 15:00:36 +0200 |
parents | 8a1dfd2d790d |
children | ba1be668e475 |
line wrap: on
line diff
--- a/Aws/CMakeLists.txt Fri May 21 11:36:58 2021 +0200 +++ b/Aws/CMakeLists.txt Tue Jun 22 15:00:36 2021 +0200 @@ -1,6 +1,21 @@ -cmake_minimum_required(VERSION 2.8) +# Cloud storage plugins for Orthanc +# Copyright (C) 2020-2021 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/>. -option(BUILD_SHARED_LIBS "Build shared libraries" ON) + +cmake_minimum_required(VERSION 2.8) project(OrthancAwsS3Storage) @@ -20,23 +35,24 @@ include(${ORTHANC_FRAMEWORK_ROOT}/../Resources/CMake/OrthancFrameworkParameters.cmake) -set(ENABLE_WEB_CLIENT ON) # Access options related to curl +set(ENABLE_CRYPTO_OPTIONS ON) set(ENABLE_GOOGLE_TEST ON) -set(ORTHANC_FRAMEWORK_PLUGIN ON) +set(ENABLE_MODULE_DICOM OFF) set(ENABLE_MODULE_IMAGES OFF) set(ENABLE_MODULE_JOBS OFF) -set(ENABLE_MODULE_DICOM OFF) +# set(ENABLE_WEB_CLIENT ON) # Access options related to curl +set(ORTHANC_FRAMEWORK_PLUGIN ON) include(${ORTHANC_FRAMEWORK_ROOT}/../Resources/CMake/OrthancFrameworkConfiguration.cmake) include(${ORTHANC_FRAMEWORK_ROOT}/../../OrthancServer/Plugins/Samples/Common/OrthancPluginsExports.cmake) add_definitions( - -DHAS_ORTHANC_EXCEPTION=1 - -DORTHANC_ENABLE_LOGGING=1 - -DAWS_STORAGE_PLUGIN=1 - ) -add_definitions(-DPLUGIN_VERSION="${PLUGIN_VERSION}") + -DHAS_ORTHANC_EXCEPTION=1 + -DORTHANC_ENABLE_LOGGING=1 + -DAWS_STORAGE_PLUGIN=1 + -DPLUGIN_VERSION="${PLUGIN_VERSION}" + ) include_directories( ${ORTHANC_FRAMEWORK_ROOT} @@ -47,89 +63,39 @@ if (NOT STATIC_BUILD AND USE_VCPKG_PACKAGES) # Use vcpkg by Microsoft + option(BUILD_SHARED_LIBS "Build shared libraries" ON) find_package(cryptopp CONFIG REQUIRED) find_package(AWSSDK REQUIRED COMPONENTS s3) set(CRYPTOPP_LIBRARIES cryptopp-static) + else() include(${CMAKE_SOURCE_DIR}/../Common/CryptoPPConfiguration.cmake) - - ## - ## Building the C++ SDK for Amazon AWS - ## WARNING: This is *not* compatible with Ninja (yet) - ## - if (STATIC_AWS_CLIENT) - set(Flags -DBUILD_SHARED_LIBS=OFF) # Create static library - else() - set(Flags -DBUILD_SHARED_LIBS=ON) - endif() - - include(ExternalProject) - externalproject_add(AwsSdkCpp - GIT_REPOSITORY https://github.com/aws/aws-sdk-cpp - GIT_TAG 1.8.127 - - CMAKE_ARGS - -DBUILD_ONLY=s3 #-DBUILD_ONLY=s3;transfer - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DENABLE_TESTING=OFF - ${Flags} - - UPDATE_COMMAND "" # Don't run "cmake" on AWS each time "make/ninja" is run - INSTALL_COMMAND "" # No install - ) - - ExternalProject_Get_Property(AwsSdkCpp SOURCE_DIR) - include_directories( - ${SOURCE_DIR}/aws-cpp-sdk-core/include/ - ${SOURCE_DIR}/aws-cpp-sdk-s3/include/ - ) - - ExternalProject_Get_Property(AwsSdkCpp BINARY_DIR) - if (STATIC_AWS_CLIENT) - set(AWSSDK_LINK_LIBRARIES - ${BINARY_DIR}/aws-cpp-sdk-s3/libaws-cpp-sdk-s3.a - ${BINARY_DIR}/aws-cpp-sdk-core/libaws-cpp-sdk-core.a - ${BINARY_DIR}/.deps/install/lib/libaws-c-event-stream.a - ${BINARY_DIR}/.deps/install/lib/libaws-checksums.a - ${BINARY_DIR}/.deps/install/lib/libaws-c-common.a - curl - crypto - ) - if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND AWSSDK_LINK_LIBRARIES - gcc # for "undefined reference to `__cpu_model'" on Ubuntu 16.04 - ) - endif() - else() - set(AWSSDK_LINK_LIBRARIES - ${BINARY_DIR}/aws-cpp-sdk-core/libaws-cpp-sdk-core.so - ${BINARY_DIR}/aws-cpp-sdk-s3/libaws-cpp-sdk-s3.so - ) - endif() + include(${CMAKE_SOURCE_DIR}/AwsStaticConfiguration.cmake) endif() set(COMMON_SOURCES - ${CMAKE_SOURCE_DIR}/../Common/IStoragePlugin.h - ${CMAKE_SOURCE_DIR}/../Common/BaseStoragePlugin.h - ${CMAKE_SOURCE_DIR}/../Common/BaseStoragePlugin.cpp - ${CMAKE_SOURCE_DIR}/../Common/EncryptionHelpers.cpp - ${CMAKE_SOURCE_DIR}/../Common/EncryptionHelpers.h - ${CMAKE_SOURCE_DIR}/../Common/EncryptionConfigurator.cpp - ${CMAKE_SOURCE_DIR}/../Common/EncryptionConfigurator.h - ${ORTHANC_FRAMEWORK_ROOT}/../../OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp + ${CMAKE_SOURCE_DIR}/../Common/IStoragePlugin.h + ${CMAKE_SOURCE_DIR}/../Common/BaseStoragePlugin.h + ${CMAKE_SOURCE_DIR}/../Common/BaseStoragePlugin.cpp + ${CMAKE_SOURCE_DIR}/../Common/EncryptionHelpers.cpp + ${CMAKE_SOURCE_DIR}/../Common/EncryptionHelpers.h + ${CMAKE_SOURCE_DIR}/../Common/EncryptionConfigurator.cpp + ${CMAKE_SOURCE_DIR}/../Common/EncryptionConfigurator.h + ${ORTHANC_FRAMEWORK_ROOT}/../../OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp - ${ORTHANC_CORE_SOURCES} - ${CRYPTOPP_SOURCES} + ${AWS_SOURCES} + ${CRYPTOPP_SOURCES} + ${ORTHANC_CORE_SOURCES} ) add_library(OrthancAwsS3Storage SHARED - AwsS3StoragePlugin.cpp - AwsS3StoragePlugin.h - ${CMAKE_SOURCE_DIR}/../Common/StoragePlugin.cpp + AwsS3StoragePlugin.cpp + AwsS3StoragePlugin.h + ${CMAKE_SOURCE_DIR}/../Common/StoragePlugin.cpp - ${COMMON_SOURCES} - ) + ${COMMON_SOURCES} + ) set_target_properties(OrthancAwsS3Storage PROPERTIES VERSION ${PLUGIN_VERSION} @@ -140,26 +106,25 @@ PRIVATE ${CRYPTOPP_LIBRARIES} ${AWSSDK_LINK_LIBRARIES} + ${ORTHANC_FRAMEWORK_LIBRARIES} ) - - add_executable(UnitTests - ${GOOGLE_TEST_SOURCES} - ${COMMON_SOURCES} + ${GOOGLE_TEST_SOURCES} + ${COMMON_SOURCES} - ${CMAKE_SOURCE_DIR}/../UnitTestsSources/EncryptionTests.cpp - ${CMAKE_SOURCE_DIR}/../UnitTestsSources/UnitTestsMain.cpp - ) + ${CMAKE_SOURCE_DIR}/../UnitTestsSources/EncryptionTests.cpp + ${CMAKE_SOURCE_DIR}/../UnitTestsSources/UnitTestsMain.cpp + ) target_link_libraries(UnitTests PRIVATE ${GOOGLE_TEST_LIBRARIES} ${CRYPTOPP_LIBRARIES} ${AWSSDK_LINK_LIBRARIES} + ${ORTHANC_FRAMEWORK_LIBRARIES} ) - if (STATIC_BUILD OR NOT USE_VCPKG_PACKAGES) add_dependencies(OrthancAwsS3Storage AwsSdkCpp) add_dependencies(UnitTests AwsSdkCpp)