aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Silvio Traversaro <silvio.traversaro@iit.it>2016-12-06 10:37:34 +0100
committerGravatar Silvio Traversaro <silvio.traversaro@iit.it>2016-12-06 10:37:34 +0100
commite049a2a72a307cad9e078077148c6d3ee9552412 (patch)
tree9bf62c0e4ea91da57e20bd5e9f41da7232d991bd
parent18481b518fd05bb7007210949350d4104b70e7f5 (diff)
Added relocatable cmake support also for CMake before 3.0 and after 2.8.8
-rw-r--r--CMakeLists.txt29
-rw-r--r--cmake/Eigen3ConfigLegacy.cmake.in8
2 files changed, 29 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 767f4d5ea..7237b54df 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -507,7 +507,6 @@ set ( EIGEN_VERSION_MINOR ${EIGEN_MAJOR_VERSION} )
set ( EIGEN_VERSION_PATCH ${EIGEN_MINOR_VERSION} )
set ( EIGEN_DEFINITIONS "")
set ( EIGEN_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}" )
-set ( EIGEN_INCLUDE_DIRS ${EIGEN_INCLUDE_DIR} )
set ( EIGEN_ROOT_DIR ${CMAKE_INSTALL_PREFIX} )
# Interface libraries require at least CMake 3.0
@@ -561,10 +560,30 @@ if (NOT CMAKE_VERSION VERSION_LESS 3.0)
DESTINATION ${CMAKEPACKAGE_INSTALL_DIR})
else (NOT CMAKE_VERSION VERSION_LESS 3.0)
# Fallback to legacy Eigen3Config.cmake without the imported target
- configure_file ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Eigen3ConfigLegacy.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/Eigen3Config.cmake
- @ONLY ESCAPE_QUOTES
- )
+
+ # If CMakePackageConfigHelpers module is available (CMake >= 2.8.8)
+ # create a relocatable Config file, otherwise leave the hardcoded paths
+ include(CMakePackageConfigHelpers OPTIONAL RESULT_VARIABLE CPCH_PATH)
+
+ if(CPCH_PATH)
+ configure_package_config_file (
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Eigen3ConfigLegacy.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/Eigen3Config.cmake
+ PATH_VARS EIGEN_INCLUDE_DIR EIGEN_ROOT_DIR
+ INSTALL_DESTINATION ${CMAKEPACKAGE_INSTALL_DIR}
+ NO_CHECK_REQUIRED_COMPONENTS_MACRO # Eigen does not provide components
+ )
+ else()
+ # The PACKAGE_* variables are defined by the configure_package_config_file
+ # but without it we define them manually to the hardcoded paths
+ set(PACKAGE_INIT "")
+ set(PACKAGE_EIGEN_INCLUDE_DIR ${EIGEN_INCLUDE_DIR})
+ set(PACKAGE_EIGEN_ROOT_DIR ${EIGEN_ROOT_DIR})
+ configure_file ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Eigen3ConfigLegacy.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/Eigen3Config.cmake
+ @ONLY ESCAPE_QUOTES
+ )
+ endif()
install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/UseEigen3.cmake
${CMAKE_CURRENT_BINARY_DIR}/Eigen3Config.cmake
diff --git a/cmake/Eigen3ConfigLegacy.cmake.in b/cmake/Eigen3ConfigLegacy.cmake.in
index 04e7886ce..62d722469 100644
--- a/cmake/Eigen3ConfigLegacy.cmake.in
+++ b/cmake/Eigen3ConfigLegacy.cmake.in
@@ -14,13 +14,15 @@
# EIGEN3_VERSION_MINOR - The minor version of Eigen
# EIGEN3_VERSION_PATCH - The patch version of Eigen
+@PACKAGE_INIT@
+
set ( EIGEN3_FOUND 1 )
set ( EIGEN3_USE_FILE "${CMAKE_CURRENT_LIST_DIR}/UseEigen3.cmake" )
set ( EIGEN3_DEFINITIONS "@EIGEN_DEFINITIONS@" )
-set ( EIGEN3_INCLUDE_DIR "@EIGEN_INCLUDE_DIR@" )
-set ( EIGEN3_INCLUDE_DIRS "@EIGEN_INCLUDE_DIRS@" )
-set ( EIGEN3_ROOT_DIR "@EIGEN_ROOT_DIR@" )
+set ( EIGEN3_INCLUDE_DIR "@PACKAGE_EIGEN_INCLUDE_DIR@" )
+set ( EIGEN3_INCLUDE_DIRS "@PACKAGE_EIGEN_INCLUDE_DIR@" )
+set ( EIGEN3_ROOT_DIR "@PACKAGE_EIGEN_ROOT_DIR@" )
set ( EIGEN3_VERSION_STRING "@EIGEN_VERSION_STRING@" )
set ( EIGEN3_VERSION_MAJOR "@EIGEN_VERSION_MAJOR@" )