summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2005-08-03 17:19:36 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2005-08-03 17:19:36 (GMT)
commite26c160698482b5c1c51746a62a185790f2af4a9 (patch)
tree18758bf1d203a8701859222cd622fe36f7232226 /Modules
parentd604f5f625213954e23eac48be08de763224471e (diff)
downloadCMake-e26c160698482b5c1c51746a62a185790f2af4a9.zip
CMake-e26c160698482b5c1c51746a62a185790f2af4a9.tar.gz
CMake-e26c160698482b5c1c51746a62a185790f2af4a9.tar.bz2
ENH: Initial import
Diffstat (limited to 'Modules')
-rw-r--r--Modules/CTest.cmake184
-rw-r--r--Modules/CTestTargets.cmake60
2 files changed, 244 insertions, 0 deletions
diff --git a/Modules/CTest.cmake b/Modules/CTest.cmake
new file mode 100644
index 0000000..7a6c1a9
--- /dev/null
+++ b/Modules/CTest.cmake
@@ -0,0 +1,184 @@
+# CTest.cmake
+#
+# This file configures a project to use the CTest/Dart testing/dashboard process.
+#
+OPTION(BUILD_TESTING "Build the testing tree." ON)
+
+IF(BUILD_TESTING)
+ # Setup some auxilary macros
+ MACRO(SET_IF_NOT_SET var val)
+ IF(NOT "${${var}}")
+ SET("${var}" "${val}")
+ ENDIF(NOT "${${var}}")
+ ENDMACRO(SET_IF_NOT_SET)
+
+ MACRO(SET_IF_SET var val)
+ IF("${val}" MATCHES "^$")
+ ELSE("${val}" MATCHES "^$")
+ SET("${var}" "${val}")
+ ENDIF("${val}" MATCHES "^$")
+ ENDMACRO(SET_IF_SET)
+
+ # Make sure testing is enabled
+ ENABLE_TESTING()
+
+ # the project can have a DartConfig.cmake file
+ IF(EXISTS "${PROJECT_SOURCE_DIR}/DartConfig.cmake")
+ INCLUDE("${PROJECT_SOURCE_DIR}/DartConfig.cmake")
+ ELSE(EXISTS "${PROJECT_SOURCE_DIR}/DartConfig.cmake")
+
+ # Dashboard is opened for submissions for a 24 hour period starting at
+ # the specified NIGHTLY_START_TIME. Time is specified in 24 hour format.
+ SET_IF_NOT_SET (NIGHTLY_START_TIME "00:00:00 EDT")
+
+ # Dart server to submit results (used by client)
+ # There should be an option to specify submit method, but I will leave it
+ # commented until we decide what to do with it.
+ # SET(DROP_METHOD "http" CACHE STRING "Set the CTest submit method. Valid options are http and ftp")
+ IF(DROP_METHOD MATCHES http)
+ SET_IF_NOT_SET (DROP_SITE "public.kitware.com")
+ SET_IF_NOT_SET (DROP_LOCATION "/cgi-bin/HTTPUploadDartFile.cgi")
+ ELSE(DROP_METHOD MATCHES http)
+ SET_IF_NOT_SET (DROP_SITE "public.kitware.com")
+ SET_IF_NOT_SET (DROP_LOCATION "/incoming")
+ SET_IF_NOT_SET (DROP_SITE_USER "anonymous")
+ SET_IF_NOT_SET (DROP_SITE_PASSWORD "random@someplace.com")
+ SET_IF_NOT_SET (DROP_SITE_MODE "active")
+ ENDIF(DROP_METHOD MATCHES http)
+ SET_IF_NOT_SET (TRIGGER_SITE "http://${DROP_SITE}/cgi-bin/Submit-Random-TestingResults.cgi")
+ SET_IF_NOT_SET (COMPRESS_SUBMISSION ON)
+
+ # Dart server configuration
+ SET (ROLLUP_URL "http://${DROP_SITE}/cgi-bin/random-rollup-dashboard.sh")
+ #SET (CVS_WEB_URL "")
+ #SET (CVS_WEB_CVSROOT "")
+
+ #SET (USE_DOXYGEN "Off")
+ #SET (DOXYGEN_URL "" )
+ ENDIF(EXISTS "${PROJECT_SOURCE_DIR}/DartConfig.cmake")
+ IF(EXISTS "${PROJECT_SOURCE_DIR}/CTestConfig.cmake")
+ INCLUDE("${PROJECT_SOURCE_DIR}/CTestConfig.cmake")
+ SET_IF_SET(NIGHTLY_START_TIME "${CTEST_NIGHTLY_START_TIME}")
+ SET_IF_SET(DROP_METHOD "${CTEST_DROP_METHOD}")
+ SET_IF_SET(DROP_SITE "${CTEST_DROP_SITE}")
+ SET_IF_SET(DROP_SITE_USER "${CTEST_DROP_SITE_USER}")
+ SET_IF_SET(DROP_SITE_PASSWORD "${CTEST_DROP_SITE_PASWORD}")
+ SET_IF_SET(DROP_SITE_MODE "${CTEST_DROP_SITE_MODE}")
+ SET_IF_SET(DROP_LOCATION "${CTEST_DROP_LOCATION}")
+ SET_IF_SET(TRIGGER_SITE "${CTEST_TRIGGER_SITE}")
+ ENDIF(EXISTS "${PROJECT_SOURCE_DIR}/CTestConfig.cmake")
+
+ # make program just needs to use CMAKE_MAKE_PROGRAM which is required
+ # to be defined by cmake
+ SET(MAKEPROGRAM ${CMAKE_MAKE_PROGRAM})
+
+ FIND_PROGRAM(CVSCOMMAND cvs )
+ SET(CVS_UPDATE_OPTIONS "-d -A -P" CACHE STRING "Options passed to the cvs update command.")
+ FIND_PROGRAM(SVNCOMMAND svn)
+ #SET(SVN_UPDATE_OPTIONS "-d -A -P" CACHE STRING "Options passed to the svn update command.")
+
+ IF(NOT UPDATE_TYPE)
+ IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS")
+ SET(UPDATE_TYPE cvs)
+ ELSE(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS")
+ IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn")
+ SET(UPDATE_TYPE svn)
+ ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn")
+ ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS")
+ ENDIF(NOT UPDATE_TYPE)
+
+ IF(NOT UPDATE_TYPE)
+ MESSAGE(STATUS "Cannot determine repository type. Please set UPDATE_TYPE to 'cvs' or 'svn'. CTest update will not work.")
+ ENDIF(NOT UPDATE_TYPE)
+
+ IF(UPDATE_TYPE MATCHES "[Cc][Vv][Ss]")
+ MESSAGE(STATUS "This is a CVS repository")
+ SET(UPDATE_COMMAND "${CVSCOMMAND}")
+ SET(UPDATE_OPTIONS "${CVS_UPDATE_OPTIONS}")
+ ELSE(UPDATE_TYPE MATCHES "[Cc][Vv][Ss]")
+ IF(UPDATE_TYPE MATCHES "[Ss][Vv][Nn]")
+ MESSAGE(STATUS "This is a SVN repository")
+ SET(UPDATE_COMMAND "${SVNCOMMAND}")
+ SET(UPDATE_OPTIONS "${SVN_UPDATE_OPTIONS}")
+ ENDIF(UPDATE_TYPE MATCHES "[Ss][Vv][Nn]")
+ ENDIF(UPDATE_TYPE MATCHES "[Cc][Vv][Ss]")
+
+ SET(DART_TESTING_TIMEOUT 1500 CACHE STRING "MAximum time allowed before CTest will kill the test.")
+
+ FIND_PROGRAM(MEMORYCHECK_COMMAND
+ NAMES purify valgrind boundscheck
+ PATHS
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder]"
+ DOC "Path to the memory checking command, used for memory error detection."
+ )
+ SET(MEMORYCHECK_SUPPRESSIONS_FILE "" CACHE FILEPATH "File that contains suppressions for the memory checker")
+ FIND_PROGRAM(SCPCOMMAND scp DOC "Path to scp command, used by CTest for submitting results to a Dart server")
+ FIND_PROGRAM(COVERAGE_COMMAND gcov DOC "Path to the coverage program that CTest uses for performing coverage inspection")
+
+ # set the site name
+ SITE_NAME(SITE)
+ # set the build name
+ IF(NOT BUILDNAME)
+ SET(DART_COMPILER "${CMAKE_CXX_COMPILER}")
+ IF(NOT DART_COMPILER)
+ SET(DART_COMPILER "${CMAKE_C_COMPILER}")
+ ENDIF(NOT DART_COMPILER)
+ IF(NOT DART_COMPILER)
+ SET(DART_COMPILER "unknown")
+ ENDIF(NOT DART_COMPILER)
+ IF(WIN32)
+ SET(DART_NAME_COMPONENT "NAME_WE")
+ ELSE(WIN32)
+ SET(DART_NAME_COMPONENT "NAME")
+ ENDIF(WIN32)
+ IF(NOT BUILD_NAME_SYSTEM_NAME)
+ SET(BUILD_NAME_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}")
+ ENDIF(NOT BUILD_NAME_SYSTEM_NAME)
+ IF(WIN32)
+ SET(BUILD_NAME_SYSTEM_NAME "Win32")
+ ENDIF(WIN32)
+ IF(UNIX OR BORLAND)
+ GET_FILENAME_COMPONENT(DART_CXX_NAME "${CMAKE_CXX_COMPILER}" ${DART_NAME_COMPONENT})
+ ELSE(UNIX OR BORLAND)
+ GET_FILENAME_COMPONENT(DART_CXX_NAME "${CMAKE_BUILD_TOOL}" ${DART_NAME_COMPONENT})
+ ENDIF(UNIX OR BORLAND)
+ IF(DART_CXX_NAME MATCHES "msdev")
+ SET(DART_CXX_NAME "vs60")
+ ENDIF(DART_CXX_NAME MATCHES "msdev")
+ IF(DART_CXX_NAME MATCHES "devenv")
+ IF(CMAKE_GENERATOR MATCHES "^Visual Studio 7$")
+ SET(DART_CXX_NAME "vs70")
+ ELSE(CMAKE_GENERATOR MATCHES "^Visual Studio 7$")
+ IF(CMAKE_GENERATOR MATCHES "^Visual Studio 7 .NET 2003$")
+ SET(DART_CXX_NAME "vs71")
+ ELSE(CMAKE_GENERATOR MATCHES "^Visual Studio 7 .NET 2003$")
+ SET(DART_CXX_NAME "vs8")
+ ENDIF(CMAKE_GENERATOR MATCHES "^Visual Studio 7 .NET 2003$")
+ ENDIF(CMAKE_GENERATOR MATCHES "^Visual Studio 7$")
+ ENDIF(DART_CXX_NAME MATCHES "devenv")
+ SET(BUILDNAME "${BUILD_NAME_SYSTEM_NAME}-${DART_CXX_NAME}")
+ MESSAGE(STATUS "Using Buildname: ${BUILDNAME}")
+ ENDIF(NOT BUILDNAME)
+ # set the build command
+ BUILD_COMMAND(MAKECOMMAND ${MAKEPROGRAM} )
+
+ MARK_AS_ADVANCED(
+ COVERAGE_COMMAND
+ CVSCOMMAND
+ SVNCOMMAND
+ CVS_UPDATE_OPTIONS
+ SVN_UPDATE_OPTIONS
+ MAKECOMMAND
+ MEMORYCHECK_COMMAND
+ MEMORYCHECK_SUPPRESSIONS_FILE
+ PURIFYCOMMAND
+ SCPCOMMAND
+ SITE
+ )
+ # BUILDNAME
+ IF(NOT RUN_FROM_DART)
+ SET(RUN_FROM_CTEST_OR_DART 1)
+ INCLUDE(CTestTargets)
+ SET(RUN_FROM_CTEST_OR_DART)
+ ENDIF(NOT RUN_FROM_DART)
+ENDIF(BUILD_TESTING)
diff --git a/Modules/CTestTargets.cmake b/Modules/CTestTargets.cmake
new file mode 100644
index 0000000..a90294d2
--- /dev/null
+++ b/Modules/CTestTargets.cmake
@@ -0,0 +1,60 @@
+IF(NOT RUN_FROM_CTEST_OR_DART)
+ MESSAGE(FATAL_ERROR "Do not incldue CTestTargets.cmake directly")
+ENDIF(NOT RUN_FROM_CTEST_OR_DART)
+
+# make directories in the binary tree
+FILE(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/Testing/Temporary)
+GET_FILENAME_COMPONENT(CMAKE_HOST_PATH ${CMAKE_COMMAND} PATH)
+SET(CMAKE_TARGET_PATH ${EXECUTABLE_OUTPUT_PATH})
+FIND_PROGRAM(CMAKE_CTEST_COMMAND ctest ${CMAKE_HOST_PATH} ${CMAKE_TARGET_PATH})
+MARK_AS_ADVANCED(CMAKE_CTEST_COMMAND)
+
+# Use CTest
+# configure files
+
+IF(CTEST_NEW_FORMAT)
+ CONFIGURE_FILE(
+ ${CMAKE_ROOT}/Modules/DartConfiguration.tcl.in
+ ${PROJECT_BINARY_DIR}/CTestConfiguration.ini )
+ELSE(CTEST_NEW_FORMAT)
+ CONFIGURE_FILE(
+ ${CMAKE_ROOT}/Modules/DartConfiguration.tcl.in
+ ${PROJECT_BINARY_DIR}/DartConfiguration.tcl )
+ENDIF(CTEST_NEW_FORMAT)
+
+#
+# Section 3:
+#
+# Custom targets to perform dashboard builds and submissions.
+# These should NOT need to be modified from project to project.
+#
+
+# add testing targets
+IF(${CMAKE_MAKE_PROGRAM} MATCHES make)
+ FOREACH(mode Experimental Nightly Continuous NightlyMemoryCheck)
+ ADD_CUSTOM_TARGET(${mode} ${CMAKE_CTEST_COMMAND} -D ${mode})
+ ENDFOREACH(mode)
+ELSE(${CMAKE_MAKE_PROGRAM} MATCHES make)
+ # for IDE only add them once for nested projects
+ IF (NOT DART_COMMON_TARGETS_ADDED)
+ FOREACH(mode Experimental Nightly Continuous NightlyMemoryCheck)
+ ADD_CUSTOM_TARGET(${mode} ${CMAKE_CTEST_COMMAND} -D ${mode})
+ ENDFOREACH(mode)
+ SET (DART_COMMON_TARGETS_ADDED 1)
+ ENDIF (NOT DART_COMMON_TARGETS_ADDED)
+ENDIF(${CMAKE_MAKE_PROGRAM} MATCHES make)
+
+
+# for non IDE based builds nmake and make
+# add all these extra targets
+IF(${CMAKE_MAKE_PROGRAM} MATCHES make)
+ # Make targets for Experimental builds
+ FOREACH(mode Nightly Experimental Continuous)
+ FOREACH(testtype Start Update Configure Build Test Coverage MemCheck Submit)
+ # missing purify
+ ADD_CUSTOM_TARGET(${mode}${testtype}
+ ${CMAKE_CTEST_COMMAND} -D ${mode}${testtype})
+ ENDFOREACH(testtype)
+ ENDFOREACH(mode)
+ENDIF (${CMAKE_MAKE_PROGRAM} MATCHES make)
+