diff --git a/CMakeLists.txt b/CMakeLists.txt index 47c1b5dacf2ec22a7c9fb576a02da7a1dadbf528..89231968eb4b295367aa97bd31c793978dedda34 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 0000000000000000000000000000000000000000..6d2c0abe024fd0a48ec234f774500b76e6254f85 --- /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 1295af1ffbdc6ade270e946b93159b2c504197fa..e6f31ab9ace42215b55332418217fefd586c899b 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()