create-cmake-release.cmake 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. v20n250_aix_release.cmake # AIX 5.3
  12. ferrari_sgi64_release.cmake # IRIX 64
  13. ferrari_sgi_release.cmake # IRIX
  14. )
  15. set(RELEASE_SCRIPTS_BATCH_2
  16. dash2win64_cygwin.cmake # Cygwin
  17. )
  18. function(write_batch_shell_script filename)
  19. set(scripts ${ARGN})
  20. set(i 0)
  21. file(WRITE ${filename} "#!/bin/bash")
  22. foreach(f ${scripts})
  23. math(EXPR x "420*(${i}/4)")
  24. math(EXPR y "160*(${i}%4)")
  25. file(APPEND ${filename}
  26. "
  27. \"${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\" &
  28. 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\" &
  29. ")
  30. math(EXPR i "${i}+1")
  31. endforeach()
  32. execute_process(COMMAND chmod a+x ${filename})
  33. endfunction()
  34. function(write_docs_shell_script filename)
  35. find_program(SPHINX_EXECUTABLE
  36. NAMES sphinx-build sphinx-build.py
  37. DOC "Sphinx Documentation Builder (sphinx-doc.org)"
  38. )
  39. if(NOT SPHINX_EXECUTABLE)
  40. message(FATAL_ERROR "SPHINX_EXECUTABLE (sphinx-build) is not found!")
  41. endif()
  42. set(name cmake-${CMAKE_CREATE_VERSION}-docs)
  43. file(WRITE "${filename}" "#!/usr/bin/env bash
  44. name=${name} &&
  45. inst=\"\$PWD/\$name\"
  46. (GIT_WORK_TREE=x git archive --prefix=\${name}-src/ ${CMAKE_CREATE_VERSION}) | tar x &&
  47. rm -rf \${name}-build &&
  48. mkdir \${name}-build &&
  49. cd \${name}-build &&
  50. \"${CMAKE_COMMAND}\" ../\${name}-src/Utilities/Sphinx \\
  51. -DCMAKE_INSTALL_PREFIX=\"\$inst/\" \\
  52. -DSPHINX_EXECUTABLE=\"${SPHINX_EXECUTABLE}\" \\
  53. -DSPHINX_HTML=ON -DSPHINX_MAN=ON &&
  54. make install &&
  55. cd .. &&
  56. tar czf \${name}.tar.gz \${name} ||
  57. echo 'Failed to create \${name}.tar.gz'
  58. ")
  59. execute_process(COMMAND chmod a+x ${filename})
  60. set(CMAKE_DOC_TARBALL "${name}.tar.gz" PARENT_SCOPE)
  61. endfunction()
  62. write_docs_shell_script("create-${CMAKE_CREATE_VERSION}-docs.sh")
  63. write_batch_shell_script("create-${CMAKE_CREATE_VERSION}-batch1.sh" ${RELEASE_SCRIPTS_BATCH_1})
  64. unset(CMAKE_DOC_TARBALL) # No pre-built docs in second batch.
  65. write_batch_shell_script("create-${CMAKE_CREATE_VERSION}-batch2.sh" ${RELEASE_SCRIPTS_BATCH_2})
  66. message("Run one at a time:
  67. ./create-${CMAKE_CREATE_VERSION}-docs.sh &&
  68. ./create-${CMAKE_CREATE_VERSION}-batch1.sh &&
  69. ./create-${CMAKE_CREATE_VERSION}-batch2.sh &&
  70. echo done
  71. ")