|
|
@@ -3,6 +3,8 @@ project(ExternalProjectTest NONE)
|
|
|
|
|
|
include(ExternalProject)
|
|
|
|
|
|
+# Test ExternalProject, especially with checkouts from VCS
|
|
|
+
|
|
|
find_package(CVS)
|
|
|
find_package(Subversion)
|
|
|
find_package(Git)
|
|
|
@@ -23,33 +25,6 @@ set(binary_base "${base}/Build")
|
|
|
set_property(DIRECTORY PROPERTY EP_BASE ${base})
|
|
|
set_property(DIRECTORY PROPERTY EP_STEP_TARGETS configure build test)
|
|
|
|
|
|
-if(NOT DEFINED can_build_tutorial_step5)
|
|
|
- set(can_build_tutorial_step5 1)
|
|
|
-
|
|
|
- # Tutorial Step5 cannot build correctly using Visual Studio 6
|
|
|
- # on Windows 98 if the path of its build tree exceeds 72
|
|
|
- # characters in length... So don't attempt to build it
|
|
|
- # in a long path on Win98:
|
|
|
- #
|
|
|
- if(CMAKE_SYSTEM STREQUAL "Windows-4.10")
|
|
|
- string(LENGTH "${binary_base}/TutorialStep5-Local" n)
|
|
|
- if(n GREATER 72)
|
|
|
- set(can_build_tutorial_step5 0)
|
|
|
- endif()
|
|
|
- endif()
|
|
|
-
|
|
|
- # The ExternalProject builds of Tutorial Step5 cannot be built
|
|
|
- # correctly 2nd and later times in an in-source build...
|
|
|
- # (because the CMakeCache.txt from the real in-source build of
|
|
|
- # the Tests/Tutorial/Step5 directory gets copied when we do
|
|
|
- # the "source directory copy" step... but it still refers to
|
|
|
- # its original path which yields a configure error.) So:
|
|
|
- #
|
|
|
- if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
|
|
|
- set(can_build_tutorial_step5 0)
|
|
|
- endif()
|
|
|
-endif()
|
|
|
-
|
|
|
add_custom_target(NonExternalProjectTarget
|
|
|
COMMAND ${CMAKE_COMMAND} -E echo NonExternalProjectTarget)
|
|
|
|
|
|
@@ -116,142 +91,6 @@ ExternalProject_Add(${proj}
|
|
|
set_property(TARGET ${proj} PROPERTY FOLDER "")
|
|
|
|
|
|
|
|
|
-# Local DIR:
|
|
|
-#
|
|
|
-if(can_build_tutorial_step5)
|
|
|
- set(proj TutorialStep5-Local)
|
|
|
- ExternalProject_Add(${proj}
|
|
|
- URL "${CMAKE_CURRENT_SOURCE_DIR}/../Tutorial/Step5"
|
|
|
- CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
|
|
|
- CMAKE_ARGS -G ${CMAKE_GENERATOR} <SOURCE_DIR>
|
|
|
- TEST_BEFORE_INSTALL 1
|
|
|
- LOG_INSTALL 1
|
|
|
- )
|
|
|
- set_property(TARGET ${proj} PROPERTY FOLDER "Local")
|
|
|
- ExternalProject_Get_Property(${proj} install_dir)
|
|
|
- set(TutorialStep5_install_dir ${install_dir})
|
|
|
-
|
|
|
- set(proj TutorialStep5-Local-TestAfterInstall)
|
|
|
- ExternalProject_Add(${proj}
|
|
|
- URL "${CMAKE_CURRENT_SOURCE_DIR}/../Tutorial/Step5"
|
|
|
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -G ${CMAKE_GENERATOR} <SOURCE_DIR>
|
|
|
- TEST_AFTER_INSTALL 1
|
|
|
- LOG_TEST 1
|
|
|
- )
|
|
|
- set_property(TARGET ${proj} PROPERTY FOLDER "Local")
|
|
|
-endif()
|
|
|
-
|
|
|
-
|
|
|
-# Local TAR:
|
|
|
-#
|
|
|
-set(proj TutorialStep1-LocalTAR)
|
|
|
-ExternalProject_Add(${proj}
|
|
|
- URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1.tar"
|
|
|
- URL_MD5 a87c5b47c0201c09ddfe1d5738fdb1e3
|
|
|
- LIST_SEPARATOR ::
|
|
|
- PATCH_COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/Step1Patch.cmake
|
|
|
- CMAKE_GENERATOR "${CMAKE_GENERATOR}"
|
|
|
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
|
|
|
- -DTEST_LIST:STRING=A::B::C
|
|
|
- INSTALL_COMMAND ""
|
|
|
- LOG_CONFIGURE 1
|
|
|
-)
|
|
|
-set_property(TARGET ${proj} PROPERTY FOLDER "Local/TAR")
|
|
|
-
|
|
|
-set(proj TutorialStep1-LocalNoDirTAR)
|
|
|
-ExternalProject_Add(${proj}
|
|
|
- URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.tar"
|
|
|
- URL_MD5 d09e3d370c5c908fa035c30939ee438e
|
|
|
- LIST_SEPARATOR @@
|
|
|
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -G ${CMAKE_GENERATOR} <SOURCE_DIR>
|
|
|
- -DTEST_LIST:STRING=1@@2@@3
|
|
|
- INSTALL_COMMAND ""
|
|
|
-)
|
|
|
-set_property(TARGET ${proj} PROPERTY FOLDER "Local/TAR")
|
|
|
-ExternalProject_Add_Step(${proj} mypatch
|
|
|
- COMMAND ${CMAKE_COMMAND} -E echo "This is a custom external project step."
|
|
|
- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/Step1Patch.cmake
|
|
|
- WORKING_DIRECTORY <SOURCE_DIR>
|
|
|
- DEPENDEES download
|
|
|
- DEPENDERS configure
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
-# Local TGZ:
|
|
|
-#
|
|
|
-set(proj TutorialStep1-LocalTGZ)
|
|
|
-ExternalProject_Add(${proj}
|
|
|
- URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1.tgz"
|
|
|
- URL_MD5 38c648e817339c356f6be00eeed79bd0
|
|
|
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -G ${CMAKE_GENERATOR} <SOURCE_DIR>
|
|
|
- INSTALL_COMMAND ""
|
|
|
- LOG_BUILD 1
|
|
|
-)
|
|
|
-set_property(TARGET ${proj} PROPERTY FOLDER "Local/TGZ")
|
|
|
-
|
|
|
-set(proj TutorialStep1-LocalNoDirTGZ)
|
|
|
-ExternalProject_Add(${proj}
|
|
|
- URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.tgz"
|
|
|
- URL_HASH SHA256=496229e2a5ed620a37c385ad9406004a18026beab8b55dd2c4565d4b7f1d5383
|
|
|
- CMAKE_GENERATOR "${CMAKE_GENERATOR}"
|
|
|
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
|
|
|
- INSTALL_COMMAND ""
|
|
|
-)
|
|
|
-set_property(TARGET ${proj} PROPERTY FOLDER "Local/TGZ")
|
|
|
-
|
|
|
-
|
|
|
-# Local BZ2:
|
|
|
-#
|
|
|
-# (The bz2 tests are here just to verify that the bz2 decompression is executed
|
|
|
-# during a test suite run... The configure and build commands are set to
|
|
|
-# nothing to make the test quicker. To make this more complete, I should add
|
|
|
-# a diff between this and the TGZ source tree since that one does build...)
|
|
|
-#
|
|
|
-set(proj TutorialStep1-LocalBZ2)
|
|
|
-ExternalProject_Add(${proj}
|
|
|
- URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1.tar.bz2"
|
|
|
- CONFIGURE_COMMAND ""
|
|
|
- BUILD_COMMAND ""
|
|
|
- INSTALL_COMMAND ""
|
|
|
-)
|
|
|
-set_property(TARGET ${proj} PROPERTY FOLDER "Local/BZ2")
|
|
|
-
|
|
|
-set(proj TutorialStep1-LocalNoDirBZ2)
|
|
|
-ExternalProject_Add(${proj}
|
|
|
- URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.tar.bz2"
|
|
|
- CONFIGURE_COMMAND ""
|
|
|
- BUILD_COMMAND ""
|
|
|
- INSTALL_COMMAND ""
|
|
|
-)
|
|
|
-set_property(TARGET ${proj} PROPERTY FOLDER "Local/BZ2")
|
|
|
-
|
|
|
-
|
|
|
-# Local ZIP:
|
|
|
-#
|
|
|
-# (The zip tests are here just to verify that the zip decompression is executed
|
|
|
-# during a test suite run... The configure and build commands are set to
|
|
|
-# nothing to make the test quicker. To make this more complete, I should add
|
|
|
-# a diff between this and the TGZ source tree since that one does build...)
|
|
|
-#
|
|
|
-set(proj TutorialStep1-LocalZIP)
|
|
|
-ExternalProject_Add(${proj}
|
|
|
- URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1.zip"
|
|
|
- CONFIGURE_COMMAND ""
|
|
|
- BUILD_COMMAND ""
|
|
|
- INSTALL_COMMAND ""
|
|
|
-)
|
|
|
-set_property(TARGET ${proj} PROPERTY FOLDER "Local/ZIP")
|
|
|
-
|
|
|
-set(proj TutorialStep1-LocalNoDirZIP)
|
|
|
-ExternalProject_Add(${proj}
|
|
|
- URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.zip"
|
|
|
- CONFIGURE_COMMAND ""
|
|
|
- BUILD_COMMAND ""
|
|
|
- INSTALL_COMMAND ""
|
|
|
-)
|
|
|
-set_property(TARGET ${proj} PROPERTY FOLDER "Local/ZIP")
|
|
|
-
|
|
|
-
|
|
|
# CVS-based tests:
|
|
|
#
|
|
|
set(do_cvs_tests 0)
|
|
|
@@ -337,10 +176,6 @@ if(do_cvs_tests)
|
|
|
INSTALL_COMMAND ""
|
|
|
DEPENDS "SetupLocalCVSRepository"
|
|
|
DEPENDS "EmptyNoOpProject"
|
|
|
- DEPENDS "TutorialStep1-LocalTAR"
|
|
|
- DEPENDS "TutorialStep1-LocalNoDirTAR"
|
|
|
- DEPENDS "TutorialStep1-LocalTGZ"
|
|
|
- DEPENDS "TutorialStep1-LocalNoDirTGZ"
|
|
|
DEPENDS "TutorialStep1-CVS-20090626"
|
|
|
DEPENDS "TutorialStep1-CVS-testtag1"
|
|
|
)
|
|
|
@@ -612,29 +447,6 @@ enable_testing()
|
|
|
#
|
|
|
# BuildTree tests:
|
|
|
#
|
|
|
-if(can_build_tutorial_step5)
|
|
|
- add_test(TutorialStep5-Local-BuildTreeTest
|
|
|
- "${binary_base}/TutorialStep5-Local/Tutorial" 42)
|
|
|
- set_property(TEST TutorialStep5-Local-BuildTreeTest
|
|
|
- APPEND PROPERTY LABELS Step5 BuildTree)
|
|
|
-endif()
|
|
|
-
|
|
|
-add_test(TutorialStep1-LocalTAR-BuildTreeTest
|
|
|
- "${binary_base}/TutorialStep1-LocalTAR/EP-Tutorial" 36)
|
|
|
-set_property(TEST TutorialStep1-LocalTAR-BuildTreeTest
|
|
|
- APPEND PROPERTY LABELS TAR)
|
|
|
-
|
|
|
-add_test(TutorialStep1-LocalNoDirTAR-BuildTreeTest
|
|
|
- "${binary_base}/TutorialStep1-LocalNoDirTAR/EP-Tutorial" 25)
|
|
|
-
|
|
|
-add_test(TutorialStep1-LocalTGZ-BuildTreeTest
|
|
|
- "${binary_base}/TutorialStep1-LocalTGZ/Tutorial" 16)
|
|
|
-set_property(TEST TutorialStep1-LocalTGZ-BuildTreeTest
|
|
|
- APPEND PROPERTY LABELS TGZ)
|
|
|
-
|
|
|
-add_test(TutorialStep1-LocalNoDirTGZ-BuildTreeTest
|
|
|
- "${binary_base}/TutorialStep1-LocalNoDirTGZ/Tutorial" 9)
|
|
|
-
|
|
|
if(do_cvs_tests)
|
|
|
add_test(TutorialStep1-CVS-20090626-BuildTreeTest
|
|
|
"${binary_base}/TutorialStep1-CVS-20090626/Tutorial" 4)
|
|
|
@@ -669,17 +481,6 @@ if(do_git_tests)
|
|
|
endif()
|
|
|
|
|
|
|
|
|
-# InstallTree tests:
|
|
|
-#
|
|
|
-if(can_build_tutorial_step5)
|
|
|
- add_test(TutorialStep5-InstallTreeTest
|
|
|
- "${TutorialStep5_install_dir}/bin/Tutorial" 49)
|
|
|
- set_property(TEST TutorialStep5-InstallTreeTest
|
|
|
- APPEND PROPERTY LABELS Step5 InstallTree)
|
|
|
-endif()
|
|
|
-
|
|
|
-
|
|
|
-message(STATUS "can_build_tutorial_step5='${can_build_tutorial_step5}'")
|
|
|
message(STATUS "do_cvs_tests='${do_cvs_tests}'")
|
|
|
message(STATUS "do_svn_tests='${do_svn_tests}'")
|
|
|
message(STATUS "do_git_tests='${do_git_tests}' GIT_EXECUTABLE='${GIT_EXECUTABLE}'")
|