[Bf-blender-cvs] [4b88541] master: CMake: unbundle eigen3

Campbell Barton noreply at git.blender.org
Thu Mar 19 05:48:55 CET 2015


Commit: 4b88541d59302d4e65ecc66093a367091538c32d
Author: Campbell Barton
Date:   Thu Mar 19 15:41:41 2015 +1100
Branches: master
https://developer.blender.org/rB4b88541d59302d4e65ecc66093a367091538c32d

CMake: unbundle eigen3

Optionally use systems eigen3 library.

T41989 by @hasufell with edits

===================================================================

M	CMakeLists.txt
A	build_files/cmake/Modules/FindEigen3.cmake
M	extern/libmv/CMakeLists.txt
M	extern/libmv/bundle.sh
M	extern/libmv/third_party/ceres/CMakeLists.txt
M	extern/libmv/third_party/ceres/bundle.sh
M	intern/dualcon/CMakeLists.txt
M	intern/itasc/CMakeLists.txt
M	source/blender/ikplugin/CMakeLists.txt
M	source/gameengine/Converter/CMakeLists.txt

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8e54ddc..2e8552f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -261,6 +261,10 @@ endif()
 # (unix defaults to System OpenJPEG On)
 option(WITH_SYSTEM_OPENJPEG "Use the operating systems OpenJPEG library" OFF)
 
+if(UNIX AND NOT APPLE)
+	option(WITH_SYSTEM_EIGEN3 "Use the systems Eigen3 library" OFF)
+endif()
+
 
 # Modifiers
 option(WITH_MOD_FLUID           "Enable Elbeem Modifier (Fluid Simulation)" ON)
@@ -811,6 +815,14 @@ if(UNIX AND NOT APPLE)
 		endif()
 	endif()
 
+	if(WITH_SYSTEM_EIGEN3)
+		find_package_wrapper(Eigen3)
+		if(NOT EIGEN3_FOUND)
+			message(FATAL_ERROR "Failed finding system Eigen3 version!")
+		endif()
+	endif()
+	# else values are set below for all platforms
+
 	if(WITH_PYTHON)
 		# No way to set py34. remove for now.
 		# find_package(PythonLibs)
@@ -2246,6 +2258,9 @@ if(WITH_IMAGE_REDCODE)
 	set(REDCODE_INC ${REDCODE})
 endif()
 
+if(NOT WITH_SYSTEM_EIGEN3)
+	set(EIGEN3_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/Eigen3)
+endif()
 
 #-----------------------------------------------------------------------------
 # Configure OpenGL.
diff --git a/build_files/cmake/Modules/FindEigen3.cmake b/build_files/cmake/Modules/FindEigen3.cmake
new file mode 100644
index 0000000..400e8eb
--- /dev/null
+++ b/build_files/cmake/Modules/FindEigen3.cmake
@@ -0,0 +1,56 @@
+# - Find Eigen3 library
+# Find the native Eigen3 includes and library
+# This module defines
+#  EIGEN3_INCLUDE_DIRS, where to find spnav.h, Set when
+#                        EIGEN3_INCLUDE_DIR is found.
+#  EIGEN3_ROOT_DIR, The base directory to search for Eigen3.
+#                    This can also be an environment variable.
+#  EIGEN3_FOUND, If false, do not try to use Eigen3.
+#
+#=============================================================================
+# Copyright 2015 Blender Foundation.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+
+# If EIGEN3_ROOT_DIR was defined in the environment, use it.
+IF(NOT EIGEN3_ROOT_DIR AND NOT $ENV{EIGEN3_ROOT_DIR} STREQUAL "")
+  SET(EIGEN3_ROOT_DIR $ENV{EIGEN3_ROOT_DIR})
+ENDIF()
+
+SET(_eigen3_SEARCH_DIRS
+  ${EIGEN3_ROOT_DIR}
+  /usr/local
+  /sw # Fink
+  /opt/local # DarwinPorts
+  /opt/csw # Blastwave
+)
+
+FIND_PATH(EIGEN3_INCLUDE_DIR
+  NAMES
+    # header has no '.h' suffix
+    Eigen/Eigen
+  HINTS
+    ${_eigen3_SEARCH_DIRS}
+  PATH_SUFFIXES
+    include/eigen3
+)
+
+# handle the QUIETLY and REQUIRED arguments and set EIGEN3_FOUND to TRUE if 
+# all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Eigen3 DEFAULT_MSG
+    EIGEN3_INCLUDE_DIR)
+
+IF(EIGEN3_FOUND)
+  SET(EIGEN3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
+ENDIF(EIGEN3_FOUND)
+
+MARK_AS_ADVANCED(
+  EIGEN3_INCLUDE_DIR
+)
diff --git a/extern/libmv/CMakeLists.txt b/extern/libmv/CMakeLists.txt
index 80e6404..0897435 100644
--- a/extern/libmv/CMakeLists.txt
+++ b/extern/libmv/CMakeLists.txt
@@ -48,7 +48,7 @@ if(WITH_LIBMV OR WITH_GTESTS OR (WITH_CYCLES AND WITH_CYCLES_LOGGING))
 	)
 
 	list(APPEND INC_SYS
-		../Eigen3
+		${EIGEN3_INCLUDE_DIRS}
 		${PNG_INCLUDE_DIRS}
 		${ZLIB_INCLUDE_DIRS}
 	)
