changeset 457:335cf81270ea

use of OrthancPluginsExports.cmake, link against system-wide orthanc framework
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 06 Jul 2020 11:11:38 +0200
parents c061d4c345c8
children 1e6cd31c20ce
files CMakeLists.txt Plugin/Configuration.cpp Plugin/DicomWebClient.cpp Plugin/DicomWebFormatter.cpp Plugin/DicomWebServers.h Plugin/Plugin.cpp Plugin/QidoRs.cpp Plugin/StowRs.h Plugin/WadoRs.cpp Plugin/WadoRsRetrieveFrames.cpp Plugin/WadoRsRetrieveRendered.cpp Plugin/WadoUri.cpp Resources/Orthanc/CMake/Compiler.cmake Resources/Orthanc/CMake/DownloadOrthancFramework.cmake Resources/Orthanc/Plugins/ExportedSymbolsPlugins.list Resources/Orthanc/Plugins/OrthancPluginsExports.cmake Resources/SyncOrthancFolder.py Resources/holy-build-box-internal.sh
diffstat 18 files changed, 46 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Wed Jul 01 17:12:40 2020 +0200
+++ b/CMakeLists.txt	Mon Jul 06 11:11:38 2020 +0200
@@ -53,24 +53,20 @@
 
 
 
-set(ENABLE_PLUGINS_VERSION_SCRIPT OFF)
-if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR
-    ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR
-    ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR
-    ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
-  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/Resources/Orthanc/Plugins/VersionScriptPlugins.map")
-endif()
-
-
 # Download and setup the Orthanc framework
 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
-  set(ENABLE_GOOGLE_TEST ON)
   include(${CMAKE_SOURCE_DIR}/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake)
 
   include_directories(
     ${CMAKE_SOURCE_DIR}/Resources/Orthanc/
     )
   link_libraries(OrthancFramework)
