mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-01-12 14:25:16 +08:00
e6f1104b57
* extend PartialRedux::cross() to any matrix sizes with automatic vectorization when possible * unit tests: add "geo_" prefix to all unit tests related to the geometry module and start splitting the big "geometry.cpp" tests to multiple smaller ones (also include new tests)
208 lines
6.3 KiB
CMake
208 lines
6.3 KiB
CMake
|
|
find_package(GSL)
|
|
if(GSL_FOUND AND GSL_VERSION_MINOR LESS 9)
|
|
set(GSL_FOUND "")
|
|
endif(GSL_FOUND AND GSL_VERSION_MINOR LESS 9)
|
|
if(GSL_FOUND)
|
|
add_definitions("-DHAS_GSL" ${GSL_DEFINITIONS})
|
|
include_directories(${GSL_INCLUDE_DIR})
|
|
else(GSL_FOUND)
|
|
set(GSL_LIBRARIES " ")
|
|
endif(GSL_FOUND)
|
|
|
|
set(SPARSE_LIBS "")
|
|
set(EIGEN_TESTED_BACKENDS "")
|
|
set(EIGEN_MISSING_BACKENDS "")
|
|
|
|
find_package(Taucs)
|
|
if(TAUCS_FOUND)
|
|
add_definitions("-DEIGEN_TAUCS_SUPPORT")
|
|
include_directories(${TAUCS_INCLUDES})
|
|
set(SPARSE_LIBS ${SPARSE_LIBS} ${TAUCS_LIBRARIES})
|
|
set(EIGEN_TESTED_BACKENDS ${EIGEN_TESTED_BACKENDS} Taucs)
|
|
else(TAUCS_FOUND)
|
|
set(EIGEN_MISSING_BACKENDS ${EIGEN_MISSING_BACKENDS} Taucs)
|
|
endif(TAUCS_FOUND)
|
|
|
|
find_package(Cholmod)
|
|
if(CHOLMOD_FOUND)
|
|
add_definitions("-DEIGEN_CHOLMOD_SUPPORT")
|
|
include_directories(${CHOLMOD_INCLUDES})
|
|
set(SPARSE_LIBS ${SPARSE_LIBS} ${CHOLMOD_LIBRARIES})
|
|
set(EIGEN_TESTED_BACKENDS ${EIGEN_TESTED_BACKENDS} Cholmod)
|
|
else(CHOLMOD_FOUND)
|
|
set(EIGEN_MISSING_BACKENDS ${EIGEN_MISSING_BACKENDS} Cholmod)
|
|
endif(CHOLMOD_FOUND)
|
|
|
|
find_package(Umfpack)
|
|
if(UMFPACK_FOUND)
|
|
add_definitions("-DEIGEN_UMFPACK_SUPPORT")
|
|
include_directories(${UMFPACK_INCLUDES})
|
|
set(SPARSE_LIBS ${SPARSE_LIBS} ${UMFPACK_LIBRARIES})
|
|
set(EIGEN_TESTED_BACKENDS ${EIGEN_TESTED_BACKENDS} UmfPack)
|
|
else(UMFPACK_FOUND)
|
|
set(EIGEN_MISSING_BACKENDS ${EIGEN_MISSING_BACKENDS} UmfPack)
|
|
endif(UMFPACK_FOUND)
|
|
|
|
find_package(SuperLU)
|
|
if(SUPERLU_FOUND)
|
|
add_definitions("-DEIGEN_SUPERLU_SUPPORT")
|
|
include_directories(${SUPERLU_INCLUDES})
|
|
set(SPARSE_LIBS ${SPARSE_LIBS} ${SUPERLU_LIBRARIES})
|
|
set(EIGEN_TESTED_BACKENDS ${EIGEN_TESTED_BACKENDS} SuperLU)
|
|
else(SUPERLU_FOUND)
|
|
set(EIGEN_MISSING_BACKENDS ${EIGEN_MISSING_BACKENDS} SuperLU)
|
|
endif(SUPERLU_FOUND)
|
|
|
|
find_package(GoogleHash)
|
|
if(GOOGLEHASH_FOUND)
|
|
add_definitions("-DEIGEN_GOOGLEHASH_SUPPORT")
|
|
include_directories(${GOOGLEHASH_INCLUDES})
|
|
set(EIGEN_TESTED_BACKENDS ${EIGEN_TESTED_BACKENDS} GoogleHash)
|
|
else(GOOGLEHASH_FOUND)
|
|
set(EIGEN_MISSING_BACKENDS ${EIGEN_MISSING_BACKENDS} GoogleHash)
|
|
endif(GOOGLEHASH_FOUND)
|
|
|
|
option(EIGEN_TEST_NOQT "Disable Qt support in unit tests" OFF)
|
|
if(NOT EIGEN_TEST_NOQT)
|
|
find_package(Qt4)
|
|
endif(NOT EIGEN_TEST_NOQT)
|
|
if(QT4_FOUND)
|
|
include(${QT_USE_FILE})
|
|
set(EIGEN_TESTED_BACKENDS ${EIGEN_TESTED_BACKENDS} "Qt4 support")
|
|
else(QT4_FOUND)
|
|
set(EIGEN_MISSING_BACKENDS ${EIGEN_MISSING_BACKENDS} "Qt4 support")
|
|
endif(QT4_FOUND)
|
|
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
|
if(CMAKE_SYSTEM_NAME MATCHES Linux)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g2")
|
|
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g2")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-inline-functions")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g2")
|
|
endif(CMAKE_SYSTEM_NAME MATCHES Linux)
|
|
set(EI_OFLAG "-O2")
|
|
# MSVC fails with:
|
|
# cl : Command line warning D9025 : overriding '/Od' with '/O2'
|
|
# cl : Command line error D8016 : '/RTC1' and '/O2' command-line options are incompatible
|
|
# elseif(MSVC)
|
|
# set(EI_OFLAG "/O2")
|
|
else(CMAKE_COMPILER_IS_GNUCXX)
|
|
set(EI_OFLAG "")
|
|
endif(CMAKE_COMPILER_IS_GNUCXX)
|
|
|
|
include(EigenTesting)
|
|
|
|
enable_testing()
|
|
|
|
if(TEST_LIB)
|
|
add_definitions("-DEIGEN_EXTERN_INSTANTIATIONS=1")
|
|
endif(TEST_LIB)
|
|
|
|
ei_add_test(meta)
|
|
ei_add_test(sizeof)
|
|
ei_add_test(dynalloc)
|
|
ei_add_test(nomalloc)
|
|
ei_add_test(mixingtypes)
|
|
ei_add_test(packetmath)
|
|
ei_add_test(unalignedassert)
|
|
ei_add_test(vectorization_logic)
|
|
ei_add_test(basicstuff)
|
|
ei_add_test(linearstructure)
|
|
ei_add_test(cwiseop)
|
|
ei_add_test(redux)
|
|
ei_add_test(product_small)
|
|
ei_add_test(product_large ${EI_OFLAG})
|
|
ei_add_test(adjoint)
|
|
ei_add_test(submatrices)
|
|
ei_add_test(miscmatrices)
|
|
ei_add_test(commainitializer)
|
|
ei_add_test(smallvectors)
|
|
ei_add_test(map)
|
|
ei_add_test(array)
|
|
ei_add_test(triangular)
|
|
ei_add_test(cholesky " " "${GSL_LIBRARIES}")
|
|
ei_add_test(lu ${EI_OFLAG})
|
|
ei_add_test(determinant)
|
|
ei_add_test(inverse)
|
|
ei_add_test(qr)
|
|
ei_add_test(eigensolver " " "${GSL_LIBRARIES}")
|
|
ei_add_test(svd)
|
|
ei_add_test(geo_orthomethods)
|
|
ei_add_test(geo_quaternion)
|
|
ei_add_test(geo_transformations)
|
|
ei_add_test(geo_eulerangles)
|
|
ei_add_test(geo_hyperplane)
|
|
ei_add_test(geo_parametrizedline)
|
|
ei_add_test(geo_alignedbox)
|
|
ei_add_test(regression)
|
|
ei_add_test(stdvector)
|
|
ei_add_test(resize)
|
|
if(QT4_FOUND)
|
|
if(QT_QTCORE_LIBRARY_DEBUG)
|
|
set(QT_QTCORE_LIBRARY ${QT_QTCORE_LIBRARY_DEBUG})
|
|
else(QT_QTCORE_LIBRARY_DEBUG)
|
|
set(QT_QTCORE_LIBRARY ${QT_QTCORE_LIBRARY_RELEASE})
|
|
endif(QT_QTCORE_LIBRARY_DEBUG)
|
|
ei_add_test(qtvector " " ${QT_QTCORE_LIBRARY})
|
|
endif(QT4_FOUND)
|
|
ei_add_test(sparse_vector)
|
|
ei_add_test(sparse_basic)
|
|
ei_add_test(sparse_product)
|
|
ei_add_test(sparse_solvers " " "${SPARSE_LIBS}")
|
|
ei_add_test(reverse)
|
|
|
|
# print a summary of the different options
|
|
message("************************************************************")
|
|
message("*** Eigen's unit tests configuration summary ***")
|
|
message("************************************************************")
|
|
if(GSL_FOUND)
|
|
message("Comparison with GSL: ON")
|
|
else(GSL_FOUND)
|
|
message("Comparison with GSL: OFF")
|
|
endif(GSL_FOUND)
|
|
|
|
message("Enabled backends: ${EIGEN_TESTED_BACKENDS}")
|
|
message("Disabled backends: ${EIGEN_MISSING_BACKENDS}")
|
|
|
|
if(EIGEN_TEST_SSE2)
|
|
message("SSE2: ON")
|
|
else(EIGEN_TEST_SSE2)
|
|
message("SSE2: AUTO")
|
|
endif(EIGEN_TEST_SSE2)
|
|
|
|
if(EIGEN_TEST_SSE3)
|
|
message("SSE3: ON")
|
|
else(EIGEN_TEST_SSE3)
|
|
message("SSE3: AUTO")
|
|
endif(EIGEN_TEST_SSE3)
|
|
|
|
if(EIGEN_TEST_SSSE3)
|
|
message("SSSE3: ON")
|
|
else(EIGEN_TEST_SSSE3)
|
|
message("SSSE3: AUTO")
|
|
endif(EIGEN_TEST_SSSE3)
|
|
|
|
if(EIGEN_TEST_ALTIVEC)
|
|
message("Altivec: ON")
|
|
else(EIGEN_TEST_ALTIVEC)
|
|
message("Altivec: AUTO")
|
|
endif(EIGEN_TEST_ALTIVEC)
|
|
|
|
if(EIGEN_TEST_NO_EXPLICIT_VECTORIZATION)
|
|
message("Explicit vec: OFF")
|
|
else(EIGEN_TEST_NO_EXPLICIT_VECTORIZATION)
|
|
message("Explicit vec: AUTO")
|
|
endif(EIGEN_TEST_NO_EXPLICIT_VECTORIZATION)
|
|
|
|
message("CXX: ${CMAKE_CXX_COMPILER}")
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
|
execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version COMMAND head -n 1 OUTPUT_VARIABLE EIGEN_CXX_VERSION_STRING OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
message("CXX_VERSION: ${EIGEN_CXX_VERSION_STRING}")
|
|
endif(CMAKE_COMPILER_IS_GNUCXX)
|
|
message("CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
|
|
message("Sparse lib flags: ${SPARSE_LIBS}")
|
|
|
|
message("************************************************************")
|