IF(BUILD_TESTS)

IF(CMAKE_COMPILER_IS_GNUCXX)
  IF(CMAKE_SYSTEM_NAME MATCHES Linux)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -g1")
    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)
ENDIF(CMAKE_COMPILER_IS_GNUCXX)

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})

  ADD_EXECUTABLE(${targetname} ${testname}.cpp)

  IF(NOT EIGEN_NO_ASSERTION_CHECKING)

    SET_TARGET_PROPERTIES(${targetname} PROPERTIES COMPILE_FLAGS "-fexceptions")
    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)

  EI_ADD_TARGET_PROPERTY(${targetname} COMPILE_FLAGS "-DEIGEN_TEST_FUNC=${testname}")

  IF(TEST_LIB)
    target_link_libraries(${targetname} Eigen2)
  ENDIF(TEST_LIB)

  IF(WIN32)
    ADD_TEST(${testname} "${targetname}")
  ELSE(WIN32)
    ADD_TEST(${testname} "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${testname}")
  ENDIF(WIN32)

ENDMACRO(EI_ADD_TEST)


ENABLE_TESTING()

IF(TEST_LIB)
  ADD_DEFINITIONS("-DEIGEN_EXTERN_INSTANTIATIONS=1")
ENDIF(TEST_LIB)

EI_ADD_TEST(sizeof)
EI_ADD_TEST(nomalloc)
EI_ADD_TEST(basicstuff)
EI_ADD_TEST(linearstructure)
EI_ADD_TEST(cwiseop)
EI_ADD_TEST(product)
EI_ADD_TEST(adjoint)
EI_ADD_TEST(submatrices)
EI_ADD_TEST(miscmatrices)
EI_ADD_TEST(smallvectors)
EI_ADD_TEST(map)
EI_ADD_TEST(array)
EI_ADD_TEST(triangular)
EI_ADD_TEST(cholesky)
# EI_ADD_TEST(determinant)
EI_ADD_TEST(inverse)
EI_ADD_TEST(qr)
EI_ADD_TEST(eigensolver)
EI_ADD_TEST(geometry)

ENDIF(BUILD_TESTS)
