CMakeLists.txt 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606
  1. cmake_minimum_required(VERSION 2.8)
  2. project(ExternalProjectTest NONE)
  3. include(ExternalProject)
  4. # Test ExternalProject, especially with checkouts from VCS
  5. find_package(CVS)
  6. find_package(Subversion)
  7. find_package(Git)
  8. find_package(Hg)
  9. option(ExternalProjectTest_USE_FOLDERS "Enable folder grouping in IDEs." ON)
  10. if(ExternalProjectTest_USE_FOLDERS)
  11. set_property(GLOBAL PROPERTY USE_FOLDERS ON)
  12. else()
  13. set_property(GLOBAL PROPERTY USE_FOLDERS OFF)
  14. endif()
  15. set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER
  16. "CMakePredefinedTargets-in-ExternalProjectTest")
  17. set(base "${CMAKE_BINARY_DIR}/CMakeExternals")
  18. set(binary_base "${base}/Build")
  19. set_property(DIRECTORY PROPERTY EP_BASE ${base})
  20. set_property(DIRECTORY PROPERTY EP_STEP_TARGETS configure build test)
  21. add_custom_target(NonExternalProjectTarget
  22. COMMAND ${CMAKE_COMMAND} -E echo NonExternalProjectTarget)
  23. # Empty projects that test all the known ExternalProject_Add argument key words:
  24. #
  25. set(proj AAA-TestAlphabetization)
  26. ExternalProject_Add(${proj}
  27. BUILD_COMMAND ""
  28. CONFIGURE_COMMAND ""
  29. DOWNLOAD_COMMAND ""
  30. INSTALL_COMMAND ""
  31. )
  32. set(proj ZZZ-TestAlphabetization)
  33. ExternalProject_Add(${proj}
  34. BUILD_COMMAND ""
  35. CONFIGURE_COMMAND ""
  36. DOWNLOAD_COMMAND ""
  37. INSTALL_COMMAND ""
  38. )
  39. set(proj TargetNameSameAsFolder)
  40. ExternalProject_Add(${proj}
  41. BUILD_COMMAND ""
  42. CONFIGURE_COMMAND ""
  43. DOWNLOAD_COMMAND ""
  44. INSTALL_COMMAND ""
  45. )
  46. set_property(TARGET ${proj} PROPERTY FOLDER "${proj}")
  47. set(proj MinimalNoOpProject)
  48. ExternalProject_Add(${proj}
  49. BUILD_COMMAND ""
  50. CONFIGURE_COMMAND ""
  51. DOWNLOAD_COMMAND ""
  52. INSTALL_COMMAND ""
  53. )
  54. set(proj EmptyNoOpProject)
  55. ExternalProject_Add(${proj}
  56. BUILD_COMMAND ""
  57. CMAKE_ARGS ""
  58. CONFIGURE_COMMAND ""
  59. CVS_REPOSITORY ""
  60. CVS_MODULE ""
  61. CVS_TAG ""
  62. DEPENDS "MinimalNoOpProject" NonExternalProjectTarget
  63. DOWNLOAD_COMMAND ""
  64. DOWNLOAD_NO_PROGRESS 1
  65. INSTALL_COMMAND ""
  66. PATCH_COMMAND ""
  67. STEP_TARGETS install update
  68. SVN_REPOSITORY ""
  69. SVN_REVISION ""
  70. SVN_USERNAME ""
  71. SVN_PASSWORD ""
  72. SVN_TRUST_CERT 1
  73. TEST_COMMAND ""
  74. TIMEOUT ""
  75. URL ""
  76. URL_MD5 ""
  77. UPDATE_COMMAND ""
  78. )
  79. set_property(TARGET ${proj} PROPERTY FOLDER "")
  80. # CVS-based tests:
  81. #
  82. set(do_cvs_tests 0)
  83. if(CVS_EXECUTABLE)
  84. set(do_cvs_tests 1)
  85. endif()
  86. if(do_cvs_tests AND NOT UNIX)
  87. if("${CVS_EXECUTABLE}" MATCHES "cygwin")
  88. message(STATUS "No ExternalProject cvs tests with cygwin cvs.exe outside cygwin!")
  89. set(do_cvs_tests 0)
  90. endif()
  91. endif()
  92. if(do_cvs_tests)
  93. # Unzip/untar the CVS repository in our source folder so that other
  94. # projects below may use it to test CVS args of ExternalProject_Add
  95. #
  96. set(proj SetupLocalCVSRepository)
  97. set(local_cvs_repo "${CMAKE_CURRENT_BINARY_DIR}/LocalRepositories/CVS")
  98. ExternalProject_Add(${proj}
  99. SOURCE_DIR ${local_cvs_repo}
  100. URL ${CMAKE_CURRENT_SOURCE_DIR}/cvsrepo.tgz
  101. URL_MD5 55fc85825ffdd9ed2597123c68b79f7e
  102. BUILD_COMMAND ""
  103. CONFIGURE_COMMAND "${CVS_EXECUTABLE}" --version
  104. INSTALL_COMMAND ""
  105. )
  106. set_property(TARGET ${proj}
  107. PROPERTY FOLDER "SetupRepos/Local/Deeply/Nested/For/Testing")
  108. # The MSYS cvs tool interprets "c:/" as a "machine:" name for SSH.
  109. # Detect the MSYS cvs and convert the repo path to an MSYS path.
  110. if(WIN32)
  111. if(EXISTS "${CVS_EXECUTABLE}")
  112. file(STRINGS "${CVS_EXECUTABLE}" cvs_is_msys LIMIT_COUNT 1 REGEX "[Mm][Ss][Yy][Ss]")
  113. if(cvs_is_msys)
  114. message(STATUS "'${CVS_EXECUTABLE}' is from MSYS (contains '${cvs_is_msys}')")
  115. string(REGEX REPLACE "^([A-Za-z]):" "/\\1" local_cvs_repo "${local_cvs_repo}")
  116. endif()
  117. endif()
  118. endif()
  119. # CVS by date stamp:
  120. #
  121. set(proj TutorialStep1-CVS-20090626)
  122. ExternalProject_Add(${proj}
  123. CVS_REPOSITORY "${local_cvs_repo}"
  124. CVS_MODULE "TutorialStep1"
  125. CVS_TAG "-D2009-06-26 16:50:00 UTC"
  126. UPDATE_COMMAND ""
  127. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  128. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  129. INSTALL_COMMAND ""
  130. DEPENDS "SetupLocalCVSRepository"
  131. )
  132. set_property(TARGET ${proj} PROPERTY FOLDER "CVS")
  133. # CVS by tag:
  134. #
  135. set(proj TutorialStep1-CVS-testtag1)
  136. ExternalProject_Add(${proj}
  137. CVS_REPOSITORY "${local_cvs_repo}"
  138. CVS_MODULE "TutorialStep1"
  139. CVS_TAG -rtesttag1
  140. UPDATE_COMMAND ""
  141. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  142. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  143. INSTALL_COMMAND ""
  144. DEPENDS "SetupLocalCVSRepository"
  145. )
  146. set_property(TARGET ${proj} PROPERTY FOLDER "CVS")
  147. # Live CVS / HEAD (no CVS_TAG):
  148. #
  149. set(proj TutorialStep1-CVS-HEAD)
  150. ExternalProject_Add(${proj}
  151. CVS_REPOSITORY "${local_cvs_repo}"
  152. CVS_MODULE "TutorialStep1"
  153. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  154. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  155. INSTALL_COMMAND ""
  156. DEPENDS "SetupLocalCVSRepository"
  157. DEPENDS "EmptyNoOpProject"
  158. DEPENDS "TutorialStep1-CVS-20090626"
  159. DEPENDS "TutorialStep1-CVS-testtag1"
  160. )
  161. set_property(TARGET ${proj} PROPERTY FOLDER "CVS")
  162. endif()
  163. # SVN-based tests:
  164. #
  165. set(do_svn_tests 0)
  166. if(Subversion_SVN_EXECUTABLE)
  167. set(do_svn_tests 1)
  168. endif()
  169. # Only do svn tests with svn >= version 1.2
  170. #
  171. if(do_svn_tests)
  172. if(Subversion_VERSION_SVN VERSION_LESS 1.2)
  173. message(STATUS "No ExternalProject svn tests with svn client less than version 1.2")
  174. set(do_svn_tests 0)
  175. endif()
  176. endif()
  177. # Only do svn tests in cygwin/cygwin or not-cygwin/not-cygwin arrangements:
  178. #
  179. if(do_svn_tests)
  180. if(CMAKE_CURRENT_BINARY_DIR MATCHES "cygdrive/" AND
  181. NOT "${Subversion_SVN_EXECUTABLE}" MATCHES "cygwin")
  182. message(STATUS "No ExternalProject svn tests with non-cygwin svn client in a /cygdrive based build")
  183. set(do_svn_tests 0)
  184. endif()
  185. endif()
  186. if(do_svn_tests)
  187. # Unzip/untar the SVN repository in our source folder so that other
  188. # projects below may use it to test SVN args of ExternalProject_Add
  189. #
  190. set(proj SetupLocalSVNRepository)
  191. set(local_svn_repo "${CMAKE_CURRENT_BINARY_DIR}/LocalRepositories/SVN")
  192. set(local_svn_repo_url "file:///${local_svn_repo}/TutorialStep1")
  193. ExternalProject_Add(${proj}
  194. SOURCE_DIR ${local_svn_repo}
  195. URL ${CMAKE_CURRENT_SOURCE_DIR}/svnrepo.tgz
  196. URL_MD5 2f468be4ed1fa96377fca0cc830819c4
  197. BUILD_COMMAND ""
  198. CONFIGURE_COMMAND "${Subversion_SVN_EXECUTABLE}" --version
  199. INSTALL_COMMAND ""
  200. )
  201. set_property(TARGET ${proj}
  202. PROPERTY FOLDER "SetupRepos/Local/Deeply/Nested/For/Testing")
  203. # SVN by date stamp:
  204. #
  205. set(proj TutorialStep1-SVN-20090626)
  206. ExternalProject_Add(${proj}
  207. SVN_REPOSITORY "${local_svn_repo_url}"
  208. SVN_REVISION "-r{2009-06-26 16:50:00 +0000}"
  209. UPDATE_COMMAND ""
  210. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  211. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  212. INSTALL_COMMAND ""
  213. DEPENDS "SetupLocalSVNRepository"
  214. )
  215. set_property(TARGET ${proj} PROPERTY FOLDER "SVN")
  216. # SVN by revision number:
  217. #
  218. set(proj TutorialStep1-SVN-r2)
  219. ExternalProject_Add(${proj}
  220. SVN_REPOSITORY "${local_svn_repo_url}"
  221. SVN_REVISION "-r2"
  222. UPDATE_COMMAND ""
  223. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  224. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  225. INSTALL_COMMAND ""
  226. DEPENDS "SetupLocalSVNRepository"
  227. )
  228. set_property(TARGET ${proj} PROPERTY FOLDER "SVN")
  229. # Live SVN / trunk (no SVN_REVISION):
  230. #
  231. set(proj TutorialStep1-SVN-trunk)
  232. ExternalProject_Add(${proj}
  233. SVN_REPOSITORY "${local_svn_repo_url}"
  234. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  235. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  236. INSTALL_COMMAND ""
  237. DEPENDS "SetupLocalSVNRepository"
  238. LOG_DOWNLOAD 1
  239. )
  240. set_property(TARGET ${proj} PROPERTY FOLDER "SVN")
  241. endif()
  242. set(do_git_tests 0)
  243. if(GIT_EXECUTABLE)
  244. set(do_git_tests 1)
  245. execute_process(
  246. COMMAND "${GIT_EXECUTABLE}" --version
  247. OUTPUT_VARIABLE ov
  248. OUTPUT_STRIP_TRAILING_WHITESPACE
  249. )
  250. string(REGEX REPLACE "^git version (.+)$" "\\1" git_version "${ov}")
  251. message(STATUS "git_version='${git_version}'")
  252. if(git_version VERSION_LESS 1.6.5)
  253. message(STATUS "No ExternalProject git tests with git client less than version 1.6.5")
  254. set(do_git_tests 0)
  255. endif()
  256. endif()
  257. if(do_git_tests)
  258. set(local_git_repo "../../LocalRepositories/GIT")
  259. # Unzip/untar the git repository in our source folder so that other
  260. # projects below may use it to test git args of ExternalProject_Add
  261. #
  262. set(proj SetupLocalGITRepository)
  263. ExternalProject_Add(${proj}
  264. SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/LocalRepositories/GIT
  265. URL ${CMAKE_CURRENT_SOURCE_DIR}/gitrepo.tgz
  266. BUILD_COMMAND ""
  267. CONFIGURE_COMMAND "${GIT_EXECUTABLE}" --version
  268. INSTALL_COMMAND ""
  269. )
  270. set_property(TARGET ${proj}
  271. PROPERTY FOLDER "SetupRepos/Local/Deeply/Nested/For/Testing")
  272. # git by commit id:
  273. #
  274. set(proj TutorialStep1-GIT-byhash)
  275. ExternalProject_Add(${proj}
  276. GIT_REPOSITORY "${local_git_repo}"
  277. GIT_TAG d1970730310fe8bc07e73f15dc570071f9f9654a
  278. UPDATE_COMMAND ""
  279. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  280. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  281. INSTALL_COMMAND ""
  282. DEPENDS "SetupLocalGITRepository"
  283. )
  284. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  285. # git by explicit branch/tag name:
  286. #
  287. set(proj TutorialStep1-GIT-bytag)
  288. ExternalProject_Add(${proj}
  289. GIT_REPOSITORY "${local_git_repo}"
  290. GIT_TAG "origin/master"
  291. UPDATE_COMMAND ""
  292. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  293. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  294. INSTALL_COMMAND ""
  295. DEPENDS "SetupLocalGITRepository"
  296. )
  297. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  298. # Live git / master (no GIT_TAG):
  299. #
  300. set(proj TutorialStep1-GIT-master)
  301. ExternalProject_Add(${proj}
  302. GIT_REPOSITORY "${local_git_repo}"
  303. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  304. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  305. INSTALL_COMMAND ""
  306. DEPENDS "SetupLocalGITRepository"
  307. LOG_UPDATE 1
  308. )
  309. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  310. # Live git / master (no GIT_TAG), but shallow
  311. #
  312. set(proj TutorialStep1-GIT-shallow-master)
  313. ExternalProject_Add(${proj}
  314. GIT_REPOSITORY "${local_git_repo}"
  315. GIT_SHALLOW 1
  316. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  317. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  318. INSTALL_COMMAND ""
  319. DEPENDS "SetupLocalGITRepository"
  320. LOG_UPDATE 1
  321. )
  322. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  323. # git by explicit branch/tag with empty submodule list
  324. #
  325. set(proj TutorialStep1-GIT-bytag-withsubmodules)
  326. ExternalProject_Add(${proj}
  327. GIT_REPOSITORY "${local_git_repo}"
  328. GIT_TAG "origin/master"
  329. GIT_SUBMODULES ""
  330. UPDATE_COMMAND ""
  331. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  332. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  333. INSTALL_COMMAND ""
  334. DEPENDS "SetupLocalGITRepository"
  335. )
  336. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  337. # Unzip/untar the git repository in our source folder so that other
  338. # projects below may use it to test git args of ExternalProject_Add
  339. #
  340. set(proj SetupLocalGITRepositoryWithSubmodules)
  341. ExternalProject_Add(${proj}
  342. SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/LocalRepositories/GIT-with-submodules
  343. URL ${CMAKE_CURRENT_SOURCE_DIR}/gitrepo-sub.tgz
  344. BUILD_COMMAND ""
  345. CONFIGURE_COMMAND "${GIT_EXECUTABLE}" --version
  346. INSTALL_COMMAND ""
  347. )
  348. set_property(TARGET ${proj}
  349. PROPERTY FOLDER "SetupRepos/Local/Deeply/Nested/For/Testing")
  350. set(local_git_repo "../../LocalRepositories/GIT-with-submodules")
  351. set(proj TS1-GIT-no-GIT_SUBMODULES)
  352. ExternalProject_Add(${proj}
  353. GIT_REPOSITORY "${local_git_repo}"
  354. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  355. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  356. -DWITH_m1:BOOL=ON
  357. -DWITH_m2:BOOL=ON
  358. BUILD_COMMAND ""
  359. INSTALL_COMMAND ""
  360. DEPENDS "SetupLocalGITRepository"
  361. "SetupLocalGITRepositoryWithSubmodules"
  362. )
  363. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  364. set(proj TS1-GIT-empty-GIT_SUBMODULES)
  365. ExternalProject_Add(${proj}
  366. GIT_REPOSITORY "${local_git_repo}"
  367. GIT_SUBMODULES ""
  368. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  369. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  370. -DWITH_m1:BOOL=ON
  371. -DWITH_m2:BOOL=ON
  372. BUILD_COMMAND ""
  373. INSTALL_COMMAND ""
  374. DEPENDS "SetupLocalGITRepository"
  375. "SetupLocalGITRepositoryWithSubmodules"
  376. )
  377. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  378. set(proj TS1-GIT-some-GIT_SUBMODULES)
  379. ExternalProject_Add(${proj}
  380. GIT_REPOSITORY "${local_git_repo}"
  381. GIT_SUBMODULES "m/m1"
  382. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  383. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  384. -DWITH_m1:BOOL=ON
  385. -DWITH_m2:BOOL=OFF
  386. BUILD_COMMAND ""
  387. INSTALL_COMMAND ""
  388. DEPENDS "SetupLocalGITRepository"
  389. "SetupLocalGITRepositoryWithSubmodules"
  390. )
  391. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  392. endif()
  393. set(do_hg_tests 0)
  394. if(HG_EXECUTABLE)
  395. set(do_hg_tests 1)
  396. endif()
  397. if(do_hg_tests AND NOT UNIX)
  398. if("${HG_EXECUTABLE}" MATCHES "cygwin")
  399. message(STATUS "No ExternalProject hg tests with cygwin hg outside cygwin!")
  400. set(do_hg_tests 0)
  401. endif()
  402. endif()
  403. if(do_hg_tests)
  404. set(local_hg_repo "../../LocalRepositories/HG")
  405. # Unzip/untar the hg repository in our source folder so that other
  406. # projects below may use it to test hg args of ExternalProject_Add
  407. #
  408. set(proj SetupLocalHGRepository)
  409. ExternalProject_Add(${proj}
  410. SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/LocalRepositories/HG
  411. URL ${CMAKE_CURRENT_SOURCE_DIR}/hgrepo.tgz
  412. BUILD_COMMAND ""
  413. CONFIGURE_COMMAND "${HG_EXECUTABLE}" --version
  414. INSTALL_COMMAND ""
  415. )
  416. set_property(TARGET ${proj}
  417. PROPERTY FOLDER "SetupRepos/Local/Deeply/Nested/For/Testing")
  418. # hg by commit id:
  419. #
  420. set(proj TutorialStep1-HG-byhash)
  421. ExternalProject_Add(${proj}
  422. HG_REPOSITORY "${local_hg_repo}"
  423. HG_TAG dd2ce38a6b8a
  424. UPDATE_COMMAND ""
  425. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  426. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  427. INSTALL_COMMAND ""
  428. DEPENDS "SetupLocalHGRepository"
  429. )
  430. set_property(TARGET ${proj} PROPERTY FOLDER "HG")
  431. # hg by explicit branch/tag name:
  432. #
  433. set(proj TutorialStep1-HG-bytag)
  434. ExternalProject_Add(${proj}
  435. HG_REPOSITORY "${local_hg_repo}"
  436. HG_TAG "default"
  437. UPDATE_COMMAND ""
  438. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  439. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  440. INSTALL_COMMAND ""
  441. DEPENDS "SetupLocalHGRepository"
  442. )
  443. set_property(TARGET ${proj} PROPERTY FOLDER "HG")
  444. # Live hg / tip (no HG_TAG):
  445. #
  446. # Mercurial 2.1 does not distinguish an empty pull from a failed pull,
  447. # so do not run the test with that version.
  448. if(NOT "${HG_VERSION_STRING}" STREQUAL "2.1")
  449. set(proj TutorialStep1-HG-tip)
  450. ExternalProject_Add(${proj}
  451. HG_REPOSITORY "${local_hg_repo}"
  452. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  453. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  454. INSTALL_COMMAND ""
  455. DEPENDS "SetupLocalHGRepository"
  456. LOG_UPDATE 1
  457. )
  458. set_property(TARGET ${proj} PROPERTY FOLDER "HG")
  459. endif()
  460. endif()
  461. # Test the testable built/installed products:
  462. #
  463. enable_testing()
  464. # Do at least a smoke test of a built executable from each
  465. # project's build directory...
  466. #
  467. # BuildTree tests:
  468. #
  469. if(do_cvs_tests)
  470. add_test(TutorialStep1-CVS-20090626-BuildTreeTest
  471. "${binary_base}/TutorialStep1-CVS-20090626/Tutorial" 4)
  472. add_test(TutorialStep1-CVS-testtag1-BuildTreeTest
  473. "${binary_base}/TutorialStep1-CVS-testtag1/Tutorial" 64)
  474. add_test(TutorialStep1-CVS-HEAD-BuildTreeTest
  475. "${binary_base}/TutorialStep1-CVS-HEAD/Tutorial" 81)
  476. endif()
  477. if(do_svn_tests)
  478. add_test(TutorialStep1-SVN-20090626-BuildTreeTest
  479. "${binary_base}/TutorialStep1-SVN-20090626/Tutorial" 100)
  480. add_test(TutorialStep1-SVN-r2-BuildTreeTest
  481. "${binary_base}/TutorialStep1-SVN-r2/Tutorial" 99)
  482. add_test(TutorialStep1-SVN-trunk-BuildTreeTest
  483. "${binary_base}/TutorialStep1-SVN-trunk/Tutorial" 98)
  484. endif()
  485. if(do_git_tests)
  486. add_test(TutorialStep1-GIT-byhash
  487. "${binary_base}/TutorialStep1-GIT-byhash/Tutorial" 100)
  488. add_test(TutorialStep1-GIT-bytag
  489. "${binary_base}/TutorialStep1-GIT-bytag/Tutorial" 99)
  490. add_test(TutorialStep1-GIT-shallow-master
  491. "${binary_base}/TutorialStep1-GIT-shallow-master/Tutorial" 98)
  492. add_test(TutorialStep1-GIT-master
  493. "${binary_base}/TutorialStep1-GIT-master/Tutorial" 98)
  494. endif()
  495. message(STATUS "do_cvs_tests='${do_cvs_tests}'")
  496. message(STATUS "do_svn_tests='${do_svn_tests}'")
  497. message(STATUS "do_git_tests='${do_git_tests}' GIT_EXECUTABLE='${GIT_EXECUTABLE}'")
  498. message(STATUS "do_hg_tests='${do_hg_tests}' HG_EXECUTABLE='${HG_EXECUTABLE}'")
  499. # Test if log works when the first arguments of *_COMMAND is "COMMAND".
  500. set(proj ExternalProject-no-log)
  501. set(download_cmd "")
  502. set(patch_cmd "")
  503. set(update_cmd "")
  504. set(configure_cmd "")
  505. set(build_cmd "")
  506. set(install_cmd "")
  507. ExternalProject_Add(${proj}
  508. DOWNLOAD_COMMAND "${download_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "download"
  509. PATCH_COMMAND "${patch_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "patch"
  510. UPDATE_COMMAND "${update_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "update"
  511. CONFIGURE_COMMAND "${configure_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "configure"
  512. BUILD_COMMAND "${build_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "build"
  513. INSTALL_COMMAND "${install_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "install"
  514. )
  515. set(proj ExternalProject-log)
  516. ExternalProject_Add(${proj}
  517. DOWNLOAD_COMMAND "${download_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "download"
  518. PATCH_COMMAND "${patch_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "patch"
  519. UPDATE_COMMAND "${update_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "update"
  520. CONFIGURE_COMMAND "${configure_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "configure"
  521. BUILD_COMMAND "${build_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "build"
  522. INSTALL_COMMAND "${install_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "install"
  523. LOG_DOWNLOAD 1
  524. LOG_PATCH 1
  525. LOG_UPDATE 1
  526. LOG_CONFIGURE 1
  527. LOG_BUILD 1
  528. LOG_INSTALL 1
  529. )