| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- cmake_minimum_required(VERSION 2.6)
- project(ExternalProjectTest NONE)
- include(AddExternalProject)
- get_external_project_directories(base_dir build_dir downloads_dir install_dir
- sentinels_dir source_dir tmp_dir)
- set(prefix "${install_dir}")
- # Use a "TryCheckout" technique on small subtrees of certain projects
- # to see if cvs checkout and svn checkout may be used on this machine
- # without problems. If so, we can test the projects that use those
- # download techniques. If not, we skip them on this machine...
- #
- include("${CMAKE_CURRENT_SOURCE_DIR}/TryCheckout.cmake")
- if(NOT DEFINED can_build_kwstyle)
- if(WATCOM)
- set(can_build_kwstyle 0)
- else()
- set(can_build_kwstyle 1)
- endif()
- endif()
- 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 "${build_dir}/TutorialStep5-Local" n)
- if(n GREATER 72)
- set(can_build_tutorial_step5 0)
- endif()
- endif()
- endif()
- if(NOT DEFINED can_use_cvs)
- try_cvs_checkout(
- ":pserver:anonymous:[email protected]:/cvsroot/CMake"
- "CMake/Tests/Tutorial/Step1"
- "${CMAKE_CURRENT_BINARY_DIR}/TryCheckout/TutorialStep1"
- can_use_cvs
- )
- set(can_use_cvs ${can_use_cvs} CACHE STRING "Was try_cvs_checkout successful?")
- endif()
- if(NOT DEFINED can_use_svn)
- try_svn_checkout(
- "http://gdcm.svn.sourceforge.net/svnroot/gdcm/trunk/Utilities/gdcmmd5"
- "${CMAKE_CURRENT_BINARY_DIR}/TryCheckout/gdcmmd5"
- can_use_svn
- )
- set(can_use_svn ${can_use_svn} CACHE STRING "Was try_svn_checkout successful?")
- endif()
- message(STATUS "can_build_kwstyle='${can_build_kwstyle}'")
- message(STATUS "can_build_tutorial_step5='${can_build_tutorial_step5}'")
- message(STATUS "can_use_cvs='${can_use_cvs}'")
- message(STATUS "can_use_svn='${can_use_svn}'")
- # Empty projects that test all the known add_external_project argument key words:
- #
- set(proj MinimalNoOpProject)
- add_external_project(${proj}
- BUILD_COMMAND ""
- CONFIGURE_COMMAND ""
- DOWNLOAD_COMMAND ""
- INSTALL_COMMAND ""
- )
- set(proj EmptyNoOpProject)
- add_external_project(${proj}
- BUILD_ARGS ""
- BUILD_COMMAND ""
- CMAKE_ARGS ""
- CONFIGURE_COMMAND ""
- CONFIGURE_DIR ""
- CVS_REPOSITORY ""
- CVS_MODULE ""
- CVS_TAG ""
- DEPENDS "MinimalNoOpProject"
- DIR ""
- DOWNLOAD_COMMAND ""
- INSTALL_ARGS ""
- INSTALL_COMMAND ""
- PATCH_COMMAND ""
- SVN_REPOSITORY ""
- SVN_TAG ""
- TAR ""
- TAR_URL ""
- TGZ ""
- TGZ_URL ""
- UPDATE_COMMAND ""
- )
- # Local DIR:
- #
- if(can_build_tutorial_step5)
- set(proj TutorialStep5-Local)
- add_external_project(${proj}
- DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Tutorial/Step5"
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${prefix} -G ${CMAKE_GENERATOR} ${source_dir}/${proj}
- )
- endif()
- # Local TAR:
- #
- set(proj TutorialStep1-LocalTAR)
- add_external_project(${proj}
- TAR "${CMAKE_CURRENT_SOURCE_DIR}/Step1.tar"
- LIST_SEPARATOR ::
- PATCH_COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/Step1Patch.cmake
- CMAKE_GENERATOR "${CMAKE_GENERATOR}"
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${prefix}
- -DTEST_LIST:STRING=A::B::C
- INSTALL_COMMAND ""
- )
- set(proj TutorialStep1-LocalNoDirTAR)
- add_external_project(${proj}
- TAR "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.tar"
- LIST_SEPARATOR @@
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${prefix} -G ${CMAKE_GENERATOR} ${source_dir}/${proj}
- -DTEST_LIST:STRING=1@@2@@3
- INSTALL_COMMAND ""
- )
- add_external_project_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}/TutorialStep1-LocalNoDirTAR
- DEPENDEES download
- DEPENDERS configure
- )
- # Local TGZ:
- #
- set(proj TutorialStep1-LocalTGZ)
- add_external_project(${proj}
- TGZ "${CMAKE_CURRENT_SOURCE_DIR}/Step1.tgz"
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${prefix} -G ${CMAKE_GENERATOR} ${source_dir}/${proj}
- INSTALL_COMMAND ""
- )
- set(proj TutorialStep1-LocalNoDirTGZ)
- add_external_project(${proj}
- TGZ "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.tgz"
- CMAKE_GENERATOR "${CMAKE_GENERATOR}"
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${prefix}
- INSTALL_COMMAND ""
- )
- # Download TAR:
- #
- # TODO: Add a remote .tar file
- # Download TGZ:
- #
- # TODO: Add a remote .tgz file
- # Download CVS:
- #
- if(can_use_cvs)
- # CVS by date stamp:
- #
- set(proj TutorialStep1-20081201)
- add_external_project(${proj}
- CVS_REPOSITORY ":pserver:anonymous:[email protected]:/cvsroot/CMake"
- CVS_MODULE "CMake/Tests/Tutorial/Step1"
- CVS_TAG "-D2008-12-01 01:00:00 UTC"
- CMAKE_GENERATOR "${CMAKE_GENERATOR}"
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${prefix}
- INSTALL_COMMAND ""
- )
- # CVS by tag:
- #
- set(proj kwsys-from-CMake-2-6-2)
- add_external_project(${proj}
- CVS_REPOSITORY ":pserver:anonymous:[email protected]:/cvsroot/CMake"
- CVS_MODULE "CMake/Source/kwsys"
- CVS_TAG -rCMake-2-6-2
- CMAKE_GENERATOR "${CMAKE_GENERATOR}"
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${prefix}
- INSTALL_COMMAND ""
- )
- if(can_build_kwstyle)
- # Live CVS / HEAD (no CVS_TAG):
- #
- set(proj KWStyle-CVSHEAD)
- add_external_project(${proj}
- CVS_REPOSITORY ":pserver:[email protected]:/cvsroot/KWStyle"
- CVS_MODULE "KWStyle"
- CMAKE_GENERATOR "${CMAKE_GENERATOR}"
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${prefix}
- DEPENDS "EmptyNoOpProject"
- DEPENDS "TutorialStep1-LocalTAR"
- DEPENDS "TutorialStep1-LocalNoDirTAR"
- DEPENDS "TutorialStep1-LocalTGZ"
- DEPENDS "TutorialStep1-LocalNoDirTGZ"
- DEPENDS "TutorialStep1-20081201"
- DEPENDS "kwsys-from-CMake-2-6-2"
- )
- endif()
- endif()
- # Download SVN:
- #
- if(can_use_svn)
- # SVN by date stamp:
- #
- set(proj gdcm-md5-20081204)
- add_external_project(${proj}
- SVN_REPOSITORY "http://gdcm.svn.sourceforge.net/svnroot/gdcm/trunk/Utilities/gdcmmd5"
- SVN_TAG "-r{2008-12-04 01:00:00 +0000}"
- CMAKE_GENERATOR "${CMAKE_GENERATOR}"
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${prefix}
- )
- # SVN by revision number:
- #
- set(proj gdcm-md5-r4824)
- add_external_project(${proj}
- SVN_REPOSITORY "http://gdcm.svn.sourceforge.net/svnroot/gdcm/trunk/Utilities/gdcmmd5"
- SVN_TAG "-r4824"
- CMAKE_GENERATOR "${CMAKE_GENERATOR}"
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${prefix}
- INSTALL_COMMAND ""
- )
- # Live SVN / trunk (no SVN_TAG):
- #
- set(proj gdcm-md5-SVNtrunk)
- add_external_project(${proj}
- SVN_REPOSITORY "http://gdcm.svn.sourceforge.net/svnroot/gdcm/trunk/Utilities/gdcmmd5"
- CMAKE_GENERATOR "${CMAKE_GENERATOR}"
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${prefix}
- INSTALL_COMMAND ""
- )
- endif()
- # Test the testable built/installed products:
- #
- enable_testing()
- # Use these as input to the KWStyle tests:
- #
- set(kwstyleXmlFile "${source_dir}/KWStyle-CVSHEAD/Testing/Data/0001-KWStyleConfiguration.kws.xml")
- set(header "${install_dir}/include/TutorialConfig.h")
- # Do at least a smoke test of a built executable from each
- # project's build directory...
- #
- # BuildTree tests:
- #
- if(can_build_tutorial_step5)
- add_test(TutorialStep5-Local-BuildTreeTest
- "${build_dir}/TutorialStep5-Local/Tutorial" 42)
- endif()
- add_test(TutorialStep1-LocalTAR-BuildTreeTest
- "${build_dir}/TutorialStep1-LocalTAR/EP-Tutorial" 36)
- add_test(TutorialStep1-LocalNoDirTAR-BuildTreeTest
- "${build_dir}/TutorialStep1-LocalNoDirTAR/EP-Tutorial" 25)
- add_test(TutorialStep1-LocalTGZ-BuildTreeTest
- "${build_dir}/TutorialStep1-LocalTGZ/Tutorial" 16)
- add_test(TutorialStep1-LocalNoDirTGZ-BuildTreeTest
- "${build_dir}/TutorialStep1-LocalNoDirTGZ/Tutorial" 9)
- if(can_use_cvs)
- add_test(TutorialStep1-20081201-BuildTreeTest
- "${build_dir}/TutorialStep1-20081201/Tutorial" 4)
- add_test(kwsys-from-CMake-2-6-2-BuildTreeTest
- "${build_dir}/kwsys-from-CMake-2-6-2/kwsysTestProcess" 1)
- if(can_build_kwstyle)
- add_test(KWStyle-CVSHEAD-BuildTreeTest
- "${build_dir}/KWStyle-CVSHEAD/KWStyle" -xml "${kwstyleXmlFile}" "${header}")
- endif()
- endif()
- if(can_use_svn)
- add_test(gdcm-md5-20081204-BuildTreeTest
- "${build_dir}/gdcm-md5-20081204/md5main" --version)
- add_test(gdcm-md5-r4824-BuildTreeTest
- "${build_dir}/gdcm-md5-r4824/md5main" --version)
- add_test(gdcm-md5-SVNtrunk-BuildTreeTest
- "${build_dir}/gdcm-md5-SVNtrunk/md5main" --version)
- endif()
- # InstallTree tests:
- #
- if(can_build_tutorial_step5)
- add_test(TutorialStep5-InstallTreeTest
- "${install_dir}/bin/Tutorial" 49)
- endif()
- if(can_use_cvs)
- if(can_build_kwstyle)
- add_test(KWStyle-InstallTreeTest
- "${install_dir}/bin/KWStyle" -xml "${kwstyleXmlFile}" "${header}")
- endif()
- endif()
- if(can_use_svn)
- add_test(gdcm-md5-InstallTreeTest
- "${install_dir}/bin/md5main" --version)
- endif()
|