
TRIBITS_ADD_EXECUTABLE_AND_TEST(
  hesopcheck
  SOURCES hesopcheck.cpp
  ARGS 
  COMM serial mpi
  NUM_MPI_PROCS 1
  PASS_REGULAR_EXPRESSION "OK"
  )

    configure_file(hesopcheck.cpp hesopcheck_ADC.cpp COPYONLY)

    configure_file(../../src/Sacado_radops2.cpp radops2_ADC.cpp COPYONLY)

  SET_PROPERTY(
    SOURCE ${CMAKE_CURRENT_BINARY_DIR}/hesopcheck_ADC.cpp ${CMAKE_CURRENT_BINARY_DIR}/radops2_ADC.cpp
    PROPERTY COMPILE_DEFINITIONS "RAD_AUTO_AD_Const" 
    )

# Don't link Sacado library to this test as it results in duplicate symbols.
# So we can't use TRIBITS_ADD_EXECUTABLE_AND_TEST and instead have to create
# the executable using raw CMake and then add the test.

# TRIBITS_ADD_EXECUTABLE_AND_TEST(
#   hesopcheck_ADC
#   SOURCES hesopcheck_ADC.cpp radops2_ADC.cpp
#   ARGS 
#   COMM serial mpi
#   NUM_MPI_PROCS 1
#   PASS_REGULAR_EXPRESSION "OK"
#   )

GET_PROPERTY(Sacado_lib_deps TARGET "${${PROJECT_NAME}_LIBRARY_NAME_PREFIX}sacado" PROPERTY LINK_LIBRARIES)
ADD_EXECUTABLE("Sacado_hesopcheck_ADC${${PROJECT_NAME}_CMAKE_EXECUTABLE_SUFFIX}" hesopcheck_ADC.cpp radops2_ADC.cpp)
TARGET_LINK_LIBRARIES("Sacado_hesopcheck_ADC${${PROJECT_NAME}_CMAKE_EXECUTABLE_SUFFIX}" ${Sacado_lib_deps})
TARGET_INCLUDE_DIRECTORIES("Sacado_hesopcheck_ADC${${PROJECT_NAME}_CMAKE_EXECUTABLE_SUFFIX}"
  PRIVATE "${${PACKAGE_NAME}_BINARY_DIR}/src"
  PRIVATE "${${PACKAGE_NAME}_SOURCE_DIR}/src"
  PRIVATE "${${PACKAGE_NAME}_SOURCE_DIR}/src/mpl"
  PRIVATE "${${PACKAGE_NAME}_SOURCE_DIR}/src/new_design"
  )
TRIBITS_ADD_TEST(
  hesopcheck_ADC
  ARGS
  COMM serial mpi
  NUM_MPI_PROCS 1
  PASS_REGULAR_EXPRESSION "OK"
  )

FILE(GLOB TRADOPTESTS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "tradoptest_*.cpp")

FOREACH( TESTFILE ${TRADOPTESTS} )

  STRING(REPLACE ".cpp" "" BASENAME ${TESTFILE})

  configure_file(${TESTFILE} ${BASENAME}_ADC.cpp COPYONLY)
  SET_PROPERTY(
    SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_ADC.cpp
    PROPERTY COMPILE_DEFINITIONS "RAD_AUTO_AD_Const" 
    )
  TRIBITS_ADD_EXECUTABLE_AND_TEST(
    ${BASENAME}_ADC
    SOURCES ${BASENAME}_ADC.cpp
    ARGS 
    COMM serial mpi
    NUM_MPI_PROCS 1
    PASS_REGULAR_EXPRESSION "OK"
    )

  configure_file(${TESTFILE} ${BASENAME}_EQA.cpp COPYONLY)
  SET_PROPERTY(
    SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_EQA.cpp
    PROPERTY COMPILE_DEFINITIONS "RAD_EQ_ALIAS" 
    )
  TRIBITS_ADD_EXECUTABLE_AND_TEST(
    ${BASENAME}_EQA
    SOURCES ${BASENAME}_EQA.cpp
    ARGS 
    COMM serial mpi
    NUM_MPI_PROCS 1
    PASS_REGULAR_EXPRESSION "OK"
    )

  configure_file(${TESTFILE} ${BASENAME}_RE1.cpp COPYONLY)
  SET_PROPERTY(
    SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_RE1.cpp
    PROPERTY COMPILE_DEFINITIONS "RAD_REINIT=1" 
    )
  TRIBITS_ADD_EXECUTABLE_AND_TEST(
    ${BASENAME}_RE1
    SOURCES ${BASENAME}_RE1.cpp
    ARGS 
    COMM serial mpi
    NUM_MPI_PROCS 1
    PASS_REGULAR_EXPRESSION "OK"
    )

  configure_file(${TESTFILE} ${BASENAME}_RE2.cpp COPYONLY)
  SET_PROPERTY(
    SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_RE2.cpp
    PROPERTY COMPILE_DEFINITIONS "RAD_REINIT=2" 
    )
  TRIBITS_ADD_EXECUTABLE_AND_TEST(
    ${BASENAME}_RE2
    SOURCES ${BASENAME}_RE2.cpp
    ARGS 
    COMM serial mpi
    NUM_MPI_PROCS 1
    PASS_REGULAR_EXPRESSION "OK"
    )

ENDFOREACH()
