From ec77cdd23bc2cde57d3abbf06ce3d51d6a0ea746 Mon Sep 17 00:00:00 2001 From: Ahnaf Tahmid Chowdhury Date: Mon, 24 Nov 2025 13:09:29 +0600 Subject: [PATCH 1/5] use CMakePackageConfigHelpers --- CMakeLists.txt | 24 ++++++++++++++++------ cmake/OpenMCConfig.cmake.in | 33 ++++++++++++++++-------------- cmake/OpenMCConfigVersion.cmake.in | 11 ---------- 3 files changed, 36 insertions(+), 32 deletions(-) delete mode 100644 cmake/OpenMCConfigVersion.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 87b8789d101..a8d29a50cd5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -580,9 +580,7 @@ add_custom_command(TARGET libopenmc POST_BUILD #=============================================================================== # Install executable, scripts, manpage, license #=============================================================================== - -configure_file(cmake/OpenMCConfig.cmake.in "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake" @ONLY) -configure_file(cmake/OpenMCConfigVersion.cmake.in "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake" @ONLY) +include(CMakePackageConfigHelpers) set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/OpenMC) install(TARGETS openmc libopenmc @@ -596,10 +594,24 @@ install(EXPORT openmc-targets NAMESPACE OpenMC:: DESTINATION ${INSTALL_CONFIGDIR}) +configure_package_config_file( + "cmake/OpenMCConfig.cmake.in" + "${CMAKE_BINARY_DIR}/OpenMCConfig.cmake" + INSTALL_DESTINATION ${INSTALL_CONFIGDIR} +) + +write_basic_package_version_file( + "${CMAKE_BINARY_DIR}/OpenMCConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion +) + install(FILES - "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake" - "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake" - DESTINATION ${INSTALL_CONFIGDIR}) + "${CMAKE_BINARY_DIR}/OpenMCConfig.cmake" + "${CMAKE_BINARY_DIR}/OpenMCConfigVersion.cmake" + DESTINATION "${INSTALL_CONFIGDIR}" +) + install(FILES man/man1/openmc.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) install(FILES LICENSE DESTINATION "${CMAKE_INSTALL_DOCDIR}" RENAME copyright) install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) diff --git a/cmake/OpenMCConfig.cmake.in b/cmake/OpenMCConfig.cmake.in index 837a39c7833..5302309bd6e 100644 --- a/cmake/OpenMCConfig.cmake.in +++ b/cmake/OpenMCConfig.cmake.in @@ -1,14 +1,17 @@ -get_filename_component(OpenMC_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY) +@PACKAGE_INIT@ -# Compute the install prefix from this file's location -get_filename_component(_OPENMC_PREFIX "${OpenMC_CMAKE_DIR}/../../.." ABSOLUTE) +include("${CMAKE_CURRENT_LIST_DIR}/OpenMCConfigVersion.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/OpenMCTargets.cmake") -find_package(fmt CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) -find_package(pugixml CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) -find_package(xtl CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) -find_package(xtensor CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) +include(CMakeFindDependencyMacro) + +get_filename_component(_OPENMC_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) +find_dependency(fmt CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) +find_dependency(pugixml CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) +find_dependency(xtl CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) +find_dependency(xtensor CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) if(@OPENMC_USE_DAGMC@) - find_package(DAGMC REQUIRED HINTS @DAGMC_DIR@) + find_dependency(DAGMC REQUIRED HINTS @DAGMC_DIR@) endif() if(@OPENMC_USE_LIBMESH@) @@ -18,20 +21,20 @@ if(@OPENMC_USE_LIBMESH@) pkg_check_modules(LIBMESH REQUIRED @LIBMESH_PC_FILE@>=1.7.0 IMPORTED_TARGET) endif() -find_package(PNG) - -if(NOT TARGET OpenMC::libopenmc) - include("${OpenMC_CMAKE_DIR}/OpenMCTargets.cmake") -endif() +find_dependency(PNG) if(@OPENMC_USE_MPI@) - find_package(MPI REQUIRED) + find_dependency(MPI REQUIRED) endif() if(@OPENMC_USE_OPENMP@) - find_package(OpenMP REQUIRED) + find_dependency(OpenMP REQUIRED) endif() if(@OPENMC_USE_UWUW@ AND NOT ${DAGMC_BUILD_UWUW}) message(FATAL_ERROR "UWUW is enabled in OpenMC but the DAGMC installation discovered was not configured with UWUW.") endif() + +if(NOT OpenMC_FIND_QUIETLY) + message(STATUS "Found OpenMC: ${PACKAGE_VERSION} (found in ${_OPENMC_PREFIX})") +endif() \ No newline at end of file diff --git a/cmake/OpenMCConfigVersion.cmake.in b/cmake/OpenMCConfigVersion.cmake.in deleted file mode 100644 index 90d345de441..00000000000 --- a/cmake/OpenMCConfigVersion.cmake.in +++ /dev/null @@ -1,11 +0,0 @@ -set(PACKAGE_VERSION "@OPENMC_VERSION@") - -# Check whether the requested PACKAGE_FIND_VERSION is compatible -if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") - set(PACKAGE_VERSION_COMPATIBLE FALSE) -else() - set(PACKAGE_VERSION_COMPATIBLE TRUE) - if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") - set(PACKAGE_VERSION_EXACT TRUE) - endif() -endif() From 179a5914661036691beb86220697a9f20b12f1cc Mon Sep 17 00:00:00 2001 From: Ahnaf Tahmid Chowdhury Date: Mon, 24 Nov 2025 13:46:04 +0600 Subject: [PATCH 2/5] OPENMC_VERSION --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a8d29a50cd5..19581c305e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -602,7 +602,7 @@ configure_package_config_file( write_basic_package_version_file( "${CMAKE_BINARY_DIR}/OpenMCConfigVersion.cmake" - VERSION ${PROJECT_VERSION} + VERSION ${OPENMC_VERSION} COMPATIBILITY AnyNewerVersion ) From 813a46678bd33922254714bd8cd89057301725b3 Mon Sep 17 00:00:00 2001 From: Ahnaf Tahmid Chowdhury Date: Mon, 24 Nov 2025 15:55:27 +0600 Subject: [PATCH 3/5] NOT TARGET OpenMC::libopenmc --- cmake/OpenMCConfig.cmake.in | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmake/OpenMCConfig.cmake.in b/cmake/OpenMCConfig.cmake.in index 5302309bd6e..c83f5d83582 100644 --- a/cmake/OpenMCConfig.cmake.in +++ b/cmake/OpenMCConfig.cmake.in @@ -1,7 +1,9 @@ @PACKAGE_INIT@ include("${CMAKE_CURRENT_LIST_DIR}/OpenMCConfigVersion.cmake") -include("${CMAKE_CURRENT_LIST_DIR}/OpenMCTargets.cmake") +if(NOT TARGET OpenMC::libopenmc) + include("${CMAKE_CURRENT_LIST_DIR}/OpenMCTargets.cmake") +endif() include(CMakeFindDependencyMacro) From 75dc169f3f26dc252591768e0c3754b6ebf6775a Mon Sep 17 00:00:00 2001 From: Ahnaf Tahmid Chowdhury Date: Mon, 24 Nov 2025 20:15:55 +0600 Subject: [PATCH 4/5] fix paths --- CMakeLists.txt | 8 ++++---- cmake/OpenMCConfig.cmake.in | 4 +--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 19581c305e1..59e35fd9ecb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -596,19 +596,19 @@ install(EXPORT openmc-targets configure_package_config_file( "cmake/OpenMCConfig.cmake.in" - "${CMAKE_BINARY_DIR}/OpenMCConfig.cmake" + "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake" INSTALL_DESTINATION ${INSTALL_CONFIGDIR} ) write_basic_package_version_file( - "${CMAKE_BINARY_DIR}/OpenMCConfigVersion.cmake" + "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake" VERSION ${OPENMC_VERSION} COMPATIBILITY AnyNewerVersion ) install(FILES - "${CMAKE_BINARY_DIR}/OpenMCConfig.cmake" - "${CMAKE_BINARY_DIR}/OpenMCConfigVersion.cmake" + "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake" + "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake" DESTINATION "${INSTALL_CONFIGDIR}" ) diff --git a/cmake/OpenMCConfig.cmake.in b/cmake/OpenMCConfig.cmake.in index c83f5d83582..5302309bd6e 100644 --- a/cmake/OpenMCConfig.cmake.in +++ b/cmake/OpenMCConfig.cmake.in @@ -1,9 +1,7 @@ @PACKAGE_INIT@ include("${CMAKE_CURRENT_LIST_DIR}/OpenMCConfigVersion.cmake") -if(NOT TARGET OpenMC::libopenmc) - include("${CMAKE_CURRENT_LIST_DIR}/OpenMCTargets.cmake") -endif() +include("${CMAKE_CURRENT_LIST_DIR}/OpenMCTargets.cmake") include(CMakeFindDependencyMacro) From dac5a41468dec9777442f302140d7d0956bd973c Mon Sep 17 00:00:00 2001 From: Ahnaf Tahmid Chowdhury Date: Tue, 25 Nov 2025 15:08:08 +0600 Subject: [PATCH 5/5] move target last --- cmake/OpenMCConfig.cmake.in | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/cmake/OpenMCConfig.cmake.in b/cmake/OpenMCConfig.cmake.in index 5302309bd6e..796816f2ae6 100644 --- a/cmake/OpenMCConfig.cmake.in +++ b/cmake/OpenMCConfig.cmake.in @@ -1,15 +1,12 @@ @PACKAGE_INIT@ include("${CMAKE_CURRENT_LIST_DIR}/OpenMCConfigVersion.cmake") -include("${CMAKE_CURRENT_LIST_DIR}/OpenMCTargets.cmake") - include(CMakeFindDependencyMacro) -get_filename_component(_OPENMC_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) -find_dependency(fmt CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) -find_dependency(pugixml CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) -find_dependency(xtl CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) -find_dependency(xtensor CONFIG REQUIRED HINTS ${_OPENMC_PREFIX}) +find_dependency(fmt CONFIG REQUIRED HINTS ${PACKAGE_PREFIX_DIR}) +find_dependency(pugixml CONFIG REQUIRED HINTS ${PACKAGE_PREFIX_DIR}) +find_dependency(xtl CONFIG REQUIRED HINTS ${PACKAGE_PREFIX_DIR}) +find_dependency(xtensor CONFIG REQUIRED HINTS ${PACKAGE_PREFIX_DIR}) if(@OPENMC_USE_DAGMC@) find_dependency(DAGMC REQUIRED HINTS @DAGMC_DIR@) endif() @@ -35,6 +32,8 @@ if(@OPENMC_USE_UWUW@ AND NOT ${DAGMC_BUILD_UWUW}) message(FATAL_ERROR "UWUW is enabled in OpenMC but the DAGMC installation discovered was not configured with UWUW.") endif() +include("${CMAKE_CURRENT_LIST_DIR}/OpenMCTargets.cmake") + if(NOT OpenMC_FIND_QUIETLY) - message(STATUS "Found OpenMC: ${PACKAGE_VERSION} (found in ${_OPENMC_PREFIX})") + message(STATUS "Found OpenMC: ${PACKAGE_VERSION} (found in ${PACKAGE_PREFIX_DIR})") endif() \ No newline at end of file