From fa27cd1ed0a387a52079e63444137feb2aeab66f Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Mon, 20 Oct 2008 10:43:11 +0000 Subject: * add cmake files to find (optional) supported libraries * add unit tests for sparse cholesky --- test/CMakeLists.txt | 214 +++++++++++++++++++++++++++++----------------------- 1 file changed, 120 insertions(+), 94 deletions(-) (limited to 'test/CMakeLists.txt') diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 5f53d475e..146c560f3 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,31 +1,59 @@ -IF(BUILD_TESTS) +if(BUILD_TESTS) + +set(EXTERNAL_LIBS "") find_package(GSL) if(GSL_FOUND) add_definitions("-DHAS_GSL") + set(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${GSL_LIBRARIES}) endif(GSL_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") -ELSE(CMAKE_COMPILER_IS_GNUCXX) - SET(EI_OFLAG "") -ENDIF(CMAKE_COMPILER_IS_GNUCXX) - -OPTION(EIGEN_NO_ASSERTION_CHECKING "Disable checking of assertions" OFF) - -# similar to SET_TARGET_PROPERTIES but append the property instead of overwriting it -MACRO(EI_ADD_TARGET_PROPERTY target prop value) - - GET_TARGET_PROPERTY(previous ${target} ${prop}) - SET_TARGET_PROPERTIES(${target} PROPERTIES ${prop} "${previous} ${value}") - -ENDMACRO(EI_ADD_TARGET_PROPERTY) +find_package(Taucs) +if(TAUCS_FOUND) + add_definitions("-DEIGEN_TAUCS_SUPPORT") + include_directories(${TAUCS_INCLUDES}) + set(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${TAUCS_LIBRARIES}) +endif(TAUCS_FOUND) + +find_package(Cholmod) +if(CHOLMOD_FOUND) + message("add EIGEN_CHOLMOD_SUPPORT " ${CHOLMOD_LIBRARIES}) + add_definitions("-DEIGEN_CHOLMOD_SUPPORT") + include_directories(${CHOLMOD_INCLUDES}) + set(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${CHOLMOD_LIBRARIES}) +endif(CHOLMOD_FOUND) + +# find_package(Umfpack) +# if(UMFPACK_FOUND) +# add_definitions("-DEIGEN_UMFPACK_SUPPORT") +# endif(UMFPACK_FOUND) +# +# find_package(SuperLU) +# if(SUPERLU_FOUND) +# add_definitions("-DEIGEN_SUPERLU_SUPPORT") +# endif(SUPERLU_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") +else(CMAKE_COMPILER_IS_GNUCXX) + set(EI_OFLAG "") +endif(CMAKE_COMPILER_IS_GNUCXX) + +option(EIGEN_NO_ASSERTION_CHECKING "Disable checking of assertions" OFF) + +# similar to set_target_properties but append the property instead of overwriting it +macro(ei_add_target_property target prop value) + + get_target_property(previous ${target} ${prop}) + set_target_properties(${target} PROPERTIES ${prop} "${previous} ${value}") + +endmacro(ei_add_target_property) # Macro to add a test # @@ -42,86 +70,84 @@ ENDMACRO(EI_ADD_TARGET_PROPERTY) # "ctest -V" or "ctest -V -R " # On other platform use ctest as usual # -MACRO(EI_ADD_TEST testname) +macro(ei_add_test testname) - SET(targetname test_${testname}) + set(targetname test_${testname}) - SET(filename ${testname}.cpp) - ADD_EXECUTABLE(${targetname} ${filename}) + set(filename ${testname}.cpp) + add_executable(${targetname} ${filename}) - IF(NOT EIGEN_NO_ASSERTION_CHECKING) + if(NOT EIGEN_NO_ASSERTION_CHECKING) - SET_TARGET_PROPERTIES(${targetname} PROPERTIES COMPILE_FLAGS "-fexceptions") - OPTION(EIGEN_DEBUG_ASSERTS "Enable debuging of assertions" OFF) - IF(EIGEN_DEBUG_ASSERTS) - SET_TARGET_PROPERTIES(${targetname} PROPERTIES COMPILE_DEFINITIONS "-DEIGEN_DEBUG_ASSERTS=1") - ENDIF(EIGEN_DEBUG_ASSERTS) + set_target_properties(${targetname} PROPERTIES COMPILE_FLAGS "-fexceptions") + option(EIGEN_DEBUG_ASSERTS "Enable debuging of assertions" OFF) + if(EIGEN_DEBUG_ASSERTS) + set_target_properties(${targetname} PROPERTIES COMPILE_DEFINITIONS "-DEIGEN_DEBUG_ASSERTS=1") + endif(EIGEN_DEBUG_ASSERTS) - ELSE(NOT EIGEN_NO_ASSERTION_CHECKING) + else(NOT EIGEN_NO_ASSERTION_CHECKING) - SET_TARGET_PROPERTIES(${targetname} PROPERTIES COMPILE_DEFINITIONS "-DEIGEN_NO_ASSERTION_CHECKING=1") + set_target_properties(${targetname} PROPERTIES COMPILE_DEFINITIONS "-DEIGEN_NO_ASSERTION_CHECKING=1") - ENDIF(NOT EIGEN_NO_ASSERTION_CHECKING) + endif(NOT EIGEN_NO_ASSERTION_CHECKING) - IF(${ARGC} GREATER 1) - EI_ADD_TARGET_PROPERTY(${targetname} COMPILE_FLAGS "${ARGV1}") - ENDIF(${ARGC} GREATER 1) + if(${ARGC} GREATER 1) + ei_add_target_property(${targetname} COMPILE_FLAGS "${ARGV1}") + endif(${ARGC} GREATER 1) - EI_ADD_TARGET_PROPERTY(${targetname} COMPILE_FLAGS "-DEIGEN_TEST_FUNC=${testname}") + ei_add_target_property(${targetname} COMPILE_FLAGS "-DEIGEN_TEST_FUNC=${testname}") - IF(TEST_LIB) + if(TEST_LIB) target_link_libraries(${targetname} Eigen2) - ENDIF(TEST_LIB) - - if(GSL_FOUND) - target_link_libraries(${targetname} ${GSL_LIBRARIES}) - endif(GSL_FOUND) - - IF(WIN32) - ADD_TEST(${testname} "${targetname}") - ELSE(WIN32) - ADD_TEST(${testname} "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${testname}") - ENDIF(WIN32) - -ENDMACRO(EI_ADD_TEST) - - -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(packetmath) -EI_ADD_TEST(basicstuff) -EI_ADD_TEST(linearstructure) -EI_ADD_TEST(cwiseop) -EI_ADD_TEST(sum) -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) -EI_ADD_TEST(lu ${EI_OFLAG}) -EI_ADD_TEST(determinant) -EI_ADD_TEST(inverse) -EI_ADD_TEST(qr) -EI_ADD_TEST(eigensolver) -EI_ADD_TEST(svd) -EI_ADD_TEST(geometry) -EI_ADD_TEST(hyperplane) -EI_ADD_TEST(parametrizedline) -EI_ADD_TEST(regression) -EI_ADD_TEST(sparse ${EI_OFLAG}) - -ENDIF(BUILD_TESTS) + endif(TEST_LIB) + + target_link_libraries(${targetname} ${EXTERNAL_LIBS}) + + if(WIN32) + add_test(${testname} "${targetname}") + else(WIN32) + add_test(${testname} "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${testname}") + endif(WIN32) + +endmacro(ei_add_test) + + +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(packetmath) +ei_add_test(basicstuff) +ei_add_test(linearstructure) +ei_add_test(cwiseop) +ei_add_test(sum) +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) +ei_add_test(lu ${EI_OFLAG}) +ei_add_test(determinant) +ei_add_test(inverse) +ei_add_test(qr) +ei_add_test(eigensolver) +ei_add_test(svd) +ei_add_test(geometry) +ei_add_test(hyperplane) +ei_add_test(parametrizedline) +ei_add_test(regression) +ei_add_test(sparse ) + +endif(BUILD_TESTS) -- cgit v1.2.3