Browse Source

CMake: Modules: Cleanup FindEigen2/3 and use a consistent format with that of FindTar.cmake.

kestred 12 years ago
parent
commit
57b2079a3f
3 changed files with 95 additions and 101 deletions
  1. 46 49
      cmake/modules/FindEigen2.cmake
  2. 47 50
      cmake/modules/FindEigen3.cmake
  3. 2 2
      dtool/Configure.cmake

+ 46 - 49
cmake/modules/FindEigen2.cmake

@@ -15,66 +15,63 @@
 #  EIGEN_VERSION - eigen version
 #
 
-if(NOT Eigen2_FIND_VERSION)
-	if(NOT Eigen2_FIND_VERSION_MAJOR)
-		set(Eigen2_FIND_VERSION_MAJOR 2)
-	endif(NOT Eigen2_FIND_VERSION_MAJOR)
-	if(NOT Eigen2_FIND_VERSION_MINOR)
-		set(Eigen2_FIND_VERSION_MINOR 0)
-	endif(NOT Eigen2_FIND_VERSION_MINOR)
-	if(NOT Eigen2_FIND_VERSION_PATCH)
-		set(Eigen2_FIND_VERSION_PATCH 0)
-	endif(NOT Eigen2_FIND_VERSION_PATCH)
+if(NOT EIGEN_FIND_VERSION)
+	if(NOT EIGEN_FIND_VERSION_MAJOR)
+		set(EIGEN_FIND_VERSION_MAJOR 2)
+	endif()
+	if(NOT EIGEN_FIND_VERSION_MINOR)
+		set(EIGEN_FIND_VERSION_MINOR 0)
+	endif()
+	if(NOT EIGEN_FIND_VERSION_PATCH)
+		set(EIGEN_FIND_VERSION_PATCH 0)
+	endif()
 
-	set(Eigen2_FIND_VERSION "${Eigen2_FIND_VERSION_MAJOR}.${Eigen2_FIND_VERSION_MINOR}.${Eigen2_FIND_VERSION_PATCH}")
-endif(NOT Eigen2_FIND_VERSION)
+	set(EIGEN_FIND_VERSION "${EIGEN_FIND_VERSION_MAJOR}.${EIGEN_FIND_VERSION_MINOR}.${EIGEN_FIND_VERSION_PATCH}")
+endif()
 
-macro(_eigen2_check_version)
-	file(READ "${EIGEN_IPATH}/Eigen/src/Core/util/Macros.h" _eigen2_version_header)
 
-	string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen2_world_version_match "${_eigen2_version_header}")
-	set(EIGEN2_WORLD_VERSION "${CMAKE_MATCH_1}")
-	string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen2_major_version_match "${_eigen2_version_header}")
-	set(EIGEN2_MAJOR_VERSION "${CMAKE_MATCH_1}")
-	string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen2_minor_version_match "${_eigen2_version_header}")
-	set(EIGEN2_MINOR_VERSION "${CMAKE_MATCH_1}")
+macro(_eigen_check_version)
+	# Read version from Macros.h
+	file(READ "${EIGEN_IPATH}/Eigen/src/Core/util/Macros.h" _eigen_version_header)
 
-	set(EIGEN_VERSION ${EIGEN2_WORLD_VERSION}.${EIGEN2_MAJOR_VERSION}.${EIGEN2_MINOR_VERSION})
-	if((${EIGEN2_WORLD_VERSION} NOTEQUAL 2) OR (${EIGEN2_MAJOR_VERSION} GREATER 10) OR (${EIGEN_VERSION} VERSION_LESS ${Eigen2_FIND_VERSION}))
+	# Parse version from read data
+	string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen_world_version_match "${_eigen_version_header}")
+	set(EIGEN_WORLD_VERSION "${CMAKE_MATCH_1}")
+	string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen_major_version_match "${_eigen_version_header}")
+	set(EIGEN_MAJOR_VERSION "${CMAKE_MATCH_1}")
+	string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen_minor_version_match "${_eigen_version_header}")
+	set(EIGEN_MINOR_VERSION "${CMAKE_MATCH_1}")
+
+	# Set EIGEN_VERSION
+	set(EIGEN_VERSION ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})
+
+	# Make sure Eigen Version is at least the requested version
+	if((${EIGEN_WORLD_VERSION} NOTEQUAL 2) OR (${EIGEN_MAJOR_VERSION} GREATER 10) OR (${EIGEN_VERSION} VERSION_LESS ${EIGEN_FIND_VERSION}))
 		set(EIGEN_VERSION_OK FALSE)
 	else()
 		set(EIGEN_VERSION_OK TRUE)
 	endif()
