diff options
author | Gael Guennebaud <g.gael@free.fr> | 2009-02-27 16:19:13 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2009-02-27 16:19:13 +0000 |
commit | 40774c625e7d47898bb171287c508c99b0b14fc0 (patch) | |
tree | 0fcd2296f5949f3b553da2187377435ce7c38d55 /cmake | |
parent | 170128770a2c934e9af8cda3642e3fbd44048668 (diff) |
add a proof of concept autodiff jacobian helper class based on adolc
with unit test and FindAdolc cmake module
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/EigenTesting.cmake | 90 | ||||
-rw-r--r-- | cmake/FindAdolc.cmake | 20 |
2 files changed, 109 insertions, 1 deletions
diff --git a/cmake/EigenTesting.cmake b/cmake/EigenTesting.cmake index 9799a08a7..55da6dd1c 100644 --- a/cmake/EigenTesting.cmake +++ b/cmake/EigenTesting.cmake @@ -10,6 +10,11 @@ macro(ei_add_target_property target prop value) endmacro(ei_add_target_property) +macro(ei_add_property prop value) + get_property(previous GLOBAL PROPERTY ${prop}) + set_property(GLOBAL PROPERTY ${prop} "${previous}${value}") +endmacro(ei_add_property) + # Macro to add a test # # the unique parameter testname must correspond to a file @@ -73,7 +78,90 @@ macro(ei_add_test testname) if(WIN32) add_test(${testname} "${targetname}") else(WIN32) - add_test(${testname} "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${testname}") + add_test(${testname} "${Eigen_SOURCE_DIR}/test/runtest.sh" "${testname}") endif(WIN32) endmacro(ei_add_test) + +# print a summary of the different options +macro(ei_testing_print_summary) + + message("************************************************************") + message("*** Eigen's unit tests configuration summary ***") + 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) + 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("\n${EIGEN_TESTING_SUMMARY}") + # 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("************************************************************") + +endmacro(ei_testing_print_summary) + +macro(ei_init_testing) + define_property(GLOBAL PROPERTY EIGEN_TESTED_BACKENDS BRIEF_DOCS " " FULL_DOCS " ") + define_property(GLOBAL PROPERTY EIGEN_MISSING_BACKENDS BRIEF_DOCS " " FULL_DOCS " ") + define_property(GLOBAL PROPERTY EIGEN_TESTING_SUMMARY BRIEF_DOCS " " FULL_DOCS " ") + + set_property(GLOBAL PROPERTY EIGEN_TESTED_BACKENDS "") + set_property(GLOBAL PROPERTY EIGEN_MISSING_BACKENDS "") + set_property(GLOBAL PROPERTY EIGEN_TESTING_SUMMARY "") +endmacro(ei_init_testing) + +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) diff --git a/cmake/FindAdolc.cmake b/cmake/FindAdolc.cmake new file mode 100644 index 000000000..1a7ff3628 --- /dev/null +++ b/cmake/FindAdolc.cmake @@ -0,0 +1,20 @@ + +if (ADOLC_INCLUDES AND ADOLC_LIBRARIES) + set(ADOLC_FIND_QUIETLY TRUE) +endif (ADOLC_INCLUDES AND ADOLC_LIBRARIES) + +find_path(ADOLC_INCLUDES + NAMES + adolc/adouble.h + PATHS + $ENV{ADOLCDIR} + ${INCLUDE_INSTALL_DIR} +) + +find_library(ADOLC_LIBRARIES adolc PATHS $ENV{ADOLCDIR} ${LIB_INSTALL_DIR}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ADOLC DEFAULT_MSG + ADOLC_INCLUDES ADOLC_LIBRARIES) + +mark_as_advanced(ADOLC_INCLUDES ADOLC_LIBRARIES) |