1 # a macro for tests that have a simple format where the name matches the
2 # directory and project
3 MACRO(ADD_TEST_MACRO NAME COMMAND)
4 ADD_TEST(${NAME} ${CMAKE_CTEST_COMMAND}
6 "${CMake_SOURCE_DIR}/Tests/${NAME}"
7 "${CMake_BINARY_DIR}/Tests/${NAME}"
9 --build-generator ${CMAKE_TEST_GENERATOR}
10 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
11 --build-project ${NAME}
12 --test-command ${COMMAND})
13 ENDMACRO(ADD_TEST_MACRO)
18 # Should the long tests be run?
19 OPTION(CMAKE_RUN_LONG_TESTS
20 "Should the long tests be run (such as Bootstrap)." ON)
21 MARK_AS_ADVANCED(CMAKE_RUN_LONG_TESTS)
23 IF (CMAKE_RUN_LONG_TESTS)
24 OPTION(CTEST_TEST_CTEST
25 "Should the tests that run a full sub ctest process be run?"
27 MARK_AS_ADVANCED(CTEST_TEST_CTEST)
28 ENDIF (CMAKE_RUN_LONG_TESTS)
30 # add a bunch of standard build-and-test style tests
31 ADD_TEST_MACRO(CommandLineTest CommandLineTest)
32 ADD_TEST_MACRO(FindPackageTest FindPackageTest)
33 ADD_TEST_MACRO(StringFileTest StringFileTest)
34 ADD_TEST_MACRO(TryCompile TryCompile)
35 ADD_TEST_MACRO(TarTest TarTest)
36 ADD_TEST_MACRO(SystemInformation SystemInformation)
37 ADD_TEST_MACRO(MathTest MathTest)
38 ADD_TEST_MACRO(Simple Simple)
39 ADD_TEST_MACRO(PreOrder PreOrder)
40 ADD_TEST_MACRO(COnly COnly)
41 ADD_TEST_MACRO(CxxOnly CxxOnly)
42 ADD_TEST_MACRO(NewlineArgs NewlineArgs)
43 ADD_TEST_MACRO(SetLang SetLang)
44 ADD_TEST_MACRO(ExternalOBJ ExternalOBJ)
45 ADD_TEST_MACRO(LoadCommand LoadedCommand)
46 ADD_TEST_MACRO(LinkLine LinkLine)
47 ADD_TEST_MACRO(MacroTest miniMacroTest)
48 ADD_TEST_MACRO(FunctionTest miniFunctionTest)
49 ADD_TEST_MACRO(ReturnTest ReturnTest)
50 ADD_TEST_MACRO(Properties Properties)
51 ADD_TEST_MACRO(Assembler HelloAsm)
52 ADD_TEST_MACRO(SourceGroups SourceGroups)
53 ADD_TEST_MACRO(Preprocess Preprocess)
54 ADD_TEST_MACRO(ExportImport ExportImport)
56 # test for correct sub-project generation
57 # not implemented in VS6 or Xcode
58 IF(NOT MSVC60 AND NOT XCODE AND NOT MSVC70)
59 # run cmake and configure all of SubProject
60 # but only build the independent executable car
61 ADD_TEST(SubProject ${CMAKE_CTEST_COMMAND}
63 "${CMake_SOURCE_DIR}/Tests/SubProject"
64 "${CMake_BINARY_DIR}/Tests/SubProject"
65 --build-project SubProject
66 --build-generator ${CMAKE_TEST_GENERATOR}
67 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
71 # For stage 2, do not run cmake again.
72 # Then build the foo sub project which should build
73 # the bar library which should be referenced because
74 # foo links to the static library bar, but bar is not
75 # directly in the foo sub project
76 ADD_TEST(SubProject-Stage2 ${CMAKE_CTEST_COMMAND}
78 "${CMake_SOURCE_DIR}/Tests/SubProject/foo"
79 "${CMake_BINARY_DIR}/Tests/SubProject/foo"
80 --build-generator ${CMAKE_TEST_GENERATOR}
81 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
87 ENDIF(NOT MSVC60 AND NOT XCODE AND NOT MSVC70)
90 ADD_TEST_MACRO(DocTest DocTest)
93 IF(CMAKE_BUILD_NIGHTLY_WINDOWS_TEST)
94 FILE(MAKE_DIRECTORY "${CMake_BINARY_DIR}/Tests/CMake-CVS")
95 FILE(WRITE "${CMake_BINARY_DIR}/Tests/CMake-CVS/nightly-cmake.sh"
96 "cd ${CMake_BINARY_DIR}/Tests/CMake-CVS
97 ${CMake_BINARY_DIR}/bin/cmake -DCMAKE_VERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Release/vogon_release.cmake
98 ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Release/upload_release.cmake
100 ADD_TEST(NightlyCMakeBuild
101 /bin/sh ${CMake_BINARY_DIR}/Tests/CMake-CVS/nightly-cmake.sh)
102 IF(COMMAND SET_TESTS_PROPERTIES AND COMMAND GET_TEST_PROPERTY)
103 SET_TESTS_PROPERTIES ( NightlyCMakeBuild PROPERTIES TIMEOUT 3500)
104 ENDIF(COMMAND SET_TESTS_PROPERTIES AND COMMAND GET_TEST_PROPERTY)
105 ENDIF(CMAKE_BUILD_NIGHTLY_WINDOWS_TEST)
108 # add tests with more complex invocations
109 ADD_TEST(Framework ${CMAKE_CTEST_COMMAND}
111 "${CMake_SOURCE_DIR}/Tests/Framework"
112 "${CMake_BINARY_DIR}/Tests/Framework"
114 --build-generator ${CMAKE_TEST_GENERATOR}
115 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
116 --build-project Framework
118 "-DCMAKE_INSTALL_PREFIX:PATH=${CMake_BINARY_DIR}/Tests/Framework/Install"
121 ADD_TEST(TargetName ${CMAKE_CTEST_COMMAND}
123 "${CMake_SOURCE_DIR}/Tests/TargetName"
124 "${CMake_BINARY_DIR}/Tests/TargetName"
126 --build-generator ${CMAKE_TEST_GENERATOR}
127 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
128 --build-project TargetName
129 --test-command ${CMAKE_CMAKE_COMMAND} -E compare_files
130 ${CMake_SOURCE_DIR}/Tests/TargetName/scripts/hello_world
131 ${CMake_BINARY_DIR}/Tests/TargetName/scripts/hello_world)
133 ADD_TEST(LibName ${CMAKE_CTEST_COMMAND}
135 "${CMake_SOURCE_DIR}/Tests/LibName"
136 "${CMake_BINARY_DIR}/Tests/LibName"
138 --build-generator ${CMAKE_TEST_GENERATOR}
139 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
140 --build-project LibName
141 --build-exe-dir "${CMake_BINARY_DIR}/Tests/LibName/lib"
142 --test-command foobar
145 ADD_TEST(CustComDepend ${CMAKE_CTEST_COMMAND}
147 "${CMake_SOURCE_DIR}/Tests/CustComDepend"
148 "${CMake_BINARY_DIR}/Tests/CustComDepend"
150 --build-generator ${CMAKE_TEST_GENERATOR}
151 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
152 --build-project CustComDepend
153 --build-exe-dir "${CMake_BINARY_DIR}/Tests/CustComDepend/bin"
154 --test-command foo bar.c
157 ADD_TEST(CustomCommand ${CMAKE_CTEST_COMMAND}
159 "${CMake_SOURCE_DIR}/Tests/CustomCommand"
160 "${CMake_BINARY_DIR}/Tests/CustomCommand"
162 --build-generator ${CMAKE_TEST_GENERATOR}
163 --build-project CustomCommand
164 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
165 --build-exe-dir "${CMake_BINARY_DIR}/Tests/CustomCommand/bin"
166 --test-command CustomCommand
169 ADD_TEST(CustomCommandWorkingDirectory ${CMAKE_CTEST_COMMAND}
171 "${CMake_SOURCE_DIR}/Tests/CustomCommandWorkingDirectory"
172 "${CMake_BINARY_DIR}/Tests/CustomCommandWorkingDirectory"
174 --build-generator ${CMAKE_TEST_GENERATOR}
175 --build-project TestWorkingDir
176 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
177 --test-command working
180 #ADD_TEST(SimpleExclude ${CMAKE_CTEST_COMMAND}
182 # "${CMake_SOURCE_DIR}/Tests/SimpleExclude"
183 # "${CMake_BINARY_DIR}/Tests/SimpleExclude"
184 # --build-generator ${CMAKE_TEST_GENERATOR}
185 # --build-project SimpleExclude
186 # --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
189 #--test-command "${CMAKE_COMMAND}"
190 #"-DCONFIGURATION=\${CTEST_CONFIGURATION_TYPE}"
191 #-P "${CMAKE_BINARY_DIR}/Tests/SimpleExclude/run.cmake"
194 # ADD_TEST(SameName ${CMAKE_CTEST_COMMAND}
196 # "${CMake_SOURCE_DIR}/Tests/SameName"
197 # "${CMake_BINARY_DIR}/Tests/SameName"
198 # --build-generator ${CMAKE_TEST_GENERATOR}
199 # --build-project SameName
200 # --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
203 # "${CMake_BINARY_DIR}/Tests/SameName/Exe1/mytest2")
205 ADD_TEST(OutOfSource ${CMAKE_CTEST_COMMAND}
207 "${CMake_SOURCE_DIR}/Tests/OutOfSource"
208 "${CMake_BINARY_DIR}/Tests/OutOfSource"
209 --build-generator ${CMAKE_TEST_GENERATOR}
210 --build-project OutOfSource
211 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
214 "${CMake_BINARY_DIR}/Tests/OutOfSource/SubDir/OutOfSourceSubdir/simple")
216 ADD_TEST(BuildDepends ${CMAKE_CTEST_COMMAND}
218 "${CMake_SOURCE_DIR}/Tests/BuildDepends"
219 "${CMake_BINARY_DIR}/Tests/BuildDepends"
220 --build-generator ${CMAKE_TEST_GENERATOR}
221 --build-project BuildDepends
222 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
225 SET(SimpleInstallInstallDir
226 "${CMake_BINARY_DIR}/Tests/SimpleInstall/InstallDirectory")
227 ADD_TEST(SimpleInstall ${CMAKE_CTEST_COMMAND}
229 "${CMake_SOURCE_DIR}/Tests/SimpleInstall"
230 "${CMake_BINARY_DIR}/Tests/SimpleInstall"
231 --build-generator ${CMAKE_TEST_GENERATOR}
232 --build-project TestSimpleInstall
233 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
236 "-DCMAKE_INSTALL_PREFIX:PATH=${SimpleInstallInstallDir}"
237 --test-command ${SimpleInstallInstallDir}/MyTest/bin/SimpleInstExe)
238 ADD_TEST(SimpleInstall-Stage2 ${CMAKE_CTEST_COMMAND}
240 "${CMake_SOURCE_DIR}/Tests/SimpleInstallS2"
241 "${CMake_BINARY_DIR}/Tests/SimpleInstallS2"
242 --build-generator ${CMAKE_TEST_GENERATOR}
243 --build-project TestSimpleInstall
244 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
247 "-DCMAKE_INSTALL_PREFIX:PATH=${SimpleInstallInstallDir}"
249 --test-command ${SimpleInstallInstallDir}/MyTest/bin/SimpleInstExeS2)
251 ADD_TEST(X11 ${CMAKE_CTEST_COMMAND}
253 "${CMake_SOURCE_DIR}/Tests/X11"
254 "${CMake_BINARY_DIR}/Tests/X11"
255 --build-generator ${CMAKE_TEST_GENERATOR}
256 --build-project UseX11
257 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
259 --test-command UseX11)
261 ADD_TEST(LoadedCommandOneConfig ${CMAKE_CTEST_COMMAND}
263 "${CMake_SOURCE_DIR}/Tests/LoadCommandOneConfig"
264 "${CMake_BINARY_DIR}/Tests/LoadCommandOneConfig"
265 --build-generator ${CMAKE_TEST_GENERATOR}
266 --build-project LoadCommand
267 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
268 --test-command LoadedCommand
271 # Como does not seem to support shared libraries.
272 GET_FILENAME_COMPONENT(CMAKE_BASE_NAME ${CMAKE_CXX_COMPILER} NAME_WE)
273 IF(CMAKE_BASE_NAME MATCHES "^como$")
274 SET(COMPILER_IS_COMO 1)
275 ENDIF(CMAKE_BASE_NAME MATCHES "^como$")
276 IF(NOT COMPILER_IS_COMO)
277 ADD_TEST(complex ${CMAKE_CTEST_COMMAND}
279 "${CMake_SOURCE_DIR}/Tests/Complex"
280 "${CMake_BINARY_DIR}/Tests/Complex"
282 --build-config-sample "${CMAKE_CTEST_COMMAND}"
283 --build-generator ${CMAKE_TEST_GENERATOR}
284 --build-project Complex
285 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
286 --build-exe-dir "${CMake_BINARY_DIR}/Tests/Complex/bin"
288 -DCMAKE_TEST_DIFFERENT_GENERATOR:BOOL=${CMAKE_TEST_DIFFERENT_GENERATOR}
289 -DCMAKE_TEST_SYSTEM_LIBRARIES:BOOL=${CMAKE_TEST_SYSTEM_LIBRARIES}
290 --test-command complex
293 ADD_TEST(complexOneConfig ${CMAKE_CTEST_COMMAND}
295 "${CMake_SOURCE_DIR}/Tests/ComplexOneConfig"
296 "${CMake_BINARY_DIR}/Tests/ComplexOneConfig"
297 --build-generator ${CMAKE_TEST_GENERATOR}
298 --build-project Complex
299 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
300 --build-exe-dir "${CMake_BINARY_DIR}/Tests/ComplexOneConfig/bin"
302 -DCMAKE_TEST_DIFFERENT_GENERATOR:BOOL=${CMAKE_TEST_DIFFERENT_GENERATOR}
303 -DCMAKE_TEST_SYSTEM_LIBRARIES:BOOL=${CMAKE_TEST_SYSTEM_LIBRARIES}
304 --test-command complex)
306 # This fails on VS 70
307 # works on Xcode and makefiles
308 # ADD_TEST(ConvLibrary ${CMAKE_CTEST_COMMAND}
310 # "${CMake_SOURCE_DIR}/Tests/ConvLibrary"
311 # "${CMake_BINARY_DIR}/Tests/ConvLibrary"
313 # --build-generator ${CMAKE_TEST_GENERATOR}
314 # --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
315 # --build-project ConvLibrary
316 # --test-command bartest)
319 # ADD_TEST(complexRelativePaths ${CMAKE_CTEST_COMMAND}
321 # "${CMake_SOURCE_DIR}/Tests/ComplexRelativePaths"
322 # "${CMake_BINARY_DIR}/Tests/ComplexRelativePaths"
323 # --build-generator ${CMAKE_TEST_GENERATOR}
324 # --build-project complex
325 # --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
326 # --build-exe-dir "${CMake_BINARY_DIR}/Tests/ComplexRelativePaths/bin"
327 # --build-options -DCMAKE_USE_RELATIVE_PATHS:BOOL=ON
328 # --test-command complex)
330 ENDIF(NOT COMPILER_IS_COMO)
332 ADD_TEST(Example ${CMAKE_CTEST_COMMAND}
334 "${CMake_SOURCE_DIR}/Example"
335 "${CMake_BINARY_DIR}/Example"
336 --build-generator ${CMAKE_TEST_GENERATOR}
337 --build-project HELLO
338 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
339 --build-exe-dir "${CMake_BINARY_DIR}/Example/Demo"
340 --test-command helloDemo
343 # do each of the tutorial steps
344 FOREACH(STP RANGE 1 7)
345 ADD_TEST(TutorialStep${STP} ${CMAKE_CTEST_COMMAND}
347 "${CMake_SOURCE_DIR}/Tests/Tutorial/Step${STP}"
348 "${CMake_BINARY_DIR}/Tests/Tutorial/Step${STP}"
350 --build-generator ${CMAKE_TEST_GENERATOR}
351 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
352 --build-project Tutorial
353 --test-command Tutorial 25.0)
356 ADD_TEST(testing ${CMAKE_CTEST_COMMAND}
358 "${CMake_SOURCE_DIR}/Tests/Testing"
359 "${CMake_BINARY_DIR}/Tests/Testing"
360 --build-generator ${CMAKE_TEST_GENERATOR}
361 --build-project Testing
362 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
363 --build-exe-dir "${CMake_BINARY_DIR}/Tests/Testing/bin"
364 --test-command testing
367 ADD_TEST(wrapping ${CMAKE_CTEST_COMMAND}
369 "${CMake_SOURCE_DIR}/Tests/Wrapping"
370 "${CMake_BINARY_DIR}/Tests/Wrapping"
371 --build-generator ${CMAKE_TEST_GENERATOR}
372 --build-project Wrapping
373 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
374 --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
375 --test-command wrapping
377 ADD_TEST(qtwrapping ${CMAKE_CTEST_COMMAND}
379 "${CMake_SOURCE_DIR}/Tests/Wrapping"
380 "${CMake_BINARY_DIR}/Tests/Wrapping"
381 --build-generator ${CMAKE_TEST_GENERATOR}
382 --build-project Wrapping
383 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
384 --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
385 --test-command qtwrapping
388 ADD_TEST(testdriver1 ${CMAKE_CTEST_COMMAND}
390 "${CMake_SOURCE_DIR}/Tests/TestDriver"
391 "${CMake_BINARY_DIR}/Tests/TestDriver"
392 --build-generator ${CMAKE_TEST_GENERATOR}
393 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
394 --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
395 --build-project TestDriverTest
396 --test-command TestDriverTest test1
399 ADD_TEST(testdriver2 ${CMAKE_CTEST_COMMAND}
401 "${CMake_SOURCE_DIR}/Tests/TestDriver"
402 "${CMake_BINARY_DIR}/Tests/TestDriver"
403 --build-generator ${CMAKE_TEST_GENERATOR}
404 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
405 --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
406 --build-project TestDriverTest
407 --test-command TestDriverTest test2
410 ADD_TEST(testdriver3 ${CMAKE_CTEST_COMMAND}
412 "${CMake_SOURCE_DIR}/Tests/TestDriver"
413 "${CMake_BINARY_DIR}/Tests/TestDriver"
414 --build-generator ${CMAKE_TEST_GENERATOR}
415 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
416 --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
417 --build-project TestDriverTest
418 --test-command TestDriverTest subdir/test3
421 ADD_TEST(Dependency ${CMAKE_CTEST_COMMAND}
423 "${CMake_SOURCE_DIR}/Tests/Dependency"
424 "${CMake_BINARY_DIR}/Tests/Dependency"
425 --build-exe-dir "${CMake_BINARY_DIR}/Tests/Dependency/Exec"
426 --build-generator ${CMAKE_TEST_GENERATOR}
427 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
428 --build-project Dependency
432 IF("${CMAKE_SYSTEM_NAME}" MATCHES syllable)
434 # RPATH isn't supported under Syllable, so the tests don't
435 # find their libraries. In order to fix that LIBRARY_OUTPUT_DIR
436 # in the tests would have to be adjusted to ${EXECUTABLE_OUTPUT_DIR}/lib .
437 # For now we just require on Syllable that the user adjusts the DLL_PATH
438 # environment variable, so except the two tests below all other tests will succeed.
440 SET(_DLL_PATH "$ENV{DLL_PATH}")
441 IF(NOT "${_DLL_PATH}" MATCHES "^(.*:)?\\@bindir\\@/\\.(:.*)?$")
442 MESSAGE(FATAL_ERROR "In order to successfully run the CMake test suite on Syllable you need to add \"\\@bindir\\@/.\" to the DLL_PATH environment variable")
443 ENDIF(NOT "${_DLL_PATH}" MATCHES "^(.*:)?\\@bindir\\@/\\.(:.*)?$")
444 IF(NOT "${_DLL_PATH}" MATCHES "^(.*:)?\\@bindir\\@/\\.\\./lib(:.*)?$")
445 MESSAGE(FATAL_ERROR "In order to successfully run the CMake test suite on Syllable you need to add \"\\@bindir\\@/../lib\" to the DLL_PATH environment variable")
446 ENDIF(NOT "${_DLL_PATH}" MATCHES "^(.*:)?\\@bindir\\@/\\.\\./lib(:.*)?$")
448 ELSE("${CMAKE_SYSTEM_NAME}" MATCHES syllable)
450 ADD_TEST(JumpWithLibOut ${CMAKE_CTEST_COMMAND}
452 "${CMake_SOURCE_DIR}/Tests/Jump"
453 "${CMake_BINARY_DIR}/Tests/Jump/WithLibOut"
454 --build-exe-dir "${CMake_BINARY_DIR}/Tests/Jump/WithLibOut/Executable"
456 --build-generator ${CMAKE_TEST_GENERATOR}
457 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
459 -DLIBRARY_OUTPUT_PATH:PATH=${CMake_BINARY_DIR}/Tests/Jump/WithLibOut/Lib
460 --test-command jumpExecutable
463 ADD_TEST(JumpNoLibOut ${CMAKE_CTEST_COMMAND}
465 "${CMake_SOURCE_DIR}/Tests/Jump"
466 "${CMake_BINARY_DIR}/Tests/Jump/NoLibOut"
467 --build-exe-dir "${CMake_BINARY_DIR}/Tests/Jump/NoLibOut/Executable"
468 --build-run-dir "${CMake_BINARY_DIR}/Tests/Jump/NoLibOut/Executable"
470 --build-generator ${CMAKE_TEST_GENERATOR}
471 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
472 --test-command jumpExecutable
475 ADD_TEST(Plugin ${CMAKE_CTEST_COMMAND}
477 "${CMake_SOURCE_DIR}/Tests/Plugin"
478 "${CMake_BINARY_DIR}/Tests/Plugin"
479 --build-generator ${CMAKE_TEST_GENERATOR}
480 --build-project Plugin
481 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
483 --test-command bin/example)
485 IF(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG)
486 ADD_TEST_MACRO(RuntimePath RuntimePath)
487 ENDIF(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG)
488 ENDIF("${CMAKE_SYSTEM_NAME}" MATCHES syllable)
490 ADD_TEST(linkorder1 ${CMAKE_CTEST_COMMAND}
492 "${CMake_SOURCE_DIR}/Tests/LinkLineOrder"
493 "${CMake_BINARY_DIR}/Tests/LinkLineOrder"
494 --build-generator ${CMAKE_TEST_GENERATOR}
495 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
496 --build-project LinkLineOrder
500 ADD_TEST(linkorder2 ${CMAKE_CTEST_COMMAND}
502 "${CMake_SOURCE_DIR}/Tests/LinkLineOrder"
503 "${CMake_BINARY_DIR}/Tests/LinkLineOrder"
504 --build-generator ${CMAKE_TEST_GENERATOR}
505 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
506 --build-project LinkLineOrder
510 IF(NOT CMAKE_TEST_DIFFERENT_GENERATOR)
511 ADD_TEST(kwsys ${CMAKE_CTEST_COMMAND}
513 "${CMake_SOURCE_DIR}/Source/kwsys"
514 "${CMake_BINARY_DIR}/Tests/kwsys"
515 --build-generator ${CMAKE_TEST_GENERATOR}
516 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
517 --build-project kwsys
518 --test-command kwsysTestsCxx testIOS
520 ENDIF(NOT CMAKE_TEST_DIFFERENT_GENERATOR)
522 IF(${CMAKE_TEST_MAKEPROGRAM} MATCHES make)
524 ${CMAKE_TEST_MAKEPROGRAM} ARGS no_such_target --version
525 RETURN_VALUE res OUTPUT_VARIABLE out
528 IF("${out}" MATCHES "GNU")
530 ENDIF("${out}" MATCHES "GNU")
531 ENDIF("${res}" EQUAL 0)
532 ENDIF(${CMAKE_TEST_MAKEPROGRAM} MATCHES make)
534 # only add this test on platforms that support it
535 # some old versions of make simply cannot handle spaces in paths
537 "${CMAKE_TEST_MAKEPROGRAM}" MATCHES "nmake|gmake|wmake" OR
538 "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio|XCode|Borland")
539 ADD_TEST(SubDirSpaces ${CMAKE_CTEST_COMMAND}
541 "${CMake_SOURCE_DIR}/Tests/SubDirSpaces"
542 "${CMake_BINARY_DIR}/Tests/SubDirSpaces"
544 "${CMake_BINARY_DIR}/Tests/SubDirSpaces/Executable Sources"
545 --build-generator ${CMAKE_TEST_GENERATOR}
546 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
547 --build-project SUBDIR
549 "${CMake_BINARY_DIR}/Tests/SubDirSpaces/ShouldBeHere"
550 "${CMake_BINARY_DIR}/Tests/SubDirSpaces/testfromsubdir.obj"
552 ENDIF (MAKE_IS_GNU OR
553 "${CMAKE_TEST_MAKEPROGRAM}" MATCHES "nmake|gmake|wmake" OR
554 "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio|XCode|Borland")
557 ADD_TEST(SubDir ${CMAKE_CTEST_COMMAND}
559 "${CMake_SOURCE_DIR}/Tests/SubDir"
560 "${CMake_BINARY_DIR}/Tests/SubDir"
561 --build-exe-dir "${CMake_BINARY_DIR}/Tests/SubDir/Executable"
562 --build-generator ${CMAKE_TEST_GENERATOR}
563 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
564 --build-project SUBDIR
566 "${CMake_BINARY_DIR}/Tests/SubDir/ShouldBeHere"
567 "${CMake_BINARY_DIR}/Tests/SubDir/testfromsubdir.obj"
570 ADD_TEST(SubDir ${CMAKE_CTEST_COMMAND}
572 "${CMake_SOURCE_DIR}/Tests/SubDir"
573 "${CMake_BINARY_DIR}/Tests/SubDir"
574 --build-exe-dir "${CMake_BINARY_DIR}/Tests/SubDir/Executable"
575 --build-generator ${CMAKE_TEST_GENERATOR}
576 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
577 --build-project SUBDIR
579 "${CMake_BINARY_DIR}/Tests/SubDir/ShouldBeHere"
580 "${CMake_BINARY_DIR}/Tests/SubDir/testfromsubdir.o"
585 ADD_TEST_MACRO(PrecompiledHeader foo)
586 ENDIF(CMAKE_TEST_MSVC)
588 IF("${CMAKE_TEST_GENERATOR}" MATCHES "Makefile")
589 ADD_TEST(MakeClean ${CMAKE_CTEST_COMMAND}
591 "${CMake_SOURCE_DIR}/Tests/MakeClean"
592 "${CMake_BINARY_DIR}/Tests/MakeClean"
593 --build-generator ${CMAKE_TEST_GENERATOR}
594 --build-project MakeClean
595 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
596 --build-exe-dir "${CMake_BINARY_DIR}/MakeClean"
597 --test-command check_clean
599 ENDIF("${CMAKE_TEST_GENERATOR}" MATCHES "Makefile")
601 IF(${CMAKE_TEST_GENERATOR} MATCHES "Visual Studio")
602 ADD_TEST(VSExternalInclude ${CMAKE_CTEST_COMMAND}
604 "${CMake_SOURCE_DIR}/Tests/VSExternalInclude"
605 "${CMake_BINARY_DIR}/Tests/VSExternalInclude"
607 --build-generator ${CMAKE_TEST_GENERATOR}
608 --build-project VSExternalInclude
609 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
610 --test-command VSExternalInclude)
611 ENDIF(${CMAKE_TEST_GENERATOR} MATCHES "Visual Studio")
613 IF (APPLE AND CMAKE_COMPILER_IS_GNUCXX)
614 SET(BundleTestInstallDir
615 "${CMake_BINARY_DIR}/Tests/BundleTest/InstallDirectory")
616 ADD_TEST(BundleTest ${CMAKE_CTEST_COMMAND}
618 "${CMake_SOURCE_DIR}/Tests/BundleTest"
619 "${CMake_BINARY_DIR}/Tests/BundleTest"
621 --build-generator ${CMAKE_TEST_GENERATOR}
622 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
623 --build-project BundleTest
624 --build-target install
625 # --build-target package
626 --build-options "-DCMAKE_INSTALL_PREFIX:PATH=${BundleTestInstallDir}"
627 "-DCMake_SOURCE_DIR:PATH=${CMAKE_SOURCE_DIR}"
629 ${BundleTestInstallDir}/Applications/SecondBundleExe.app/Contents/MacOS/SecondBundleExe)
631 ADD_TEST_MACRO(ObjC++ ObjC++)
632 ENDIF (APPLE AND CMAKE_COMPILER_IS_GNUCXX)
634 IF (CTEST_TEST_CTEST AND CMAKE_RUN_LONG_TESTS)
635 CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestTest/test.cmake.in"
636 "${CMake_BINARY_DIR}/Tests/CTestTest/test.cmake" @ONLY ESCAPE_QUOTES)
637 ADD_TEST(CTestTest ${CMAKE_CTEST_COMMAND}
638 -S "${CMake_BINARY_DIR}/Tests/CTestTest/test.cmake" -V
639 --output-log "${CMake_BINARY_DIR}/Tests/CTestTest/testOutput.log"
641 CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestTest2/test.cmake.in"
642 "${CMake_BINARY_DIR}/Tests/CTestTest2/test.cmake" @ONLY ESCAPE_QUOTES)
643 ADD_TEST(CTestTest2 ${CMAKE_CTEST_COMMAND}
644 -S "${CMake_BINARY_DIR}/Tests/CTestTest2/test.cmake" -V
645 --output-log "${CMake_BINARY_DIR}/Tests/CTestTest2/testOutput.log"
647 CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestTest3/test.cmake.in"
648 "${CMake_BINARY_DIR}/Tests/CTestTest3/test.cmake" @ONLY ESCAPE_QUOTES)
649 ADD_TEST(CTestTest3 ${CMAKE_CTEST_COMMAND}
650 -S "${CMake_BINARY_DIR}/Tests/CTestTest3/test.cmake" -V
651 --output-log "${CMake_BINARY_DIR}/Tests/CTestTest3/testOutput.log"
653 # these tests take a long time, make sure they have it
654 IF(COMMAND SET_TESTS_PROPERTIES AND COMMAND GET_TEST_PROPERTY)
655 # if timeouts have not already been set
656 GET_TEST_PROPERTY(CTestTest TIMEOUT PREVIOUS_TIMEOUT)
657 IF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
658 SET_TESTS_PROPERTIES ( CTestTest PROPERTIES TIMEOUT 1500)
659 ENDIF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
661 GET_TEST_PROPERTY(CTestTest2 TIMEOUT PREVIOUS_TIMEOUT)
662 IF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
663 SET_TESTS_PROPERTIES ( CTestTest2 PROPERTIES TIMEOUT 1500)
664 ENDIF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
666 GET_TEST_PROPERTY(CTestTest3 TIMEOUT PREVIOUS_TIMEOUT)
667 IF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
668 SET_TESTS_PROPERTIES ( CTestTest3 PROPERTIES TIMEOUT 1500)
669 ENDIF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
670 ENDIF(COMMAND SET_TESTS_PROPERTIES AND COMMAND GET_TEST_PROPERTY)
671 ENDIF (CTEST_TEST_CTEST AND CMAKE_RUN_LONG_TESTS)
673 IF("${CMAKE_TEST_GENERATOR}" MATCHES Xcode)
674 SET(CMAKE_SKIP_BOOTSTRAP_TEST 1)
675 ENDIF("${CMAKE_TEST_GENERATOR}" MATCHES Xcode)
676 IF(EXISTS "${CMAKE_BINARY_DIR}/CMakeLists.txt")
677 # If there is CMakeLists.txt in the binary tree, assume in-source build
678 SET(CMAKE_SKIP_BOOTSTRAP_TEST 1)
679 ENDIF(EXISTS "${CMAKE_BINARY_DIR}/CMakeLists.txt")
680 IF(UNIX AND CMAKE_RUN_LONG_TESTS AND NOT CMAKE_SKIP_BOOTSTRAP_TEST)
683 ADD_TEST(BootstrapTest ${CMAKE_CTEST_COMMAND}
686 ${CMake_BINARY_DIR}/Tests/BootstrapTest
689 --build-makeprogram ${CMake_SOURCE_DIR}/bootstrap
690 --build-generator "${CMAKE_TEST_GENERATOR}"
692 ${CMake_BINARY_DIR}/Tests/BootstrapTest/Bootstrap.cmk/cmake)
694 # provide more time for the bootstrap test
695 IF (COMMAND GET_TEST_PROPERTY)
696 GET_TEST_PROPERTY(BootstrapTest TIMEOUT PREVIOUS_TIMEOUT)
697 IF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
698 SET_TESTS_PROPERTIES ( BootstrapTest PROPERTIES TIMEOUT 1500)
699 ENDIF ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
700 ENDIF (COMMAND GET_TEST_PROPERTY)
702 ENDIF(UNIX AND CMAKE_RUN_LONG_TESTS AND NOT CMAKE_SKIP_BOOTSTRAP_TEST)
704 # fortran does not work for IDE builds because
705 # CMAKE_STANDARD_LIBRARIES needs to be per language
706 IF(CMAKE_TEST_GENERATOR MATCHES "Makefiles"
707 OR CMAKE_TEST_GENERATOR MATCHES "KDevelop")
708 # see if we can find a fortran compiler on the machine
709 # if so, add the fortran test and see if it works.
710 SET(CMAKE_Fortran_COMPILER_LIST ifort ifc efc f95 pgf95
711 lf95 xlf95 fort gfortran f90 pgf90 xlf90
712 epcf90 f77 fort77 frt pgf77 xlf fl32 af77 g77 )
713 FIND_PROGRAM(CMAKE_Fortran_COMPILER_FULLPATH NAMES
714 ${CMAKE_Fortran_COMPILER_LIST} )
715 MARK_AS_ADVANCED(CMAKE_Fortran_COMPILER_FULLPATH)
716 IF(CMAKE_Fortran_COMPILER_FULLPATH)
717 ADD_TEST(Fortran ${CMAKE_CTEST_COMMAND}
719 "${CMake_SOURCE_DIR}/Tests/Fortran"
720 "${CMake_BINARY_DIR}/Tests/Fortran"
721 --build-generator ${CMAKE_TEST_GENERATOR}
722 --build-project testf
723 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
725 --test-command testf)
726 ENDIF(CMAKE_Fortran_COMPILER_FULLPATH)
727 ENDIF(CMAKE_TEST_GENERATOR MATCHES "Makefiles"
728 OR CMAKE_TEST_GENERATOR MATCHES "KDevelop")
730 IF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode")
732 IF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW)
733 GET_FILENAME_COMPONENT(JNIPATH ${JAVA_COMPILE} PATH)
734 FIND_FILE(JNI_H jni.h
735 "${JNIPATH}/../include"
736 "${JNIPATH}/../java/include")
738 FILE(READ "${JNI_H}" JNI_FILE)
739 IF("${JNI_FILE}" MATCHES "JDK1_2")
740 ADD_TEST(Java ${CMAKE_CTEST_COMMAND}
742 "${CMake_SOURCE_DIR}/Tests/Java"
743 "${CMake_BINARY_DIR}/Tests/Java"
744 --build-generator ${CMAKE_TEST_GENERATOR}
745 --build-project hello
746 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
748 --build-run-dir "${CMake_BINARY_DIR}/Tests/Java/"
749 --test-command ${JAVA_RUNTIME} -classpath hello.jar HelloWorld)
750 ENDIF("${JNI_FILE}" MATCHES "JDK1_2")
752 ENDIF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW)
753 ENDIF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode")
755 # add some cross compiler tests, for now only with makefile based generators
756 IF(CMAKE_TEST_GENERATOR MATCHES "Makefiles" OR CMAKE_TEST_GENERATOR MATCHES "KDevelop")
758 # if sdcc is found, build the SimpleCOnly project with sdcc
759 FIND_PROGRAM(SDCC_EXECUTABLE sdcc)
760 MARK_AS_ADVANCED(SDCC_EXECUTABLE)
762 ADD_TEST(SimpleCOnly_sdcc ${CMAKE_CTEST_COMMAND}
764 "${CMake_SOURCE_DIR}/Tests/SimpleCOnly"
765 "${CMake_BINARY_DIR}/Tests/SimpleCOnly_sdcc"
766 --build-generator ${CMAKE_TEST_GENERATOR}
767 --build-project SimpleC
768 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
770 "-DCMAKE_SYSTEM_NAME=Generic"
771 "-DCMAKE_C_COMPILER=${SDCC_EXECUTABLE}")
772 ENDIF(SDCC_EXECUTABLE)
775 FIND_PROGRAM(MINGW_CC_LINUX2WIN_EXECUTABLE i586-mingw32msvc-gcc)
776 FIND_PROGRAM(MINGW_CXX_LINUX2WIN_EXECUTABLE i586-mingw32msvc-g++)
777 MARK_AS_ADVANCED(MINGW_CC_LINUX2WIN_EXECUTABLE MINGW_CXX_LINUX2WIN_EXECUTABLE)
778 IF(MINGW_CC_LINUX2WIN_EXECUTABLE AND MINGW_CXX_LINUX2WIN_EXECUTABLE)
779 ADD_TEST(Simple_Mingw_Linux2Win ${CMAKE_CTEST_COMMAND}
781 "${CMake_SOURCE_DIR}/Tests/Simple"
782 "${CMake_BINARY_DIR}/Tests/Simple_Mingw_Linux2Win"
783 --build-generator ${CMAKE_TEST_GENERATOR}
784 --build-project Simple
785 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
787 "-DCMAKE_SYSTEM_NAME=Windows"
788 "-DCMAKE_C_COMPILER=${MINGW_CC_LINUX2WIN_EXECUTABLE}"
789 "-DCMAKE_CXX_COMPILER=${MINGW_CXX_LINUX2WIN_EXECUTABLE}")
790 ENDIF(MINGW_CC_LINUX2WIN_EXECUTABLE AND MINGW_CXX_LINUX2WIN_EXECUTABLE)
793 ENDIF(CMAKE_TEST_GENERATOR MATCHES "Makefiles" OR CMAKE_TEST_GENERATOR MATCHES "KDevelop")
795 IF(BUILD_WXDialog AND wxWidgets_CONFIG_EXECUTABLE)
796 # Will be set if the WX gui is on
797 ADD_TEST(UseWX ${CMAKE_CTEST_COMMAND}
799 "${CMake_SOURCE_DIR}/Tests/UseWX"
800 "${CMake_BINARY_DIR}/Tests/UseWX"
801 --build-generator ${CMAKE_TEST_GENERATOR}
802 --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
803 --build-exe-dir ${CMake_BINARY_DIR}/Tests/UseWX
804 --build-project UsewxWidgets
805 --build-options -DwxWidgets_CONFIG_EXECUTABLE=${wxWidgets_CONFIG_EXECUTABLE}
808 ENDIF(BUILD_WXDialog AND wxWidgets_CONFIG_EXECUTABLE)
811 STRING(COMPARE EQUAL "${CMAKE_INSTALL_PREFIX}" "${CMake_BINARY_DIR}/Tests/TestShellInstall/Prefix"
813 IF(PREFIX_IS_FOR_TEST)
815 ${CMake_SOURCE_DIR}/Tests/TestInstall.sh.in
816 ${CMake_BINARY_DIR}/Tests/TestShellInstall/TestInstall.sh
819 ADD_TEST(ShellInstall /bin/sh ${CMake_BINARY_DIR}/Tests/TestShellInstall/TestShellInstall.sh)
820 ENDIF(PREFIX_IS_FOR_TEST)
823 IF(CMAKE_TEST_PLPLOT_DIR)
824 ADD_TEST(plplot ${CMAKE_CTEST_COMMAND} -V -S ${CMAKE_TEST_PLPLOT_DIR}/../../EasyDashboardScripts/plplot.cmake )
825 SET_TESTS_PROPERTIES ( plplot PROPERTIES TIMEOUT 5400)
826 ENDIF(CMAKE_TEST_PLPLOT_DIR)
828 IF(CMAKE_TEST_CHICKEN_DIR)
829 ADD_TEST(Chicken ${CMAKE_CTEST_COMMAND} -V -S ${CMAKE_TEST_CHICKEN_DIR}/../../EasyDashboardScripts/Chicken.cmake )
830 SET_TESTS_PROPERTIES ( Chicken PROPERTIES TIMEOUT 5400)
831 ENDIF(CMAKE_TEST_CHICKEN_DIR)
833 IF(CMAKE_TEST_KDELIBS_ALPHA_1_DIR)
834 ADD_TEST(KDELibsAlpha1 ${CMAKE_CTEST_COMMAND} -V -S ${CMAKE_TEST_KDELIBS_ALPHA_1_DIR}/../../EasyDashboardScripts/kdelibs.cmake )
835 SET_TESTS_PROPERTIES ( KDELibsAlpha1 PROPERTIES TIMEOUT 5400)
836 ENDIF(CMAKE_TEST_KDELIBS_ALPHA_1_DIR)