+endmacro()
 
-	if(NOT EIGEN_VERSION_OK)
-
-		message(STATUS "Eigen2 version ${EIGEN_VERSION} found in ${EIGEN_IPATH}, "
-									 "but at least version ${Eigen2_FIND_VERSION} is required")
-	endif(NOT EIGEN_VERSION_OK)
-endmacro(_eigen2_check_version)
 
-if (EIGEN_IPATH)
-
-	# in cache already
-	_eigen2_check_version()
-	set(EIGEN2_FOUND ${EIGEN_VERSION_OK})
-
-else (EIGEN_IPATH)
-
-	find_path(EIGEN_IPATH NAMES Eigen/Core
-			 PATHS
-			 	${INCLUDE_INSTALL_DIR}
-			 	${KDE4_INCLUDE_DIR}
-			 PATH_SUFFIXES eigen2
-		 )
+if(EIGEN_IPATH)
+	# If already in cache, just check that the version is correct
+	_eigen_check_version()
+	set(HAVE_EIGEN ${EIGEN_VERSION_OK})
+else()
+	# Otherwise find it manually
+	find_path(EIGEN_IPATH
+		NAMES Eigen/Core
+		PATHS ${INCLUDE_INSTALL_DIR}
+		      ${KDE4_INCLUDE_DIR}
+		PATH_SUFFIXES eigen2
+	)
 
+	# Checking to make sure it has the write version
 	if(EIGEN_IPATH)
-		_eigen2_check_version()
-	endif(EIGEN_IPATH)
-
-	include(FindPackageHandleStandardArgs)
-	find_package_handle_standard_args(Eigen2 DEFAULT_MSG EIGEN_IPATH EIGEN_VERSION_OK)
+		_eigen_check_version()
+		set(HAVE_EIGEN ${EIGEN_VERSION_OK})
+	endif()
 
 	mark_as_advanced(EIGEN_IPATH)
-
-endif(EIGEN_IPATH)
+endif()

+ 47 - 50
cmake/modules/FindEigen3.cmake

@@ -15,66 +15,63 @@
 #  EIGEN_VERSION - eigen version
 #
 
-if(NOT Eigen3_FIND_VERSION)
-	if(NOT Eigen3_FIND_VERSION_MAJOR)
-		set(Eigen3_FIND_VERSION_MAJOR 2)
-	endif(NOT Eigen3_FIND_VERSION_MAJOR)
-	if(NOT Eigen3_FIND_VERSION_MINOR)
-		set(Eigen3_FIND_VERSION_MINOR 91)
-	endif(NOT Eigen3_FIND_VERSION_MINOR)
-	if(NOT Eigen3_FIND_VERSION_PATCH)
-		set(Eigen3_FIND_VERSION_PATCH 0)
-	endif(NOT Eigen3_FIND_VERSION_PATCH)
+if(NOT EIGEN_FIND_VERSION)
+	if(NOT EIGEN_FIND_VERSION_MAJOR)
+		set(EIGEN_FIND_VERSION_MAJOR 2)
+	endif()
+	if(NOT EIGEN_FIND_VERSION_MINOR)
+		set(EIGEN_FIND_VERSION_MINOR 91)
+	endif()
+	if(NOT EIGEN_FIND_VERSION_PATCH)
+		set(EIGEN_FIND_VERSION_PATCH 0)
+	endif()
 
-	set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}")
-endif(NOT Eigen3_FIND_VERSION)
+	set(EIGEN_FIND_VERSION "${EIGEN_FIND_VERSION_MAJOR}.${EIGEN_FIND_VERSION_MINOR}.${EIGEN_FIND_VERSION_PATCH}")
+endif()
 
