create-cmake-release.cmake 2.6 KB

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