Skip to content

Commit

Permalink
Use CMake package helpers
Browse files Browse the repository at this point in the history
  • Loading branch information
daboehme committed Mar 29, 2024
1 parent df3a893 commit d7dead0
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 90 deletions.
71 changes: 48 additions & 23 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,7 @@ endif()
if (WITH_LDMS)
include(FindLDMS)
if (LDMS_FOUND)
set(CALIPER_HAVE_LDMS TRUE)
set(CALIPER_HAVE_LDMS TRUE)
set(CALIPER_LDMS_CMAKE_MSG "Yes, using ${LDMS_LIBLDMS} ${LDMS_LIBSTREAM}")
list(APPEND CALIPER_EXTERNAL_LIBS ${LDMS_LIBLDMS} ${LDMS_LIBSTREAM})
message("Include Directory: ${LDMS_INCLUDE_DIRS}")
Expand All @@ -473,7 +473,19 @@ configure_file(
include_directories(${PROJECT_BINARY_DIR}/include)
include_directories(include)

if(INSTALL_HEADERS)
add_subdirectory(ext)
add_subdirectory(src)

add_subdirectory(examples/apps EXCLUDE_FROM_ALL)

if (BUILD_TESTING)
add_subdirectory(test)
endif()
if (BUILD_DOCS)
add_subdirectory(doc EXCLUDE_FROM_ALL)
endif()

if (INSTALL_HEADERS)
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.h")
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
Expand All @@ -495,7 +507,7 @@ if(INSTALL_HEADERS)
endif()
endif()

if(INSTALL_CONFIG)
if (INSTALL_CONFIG)
# Create pkg-config .pc file
set(PKG_CONFIG_INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
set(PKG_CONFIG_LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}")
Expand All @@ -506,31 +518,44 @@ if(INSTALL_CONFIG)
${PROJECT_SOURCE_DIR}/caliper.pc.in
${PROJECT_BINARY_DIR}/caliper.pc)

# Make caliper findable for cmake
configure_file(
${PROJECT_SOURCE_DIR}/caliper-config.cmake.in
${PROJECT_BINARY_DIR}/caliper-config.cmake
@ONLY)
include(CMakePackageConfigHelpers)

install(FILES ${PROJECT_BINARY_DIR}/caliper-config.cmake
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/caliper)
install(EXPORT caliper-targets
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/caliper)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/caliper-config-version.cmake"
VERSION
${LIBTOOL_INTERFACE}.${LIBTOOL_REVISION}.${LIBTOOL_AGE}
COMPATIBILITY
SameMajorVersion
)

install(FILES ${PROJECT_BINARY_DIR}/caliper.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/caliper-config.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/caliper-config.cmake"
INSTALL_DESTINATION
${CMAKE_INSTALL_DATAROOTDIR}/cmake/caliper
)

add_subdirectory(ext)
add_subdirectory(src)
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/caliper-config-version.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/caliper-config.cmake"
DESTINATION
"${CMAKE_INSTALL_DATAROOTDIR}/cmake/caliper"
)

add_subdirectory(examples/apps EXCLUDE_FROM_ALL)
install(
EXPORT
caliper-targets
DESTINATION
"${CMAKE_INSTALL_DATAROOTDIR}/cmake/caliper"
)

if (BUILD_TESTING)
add_subdirectory(test)
endif()
if (BUILD_DOCS)
add_subdirectory(doc EXCLUDE_FROM_ALL)
install(
FILES
${PROJECT_BINARY_DIR}/caliper.pc
DESTINATION
${CMAKE_INSTALL_LIBDIR}/pkgconfig
)
endif()

