# This "cmake -P" script may be configured to drive a dashboard on any machine.
#
set(CTEST_BINARY_DIRECTORY "@binary_dir@")
set(CTEST_BUILD_NAME "@BUILDNAME@")
set(CTEST_CMAKE_GENERATOR "@CMAKE_GENERATOR@")
set(CTEST_SITE "@SITE@")
set(CTEST_SOURCE_DIRECTORY "@source_dir@")

# Set the environment:
#
set(ENV{CTEST_BUILD_NAME} "${CTEST_BUILD_NAME}")
set(ENV{CTEST_CMAKE_GENERATOR} "${CTEST_CMAKE_GENERATOR}")
set(ENV{CTEST_SITE} "${CTEST_SITE}")

# Allow override of the environment on a per-client basis:
#
set(ENV_SCRIPT "$ENV{CMAKE_CONTRACT_Trilinos_ENV_SCRIPT}")
if(ENV_SCRIPT AND EXISTS "${ENV_SCRIPT}")
  include("${ENV_SCRIPT}")
endif()

# Empty build dir to start with:
#
message("Cleaning binary dir '${CTEST_BINARY_DIRECTORY}'")
file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}")

# Generate 'do-configure' script:
#
file(WRITE "${CTEST_BINARY_DIRECTORY}/do-configure" "
\"${CMAKE_COMMAND}\" -G \"${CTEST_CMAKE_GENERATOR}\" \"${CTEST_SOURCE_DIRECTORY}\"
")

# Make the 'do-configure' script executable and execute it:
#
if(WIN32)
  configure_file(
    "${CTEST_BINARY_DIRECTORY}/do-configure"
    "${CTEST_BINARY_DIRECTORY}/do-configure.cmd"
    COPYONLY)
  execute_process(COMMAND "${CTEST_BINARY_DIRECTORY}/do-configure.cmd"
    WORKING_DIRECTORY "${CTEST_BINARY_DIRECTORY}")
else()
  execute_process(COMMAND chmod +x "${CTEST_BINARY_DIRECTORY}/do-configure")
  execute_process(COMMAND "${CTEST_BINARY_DIRECTORY}/do-configure"
    WORKING_DIRECTORY "${CTEST_BINARY_DIRECTORY}")
endif()

# Run an experimental Trilinos dashboard:
#
execute_process(COMMAND
  "${CMAKE_CTEST_COMMAND}"
  -S "${CTEST_SOURCE_DIRECTORY}/cmake/tribits/ctest/experimental_build_test.cmake"
  -VV
  WORKING_DIRECTORY "${CTEST_BINARY_DIRECTORY}"
  RESULT_VARIABLE rv
  )

if(NOT "${rv}" STREQUAL "0")
  message("error(s) (or warnings or test failures) running Trilinos dashboard
script experimental_build_test.cmake...
ctest returned rv='${rv}'
")
endif()
