Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 51 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ endmacro()

if(OPENMC_USE_DAGMC)
find_package(DAGMC REQUIRED PATH_SUFFIXES lib/cmake)
set(OPENMC_DAGMC_DIR ${DAGMC_DIR})
if (${DAGMC_VERSION} VERSION_LESS 3.2.0)
message(FATAL_ERROR "Discovered DAGMC Version: ${DAGMC_VERSION}."
"Please update DAGMC to version 3.2.0 or greater.")
Expand All @@ -149,6 +150,7 @@ endif()
#===============================================================================

find_package(PNG)
set(OPENMC_USE_PNG ${PNG_FOUND})

#===============================================================================
# HDF5 for binary output
Expand Down Expand Up @@ -243,11 +245,18 @@ endif()
if(OPENMC_FORCE_VENDORED_LIBS)
add_subdirectory(vendor/pugixml)
set_target_properties(pugixml PROPERTIES CXX_STANDARD 14 CXX_EXTENSIONS OFF)
set(OPENMC_USES_VENDORED_PUGIXML TRUE)
set(OPENMC_PUGIXML_DIR "")
else()
find_package_write_status(pugixml)
if (NOT pugixml_FOUND)
add_subdirectory(vendor/pugixml)
set_target_properties(pugixml PROPERTIES CXX_STANDARD 14 CXX_EXTENSIONS OFF)
set(OPENMC_USES_VENDORED_PUGIXML TRUE)
set(OPENMC_PUGIXML_DIR "")
else()
set(OPENMC_USES_VENDORED_PUGIXML FALSE)
set(OPENMC_PUGIXML_DIR "${pugixml_DIR}")
endif()
endif()

Expand All @@ -258,11 +267,18 @@ endif()
if(OPENMC_FORCE_VENDORED_LIBS)
set(FMT_INSTALL ON CACHE BOOL "Generate the install target.")
add_subdirectory(vendor/fmt)
set(OPENMC_USES_VENDORED_FMT TRUE)
set(OPENMC_FMT_DIR "")
else()
find_package_write_status(fmt)
if (NOT fmt_FOUND)
set(FMT_INSTALL ON CACHE BOOL "Generate the install target.")
add_subdirectory(vendor/fmt)
set(OPENMC_USES_VENDORED_FMT TRUE)
set(OPENMC_FMT_DIR "")
else()
set(OPENMC_USES_VENDORED_FMT FALSE)
set(OPENMC_FMT_DIR "${fmt_DIR}")
endif()
endif()

Expand All @@ -274,12 +290,29 @@ if(OPENMC_FORCE_VENDORED_LIBS)
add_subdirectory(vendor/xtl)
set(xtl_DIR ${CMAKE_CURRENT_BINARY_DIR}/vendor/xtl)
add_subdirectory(vendor/xtensor)
set(OPENMC_USES_VENDORED_XTENSOR TRUE)
set(OPENMC_XTENSOR_DIR "")
set(OPENMC_XTL_DIR "")
else()
find_package_write_status(xtensor)
if (NOT xtensor_FOUND)
add_subdirectory(vendor/xtl)
set(xtl_DIR ${CMAKE_CURRENT_BINARY_DIR}/vendor/xtl)
add_subdirectory(vendor/xtensor)
set(OPENMC_USES_VENDORED_XTENSOR TRUE)
set(OPENMC_XTENSOR_DIR "")
set(OPENMC_XTL_DIR "")
else()
set(OPENMC_USES_VENDORED_XTENSOR FALSE)
set(OPENMC_XTENSOR_DIR "${xtensor_DIR}")
# xtl is a dependency of xtensor, so its DIR should be available too
if(DEFINED xtl_DIR)
set(OPENMC_XTL_DIR "${xtl_DIR}")
else()
# If xtl_DIR isn't set, it's likely in the same prefix as xtensor.
# We'll rely on the xtensor hint to find it.
set(OPENMC_XTL_DIR "${xtensor_DIR}")
endif()
endif()
endif()

Expand Down Expand Up @@ -580,9 +613,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
Expand All @@ -596,10 +627,24 @@ install(EXPORT openmc-targets
NAMESPACE OpenMC::
DESTINATION ${INSTALL_CONFIGDIR})

configure_package_config_file(
"cmake/OpenMCConfig.cmake.in"
"${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake"
INSTALL_DESTINATION ${INSTALL_CONFIGDIR}
)

write_basic_package_version_file(
"${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake"
VERSION ${OPENMC_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}/${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake"
"${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/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})
Expand Down
48 changes: 34 additions & 14 deletions cmake/OpenMCConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -1,14 +1,30 @@
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(CMakeFindDependencyMacro)

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})
if (@OPENMC_USES_VENDORED_FMT@)
find_dependency(fmt CONFIG REQUIRED HINTS "${PACKAGE_PREFIX_DIR}")
else()
find_dependency(fmt CONFIG REQUIRED HINTS "@OPENMC_FMT_DIR@")
endif()
if (@OPENMC_USES_VENDORED_PUGIXML@)
find_dependency(pugixml CONFIG REQUIRED HINTS "${PACKAGE_PREFIX_DIR}")
else()
find_dependency(pugixml CONFIG REQUIRED HINTS "@OPENMC_PUGIXML_DIR@")
endif()
if (@OPENMC_USES_VENDORED_XTENSOR@)
find_dependency(xtl CONFIG REQUIRED HINTS "${PACKAGE_PREFIX_DIR}")
else()
find_dependency(xtl CONFIG REQUIRED HINTS "@OPENMC_XTL_DIR@")
endif()
if (@OPENMC_USES_VENDORED_XTENSOR@)
find_dependency(xtensor CONFIG REQUIRED HINTS "${PACKAGE_PREFIX_DIR}")
else()
find_dependency(xtensor CONFIG REQUIRED HINTS "@OPENMC_XTENSOR_DIR@")
endif()
if(@OPENMC_USE_DAGMC@)
find_package(DAGMC REQUIRED HINTS @DAGMC_DIR@)
find_dependency(DAGMC REQUIRED HINTS @OPENMC_DAGMC_DIR@)
endif()

if(@OPENMC_USE_LIBMESH@)
Expand All @@ -18,20 +34,24 @@ 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")
if(@OPENMC_USE_PNG@)
find_dependency(PNG)
endif()

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()

include("${CMAKE_CURRENT_LIST_DIR}/OpenMCTargets.cmake")

if(NOT OpenMC_FIND_QUIETLY)
message(STATUS "Found OpenMC: ${PACKAGE_VERSION} (found in ${PACKAGE_PREFIX_DIR})")
endif()
11 changes: 0 additions & 11 deletions cmake/OpenMCConfigVersion.cmake.in

This file was deleted.

Loading