diff options
author | Gael Guennebaud <g.gael@free.fr> | 2009-02-04 17:11:04 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2009-02-04 17:11:04 +0000 |
commit | 5e6707d7f7e7fcfca33d6e01440cacfe3e78cc83 (patch) | |
tree | e0204edfe31a117046542c3f8dd36e72b97b1668 /cmake | |
parent | 5d69c5102b3026630cf8d2b614be1cf16872439e (diff) |
forgot to add EigenTesting.cmake file
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/EigenTesting.cmake | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/cmake/EigenTesting.cmake b/cmake/EigenTesting.cmake new file mode 100644 index 000000000..9799a08a7 --- /dev/null +++ b/cmake/EigenTesting.cmake @@ -0,0 +1,79 @@ + + +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 +# +# the unique parameter testname must correspond to a file +# <testname>.cpp which follows this pattern: +# +# #include "main.h" +# void test_<testname>() { ... } +# +# this macro add an executable test_<testname> as well as a ctest test +# named <testname> +# +# On platforms with bash simply run: +# "ctest -V" or "ctest -V -R <testname>" +# On other platform use ctest as usual +# +macro(ei_add_test testname) + + set(targetname test_${testname}) + + set(filename ${testname}.cpp) + add_executable(${targetname} ${filename}) + + if(NOT EIGEN_NO_ASSERTION_CHECKING) + + if(MSVC) + set_target_properties(${targetname} PROPERTIES COMPILE_FLAGS "/EHsc") + else(MSVC) + set_target_properties(${targetname} PROPERTIES COMPILE_FLAGS "-fexceptions") + endif(MSVC) + + 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) + + set_target_properties(${targetname} PROPERTIES COMPILE_DEFINITIONS "-DEIGEN_NO_ASSERTION_CHECKING=1") + + endif(NOT EIGEN_NO_ASSERTION_CHECKING) + + 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}") + + if(TEST_LIB) + target_link_libraries(${targetname} Eigen2) + endif(TEST_LIB) + + target_link_libraries(${targetname} ${EXTERNAL_LIBS}) + if(${ARGC} GREATER 2) + string(STRIP "${ARGV2}" ARGV2_stripped) + string(LENGTH "${ARGV2_stripped}" ARGV2_stripped_length) + if(${ARGV2_stripped_length} GREATER 0) + target_link_libraries(${targetname} ${ARGV2}) + endif(${ARGV2_stripped_length} GREATER 0) + endif(${ARGC} GREATER 2) + + if(WIN32) + add_test(${testname} "${targetname}") + else(WIN32) + add_test(${testname} "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${testname}") + endif(WIN32) + +endmacro(ei_add_test) |