diff --git a/CMakeLists.txt b/CMakeLists.txt index 4037d896..e717d4a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,19 +5,25 @@ cmake_minimum_required(VERSION 2.8.12) # not every version of CMAKE uses the new version of policy CMP0057 # this enforces it since Kokkos assumes the new version of the policy CMAKE_POLICY(SET CMP0057 NEW) +CMAKE_POLICY(SET CMP0048 NEW) ENABLE_TESTING() SET(TRILINOS_DIR ${Trilinos_INSTALL_DIR}) SET(Trilinos_SRC_DIR ${Trilinos_SRC_DIR}) +option(MrHyDE_BUILD_SHARED_LIBS "Build MrHyDE with shared libraries." ON) set(CMAKE_PREFIX_PATH ${TRILINOS_DIR} ${CMAKE_PREFIX_PATH}) #PROJECT(mrhyde) project(mrhyde LANGUAGES NONE # Defined below after reading in compilers + VERSION 0.1.0 ) +# the RPATH to be used when installing, but only if it's not a system directory +list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX/lib}" isSystemDir) + find_package(Trilinos REQUIRED) IF(NOT Trilinos_FOUND) @@ -43,6 +49,7 @@ IF(Trilinos_VERSION LESS 14.0) # GH: if a version is not detected, CMake default ELSE() MESSAGE(" Trilinos_VERSION >= 14 detected, using new names for Tpetra::KokkosCompat objects") ADD_DEFINITIONS(-DMrHyDE_HAVE_TRILINOS14) + set(MrHyDE_HAVE_TRILINOS14 TRUE) ENDIF() MESSAGE("End of Trilinos details\n") @@ -257,7 +264,48 @@ ENDIF() IF(MrHyDE_ENABLE_UNIT_TESTS) ADD_SUBDIRECTORY(unit_tests) ENDIF() - + +IF(MrHyDE_BUILD_SHARED_LIBS) + + # Add necessary definitions here + IF(MrHyDE_HAVE_TRILINOS14) + target_compile_definitions(mrhyde_lib PUBLIC MrHyDE_HAVE_TRILINOS14) + ENDIF() + + + # Install the shared library object targets + install(TARGETS mrhyde_lib + EXPORT MrHyDETargets + DESTINATION lib) + + # Configure the CMake packaging + include(CMakePackageConfigHelpers) + configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/MrHyDEConfig.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/MrHyDEcmake" + NO_SET_AND_CHECK_MACRO + NO_CHECK_REQUIRED_COMPONENTS_MACRO + ) + + write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/MrHyDEConfigVersion.cmake" + VERSION "${PROJECT_VERSION}" + COMPATIBILITY SameMajorVersion + ) + + install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/MrHyDEConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/MrHyDEConfigVersion.cmake + DESTINATION lib/cmake/MrHyDE + ) + + export(TARGETS mrhyde_lib NAMESPACE MrHyDE:: FILE MrHyDETargets.cmake) + export(PACKAGE MrHyDE) + + # Install the cmake configuration + install(EXPORT MrHyDETargets NAMESPACE MrHyDE:: DESTINATION lib/cmake/MrHyDE) +ENDIF() + #INSTALL( # DIRECTORY "" # DESTINATION "" diff --git a/Config.cmake.in b/Config.cmake.in new file mode 100644 index 00000000..5805a342 --- /dev/null +++ b/Config.cmake.in @@ -0,0 +1,6 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) +find_dependency(Trilinos REQUIRED) + +include ( "${CMAKE_CURRENT_LIST_DIR}/MrHyDETargets.cmake" ) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e6896a67..fd617203 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -53,9 +53,21 @@ ENDIF() ADD_EXECUTABLE(mrhyde ${mrhyde-all} ) - TARGET_LINK_LIBRARIES(mrhyde ${Trilinos_LIBRARIES} ${Trilinos_TPL_LIBRARIES}) +IF(MrHyDE_BUILD_SHARED_LIBS) + add_library(mrhyde_lib SHARED + ${mrhyde-all} + ) + target_include_directories(mrhyde_lib PUBLIC + $ + $ + ) + target_link_libraries(mrhyde_lib ${Trilinos_LIBRARIES} ${Trilinos_TPL_LIBRARIES}) + install(TARGETS mrhyde_lib DESTINATION lib/) + install(DIRECTORY . DESTINATION include/ FILES_MATCHING PATTERN "*.hpp") +ENDIF() + IF(MrHyDE_ENABLE_XML_to_YAML) ADD_EXECUTABLE(xml_to_yaml ../scripts/utils/xml_to_yaml.cpp) diff --git a/src/interfaces/discretizationInterface.hpp b/src/interfaces/discretizationInterface.hpp index 48d6a149..f6834854 100644 --- a/src/interfaces/discretizationInterface.hpp +++ b/src/interfaces/discretizationInterface.hpp @@ -22,8 +22,8 @@ #include "Panzer_STK_Interface.hpp" #include "physicsInterface.hpp" #include "meshInterface.hpp" -#include "groupMetaData.hpp" -#include "MrHyDE_Debugger.hpp" +#include "tools/groupMetaData.hpp" +#include "tools/MrHyDE_Debugger.hpp" namespace MrHyDE { diff --git a/src/interfaces/linearAlgebraInterface.hpp b/src/interfaces/linearAlgebraInterface.hpp index d1ef47f8..eab6869d 100644 --- a/src/interfaces/linearAlgebraInterface.hpp +++ b/src/interfaces/linearAlgebraInterface.hpp @@ -17,8 +17,8 @@ #include "trilinos.hpp" #include "preferences.hpp" #include "discretizationInterface.hpp" -#include "parameterManager.hpp" -#include "MrHyDE_Debugger.hpp" +#include "managers/parameterManager.hpp" +#include "tools/MrHyDE_Debugger.hpp" // Belos #include diff --git a/src/interfaces/meshInterface.hpp b/src/interfaces/meshInterface.hpp index b67a6a6b..fdc0cdd1 100644 --- a/src/interfaces/meshInterface.hpp +++ b/src/interfaces/meshInterface.hpp @@ -26,13 +26,13 @@ #include "Panzer_STK_Interface.hpp" #include "Panzer_STK_ExodusReaderFactory.hpp" #include "Panzer_STKConnManager.hpp" -#include "simplemeshmanager.hpp" -#include "MrHyDE_Debugger.hpp" +#include "tools/simplemeshmanager.hpp" +#include "tools/MrHyDE_Debugger.hpp" #include "preferences.hpp" //#include "physicsInterface.hpp" //#include "group.hpp" -#include "data.hpp" +#include "tools/data.hpp" //#include "boundaryGroup.hpp" namespace MrHyDE { diff --git a/src/interfaces/physicsInterface.hpp b/src/interfaces/physicsInterface.hpp index 8676083f..a3dc0006 100644 --- a/src/interfaces/physicsInterface.hpp +++ b/src/interfaces/physicsInterface.hpp @@ -18,8 +18,8 @@ #include "preferences.hpp" #include "MrHyDE_Debugger.hpp" -#include "physicsBase.hpp" -#include "workset.hpp" +#include "physics/physicsBase.hpp" +#include "tools/workset.hpp" //#include "Panzer_STK_Interface.hpp" #include "Panzer_DOFManager.hpp" diff --git a/src/managers/assemblyManager.hpp b/src/managers/assemblyManager.hpp index d993a121..f62f75ea 100644 --- a/src/managers/assemblyManager.hpp +++ b/src/managers/assemblyManager.hpp @@ -18,18 +18,20 @@ #include "Panzer_DOFManager.hpp" #include "preferences.hpp" -#include "groupMetaData.hpp" -#include "group.hpp" -#include "boundaryGroup.hpp" -#include "workset.hpp" -#include "meshInterface.hpp" -#include "physicsInterface.hpp" -#include "discretizationInterface.hpp" +#include "tools/groupMetaData.hpp" +#include "tools/group.hpp" +#include "tools/boundaryGroup.hpp" +#include "tools/workset.hpp" +#include "tools/data.hpp" + +#include "interfaces/meshInterface.hpp" +#include "interfaces/physicsInterface.hpp" +#include "interfaces/discretizationInterface.hpp" + #include "parameterManager.hpp" #include "multiscaleManager.hpp" #include "functionManager.hpp" -#include "data.hpp" -#include "MrHyDE_Debugger.hpp" +#include "tools/MrHyDE_Debugger.hpp" namespace MrHyDE { diff --git a/src/managers/functionManager.hpp b/src/managers/functionManager.hpp index 6eb513ea..484125ed 100644 --- a/src/managers/functionManager.hpp +++ b/src/managers/functionManager.hpp @@ -16,10 +16,10 @@ #include "trilinos.hpp" #include "preferences.hpp" -#include "dag.hpp" -#include "interpreter.hpp" -#include "workset.hpp" -#include "vista.hpp" +#include "tools/dag.hpp" +#include "tools/interpreter.hpp" +#include "tools/workset.hpp" +#include "tools/vista.hpp" namespace MrHyDE { diff --git a/src/managers/multiscaleManager.hpp b/src/managers/multiscaleManager.hpp index 8bf290ba..f98302aa 100644 --- a/src/managers/multiscaleManager.hpp +++ b/src/managers/multiscaleManager.hpp @@ -11,12 +11,12 @@ #include "trilinos.hpp" #include "preferences.hpp" -#include "group.hpp" -#include "subgridModel.hpp" +#include "tools/group.hpp" +#include "subgrid/subgridModel.hpp" #include "Amesos2.hpp" -#include "meshInterface.hpp" -#include "workset.hpp" -#include "MrHyDE_Debugger.hpp" +#include "interfaces/meshInterface.hpp" +#include "tools/workset.hpp" +#include "tools/MrHyDE_Debugger.hpp" namespace MrHyDE { diff --git a/src/managers/parameterManager.hpp b/src/managers/parameterManager.hpp index 8bf22b66..e14a98db 100644 --- a/src/managers/parameterManager.hpp +++ b/src/managers/parameterManager.hpp @@ -11,14 +11,14 @@ #include "trilinos.hpp" #include "preferences.hpp" -#include "meshInterface.hpp" -#include "physicsInterface.hpp" -#include "group.hpp" -#include "boundaryGroup.hpp" +#include "interfaces/meshInterface.hpp" +#include "interfaces/physicsInterface.hpp" +#include "tools/group.hpp" +#include "tools/boundaryGroup.hpp" #include "Panzer_STK_Interface.hpp" -#include "discretizationInterface.hpp" -#include "MrHyDE_OptVector.hpp" -#include "MrHyDE_Debugger.hpp" +#include "interfaces/discretizationInterface.hpp" +#include "optimization/MrHyDE_OptVector.hpp" +#include "tools/MrHyDE_Debugger.hpp" namespace MrHyDE { diff --git a/src/managers/postprocessManager.hpp b/src/managers/postprocessManager.hpp index ac2e01f1..21410284 100644 --- a/src/managers/postprocessManager.hpp +++ b/src/managers/postprocessManager.hpp @@ -11,17 +11,20 @@ #include "trilinos.hpp" #include "preferences.hpp" -#include "meshInterface.hpp" -#include "physicsInterface.hpp" -#include "discretizationInterface.hpp" -//#include "functionManager.hpp" -#include "assemblyManager.hpp" -#include "parameterManager.hpp" -#include "multiscaleManager.hpp" -#include "linearAlgebraInterface.hpp" -#include "MrHyDE_OptVector.hpp" -#include "postprocessTools.hpp" -#include "MrHyDE_Debugger.hpp" + +#include "tools/postprocessTools.hpp" + +#include "interfaces/meshInterface.hpp" +#include "interfaces/physicsInterface.hpp" +#include "interfaces/discretizationInterface.hpp" +#include "interfaces/linearAlgebraInterface.hpp" + +#include "managers/assemblyManager.hpp" +#include "managers/parameterManager.hpp" +#include "managers/multiscaleManager.hpp" + +#include "optimization/MrHyDE_OptVector.hpp" +#include "tools/MrHyDE_Debugger.hpp" #if defined(MrHyDE_ENABLE_FFTW) #include "fftInterface.hpp" diff --git a/src/managers/solverManager.hpp b/src/managers/solverManager.hpp index 5de3dc5a..a9898f5a 100644 --- a/src/managers/solverManager.hpp +++ b/src/managers/solverManager.hpp @@ -11,16 +11,19 @@ #include "trilinos.hpp" #include "preferences.hpp" -#include "meshInterface.hpp" -#include "physicsInterface.hpp" + +#include "interfaces/meshInterface.hpp" +#include "interfaces/physicsInterface.hpp" +#include "interfaces/discretizationInterface.hpp" +#include "interfaces/linearAlgebraInterface.hpp" + #include "multiscaleManager.hpp" -#include "discretizationInterface.hpp" #include "assemblyManager.hpp" #include "parameterManager.hpp" #include "postprocessManager.hpp" -#include "solutionStorage.hpp" -#include "linearAlgebraInterface.hpp" -#include "MrHyDE_Debugger.hpp" + +#include "tools/solutionStorage.hpp" +#include "tools/MrHyDE_Debugger.hpp" namespace MrHyDE { diff --git a/src/physics/physicsBase.hpp b/src/physics/physicsBase.hpp index 8595236c..610c5844 100644 --- a/src/physics/physicsBase.hpp +++ b/src/physics/physicsBase.hpp @@ -11,9 +11,9 @@ #include "trilinos.hpp" #include "preferences.hpp" -#include "workset.hpp" -#include "functionManager.hpp" -#include "compressedView.hpp" +#include "tools/workset.hpp" +#include "managers/functionManager.hpp" +#include "tools/compressedView.hpp" namespace MrHyDE { diff --git a/src/subgrid/subgridModel.hpp b/src/subgrid/subgridModel.hpp index bfe0c515..f292420a 100644 --- a/src/subgrid/subgridModel.hpp +++ b/src/subgrid/subgridModel.hpp @@ -11,7 +11,7 @@ #include "trilinos.hpp" #include "preferences.hpp" -#include "solutionStorage.hpp" +#include "tools/solutionStorage.hpp" namespace MrHyDE { diff --git a/src/tools/boundaryGroup.hpp b/src/tools/boundaryGroup.hpp index 526def2d..7f74555f 100644 --- a/src/tools/boundaryGroup.hpp +++ b/src/tools/boundaryGroup.hpp @@ -13,7 +13,7 @@ #include "preferences.hpp" #include "workset.hpp" #include "groupMetaData.hpp" -#include "discretizationInterface.hpp" +#include "interfaces/discretizationInterface.hpp" #include "compressedView.hpp" #include diff --git a/src/tools/data.hpp b/src/tools/data.hpp index 0c79df94..e856ea10 100644 --- a/src/tools/data.hpp +++ b/src/tools/data.hpp @@ -12,7 +12,7 @@ #include "trilinos.hpp" #include #include -#include "CompadreInterface.hpp" +#include "interfaces/CompadreInterface.hpp" namespace MrHyDE { diff --git a/src/tools/group.hpp b/src/tools/group.hpp index 3f636a17..83756b72 100644 --- a/src/tools/group.hpp +++ b/src/tools/group.hpp @@ -12,9 +12,9 @@ #include "trilinos.hpp" #include "preferences.hpp" #include "workset.hpp" -#include "subgridModel.hpp" +#include "subgrid/subgridModel.hpp" #include "groupMetaData.hpp" -#include "discretizationInterface.hpp" +#include "interfaces/discretizationInterface.hpp" #include "compressedView.hpp" #include diff --git a/src/tools/groupMetaData.hpp b/src/tools/groupMetaData.hpp index 68aa3632..f093e230 100644 --- a/src/tools/groupMetaData.hpp +++ b/src/tools/groupMetaData.hpp @@ -11,9 +11,9 @@ #include "trilinos.hpp" #include "preferences.hpp" -#include "physicsBase.hpp" -#include "physicsInterface.hpp" -#include "sparse3DView.hpp" +#include "physics/physicsBase.hpp" +#include "interfaces/physicsInterface.hpp" +#include "tools/sparse3DView.hpp" #include #include diff --git a/src/trilinos.hpp b/src/trilinos.hpp index fc933360..58ccc975 100644 --- a/src/trilinos.hpp +++ b/src/trilinos.hpp @@ -28,7 +28,7 @@ // Kokkos include #include "Kokkos_Core.hpp" -#include "kokkosTools.hpp" +#include "tools/kokkosTools.hpp" // Sacado #include "Sacado.hpp"