diff --git a/Code/cmake/Modules/RDKitUtils.cmake b/Code/cmake/Modules/RDKitUtils.cmake index f640cfc89..25e00296f 100644 --- a/Code/cmake/Modules/RDKitUtils.cmake +++ b/Code/cmake/Modules/RDKitUtils.cmake @@ -273,3 +273,20 @@ function(createExportTestHeaders) overwriteIfChanged("${CMAKE_BINARY_DIR}/${exportPath}" "${CMAKE_SOURCE_DIR}/${exportPath}") overwriteIfChanged("${CMAKE_BINARY_DIR}/${testPath}" "${CMAKE_SOURCE_DIR}/${testPath}") endfunction(createExportTestHeaders) + +function(patchCoordGenMaeExportHeaders keyword path) + file(APPEND "${path}" + "// appended by CMake patchCoordGenMaeExportHeaders\n" + "#if !defined(RDKIT_DYN_LINK) || defined(SWIG)\n" + "#ifdef EXPORT_${keyword}\n" + "#undef EXPORT_${keyword}\n" + "#endif\n" + "#define EXPORT_${keyword}\n" + "#endif\n" + "#ifndef SWIG\n" + "#ifdef _MSC_VER\n" + "#pragma warning(disable:4251)\n" + "#pragma warning(disable:4275)\n" + "#endif\n" + "#endif\n") +endfunction(patchCoordGenMaeExportHeaders) diff --git a/External/CoordGen/CMakeLists.txt b/External/CoordGen/CMakeLists.txt index 80dd4bc76..b5b84a8f0 100644 --- a/External/CoordGen/CMakeLists.txt +++ b/External/CoordGen/CMakeLists.txt @@ -1,6 +1,9 @@ add_custom_target(coordgen_support ALL) if(RDK_BUILD_COORDGEN_SUPPORT) + add_definitions(-DIN_MAEPARSER) + add_definitions(-DIN_COORDGEN) + include(RDKitUtils) if(NOT DEFINED MAEPARSER_DIR) set(MAEPARSER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/maeparser") endif() @@ -13,15 +16,13 @@ if(RDK_BUILD_COORDGEN_SUPPORT) ${CMAKE_CURRENT_SOURCE_DIR}/master.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) file(RENAME "maeparser-${RELEASE_NO}" "${MAEPARSER_DIR}") + patchCoordGenMaeExportHeaders("MAEPARSER" "${MAEPARSER_DIR}/MaeParserConfig.hpp") else() message("-- Found MAEParser source in ${MAEPARSER_DIR}") endif() file(GLOB MAESOURCES "${MAEPARSER_DIR}/*.cpp") rdkit_library(maeparser ${MAESOURCES} SHARED ) - if((MSVC AND RDK_INSTALL_DLLS_MSVC) OR ((NOT MSVC) AND WIN32)) - set_target_properties(maeparser PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) - endif() install(TARGETS maeparser DESTINATION ${RDKit_LibDir}) if(NOT DEFINED COORDGEN_DIR) @@ -37,15 +38,13 @@ if(RDK_BUILD_COORDGEN_SUPPORT) ${CMAKE_CURRENT_SOURCE_DIR}/master.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) file(RENAME "coordgenlibs-${RELEASE_NO}" "${COORDGEN_DIR}") + patchCoordGenMaeExportHeaders("COORDGEN" "${COORDGEN_DIR}/CoordgenConfig.hpp") else() message("-- Found coordgenlibs source in ${COORDGEN_DIR}") endif() file(GLOB CGSOURCES "${COORDGEN_DIR}/*.cpp") rdkit_library(coordgenlib ${CGSOURCES} SHARED LINK_LIBRARIES maeparser) - if((MSVC AND RDK_INSTALL_DLLS_MSVC) OR ((NOT MSVC) AND WIN32)) - set_target_properties(coordgenlib PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) - endif() install(TARGETS coordgenlib DESTINATION ${RDKit_LibDir}) set(MAE_FILES ${COORDGEN_DIR}/templates.mae )