diff --git a/cmake/modules/AmdisMacros.cmake b/cmake/modules/AmdisMacros.cmake index f4b56f1a354f3a8116a42f7f521cb30b8d72fec9..863d990b71cdf767c0c076b3bde04e5d859e7315 100644 --- a/cmake/modules/AmdisMacros.cmake +++ b/cmake/modules/AmdisMacros.cmake @@ -5,39 +5,18 @@ set(BACKEND "ISTL" CACHE STRING "LinearAlgebra backend. One of MTL, EIGEN, ISTL" set_property(CACHE BACKEND PROPERTY STRINGS "MTL" "EIGEN" "ISTL") if (BACKEND STREQUAL "MTL" OR BACKEND STREQUAL "MTL4") - find_package(MTL REQUIRED - PATHS /usr/local/lib/mtl4 /opt/sources/mtl4 /opt/development/mtl4) - - if (MTL_FOUND) - set(CXX_ELEVEN_FEATURE_LIST "MOVE" "AUTO" "RANGEDFOR" "INITLIST" "STATICASSERT" "DEFAULTIMPL") - set(MTL_COMPILE_DEFINITIONS "") - foreach(feature ${CXX_ELEVEN_FEATURE_LIST}) - list(APPEND MTL_COMPILE_DEFINITIONS "MTL_WITH_${feature}") - endforeach() - - find_package(SuiteSparse QUIET) - if (SuiteSparse_FOUND) - list(APPEND MTL_COMPILE_DEFINITIONS "MTL_HAS_UMFPACK") - endif (SuiteSparse_FOUND) - endif (MTL_FOUND) - + find_package(MTL REQUIRED) set(HAVE_MTL MTL_FOUND) if (MTL_FOUND) - list(APPEND MTL_COMPILE_DEFINITIONS "ENABLE_MTL=1") - dune_register_package_flags( - COMPILE_DEFINITIONS ${MTL_COMPILE_DEFINITIONS} - INCLUDE_DIRS ${MTL_INCLUDE_DIRS}) + message(STATUS " Found MTL, version: ${MTL_VERSION}") + dune_register_package_flags(LIBRARIES MTL::MTL COMPILE_DEFINITIONS "ENABLE_MTL=1") endif (MTL_FOUND) elseif (BACKEND STREQUAL "EIGEN" OR BACKEND STREQUAL "EIGEN3") find_package(Eigen3 REQUIRED 3.3.5) - set(HAVE_EIGEN EIGEN_FOUND) if (EIGEN3_FOUND) - message(STATUS " Found Eigen3, version: ${EIGEN3_VERSION}") - list(APPEND EIGEN3_DEFINITIONS "ENABLE_EIGEN=1") - dune_register_package_flags( - COMPILE_DEFINITIONS ${EIGEN3_DEFINITIONS} - INCLUDE_DIRS ${EIGEN3_INCLUDE_DIRS}) + message(STATUS " Found Eigen3, version: ${Eigen3_VERSION}") + dune_register_package_flags(LIBRARIES Eigen3::Eigen COMPILE_DEFINITIONS "ENABLE_EIGEN=1") endif (EIGEN3_FOUND) elseif (BACKEND STREQUAL "ISTL") if (NOT dune-istl_FOUND) diff --git a/cmake/modules/FindMTL.cmake b/cmake/modules/FindMTL.cmake new file mode 100644 index 0000000000000000000000000000000000000000..b0e95333f73c3c88a70755c0343f502d4afef145 --- /dev/null +++ b/cmake/modules/FindMTL.cmake @@ -0,0 +1,54 @@ +# FindMTL.cmake +# +# Finds the MTL4 library +# +# This will define the following variables +# +# MTL_FOUND +# MTL_INCLUDE_DIR +# MTL_COMPILE_DEFINITIONS +# +# and the following imported targets +# +# MTL::MTL +# +# Author: Simon Praetorius + + +mark_as_advanced(MTL_FOUND MTL_COMPILE_DEFINITIONS MTL_INCLUDE_DIR) + +find_path(MTL_INCLUDE_DIR boost/numeric/mtl/mtl.hpp + HINTS + ${CMAKE_CURRENT_SOURCE_DIR}/../../libs/mtl4 + ${CMAKE_CURRENT_SOURCE_DIR}/../../include/mtl4 + ${MTL_DIR}/../../include + ENV EBROOTMTL + PATHS + /opt/software/mtl + /opt/sources/mtl + /opt/development/mtl +) + +set(MTL_COMPILE_DEFINITIONS MTL_ASSERT_FOR_THROW=1) +foreach(feature "MOVE" "AUTO" "RANGEDFOR" "INITLIST" "STATICASSERT" "DEFAULTIMPL") + list(APPEND MTL_COMPILE_DEFINITIONS MTL_WITH_${feature}) +endforeach(feature) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(MTL + REQUIRED_VARS MTL_INCLUDE_DIR +) + +if(MTL_FOUND AND NOT TARGET MTL::MTL) + add_library(MTL::MTL INTERFACE IMPORTED) + + find_package(SuiteSparse QUIET) + if (SuiteSparse_FOUND) + list(APPEND MTL_COMPILE_DEFINITIONS "MTL_HAS_UMFPACK") + endif (SuiteSparse_FOUND) + + set_target_properties(MTL::MTL PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${MTL_INCLUDE_DIR}" + INTERFACE_COMPILE_DEFINITIONS "${MTL_COMPILE_DEFINITIONS}" + ) +endif()