diff --git a/CMakeLists.txt b/CMakeLists.txt index 35a75aa69..1534c8d2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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}") @@ -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} @@ -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}") @@ -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() # diff --git a/caliper-config.cmake.in b/caliper-config.cmake.in index 51177c861..600c1b167 100644 --- a/caliper-config.cmake.in +++ b/caliper-config.cmake.in @@ -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=/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) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0a5c8642d..932ab6e6a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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 - "$") - if (CALIPER_HAVE_MPI) target_link_libraries(caliper PUBLIC ${MPI_CXX_LIBRARIES}) endif() @@ -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} +) diff --git a/src/tools/util/CMakeLists.txt b/src/tools/util/CMakeLists.txt index 13d0ecfc0..2e76a4f35 100644 --- a/src/tools/util/CMakeLists.txt +++ b/src/tools/util/CMakeLists.txt @@ -1,5 +1,5 @@ set(CALIPER_TOOLS_UTIL_SOURCES - Args.cpp) + Args.cpp) add_library(caliper-tools-util ${CALIPER_TOOLS_UTIL_SOURCES}) @@ -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} +)