123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # This CMakeLists.txt file exists solely to drive the one found in the "src"
- # subdir as an ExternalProject build. The project in "src" cannot build when
- # there is a space in the directory name, so we copy that directory to a place
- # guaranteed not to have a space in the name, build it there, and then copy the
- # resulting output directory back up here into this CMake test's build tree.
- #
- if(NOT DEFINED CMAKE_BUILDNAME)
- string(REGEX REPLACE "^.*/([^/]+)/[^/]+/([^/]+)$" "\\1" CMAKE_BUILDNAME "${CMAKE_CURRENT_BINARY_DIR}")
- string(REGEX REPLACE "^.*/([^/]+)/[^/]+/([^/]+)$" "\\2" THIS_TESTNAME "${CMAKE_CURRENT_BINARY_DIR}")
- string(REPLACE " " "_" CMAKE_BUILDNAME "${CMAKE_BUILDNAME}")
- endif()
- message(STATUS "CMAKE_BUILDNAME='${CMAKE_BUILDNAME}'")
- message(STATUS "THIS_TESTNAME='${THIS_TESTNAME}'")
- cmake_minimum_required(VERSION 2.8)
- project(${THIS_TESTNAME})
- include(ExternalProject)
- if(NOT DEFINED HOME)
- if(DEFINED ENV{CTEST_REAL_HOME})
- set(HOME "$ENV{CTEST_REAL_HOME}")
- else()
- set(HOME "$ENV{HOME}")
- endif()
- if(NOT HOME AND WIN32)
- # Try for USERPROFILE as HOME equivalent:
- string(REPLACE "\\" "/" HOME "$ENV{USERPROFILE}")
- endif()
- # But just use root of SystemDrive if HOME contains any spaces:
- # (Default on XP and earlier...)
- if(HOME MATCHES " " AND WIN32)
- string(REPLACE "\\" "/" HOME "$ENV{SystemDrive}")
- endif()
- if(HOME MATCHES " ")
- set(HOME "")
- endif()
- endif()
- message(STATUS "HOME='${HOME}'")
- if(NOT DEFINED url)
- set(url "${CMAKE_CURRENT_SOURCE_DIR}/src")
- endif()
- message(STATUS "url='${url}'")
- set(base_dir "${HOME}/.cmake/Dashboards/${CMAKE_BUILDNAME}/${THIS_TESTNAME}")
- set(binary_dir "${base_dir}/build")
- set(source_dir "${base_dir}/src")
- # Source dir for this project exists in the CMake source tree, but we cannot
- # use it in-place since there might be a space in its directory name.
- # Source dir is therefore copied under a '.cmake/Dashboards'
- # dir in your HOME directory to give it a name with no spaces.
- #
- ExternalProject_Add(clean-${PROJECT_NAME}
- DOWNLOAD_COMMAND ""
- CONFIGURE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${source_dir}"
- BUILD_COMMAND ${CMAKE_COMMAND} -E remove_directory "${binary_dir}"
- INSTALL_COMMAND ""
- )
- ExternalProject_Add(download-${PROJECT_NAME}
- URL "${url}"
- SOURCE_DIR "${source_dir}"
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- DEPENDS clean-${PROJECT_NAME}
- )
- ExternalProject_Add(build-${PROJECT_NAME}
- DOWNLOAD_COMMAND ""
- SOURCE_DIR "${source_dir}"
- BINARY_DIR "${binary_dir}"
- INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory
- "${binary_dir}/${CMAKE_CFG_INTDIR}"
- "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}"
- DEPENDS download-${PROJECT_NAME}
- )
|