view PostgreSQL/CMakeLists.txt @ 161:2ccde9c7311b optimized-routes

added new optimized REST routes. this is a temporary work to try to speed up some routes (used by LRO). This way, we avoid another app to access the Orthanc DB and we skip the plugin SDK update for a very specific route
author Alain Mazy <alain@mazy.be>
date Fri, 10 Jul 2020 13:26:47 +0200
parents 23cf7def8e44
children 0f01eaf17232
line wrap: on
line source

cmake_minimum_required(VERSION 2.8)
project(OrthancPostgreSQL)

set(ORTHANC_PLUGIN_VERSION "mainline")

set(ORTHANC_OPTIMAL_VERSION_MAJOR    1)
set(ORTHANC_OPTIMAL_VERSION_MINOR    5)
set(ORTHANC_OPTIMAL_VERSION_REVISION 4)

if (ORTHANC_PLUGIN_VERSION STREQUAL "mainline")
  set(ORTHANC_FRAMEWORK_VERSION "mainline")
  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
else()
  set(ORTHANC_FRAMEWORK_VERSION "${ORTHANC_OPTIMAL_VERSION_MAJOR}.${ORTHANC_OPTIMAL_VERSION_MINOR}.${ORTHANC_OPTIMAL_VERSION_REVISION}")
  set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
endif()

include(${CMAKE_SOURCE_DIR}/../Resources/CMake/DatabasesPluginParameters.cmake)

set(ENABLE_POSTGRESQL_BACKEND ON)
set(OPENSSL_STATIC_VERSION "1.0.2" CACHE STRING "TODO - Upgrade to OpenSSL 1.1.1" FORCE)
  
include(${CMAKE_SOURCE_DIR}/../Resources/CMake/DatabasesPluginConfiguration.cmake)


if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
  execute_process(
    COMMAND 
    ${PYTHON_EXECUTABLE} ${ORTHANC_FRAMEWORK_ROOT}/Resources/WindowsResources.py
    ${ORTHANC_PLUGIN_VERSION} "PostgreSQL storage area plugin" OrthancPostgreSQLStorage.dll
    "PostgreSQL as a database back-end to Orthanc (storage area)"
    ERROR_VARIABLE Failure
    OUTPUT_FILE ${AUTOGENERATED_DIR}/StorageVersion.rc
    )

  if (Failure)
    message(FATAL_ERROR "Error while computing the version information: ${Failure}")
  endif()

  execute_process(
    COMMAND 
    ${PYTHON_EXECUTABLE} ${ORTHANC_FRAMEWORK_ROOT}/Resources/WindowsResources.py
    ${ORTHANC_PLUGIN_VERSION} "PostgreSQL index plugin" OrthancPostgreSQLIndex.dll
    "PostgreSQL as a database back-end to Orthanc (index)"
    ERROR_VARIABLE Failure
    OUTPUT_FILE ${AUTOGENERATED_DIR}/IndexVersion.rc
    )

  if (Failure)
    message(FATAL_ERROR "Error while computing the version information: ${Failure}")
  endif()

  set(INDEX_RESOURCES ${AUTOGENERATED_DIR}/IndexVersion.rc)
  set(STORAGE_RESOURCES ${AUTOGENERATED_DIR}/StorageVersion.rc)
endif()


EmbedResources(
  POSTGRESQL_PREPARE_INDEX          ${CMAKE_SOURCE_DIR}/Plugins/PrepareIndex.sql
  POSTGRESQL_CREATE_INSTANCE        ${CMAKE_SOURCE_DIR}/Plugins/CreateInstance.sql
  POSTGRESQL_FAST_TOTAL_SIZE        ${CMAKE_SOURCE_DIR}/Plugins/FastTotalSize.sql
  POSTGRESQL_FAST_COUNT_RESOURCES   ${CMAKE_SOURCE_DIR}/Plugins/FastCountResources.sql
  POSTGRESQL_GET_LAST_CHANGE_INDEX  ${CMAKE_SOURCE_DIR}/Plugins/GetLastChangeIndex.sql
  )

add_custom_target(
  AutogeneratedTarget
  DEPENDS 
  ${AUTOGENERATED_SOURCES}
  )

add_library(OrthancPostgreSQLIndex SHARED
  ${INDEX_RESOURCES}
  ${ORTHANC_DATABASES_ROOT}/Framework/Plugins/PluginInitialization.cpp
  Plugins/IndexPlugin.cpp
  Plugins/PostgreSQLIndex.cpp

  ${DATABASES_SOURCES}
  ${AUTOGENERATED_SOURCES}
  )

add_dependencies(OrthancPostgreSQLIndex AutogeneratedTarget)

add_library(OrthancPostgreSQLStorage SHARED
  ${ORTHANC_DATABASES_ROOT}/Framework/Plugins/PluginInitialization.cpp
  ${STORAGE_RESOURCES}
  Plugins/PostgreSQLStorageArea.cpp
  Plugins/StoragePlugin.cpp

  ${DATABASES_SOURCES}
  ${AUTOGENERATED_SOURCES}
  )

add_dependencies(OrthancPostgreSQLStorage AutogeneratedTarget)

message("Setting the version of the libraries to ${ORTHANC_PLUGIN_VERSION}")

add_definitions(
  -DORTHANC_PLUGIN_VERSION="${ORTHANC_PLUGIN_VERSION}"
  )

set_target_properties(OrthancPostgreSQLStorage PROPERTIES 
  VERSION ${ORTHANC_PLUGIN_VERSION} 
  SOVERSION ${ORTHANC_PLUGIN_VERSION}
  COMPILE_FLAGS -DORTHANC_ENABLE_LOGGING_PLUGIN=1
  )

set_target_properties(OrthancPostgreSQLIndex PROPERTIES 
  VERSION ${ORTHANC_PLUGIN_VERSION} 
  SOVERSION ${ORTHANC_PLUGIN_VERSION}
  COMPILE_FLAGS -DORTHANC_ENABLE_LOGGING_PLUGIN=1
  )

install(
  TARGETS OrthancPostgreSQLIndex OrthancPostgreSQLStorage
  RUNTIME DESTINATION lib    # Destination for Windows
  LIBRARY DESTINATION share/orthanc/plugins    # Destination for Linux
  )


add_executable(UnitTests
  Plugins/PostgreSQLIndex.cpp
  Plugins/PostgreSQLStorageArea.cpp
  UnitTests/PostgreSQLTests.cpp
  UnitTests/UnitTestsMain.cpp
  ${DATABASES_SOURCES}
  ${GOOGLE_TEST_SOURCES}
  ${AUTOGENERATED_SOURCES}
  )

add_dependencies(UnitTests AutogeneratedTarget)

target_link_libraries(UnitTests ${GOOGLE_TEST_LIBRARIES})
set_target_properties(UnitTests PROPERTIES
  COMPILE_FLAGS -DORTHANC_ENABLE_LOGGING_PLUGIN=0
  )