Skip to content

Commit

Permalink
fixup: install for downstream packages
Browse files Browse the repository at this point in the history
  • Loading branch information
streeve committed Jan 23, 2025
1 parent 42435bb commit 28f5711
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 3 deletions.
9 changes: 9 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,17 @@ endif(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CXX_FLAGS)

option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF)
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

write_basic_package_version_file("CabanaPDConfigVersion.cmake"
VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CabanaPD_Config.cmakein
${CMAKE_CURRENT_BINARY_DIR}/CabanaPDConfig.cmake @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CabanaPDConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/CabanaPDConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_DATADIR}/cmake/CabanaPD)

##---------------------------------------------------------------------------##
# Set up main options (inherit from Kokkos and Cabana CMake)
##---------------------------------------------------------------------------##
Expand All @@ -34,6 +42,7 @@ if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.24")
endif()
find_package(nlohmann_json 3.10.0 QUIET)
if(NOT NLOHMANN_JSON_FOUND)
set(CabanaPD_INTERNAL_JSON ON)
include(FetchContent)
# Using most recent release here
FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz)
Expand Down
6 changes: 5 additions & 1 deletion cmake/CabanaPD_Config.cmakein
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
include(CMakeFindDependencyMacro)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}" )
list(APPEND CMAKE_PREFIX_PATH @CMAKE_PREFIX_PATH@)
find_dependency(Cabana REQUIRED)
find_dependency(Cabana REQUIRED COMPONENTS Core Grid)
if(NOT CabanaPD_INTERNAL_JSON)
find_dependency(nlohmann_json REQUIRED)
endif()
include("${CMAKE_CURRENT_LIST_DIR}/CabanaPD_Targets.cmake")
21 changes: 19 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,28 @@ install(FILES ${FORCE_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/force)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CabanaPD_config.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

add_library(CabanaPD INTERFACE)
add_library(CabanaPD::CabanaPD ALIAS CabanaPD)

target_include_directories(CabanaPD INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}
target_include_directories(CabanaPD INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)

target_link_libraries(CabanaPD INTERFACE Cabana::Core Cabana::Grid nlohmann_json::nlohmann_json)

install(TARGETS CabanaPD DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(TARGETS CabanaPD
EXPORT CabanaPD_Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
# In this case we're using an internal copy of json so we need to install for downstream use.
if(CabanaPD_INTERNAL_JSON)
install(TARGETS nlohmann_json
EXPORT CabanaPD_Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()

install(EXPORT CabanaPD_Targets
FILE CabanaPD_Targets.cmake
NAMESPACE CabanaPD::
DESTINATION ${CMAKE_INSTALL_DATADIR}/cmake/CabanaPD)

0 comments on commit 28f5711

Please sign in to comment.