summaryrefslogtreecommitdiff
path: root/Tests/Contracts/cse-snapshot/CMakeLists.txt
blob: 913421010a2a74c66ff69cc51cede130a6b81180 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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}
  )