From 57b2079a3f9839cbff7acb7fc2f6761634dc9598 Mon Sep 17 00:00:00 2001 From: kestred Date: Fri, 29 Nov 2013 01:38:01 -0700 Subject: [PATCH] CMake: Modules: Cleanup FindEigen2/3 and use a consistent format with that of FindTar.cmake. --- cmake/modules/FindEigen2.cmake | 95 ++++++++++++++++----------------- cmake/modules/FindEigen3.cmake | 97 ++++++++++++++++------------------ dtool/Configure.cmake | 4 +- 3 files changed, 95 insertions(+), 101 deletions(-) diff --git a/cmake/modules/FindEigen2.cmake b/cmake/modules/FindEigen2.cmake index ae3fb60a26..d4940862ad 100644 --- a/cmake/modules/FindEigen2.cmake +++ b/cmake/modules/FindEigen2.cmake @@ -15,66 +15,63 @@ # EIGEN_VERSION - eigen version # -if(NOT Eigen2_FIND_VERSION) - if(NOT Eigen2_FIND_VERSION_MAJOR) - set(Eigen2_FIND_VERSION_MAJOR 2) - endif(NOT Eigen2_FIND_VERSION_MAJOR) - if(NOT Eigen2_FIND_VERSION_MINOR) - set(Eigen2_FIND_VERSION_MINOR 0) - endif(NOT Eigen2_FIND_VERSION_MINOR) - if(NOT Eigen2_FIND_VERSION_PATCH) - set(Eigen2_FIND_VERSION_PATCH 0) - endif(NOT Eigen2_FIND_VERSION_PATCH) +if(NOT EIGEN_FIND_VERSION) + if(NOT EIGEN_FIND_VERSION_MAJOR) + set(EIGEN_FIND_VERSION_MAJOR 2) + endif() + if(NOT EIGEN_FIND_VERSION_MINOR) + set(EIGEN_FIND_VERSION_MINOR 0) + endif() + if(NOT EIGEN_FIND_VERSION_PATCH) + set(EIGEN_FIND_VERSION_PATCH 0) + endif() - set(Eigen2_FIND_VERSION "${Eigen2_FIND_VERSION_MAJOR}.${Eigen2_FIND_VERSION_MINOR}.${Eigen2_FIND_VERSION_PATCH}") -endif(NOT Eigen2_FIND_VERSION) + set(EIGEN_FIND_VERSION "${EIGEN_FIND_VERSION_MAJOR}.${EIGEN_FIND_VERSION_MINOR}.${EIGEN_FIND_VERSION_PATCH}") +endif() -macro(_eigen2_check_version) - file(READ "${EIGEN_IPATH}/Eigen/src/Core/util/Macros.h" _eigen2_version_header) - string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen2_world_version_match "${_eigen2_version_header}") - set(EIGEN2_WORLD_VERSION "${CMAKE_MATCH_1}") - string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen2_major_version_match "${_eigen2_version_header}") - set(EIGEN2_MAJOR_VERSION "${CMAKE_MATCH_1}") - string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen2_minor_version_match "${_eigen2_version_header}") - set(EIGEN2_MINOR_VERSION "${CMAKE_MATCH_1}") +macro(_eigen_check_version) + # Read version from Macros.h + file(READ "${EIGEN_IPATH}/Eigen/src/Core/util/Macros.h" _eigen_version_header) - set(EIGEN_VERSION ${EIGEN2_WORLD_VERSION}.${EIGEN2_MAJOR_VERSION}.${EIGEN2_MINOR_VERSION}) - if((${EIGEN2_WORLD_VERSION} NOTEQUAL 2) OR (${EIGEN2_MAJOR_VERSION} GREATER 10) OR (${EIGEN_VERSION} VERSION_LESS ${Eigen2_FIND_VERSION})) + # Parse version from read data + string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen_world_version_match "${_eigen_version_header}") + set(EIGEN_WORLD_VERSION "${CMAKE_MATCH_1}") + string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen_major_version_match "${_eigen_version_header}") + set(EIGEN_MAJOR_VERSION "${CMAKE_MATCH_1}") + string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen_minor_version_match "${_eigen_version_header}") + set(EIGEN_MINOR_VERSION "${CMAKE_MATCH_1}") + + # Set EIGEN_VERSION + set(EIGEN_VERSION ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION}) + + # Make sure Eigen Version is at least the requested version + if((${EIGEN_WORLD_VERSION} NOTEQUAL 2) OR (${EIGEN_MAJOR_VERSION} GREATER 10) OR (${EIGEN_VERSION} VERSION_LESS ${EIGEN_FIND_VERSION})) set(EIGEN_VERSION_OK FALSE) else() set(EIGEN_VERSION_OK TRUE) endif() +endmacro() - if(NOT EIGEN_VERSION_OK) - message(STATUS "Eigen2 version ${EIGEN_VERSION} found in ${EIGEN_IPATH}, " - "but at least version ${Eigen2_FIND_VERSION} is required") - endif(NOT EIGEN_VERSION_OK) -endmacro(_eigen2_check_version) - -if (EIGEN_IPATH) - - # in cache already - _eigen2_check_version() - set(EIGEN2_FOUND ${EIGEN_VERSION_OK}) - -else (EIGEN_IPATH) - - find_path(EIGEN_IPATH NAMES Eigen/Core - PATHS - ${INCLUDE_INSTALL_DIR} - ${KDE4_INCLUDE_DIR} - PATH_SUFFIXES eigen2 - ) +if(EIGEN_IPATH) + # If already in cache, just check that the version is correct + _eigen_check_version() + set(HAVE_EIGEN ${EIGEN_VERSION_OK}) +else() + # Otherwise find it manually + find_path(EIGEN_IPATH + NAMES Eigen/Core + PATHS ${INCLUDE_INSTALL_DIR} + ${KDE4_INCLUDE_DIR} + PATH_SUFFIXES eigen2 + ) + # Checking to make sure it has the write version if(EIGEN_IPATH) - _eigen2_check_version() - endif(EIGEN_IPATH) - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(Eigen2 DEFAULT_MSG EIGEN_IPATH EIGEN_VERSION_OK) + _eigen_check_version() + set(HAVE_EIGEN ${EIGEN_VERSION_OK}) + endif() mark_as_advanced(EIGEN_IPATH) - -endif(EIGEN_IPATH) +endif() diff --git a/cmake/modules/FindEigen3.cmake b/cmake/modules/FindEigen3.cmake index 1992550555..b7d8401675 100644 --- a/cmake/modules/FindEigen3.cmake +++ b/cmake/modules/FindEigen3.cmake @@ -15,66 +15,63 @@ # EIGEN_VERSION - eigen version # -if(NOT Eigen3_FIND_VERSION) - if(NOT Eigen3_FIND_VERSION_MAJOR) - set(Eigen3_FIND_VERSION_MAJOR 2) - endif(NOT Eigen3_FIND_VERSION_MAJOR) - if(NOT Eigen3_FIND_VERSION_MINOR) - set(Eigen3_FIND_VERSION_MINOR 91) - endif(NOT Eigen3_FIND_VERSION_MINOR) - if(NOT Eigen3_FIND_VERSION_PATCH) - set(Eigen3_FIND_VERSION_PATCH 0) - endif(NOT Eigen3_FIND_VERSION_PATCH) +if(NOT EIGEN_FIND_VERSION) + if(NOT EIGEN_FIND_VERSION_MAJOR) + set(EIGEN_FIND_VERSION_MAJOR 2) + endif() + if(NOT EIGEN_FIND_VERSION_MINOR) + set(EIGEN_FIND_VERSION_MINOR 91) + endif() + if(NOT EIGEN_FIND_VERSION_PATCH) + set(EIGEN_FIND_VERSION_PATCH 0) + endif() - set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}") -endif(NOT Eigen3_FIND_VERSION) + set(EIGEN_FIND_VERSION "${EIGEN_FIND_VERSION_MAJOR}.${EIGEN_FIND_VERSION_MINOR}.${EIGEN_FIND_VERSION_PATCH}") +endif() -macro(_eigen3_check_version) - file(READ "${EIGEN_IPATH}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) - string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}") - set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}") - string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}") - set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}") - string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}") - set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}") +macro(_eigen_check_version) + # Read version from Macros.h + file(READ "${EIGEN_IPATH}/Eigen/src/Core/util/Macros.h" _eigen_version_header) - set(EIGEN_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION}) - if(${EIGEN_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) + # Parse version from read data + string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen_world_version_match "${_eigen_version_header}") + set(EIGEN_WORLD_VERSION "${CMAKE_MATCH_1}") + string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen_major_version_match "${_eigen_version_header}") + set(EIGEN_MAJOR_VERSION "${CMAKE_MATCH_1}") + string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen_minor_version_match "${_eigen_version_header}") + set(EIGEN_MINOR_VERSION "${CMAKE_MATCH_1}") + + # Set EIGEN_VERSION + set(EIGEN_VERSION ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION}) + + # Make sure Eigen Version is at least the requested version + if(${EIGEN_VERSION} VERSION_LESS ${EIGEN_FIND_VERSION}) set(EIGEN_VERSION_OK FALSE) - else(${EIGEN_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) + else(${EIGEN_VERSION} VERSION_LESS ${EIGEN_FIND_VERSION}) set(EIGEN_VERSION_OK TRUE) - endif(${EIGEN_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) + endif(${EIGEN_VERSION} VERSION_LESS ${EIGEN_FIND_VERSION}) +endmacro() - if(NOT EIGEN_VERSION_OK) - message(STATUS "Eigen3 version ${EIGEN_VERSION} found in ${EIGEN_IPATH}, " - "but at least version ${Eigen3_FIND_VERSION} is required") - endif(NOT EIGEN_VERSION_OK) -endmacro(_eigen3_check_version) - -if (EIGEN_IPATH) - - # in cache already - _eigen3_check_version() +if(EIGEN_IPATH) + # If already in cache, just check that the version is correct + _eigen_check_version() set(HAVE_EIGEN ${EIGEN_VERSION_OK}) +else() + # Otherwise find it manually + find_path(EIGEN_IPATH + NAMES signature_of_eigen3_matrix_library + PATHS ${CMAKE_INSTALL_PREFIX}/include + ${KDE4_INCLUDE_DIR} + PATH_SUFFIXES eigen3 eigen + ) -else (EIGEN_IPATH) - - find_path(EIGEN_IPATH NAMES signature_of_eigen3_matrix_library - PATHS - ${CMAKE_INSTALL_PREFIX}/include - ${KDE4_INCLUDE_DIR} - PATH_SUFFIXES eigen3 eigen - ) - + # Checking to make sure it has the write version if(EIGEN_IPATH) - _eigen3_check_version() - endif(EIGEN_IPATH) - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN_IPATH EIGEN_VERSION_OK) + _eigen_check_version() + set(HAVE_EIGEN ${EIGEN_VERSION_OK}) + endif() mark_as_advanced(EIGEN_IPATH) - -endif(EIGEN_IPATH) +endif() diff --git a/dtool/Configure.cmake b/dtool/Configure.cmake index 23f2e4566c..74a1f98c71 100644 --- a/dtool/Configure.cmake +++ b/dtool/Configure.cmake @@ -3,7 +3,7 @@ message("Configuring support for the following optional third-party packages:") # Check for and configure Eigen library -find_package(Eigen3 QUIET) +find_package(Eigen3) if(HAVE_EIGEN) message(STATUS "+ Eigen linear algebra library") if(WIN32) @@ -76,7 +76,7 @@ endif() # Check for and configure TAR library -find_package(Tar QUIET COMPONENTS tar) +find_package(Tar) if(HAVE_TAR) message(STATUS "+ libtar") else()