Skip to content

Commit dfb6c56

Browse files
Modernize CMake packaging (#3653)
Co-authored-by: Paul Romano <paul.k.romano@gmail.com>
1 parent 7d09a12 commit dfb6c56

3 files changed

Lines changed: 40 additions & 29 deletions

File tree

CMakeLists.txt

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -611,9 +611,7 @@ add_custom_command(TARGET libopenmc POST_BUILD
611611
#===============================================================================
612612
# Install executable, scripts, manpage, license
613613
#===============================================================================
614-
615-
configure_file(cmake/OpenMCConfig.cmake.in "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake" @ONLY)
616-
configure_file(cmake/OpenMCConfigVersion.cmake.in "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake" @ONLY)
614+
include(CMakePackageConfigHelpers)
617615

618616
set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/OpenMC)
619617
install(TARGETS openmc libopenmc
@@ -627,10 +625,24 @@ install(EXPORT openmc-targets
627625
NAMESPACE OpenMC::
628626
DESTINATION ${INSTALL_CONFIGDIR})
629627

628+
configure_package_config_file(
629+
"cmake/OpenMCConfig.cmake.in"
630+
"${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake"
631+
INSTALL_DESTINATION ${INSTALL_CONFIGDIR}
632+
)
633+
634+
write_basic_package_version_file(
635+
"${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake"
636+
VERSION ${OPENMC_VERSION}
637+
COMPATIBILITY AnyNewerVersion
638+
)
639+
630640
install(FILES
631-
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake"
632-
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake"
633-
DESTINATION ${INSTALL_CONFIGDIR})
641+
"${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake"
642+
"${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake"
643+
DESTINATION "${INSTALL_CONFIGDIR}"
644+
)
645+
634646
install(FILES man/man1/openmc.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
635647
install(FILES LICENSE DESTINATION "${CMAKE_INSTALL_DOCDIR}" RENAME copyright)
636648
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

cmake/OpenMCConfig.cmake.in

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
1-
get_filename_component(OpenMC_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY)
1+
@PACKAGE_INIT@
22

3-
# Compute the install prefix from this file's location
4-
get_filename_component(_OPENMC_PREFIX "${OpenMC_CMAKE_DIR}/../../.." ABSOLUTE)
3+
include("${CMAKE_CURRENT_LIST_DIR}/OpenMCConfigVersion.cmake")
4+
include(CMakeFindDependencyMacro)
5+
6+
# Explicitly calculate prefix if it was not generated above
7+
if(NOT DEFINED PACKAGE_PREFIX_DIR)
8+
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE)
9+
endif()
10+
11+
find_dependency(fmt CONFIG REQUIRED HINTS ${PACKAGE_PREFIX_DIR})
12+
find_dependency(pugixml CONFIG REQUIRED HINTS ${PACKAGE_PREFIX_DIR})
513

6-
find_package(fmt CONFIG REQUIRED HINTS ${_OPENMC_PREFIX})
7-
find_package(pugixml CONFIG REQUIRED HINTS ${_OPENMC_PREFIX})
814
if(@OPENMC_USE_DAGMC@)
9-
find_package(DAGMC REQUIRED HINTS @DAGMC_DIR@)
15+
find_dependency(DAGMC REQUIRED HINTS @DAGMC_DIR@)
1016
endif()
1117

1218
if(@OPENMC_USE_LIBMESH@)
@@ -16,20 +22,24 @@ if(@OPENMC_USE_LIBMESH@)
1622
pkg_check_modules(LIBMESH REQUIRED @LIBMESH_PC_FILE@>=1.7.0 IMPORTED_TARGET)
1723
endif()
1824

19-
find_package(PNG)
20-
21-
if(NOT TARGET OpenMC::libopenmc)
22-
include("${OpenMC_CMAKE_DIR}/OpenMCTargets.cmake")
25+
if("@PNG_FOUND@")
26+
find_dependency(PNG)
2327
endif()
2428

2529
if(@OPENMC_USE_MPI@)
26-
find_package(MPI REQUIRED)
30+
find_dependency(MPI REQUIRED)
2731
endif()
2832

2933
if(@OPENMC_USE_OPENMP@)
30-
find_package(OpenMP REQUIRED)
34+
find_dependency(OpenMP REQUIRED)
3135
endif()
3236

3337
if(@OPENMC_USE_UWUW@ AND NOT ${DAGMC_BUILD_UWUW})
3438
message(FATAL_ERROR "UWUW is enabled in OpenMC but the DAGMC installation discovered was not configured with UWUW.")
3539
endif()
40+
41+
include("${CMAKE_CURRENT_LIST_DIR}/OpenMCTargets.cmake")
42+
43+
if(NOT OpenMC_FIND_QUIETLY)
44+
message(STATUS "Found OpenMC: ${PACKAGE_VERSION} (found in ${PACKAGE_PREFIX_DIR})")
45+
endif()

cmake/OpenMCConfigVersion.cmake.in

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)