view MySQL/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(OrthancMySQL)

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_MYSQL_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} "MySQL storage area plugin" OrthancMySQLStorage.dll
    "MySQL 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} "MySQL index plugin" OrthancMySQLIndex.dll
    "MySQL 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(
  MYSQL_PREPARE_INDEX          ${CMAKE_SOURCE_DIR}/Plugins/PrepareIndex.sql
  MYSQL_GET_LAST_CHANGE_INDEX  ${CMAKE_SOURCE_DIR}/Plugins/GetLastChangeIndex.sql
  MYSQL_CREATE_INSTANCE        ${CMAKE_SOURCE_DIR}/Plugins/CreateInstance.sql
  )

add_custom_target(
  AutogeneratedTarget
  DEPENDS 
  ${AUTOGENERATED_SOURCES}
  )

add_library(OrthancMySQLIndex SHARED
  ${INDEX_RESOURCES}
  ${ORTHANC_DATABASES_ROOT}/Framework/Plugins/PluginInitialization.cpp
  Plugins/IndexPlugin.cpp
  Plugins/MySQLIndex.cpp

  ${DATABASES_SOURCES}
  ${AUTOGENERATED_SOURCES}
  )

add_dependencies(OrthancMySQLIndex AutogeneratedTarget)

add_library(OrthancMySQLStorage SHARED
  ${ORTHANC_DATABASES_ROOT}/Framework/Plugins/PluginInitialization.cpp
  ${STORAGE_RESOURCES}
  Plugins/MySQLStorageArea.cpp
  Plugins/StoragePlugin.cpp

  ${DATABASES_SOURCES}
  ${AUTOGENERATED_SOURCES}
  )

add_dependencies(OrthancMySQLStorage AutogeneratedTarget)

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

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

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

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

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


add_executable(UnitTests
  Plugins/MySQLIndex.cpp
  Plugins/MySQLStorageArea.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
  )