# Source files grouped by a directory get_source_files(SOURCES) append_source_files(SOURCES Curve) append_source_files(SOURCES InterpolationAlgorithms) append_source_files(SOURCES Integration) append_source_files(SOURCES LinAlg) append_source_files(SOURCES Nonlinear) append_source_files(SOURCES LinAlg/Eigen) if(OGS_USE_LIS) append_source_files(SOURCES LinAlg/Lis) append_source_files(SOURCES LinAlg/EigenLis) endif() if(OGS_USE_PETSC) append_source_files(SOURCES LinAlg/PETSc) endif() # Create the library ogs_add_library(MathLib GENERATE_EXPORT_HEADER ${SOURCES}) set_target_properties(MathLib PROPERTIES LINKER_LANGUAGE CXX) target_link_libraries( MathLib PUBLIC BaseLib $<$:LAPACK::LAPACK> $<$:${LIS_LIBRARIES}> $<$:PkgConfig::PETSC> Eigen3::Eigen Boost::math $<$,$>>:OpenMP::OpenMP_CXX> PRIVATE $<$:MKL::MKL> ) if(OGS_USE_MKL AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") # Otherwise required MKL libs get stripped out (don't show up in ldd): target_link_options(MathLib PUBLIC "LINKER:--no-as-needed") endif() if(OGS_USE_LIS) target_include_directories(MathLib PUBLIC ${LIS_INCLUDE_DIR}) endif() target_compile_definitions( MathLib PUBLIC $<$:USE_LIS> $<$:EIGEN_NO_DEBUG> $<$:EIGEN_DONT_VECTORIZE> $<$:OGS_EIGEN_DYNAMIC_SHAPE_MATRICES> $<$:USE_EIGEN_UNSUPPORTED> $<$:EIGEN_INITIALIZE_MATRICES_BY_NAN> $<$:EIGEN_INITIALIZE_MATRICES_BY_NAN> $<$,$>>:EIGEN_USE_MKL_ALL> ) if(OGS_USE_MKL) set_source_files_properties( LinAlg/Eigen/EigenLinearSolver.cpp PROPERTIES COMPILE_DEFINITIONS USE_MKL ) endif() target_precompile_headers( MathLib PRIVATE [["BaseLib/Error.h"]] [["BaseLib/ConfigTree.h"]] [["BaseLib/Logging.h"]] )