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