Require Eigen >= 3.3.4 on aarch64.

- Raised as issue #289:
  https://github.com/ceres-solver/ceres-solver/issues/289.

Change-Id: I35888bf7eb3498cefbf02dadc893b231e0a9229f
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7df2219..88410f2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -205,12 +205,21 @@
 # Eigen.
 find_package(Eigen REQUIRED)
 if (EIGEN_FOUND)
+  message("-- Found Eigen version ${EIGEN_VERSION}: ${EIGEN_INCLUDE_DIRS}")
   if (EIGEN_VERSION VERSION_LESS 3.1.0)
     message(FATAL_ERROR "-- Ceres requires Eigen version >= 3.1.0 in order "
       "that Eigen/SparseCore be available, detected version of Eigen is: "
       "${EIGEN_VERSION}")
   endif (EIGEN_VERSION VERSION_LESS 3.1.0)
-  message("-- Found Eigen version ${EIGEN_VERSION}: ${EIGEN_INCLUDE_DIRS}")
+
+  if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)" AND
+      EIGEN_VERSION VERSION_LESS 3.3.4)
+    # As per issue #289: https://github.com/ceres-solver/ceres-solver/issues/289
+    # the bundle_adjustment_test will fail for Eigen < 3.3.4 on aarch64.
+    message(FATAL_ERROR "-- Ceres requires Eigen version >= 3.3.4 on aarch64. "
+      "Detected version of Eigen is: ${EIGEN_VERSION}.")
+  endif()
+
   if (EIGENSPARSE)
     message("-- Enabling use of Eigen as a sparse linear algebra library.")
     list(APPEND CERES_COMPILE_OPTIONS CERES_USE_EIGEN_SPARSE)