From 4d0d04cc2ddbec7e31329b5504fbfe650a5661da Mon Sep 17 00:00:00 2001 From: Stepan Vanecek Date: Tue, 5 Sep 2023 11:50:30 +0200 Subject: [PATCH 1/2] configure_package_config_file + EXPORT sys-sage-targets --- CMakeLists.txt | 27 ++++++------ ...> sys-sage-config-version.cmake.in.unused} | 0 pkg/sys-sage-config.cmake.in | 22 ++++++---- src/CMakeLists.txt | 42 ++++++++++++------- 4 files changed, 55 insertions(+), 36 deletions(-) rename pkg/{sys-sage-config-version.cmake.in => sys-sage-config-version.cmake.in.unused} (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a9ed34..85092cc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,16 +11,15 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") endif() endif() -project(sys-sage VERSION 0.4.0 LANGUAGES C CXX ) -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}") +project(sys-sage VERSION 0.4.2 LANGUAGES C CXX ) +#set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}") -#### +#### dependencies find_package(LibXml2 REQUIRED) # Use pkg-config via the LibXml2 find-module execute_process(COMMAND xml2-config --cflags OUTPUT_VARIABLE LIBXML_F OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND xml2-config --libs OUTPUT_VARIABLE LIBXML_L OUTPUT_STRIP_TRAILING_WHITESPACE) include_directories(${LIBXML_F}) link_libraries(${LIBXML_L}) - include_directories(${LIBXML2_INCLUDE_DIR}) include_directories(${LIBXML2_INCLUDE_DIRS}) link_libraries(${LIBXML2_LIBRARY}) @@ -39,18 +38,22 @@ endif() # Create and install package configuration and version files. -configure_file(${sys-sage_SOURCE_DIR}/pkg/sys-sage-config.cmake.in - ${sys-sage_BINARY_DIR}/pkg/sys-sage-config.cmake @ONLY) -configure_file(${sys-sage_SOURCE_DIR}/pkg/sys-sage-config-version.cmake.in - ${sys-sage_BINARY_DIR}/pkg/sys-sage-config-version.cmake @ONLY) +include(CMakePackageConfigHelpers) +configure_package_config_file(${sys-sage_SOURCE_DIR}/pkg/sys-sage-config.cmake.in + ${sys-sage_BINARY_DIR}/pkg/sys-sage-config.cmake + INSTALL_DESTINATION lib/cmake/sys-sage) +#configure_package_config_file(${sys-sage_SOURCE_DIR}/pkg/sys-sage-config-version.cmake.in +# ${sys-sage_BINARY_DIR}/pkg/sys-sage-config-version.cmake +# INSTALL_DESTINATION lib/cmake/sys-sage) +install(FILES ${sys-sage_BINARY_DIR}/pkg/sys-sage-config.cmake + #${sys-sage_BINARY_DIR}/pkg/sys-sage-config-version.cmake + DESTINATION lib/cmake/sys-sage) + configure_file(${sys-sage_SOURCE_DIR}/pkg/sys-sage.pc.in ${sys-sage_BINARY_DIR}/pkg/sys-sage.pc @ONLY) - install(FILES ${sys-sage_BINARY_DIR}/pkg/sys-sage.pc DESTINATION lib) -install(FILES ${sys-sage_BINARY_DIR}/pkg/sys-sage-config.cmake - ${sys-sage_BINARY_DIR}/pkg/sys-sage-config-version.cmake - DESTINATION lib/cmake/sys-sage) + ###Options: diff --git a/pkg/sys-sage-config-version.cmake.in b/pkg/sys-sage-config-version.cmake.in.unused similarity index 100% rename from pkg/sys-sage-config-version.cmake.in rename to pkg/sys-sage-config-version.cmake.in.unused diff --git a/pkg/sys-sage-config.cmake.in b/pkg/sys-sage-config.cmake.in index 04ad400..5ed8fbd 100644 --- a/pkg/sys-sage-config.cmake.in +++ b/pkg/sys-sage-config.cmake.in @@ -1,10 +1,16 @@ -# Compute installation prefix relative to this file. -get_filename_component(_dir "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_prefix "${_dir}/.." ABSOLUTE) -# Import the targets. -#include("${_prefix}/lib/sys-sage-targets.cmake") -# Report other information. -set(sys-sage_LIBRARIES "${_prefix}/lib/libsys-sage.so") -set(sys-sage_INCLUDE_DIRS "${_prefix}/inc ") +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) +find_dependency(LibXml2) +if(NVIDIA_MIG) + find_dependency(CUDAToolkit 10.0) +endif() +if(DATA_SOURCES OR DS_HWLOC) + find_dependency(HWLOC) +endif() + +include("${CMAKE_CURRENT_LIST_DIR}/sys-sage-targets.cmake") + +check_required_components(sys-sage) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6e55bc1..54e0049 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -30,25 +30,35 @@ set(HEADERS add_library(sys-sage SHARED ${SOURCES} ${HEADERS}) -set_target_properties(sys-sage PROPERTIES -# PUBLIC_HEADER "sys-sage.hpp;Topology.hpp;DataPath.hpp;xml_dump.hpp;parsers/hwloc.hpp;parsers/caps-numa-benchmark.hpp;parsers/gpu-topo.hpp" - VERSION ${PROJECT_VERSION} - SOVERSION 1 +target_include_directories(sys-sage PUBLIC + $ + $ + $ +) +install( + TARGETS sys-sage + EXPORT sys-sage-targets + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib/cmake/lib + ARCHIVE DESTINATION lib/cmake/lib +) +#for spack +install( + EXPORT sys-sage-targets + FILE sys-sage-targets.cmake + DESTINATION lib/cmake/sys-sage + NAMESPACE sys-sage:: ) - -target_include_directories(sys-sage PRIVATE .) - install(DIRECTORY "." - DESTINATION inc + DESTINATION lib/cmake/inc FILES_MATCHING PATTERN "*.hpp") -install(TARGETS sys-sage - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} -# PUBLIC_HEADER DESTINATION inc - ARCHIVE DESTINATION lib) -#for spack +install( + TARGETS sys-sage + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) install(DIRECTORY "." - DESTINATION lib/cmake/inc + DESTINATION inc FILES_MATCHING PATTERN "*.hpp") -install(TARGETS sys-sage - LIBRARY DESTINATION lib/cmake/lib) From e5b4564e0f58a43d70fba6b4f2d0877722e024ec Mon Sep 17 00:00:00 2001 From: Stepan Vanecek Date: Tue, 5 Sep 2023 12:03:08 +0200 Subject: [PATCH 2/2] TODO: options not automatically included with find_dependency --- pkg/sys-sage-config.cmake.in | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/sys-sage-config.cmake.in b/pkg/sys-sage-config.cmake.in index 5ed8fbd..6338d48 100644 --- a/pkg/sys-sage-config.cmake.in +++ b/pkg/sys-sage-config.cmake.in @@ -4,6 +4,7 @@ include(CMakeFindDependencyMacro) find_dependency(LibXml2) +#TODO: the conditional options NVIDIA_MIG, DS_HWLOC will have to be set at the user's side (or the libraries present..) -- this should be included automatically if the options are set when building/installing if(NVIDIA_MIG) find_dependency(CUDAToolkit 10.0) endif()