set_property(GLOBAL PROPERTY STORMEIGEN_CURRENT_SUBPROJECT "Unsupported") add_custom_target(BuildUnsupported) include_directories(../../test ../../unsupported ../../Eigen ${CMAKE_CURRENT_BINARY_DIR}/../../test) find_package (Threads) find_package(GoogleHash) if(GOOGLEHASH_FOUND) add_definitions("-DSTORMEIGEN_GOOGLEHASH_SUPPORT") include_directories(${GOOGLEHASH_INCLUDES}) ei_add_property(STORMEIGEN_TESTED_BACKENDS "GoogleHash, ") else(GOOGLEHASH_FOUND) ei_add_property(STORMEIGEN_MISSING_BACKENDS "GoogleHash, ") endif(GOOGLEHASH_FOUND) find_package(Adolc) if(ADOLC_FOUND) include_directories(${ADOLC_INCLUDES}) ei_add_property(STORMEIGEN_TESTED_BACKENDS "Adolc, ") ei_add_test(forward_adolc "" ${ADOLC_LIBRARIES}) else(ADOLC_FOUND) ei_add_property(STORMEIGEN_MISSING_BACKENDS "Adolc, ") endif(ADOLC_FOUND) # this test seems to never have been successful on x87, so is considered to contain a FP-related bug. # see thread: "non-linear optimization test summary" ei_add_test(NonLinearOptimization) ei_add_test(NumericalDiff) ei_add_test(autodiff_scalar) ei_add_test(autodiff) if (NOT CMAKE_CXX_COMPILER MATCHES "clang\\+\\+$") ei_add_test(BVH) endif() ei_add_test(matrix_exponential) ei_add_test(matrix_function) ei_add_test(matrix_power) ei_add_test(matrix_square_root) ei_add_test(alignedvector3) ei_add_test(FFT) find_package(MPFR 2.3.0) find_package(GMP) if(MPFR_FOUND AND STORMEIGEN_COMPILER_SUPPORT_CXX11) include_directories(${MPFR_INCLUDES} ./mpreal) ei_add_property(STORMEIGEN_TESTED_BACKENDS "MPFR C++, ") set(STORMEIGEN_MPFR_TEST_LIBRARIES ${MPFR_LIBRARIES} ${GMP_LIBRARIES}) ei_add_test(mpreal_support "-std=c++11" "${STORMEIGEN_MPFR_TEST_LIBRARIES}" ) else() ei_add_property(STORMEIGEN_MISSING_BACKENDS "MPFR C++, ") endif() ei_add_test(sparse_extra "" "") find_package(FFTW) if(FFTW_FOUND) ei_add_property(STORMEIGEN_TESTED_BACKENDS "fftw, ") include_directories( ${FFTW_INCLUDES} ) if(FFTWL_LIB) ei_add_test(FFTW "-DSTORMEIGEN_FFTW_DEFAULT -DSTORMEIGEN_HAS_FFTWL" "${FFTW_LIBRARIES}" ) else() ei_add_test(FFTW "-DSTORMEIGEN_FFTW_DEFAULT" "${FFTW_LIBRARIES}" ) endif() else() ei_add_property(STORMEIGEN_MISSING_BACKENDS "fftw, ") endif() option(STORMEIGEN_TEST_NO_OPENGL "Disable OpenGL support in unit tests" OFF) if(NOT STORMEIGEN_TEST_NO_OPENGL) find_package(OpenGL) find_package(GLUT) find_package(GLEW) if(OPENGL_FOUND AND GLUT_FOUND AND GLEW_FOUND) include_directories(${OPENGL_INCLUDE_DIR} ${GLUT_INCLUDE_DIR} ${GLEW_INCLUDE_DIRS}) ei_add_property(STORMEIGEN_TESTED_BACKENDS "OpenGL, ") set(STORMEIGEN_GL_LIB ${GLUT_LIBRARIES} ${GLEW_LIBRARIES} ${OPENGL_LIBRARIES}) ei_add_test(openglsupport "" "${STORMEIGEN_GL_LIB}" ) else() ei_add_property(STORMEIGEN_MISSING_BACKENDS "OpenGL, ") endif() else() ei_add_property(STORMEIGEN_MISSING_BACKENDS "OpenGL, ") endif() ei_add_test(polynomialsolver) ei_add_test(polynomialutils) ei_add_test(splines) ei_add_test(gmres) ei_add_test(minres) ei_add_test(levenberg_marquardt) ei_add_test(kronecker_product) if(STORMEIGEN_TEST_CXX11) # It should be safe to always run these tests as there is some fallback code for # older compiler that don't support cxx11. ei_add_test(cxx11_meta "-std=c++0x") ei_add_test(cxx11_tensor_simple "-std=c++0x") # ei_add_test(cxx11_tensor_symmetry "-std=c++0x") ei_add_test(cxx11_tensor_assign "-std=c++0x") ei_add_test(cxx11_tensor_dimension "-std=c++0x") ei_add_test(cxx11_tensor_index_list "-std=c++0x") ei_add_test(cxx11_tensor_mixed_indices "-std=c++0x") ei_add_test(cxx11_tensor_comparisons "-std=c++0x") ei_add_test(cxx11_tensor_contraction "-std=c++0x") ei_add_test(cxx11_tensor_convolution "-std=c++0x") ei_add_test(cxx11_tensor_expr "-std=c++0x") ei_add_test(cxx11_tensor_math "-std=c++0x") ei_add_test(cxx11_tensor_forced_eval "-std=c++0x") ei_add_test(cxx11_tensor_fixed_size "-std=c++0x") ei_add_test(cxx11_tensor_const "-std=c++0x") ei_add_test(cxx11_tensor_of_const_values "-std=c++0x") ei_add_test(cxx11_tensor_of_complex "-std=c++0x") ei_add_test(cxx11_tensor_of_strings "-std=c++0x") ei_add_test(cxx11_tensor_uint128 "-std=c++0x") ei_add_test(cxx11_tensor_intdiv "-std=c++0x") ei_add_test(cxx11_tensor_lvalue "-std=c++0x") ei_add_test(cxx11_tensor_map "-std=c++0x") ei_add_test(cxx11_tensor_broadcasting "-std=c++0x") ei_add_test(cxx11_tensor_chipping "-std=c++0x") ei_add_test(cxx11_tensor_concatenation "-std=c++0x") ei_add_test(cxx11_tensor_inflation "-std=c++0x") ei_add_test(cxx11_tensor_morphing "-std=c++0x") ei_add_test(cxx11_tensor_padding "-std=c++0x") ei_add_test(cxx11_tensor_patch "-std=c++0x") ei_add_test(cxx11_tensor_image_patch "-std=c++0x") ei_add_test(cxx11_tensor_volume_patch "-std=c++0x") ei_add_test(cxx11_tensor_reduction "-std=c++0x") ei_add_test(cxx11_tensor_argmax "-std=c++0x") ei_add_test(cxx11_tensor_shuffling "-std=c++0x") ei_add_test(cxx11_tensor_striding "-std=c++0x") ei_add_test(cxx11_tensor_thread_pool "-pthread" "${CMAKE_THREAD_LIBS_INIT}") ei_add_test(cxx11_tensor_ref "-std=c++0x") ei_add_test(cxx11_tensor_random "-std=c++0x") ei_add_test(cxx11_tensor_casts "-std=c++0x") ei_add_test(cxx11_tensor_reverse "-std=c++0x") ei_add_test(cxx11_tensor_layout_swap "-std=c++0x") ei_add_test(cxx11_tensor_io "-std=c++0x") ei_add_test(cxx11_tensor_generator "-std=c++0x") ei_add_test(cxx11_tensor_custom_op "-std=c++0x") ei_add_test(cxx11_tensor_custom_index "-std=c++0x") ei_add_test(cxx11_tensor_sugar "-std=c++0x") ei_add_test(cxx11_tensor_fft "-std=c++0x") ei_add_test(cxx11_tensor_ifft "-std=c++0x") # These tests needs nvcc # ei_add_test(cxx11_tensor_device "-std=c++0x") # ei_add_test(cxx11_tensor_cuda "-std=c++0x") # ei_add_test(cxx11_tensor_contract_cuda "-std=c++0x") # ei_add_test(cxx11_tensor_reduction_cuda "-std=c++0x") # ei_add_test(cxx11_tensor_random_cuda "-std=c++0x") # ei_add_test(cxx11_tensor_argmax_cuda "-std=c++0x") endif()