You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.8 KiB
115 lines
2.8 KiB
cmake_minimum_required(VERSION 2.8)
|
|
project(cse-snapshot)
|
|
|
|
include(ExternalProject)
|
|
|
|
include("${CMAKE_CURRENT_SOURCE_DIR}/LocalOverrides.cmake" OPTIONAL)
|
|
include("${CMAKE_CURRENT_BINARY_DIR}/LocalOverrides.cmake" OPTIONAL)
|
|
|
|
if(NOT DEFINED HOME)
|
|
if(DEFINED ENV{CTEST_REAL_HOME})
|
|
set(HOME "$ENV{CTEST_REAL_HOME}")
|
|
else()
|
|
set(HOME "$ENV{HOME}")
|
|
endif()
|
|
endif()
|
|
message(STATUS "HOME='${HOME}'")
|
|
|
|
if(NOT DEFINED repo)
|
|
set(repo "git://public.kitware.com/cse.git")
|
|
endif()
|
|
message(STATUS "repo='${repo}'")
|
|
|
|
if(NOT DEFINED tag)
|
|
set(tag "cc1dcb95439a21ab1d58f444d93481598414196e")
|
|
endif()
|
|
message(STATUS "tag='${tag}'")
|
|
|
|
string(SUBSTRING "${tag}" 0 8 shorttag)
|
|
|
|
set(base_dir "${HOME}/.cmake/Contracts/${PROJECT_NAME}/${shorttag}")
|
|
set(binary_dir "${base_dir}/build")
|
|
set(script_dir "${base_dir}")
|
|
set(source_dir "${base_dir}/src")
|
|
|
|
if(NOT DEFINED BUILDNAME)
|
|
set(BUILDNAME "CMakeContract-${shorttag}")
|
|
endif()
|
|
message(STATUS "BUILDNAME='${BUILDNAME}'")
|
|
|
|
if(NOT DEFINED SITE)
|
|
site_name(SITE)
|
|
endif()
|
|
message(STATUS "SITE='${SITE}'")
|
|
|
|
if(NOT DEFINED PROCESSOR_COUNT)
|
|
# Unknown:
|
|
set(PROCESSOR_COUNT 0)
|
|
|
|
# Linux:
|
|
set(cpuinfo_file "/proc/cpuinfo")
|
|
if(EXISTS "${cpuinfo_file}")
|
|
file(STRINGS "${cpuinfo_file}" procs REGEX "^processor.: [0-9]+$")
|
|
list(LENGTH procs PROCESSOR_COUNT)
|
|
endif()
|
|
|
|
# Mac:
|
|
if(APPLE)
|
|
find_program(cmd_sysctl "sysctl")
|
|
if(cmd_sysctl)
|
|
execute_process(COMMAND ${cmd_sysctl} -n hw.ncpu
|
|
OUTPUT_VARIABLE PROCESSOR_COUNT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
endif()
|
|
endif()
|
|
|
|
# Windows:
|
|
if(WIN32)
|
|
set(PROCESSOR_COUNT "$ENV{NUMBER_OF_PROCESSORS}")
|
|
endif()
|
|
endif()
|
|
message(STATUS "PROCESSOR_COUNT='${PROCESSOR_COUNT}'")
|
|
|
|
find_package(Git)
|
|
if(NOT GIT_EXECUTABLE)
|
|
message(FATAL_ERROR "error: could not find git")
|
|
# adjust PATH to find git, or set GIT_EXECUTABLE in LocalOverrides.cmake
|
|
endif()
|
|
message(STATUS "GIT_EXECUTABLE='${GIT_EXECUTABLE}'")
|
|
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/Dashboard.cmake.in"
|
|
"${script_dir}/Dashboard.cmake"
|
|
@ONLY)
|
|
|
|
# Source dir for this project exists outside the CMake build tree because it
|
|
# is absolutely huge.
|
|
#
|
|
if(EXISTS "${source_dir}/.git")
|
|
# If it exists already, download is a complete no-op:
|
|
ExternalProject_Add(download-${PROJECT_NAME}
|
|
DOWNLOAD_COMMAND ""
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND ""
|
|
)
|
|
else()
|
|
# If it does not yet exist, download clones the git repository:
|
|
ExternalProject_Add(download-${PROJECT_NAME}
|
|
SOURCE_DIR "${source_dir}"
|
|
GIT_REPOSITORY "${repo}"
|
|
GIT_TAG "${tag}"
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND ""
|
|
)
|
|
endif()
|
|
|
|
ExternalProject_Add(build-${PROJECT_NAME}
|
|
DOWNLOAD_COMMAND ""
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ${CMAKE_CTEST_COMMAND} -S "${script_dir}/Dashboard.cmake"
|
|
INSTALL_COMMAND ""
|
|
DEPENDS download-${PROJECT_NAME}
|
|
)
|