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           "$ENV{CMAKE_CONFIG_TYPE}")
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@")
set(svncommand FALSE) # turn this off until namic svn cmake is back
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           "$ENV{CMAKE_CONFIG_TYPE}")
  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)
