From 84d71fd0e962982468fd43c2e4fd3fa044ca121c Mon Sep 17 00:00:00 2001
From: Chuck Atkins <chuck.atkins@kitware.com>
Date: Mon, 11 Sep 2017 09:32:46 -0400
Subject: [PATCH] KWSys: Properly handle export symbols for object libs on
 Windows

---
 thirdparty/KWSys/CMakeLists.txt           | 1 +
 thirdparty/KWSys/adios2sys/CMakeLists.txt | 8 ++++++++
 thirdparty/KWSys/adios2sys/Configure.h.in | 2 +-
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/thirdparty/KWSys/CMakeLists.txt b/thirdparty/KWSys/CMakeLists.txt
index 6a2d53b5c..8c24389e1 100644
--- a/thirdparty/KWSys/CMakeLists.txt
+++ b/thirdparty/KWSys/CMakeLists.txt
@@ -6,5 +6,6 @@ set(KWSYS_BUILD_SHARED ${BUILD_SHARED_LIBS})
 set(KWSYS_SPLIT_OBJECTS_FROM_INTERFACE ON)
 set(KWSYS_INSTALL_EXPORT_NAME adios2Exports)
 set(KWSYS_INSTALL_LIB_DIR ${CMAKE_INSTALL_LIBDIR})
+set(KWSYS_DEFINE_SYMBOL adios2_EXPORTS)
 
 add_subdirectory(adios2sys)
diff --git a/thirdparty/KWSys/adios2sys/CMakeLists.txt b/thirdparty/KWSys/adios2sys/CMakeLists.txt
index 5b8ce00a9..13375df81 100644
--- a/thirdparty/KWSys/adios2sys/CMakeLists.txt
+++ b/thirdparty/KWSys/adios2sys/CMakeLists.txt
@@ -438,6 +438,10 @@ ELSE()
   SET(KWSYS_LIBRARY_TYPE STATIC)
 ENDIF()
 
+IF(NOT KWSYS_DEFINE_SYMBOL)
+  SET(KWSYS_DEFINE_SYMBOL ${KWSYS_NAMESPACE}_EXPORTS)
+ENDIF()
+
 #-----------------------------------------------------------------------------
 # Configure some implementation details.
 
@@ -830,6 +834,8 @@ IF(KWSYS_C_SRCS OR KWSYS_CXX_SRCS)
     IF(KWSYS_BUILD_SHARED)
       SET_PROPERTY(TARGET ${KWSYS_TARGET_OBJECT} PROPERTY
         POSITION_INDEPENDENT_CODE TRUE)
+      TARGET_COMPILE_DEFINITIONS(${KWSYS_TARGET_OBJECT} PRIVATE
+        ${KWSYS_DEFINE_SYMBOL})
     ENDIF()
     ADD_LIBRARY(${KWSYS_TARGET_INTERFACE} INTERFACE)
     ADD_LIBRARY(${KWSYS_TARGET_LINK} INTERFACE)
@@ -919,6 +925,8 @@ IF(KWSYS_ENABLE_C AND KWSYS_C_SRCS)
     IF(KWSYS_BUILD_SHARED)
       SET_PROPERTY(TARGET ${KWSYS_TARGET_C_OBJECT} PROPERTY
         POSITION_INDEPENDENT_CODE TRUE)
+      TARGET_COMPILE_DEFINITIONS(${KWSYS_TARGET_C_OBJECT} PRIVATE
+        ${KWSYS_DEFINE_SYMBOL})
     ENDIF()
     ADD_LIBRARY(${KWSYS_TARGET_C_INTERFACE} INTERFACE)
     ADD_LIBRARY(${KWSYS_TARGET_C_LINK} INTERFACE)
diff --git a/thirdparty/KWSys/adios2sys/Configure.h.in b/thirdparty/KWSys/adios2sys/Configure.h.in
index 0afcae781..921e1ae59 100644
--- a/thirdparty/KWSys/adios2sys/Configure.h.in
+++ b/thirdparty/KWSys/adios2sys/Configure.h.in
@@ -71,7 +71,7 @@
 /* Setup the export macro.  */
 #if @KWSYS_BUILD_SHARED@
 #if defined(_WIN32) || defined(__CYGWIN__)
-#if defined(@KWSYS_NAMESPACE@_EXPORTS)
+#if defined(@KWSYS_DEFINE_SYMBOL@)
 #define @KWSYS_NAMESPACE@_EXPORT __declspec(dllexport)
 #else
 #define @KWSYS_NAMESPACE@_EXPORT __declspec(dllimport)
-- 
GitLab