CMakeLists.txt 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. cmake_minimum_required(VERSION 2.8)
  2. project(Trilinos)
  3. include(ExternalProject)
  4. include("${CMAKE_CURRENT_SOURCE_DIR}/LocalOverrides.cmake" OPTIONAL)
  5. include("${CMAKE_CURRENT_BINARY_DIR}/LocalOverrides.cmake" OPTIONAL)
  6. include(${CMAKE_CURRENT_SOURCE_DIR}/../Home.cmake)
  7. message(STATUS "HOME='${HOME}'")
  8. if(NOT DEFINED url)
  9. set(url "https://cmake.org/files/contracts/trilinos-11.4.1.tar.gz")
  10. endif()
  11. message(STATUS "url='${url}'")
  12. if(NOT DEFINED md5)
  13. set(md5 "28b6a3c7c0fb317b3a237997293faa8b")
  14. endif()
  15. message(STATUS "md5='${md5}'")
  16. string(SUBSTRING "${md5}" 0 8 shorttag)
  17. set(shorttag "m${shorttag}")
  18. set(download_dir "${HOME}/.cmake/Downloads")
  19. set(base_dir "${HOME}/.cmake/Contracts/${PROJECT_NAME}/${shorttag}")
  20. set(binary_dir "${base_dir}/build")
  21. set(script_dir "${base_dir}")
  22. set(source_dir "${base_dir}/src")
  23. if(NOT DEFINED BUILDNAME)
  24. set(BUILDNAME "CMakeContract-${shorttag}")
  25. endif()
  26. message(STATUS "BUILDNAME='${BUILDNAME}'")
  27. if(NOT DEFINED SITE)
  28. site_name(SITE)
  29. endif()
  30. message(STATUS "SITE='${SITE}'")
  31. configure_file(
  32. "${CMAKE_CURRENT_SOURCE_DIR}/Dashboard.cmake.in"
  33. "${script_dir}/Dashboard.cmake"
  34. @ONLY)
  35. configure_file(
  36. "${CMAKE_CURRENT_SOURCE_DIR}/ValidateBuild.cmake.in"
  37. "${CMAKE_CURRENT_BINARY_DIR}/ValidateBuild.cmake"
  38. @ONLY)
  39. # Source dir for this project exists outside the CMake build tree because it
  40. # is absolutely huge. Source dir is therefore cached under a '.cmake/Contracts'
  41. # dir in your HOME directory. Downloads are cached under '.cmake/Downloads'
  42. #
  43. if(EXISTS "${source_dir}/cmake/ctest/TrilinosCTestDriverCore.cmake")
  44. # If it exists already, download is a complete no-op:
  45. ExternalProject_Add(download-${PROJECT_NAME}
  46. DOWNLOAD_COMMAND ""
  47. CONFIGURE_COMMAND ""
  48. BUILD_COMMAND ""
  49. INSTALL_COMMAND ""
  50. )
  51. else()
  52. # If it does not yet exist, download pulls the tarball from the web (or
  53. # no-ops if it already exists with the given md5 sum):
  54. #
  55. ExternalProject_Add(download-${PROJECT_NAME}
  56. DOWNLOAD_DIR "${download_dir}"
  57. URL "${url}"
  58. URL_MD5 "${md5}"
  59. SOURCE_DIR "${source_dir}"
  60. PATCH_COMMAND ${CMAKE_COMMAND} -Dsource_dir=${source_dir} -P "${CMAKE_CURRENT_SOURCE_DIR}/Patch.cmake"
  61. CONFIGURE_COMMAND ""
  62. BUILD_COMMAND ""
  63. INSTALL_COMMAND ""
  64. )
  65. endif()
  66. ExternalProject_Add(build-${PROJECT_NAME}
  67. DOWNLOAD_COMMAND ""
  68. CONFIGURE_COMMAND ""
  69. BUILD_COMMAND ${CMAKE_COMMAND} -P "${script_dir}/Dashboard.cmake"
  70. INSTALL_COMMAND ""
  71. DEPENDS download-${PROJECT_NAME}
  72. )