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. ibm_aix_release.cmake # AIX
  13. )
  14. set(RELEASE_SCRIPTS_BATCH_2
  15. dash2win64_cygwin.cmake # Cygwin
  16. )
  17. function(write_batch_shell_script filename)
  18. set(scripts ${ARGN})
  19. set(i 0)
  20. file(WRITE ${filename} "#!/bin/bash")
  21. foreach(f ${scripts})
  22. math(EXPR x "420*(${i}/4)")
  23. math(EXPR y "160*(${i}%4)")
  24. file(APPEND ${filename}
  25. "
  26. \"${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\" &
  27. 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\" &
  28. ")
  29. math(EXPR i "${i}+1")
  30. endforeach()
  31. execute_process(COMMAND chmod a+x ${filename})
  32. endfunction()
  33. function(write_docs_shell_script filename)
  34. find_program(SPHINX_EXECUTABLE
  35. NAMES sphinx-build sphinx-build.py
  36. DOC "Sphinx Documentation Builder (sphinx-doc.org)"
  37. )
  38. if(NOT SPHINX_EXECUTABLE)
  39. message(FATAL_ERROR "SPHINX_EXECUTABLE (sphinx-build) is not found!")
  40. endif()
  41. set(name cmake-${CMAKE_CREATE_VERSION}-docs)
  42. file(WRITE "${filename}" "#!/usr/bin/env bash
  43. name=${name} &&
  44. inst=\"\$PWD/\$name\"
  45. (GIT_WORK_TREE=x git archive --prefix=\${name}-src/ ${CMAKE_CREATE_VERSION}) | tar x &&
  46. rm -rf \${name}-build &&
  47. mkdir \${name}-build &&
  48. cd \${name}-build &&
  49. \"${CMAKE_COMMAND}\" ../\${name}-src/Utilities/Sphinx \\
  50. -DCMAKE_INSTALL_PREFIX=\"\$inst/\" \\
  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. ")