Resync
[CMakeLuaTailorHgBridge.git] / CMakeLua / Modules / CTest.cmake
blob28d9b58db47736efe9208425ad8bbad9a94c1bab
1 # - Configure a project for testing with CTest/Dart
2 # This file configures a project to use the CTest/Dart
3 # testing/dashboard process.  This module should be included
4 # in the CMakeLists.txt file at the top of a project.  Typical usage:
5 #  INCLUDE(CTest)
6 #  IF(BUILD_TESTING)
7 #    # ... testing related CMake code ...
8 #  ENDIF(BUILD_TESTING)
9 # The BUILD_TESTING option is created by the CTest module to determine
10 # whether testing support should be enabled.  The default is ON.
12 OPTION(BUILD_TESTING "Build the testing tree." ON)
14 IF(BUILD_TESTING)
15   # Setup some auxilary macros
16   MACRO(SET_IF_NOT_SET var val)
17     IF(NOT DEFINED "${var}")
18       SET("${var}" "${val}")
19     ENDIF(NOT DEFINED "${var}")
20   ENDMACRO(SET_IF_NOT_SET)
22   MACRO(SET_IF_SET var val)
23     IF(NOT "${val}" MATCHES "^$")
24       SET("${var}" "${val}")
25     ENDIF(NOT "${val}" MATCHES "^$")
26   ENDMACRO(SET_IF_SET)
28   MACRO(SET_IF_SET_AND_NOT_SET var val)
29     IF(NOT "${val}" MATCHES "^$")
30       SET_IF_NOT_SET("${var}" "${val}")
31     ENDIF(NOT "${val}" MATCHES "^$")
32   ENDMACRO(SET_IF_SET_AND_NOT_SET)
34   # Make sure testing is enabled
35   ENABLE_TESTING()
37   IF(EXISTS "${PROJECT_SOURCE_DIR}/CTestConfig.cmake")
38     INCLUDE("${PROJECT_SOURCE_DIR}/CTestConfig.cmake")
39     SET_IF_SET_AND_NOT_SET(NIGHTLY_START_TIME "${CTEST_NIGHTLY_START_TIME}")
40     SET_IF_SET_AND_NOT_SET(DROP_METHOD "${CTEST_DROP_METHOD}")
41     SET_IF_SET_AND_NOT_SET(DROP_SITE "${CTEST_DROP_SITE}")
42     SET_IF_SET_AND_NOT_SET(DROP_SITE_USER "${CTEST_DROP_SITE_USER}")
43     SET_IF_SET_AND_NOT_SET(DROP_SITE_PASSWORD "${CTEST_DROP_SITE_PASWORD}")
44     SET_IF_SET_AND_NOT_SET(DROP_SITE_MODE "${CTEST_DROP_SITE_MODE}")
45     SET_IF_SET_AND_NOT_SET(DROP_LOCATION "${CTEST_DROP_LOCATION}")
46     SET_IF_SET_AND_NOT_SET(TRIGGER_SITE "${CTEST_TRIGGER_SITE}")
47     SET_IF_SET_AND_NOT_SET(UPDATE_TYPE "${CTEST_UPDATE_TYPE}")
48   ENDIF(EXISTS "${PROJECT_SOURCE_DIR}/CTestConfig.cmake")
50   # the project can have a DartConfig.cmake file
51   IF(EXISTS "${PROJECT_SOURCE_DIR}/DartConfig.cmake")
52     INCLUDE("${PROJECT_SOURCE_DIR}/DartConfig.cmake")
53   ELSE(EXISTS "${PROJECT_SOURCE_DIR}/DartConfig.cmake")
55     # Dashboard is opened for submissions for a 24 hour period starting at
56     # the specified NIGHTLY_START_TIME. Time is specified in 24 hour format.
57     SET_IF_NOT_SET (NIGHTLY_START_TIME "00:00:00 EDT")
58     SET_IF_NOT_SET(DROP_METHOD "http")
60     # Dart server to submit results (used by client)
61     # There should be an option to specify submit method, but I will leave it
62     # commented until we decide what to do with it.
63     # SET(DROP_METHOD "http" CACHE STRING "Set the CTest submit method. Valid options are http and ftp")
64     IF(DROP_METHOD MATCHES http)
65       SET_IF_NOT_SET (DROP_SITE "public.kitware.com")
66       SET_IF_NOT_SET (DROP_LOCATION "/cgi-bin/HTTPUploadDartFile.cgi")
67     ELSE(DROP_METHOD MATCHES http)
68       SET_IF_NOT_SET (DROP_SITE "public.kitware.com")
69       SET_IF_NOT_SET (DROP_LOCATION "/incoming")
70       SET_IF_NOT_SET (DROP_SITE_USER "anonymous")
71       SET_IF_NOT_SET (DROP_SITE_PASSWORD "random@someplace.com")
72       SET_IF_NOT_SET (DROP_SITE_MODE "active")
73     ENDIF(DROP_METHOD MATCHES http)
74     SET_IF_NOT_SET (TRIGGER_SITE "http://${DROP_SITE}/cgi-bin/Submit-Random-TestingResults.cgi")
75     SET_IF_NOT_SET (COMPRESS_SUBMISSION ON)
77     # Dart server configuration 
78     SET (ROLLUP_URL "http://${DROP_SITE}/cgi-bin/random-rollup-dashboard.sh")
79     #SET (CVS_WEB_URL "")
80     #SET (CVS_WEB_CVSROOT "")
82     #SET (USE_DOXYGEN "Off")
83     #SET (DOXYGEN_URL "" )
84   ENDIF(EXISTS "${PROJECT_SOURCE_DIR}/DartConfig.cmake")
85   SET_IF_NOT_SET (NIGHTLY_START_TIME "00:00:00 EDT")
87   # make program just needs to use CMAKE_MAKE_PROGRAM which is required
88   # to be defined by cmake 
89   SET(MAKEPROGRAM ${CMAKE_MAKE_PROGRAM})
91   FIND_PROGRAM(CVSCOMMAND cvs )
92   SET(CVS_UPDATE_OPTIONS "-d -A -P" CACHE STRING 
93     "Options passed to the cvs update command.")
94   FIND_PROGRAM(SVNCOMMAND svn)
96   IF(NOT UPDATE_TYPE)
97     IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS")
98       SET(UPDATE_TYPE cvs)
99     ELSE(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS")
100       IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn")
101         SET(UPDATE_TYPE svn)
102       ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn")
103     ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS")
104   ENDIF(NOT UPDATE_TYPE)
106   IF(NOT UPDATE_TYPE)
107     IF(NOT __CTEST_UPDATE_TYPE_COMPLAINED)
108       SET(__CTEST_UPDATE_TYPE_COMPLAINED 1 CACHE INTERNAL "Already complained about update type.")
109       MESSAGE(STATUS "CTest cannot determine repository type. Please set UPDATE_TYPE to 'cvs' or 'svn'. CTest update will not work.")
110     ENDIF(NOT __CTEST_UPDATE_TYPE_COMPLAINED)
111   ENDIF(NOT UPDATE_TYPE)
113   IF(UPDATE_TYPE MATCHES "[Cc][Vv][Ss]")
114     SET(UPDATE_COMMAND "${CVSCOMMAND}")
115     SET(UPDATE_OPTIONS "${CVS_UPDATE_OPTIONS}")
116   ELSE(UPDATE_TYPE MATCHES "[Cc][Vv][Ss]")
117     IF(UPDATE_TYPE MATCHES "[Ss][Vv][Nn]")
118       SET(UPDATE_COMMAND "${SVNCOMMAND}")
119       SET(UPDATE_OPTIONS "${SVN_UPDATE_OPTIONS}")
120     ENDIF(UPDATE_TYPE MATCHES "[Ss][Vv][Nn]")
121   ENDIF(UPDATE_TYPE MATCHES "[Cc][Vv][Ss]")
123   SET(DART_TESTING_TIMEOUT 1500 CACHE STRING 
124     "Maximum time allowed before CTest will kill the test.")
126   FIND_PROGRAM(MEMORYCHECK_COMMAND
127     NAMES purify valgrind boundscheck
128     PATHS
129     "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder]"
130     DOC "Path to the memory checking command, used for memory error detection."
131     )
132   SET(MEMORYCHECK_SUPPRESSIONS_FILE "" CACHE FILEPATH 
133     "File that contains suppressions for the memory checker")
134   FIND_PROGRAM(SCPCOMMAND scp DOC 
135     "Path to scp command, used by CTest for submitting results to a Dart server"
136     )
137   FIND_PROGRAM(COVERAGE_COMMAND gcov DOC 
138     "Path to the coverage program that CTest uses for performing coverage inspection"
139     )
141   # set the site name
142   SITE_NAME(SITE)
143   # set the build name
144   IF(NOT BUILDNAME)
145     SET(DART_COMPILER "${CMAKE_CXX_COMPILER}")
146     IF(NOT DART_COMPILER)
147       SET(DART_COMPILER "${CMAKE_C_COMPILER}")
148     ENDIF(NOT DART_COMPILER)
149     IF(NOT DART_COMPILER)
150       SET(DART_COMPILER "unknown")
151     ENDIF(NOT DART_COMPILER)
152     IF(WIN32)
153       SET(DART_NAME_COMPONENT "NAME_WE")
154     ELSE(WIN32)
155       SET(DART_NAME_COMPONENT "NAME")
156     ENDIF(WIN32)
157     IF(NOT BUILD_NAME_SYSTEM_NAME)
158       SET(BUILD_NAME_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}")
159     ENDIF(NOT BUILD_NAME_SYSTEM_NAME)
160     IF(WIN32)
161       SET(BUILD_NAME_SYSTEM_NAME "Win32")
162     ENDIF(WIN32)
163     IF(UNIX OR BORLAND)
164       GET_FILENAME_COMPONENT(DART_CXX_NAME 
165         "${CMAKE_CXX_COMPILER}" ${DART_NAME_COMPONENT})
166     ELSE(UNIX OR BORLAND)
167       GET_FILENAME_COMPONENT(DART_CXX_NAME 
168         "${CMAKE_BUILD_TOOL}" ${DART_NAME_COMPONENT})
169     ENDIF(UNIX OR BORLAND)
170     IF(DART_CXX_NAME MATCHES "msdev")
171       SET(DART_CXX_NAME "vs60")
172     ENDIF(DART_CXX_NAME MATCHES "msdev")
173     IF(DART_CXX_NAME MATCHES "devenv")
174       IF(CMAKE_GENERATOR MATCHES "^Visual Studio 7$")
175         SET(DART_CXX_NAME "vs70")
176       ELSE(CMAKE_GENERATOR MATCHES "^Visual Studio 7$")
177         IF(CMAKE_GENERATOR MATCHES "^Visual Studio 7 .NET 2003$")
178           SET(DART_CXX_NAME "vs71")
179         ELSE(CMAKE_GENERATOR MATCHES "^Visual Studio 7 .NET 2003$")
180           SET(DART_CXX_NAME "vs8")
181         ENDIF(CMAKE_GENERATOR MATCHES "^Visual Studio 7 .NET 2003$")
182       ENDIF(CMAKE_GENERATOR MATCHES "^Visual Studio 7$")
183     ENDIF(DART_CXX_NAME MATCHES "devenv")
184     SET(BUILDNAME "${BUILD_NAME_SYSTEM_NAME}-${DART_CXX_NAME}")
185   ENDIF(NOT BUILDNAME)
186   # set the build command
187   BUILD_COMMAND(MAKECOMMAND ${MAKEPROGRAM} )
189   MARK_AS_ADVANCED(
190     COVERAGE_COMMAND
191     CVSCOMMAND
192     SVNCOMMAND
193     CVS_UPDATE_OPTIONS
194     SVN_UPDATE_OPTIONS
195     MAKECOMMAND 
196     MEMORYCHECK_COMMAND
197     MEMORYCHECK_SUPPRESSIONS_FILE
198     PURIFYCOMMAND
199     SCPCOMMAND
200     SITE 
201     )
202   #  BUILDNAME 
203   IF(NOT RUN_FROM_DART)
204     SET(RUN_FROM_CTEST_OR_DART 1)
205     INCLUDE(CTestTargets)
206     SET(RUN_FROM_CTEST_OR_DART)
207   ENDIF(NOT RUN_FROM_DART)
208 ENDIF(BUILD_TESTING)