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/9] 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/9] 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/9] 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/9] 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/9] 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 From d37b5e48f65be3ce22d6f3ddd6f5981acb09310d Mon Sep 17 00:00:00 2001 From: Ahnaf Tahmid Chowdhury Date: Fri, 6 Feb 2026 00:00:16 +0600 Subject: [PATCH 6/9] Explicitly calculate prefix if not generated --- cmake/OpenMCConfig.cmake.in | 5 +++++ vendor/DAGMC | 1 + 2 files changed, 6 insertions(+) create mode 160000 vendor/DAGMC diff --git a/cmake/OpenMCConfig.cmake.in b/cmake/OpenMCConfig.cmake.in index 796816f2ae6..d595c05761e 100644 --- a/cmake/OpenMCConfig.cmake.in +++ b/cmake/OpenMCConfig.cmake.in @@ -3,6 +3,11 @@ include("${CMAKE_CURRENT_LIST_DIR}/OpenMCConfigVersion.cmake") include(CMakeFindDependencyMacro) +# Explicitly calculate prefix if not generated by @PACKAGE_INIT@ +if(NOT DEFINED PACKAGE_PREFIX_DIR) + get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) +endif() + 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}) diff --git a/vendor/DAGMC b/vendor/DAGMC new file mode 160000 index 00000000000..a435d0647f3 --- /dev/null +++ b/vendor/DAGMC @@ -0,0 +1 @@ +Subproject commit a435d0647f3e3e19f9161a42b4bbbdb4be65bf65 From 12c50b5ab625b96a14bfac6257d27fe349a4bd50 Mon Sep 17 00:00:00 2001 From: Ahnaf Tahmid Chowdhury Date: Thu, 19 Mar 2026 00:37:13 +0600 Subject: [PATCH 7/9] remove DAGMC vendor --- vendor/DAGMC | 1 - vendor/xtensor | 1 + vendor/xtl | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) delete mode 160000 vendor/DAGMC create mode 160000 vendor/xtensor create mode 160000 vendor/xtl diff --git a/vendor/DAGMC b/vendor/DAGMC deleted file mode 160000 index a435d0647f3..00000000000 --- a/vendor/DAGMC +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a435d0647f3e3e19f9161a42b4bbbdb4be65bf65 diff --git a/vendor/xtensor b/vendor/xtensor new file mode 160000 index 00000000000..3634f2ded19 --- /dev/null +++ b/vendor/xtensor @@ -0,0 +1 @@ +Subproject commit 3634f2ded19e0cf38208c8b86cea9e1d7c8e397d diff --git a/vendor/xtl b/vendor/xtl new file mode 160000 index 00000000000..a7c1c5444df --- /dev/null +++ b/vendor/xtl @@ -0,0 +1 @@ +Subproject commit a7c1c5444dfc57f76620391af4c94785ff82c8d6 From 32f644132a5eb90c458a976989ac00542447b469 Mon Sep 17 00:00:00 2001 From: Ahnaf Tahmid Chowdhury Date: Thu, 19 Mar 2026 00:38:25 +0600 Subject: [PATCH 8/9] remove xtl, xtensor --- vendor/xtensor | 1 - vendor/xtl | 1 - 2 files changed, 2 deletions(-) delete mode 160000 vendor/xtensor delete mode 160000 vendor/xtl diff --git a/vendor/xtensor b/vendor/xtensor deleted file mode 160000 index 3634f2ded19..00000000000 --- a/vendor/xtensor +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3634f2ded19e0cf38208c8b86cea9e1d7c8e397d diff --git a/vendor/xtl b/vendor/xtl deleted file mode 160000 index a7c1c5444df..00000000000 --- a/vendor/xtl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a7c1c5444dfc57f76620391af4c94785ff82c8d6 From 5828c2742840561903c3df7195789ff8f770d171 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 21 May 2026 14:35:10 -0500 Subject: [PATCH 9/9] Add guard on find_dependency(PNG) --- cmake/OpenMCConfig.cmake.in | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cmake/OpenMCConfig.cmake.in b/cmake/OpenMCConfig.cmake.in index 1f98ac955d3..0e15060a37e 100644 --- a/cmake/OpenMCConfig.cmake.in +++ b/cmake/OpenMCConfig.cmake.in @@ -3,7 +3,7 @@ include("${CMAKE_CURRENT_LIST_DIR}/OpenMCConfigVersion.cmake") include(CMakeFindDependencyMacro) -# Explicitly calculate prefix if not generated by @PACKAGE_INIT@ +# Explicitly calculate prefix if it was not generated above if(NOT DEFINED PACKAGE_PREFIX_DIR) get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) endif() @@ -22,7 +22,9 @@ if(@OPENMC_USE_LIBMESH@) pkg_check_modules(LIBMESH REQUIRED @LIBMESH_PC_FILE@>=1.7.0 IMPORTED_TARGET) endif() -find_dependency(PNG) +if("@PNG_FOUND@") + find_dependency(PNG) +endif() if(@OPENMC_USE_MPI@) find_dependency(MPI REQUIRED) @@ -40,4 +42,4 @@ include("${CMAKE_CURRENT_LIST_DIR}/OpenMCTargets.cmake") if(NOT OpenMC_FIND_QUIETLY) message(STATUS "Found OpenMC: ${PACKAGE_VERSION} (found in ${PACKAGE_PREFIX_DIR})") -endif() \ No newline at end of file +endif()