FindEigen3.cmake revision 11986
13536Sgblack@eecs.umich.edu# - Try to find Eigen3 lib 23536Sgblack@eecs.umich.edu# 33536Sgblack@eecs.umich.edu# This module supports requiring a minimum version, e.g. you can do 43536Sgblack@eecs.umich.edu# find_package(Eigen3 3.1.2) 53536Sgblack@eecs.umich.edu# to require version 3.1.2 or newer of Eigen3. 63536Sgblack@eecs.umich.edu# 73536Sgblack@eecs.umich.edu# Once done this will define 83536Sgblack@eecs.umich.edu# 93536Sgblack@eecs.umich.edu# EIGEN3_FOUND - system has eigen lib with correct version 103536Sgblack@eecs.umich.edu# EIGEN3_INCLUDE_DIR - the eigen include directory 113536Sgblack@eecs.umich.edu# EIGEN3_VERSION - eigen version 123536Sgblack@eecs.umich.edu 133536Sgblack@eecs.umich.edu# Copyright (c) 2006, 2007 Montel Laurent, <montel@kde.org> 143536Sgblack@eecs.umich.edu# Copyright (c) 2008, 2009 Gael Guennebaud, <g.gael@free.fr> 153536Sgblack@eecs.umich.edu# Copyright (c) 2009 Benoit Jacob <jacob.benoit.1@gmail.com> 163536Sgblack@eecs.umich.edu# Redistribution and use is allowed according to the terms of the 2-clause BSD license. 173536Sgblack@eecs.umich.edu 183536Sgblack@eecs.umich.eduif(NOT Eigen3_FIND_VERSION) 193536Sgblack@eecs.umich.edu if(NOT Eigen3_FIND_VERSION_MAJOR) 203536Sgblack@eecs.umich.edu set(Eigen3_FIND_VERSION_MAJOR 2) 213536Sgblack@eecs.umich.edu endif(NOT Eigen3_FIND_VERSION_MAJOR) 223536Sgblack@eecs.umich.edu if(NOT Eigen3_FIND_VERSION_MINOR) 233536Sgblack@eecs.umich.edu set(Eigen3_FIND_VERSION_MINOR 91) 243536Sgblack@eecs.umich.edu endif(NOT Eigen3_FIND_VERSION_MINOR) 253536Sgblack@eecs.umich.edu if(NOT Eigen3_FIND_VERSION_PATCH) 263536Sgblack@eecs.umich.edu set(Eigen3_FIND_VERSION_PATCH 0) 273536Sgblack@eecs.umich.edu endif(NOT Eigen3_FIND_VERSION_PATCH) 283536Sgblack@eecs.umich.edu 293536Sgblack@eecs.umich.edu set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}") 303536Sgblack@eecs.umich.eduendif(NOT Eigen3_FIND_VERSION) 313536Sgblack@eecs.umich.edu 328332Snate@binkert.orgmacro(_eigen3_check_version) 338332Snate@binkert.org file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) 343536Sgblack@eecs.umich.edu 353536Sgblack@eecs.umich.edu string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}") 363536Sgblack@eecs.umich.edu set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}") 373536Sgblack@eecs.umich.edu string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}") 383536Sgblack@eecs.umich.edu set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}") 393536Sgblack@eecs.umich.edu string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}") 403536Sgblack@eecs.umich.edu set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}") 415543Ssaidi@eecs.umich.edu 425543Ssaidi@eecs.umich.edu set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION}) 433536Sgblack@eecs.umich.edu if(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) 443536Sgblack@eecs.umich.edu set(EIGEN3_VERSION_OK FALSE) 453536Sgblack@eecs.umich.edu else(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) 463536Sgblack@eecs.umich.edu set(EIGEN3_VERSION_OK TRUE) 473536Sgblack@eecs.umich.edu endif(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) 483536Sgblack@eecs.umich.edu 493536Sgblack@eecs.umich.edu if(NOT EIGEN3_VERSION_OK) 503536Sgblack@eecs.umich.edu 513536Sgblack@eecs.umich.edu message(STATUS "Eigen3 version ${EIGEN3_VERSION} found in ${EIGEN3_INCLUDE_DIR}, " 523536Sgblack@eecs.umich.edu "but at least version ${Eigen3_FIND_VERSION} is required") 533536Sgblack@eecs.umich.edu endif(NOT EIGEN3_VERSION_OK) 545543Ssaidi@eecs.umich.eduendmacro(_eigen3_check_version) 555543Ssaidi@eecs.umich.edu 563536Sgblack@eecs.umich.eduif (EIGEN3_INCLUDE_DIR) 573536Sgblack@eecs.umich.edu 583536Sgblack@eecs.umich.edu # in cache already 593536Sgblack@eecs.umich.edu _eigen3_check_version() 603536Sgblack@eecs.umich.edu set(EIGEN3_FOUND ${EIGEN3_VERSION_OK}) 613536Sgblack@eecs.umich.edu 623536Sgblack@eecs.umich.eduelse (EIGEN3_INCLUDE_DIR) 633536Sgblack@eecs.umich.edu 643536Sgblack@eecs.umich.edu find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library 653536Sgblack@eecs.umich.edu PATHS 663536Sgblack@eecs.umich.edu ${CMAKE_INSTALL_PREFIX}/include 673536Sgblack@eecs.umich.edu ${KDE4_INCLUDE_DIR} 683536Sgblack@eecs.umich.edu PATH_SUFFIXES eigen3 eigen 693536Sgblack@eecs.umich.edu ) 703536Sgblack@eecs.umich.edu 713536Sgblack@eecs.umich.edu if(EIGEN3_INCLUDE_DIR) 725543Ssaidi@eecs.umich.edu _eigen3_check_version() 733536Sgblack@eecs.umich.edu endif(EIGEN3_INCLUDE_DIR) 743536Sgblack@eecs.umich.edu 753536Sgblack@eecs.umich.edu include(FindPackageHandleStandardArgs) 763536Sgblack@eecs.umich.edu find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK) 773536Sgblack@eecs.umich.edu 783536Sgblack@eecs.umich.edu mark_as_advanced(EIGEN3_INCLUDE_DIR) 793536Sgblack@eecs.umich.edu 803536Sgblack@eecs.umich.eduendif(EIGEN3_INCLUDE_DIR) 813536Sgblack@eecs.umich.edu 823536Sgblack@eecs.umich.edu