-macro(_eigen3_check_version)
-	file(READ "${EIGEN_IPATH}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
 
-	string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}")
-	set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")
-	string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}")
-	set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
-	string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}")
-	set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")
+macro(_eigen_check_version)
+	# Read version from Macros.h
+	file(READ "${EIGEN_IPATH}/Eigen/src/Core/util/Macros.h" _eigen_version_header)
 
-	set(EIGEN_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION})
-	if(${EIGEN_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
-		set(EIGEN_VERSION_OK FALSE)
-	else(${EIGEN_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
-		set(EIGEN_VERSION_OK TRUE)
-	endif(${EIGEN_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
+	# Parse version from read data
+	string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen_world_version_match "${_eigen_version_header}")
+	set(EIGEN_WORLD_VERSION "${CMAKE_MATCH_1}")
+	string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen_major_version_match "${_eigen_version_header}")
+	set(EIGEN_MAJOR_VERSION "${CMAKE_MATCH_1}")
+	string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen_minor_version_match "${_eigen_version_header}")
+	set(EIGEN_MINOR_VERSION "${CMAKE_MATCH_1}")
 
-	if(NOT EIGEN_VERSION_OK)
+	# Set EIGEN_VERSION
+	set(EIGEN_VERSION ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})
 
-		message(STATUS "Eigen3 version ${EIGEN_VERSION} found in ${EIGEN_IPATH}, "
-									 "but at least version ${Eigen3_FIND_VERSION} is required")
-	endif(NOT EIGEN_VERSION_OK)
-endmacro(_eigen3_check_version)
+	# Make sure Eigen Version is at least the requested version
+	if(${EIGEN_VERSION} VERSION_LESS ${EIGEN_FIND_VERSION})
+		set(EIGEN_VERSION_OK FALSE)
+	else(${EIGEN_VERSION} VERSION_LESS ${EIGEN_FIND_VERSION})
+		set(EIGEN_VERSION_OK TRUE)
+	endif(${EIGEN_VERSION} VERSION_LESS ${EIGEN_FIND_VERSION})
+endmacro()
 
-if (EIGEN_IPATH)
 
-	# in cache already
-	_eigen3_check_version()
+if(EIGEN_IPATH)
+	# If already in cache, just check that the version is correct
+	_eigen_check_version()
 	set(HAVE_EIGEN ${EIGEN_VERSION_OK})
+else()
+	# Otherwise find it manually
+	find_path(EIGEN_IPATH
+		NAMES signature_of_eigen3_matrix_library
+		PATHS ${CMAKE_INSTALL_PREFIX}/include
+		      ${KDE4_INCLUDE_DIR}
+		PATH_SUFFIXES eigen3 eigen
+	)
 
-else (EIGEN_IPATH)
-
-	find_path(EIGEN_IPATH NAMES signature_of_eigen3_matrix_library
-			PATHS
-				${CMAKE_INSTALL_PREFIX}/include
-				${KDE4_INCLUDE_DIR}
-			PATH_SUFFIXES eigen3 eigen
-		)
-
+	# Checking to make sure it has the write version
 	if(EIGEN_IPATH)
-		_eigen3_check_version()
-	endif(EIGEN_IPATH)
-
-	include(FindPackageHandleStandardArgs)
-	find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN_IPATH EIGEN_VERSION_OK)
+		_eigen_check_version()
+		set(HAVE_EIGEN ${EIGEN_VERSION_OK})
+	endif()
 
 	mark_as_advanced(EIGEN_IPATH)
-
-endif(EIGEN_IPATH)
+endif()

+ 2 - 2
dtool/Configure.cmake

@@ -3,7 +3,7 @@ message("Configuring support for the following optional third-party packages:")
 
 
 # Check for and configure Eigen library
-find_package(Eigen3 QUIET)
+find_package(Eigen3)
 if(HAVE_EIGEN)
     message(STATUS "+ Eigen linear algebra library")
     if(WIN32)
@@ -76,7 +76,7 @@ endif()
 
 
 # Check for and configure TAR library
-find_package(Tar QUIET COMPONENTS tar)
+find_package(Tar)
 if(HAVE_TAR)
     message(STATUS "+ libtar")
 else()