INCLUDE(PackageAddExecutableAndTest)

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

  ADD_CUSTOM_COMMAND(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hesopcheck_ADC.cpp
    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/hesopcheck.cpp ${CMAKE_CURRENT_BINARY_DIR}/hesopcheck_ADC.cpp
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/hesopcheck.cpp
    )

  ADD_CUSTOM_COMMAND(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/radops2_ADC.cpp
    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Sacado_radops2.cpp ${CMAKE_CURRENT_BINARY_DIR}/radops2_ADC.cpp
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Sacado_radops2.cpp
    )

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

PACKAGE_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"
  )

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

FOREACH( TESTFILE ${TRADOPTESTS} )

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

  ADD_CUSTOM_COMMAND(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_ADC.cpp
    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${TESTFILE} ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_ADC.cpp
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${TESTFILE}
    )
  SET_PROPERTY(
    SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_ADC.cpp
    PROPERTY COMPILE_DEFINITIONS "RAD_AUTO_AD_Const" 
    )
  PACKAGE_ADD_EXECUTABLE_AND_TEST(
    ${BASENAME}_ADC
    SOURCES ${BASENAME}_ADC.cpp
    ARGS 
    COMM serial mpi
    NUM_MPI_PROCS 1
    PASS_REGULAR_EXPRESSION "OK"
    )

  ADD_CUSTOM_COMMAND(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_EQA.cpp
    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${TESTFILE} ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_EQA.cpp
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${TESTFILE}
    )
  SET_PROPERTY(
    SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_EQA.cpp
    PROPERTY COMPILE_DEFINITIONS "RAD_EQ_ALIAS" 
    )
  PACKAGE_ADD_EXECUTABLE_AND_TEST(
    ${BASENAME}_EQA
    SOURCES ${BASENAME}_EQA.cpp
    ARGS 
    COMM serial mpi
    NUM_MPI_PROCS 1
    PASS_REGULAR_EXPRESSION "OK"
    )

  ADD_CUSTOM_COMMAND(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_RE1.cpp
    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${TESTFILE} ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_RE1.cpp
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${TESTFILE}
    )
  SET_PROPERTY(
    SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_RE1.cpp
    PROPERTY COMPILE_DEFINITIONS "RAD_REINIT=1" 
    )
  PACKAGE_ADD_EXECUTABLE_AND_TEST(
    ${BASENAME}_RE1
    SOURCES ${BASENAME}_RE1.cpp
    ARGS 
    COMM serial mpi
    NUM_MPI_PROCS 1
    PASS_REGULAR_EXPRESSION "OK"
    )

  ADD_CUSTOM_COMMAND(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_RE2.cpp
    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${TESTFILE} ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_RE2.cpp
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${TESTFILE}
    )
  SET_PROPERTY(
    SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${BASENAME}_RE2.cpp
    PROPERTY COMPILE_DEFINITIONS "RAD_REINIT=2" 
    )
  PACKAGE_ADD_EXECUTABLE_AND_TEST(
    ${BASENAME}_RE2
    SOURCES ${BASENAME}_RE2.cpp
    ARGS 
    COMM serial mpi
    NUM_MPI_PROCS 1
    PASS_REGULAR_EXPRESSION "OK"
    )

ENDFOREACH()