diff --git a/extern/libmv/bundle.sh b/extern/libmv/bundle.sh
index 66023fa..ac41900 100755
--- a/extern/libmv/bundle.sh
+++ b/extern/libmv/bundle.sh
@@ -141,7 +141,7 @@ if(WITH_LIBMV OR WITH_GTESTS OR (WITH_CYCLES AND WITH_CYCLES_LOGGING))
 	)
 
 	list(APPEND INC_SYS
-		../Eigen3
+		\${EIGEN3_INCLUDE_DIRS}
 		\${PNG_INCLUDE_DIRS}
 		\${ZLIB_INCLUDE_DIRS}
 	)
diff --git a/extern/libmv/third_party/ceres/CMakeLists.txt b/extern/libmv/third_party/ceres/CMakeLists.txt
index 0ca888f..694982e 100644
--- a/extern/libmv/third_party/ceres/CMakeLists.txt
+++ b/extern/libmv/third_party/ceres/CMakeLists.txt
@@ -36,7 +36,7 @@ set(INC
 )
 
 set(INC_SYS
-	../../../Eigen3
+	${EIGEN3_INCLUDE_DIRS}
 )
 
 set(SRC
diff --git a/extern/libmv/third_party/ceres/bundle.sh b/extern/libmv/third_party/ceres/bundle.sh
index 659f29e..0becc87 100755
--- a/extern/libmv/third_party/ceres/bundle.sh
+++ b/extern/libmv/third_party/ceres/bundle.sh
@@ -129,7 +129,7 @@ set(INC
 )
 
 set(INC_SYS
-	../../../Eigen3
+	${EIGEN3_INCLUDE_DIRS}
 )
 
 set(SRC
diff --git a/intern/dualcon/CMakeLists.txt b/intern/dualcon/CMakeLists.txt
index da5e10f..40c8ef8 100644
--- a/intern/dualcon/CMakeLists.txt
+++ b/intern/dualcon/CMakeLists.txt
@@ -22,7 +22,7 @@ set(INC
 )
 
 set(INC_SYS
-	../../extern/Eigen3
+	${EIGEN3_INCLUDE_DIRS}
 )
 
 set(SRC
diff --git a/intern/itasc/CMakeLists.txt b/intern/itasc/CMakeLists.txt
index bc3ea0c..bdf0f88 100644
--- a/intern/itasc/CMakeLists.txt
+++ b/intern/itasc/CMakeLists.txt
@@ -28,9 +28,244 @@ set(INC
 )
 
 set(INC_SYS
-	../../extern/Eigen3
+	${EIGEN3_INCLUDE_DIRS}
 )
 
+if(NOT WITH_SYSTEM_EIGEN3)
+	set(EIGEN3_HEADERS
+		# until we have another user...
+		../../extern/Eigen3/Eigen/src/Cholesky/LDLT.h
+		../../extern/Eigen3/Eigen/src/Cholesky/LLT.h
+		../../extern/Eigen3/Eigen/src/Cholesky/LLT_MKL.h
+		../../extern/Eigen3/Eigen/src/CholmodSupport/CholmodSupport.h
+		../../extern/Eigen3/Eigen/src/Core/Array.h
+		../../extern/Eigen3/Eigen/src/Core/ArrayBase.h
+		../../extern/Eigen3/Eigen/src/Core/ArrayWrapper.h
+		../../extern/Eigen3/Eigen/src/Core/Assign.h
+		../../extern/Eigen3/Eigen/src/Core/Assign_MKL.h
+		../../extern/Eigen3/Eigen/src/Core/BandMatrix.h
+		../../extern/Eigen3/Eigen/src/Core/Block.h
+		../../extern/Eigen3/Eigen/src/Core/BooleanRedux.h
+		../../extern/Eigen3/Eigen/src/Core/CommaInitializer.h
+		../../extern/Eigen3/Eigen/src/Core/CwiseBinaryOp.h
+		../../extern/Eigen3/Eigen/src/Core/CwiseNullaryOp.h
+		../../extern/Eigen3/Eigen/src/Core/CwiseUnaryOp.h
+		../../extern/Eigen3/Eigen/src/Core/CwiseUnaryView.h
+		../../extern/Eigen3/Eigen/src/Core/DenseBase.h
+		../../extern/Eigen3/Eigen/src/Core/DenseCoeffsBase.h
+		../../extern/Eigen3/Eigen/src/Core/DenseStorage.h
+		../../extern/Eigen3/Eigen/src/Core/Diagonal.h
+		../../extern/Eigen3/Eigen/src/Core/DiagonalMatrix.h
+		../../extern/Eigen3/Eigen/src/Core/DiagonalProduct.h
+		../../extern/Eigen3/Eigen/src/Core/Dot.h
+		../../extern/Eigen3/Eigen/src/Core/EigenBase.h
+		../../extern/Eigen3/Eigen/src/Core/Flagged.h
+		../../extern/Eigen3/Eigen/src/Core/ForceAlignedAccess.h
+		../../extern/Eigen3/Eigen/src/Core/Functors.h
+		../../extern/Eigen3/Eigen/src/Core/Fuzzy.h
+		../../extern/Eigen3/Eigen/src/Core/GeneralProduct.h
+		../../extern/Eigen3/Eigen/src/Core/GenericPacketMath.h
+		../../extern/Eigen3/Eigen/src/Core/GlobalFunctions.h
+		../../extern/Eigen3/Eigen/src/Core/IO.h
+		../../extern/Eigen3/Eigen/src/Core/Map.h
+		../../extern/Eigen3/Eigen/src/Core/MapBase.h
+		../../extern/Eigen3/Eigen/src/Core/MathFunctions.h
+		../../extern/Eigen3/Eigen/src/Core/Matrix.h
+		../../extern/Eigen3/Eigen/src/Core/MatrixBase.h
+		../../extern/Eigen3/Eigen/src/Core/NestByValue.h
+		../../extern/Eigen3/Eigen/src/Core/NoAlias.h
+		../../extern/Eigen3/Eigen/src/Core/NumTraits.h
+		../../extern/Eigen3/Eigen/src/Core/PermutationMatrix.h
+		../../extern/Eigen3/Eigen/src/Core/PlainObjectBase.h
+		../../extern/Eigen3/Eigen/src/Core/Product.h
+		../../extern/Eigen3/Eigen/src/Core/ProductBase.h
+		../../extern/Eigen3/Eigen/src/Core/Random.h
+		../../extern/Eigen3/Eigen/src/Core/Redux.h
+		../../extern/Eigen3/Eigen/src/Core/Replicate.h
+		../../extern/Eigen3/Eigen/src/Core/ReturnByValue.h
+		../../extern/Eigen3/Eigen/src/Core/Reverse.h
+		../../extern/Eigen3/Eigen/src/Core/Select.h
+		../../extern/Eigen3/Eigen/src/Core/SelfAdjointView.h
+		../../extern/Eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h
+		../../extern/Eigen3/Eigen/src/Core/SolveTriangular.h
+		../../extern/Eigen3/Eigen/src/Core/StableNorm.h
+		../../extern/Eigen3/Eigen/src/Core/Stride.h
+		../../extern/Eigen3/Eigen/src/Core/Swap.h
+		../../extern/Eigen3/Eigen/src/Core/Transpose.h
+		../../extern/Eigen3/Eigen/src/Core/Transpositions.h
+		../../extern/Eigen3/Eigen/src/Core/TriangularMatrix.h
+		../../extern/Eigen3/Eigen/src/Core/VectorBlock.h
+		../../extern/Eigen3/Eigen/src/Core/VectorwiseOp.h
+		../../extern/Eigen3/Eigen/src/Core/Visitor.h
+		../../extern/Eigen3/Eigen/src/Core/arch/AltiVec/Complex.h
+		../../extern/Eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h
+		../../extern/Eigen3/Eigen/src/Core/arch/Default/Settings.h
+		../../extern/Eigen3/Eigen/src/Core/arch/NEON/Complex.h
+		../../extern/Eigen3/Eigen/src/Core/arch/NEON/PacketMath.h
+		../../extern/Eigen3/Eigen/src/Core/arch/SSE/Complex.h
+		../../extern/Eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h
+		../../extern/Eigen3/Eigen/src/Core/arch/SSE/PacketMath.h
+		../../extern/Eigen3/Eigen/src/Core/products/CoeffBasedProduct.h
+		../../extern/Eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h
+		../../extern/Eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h
+		../../extern/Eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h
+		../../extern/Eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h
+		../../extern/Eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h
+		../../extern/Eigen3/Eigen/src/Core/products/GeneralMatrixVector.h
+		../../extern/Eigen3/Eigen/src/Core/products/GeneralMatrixVector_MKL.h
+		../../extern/Eigen3/Eigen/src/Core/products/Parallelizer.h
+		../../extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h
+		../../extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h
+		../../extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h
+		../../extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h
+		../../extern/Eigen3/Eigen/src/Core/products/SelfadjointProduct.h
+		../../extern/Eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h
+		../../extern/Eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h
+		../../extern/Eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h
+		../../extern/Eigen3/Eigen/src/Core/products/TriangularMatrixVector.h
+		../../extern/Eigen3/Eigen/src/Core/products/TriangularMatrixV

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list