diff options
author | Benoit Jacob <jacob.benoit.1@gmail.com> | 2009-11-11 16:11:33 -0500 |
---|---|---|
committer | Benoit Jacob <jacob.benoit.1@gmail.com> | 2009-11-11 16:11:33 -0500 |
commit | ff7fbc9431dc1d32eca2923a6e3d17b16f91648c (patch) | |
tree | e6dbbcb262fa2c87564f76ac42729929d3dd0cd4 /cmake/EigenTesting.cmake | |
parent | 343eec7ca84123889daa7d1cae41fe61d724a027 (diff) |
* use standard CMAKE_BUILD_TYPE
* remove debug_xxx targets
* runtest.sh: don't run make
Diffstat (limited to 'cmake/EigenTesting.cmake')
-rw-r--r-- | cmake/EigenTesting.cmake | 104 |
1 files changed, 19 insertions, 85 deletions
diff --git a/cmake/EigenTesting.cmake b/cmake/EigenTesting.cmake index bb272a8cc..5f45b2be8 100644 --- a/cmake/EigenTesting.cmake +++ b/cmake/EigenTesting.cmake @@ -1,4 +1,5 @@ -option(EIGEN_NO_ASSERTION_CHECKING "Disable checking of assertions" OFF) +option(EIGEN_NO_ASSERTION_CHECKING "Disable checking of assertions using exceptions" OFF) +option(EIGEN_DEBUG_ASSERTS "Enable advanced debuging of assertions" OFF) # similar to set_target_properties but append the property instead of overwriting it macro(ei_add_target_property target prop value) @@ -19,83 +20,34 @@ endmacro(ei_add_property) #internal. See documentation of ei_add_test for details. macro(ei_add_test_internal testname testname_with_suffix) set(targetname test_${testname_with_suffix}) - if(NOT MSVC_IDE) - set(debug_targetname debug_${testname_with_suffix}) - endif(NOT MSVC_IDE) set(filename ${testname}.cpp) add_executable(${targetname} ${filename}) add_dependencies(btest ${targetname}) - if(NOT MSVC_IDE) - add_executable(${debug_targetname} EXCLUDE_FROM_ALL ${filename}) - endif(NOT MSVC_IDE) - if(NOT EIGEN_NO_ASSERTION_CHECKING) - - if(MSVC) - set_target_properties(${targetname} PROPERTIES COMPILE_FLAGS "/EHsc") - if(NOT MSVC_IDE) - set_target_properties(${debug_targetname} PROPERTIES COMPILE_FLAGS "/EHsc") - endif(NOT MSVC_IDE) - else(MSVC) - set_target_properties(${targetname} PROPERTIES COMPILE_FLAGS "-fexceptions") - set_target_properties(${debug_targetname} PROPERTIES COMPILE_FLAGS "-fexceptions") - endif(MSVC) - - option(EIGEN_DEBUG_ASSERTS "Enable debuging of assertions" OFF) + if(EIGEN_NO_ASSERTION_CHECKING) + ei_add_target_property(${targetname} COMPILE_FLAGS "-DEIGEN_NO_ASSERTION_CHECKING=1") + else(EIGEN_NO_ASSERTION_CHECKING) if(EIGEN_DEBUG_ASSERTS) ei_add_target_property(${targetname} COMPILE_FLAGS "-DEIGEN_DEBUG_ASSERTS=1") - if(NOT MSVC_IDE) - ei_add_target_property(${debug_targetname} COMPILE_FLAGS "-DEIGEN_DEBUG_ASSERTS=1") - endif(NOT MSVC_IDE) endif(EIGEN_DEBUG_ASSERTS) + endif(EIGEN_NO_ASSERTION_CHECKING) - else(NOT EIGEN_NO_ASSERTION_CHECKING) - - ei_add_target_property(${targetname} COMPILE_FLAGS "-DEIGEN_NO_ASSERTION_CHECKING=1") - if(NOT MSVC_IDE) - ei_add_target_property(${debug_targetname} COMPILE_FLAGS "-DEIGEN_NO_ASSERTION_CHECKING=1") - endif(NOT MSVC_IDE) - - endif(NOT EIGEN_NO_ASSERTION_CHECKING) + ei_add_target_property(${targetname} COMPILE_FLAGS "-DEIGEN_TEST_FUNC=${testname}") - # let the user pass flags. Note that if the user passes an optimization flag here, it's important that - # we counter it by a no-optimization flag! + # let the user pass flags. if(${ARGC} GREATER 2) ei_add_target_property(${targetname} COMPILE_FLAGS "${ARGV2}") - if(NOT MSVC_IDE) - ei_add_target_property(${debug_targetname} COMPILE_FLAGS "${ARGV2} ${EI_NO_OPTIMIZATION_FLAG}") - endif(NOT MSVC_IDE) endif(${ARGC} GREATER 2) - # for the debug target, add full debug options - if(CMAKE_COMPILER_IS_GNUCXX) - # disable debug symbols: i get 2 GB of them! - # the user can still use the debug targets as needed. - # for MSVC, the equivalent (release mode) does the same. - ei_add_target_property(${targetname} COMPILE_FLAGS "-g0") - # O0 is in principle redundant here, but doesn't hurt - ei_add_target_property(${debug_targetname} COMPILE_FLAGS "-O0 -g3") - elseif(MSVC) - if(NOT MSVC_IDE) - ei_add_target_property(${debug_targetname} COMPILE_FLAGS "/Od /Zi") - endif(NOT MSVC_IDE) - endif(CMAKE_COMPILER_IS_GNUCXX) - - ei_add_target_property(${targetname} COMPILE_FLAGS "-DEIGEN_TEST_FUNC=${testname}") - if(NOT MSVC_IDE) - ei_add_target_property(${debug_targetname} COMPILE_FLAGS "-DEIGEN_TEST_FUNC=${testname}") - endif(NOT MSVC_IDE) - - target_link_libraries(${targetname} ${EXTERNAL_LIBS}) + if(EXTERNAL_LIBS) + target_link_libraries(${targetname} ${EXTERNAL_LIBS}) + endif() if(${ARGC} GREATER 3) string(STRIP "${ARGV3}" ARGV3_stripped) string(LENGTH "${ARGV3_stripped}" ARGV3_stripped_length) if(${ARGV3_stripped_length} GREATER 0) target_link_libraries(${targetname} ${ARGV3}) - if(NOT MSVC_IDE) - target_link_libraries(${debug_targetname} ${ARGV3}) - endif(NOT MSVC_IDE) endif(${ARGV3_stripped_length} GREATER 0) endif(${ARGC} GREATER 3) @@ -123,19 +75,13 @@ endmacro(ei_add_test_internal) # Depending on the contents of that file, this macro can have 2 behaviors, # see below. # -# Optional parameters can be passed: the 2nd parameter is additional compile flags -# (optimization will be explicitly disabled for the debug test targets) and the 3rd -# parameter is libraries to link to. +# The optional 2nd parameter is libraries to link to. # # A. Default behavior # # this macro add an executable test_<testname> as well as a ctest test # named <testname>. # -# it also adds another executable debug_<testname> that compiles in full debug mode -# and is not added to the test target. The idea is that when a test fails you want -# a quick way of rebuilding this specific test in full debug mode. -# # On platforms with bash simply run: # "ctest -V" or "ctest -V -R <testname>" # On other platform use ctest as usual @@ -143,7 +89,7 @@ endmacro(ei_add_test_internal) # B. Multi-part behavior # # If the source file matches the regexp -# CALL_SUBTEST(-9]+|EIGEN_TEST_PART_[0-9]+ +# CALL_SUBTEST_[0-9]+|EIGEN_TEST_PART_[0-9]+ # then it is interpreted as a multi-part test. The behavior then depends on the # CMake option EIGEN_SPLIT_LARGE_TESTS, which is ON by default. # @@ -156,13 +102,10 @@ endmacro(ei_add_test_internal) # executables is built passing -DEIGEN_TEST_PART_N. This allows to split large tests # into smaller executables. # -# The same holds for the debug executables. -# -# Moreover, targets test_<testname> and debug_<testname> are still generated, they +# Moreover, targets test_<testname> are still generated, they # have the effect of building all the parts of the test. # # Again, ctest -R allows to run all matching tests. -# macro(ei_add_test testname) file(READ "${testname}.cpp" test_source) set(parts 0) @@ -172,16 +115,10 @@ macro(ei_add_test testname) list(REMOVE_DUPLICATES suffixes) if(EIGEN_SPLIT_LARGE_TESTS AND suffixes) add_custom_target(test_${testname}) - if(NOT MSVC_IDE) - add_custom_target(debug_${testname}) - endif(NOT MSVC_IDE) foreach(suffix ${suffixes}) ei_add_test_internal(${testname} ${testname}_${suffix} "${ARGV1} -DEIGEN_TEST_PART_${suffix}=1" "${ARGV2}") add_dependencies(test_${testname} test_${testname}_${suffix}) - if(NOT MSVC_IDE) - add_dependencies(debug_${testname} debug_${testname}_${suffix}) - endif(NOT MSVC_IDE) endforeach(suffix) else(EIGEN_SPLIT_LARGE_TESTS AND suffixes) set(symbols_to_enable_all_parts "") @@ -199,7 +136,11 @@ macro(ei_testing_print_summary) message("************************************************************") message("*** Eigen's unit tests configuration summary ***") message("************************************************************") - + message("") + message("Build type: ${CMAKE_BUILD_TYPE}") + message(" * To change that: cmake . -DCMAKE_BUILD_TYPE=type") + message(" * Available types are Debug and Release") + message("") get_property(EIGEN_TESTING_SUMMARY GLOBAL PROPERTY EIGEN_TESTING_SUMMARY) get_property(EIGEN_TESTED_BACKENDS GLOBAL PROPERTY EIGEN_TESTED_BACKENDS) get_property(EIGEN_MISSING_BACKENDS GLOBAL PROPERTY EIGEN_MISSING_BACKENDS) @@ -275,13 +216,6 @@ if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${COVERAGE_FLAGS} -fno-inline-functions") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${COVERAGE_FLAGS} -O0 -g3") endif(CMAKE_SYSTEM_NAME MATCHES Linux) - set(EI_OFLAG "-O2") - set(EI_NO_OPTIMIZATION_FLAG "-O0") elseif(MSVC) set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /MDd /Zi /Ob0 /Od" CACHE STRING "Flags used by the compiler during debug builds." FORCE) - set(EI_OFLAG "/O2") - set(EI_NO_OPTIMIZATION_FLAG "/O0") -else(CMAKE_COMPILER_IS_GNUCXX) - set(EI_OFLAG "") - set(EI_NO_OPTIMIZATION_FLAG "") endif(CMAKE_COMPILER_IS_GNUCXX) |