CMAKE_MINIMUM_REQUIRED(VERSION 2.1)

MACRO(PROJECT_START NAME)
  MESSAGE("###################################################")
  MESSAGE("")
  MESSAGE("Start project: ${NAME}")
  MESSAGE("")
  MESSAGE("###################################################")
ENDMACRO(PROJECT_START)

# Project 1
PROJECT_START("KWSys from CVS")

# Settings:
SET(CTEST_DASHBOARD_ROOT                "@CMake_BINARY_DIR@/Tests/CTestTest3")
SET(CTEST_SITE                          "@SITE@")
SET(CTEST_BUILD_NAME                    "KWSys-@BUILDNAME@-CTest3-CVS")

# ---
SET(CTEST_SOURCE_DIRECTORY              "${CTEST_DASHBOARD_ROOT}/CVS/KWSys")
SET(CTEST_BINARY_DIRECTORY              "${CTEST_DASHBOARD_ROOT}/CVS/KWSysBin")
SET(CTEST_UPDATE_COMMAND                "@CVSCOMMAND@")
SET(CTEST_CMAKE_GENERATOR               "@CMAKE_GENERATOR@")
SET(CTEST_BUILD_CONFIGURATION           "Release")
SET(CTEST_MEMORYCHECK_COMMAND           "@MEMORYCHECK_COMMAND@")
SET(CTEST_MEMORYCHECK_SUPPRESSIONS_FILE "@MEMORYCHECK_SUPPRESSIONS_FILE@")
SET(CTEST_MEMORYCHECK_COMMAND_OPTIONS   "@MEMORYCHECK_COMMAND_OPTIONS@")
SET(CTEST_COVERAGE_COMMAND              "@COVERAGE_COMMAND@")
SET(CTEST_NOTES_FILES                   "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
SET(CTEST_CHECKOUT_COMMAND              "\"${CTEST_UPDATE_COMMAND}\" -q -z3 \"-d:pserver:anoncvs@www.cmake.org:/cvsroot/KWSys\" co -r CTest-Testing-Tag KWSys")

CTEST_EMPTY_BINARY_DIRECTORY(${CTEST_BINARY_DIRECTORY})

FILE(WRITE "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt" "
CMAKE_CXX_FLAGS:STRING=@CMAKE_CXX_FLAGS@
CMAKE_C_FLAGS:STRING=@CMAKE_C_FLAGS@
CMAKE_C_COMPILER:STRING=@CMAKE_C_COMPILER@
CMAKE_CXX_COMPILER:STRING=@CMAKE_CXX_COMPILER@
CMAKE_C_COMPILER_ARG1:STRING=@CMAKE_C_COMPILER_ARG1@
CMAKE_CXX_COMPILER_ARG1:STRING=@CMAKE_CXX_COMPILER_ARG1@

# This one is needed for testing advanced ctest features
CTEST_TEST_KWSYS:BOOL=ON
")

SET(CTEST_CUSTOM_WARNING_MATCH CommandLineArguments)

CTEST_START(Nightly)
CTEST_UPDATE(SOURCE "${CTEST_SOURCE_DIRECTORY}" RETURN_VALUE res)
CTEST_CONFIGURE(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
CTEST_READ_CUSTOM_FILES("${CTEST_BINARY_DIRECTORY}")
CTEST_BUILD(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
CTEST_TEST(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
CTEST_MEMCHECK(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
CTEST_COVERAGE(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
CTEST_SUBMIT(RETURN_VALUE res)

SET(svncommand "@SVNCOMMAND@")
IF(svncommand)
  # Project 2
  PROJECT_START("KWSys from SVN")

  # Settings:
  SET(CTEST_DASHBOARD_ROOT                "@CMake_BINARY_DIR@/Tests/CTestTest3")
  SET(CTEST_SITE                          "@SITE@")
  SET(CTEST_BUILD_NAME                    "KWSys-@BUILDNAME@-CTest3-SVN")

  # ---
  SET(CTEST_SOURCE_DIRECTORY              "${CTEST_DASHBOARD_ROOT}/SVN/kwsys")
  SET(CTEST_BINARY_DIRECTORY              "${CTEST_DASHBOARD_ROOT}/SVN/kwsysBin")
  SET(CTEST_UPDATE_COMMAND                "@SVNCOMMAND@")
  SET(CTEST_CMAKE_GENERATOR               "@CMAKE_GENERATOR@")
  SET(CTEST_BUILD_CONFIGURATION           "Release")
  SET(CTEST_MEMORYCHECK_COMMAND           "@MEMORYCHECK_COMMAND@")
  SET(CTEST_MEMORYCHECK_SUPPRESSIONS_FILE "@MEMORYCHECK_SUPPRESSIONS_FILE@")
  SET(CTEST_MEMORYCHECK_COMMAND_OPTIONS   "@MEMORYCHECK_COMMAND_OPTIONS@")
  SET(CTEST_COVERAGE_COMMAND              "@COVERAGE_COMMAND@")
  SET(CTEST_NOTES_FILES                   "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
  SET(CTEST_CHECKOUT_COMMAND              "\"${CTEST_UPDATE_COMMAND}\" co \"http://svn.na-mic.org:8000/svn/CMake/Source/kwsys/\" -r 500")

  CTEST_EMPTY_BINARY_DIRECTORY(${CTEST_BINARY_DIRECTORY})

  FILE(WRITE "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt" "
  CMAKE_CXX_FLAGS:STRING=@CMAKE_CXX_FLAGS@
  CMAKE_C_FLAGS:STRING=@CMAKE_C_FLAGS@
  CMAKE_C_COMPILER:STRING=@CMAKE_C_COMPILER@
  CMAKE_CXX_COMPILER:STRING=@CMAKE_CXX_COMPILER@
  CMAKE_C_COMPILER_ARG1:STRING=@CMAKE_C_COMPILER_ARG1@
  CMAKE_CXX_COMPILER_ARG1:STRING=@CMAKE_CXX_COMPILER_ARG1@

  # This one is needed for testing advanced ctest features
  CTEST_TEST_KWSYS:BOOL=ON
  ")

  CTEST_START(Experimental)
  CTEST_UPDATE(SOURCE "${CTEST_SOURCE_DIRECTORY}" RETURN_VALUE res)
  CTEST_CONFIGURE(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
  CTEST_BUILD(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
  CTEST_TEST(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
  CTEST_MEMCHECK(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
  CTEST_COVERAGE(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
  CTEST_SUBMIT(RETURN_VALUE res)

ELSE(svncommand)
  MESSAGE("Cannot find SVN command: ${svncommand}")
ENDIF(svncommand)
