diff --git a/CMakeLists.txt b/CMakeLists.txt index 16210f5b32..da6eb1546f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -217,13 +217,6 @@ install(TARGETS smith DESTINATION lib ) -if (SMITH_ENABLE_CODEVELOP) - install(TARGETS mfem ${axom_exported_targets} ${tribol_exported_targets} - EXPORT smith-targets - DESTINATION lib - ) -endif() - install(EXPORT smith-targets NAMESPACE smith:: DESTINATION lib/cmake diff --git a/axom b/axom index c9ece91085..aa57421481 160000 --- a/axom +++ b/axom @@ -1 +1 @@ -Subproject commit c9ece910855f61506a7cd3623a7f2fa4fe3505e0 +Subproject commit aa574214814ff7ec03258b188cce7e6e8e15b141 diff --git a/cmake/smith-config.cmake.in b/cmake/smith-config.cmake.in index b38982dca2..01e6e20663 100644 --- a/cmake/smith-config.cmake.in +++ b/cmake/smith-config.cmake.in @@ -50,7 +50,7 @@ if(NOT SMITH_FOUND) set(SMITH_USE_SUNDIALS @SMITH_USE_SUNDIALS@) set(SMITH_USE_TRIBOL @SMITH_USE_TRIBOL@) set(SMITH_USE_UMPIRE @SMITH_USE_UMPIRE@) - + set(SMITH_ADIAK_DIR "@ADIAK_DIR@") set(SMITH_ARPACK_DIR "@ARPACK_DIR@") set(SMITH_AXOM_DIR "@AXOM_DIR@") @@ -69,19 +69,14 @@ if(NOT SMITH_FOUND) set(SMITH_UMPIRE_DIR "@UMPIRE_DIR@") # TPLs that are be included in our build - set(SMITH_CONTINUATION_DIR "@SMITH_INSTALL_PREFIX@") - set(SMITH_GRETL_DIR "@SMITH_INSTALL_PREFIX@") + set(SMITH_CONTINUATION_DIR "${SMITH_INSTALL_PREFIX}") + set(SMITH_GRETL_DIR "${SMITH_INSTALL_PREFIX}") # Tribol may be included in our build - if(SMITH_USE_TRIBOL AND NOT SMITH_TRIBOL_DIR) - set(SMITH_TRIBOL_DIR "@SMITH_INSTALL_PREFIX@") - set(_tribol_included TRUE) - else() - set(_tribol_included FALSE) - endif() - - if (NOT BLT_LOADED) - include("${CMAKE_CURRENT_LIST_DIR}/BLTInstallableMacros.cmake") + if(SMITH_USE_TRIBOL) + if (SMITH_ENABLE_CODEVELOP OR NOT SMITH_TRIBOL_DIR) + set(SMITH_TRIBOL_DIR "${SMITH_INSTALL_PREFIX}") + endif() endif() # Codevelop TPLs are installed alongside Smith @@ -90,6 +85,10 @@ if(NOT SMITH_FOUND) set(SMITH_MFEM_DIR "${SMITH_INSTALL_PREFIX}") endif() + if (NOT BLT_LOADED) + include("${CMAKE_CURRENT_LIST_DIR}/BLTInstallableMacros.cmake") + endif() + # Set to real variable unless user overrode it foreach(dep @SMITH_TPL_DEPS@) if (NOT ${dep}_DIR) @@ -113,7 +112,7 @@ if(NOT SMITH_FOUND) endif() # ARPACK - if(SMITH_USE_ARPACK) + if(SMITH_USE_ARPACK AND NOT TARGET arpack) blt_import_library(NAME arpack INCLUDES @ARPACK_INCLUDE_DIRS@ LIBRARIES @ARPACK_LIBRARIES@ @@ -151,6 +150,14 @@ if(NOT SMITH_FOUND) find_dependency(raja REQUIRED PATHS "${RAJA_DIR}") endif() + # Strumpack + if (SMITH_USE_STRUMPACK) + find_dependency(strumpack CONFIG + PATHS "${STRUMPACK_DIR}" + "${STRUMPACK_DIR}/lib/cmake/STRUMPACK" + "${STRUMPACK_DIR}/lib64/cmake/STRUMPACK") + endif() + # MFEM if(SMITH_USE_MFEM AND NOT TARGET mfem) set(SMITH_MFEM_BUILT_WITH_CMAKE @MFEM_BUILT_WITH_CMAKE@) @@ -178,6 +185,11 @@ if(NOT SMITH_FOUND) find_dependency(Enzyme REQUIRED REQUIRED NO_DEFAULT_PATH PATHS "${ENZYME_DIR}") endif() + # Tribol + if(SMITH_USE_TRIBOL) + find_dependency(tribol REQUIRED PATHS "${TRIBOL_DIR}/lib/cmake") + endif() + # Gretl if(SMITH_USE_GRETL) find_dependency(gretl REQUIRED PATHS "${GRETL_DIR}/lib/cmake") @@ -197,18 +209,9 @@ if(NOT SMITH_FOUND) get_filename_component(SMITH_CMAKE_CONFIG_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) include(${SMITH_CMAKE_CONFIG_DIR}/BLTSetupTargets.cmake) - # Tribol (uses BLTSetupTargets.cmake) - if(SMITH_USE_TRIBOL) - if(NOT _tribol_included) - find_dependency(tribol REQUIRED PATHS "${TRIBOL_DIR}/lib/cmake") - else() - include(${SMITH_CMAKE_CONFIG_DIR}/tribol-targets.cmake) - endif() - endif() - # SLEPc requires ARPACK, but MFEM omits it from its exported link interface. if(SMITH_USE_ARPACK) - foreach(_target mfem axom::mfem tribol::mfem) + foreach(_target mfem) if(TARGET ${_target}) target_link_libraries(${_target} INTERFACE arpack) endif() diff --git a/cmake/thirdparty/SetupSmithThirdParty.cmake b/cmake/thirdparty/SetupSmithThirdParty.cmake index caea6df3da..fdfd7e3d2f 100644 --- a/cmake/thirdparty/SetupSmithThirdParty.cmake +++ b/cmake/thirdparty/SetupSmithThirdParty.cmake @@ -128,14 +128,18 @@ if (NOT SMITH_THIRD_PARTY_LIBRARIES_FOUND) #------------------------------------------------------------------------------ # Conduit (found via Axom) #------------------------------------------------------------------------------ - if(NOT CONDUIT_DIR) + if(CONDUIT_DIR) + set(CONDUIT_FOUND TRUE) + else() MESSAGE(FATAL_ERROR "Could not find Conduit. Conduit requires explicit CONDUIT_DIR.") endif() #------------------------------------------------------------------------------ # HDF5 (found via Axom) #------------------------------------------------------------------------------ - if (NOT HDF5_DIR) + if (HDF5_DIR) + set(HDF5_FOUND TRUE) + else() MESSAGE(FATAL_ERROR "Could not find HDF5. HDF5 requires explicit HDF5_DIR.") endif() @@ -399,10 +403,9 @@ if (NOT SMITH_THIRD_PARTY_LIBRARIES_FOUND) set(MFEM_FOUND TRUE CACHE BOOL "" FORCE) # Patch the mfem target with the correct include directories - get_target_property(_mfem_includes mfem INCLUDE_DIRECTORIES) - target_include_directories(mfem SYSTEM INTERFACE ${_mfem_includes}) - target_include_directories(mfem SYSTEM INTERFACE $) - target_include_directories(mfem SYSTEM INTERFACE $) + target_include_directories(mfem SYSTEM BEFORE INTERFACE + $ + $) # Restore flags and apply asan to mfem target directly if(APPLE AND ENABLE_ASAN) @@ -657,12 +660,11 @@ if (NOT SMITH_THIRD_PARTY_LIBRARIES_FOUND) #--------------------------------------------------------------------------- - # Remove non-existant INTERFACE_INCLUDE_DIRECTORIES from imported targets + # Remove non-existent INTERFACE_INCLUDE_DIRECTORIES from imported targets # to work around CMake error #--------------------------------------------------------------------------- set(_imported_targets axom - axom::mfem conduit conduit::conduit_mpi conduit::conduit @@ -670,8 +672,7 @@ if (NOT SMITH_THIRD_PARTY_LIBRARIES_FOUND) conduit_relay_mpi_io conduit_blueprint conduit_blueprint_mpi - mfem - tribol::mfem) + mfem) foreach(_target ${_imported_targets}) if(TARGET ${_target}) @@ -684,7 +685,7 @@ if (NOT SMITH_THIRD_PARTY_LIBRARIES_FOUND) endforeach() if(_existing_dirs) if(NOT "${_existing_dirs}" STREQUAL "${_dirs}") - message(STATUS "Removed non-existant include directories from target '${_target}'") + message(STATUS "Removed non-existent include directories from target '${_target}'") endif() set_target_properties(${_target} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${_existing_dirs}" ) @@ -697,9 +698,7 @@ if (NOT SMITH_THIRD_PARTY_LIBRARIES_FOUND) # the correct MPI lib directory. This guards against that. # https://github.com/spack/spack/issues/24685 set(_mfem_targets - mfem - axom::mfem - tribol::mfem) + mfem) if(STRUMPACK_FOUND) list(GET MPI_C_LIBRARIES 0 _first_mpi_lib) get_filename_component(_mpi_lib_dir ${_first_mpi_lib} DIRECTORY) diff --git a/examples/using-with-cmake/CMakeLists.txt b/examples/using-with-cmake/CMakeLists.txt index 2af0b79ec2..c5c884f829 100644 --- a/examples/using-with-cmake/CMakeLists.txt +++ b/examples/using-with-cmake/CMakeLists.txt @@ -16,12 +16,11 @@ include(CMakeFindDependencyMacro) find_dependency(smith REQUIRED NO_DEFAULT_PATH PATHS "${SMITH_DIR}/lib/cmake") #--------------------------------------------------------------------------- -# Remove non-existant INTERFACE_INCLUDE_DIRECTORIES from imported targets +# Remove non-existent INTERFACE_INCLUDE_DIRECTORIES from imported targets # to work around CMake error #--------------------------------------------------------------------------- set(_imported_targets axom - axom::mfem conduit conduit::conduit_mpi conduit::conduit @@ -29,8 +28,6 @@ set(_imported_targets conduit_relay_mpi_io conduit_blueprint conduit_blueprint_mpi - tribol::mfem - smith::mfem mfem) foreach(_target ${_imported_targets}) diff --git a/tribol b/tribol index 8fce1803b5..2f4654175f 160000 --- a/tribol +++ b/tribol @@ -1 +1 @@ -Subproject commit 8fce1803b5df99f8f961f77bd8ca77fcfab17709 +Subproject commit 2f4654175f46952e9fd8d5f131b7ab4febb84f89