CMakeLists.txt 18 KB

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