Skip to content
Snippets Groups Projects
Commit 499e3d2a authored by Lars Bilke's avatar Lars Bilke
Browse files

[cmake] Conda build with upstream tfel/mgis packages.

Can build with OGS_USE_MFRONT=ON in a conda env. E.g.:

environment.yml:

name: ogs-conda-dev
channels:
- conda-forge
dependencies:
- eigen
- exprtk
- hdf5
- libboost-python-devel
- libxml2
- metis
- nlohmann_json
- pybind11
- python
- range-v3
- tclap
- vtk >=9.3.0
- zlib
- mfront 4.2
- mgis 2.2

conda env create -f environment.yml
conda activate ogs-conda-dev
cmake --preset release -DOGS_USE_MFRONT=ON
parent 1d5e687a
No related branches found
No related tags found
No related merge requests found
......@@ -42,10 +42,10 @@ repos:
- id: cmake-format
additional_dependencies: ["cmakelang[YAML]"]
args: [--config=.cmake-format.yaml]
exclude: "CPM.cmake|FindFilesystem.cmake|FindMKL.cmake|JSONParser.cmake|Tests.cmake"
exclude: "CPM.cmake|FindFilesystem.cmake|FindMKL.cmake|JSONParser.cmake|Tests.cmake|FindTFEL.cmake|FindMFrontGenericInterface.cmake"
- id: cmake-lint
additional_dependencies: ["cmakelang[YAML]"]
exclude: "CPM.cmake|FindFilesystem.cmake|FindMKL.cmake|JSONParser.cmake|BuildExternalProject.cmake"
exclude: "CPM.cmake|FindFilesystem.cmake|FindMKL.cmake|JSONParser.cmake|BuildExternalProject.cmake|FindTFEL.cmake|FindMFrontGenericInterface.cmake"
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.42.0
hooks:
......
......@@ -21,7 +21,7 @@ target_include_directories(
target_compile_definitions(
MaterialLib_SolidModels_MFront PRIVATE OGS_USE_MFRONT
)
if(NOT GUIX_BUILD)
if(NOT GUIX_BUILD AND NOT CONDA_BUILD)
install(TARGETS MFrontGenericInterface)
endif()
......@@ -50,7 +50,7 @@ set(_mfront_behaviours
ThermoPoroElasticity
)
if((OGS_BUILD_WHEEL AND NOT APPLE_ARM) OR GUIX_BUILD)
if((OGS_BUILD_WHEEL AND NOT APPLE_ARM) OR GUIX_BUILD OR CONDA_BUILD)
# Build behaviours lib with mfront executable
foreach(behaviour ${_mfront_behaviours})
list(APPEND _mfront_behaviour_files
......
......@@ -167,7 +167,13 @@ endif()
if(OGS_USE_MFRONT)
if(GUIX_BUILD OR CONDA_BUILD)
if(CONDA_BUILD)
set(MGIS_DIR $ENV{CONDA_PREFIX})
endif()
find_package(MFrontGenericInterface REQUIRED)
if(CONDA_BUILD)
add_library(MFrontGenericInterface ALIAS mgis::MFrontGenericInterface)
endif()
else()
set(CMAKE_REQUIRE_FIND_PACKAGE_TFEL TRUE)
# Patch only works when CPM_SOURCE_CACHE is set. Following conditional
......
......@@ -45,6 +45,12 @@ if(OGS_USE_MFRONT)
set(_tfel_source URL ${_tfel_source_file})
elseif(NOT OGS_BUILD_TFEL)
find_program(MFRONT mfront)
if(CONDA_BUILD)
set(TFELHOME $ENV{CONDA_PREFIX})
set(CMAKE_REQUIRE_FIND_PACKAGE_TFEL TRUE)
endif()
find_package(TFEL)
if(MFRONT AND APPLE)
# TODO: check for version
# ~~~
......@@ -56,7 +62,7 @@ if(OGS_USE_MFRONT)
set(TFELHOME ${_mfront_bin_dir}/..)
endif()
endif()
if(NOT MFRONT)
if(NOT MFRONT OR NOT TFEL)
set(_py_version_major_minor
"${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}"
)
......
# - Try to find MGIS
# Once done this will define
# MFrontGenericInterface_FOUND - System has Mgis
# MFrontGenericInterface_INCLUDE_DIRS - The Mgis include directories
# MFrontGenericInterface_LIBRARY_DIRS - The library directories needed to use Mgis
# MFrontGenericInterface_LIBRARIES - The libraries needed to use Mgis
if (MGIS_DIR OR MFrontGenericInterface_DIR)
# in cache already
SET(MFrontGenericInterface_FIND_QUIETLY TRUE)
endif (MGIS_DIR OR MFrontGenericInterface_DIR)
STRING(REPLACE ":" ";" MYSEARCH_PATH "$ENV{CMAKE_PREFIX_PATH}")
find_file(MFrontGenericInterface_CONFIG_FILE MFrontGenericInterfaceConfig.cmake
PATHS ${MYSEARCH_PATH}
PATHS ${MGIS_DIR}/build $ENV{MGIS_DIR}/build ${MGIS_DIR} $ENV{MGIS_DIR} $ENV{MFrontGenericInterface_DIR} ${MFrontGenericInterface_DIR}
PATH_SUFFIXES share/mgis/cmake
NO_DEFAULT_PATH
DOC "The MFrontGenericInterface configuration file")
mark_as_advanced(FORCE MFrontGenericInterface_CONFIG_FILE)
if (MFrontGenericInterface_CONFIG_FILE)
# Extract the directory name
get_filename_component(MFrontGenericInterface_CONFIG_PATH ${MFrontGenericInterface_CONFIG_FILE} DIRECTORY)
set(MFrontGenericInterface_DIR ${MFrontGenericInterface_CONFIG_PATH})
set(MFrontGenericInterface_DIR ${MFrontGenericInterface_CONFIG_PATH})
message(STATUS "Found ${MFrontGenericInterface_CONFIG_FILE}")
else(MFrontGenericInterface_CONFIG_FILE)
message(FATAL_ERROR "MFrontGenericInterface configuration file not found!")
endif(MFrontGenericInterface_CONFIG_FILE)
mark_as_advanced(FORCE MFrontGenericInterface_CONFIG_FILE)
include(${MFrontGenericInterface_CONFIG_FILE})
# Usage:
#
# # TFELHOME optional for Conan or custom install locations
# set(TFELHOME ${CONAN_TFEL_ROOT})
# find_package(TFEL REQUIRED)
#
# Once found, declares these variables:
# - TFEL_FOUND
# - TFEL_INCLUDE_PATH
# - TFEL_LIBRARIES
# - TFEL_CXX_STANDARD
# - TFEL_VERSION
#if(DEFINED ENV{TFELHOME})
# set(TFELHOME $ENV{TFELHOME})
#endif()
message(STATUS "tfelhome: ${TFELHOME}")
foreach(tool mfront tfel-check tfel-config mfront-query)
string(TOUPPER ${tool} toolVar)
string(REPLACE "-" "_" toolVar ${toolVar})
find_program(${toolVar} ${tool} HINTS ${TFELHOME} PATH_SUFFIXES bin)
endforeach()
IF(TFEL_CONFIG AND MFRONT AND MFRONT_QUERY)
execute_process(COMMAND ${TFEL_CONFIG} "--cxx-standard"
RESULT_VARIABLE TFEL_CXX_STANDARD_AVAILABLE
OUTPUT_VARIABLE TFEL_CXX_STANDARD
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT TFEL_CXX_STANDARD_AVAILABLE EQUAL 0)
set(TFEL_CXX_STANDARD 11)
endif()
execute_process(COMMAND ${TFEL_CONFIG} "--version"
OUTPUT_VARIABLE TFEL_VERSION_FULL
OUTPUT_STRIP_TRAILING_WHITESPACE
)
message(STATUS "TFEL_VERSION_FULL: ${TFEL_VERSION_FULL}")
string(REPLACE " " ";" TFEL_VERSION ${TFEL_VERSION_FULL})
list(GET TFEL_VERSION 1 TFEL_VERSION)
set(TFEL_PYTHON_BINDINGS OFF)
execute_process(COMMAND ${TFEL_CONFIG} "--python-version"
RESULT_VARIABLE TFEL_PYTHON_BINDINGS
OUTPUT_VARIABLE TFEL_PYTHON_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
if(TFEL_PYTHON_BINDINGS EQUAL 0)
set(TFEL_PYTHON_BINDINGS ON)
endif()
find_path(TFEL_CONFIG_INCLUDE_PATH TFELConfig.hxx
HINTS ${TFELHOME}/include/TFEL/Config
)
get_filename_component(TFEL_INCLUDE_PATH
${TFEL_CONFIG_INCLUDE_PATH}/../.. ABSOLUTE CACHE
)
set(tfel_libs
TFELTests
TFELException
TFELUtilities
TFELMaterial
TFELMath
MTestFileGenerator
)
if(${TFEL_CXX_STANDARD} LESS 17)
list(APPEND tfel_libs TFELPhysicalConstants)
endif()
foreach(lib ${tfel_libs})
find_library(${lib}_LIBRARY ${lib} HINTS ${TFELHOME} PATH_SUFFIXES lib)
list(APPEND TFEL_LIBRARIES ${${lib}_LIBRARY})
endforeach(lib)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(TFEL DEFAULT_MSG
TFEL_VERSION
TFEL_INCLUDE_PATH
TFEL_LIBRARIES
TFEL_CXX_STANDARD
)
set(TFEL_FOUND ON)
else(TFEL_CONFIG AND MFRONT AND MFRONT_QUERY)
set(TFEL_FOUND OFF)
endif(TFEL_CONFIG AND MFRONT AND MFRONT_QUERY)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment