diff --git a/CMakeLists.txt b/CMakeLists.txt index fda59429eec07dbc1c47d97474c651f877cb5f9a..b3102216022dbffab49604330787d9944cabfc83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,8 +17,8 @@ project(ADIOS2 VERSION 2.0.0) #------------------------------------------------------------------------------# # Some boilerplate to setup nice output directories #------------------------------------------------------------------------------# - include(GNUInstallDirs) +set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/adios2") list(INSERT CMAKE_MODULE_PATH 0 "${ADIOS2_SOURCE_DIR}/cmake") if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY) @@ -55,14 +55,19 @@ include(CMakeDependentOption) # Setup shared library / -fPIC stuff get_property(SHARED_LIBS_SUPPORTED GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS) -cmake_dependent_option(ADIOS2_BUILD_SHARED_LIBS - "Whether or not to build shared libraries" ON - "SHARED_LIBS_SUPPORTED" OFF) +option(BUILD_SHARED_LIBS "Build shared libraries (so/dylib/dll)." ${SHARED_LIBS_SUPPORTED}) +if(NOT SHARED_LIBS_SUPPORTED) + if(BUILD_SHARED_LIBS) + message(WARNING "A shared library build was requested but is not supported on this platform / compiler. Unexpected build results will likely occur") + endif() + set(BUILD_SHARED_LIBS OFF CACHE BOOL + "Build shared libraries (so/dylib/dll)." FORCE + ) +endif() + cmake_dependent_option(ADIOS2_ENABLE_PIC "Build with Position Independent Code" ON "SHARED_LIBS_SUPPORTED" OFF) -set(BUILD_SHARED_LIBS ${ADIOS2_BUILD_SHARED_LIBS}) - if(ADIOS2_ENABLE_PIC) set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() @@ -83,9 +88,8 @@ if(ADIOS2_HAVE_MPI) add_definitions(-DOMPI_SKIP_MPICXX) endif() -GenerateADIOSConfig(MPI ZFP BZip2 ADIOS1 HDF5 DataMan Python SysVShMem) -install( - FILES ${ADIOS2_BINARY_DIR}/adios2/ADIOSConfig.h +GenerateADIOSHeaderConfig(MPI ZFP BZip2 ADIOS1 HDF5 DataMan Python SysVShMem) +install(FILES ${ADIOS2_BINARY_DIR}/source/adios2/ADIOSConfig.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/adios2 ) @@ -125,6 +129,11 @@ if(BUILD_TESTING) add_subdirectory(testing) endif() +#------------------------------------------------------------------------------# +# Generating package configs +#------------------------------------------------------------------------------# +GenerateADIOSPackageConfig() + #------------------------------------------------------------------------------# # Configuration summary #------------------------------------------------------------------------------# diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt index 854a2c628004e5228d62d40663f58ec1a3957456..79b64eed86296603ce4ebd27dfcda7c774d41599 100644 --- a/bindings/python/CMakeLists.txt +++ b/bindings/python/CMakeLists.txt @@ -28,14 +28,11 @@ endif() string(REGEX REPLACE "^${PYTHON_PREFIX}/" "" CMAKE_INSTALL_PYTHONDIR "${PYTHON_SITE_PACKAGES}" ) -set(CMAKE_INSTALL_PYTHONDIR "${CMAKE_INSTALL_PYTHONDIR}" - CACHE INTERNAL "" FORCE -) set_target_properties(adios2py PROPERTIES OUTPUT_NAME adios2 LIBRARY_OUTPUT_DIRECTORY ${ADIOS2_BINARY_DIR}/${CMAKE_INSTALL_PYTHONDIR} RUNTIME_OUTPUT_DIRECTORY ${ADIOS2_BINARY_DIR}/${CMAKE_INSTALL_PYTHONDIR} ) -install(TARGETS adios2py +install(TARGETS adios2py DESTINATION ${CMAKE_INSTALL_PYTHONDIR} ) diff --git a/cmake/ADIOS2Config.cmake.in b/cmake/ADIOS2Config.cmake.in new file mode 100644 index 0000000000000000000000000000000000000000..58d1afed260763478f50c88dff25746abbb736a9 --- /dev/null +++ b/cmake/ADIOS2Config.cmake.in @@ -0,0 +1,2 @@ +list(INSERT CMAKE_MODULE_PATH 0 "@ADIOS2_SOURCE_DIR@/cmake") +include("${CMAKE_CURRENT_LIST_DIR}/ADIOS2ConfigCommon.cmake") diff --git a/cmake/ADIOS2ConfigCommon.cmake.in b/cmake/ADIOS2ConfigCommon.cmake.in new file mode 100644 index 0000000000000000000000000000000000000000..4e108bf2b80465fdf3c138744c84fa985b36df3b --- /dev/null +++ b/cmake/ADIOS2ConfigCommon.cmake.in @@ -0,0 +1,46 @@ +cmake_minimum_required(VERSION 3.5) + +include(CMakeFindDependencyMacro) + +if(NOT @BUILD_SHARED_LIBS@) + set(ADIOS2_HAVE_BZip2 @ADIOS2_HAVE_BZip2@) + if(ADIOS2_HAVE_BZip2) + find_dependency(BZip2) + endif() + + set(ADIOS2_HAVE_ZFP @ADIOS2_HAVE_ZFP@) + if(ADIOS2_HAVE_ZFP) + find_dependency(ZFP) + endif() + + set(ADIOS2_HAVE_MPI @ADIOS2_HAVE_MPI@) + if(ADIOS2_HAVE_MPI) + find_dependency(MPI) + endif() + + set(ADIOS2_HAVE_ZeroMQ @ADIOS2_HAVE_ZeroMQ@) + if(ADIOS2_HAVE_ZeroMQ) + find_dependency(ZeroMQ) + endif() + + set(ADIOS2_HAVE_HDF5 @ADIOS2_HAVE_HDF5@) + if(ADIOS2_HAVE_HDF5) + find_dependency(HDF5 COMPONENTS C) + endif() + + set(ADIOS2_HAVE_ADIOS1 @ADIOS2_HAVE_ADIOS1@) + if(ADIOS2_HAVE_ADIOS1) + if(ADIOS2_HAVE_MPI) + find_dependency(ADIOS1 1.12.0) + else() + find_dependency(ADIOS1 1.12.0 sequential) + endif() + endif() +endif() + +include("${CMAKE_CURRENT_LIST_DIR}/ADIOS2ConfigVersion.cmake") + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ADIOS2 DEFAULT_MESSAGE ADIOS2_VERSION) + +include("${CMAKE_CURRENT_LIST_DIR}/ADIOS2Targets.cmake") diff --git a/cmake/ADIOS2ConfigInstall.cmake.in b/cmake/ADIOS2ConfigInstall.cmake.in new file mode 100644 index 0000000000000000000000000000000000000000..b2c1c180d6d3ff2ff6c7770ee25306d402fea365 --- /dev/null +++ b/cmake/ADIOS2ConfigInstall.cmake.in @@ -0,0 +1,2 @@ +list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_LIST_DIR}/Modules") +include("${CMAKE_CURRENT_LIST_DIR}/ADIOS2ConfigCommon.cmake") diff --git a/cmake/ADIOSFunctions.cmake b/cmake/ADIOSFunctions.cmake index 37b4cf2e02b2d01c9267f51e1a742efd752ab491..14f070fe2ad00dace4fcbf0fc0fc800402121fdd 100644 --- a/cmake/ADIOSFunctions.cmake +++ b/cmake/ADIOSFunctions.cmake @@ -3,22 +3,6 @@ # accompanying file Copyright.txt for details. #------------------------------------------------------------------------------# -function(GenerateADIOSConfig) - foreach(OPT IN LISTS ARGN) - string(TOUPPER ${OPT} OPT_UPPER) - if(ADIOS2_HAVE_${OPT}) - set(ADIOS2_HAVE_${OPT_UPPER} 1) - else() - set(ADIOS2_HAVE_${OPT_UPPER}) - endif() - endforeach() - - configure_file( - ${ADIOS2_SOURCE_DIR}/source/adios2/ADIOSConfig.h.in - ${ADIOS2_BINARY_DIR}/adios2/ADIOSConfig.h - ) -endfunction() - function(adios_option name description default) set(ADIOS2_USE_${name} ${default} CACHE STRING "${description}") set_property(CACHE ADIOS2_USE_${name} PROPERTY @@ -46,3 +30,92 @@ function(python_add_test name script) ENVIRONMENT "PYTHONPATH=${ADIOS2_BINARY_DIR}/${CMAKE_INSTALL_PYTHONDIR}:$ENV{PYTHONPATH}" ) endfunction() + +function(GenerateADIOSHeaderConfig) + foreach(OPT IN LISTS ARGN) + string(TOUPPER ${OPT} OPT_UPPER) + if(ADIOS2_HAVE_${OPT}) + set(ADIOS2_HAVE_${OPT_UPPER} 1) + else() + set(ADIOS2_HAVE_${OPT_UPPER}) + endif() + endforeach() + + configure_file( + ${ADIOS2_SOURCE_DIR}/source/adios2/ADIOSConfig.h.in + ${ADIOS2_BINARY_DIR}/source/adios2/ADIOSConfig.h + ) +endfunction() + +function(GenerateADIOSPackageConfig) + include(CMakePackageConfigHelpers) + + # Build interface configs + write_basic_package_version_file( + ${ADIOS2_BINARY_DIR}/ADIOS2ConfigVersion.cmake + COMPATIBILITY AnyNewerVersion + ) + export(EXPORT adios2Exports + FILE ${ADIOS2_BINARY_DIR}/ADIOS2Targets.cmake + NAMESPACE adios2:: + ) + configure_file( + ${ADIOS2_SOURCE_DIR}/cmake/ADIOS2ConfigCommon.cmake.in + ${ADIOS2_BINARY_DIR}/ADIOS2ConfigCommon.cmake + @ONLY + ) + configure_file( + ${ADIOS2_SOURCE_DIR}/cmake/ADIOS2Config.cmake.in + ${ADIOS2_BINARY_DIR}/ADIOS2Config.cmake + @ONLY + ) + + # Install interface configs + install( + FILES + ${ADIOS2_BINARY_DIR}/ADIOS2ConfigVersion.cmake + ${ADIOS2_BINARY_DIR}/ADIOS2ConfigCommon.cmake + DESTINATION ${CMAKE_INSTALL_CMAKEDIR} + ) + install(EXPORT adios2Exports + FILE ADIOS2Targets.cmake + NAMESPACE adios2:: + DESTINATION ${CMAKE_INSTALL_CMAKEDIR} + ) + configure_file( + ${ADIOS2_SOURCE_DIR}/cmake/ADIOS2ConfigInstall.cmake.in + ${ADIOS2_BINARY_DIR}/ADIOS2ConfigInstall.cmake + @ONLY + ) + install(FILES ${ADIOS2_BINARY_DIR}/ADIOS2ConfigInstall.cmake + RENAME ADIOS2Config.cmake + DESTINATION ${CMAKE_INSTALL_CMAKEDIR} + ) + + # Install helper find modules if needed + if(NOT BUILD_SHARED_LIBS) + if(ADIOS2_HAVE_BZip2) + install(FILES cmake/FindBZip2.cmake + DESTINATION ${CMAKE_INSTALL_CMAKEDIR}/Modules + ) + install(FILES cmake/upstream/FindBZip2.cmake + DESTINATION ${CMAKE_INSTALL_CMAKEDIR}/Modules/upstream + ) + endif() + if(ADIOS2_HAVE_ZFP) + install(FILES cmake/FindZFP.cmake + DESTINATION ${CMAKE_INSTALL_CMAKEDIR}/Modules + ) + endif() + if(ADIOS2_HAVE_ZeroMQ) + install(FILES cmake/FindZeroMQ.cmake + DESTINATION ${CMAKE_INSTALL_CMAKEDIR}/Modules + ) + endif() + if(ADIOS2_HAVE_ADIOS1) + install(FILES cmake/FindADIOS1.cmake + DESTINATION ${CMAKE_INSTALL_CMAKEDIR}/Modules + ) + endif() + endif() +endfunction() diff --git a/cmake/DetectOptions.cmake b/cmake/DetectOptions.cmake index 29237fcc40c2de892369101077f23c1b880161f3..eeff01f4fe581f4c40343fec4efa27581a259486 100644 --- a/cmake/DetectOptions.cmake +++ b/cmake/DetectOptions.cmake @@ -3,6 +3,10 @@ # accompanying file Copyright.txt for details. #------------------------------------------------------------------------------# +# We'll need to install the private find modules to ensure our import libs +# are properly resovled +set(adios2_find_modules) + # This file contains the option and dependency logic. The configuration # options are designed to be tertiary: ON, OFF, or AUTO. If AUTO, we try to # determine if dependencies are available and enable the option if we find @@ -121,5 +125,5 @@ if(ADIOS2_USE_SysVShMem STREQUAL AUTO) set(ADIOS2_HAVE_SysVShMem OFF) endif() elseif(ADIOS2_USE_SysVShMem) - set(ADIOS2_HAVE_SysVShMem) -endif() \ No newline at end of file + set(ADIOS2_HAVE_SysVShMem TRUE) +endif() diff --git a/source/adios2/CMakeLists.txt b/source/adios2/CMakeLists.txt index 3787518f992972d8d2dd1d63a0a15a4b6a702620..6c77dc0ce4f39d81faf0f75a551d27f4ce30e264 100644 --- a/source/adios2/CMakeLists.txt +++ b/source/adios2/CMakeLists.txt @@ -44,9 +44,8 @@ add_library(adios2 target_include_directories(adios2 PUBLIC $<BUILD_INTERFACE:${ADIOS2_SOURCE_DIR}/source> - $<BUILD_INTERFACE:${ADIOS2_BINARY_DIR}> - $<INSTALL_INTERFACE:include> - PRIVATE ${ADIOS2_SOURCE_DIR}/source + $<BUILD_INTERFACE:${ADIOS2_BINARY_DIR}/source> + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> ) target_link_libraries(adios2 PRIVATE adios2sys pugixml) @@ -139,19 +138,16 @@ set_target_properties(adios2 PROPERTIES SOVERSION ${ADIOS2_VERSION_MAJOR} ) -install( - FILES ADIOSMacros.h ADIOSTypes.h ADIOSMPICommOnly.h +install(FILES ADIOSMacros.h ADIOSTypes.h ADIOSMPICommOnly.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/adios2 ) -install( - DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/core +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/core DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/adios2 FILES_MATCHING REGEX "[^/]*\.(h|inl)$" ) # Library installation -install( - TARGETS adios2 EXPORT adios2 +install(TARGETS adios2 EXPORT adios2Exports RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/source/dataman/CMakeLists.txt b/source/dataman/CMakeLists.txt index 9dcfdef1a6cbbcc75d0a9484ade25c8c322f9eaa..acd59dde91950ab570f1741a64b034ea7067ea55 100644 --- a/source/dataman/CMakeLists.txt +++ b/source/dataman/CMakeLists.txt @@ -10,31 +10,42 @@ if(MSVC) message(FATAL_ERROR "DataMan is not currently compatible with MSVC") endif() -set(dataman_targets) - add_library(dataman DataManBase.cpp DataManBase.h DataMan.cpp DataMan.h CacheMan.cpp CacheMan.h ) -target_include_directories(dataman PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(dataman + PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> +) target_link_libraries(dataman PRIVATE adios2sys PUBLIC NLohmannJson ) -list(APPEND dataman_targets dataman) +set_target_properties(dataman PROPERTIES + VERSION ${ADIOS2_VERSION} + SOVERSION ${ADIOS2_VERSION_MAJOR} +) +install(TARGETS dataman EXPORT adios2Exports + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dataman +) # Add the dataman plugins as MODULE libraries instead of SHARED libraries. # MODULE libraries are designed to be plugins, i.e. shared libs that nobody # else links to. +set(dataman_modules) + add_library(dumpman MODULE DumpMan.h DumpMan.cpp) target_link_libraries(dumpman PRIVATE dataman) -list(APPEND dataman_targets dumpman) +list(APPEND dataman_modules dumpman) add_library(temporalman MODULE TemporalMan.h TemporalMan.cpp) target_link_libraries(temporalman PRIVATE dataman) -list(APPEND dataman_targets temporalman) +list(APPEND dataman_modules temporalman) if(ADIOS2_HAVE_ZeroMQ) find_package(ZeroMQ REQUIRED) @@ -44,14 +55,14 @@ if(ADIOS2_HAVE_ZeroMQ) ZmqMan.h ZmqMan.cpp ) target_link_libraries(zmqman PRIVATE dataman ZeroMQ::ZMQ) - list(APPEND dataman_targets zmqman) + list(APPEND dataman_modules zmqman) add_library(mdtmman MODULE StreamMan.h StreamMan.cpp MdtmMan.h MdtmMan.cpp ) target_link_libraries(mdtmman PRIVATE dataman ZeroMQ::ZMQ) - list(APPEND dataman_targets mdtmman) + list(APPEND dataman_modules mdtmman) endif() if(ADIOS2_HAVE_ZFP) @@ -60,18 +71,10 @@ if(ADIOS2_HAVE_ZFP) add_library(zfpman MODULE ZfpMan.h ZfpMan.cpp) target_link_libraries(zfpman PRIVATE dataman zfp::zfp) - list(APPEND dataman_targets zfpman) + list(APPEND dataman_modules zfpman) endif() -# Library versioning like this only makes sense for libdataman. The others are plugins -# loaded via dlopen. -set_target_properties(dataman PROPERTIES - VERSION ${ADIOS2_VERSION} - SOVERSION ${ADIOS2_VERSION_MAJOR} -) - -install( - TARGETS ${dataman_targets} EXPORT adios2 +install(TARGETS ${dataman_modules} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/thirdparty/KWSys/CMakeLists.txt b/thirdparty/KWSys/CMakeLists.txt index c0e95036c4934402c6bf24acc1d3ddb87c756265..600c5c9b4b33e07316486b5f2aaba8ac85d00fe8 100644 --- a/thirdparty/KWSys/CMakeLists.txt +++ b/thirdparty/KWSys/CMakeLists.txt @@ -4,5 +4,7 @@ set(KWSYS_USE_RegularExpression ON) set(KWSYS_USE_SystemTools ON) set(KWSYS_BUILD_SHARED ${ADIOS2_BUILD_SHARED_LIBS}) set(KWSYS_SPLIT_OBJECTS_FROM_INTERFACE ON) +set(KWSYS_INSTALL_EXPORT_NAME adios2Exports) +set(KWSYS_INSTALL_LIB_DIR ${CMAKE_INSTALL_LIBDIR}) -add_subdirectory(adios2sys EXCLUDE_FROM_ALL) +add_subdirectory(adios2sys) diff --git a/thirdparty/KWSys/adios2sys/CMakeLists.txt b/thirdparty/KWSys/adios2sys/CMakeLists.txt index 5d5fa9df510129a61de7a5fd92bf3dcd2d3246c2..e9bae831c62bfbac1020833ef1cae45303be1a67 100644 --- a/thirdparty/KWSys/adios2sys/CMakeLists.txt +++ b/thirdparty/KWSys/adios2sys/CMakeLists.txt @@ -886,12 +886,16 @@ IF(KWSYS_C_SRCS OR KWSYS_CXX_SRCS) # Set up include usage requirement IF(COMMAND TARGET_INCLUDE_DIRECTORIES) TARGET_INCLUDE_DIRECTORIES(${KWSYS_TARGET_INTERFACE} INTERFACE - ${CMAKE_CURRENT_BINARY_DIR}) + $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>) + IF(KWSYS_INSTALL_INCLUDE_DIR) + TARGET_INCLUDE_DIRECTORIES(${KWSYS_TARGET_INTERFACE} INTERFACE + $<INSTALL_INTERFACE:${KWSYS_INSTALL_INCLUDE_DIR}>) + ENDIF() ENDIF() # Create an install target for the library. IF(KWSYS_INSTALL_LIBRARY_RULE) - INSTALL(TARGETS ${KWSYS_TARGET_INTERFACE} ${KWSYS_INSTALL_LIBRARY_RULE}) + INSTALL(TARGETS ${KWSYS_TARGET_LINK} ${KWSYS_TARGET_INTERFACE} ${KWSYS_INSTALL_LIBRARY_RULE}) ENDIF() ENDIF() @@ -930,6 +934,16 @@ IF(KWSYS_ENABLE_C AND KWSYS_C_SRCS) ${KWSYS_PROPERTIES_C}) ENDIF() + # Set up include usage requirement + IF(COMMAND TARGET_INCLUDE_DIRECTORIES) + TARGET_INCLUDE_DIRECTORIES(${KWSYS_TARGET_C_INTERFACE} INTERFACE + $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>) + IF(KWSYS_INSTALL_INCLUDE_DIR) + TARGET_INCLUDE_DIRECTORIES(${KWSYS_TARGET_C_INTERFACE} INTERFACE + $<INSTALL_INTERFACE:${KWSYS_INSTALL_INCLUDE_DIR}>) + ENDIF() + ENDIF() + # Create an install target for the library. IF(KWSYS_INSTALL_LIBRARY_RULE) INSTALL(TARGETS ${KWSYS_TARGET_C_INTERFACE} ${KWSYS_INSTALL_LIBRARY_RULE}) diff --git a/thirdparty/NLohmannJson/CMakeLists.txt b/thirdparty/NLohmannJson/CMakeLists.txt index 7aaef186fef9b708ed4c3ed97fbb11e38253a0a6..7a340d53da828daaf02622a85b1371fe4994012d 100644 --- a/thirdparty/NLohmannJson/CMakeLists.txt +++ b/thirdparty/NLohmannJson/CMakeLists.txt @@ -1,4 +1 @@ -add_library(NLohmannJson INTERFACE) -target_include_directories(NLohmannJson - INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/json/src -) +add_subdirectory(json) diff --git a/thirdparty/NLohmannJson/json/CMakeLists.txt b/thirdparty/NLohmannJson/json/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..9e34ce3a003f818936381f990c2020114f7f4ffc --- /dev/null +++ b/thirdparty/NLohmannJson/json/CMakeLists.txt @@ -0,0 +1,5 @@ +add_library(NLohmannJson INTERFACE) +target_include_directories(NLohmannJson INTERFACE + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src> +) +install(TARGETS NLohmannJson EXPORT adios2Exports) diff --git a/thirdparty/pugixml/CMakeLists.txt b/thirdparty/pugixml/CMakeLists.txt index 07a05515c27e26dd2e9187e75def9dcb50b51163..7cc8a3d5957e2d0bd50f4d430a24069d23b5c6d6 100644 --- a/thirdparty/pugixml/CMakeLists.txt +++ b/thirdparty/pugixml/CMakeLists.txt @@ -1,12 +1 @@ -# This is an extremely simple and tiny library. Rather than build it -# seperately we'll just create an interface library containing the sources and -# headers -add_library(pugixml INTERFACE) -target_sources(pugixml INTERFACE - ${CMAKE_CURRENT_SOURCE_DIR}/pugixml/src/pugiconfig.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/pugixml/src/pugixml.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/pugixml/src/pugixml.cpp -) -target_include_directories(pugixml INTERFACE - ${CMAKE_CURRENT_SOURCE_DIR}/pugixml/src -) +add_subdirectory(pugixml) diff --git a/thirdparty/pugixml/pugixml/CMakeLists.txt b/thirdparty/pugixml/pugixml/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..0ff662a9eb74587dd06152ce711631e471107d32 --- /dev/null +++ b/thirdparty/pugixml/pugixml/CMakeLists.txt @@ -0,0 +1,10 @@ +add_library(pugixml INTERFACE) +target_sources(pugixml INTERFACE + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/pugiconfig.hpp> + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/pugixml.hpp> + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/pugixml.cpp> +) +target_include_directories(pugixml INTERFACE + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src> +) +install(TARGETS pugixml EXPORT adios2Exports)