Move check for non-standard Eigen installs into FindEigen.cmake
- As part of adding support for detection of non-standard Homebrew
install on OSX, an Eigen specific search directory was added to the
search path in the main CMakeLists. This commit moves that search
into FindEigen.cmake.
Change-Id: Ia6142211961a0d1fdddeea77b83438e4ef94434f
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 608ce5a..49b36cc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -77,11 +77,8 @@
OUTPUT_STRIP_TRAILING_WHITESPACE)
MESSAGE(STATUS "Detected Homebrew with install prefix: "
"${HOMEBREW_INSTALL_PREFIX}, adding to CMake search paths.")
+ LIST(APPEND CMAKE_PREFIX_PATH "${HOMEBREW_INSTALL_PREFIX}")
ENDIF()
- # Note that Eigen is stored in <XXX>/include/eigen3/Eigen/XXX.h
- # as such, the default prefix path on it's own is insufficient.
- LIST(APPEND CMAKE_PREFIX_PATH "${HOMEBREW_INSTALL_PREFIX}"
- "${HOMEBREW_INSTALL_PREFIX}/include/eigen3")
ENDIF()
# Make CMake aware of the cmake folder for local FindXXX scripts,
diff --git a/cmake/FindEigen.cmake b/cmake/FindEigen.cmake
index 2cd3e12..0d8d1cd 100644
--- a/cmake/FindEigen.cmake
+++ b/cmake/FindEigen.cmake
@@ -98,6 +98,18 @@
NAMES Eigen/Core
PATHS ${EIGEN_INCLUDE_DIR_HINTS}
${EIGEN_CHECK_INCLUDE_DIRS})
+IF (NOT EIGEN_INCLUDE_DIR)
+ # Handle case where user / CMAKE_PREFIX_PATH does not specify the
+ # required eigen3 subdirectory, prepend it to search target and retry.
+ FIND_PATH(EIGEN_INCLUDE_DIR
+ NAMES eigen3/Eigen/Core
+ PATHS ${EIGEN_INCLUDE_DIR_HINTS}
+ ${EIGEN_CHECK_INCLUDE_DIRS})
+ IF (EIGEN_INCLUDE_DIR AND EXISTS ${EIGEN_INCLUDE_DIR})
+ UPDATE_CACHE_VARIABLE(EIGEN_INCLUDE_DIR "${EIGEN_INCLUDE_DIR}/eigen3")
+ ENDIF (EIGEN_INCLUDE_DIR AND EXISTS ${EIGEN_INCLUDE_DIR})
+ENDIF(NOT EIGEN_INCLUDE_DIR)
+
IF (NOT EIGEN_INCLUDE_DIR OR
NOT EXISTS ${EIGEN_INCLUDE_DIR})
EIGEN_REPORT_NOT_FOUND(