create-cmake-release.cmake 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. function(write_rel_shell_script filename script)
  7. file(WRITE ${filename} "#!/usr/bin/env bash
  8. \"${CMAKE_COMMAND}\" -DCMAKE_CREATE_VERSION=${CMAKE_CREATE_VERSION} -DCMAKE_DOC_TARBALL=\"${CMAKE_DOC_TARBALL}\" -P \"${CMAKE_CURRENT_LIST_DIR}/${script}.cmake\" < /dev/null 2>&1 | tee \"${CMAKE_CURRENT_SOURCE_DIR}/logs/${script}-${CMAKE_CREATE_VERSION}.log\"
  9. ")
  10. execute_process(COMMAND chmod a+x ${filename})
  11. endfunction()
  12. function(write_docs_shell_script filename)
  13. find_program(SPHINX_EXECUTABLE
  14. NAMES sphinx-build sphinx-build.py
  15. DOC "Sphinx Documentation Builder (sphinx-doc.org)"
  16. )
  17. if(NOT SPHINX_EXECUTABLE)
  18. message(FATAL_ERROR "SPHINX_EXECUTABLE (sphinx-build) is not found!")
  19. endif()
  20. set(name cmake-${CMAKE_CREATE_VERSION}-docs)
  21. file(WRITE "${filename}" "#!/usr/bin/env bash
  22. name=${name} &&
  23. inst=\"\$PWD/\$name\"
  24. (GIT_WORK_TREE=x git archive --prefix=\${name}-src/ ${CMAKE_CREATE_VERSION}) | tar x &&
  25. rm -rf \${name}-build &&
  26. mkdir \${name}-build &&
  27. cd \${name}-build &&
  28. \"${CMAKE_COMMAND}\" ../\${name}-src/Utilities/Sphinx \\
  29. -DCMAKE_INSTALL_PREFIX=\"\$inst/\" \\
  30. -DCMAKE_DOC_DIR=doc/cmake \\
  31. -DSPHINX_EXECUTABLE=\"${SPHINX_EXECUTABLE}\" \\
  32. -DSPHINX_HTML=ON -DSPHINX_MAN=ON -DSPHINX_QTHELP=ON &&
  33. make install &&
  34. cd .. &&
  35. tar czf \${name}.tar.gz \${name} ||
  36. echo 'Failed to create \${name}.tar.gz'
  37. ")
  38. execute_process(COMMAND chmod a+x ${filename})
  39. set(CMAKE_DOC_TARBALL "${name}.tar.gz" PARENT_SCOPE)
  40. endfunction()
  41. write_docs_shell_script("create-${CMAKE_CREATE_VERSION}-docs.sh")
  42. write_rel_shell_script("create-${CMAKE_CREATE_VERSION}-macos.sh" osx_release ) # macOS x86_64
  43. write_rel_shell_script("create-${CMAKE_CREATE_VERSION}-win64.sh" win64_release ) # Windows x64
  44. write_rel_shell_script("create-${CMAKE_CREATE_VERSION}-win32.sh" win32_release ) # Windows x86
  45. message("Build docs first and then build for each platform:
  46. ./create-${CMAKE_CREATE_VERSION}-docs.sh &&
  47. ./create-${CMAKE_CREATE_VERSION}-macos.sh &&
  48. ./create-${CMAKE_CREATE_VERSION}-win64.sh &&
  49. ./create-${CMAKE_CREATE_VERSION}-win32.sh &&
  50. echo done
  51. ")