#
Expand Down
74 changes: 21 additions & 53 deletions caliper-config.cmake.in
Original file line number Diff line number Diff line change
@@ -1,58 +1,26 @@
# - caliper: Context Annotation Library
#
#=============================================================================
# Caliper is a program instrumentation and performance measurement
# framework. It provides data collection mechanisms and a source-code
# annotation API for a variety of performance engineering use cases,
# e.g., performance profiling, tracing, monitoring, and
# auto-tuning.
#
#=== Usage ===================================================================
# This file allows caliper to be automatically detected by other libraries
# using CMake. To build with caliper, you can do one of two things:
#
# 1. Set the caliper_DIR environment variable to the root of the Caliper
# installation. If you loaded caliper through a dotkit, this may already
# be set, and caliper will be autodetected by CMake.
#
# 2. Configure your project with this option:
# -Dcaliper_DIR=<caliper install prefix>/share/
#
# If you have done either of these things, then CMake should automatically find
# and include this file when you call find_package(caliper) from your
# CMakeLists.txt file.
#
#=== Components ==============================================================
# (David's TO DO)
#
# To link against these, just do, for example:
#
# find_package(caliper REQUIRED)
# add_executable(foo foo.c)
# target_link_libraries(foo caliper)
#
# That's all!
#
if (NOT caliper_CONFIG_LOADED)
set(caliper_CONFIG_LOADED TRUE)
@PACKAGE_INIT@

# Install layout
set(caliper_INSTALL_PREFIX @CMAKE_INSTALL_PREFIX@)
set(caliper_INCLUDE_DIR @CMAKE_INSTALL_FULL_INCLUDEDIR@)
set(caliper_LIB_DIR @CMAKE_INSTALL_FULL_LIBDIR@)
set(caliper_CMAKE_DIR @CMAKE_INSTALL_FULL_DATADIR@/cmake/caliper)
include(CMakeFindDependencyMacro)

# Includes needed to use caliper
set(caliper_INCLUDE_PATH ${caliper_INCLUDE_DIR})
set(caliper_LIB_PATH ${caliper_LIB_DIR})
include("${CMAKE_CURRENT_LIST_DIR}/caliper-targets.cmake")

include(CMakeFindDependencyMacro)
find_dependency(Threads)

if (@CALIPER_HAVE_ADIAK@)
find_dependency(adiak)
if (@CALIPER_HAVE_ADIAK@)
if (NOT TARGET adiak::adiak)
set(CALIPER_ADIAK_DIR @adiak_DIR@)
if (NOT adiak_DIR)
set(adiak_DIR ${CALIPER_ADIAK_DIR})
endif()
find_dependency(
adiak
CONFIG
NO_DEFAULT_PATH
PATHS
${adiak_DIR}
${adiak_DIR}/lib/cmake/adiak
${PACKAGE_PREFIX_DIR}
${PACKAGE_PREFIX_DIR}/lib/cmake/adiak
)
endif()

# Library targets imported from file
include(${caliper_CMAKE_DIR}/caliper-targets.cmake)
endif()

check_required_components(caliper)
21 changes: 12 additions & 9 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,6 @@ set_target_properties(caliper PROPERTIES VERSION ${CALIPER_VERSION})

target_compile_features(caliper PUBLIC cxx_std_11)

target_include_directories(
caliper
INTERFACE
"$<INSTALL_INTERFACE:include>")

if (CALIPER_HAVE_MPI)
target_link_libraries(caliper PUBLIC ${MPI_CXX_LIBRARIES})
endif()
Expand All @@ -57,7 +52,15 @@ if (WITH_TOOLS)
add_subdirectory(tools)
endif()

install(TARGETS caliper
EXPORT caliper-targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(
TARGETS
caliper
EXPORT
caliper-targets
ARCHIVE DESTINATION
${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION
${CMAKE_INSTALL_LIBDIR}
INCLUDES DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}
)
18 changes: 13 additions & 5 deletions src/tools/util/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
set(CALIPER_TOOLS_UTIL_SOURCES
Args.cpp)
Args.cpp)

add_library(caliper-tools-util ${CALIPER_TOOLS_UTIL_SOURCES})

Expand All @@ -8,7 +8,15 @@ target_compile_features(caliper-tools-util PUBLIC cxx_std_11)
set_target_properties(caliper-tools-util PROPERTIES SOVERSION ${CALIPER_MAJOR_VERSION})
set_target_properties(caliper-tools-util PROPERTIES VERSION ${CALIPER_VERSION})

install(TARGETS caliper-tools-util
EXPORT caliper-targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(
TARGETS
caliper-tools-util
EXPORT
caliper-targets
ARCHIVE DESTINATION
${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION
${CMAKE_INSTALL_LIBDIR}
INCLUDES DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}
)

0 comments on commit d7dead0

Please sign in to comment.