diff Resources/CMake/OpenSslConfiguration.cmake @ 2715:73bc0c32547c jobs

fix embedding openssl within a DLL
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 09 Jul 2018 13:02:56 +0200
parents 28dc5bb9a7e6
children 2a4ac74da1ed
line wrap: on
line diff
--- a/Resources/CMake/OpenSslConfiguration.cmake	Mon Jul 09 12:20:28 2018 +0200
+++ b/Resources/CMake/OpenSslConfiguration.cmake	Mon Jul 09 13:02:56 2018 +0200
@@ -95,8 +95,30 @@
       ${OPENSSL_SOURCES_DIR}/ssl/ssl3.h
       ${OPENSSL_SOURCES_DIR}/ssl/tls1.h
       )
-    file(COPY ${header} DESTINATION ${OPENSSL_SOURCES_DIR}/include/openssl)
+      file(COPY ${header} DESTINATION ${OPENSSL_SOURCES_DIR}/include/openssl)
     endforeach()
+
+    file(RENAME
+      ${OPENSSL_SOURCES_DIR}/include/openssl/e_os2.h
+      ${OPENSSL_SOURCES_DIR}/include/openssl/e_os2_source.h)
+
+    # The following patch of "e_os2.h" prevents from building OpenSSL
+    # as a DLL under Windows. Otherwise, symbols have inconsistent
+    # linkage if ${OPENSSL_SOURCES} is used to create a DLL (notably
+    # if building an Orthanc plugin such as MySQL).
+    file(WRITE ${OPENSSL_SOURCES_DIR}/include/openssl/e_os2.h "
+#include \"e_os2_source.h\"
+#if defined(_WIN32)
+#  undef OPENSSL_EXPORT
+#  undef OPENSSL_IMPORT
+#  undef OPENSSL_EXTERN
+#  undef OPENSSL_GLOBAL
+#  define OPENSSL_EXPORT
+#  define OPENSSL_IMPORT
+#  define OPENSSL_EXTERN extern
+#  define OPENSSL_GLOBAL
+#endif
+")
   endif()
   
   add_definitions(