aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmake
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2009-02-27 16:19:13 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2009-02-27 16:19:13 +0000
commit40774c625e7d47898bb171287c508c99b0b14fc0 (patch)
tree0fcd2296f5949f3b553da2187377435ce7c38d55 /cmake
parent170128770a2c934e9af8cda3642e3fbd44048668 (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.cmake90
-rw-r--r--cmake/FindAdolc.cmake20
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)