diff --git a/CMakeLists.txt b/CMakeLists.txt index b1ddc230..a0f7b5d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ -PROJECT(SCR) -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) +CMAKE_MINIMUM_REQUIRED(VERSION 3.14) +PROJECT(SCR VERSION 3.0.1) # Find Packages & Files LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") @@ -11,64 +11,36 @@ INCLUDE(SCR_OPTIONS) INCLUDE(CheckIncludeFile) ## AXL -FIND_PACKAGE(AXL REQUIRED) -IF(AXL_FOUND) - INCLUDE_DIRECTORIES(${AXL_INCLUDE_DIRS}) - LIST(APPEND SCR_EXTERNAL_LIBS ${AXL_MPI_LIBRARIES}) - LIST(APPEND SCR_EXTERNAL_SERIAL_LIBS ${AXL_LIBRARIES}) - LIST(APPEND SCR_LINK_LINE "-laxl_mpi") -ENDIF(AXL_FOUND) +FIND_PACKAGE(axl REQUIRED) +LIST(APPEND SCR_EXTERNAL_LIBS axl::axl_mpi) +LIST(APPEND SCR_EXTERNAL_SERIAL_LIBS axl::axl) ## ER -FIND_PACKAGE(ER REQUIRED) -IF(ER_FOUND) - INCLUDE_DIRECTORIES(${ER_INCLUDE_DIRS}) - LIST(APPEND SCR_EXTERNAL_LIBS ${ER_LIBRARIES}) - LIST(APPEND SCR_LINK_LINE "-ler") -ENDIF(ER_FOUND) +FIND_PACKAGE(er REQUIRED) +LIST(APPEND SCR_EXTERNAL_LIBS er::er) ## SHUFFILE -FIND_PACKAGE(SHUFFILE REQUIRED) -IF(SHUFFILE_FOUND) - INCLUDE_DIRECTORIES(${SHUFFILE_INCLUDE_DIRS}) - LIST(APPEND SCR_EXTERNAL_LIBS ${SHUFFILE_LIBRARIES}) - LIST(APPEND SCR_LINK_LINE "-lshuffile") -ENDIF(SHUFFILE_FOUND) +FIND_PACKAGE(shuffile REQUIRED) +LIST(APPEND SCR_EXTERNAL_LIBS shuffile::shuffile) ## REDSET -FIND_PACKAGE(REDSET REQUIRED) -IF(REDSET_FOUND) - INCLUDE_DIRECTORIES(${REDSET_INCLUDE_DIRS}) - LIST(APPEND SCR_EXTERNAL_LIBS ${REDSET_LIBRARIES}) - LIST(APPEND SCR_EXTERNAL_SERIAL_LIBS ${REDSET_BASE_LIBRARIES}) - LIST(APPEND SCR_LINK_LINE "-lredset") -ENDIF(REDSET_FOUND) +FIND_PACKAGE(redset REQUIRED) +LIST(APPEND SCR_EXTERNAL_LIBS redset::redset) +LIST(APPEND SCR_EXTERNAL_SERIAL_LIBS redset::redset_base) ## SPATH -FIND_PACKAGE(SPATH REQUIRED) -IF(SPATH_FOUND) - INCLUDE_DIRECTORIES(${SPATH_INCLUDE_DIRS}) - LIST(APPEND SCR_EXTERNAL_LIBS ${SPATH_LIBRARIES}) - LIST(APPEND SCR_EXTERNAL_SERIAL_LIBS ${SPATH_BASE_LIBRARIES}) - LIST(APPEND SCR_LINK_LINE "-lspath") -ENDIF(SPATH_FOUND) +FIND_PACKAGE(spath REQUIRED) +LIST(APPEND SCR_EXTERNAL_LIBS spath::spath) +LIST(APPEND SCR_EXTERNAL_SERIAL_LIBS spath::spath_base) ## RankStr -FIND_PACKAGE(RANKSTR REQUIRED) -IF(RANKSTR_FOUND) - INCLUDE_DIRECTORIES(${RANKSTR_INCLUDE_DIRS}) - LIST(APPEND SCR_EXTERNAL_LIBS ${RANKSTR_LIBRARIES}) - LIST(APPEND SCR_LINK_LINE "-lrankstr") -ENDIF(RANKSTR_FOUND) +FIND_PACKAGE(rankstr REQUIRED) +LIST(APPEND SCR_EXTERNAL_LIBS rankstr::rankstr) ## KVTREE -FIND_PACKAGE(KVTREE REQUIRED) -IF(KVTREE_FOUND) - INCLUDE_DIRECTORIES(${KVTREE_INCLUDE_DIRS}) - LIST(APPEND SCR_EXTERNAL_LIBS ${KVTREE_LIBRARIES}) - LIST(APPEND SCR_EXTERNAL_SERIAL_LIBS ${KVTREE_BASE_LIBRARIES}) - LIST(APPEND SCR_LINK_LINE "-lkvtree") -ENDIF(KVTREE_FOUND) +FIND_PACKAGE(kvtree REQUIRED) +LIST(APPEND SCR_EXTERNAL_LIBS kvtree::kvtree) +LIST(APPEND SCR_EXTERNAL_SERIAL_LIBS kvtree::kvtree_base) ## libdtcmp FIND_PACKAGE(DTCMP REQUIRED) @@ -113,6 +85,27 @@ ENDIF() # Special Install Files INSTALL(FILES README.md DESTINATION ${CMAKE_INSTALL_DATADIR}/scr) +# CMake configs + +# Install the exports file +INSTALL(EXPORT scrTargets FILE scrTargets.cmake NAMESPACE scr:: DESTINATION share/scr/cmake) + +# Export so we can use in-tree +EXPORT(EXPORT scrTargets NAMESPACE scr:: FILE scrTargets.cmake) + +# Setup the package config +INCLUDE(CMakePackageConfigHelpers) +CONFIGURE_PACKAGE_CONFIG_FILE(cmake/scrConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/scrConfig.cmake INSTALL_DESTINATION share/scr/cmake) +WRITE_BASIC_PACKAGE_VERSION_FILE(${CMAKE_CURRENT_BINARY_DIR}/scrConfigVersion.cmake COMPATIBILITY SameMajorVersion) + +# Install package config +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/scrConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/scrConfigVersion.cmake DESTINATION share/scr/cmake) +INSTALL(FILES cmake/FindDTCMP.cmake DESTINATION share/scr/cmake) +INSTALL(FILES cmake/FindLWGRP.cmake DESTINATION share/scr/cmake) +INSTALL(FILES cmake/FindMySQL.cmake DESTINATION share/scr/cmake) +INSTALL(FILES cmake/FindPDSH.cmake DESTINATION share/scr/cmake) +INSTALL(FILES cmake/FindYOGRT.cmake DESTINATION share/scr/cmake) + # Package SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Scalable Checkpoint / Restart Library") SET(CPACK_PACKAGE_VENDOR "Lawrence Livermore National Laboratory") diff --git a/cmake/FindAXL.cmake b/cmake/FindAXL.cmake deleted file mode 100644 index 6f38e05f..00000000 --- a/cmake/FindAXL.cmake +++ /dev/null @@ -1,37 +0,0 @@ -# - Try to find libaxl -# Once done this will define -# AXL_FOUND - System has libaxl -# AXL_INCLUDE_DIRS - The libaxl include directories -# AXL_LIBRARIES - The libraries needed to use libaxl - -FIND_PATH(WITH_AXL_PREFIX - NAMES include/axl.h -) - -FIND_LIBRARY(AXL_LIBRARIES - NAMES axl - HINTS ${WITH_AXL_PREFIX}/lib -) - -FIND_LIBRARY(AXL_MPI_LIBRARIES - NAMES axl_mpi - HINTS ${WITH_AXL_PREFIX}/lib -) - -FIND_PATH(AXL_INCLUDE_DIRS - NAMES axl.h - HINTS ${WITH_AXL_PREFIX}/include -) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(AXL DEFAULT_MSG - AXL_LIBRARIES - AXL_MPI_LIBRARIES - AXL_INCLUDE_DIRS -) - -# Hide these vars from ccmake GUI -MARK_AS_ADVANCED( - AXL_LIBRARIES - AXL_INCLUDE_DIRS -) diff --git a/cmake/FindER.cmake b/cmake/FindER.cmake deleted file mode 100644 index 6caac2b0..00000000 --- a/cmake/FindER.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# - Try to find liber -# Once done this will define -# ER_FOUND - System has liber -# ER_INCLUDE_DIRS - The liber include directories -# ER_LIBRARIES - The libraries needed to use liber - -FIND_PATH(WITH_ER_PREFIX - NAMES include/er.h -) - -FIND_LIBRARY(ER_LIBRARIES - NAMES er - HINTS ${WITH_ER_PREFIX}/lib -) - -FIND_PATH(ER_INCLUDE_DIRS - NAMES er.h - HINTS ${WITH_ER_PREFIX}/include -) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(ER DEFAULT_MSG - ER_LIBRARIES - ER_INCLUDE_DIRS -) - -# Hide these vars from ccmake GUI -MARK_AS_ADVANCED( - ER_LIBRARIES - ER_INCLUDE_DIRS -) diff --git a/cmake/FindKVTREE.cmake b/cmake/FindKVTREE.cmake deleted file mode 100644 index a70521de..00000000 --- a/cmake/FindKVTREE.cmake +++ /dev/null @@ -1,38 +0,0 @@ -# - Try to find libkvtree -# Once done this will define -# KVTREE_FOUND - System has libkvtree -# KVTREE_INCLUDE_DIRS - The libkvtree include directories -# KVTREE_LIBRARIES - The libraries needed to use libkvtree - -FIND_PATH(WITH_KVTREE_PREFIX - NAMES include/kvtree.h -) - -FIND_LIBRARY(KVTREE_LIBRARIES - NAMES kvtree - HINTS ${WITH_KVTREE_PREFIX}/lib -) - -FIND_LIBRARY(KVTREE_BASE_LIBRARIES - NAMES kvtree_base - HINTS ${WITH_KVTREE_PREFIX}/lib -) - -FIND_PATH(KVTREE_INCLUDE_DIRS - NAMES kvtree.h - HINTS ${WITH_KVTREE_PREFIX}/include -) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(KVTREE DEFAULT_MSG - KVTREE_LIBRARIES - KVTREE_BASE_LIBRARIES - KVTREE_INCLUDE_DIRS -) - -# Hide these vars from ccmake GUI -MARK_AS_ADVANCED( - KVTREE_LIBRARIES - KVTREE_BASE_LIBRARIES - KVTREE_INCLUDE_DIRS -) diff --git a/cmake/FindLWGRP.cmake b/cmake/FindLWGRP.cmake new file mode 100644 index 00000000..b78e6dd4 --- /dev/null +++ b/cmake/FindLWGRP.cmake @@ -0,0 +1,31 @@ +# - Try to find liblwgrp +# Once done this will define +# LWGRP_FOUND - System has liblwgrp +# LWGRP_INCLUDE_DIRS - The liblwgrp include directories +# LWGRP_LIBRARIES - The libraries needed to use liblwgrp + +FIND_PATH(WITH_LWGRP_PREFIX + NAMES include/lwgrp.h +) + +FIND_LIBRARY(LWGRP_LIBRARIES + NAMES lwgrp + HINTS ${WITH_LWGRP_PREFIX}/lib +) + +FIND_PATH(LWGRP_INCLUDE_DIRS + NAMES lwgrp.h + HINTS ${WITH_LWGRP_PREFIX}/include +) + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LWGRP DEFAULT_MSG + LWGRP_LIBRARIES + LWGRP_INCLUDE_DIRS +) + +# Hide these vars from ccmake GUI +MARK_AS_ADVANCED( + LWGRP_LIBRARIES + LWGRP_INCLUDE_DIRS +) diff --git a/cmake/FindRANKSTR.cmake b/cmake/FindRANKSTR.cmake deleted file mode 100644 index 6f3a7c1f..00000000 --- a/cmake/FindRANKSTR.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# - Try to find librankstr -# Once done this will define -# RANKSTR_FOUND - System has librankstr -# RANKSTR_INCLUDE_DIRS - The librankstr include directories -# RANKSTR_LIBRARIES - The libraries needed to use librankstr - -FIND_PATH(WITH_RANKSTR_PREFIX - NAMES include/rankstr_mpi.h -) - -FIND_LIBRARY(RANKSTR_LIBRARIES - NAMES rankstr - HINTS ${WITH_RANKSTR_PREFIX}/lib -) - -FIND_PATH(RANKSTR_INCLUDE_DIRS - NAMES rankstr_mpi.h - HINTS ${WITH_RANKSTR_PREFIX}/include -) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(RANKSTR DEFAULT_MSG - RANKSTR_LIBRARIES - RANKSTR_INCLUDE_DIRS -) - -# Hide these vars from ccmake GUI -MARK_AS_ADVANCED( - RANKSTR_LIBRARIES - RANKSTR_INCLUDE_DIRS -) diff --git a/cmake/FindREDSET.cmake b/cmake/FindREDSET.cmake deleted file mode 100644 index 991a510b..00000000 --- a/cmake/FindREDSET.cmake +++ /dev/null @@ -1,38 +0,0 @@ -# - Try to find libredset -# Once done this will define -# REDSET_FOUND - System has libredset -# REDSET_INCLUDE_DIRS - The libredset include directories -# REDSET_LIBRARIES - The libraries needed to use libredset - -FIND_PATH(WITH_REDSET_PREFIX - NAMES include/redset.h -) - -FIND_LIBRARY(REDSET_LIBRARIES - NAMES redset - HINTS ${WITH_REDSET_PREFIX}/lib -) - -FIND_LIBRARY(REDSET_BASE_LIBRARIES - NAMES redset_base - HINTS ${WITH_REDSET_PREFIX}/lib -) - -FIND_PATH(REDSET_INCLUDE_DIRS - NAMES redset.h - HINTS ${WITH_REDSET_PREFIX}/include -) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(REDSET DEFAULT_MSG - REDSET_LIBRARIES - REDSET_BASE_LIBRARIES - REDSET_INCLUDE_DIRS -) - -# Hide these vars from ccmake GUI -MARK_AS_ADVANCED( - REDSET_LIBRARIES - REDSET_BASE_LIBRARIES - REDSET_INCLUDE_DIRS -) diff --git a/cmake/FindSHUFFILE.cmake b/cmake/FindSHUFFILE.cmake deleted file mode 100644 index c5b5b439..00000000 --- a/cmake/FindSHUFFILE.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# - Try to find libshuffile -# Once done this will define -# SHUFFILE_FOUND - System has libshuffile -# SHUFFILE_INCLUDE_DIRS - The libshuffile include directories -# SHUFFILE_LIBRARIES - The libraries needed to use libshuffile - -FIND_PATH(WITH_SHUFFILE_PREFIX - NAMES include/shuffile.h -) - -FIND_LIBRARY(SHUFFILE_LIBRARIES - NAMES shuffile - HINTS ${WITH_SHUFFILE_PREFIX}/lib -) - -FIND_PATH(SHUFFILE_INCLUDE_DIRS - NAMES shuffile.h - HINTS ${WITH_SHUFFILE_PREFIX}/include -) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(SHUFFILE DEFAULT_MSG - SHUFFILE_LIBRARIES - SHUFFILE_INCLUDE_DIRS -) - -# Hide these vars from ccmake GUI -MARK_AS_ADVANCED( - SHUFFILE_LIBRARIES - SHUFFILE_INCLUDE_DIRS -) diff --git a/cmake/FindSPATH.cmake b/cmake/FindSPATH.cmake deleted file mode 100644 index 2c5c2b6b..00000000 --- a/cmake/FindSPATH.cmake +++ /dev/null @@ -1,38 +0,0 @@ -# - Try to find libspath -# Once done this will define -# SPATH_FOUND - System has libspath -# SPATH_INCLUDE_DIRS - The libspath include directories -# SPATH_LIBRARIES - The libraries needed to use libspath - -FIND_PATH(WITH_SPATH_PREFIX - NAMES include/spath.h -) - -FIND_LIBRARY(SPATH_LIBRARIES - NAMES spath - HINTS ${WITH_SPATH_PREFIX}/lib -) - -FIND_LIBRARY(SPATH_BASE_LIBRARIES - NAMES spath_base - HINTS ${WITH_SPATH_PREFIX}/lib -) - -FIND_PATH(SPATH_INCLUDE_DIRS - NAMES spath.h - HINTS ${WITH_SPATH_PREFIX}/include -) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(SPATH DEFAULT_MSG - SPATH_LIBRARIES - SPATH_BASE_LIBRARIES - SPATH_INCLUDE_DIRS -) - -# Hide these vars from ccmake GUI -MARK_AS_ADVANCED( - SPATH_LIBRARIES - SPATH_BASE_LIBRARIES - SPATH_INCLUDE_DIRS -) diff --git a/cmake/scrConfig.cmake.in b/cmake/scrConfig.cmake.in new file mode 100644 index 00000000..cb7534fb --- /dev/null +++ b/cmake/scrConfig.cmake.in @@ -0,0 +1,36 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) + +find_dependency(er REQUIRED) +find_dependency(redset REQUIRED) +find_dependency(shuffile REQUIRED) +find_dependency(axl REQUIRED) +find_dependency(kvtree REQUIRED) +find_dependency(rankstr REQUIRED) +find_dependency(spath REQUIRED) +find_dependency(MPI REQUIRED) + +# The packages below do not have cmake package config files. +# Instead, we provide cmake find module files, like FindDTCMP.cmake. +# This way users who build with cmake don't have to write their own. +# The line below registers the current working directory with cmake +# so that it can find the Find*.cmake module files. +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") + +find_dependency(DTCMP REQUIRED) +find_dependency(LWGRP REQUIRED) + +IF(@MYSQL_FOUND@) + find_dependency(MySQL REQUIRED) +ENDIF() + +IF(@PDSH_FOUND@) + find_dependency(PDSH REQUIRED) +ENDIF() + +IF(@YOGRT_FOUND@) + find_dependency(YOGRT REQUIRED) +ENDIF() + +include("${CMAKE_CURRENT_LIST_DIR}/scrTargets.cmake") diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 6de7b04e..90f12b42 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -31,9 +31,9 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/makefile.examples DESTINATION ${CMAKE_ ## Prefer static? IF(SCR_LINK_STATIC) - SET(SCR_LINK_TO scr-static ${SCR_EXTERNAL_LIBS}) + SET(SCR_LINK_TO scr::scr-static ${SCR_EXTERNAL_LIBS}) ELSE(SCR_LINK_STATIC) - SET(SCR_LINK_TO scr ${SCR_EXTERNAL_LIBS}) + SET(SCR_LINK_TO scr::scr ${SCR_EXTERNAL_LIBS}) ENDIF(SCR_LINK_STATIC) @@ -48,15 +48,15 @@ FILE(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test_cleanup.sh DESTINATION ${CMAKE_CURREN FILE(COPY ${CMAKE_CURRENT_SOURCE_DIR}/run_test.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) ADD_EXECUTABLE(test_api test_common.c test_api.c) -TARGET_LINK_LIBRARIES(test_api ${SCR_LINK_TO}) +TARGET_LINK_LIBRARIES(test_api PRIVATE ${SCR_LINK_TO}) SCR_ADD_TEST(test_api "" "ckpt.*") ADD_EXECUTABLE(test_api_shared_file test_common.c test_api.c) -TARGET_LINK_LIBRARIES(test_api_shared_file ${SCR_LINK_TO}) +TARGET_LINK_LIBRARIES(test_api_shared_file PRIVATE ${SCR_LINK_TO}) SCR_ADD_TEST(test_api_shared_file "--shared" "ckpt.*") ADD_EXECUTABLE(test_config test_config.c) -TARGET_LINK_LIBRARIES(test_config ${SCR_LINK_TO}) +TARGET_LINK_LIBRARIES(test_config PRIVATE ${SCR_LINK_TO}) SCR_ADD_TEST(test_config "" "test_config.d") #ADD_EXECUTABLE(test_api_file test_common.c test_api_file.c) @@ -64,7 +64,7 @@ SCR_ADD_TEST(test_config "" "test_config.d") #SCR_ADD_TEST: proper usage is unknown ADD_EXECUTABLE(test_api_multiple test_common.c test_api_multiple.c) -TARGET_LINK_LIBRARIES(test_api_multiple ${SCR_LINK_TO}) +TARGET_LINK_LIBRARIES(test_api_multiple PRIVATE ${SCR_LINK_TO}) SCR_ADD_TEST(test_api_multiple "" "") #ADD_EXECUTABLE(test_api_multiple_file test_common.c test_api_multiple_file.c) @@ -74,9 +74,9 @@ SCR_ADD_TEST(test_api_multiple "" "") ADD_EXECUTABLE(test_ckpt test_ckpt.cpp) IF(MPI_CXX_FOUND) TARGET_INCLUDE_DIRECTORIES(test_ckpt PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${MPI_CXX_INCLUDE_PATH}) - TARGET_LINK_LIBRARIES(test_ckpt ${SCR_LINK_TO} ${MPI_CXX_LIBRARIES}) + TARGET_LINK_LIBRARIES(test_ckpt PRIVATE ${SCR_LINK_TO} ${MPI_CXX_LIBRARIES}) ELSE(MPI_CXX_FOUND) - TARGET_LINK_LIBRARIES(test_ckpt ${SCR_LINK_TO}) + TARGET_LINK_LIBRARIES(test_ckpt PRIVATE ${SCR_LINK_TO}) ENDIF(MPI_CXX_FOUND) SCR_ADD_TEST(test_ckpt "" "rank_0.ckpt") @@ -92,11 +92,11 @@ IF(ENABLE_FORTRAN) IF(SCR_LINK_STATIC) # needed for LANL cray SET(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS) - TARGET_LINK_LIBRARIES(test_ckpt_F scrf-static ${SCR_EXTERNAL_LIBS} ${MPI_Fortran_LIBRARIES}) - TARGET_LINK_LIBRARIES(test_ckpt_F90 scrf-static ${SCR_EXTERNAL_LIBS} ${MPI_Fortran_LIBRARIES}) + TARGET_LINK_LIBRARIES(test_ckpt_F PRIVATE scr::scrf-static ${SCR_EXTERNAL_LIBS} ${MPI_Fortran_LIBRARIES}) + TARGET_LINK_LIBRARIES(test_ckpt_F90 PRIVATE scr::scrf-static ${SCR_EXTERNAL_LIBS} ${MPI_Fortran_LIBRARIES}) ELSE(SCR_LINK_STATIC) - TARGET_LINK_LIBRARIES(test_ckpt_F scrf ${SCR_EXTERNAL_LIBS} ${MPI_Fortran_LIBRARIES}) - TARGET_LINK_LIBRARIES(test_ckpt_F90 scrf ${SCR_EXTERNAL_LIBS} ${MPI_Fortran_LIBRARIES}) + TARGET_LINK_LIBRARIES(test_ckpt_F PRIVATE scr::scrf ${SCR_EXTERNAL_LIBS} ${MPI_Fortran_LIBRARIES}) + TARGET_LINK_LIBRARIES(test_ckpt_F90 PRIVATE scr::scrf ${SCR_EXTERNAL_LIBS} ${MPI_Fortran_LIBRARIES}) ENDIF(SCR_LINK_STATIC) SCR_ADD_TEST(test_ckpt_F "" "rank_00000.ckpt") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3dc3cf3e..d4859ee7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -74,48 +74,57 @@ LIST(APPEND libscr_srcs # SCR Library ADD_LIBRARY(scr_o OBJECT ${libscr_srcs}) +TARGET_LINK_LIBRARIES(scr_o PRIVATE ${SCR_EXTERNAL_LIBS}) + ADD_LIBRARY(scr_base_o OBJECT ${cliscr_noMPI_srcs}) +TARGET_LINK_LIBRARIES(scr_base_o PRIVATE ${SCR_EXTERNAL_SERIAL_LIBS}) IF(BUILD_SHARED_LIBS) ADD_LIBRARY(scr SHARED $) - TARGET_LINK_LIBRARIES(scr ${SCR_EXTERNAL_LIBS}) + ADD_LIBRARY(scr::scr ALIAS scr) + TARGET_LINK_LIBRARIES(scr PUBLIC ${SCR_EXTERNAL_LIBS}) + TARGET_INCLUDE_DIRECTORIES(scr PUBLIC $ $) SET_TARGET_PROPERTIES(scr PROPERTIES OUTPUT_NAME scr CLEAN_DIRECT_OUTPUT 1) - INSTALL(TARGETS scr DESTINATION ${CMAKE_INSTALL_LIBDIR}) + INSTALL(TARGETS scr EXPORT scrTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) ENDIF() ADD_LIBRARY(scr-static STATIC $) +ADD_LIBRARY(scr::scr-static ALIAS scr-static) IF(SCR_LINK_STATIC) SET_TARGET_PROPERTIES(scr-static PROPERTIES LINK_SEARCH_START_STATIC 1) SET_TARGET_PROPERTIES(scr-static PROPERTIES LINK_SEARCH_END_STATIC 1) ENDIF(SCR_LINK_STATIC) -TARGET_LINK_LIBRARIES(scr-static ${SCR_EXTERNAL_LIBS}) +TARGET_LINK_LIBRARIES(scr-static PUBLIC ${SCR_EXTERNAL_LIBS}) +TARGET_INCLUDE_DIRECTORIES(scr-static PUBLIC $ $) SET_TARGET_PROPERTIES(scr-static PROPERTIES OUTPUT_NAME scr CLEAN_DIRECT_OUTPUT 1) -INSTALL(TARGETS scr-static DESTINATION ${CMAKE_INSTALL_LIBDIR}) +INSTALL(TARGETS scr-static EXPORT scrTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) # Non-MPI library for CLI ADD_LIBRARY(scr_base STATIC $) -TARGET_LINK_LIBRARIES(scr_base ${SCR_EXTERNAL_SERIAL_LIBS}) +ADD_LIBRARY(scr::scr_base ALIAS scr_base) +TARGET_LINK_LIBRARIES(scr_base PUBLIC ${SCR_EXTERNAL_SERIAL_LIBS}) # Fortran IF(ENABLE_FORTRAN) IF(BUILD_SHARED_LIBS) ADD_LIBRARY(scrf SHARED scrf.c $) - TARGET_LINK_LIBRARIES(scrf ${SCR_EXTERNAL_LIBS}) + ADD_LIBRARY(scr::scrf ALIAS scrf) + TARGET_LINK_LIBRARIES(scrf PUBLIC ${SCR_EXTERNAL_LIBS}) SET_TARGET_PROPERTIES(scrf PROPERTIES OUTPUT_NAME scrf CLEAN_DIRECT_OUTPUT 1) - INSTALL(TARGETS scrf DESTINATION ${CMAKE_INSTALL_LIBDIR}) + INSTALL(TARGETS scrf EXPORT scrTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) ENDIF() ADD_LIBRARY(scrf-static STATIC scrf.c $) + ADD_LIBRARY(scr::scrf-static ALIAS scrf-static) IF(SCR_LINK_STATIC) SET_TARGET_PROPERTIES(scrf-static PROPERTIES LINK_SEARCH_START_STATIC 1) SET_TARGET_PROPERTIES(scrf-static PROPERTIES LINK_SEARCH_END_STATIC 1) - TARGET_LINK_LIBRARIES(scrf-static ${SCR_EXTERNAL_LIBS}) ENDIF(SCR_LINK_STATIC) - TARGET_LINK_LIBRARIES(scrf-static ${SCR_EXTERNAL_LIBS}) + TARGET_LINK_LIBRARIES(scrf-static PUBLIC ${SCR_EXTERNAL_LIBS}) SET_TARGET_PROPERTIES(scrf-static PROPERTIES OUTPUT_NAME scrf CLEAN_DIRECT_OUTPUT 1) - INSTALL(TARGETS scrf-static DESTINATION ${CMAKE_INSTALL_LIBDIR}) + INSTALL(TARGETS scrf-static EXPORT scrTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) ENDIF(ENABLE_FORTRAN) ###########