create-cmake-release.cmake 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. if(NOT DEFINED CMAKE_CREATE_VERSION)
  2. set(CMAKE_CREATE_VERSION "release")
  3. message("Using default value of 'release' for CMAKE_CREATE_VERSION")
  4. endif()
  5. file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/logs)
  6. set(RELEASE_SCRIPTS_BATCH_1
  7. dash2win64_release.cmake # Windows
  8. dashmacmini2_release.cmake # Mac Darwin universal ppc;i386
  9. dashmacmini5_release.cmake # Mac Darwin64 universal x86_64;i386
  10. magrathea_release.cmake # Linux
  11. linux64_release.cmake # Linux x86_64
  12. )
  13. set(RELEASE_SCRIPTS_BATCH_2
  14. dash2win64_cygwin.cmake # Cygwin
  15. )
  16. function(write_batch_shell_script filename)
  17. set(scripts ${ARGN})
  18. set(i 0)
  19. file(WRITE ${filename} "#!/bin/bash")
  20. foreach(f ${scripts})
  21. math(EXPR x "420*(${i}/4)")
  22. math(EXPR y "160*(${i}%4)")
  23. file(APPEND ${filename}
  24. "
  25. \"${CMAKE_COMMAND}\" -DCMAKE_CREATE_VERSION=${CMAKE_CREATE_VERSION} -DCMAKE_DOC_TARBALL=\"${CMAKE_DOC_TARBALL}\" -P \"${CMAKE_ROOT}/Utilities/Release/${f}\" < /dev/null >& \"${CMAKE_CURRENT_SOURCE_DIR}/logs/${f}-${CMAKE_CREATE_VERSION}.log\" &
  26. xterm -geometry 64x6+${x}+${y} -sb -sl 2000 -T ${f}-${CMAKE_CREATE_VERSION}.log -e tail -f \"${CMAKE_CURRENT_SOURCE_DIR}/logs/${f}-${CMAKE_CREATE_VERSION}.log\" &
  27. ")
  28. math(EXPR i "${i}+1")
  29. endforeach()
  30. execute_process(COMMAND chmod a+x ${filename})
  31. endfunction()
  32. function(write_docs_shell_script filename)
  33. find_program(SPHINX_EXECUTABLE
  34. NAMES sphinx-build sphinx-build.py
  35. DOC "Sphinx Documentation Builder (sphinx-doc.org)"
  36. )
  37. if(NOT SPHINX_EXECUTABLE)
  38. message(FATAL_ERROR "SPHINX_EXECUTABLE (sphinx-build) is not found!")
  39. endif()
  40. set(name cmake-${CMAKE_CREATE_VERSION}-docs)
  41. file(WRITE "${filename}" "#!/usr/bin/env bash
  42. name=${name} &&
  43. inst=\"\$PWD/\$name\"
  44. (GIT_WORK_TREE=x git archive --prefix=\${name}-src/ ${CMAKE_CREATE_VERSION}) | tar x &&
  45. rm -rf \${name}-build &&
  46. mkdir \${name}-build &&
  47. cd \${name}-build &&
  48. \"${CMAKE_COMMAND}\" ../\${name}-src/Utilities/Sphinx \\
  49. -DCMAKE_INSTALL_PREFIX=\"\$inst/\" \\
  50. -DCMAKE_DOC_DIR=doc/cmake \\
  51. -DSPHINX_EXECUTABLE=\"${SPHINX_EXECUTABLE}\" \\
  52. -DSPHINX_HTML=ON -DSPHINX_MAN=ON &&
  53. make install &&
  54. cd .. &&
  55. tar czf \${name}.tar.gz \${name} ||
  56. echo 'Failed to create \${name}.tar.gz'
  57. ")
  58. execute_process(COMMAND chmod a+x ${filename})
  59. set(CMAKE_DOC_TARBALL "${name}.tar.gz" PARENT_SCOPE)
  60. endfunction()
  61. write_docs_shell_script("create-${CMAKE_CREATE_VERSION}-docs.sh")
  62. write_batch_shell_script("create-${CMAKE_CREATE_VERSION}-batch1.sh" ${RELEASE_SCRIPTS_BATCH_1})
  63. unset(CMAKE_DOC_TARBALL) # No pre-built docs in second batch.
  64. write_batch_shell_script("create-${CMAKE_CREATE_VERSION}-batch2.sh" ${RELEASE_SCRIPTS_BATCH_2})
  65. message("Run one at a time:
  66. ./create-${CMAKE_CREATE_VERSION}-docs.sh &&
  67. ./create-${CMAKE_CREATE_VERSION}-batch1.sh &&
  68. ./create-${CMAKE_CREATE_VERSION}-batch2.sh &&
  69. echo done
  70. ")