From 17696834de42f640ae97f4982ee650eafe89c63e Mon Sep 17 00:00:00 2001 From: Lars Bilke <lars.bilke@ufz.de> Date: Tue, 10 Sep 2013 12:39:50 +0200 Subject: [PATCH] Download Eigen into the build dir if it is not found on the system. --- CMakeLists.txt | 3 ++ scripts/cmake/ExternalProjectEigen.cmake | 35 ++++++++++++++++++++++++ scripts/cmake/Find.cmake | 5 ---- 3 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 scripts/cmake/ExternalProjectEigen.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 47c1b5dacf2..89231968eb4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,6 +98,9 @@ ENDIF() #OGS_PACKAGING OPTION(Boost_USE_STATIC_LIBS "This option has to be set from the command line (before boost gets found)!" OFF) INCLUDE(scripts/cmake/ExternalProjectBoost.cmake) INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIRS} ) +IF(OGS_USE_EIGEN) + INCLUDE(scripts/cmake/ExternalProjectEigen.cmake) +ENDIF() # Add subdirectories with the projects ADD_SUBDIRECTORY( ThirdParty ) diff --git a/scripts/cmake/ExternalProjectEigen.cmake b/scripts/cmake/ExternalProjectEigen.cmake new file mode 100644 index 00000000000..6d2c0abe024 --- /dev/null +++ b/scripts/cmake/ExternalProjectEigen.cmake @@ -0,0 +1,35 @@ +MESSAGE(STATUS "Eigen inc: ${EIGEN3_INCLUDE_DIR}") + +IF(EIGEN3_FOUND) + RETURN() +ENDIF() + +# First check for system Eigen +IF(NOT EIGEN3_INCLUDE_DIR) + FIND_PACKAGE(Eigen3) + IF(EIGEN3_FOUND) + SET(EIGEN3_FOUND TRUE CACHE BOOL "Was Eigen found?" FORCE) + SET(EIGEN3_INCLUDE_DIR "${EIGEN3_INCLUDE_DIR}" CACHE STRING "Eigen include dir" FORCE) + RETURN() + ELSE() + SET(EIGEN3_INCLUDE_DIR "") + ENDIF() +ENDIF() + +ExternalProject_Add(Eigen + PREFIX ${CMAKE_BINARY_DIR}/External/eigen + URL http://bitbucket.org/eigen/eigen/get/3.2.0.tar.gz + URL_MD5 9559c34af203dde5f3f1d976d859c5b3 + UPDATE_COMMAND "" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + BUILD_IN_SOURCE 1 + INSTALL_COMMAND "" +) +ExternalProject_Get_Property( Eigen source_dir ) + +IF(NOT EIGEN3_INCLUDE_DIR) + SET(EIGEN3_FOUND TRUE CACHE BOOL "Was Eigen found?" FORCE) + SET( EIGEN3_INCLUDE_DIR ${source_dir} CACHE INTERNAL "Eigen include dir") + MESSAGE(STATUS "Downloading Eigen automatically.") +ENDIF() diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake index 1295af1ffbd..e6f31ab9ace 100644 --- a/scripts/cmake/Find.cmake +++ b/scripts/cmake/Find.cmake @@ -165,8 +165,3 @@ ENDIF() # Shapelib_FOUND IF(OGS_USE_LIS) FIND_PACKAGE( LIS REQUIRED ) ENDIF() - -## Eigen ## -IF(OGS_USE_EIGEN) - FIND_PACKAGE( Eigen3 REQUIRED ) -ENDIF() -- GitLab