feat(initial): added portable mfem build system
This commit is contained in:
261
include/meson_mfem_template/config.hpp.in
Normal file
261
include/meson_mfem_template/config.hpp.in
Normal file
@@ -0,0 +1,261 @@
|
||||
#pragma once
|
||||
|
||||
#define MESON_MFEM_TEMPLATE_VERSION @MESON_MFEM_TEMPLATE_VERSION@
|
||||
#mesondefine01 MESON_MFEM_USING_BUNDLED_MFEM
|
||||
|
||||
#include <mfem/config/config.hpp>
|
||||
|
||||
#ifdef MFEM_USE_MPI
|
||||
#define MESON_MFEM_HAS_MPI 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_MPI 0
|
||||
#endif
|
||||
#define MESON_MFEM_HAS_HYPRE MESON_MFEM_HAS_MPI
|
||||
|
||||
#ifdef MFEM_USE_METIS
|
||||
#define MESON_MFEM_HAS_METIS 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_METIS 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_EXCEPTIONS
|
||||
#define MESON_MFEM_HAS_EXCEPTIONS 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_EXCEPTIONS 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_ZLIB
|
||||
#define MESON_MFEM_HAS_ZLIB 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_ZLIB 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_LIBUNWIND
|
||||
#define MESON_MFEM_HAS_LIBUNWIND 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_LIBUNWIND 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_LAPACK
|
||||
#define MESON_MFEM_HAS_LAPACK 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_LAPACK 0
|
||||
#endif
|
||||
#ifdef MFEM_THREAD_SAFE
|
||||
#define MESON_MFEM_HAS_THREAD_SAFE 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_THREAD_SAFE 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_OPENMP
|
||||
#define MESON_MFEM_HAS_OPENMP 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_OPENMP 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_LEGACY_OPENMP
|
||||
#define MESON_MFEM_HAS_LEGACY_OPENMP 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_LEGACY_OPENMP 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_MEMALLOC
|
||||
#define MESON_MFEM_HAS_MEMALLOC 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_MEMALLOC 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_SUNDIALS
|
||||
#define MESON_MFEM_HAS_SUNDIALS 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_SUNDIALS 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_SUITESPARSE
|
||||
#define MESON_MFEM_HAS_SUITESPARSE 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_SUITESPARSE 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_SUPERLU
|
||||
#define MESON_MFEM_HAS_SUPERLU 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_SUPERLU 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_SUPERLU5
|
||||
#define MESON_MFEM_HAS_SUPERLU5 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_SUPERLU5 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_MUMPS
|
||||
#define MESON_MFEM_HAS_MUMPS 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_MUMPS 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_STRUMPACK
|
||||
#define MESON_MFEM_HAS_STRUMPACK 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_STRUMPACK 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_CUDSS
|
||||
#define MESON_MFEM_HAS_CUDSS 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_CUDSS 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_GINKGO
|
||||
#define MESON_MFEM_HAS_GINKGO 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_GINKGO 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_AMGX
|
||||
#define MESON_MFEM_HAS_AMGX 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_AMGX 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_MAGMA
|
||||
#define MESON_MFEM_HAS_MAGMA 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_MAGMA 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_GNUTLS
|
||||
#define MESON_MFEM_HAS_GNUTLS 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_GNUTLS 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_GSLIB
|
||||
#define MESON_MFEM_HAS_GSLIB 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_GSLIB 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_HDF5
|
||||
#define MESON_MFEM_HAS_HDF5 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_HDF5 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_NETCDF
|
||||
#define MESON_MFEM_HAS_NETCDF 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_NETCDF 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_PETSC
|
||||
#define MESON_MFEM_HAS_PETSC 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_PETSC 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_SLEPC
|
||||
#define MESON_MFEM_HAS_SLEPC 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_SLEPC 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_MPFR
|
||||
#define MESON_MFEM_HAS_MPFR 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_MPFR 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_SIDRE
|
||||
#define MESON_MFEM_HAS_SIDRE 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_SIDRE 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_FMS
|
||||
#define MESON_MFEM_HAS_FMS 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_FMS 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_CONDUIT
|
||||
#define MESON_MFEM_HAS_CONDUIT 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_CONDUIT 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_PUMI
|
||||
#define MESON_MFEM_HAS_PUMI 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_PUMI 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_HIOP
|
||||
#define MESON_MFEM_HAS_HIOP 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_HIOP 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_CUDA
|
||||
#define MESON_MFEM_HAS_CUDA 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_CUDA 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_HIP
|
||||
#define MESON_MFEM_HAS_HIP 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_HIP 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_OCCA
|
||||
#define MESON_MFEM_HAS_OCCA 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_OCCA 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_RAJA
|
||||
#define MESON_MFEM_HAS_RAJA 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_RAJA 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_CEED
|
||||
#define MESON_MFEM_HAS_CEED 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_CEED 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_UMPIRE
|
||||
#define MESON_MFEM_HAS_UMPIRE 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_UMPIRE 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_SIMD
|
||||
#define MESON_MFEM_HAS_SIMD 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_SIMD 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_ADIOS2
|
||||
#define MESON_MFEM_HAS_ADIOS2 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_ADIOS2 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_CALIPER
|
||||
#define MESON_MFEM_HAS_CALIPER 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_CALIPER 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_ALGOIM
|
||||
#define MESON_MFEM_HAS_ALGOIM 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_ALGOIM 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_MKL_CPARDISO
|
||||
#define MESON_MFEM_HAS_MKL_CPARDISO 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_MKL_CPARDISO 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_MKL_PARDISO
|
||||
#define MESON_MFEM_HAS_MKL_PARDISO 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_MKL_PARDISO 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_ADFORWARD
|
||||
#define MESON_MFEM_HAS_ADFORWARD 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_ADFORWARD 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_CODIPACK
|
||||
#define MESON_MFEM_HAS_CODIPACK 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_CODIPACK 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_BENCHMARK
|
||||
#define MESON_MFEM_HAS_BENCHMARK 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_BENCHMARK 0
|
||||
#endif
|
||||
#define MESON_MFEM_HAS_PARELAG 0
|
||||
#define MESON_MFEM_HAS_TRIBOL 0
|
||||
#ifdef MFEM_USE_ENZYME
|
||||
#define MESON_MFEM_HAS_ENZYME 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_ENZYME 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_MOONOLITH
|
||||
#define MESON_MFEM_HAS_MOONOLITH 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_MOONOLITH 0
|
||||
#endif
|
||||
#ifdef MFEM_USE_SIMMETRIX
|
||||
#define MESON_MFEM_HAS_SIMMETRIX 1
|
||||
#else
|
||||
#define MESON_MFEM_HAS_SIMMETRIX 0
|
||||
#endif
|
||||
19
include/meson_mfem_template/meson.build
Normal file
19
include/meson_mfem_template/meson.build
Normal file
@@ -0,0 +1,19 @@
|
||||
mfem_config = configuration_data()
|
||||
mfem_config.set_quoted('MESON_MFEM_TEMPLATE_VERSION', meson.project_version())
|
||||
mfem_config.set10('MESON_MFEM_USING_BUNDLED_MFEM', mfem_provider != 'system')
|
||||
|
||||
mfem_config_header = configure_file(
|
||||
input: 'config.hpp.in',
|
||||
output: 'config.hpp',
|
||||
configuration: mfem_config,
|
||||
install: true,
|
||||
install_tag: get_option('build_python') ? 'python-runtime' : 'devel',
|
||||
install_dir: get_option('build_python')
|
||||
? python_build.get_install_dir() / 'meson_mfem_template' / 'include' / 'meson_mfem_template'
|
||||
: get_option('includedir') / 'meson_mfem_template',
|
||||
)
|
||||
|
||||
template_include_dep = declare_dependency(
|
||||
include_directories: include_directories('..'),
|
||||
sources: mfem_config_header,
|
||||
)
|
||||
Reference in New Issue
Block a user