CMakeLists.txt 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. cmake_minimum_required(VERSION 2.8)
  2. project(cse-snapshot)
  3. include(ExternalProject)
  4. include("${CMAKE_CURRENT_SOURCE_DIR}/LocalOverrides.cmake" OPTIONAL)
  5. include("${CMAKE_CURRENT_BINARY_DIR}/LocalOverrides.cmake" OPTIONAL)
  6. if(NOT DEFINED HOME)
  7. if(DEFINED ENV{CTEST_REAL_HOME})
  8. set(HOME "$ENV{CTEST_REAL_HOME}")
  9. else()
  10. set(HOME "$ENV{HOME}")
  11. endif()
  12. endif()
  13. message(STATUS "HOME='${HOME}'")
  14. if(NOT DEFINED repo)
  15. set(repo "git://public.kitware.com/cse.git")
  16. endif()
  17. message(STATUS "repo='${repo}'")
  18. if(NOT DEFINED tag)
  19. set(tag "cc1dcb95439a21ab1d58f444d93481598414196e")
  20. endif()
  21. message(STATUS "tag='${tag}'")
  22. string(SUBSTRING "${tag}" 0 8 shorttag)
  23. set(base_dir "${HOME}/.cmake/Contracts/${PROJECT_NAME}/${shorttag}")
  24. set(binary_dir "${base_dir}/build")
  25. set(script_dir "${base_dir}")
  26. set(source_dir "${base_dir}/src")
  27. if(NOT DEFINED BUILDNAME)
  28. set(BUILDNAME "CMakeContract-${shorttag}")
  29. endif()
  30. message(STATUS "BUILDNAME='${BUILDNAME}'")
  31. if(NOT DEFINED SITE)
  32. site_name(SITE)
  33. endif()
  34. message(STATUS "SITE='${SITE}'")
  35. if(NOT DEFINED PROCESSOR_COUNT)
  36. # Unknown:
  37. set(PROCESSOR_COUNT 0)
  38. # Linux:
  39. set(cpuinfo_file "/proc/cpuinfo")
  40. if(EXISTS "${cpuinfo_file}")
  41. file(STRINGS "${cpuinfo_file}" procs REGEX "^processor.: [0-9]+$")
  42. list(LENGTH procs PROCESSOR_COUNT)
  43. endif()
  44. # Mac:
  45. if(APPLE)
  46. find_program(cmd_sysctl "sysctl")
  47. if(cmd_sysctl)
  48. execute_process(COMMAND ${cmd_sysctl} -n hw.ncpu
  49. OUTPUT_VARIABLE PROCESSOR_COUNT
  50. OUTPUT_STRIP_TRAILING_WHITESPACE)
  51. endif()
  52. endif()
  53. # Windows:
  54. if(WIN32)
  55. set(PROCESSOR_COUNT "$ENV{NUMBER_OF_PROCESSORS}")
  56. endif()
  57. endif()
  58. message(STATUS "PROCESSOR_COUNT='${PROCESSOR_COUNT}'")
  59. find_package(Git)
  60. if(NOT GIT_EXECUTABLE)
  61. message(FATAL_ERROR "error: could not find git")
  62. # adjust PATH to find git, or set GIT_EXECUTABLE in LocalOverrides.cmake
  63. endif()
  64. message(STATUS "GIT_EXECUTABLE='${GIT_EXECUTABLE}'")
  65. configure_file(
  66. "${CMAKE_CURRENT_SOURCE_DIR}/Dashboard.cmake.in"
  67. "${script_dir}/Dashboard.cmake"
  68. @ONLY)
  69. # Source dir for this project exists outside the CMake build tree because it
  70. # is absolutely huge.
  71. #
  72. if(EXISTS "${source_dir}/.git")
  73. # If it exists already, download is a complete no-op:
  74. ExternalProject_Add(download-${PROJECT_NAME}
  75. DOWNLOAD_COMMAND ""
  76. CONFIGURE_COMMAND ""
  77. BUILD_COMMAND ""
  78. INSTALL_COMMAND ""
  79. )
  80. else()
  81. # If it does not yet exist, download clones the git repository:
  82. ExternalProject_Add(download-${PROJECT_NAME}
  83. SOURCE_DIR "${source_dir}"
  84. GIT_REPOSITORY "${repo}"
  85. GIT_TAG "${tag}"
  86. CONFIGURE_COMMAND ""
  87. BUILD_COMMAND ""
  88. INSTALL_COMMAND ""
  89. )
  90. endif()
  91. ExternalProject_Add(build-${PROJECT_NAME}
  92. DOWNLOAD_COMMAND ""
  93. CONFIGURE_COMMAND ""
  94. BUILD_COMMAND ${CMAKE_CTEST_COMMAND} -S "${script_dir}/Dashboard.cmake"
  95. INSTALL_COMMAND ""
  96. DEPENDS download-${PROJECT_NAME}
  97. )