+
+  set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test")
+  set(USE_GOOGLE_TEST_DEBIAN_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)")
+  mark_as_advanced(USE_GOOGLE_TEST_DEBIAN_PACKAGE)
+  include(${CMAKE_SOURCE_DIR}/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake)
+  
 else()
   include(${CMAKE_SOURCE_DIR}/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake)
   include(${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake)
@@ -87,11 +83,8 @@
 endif()
 
 
-include_directories(
-  ${CMAKE_SOURCE_DIR}/Resources/Orthanc/Plugins/
-  )
-
 include(${CMAKE_SOURCE_DIR}/Resources/CMake/JavaScriptLibraries.cmake)
+include(${CMAKE_SOURCE_DIR}/Resources/Orthanc/Plugins/OrthancPluginsExports.cmake)
 
 
 if (STATIC_BUILD OR NOT USE_SYSTEM_ORTHANC_SDK)
--- a/Plugin/Configuration.cpp	Wed Jul 01 17:12:40 2020 +0200
+++ b/Plugin/Configuration.cpp	Mon Jul 06 11:11:38 2020 +0200
@@ -21,10 +21,10 @@
 
 #include "Configuration.h"
 
+#include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
 #include "DicomWebServers.h"
 
 #include <Compatibility.h>
-#include <OrthancPluginCppWrapper.h>
 #include <Toolbox.h>
 
 #include <fstream>
--- a/Plugin/DicomWebClient.cpp	Wed Jul 01 17:12:40 2020 +0200
+++ b/Plugin/DicomWebClient.cpp	Mon Jul 06 11:11:38 2020 +0200
@@ -21,13 +21,13 @@
 
 #include "DicomWebClient.h"
 
+#include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
 #include "DicomWebServers.h"
 
 #include <Compatibility.h>
 #include <HttpServer/MultipartStreamReader.h>
 #include <ChunkedBuffer.h>
 #include <Toolbox.h>
-#include <OrthancPluginCppWrapper.h>
 
 #include <json/reader.h>
 #include <list>
--- a/Plugin/DicomWebFormatter.cpp	Wed Jul 01 17:12:40 2020 +0200
+++ b/Plugin/DicomWebFormatter.cpp	Mon Jul 06 11:11:38 2020 +0200
@@ -21,7 +21,7 @@
 
 #include "DicomWebFormatter.h"
 
-#include <OrthancPluginCppWrapper.h>
+#include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
 
 #if !defined(NDEBUG)
 #  include <json/reader.h>
--- a/Plugin/DicomWebServers.h	Wed Jul 01 17:12:40 2020 +0200
+++ b/Plugin/DicomWebServers.h	Mon Jul 06 11:11:38 2020 +0200
@@ -20,8 +20,9 @@
 
 #pragma once
 
+#include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
+
 #include <WebServiceParameters.h>
-#include <OrthancPluginCppWrapper.h>
 
 #include <list>
 #include <string>
--- a/Plugin/Plugin.cpp	Wed Jul 01 17:12:40 2020 +0200
+++ b/Plugin/Plugin.cpp	Mon Jul 06 11:11:38 2020 +0200
@@ -18,6 +18,7 @@
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  **/
 
+#include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
 #include "DicomWebClient.h"
 #include "DicomWebServers.h"
 #include "QidoRs.h"
@@ -25,7 +26,6 @@
 #include "WadoRs.h"
 #include "WadoUri.h"
 
-#include <OrthancPluginCppWrapper.h>
 #include <SystemToolbox.h>
 #include <Toolbox.h>
 
--- a/Plugin/QidoRs.cpp	Wed Jul 01 17:12:40 2020 +0200
+++ b/Plugin/QidoRs.cpp	Mon Jul 06 11:11:38 2020 +0200
@@ -21,13 +21,13 @@
 
 #include "QidoRs.h"
 
+#include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
 #include "Configuration.h"
 #include "DicomWebFormatter.h"
 
 #include <DicomFormat/DicomMap.h>
 #include <DicomFormat/DicomTag.h>
 #include <Toolbox.h>
-#include <OrthancPluginCppWrapper.h>
 
 #include <list>
 #include <boost/lexical_cast.hpp>
--- a/Plugin/StowRs.h	Wed Jul 01 17:12:40 2020 +0200
+++ b/Plugin/StowRs.h	Mon Jul 06 11:11:38 2020 +0200
@@ -21,9 +21,10 @@
 
 #pragma once
 
+#include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
+
 #include <Compatibility.h>
 #include <HttpServer/MultipartStreamReader.h>
-#include <OrthancPluginCppWrapper.h>
 
 namespace OrthancPlugins
 {
--- a/Plugin/WadoRs.cpp	Wed Jul 01 17:12:40 2020 +0200
+++ b/Plugin/WadoRs.cpp	Mon Jul 06 11:11:38 2020 +0200
@@ -19,13 +19,13 @@
  **/
 
 
+#include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
 #include "Configuration.h"
 #include "DicomWebFormatter.h"
 
 #include <Compatibility.h>
 #include <ChunkedBuffer.h>
 #include <Toolbox.h>
-#include <OrthancPluginCppWrapper.h>
 
 #include <memory>
 
--- a/Plugin/WadoRsRetrieveFrames.cpp	Wed Jul 01 17:12:40 2020 +0200
+++ b/Plugin/WadoRsRetrieveFrames.cpp	Mon Jul 06 11:11:38 2020 +0200
@@ -21,8 +21,9 @@
 
 #include "WadoRs.h"
 
+#include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
+
 #include <Toolbox.h>
-#include <OrthancPluginCppWrapper.h>
 
 #include <memory>
 #include <list>
--- a/Plugin/WadoRsRetrieveRendered.cpp	Wed Jul 01 17:12:40 2020 +0200
+++ b/Plugin/WadoRsRetrieveRendered.cpp	Mon Jul 06 11:11:38 2020 +0200
@@ -20,11 +20,12 @@
 
 #include "WadoRs.h"
 
+#include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
+
 #include <Images/Image.h>
 #include <Images/ImageProcessing.h>
 #include <Images/ImageTraits.h>
 #include <Toolbox.h>
-#include <OrthancPluginCppWrapper.h>
 
 #include <boost/algorithm/string/predicate.hpp>
 #include <boost/math/special_functions/round.hpp>
--- a/Plugin/WadoUri.cpp	Wed Jul 01 17:12:40 2020 +0200
+++ b/Plugin/WadoUri.cpp	Mon Jul 06 11:11:38 2020 +0200
@@ -21,10 +21,9 @@
 
 #include "WadoUri.h"
 
+#include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h"
 #include "Configuration.h"
 
-#include <OrthancPluginCppWrapper.h>
-
 #include <string>
 
 
--- a/Resources/Orthanc/CMake/Compiler.cmake	Wed Jul 01 17:12:40 2020 +0200
+++ b/Resources/Orthanc/CMake/Compiler.cmake	Mon Jul 06 11:11:38 2020 +0200
@@ -113,11 +113,6 @@
     set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
   endif()
 
-  if (NOT DEFINED ENABLE_PLUGINS_VERSION_SCRIPT OR 
-      ENABLE_PLUGINS_VERSION_SCRIPT)
-    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/../VersionScriptPlugins.map")
-  endif()
-
   # Remove the "-rdynamic" option
   # http://www.mail-archive.com/cmake@cmake.org/msg08837.html
   set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
@@ -203,8 +198,6 @@
   endif()
 
 elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -exported_symbols_list ${CMAKE_CURRENT_LIST_DIR}/../ExportedSymbolsPlugins.list")
-
   add_definitions(
     -D_XOPEN_SOURCE=1
     )
--- a/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake	Wed Jul 01 17:12:40 2020 +0200
+++ b/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake	Mon Jul 06 11:11:38 2020 +0200
@@ -396,7 +396,7 @@
 
 ##
 ## Case of the Orthanc framework installed as a shared library in a
-## GNU/Linux distribution (typically Debian)
+## GNU/Linux distribution (typically Debian). New in Orthanc 1.7.2.
 ##
 
 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
@@ -485,14 +485,6 @@
     endif()
   endif()
 
-  # Optional component - Google Test
-  if (ENABLE_GOOGLE_TEST)
-    set(USE_SYSTEM_GOOGLE_TEST ON CACHE BOOL "Use the system version of Google Test")
-    set(USE_GOOGLE_TEST_DEBIAN_PACKAGE OFF CACHE BOOL "Use the sources of Google Test shipped with libgtest-dev (Debian only)")
-    mark_as_advanced(USE_GOOGLE_TEST_DEBIAN_PACKAGE)
-    include(${CMAKE_CURRENT_LIST_DIR}/GoogleTestConfiguration.cmake)
-  endif()
-
   # Look for Orthanc framework shared library
   include(CheckCXXSymbolExists)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Resources/Orthanc/Plugins/ExportedSymbolsPlugins.list	Mon Jul 06 11:11:38 2020 +0200
@@ -0,0 +1,7 @@
+# This is the list of the symbols that must be exported by Orthanc
+# plugins, if targeting OS X
+
+_OrthancPluginInitialize
+_OrthancPluginFinalize
+_OrthancPluginGetName
+_OrthancPluginGetVersion
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Resources/Orthanc/Plugins/OrthancPluginsExports.cmake	Mon Jul 06 11:11:38 2020 +0200
@@ -0,0 +1,12 @@
+# In Orthanc <= 1.7.1, the instructions below were part of
+# "Compiler.cmake", and were protected by the (now unused) option
+# "ENABLE_PLUGINS_VERSION_SCRIPT" in CMake
+
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR
+    ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR
+    ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR
+    ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
+  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/VersionScriptPlugins.map")
+elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
+  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -exported_symbols_list ${CMAKE_CURRENT_LIST_DIR}/ExportedSymbolsPlugins.list")
+endif()
--- a/Resources/SyncOrthancFolder.py	Wed Jul 01 17:12:40 2020 +0200
+++ b/Resources/SyncOrthancFolder.py	Mon Jul 06 11:11:38 2020 +0200
@@ -25,10 +25,12 @@
     ('OrthancFramework/Resources/Toolchains/MinGW-W64-Toolchain32.cmake', 'Toolchains'),
     ('OrthancFramework/Resources/Toolchains/MinGW-W64-Toolchain64.cmake', 'Toolchains'),
     ('OrthancFramework/Resources/Toolchains/MinGWToolchain.cmake', 'Toolchains'),
-    ('OrthancFramework/Resources/VersionScriptPlugins.map', 'Plugins'),
+    ('OrthancServer/Plugins/Samples/Common/ExportedSymbolsPlugins.list', 'Plugins'),
     ('OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp', 'Plugins'),
     ('OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.h', 'Plugins'),
     ('OrthancServer/Plugins/Samples/Common/OrthancPluginException.h', 'Plugins'),
+    ('OrthancServer/Plugins/Samples/Common/OrthancPluginsExports.cmake', 'Plugins'),
+    ('OrthancServer/Plugins/Samples/Common/VersionScriptPlugins.map', 'Plugins'),
 
     # Specific to DICOMweb plugin
     ('OrthancServer/Resources/OrthancLogo.png', '.'),
--- a/Resources/holy-build-box-internal.sh	Wed Jul 01 17:12:40 2020 +0200
+++ b/Resources/holy-build-box-internal.sh	Mon Jul 06 11:11:38 2020 +0200
@@ -38,7 +38,7 @@
 
 cmake /tmp/source-writeable \
       -DCMAKE_BUILD_TYPE=$1 -DSTATIC_BUILD=ON \
-      -DORTHANC_SDK_VERSION=1.5.7 \
+      -DORTHANC_SDK_VERSION=1.7.0 \
       -DORTHANC_FRAMEWORK_SOURCE=hg \
       -DORTHANC_FRAMEWORK_VERSION=mainline \
       -DCMAKE_INSTALL_PREFIX=/target