create-cmake-release.cmake 2.71 KB
Newer Older
1
if(NOT DEFINED CMAKE_CREATE_VERSION)
2
3
4
  set(CMAKE_CREATE_VERSION "release")
  message("Using default value of 'release' for CMAKE_CREATE_VERSION")
endif()
5

6
7
8
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/logs)

set(RELEASE_SCRIPTS_BATCH_1
9
10
  win32_release.cmake         # Windows x86
  osx_release.cmake           # OS X x86_64
11
  linux64_release.cmake       # Linux x86_64
12
13
)

14
set(RELEASE_SCRIPTS_BATCH_2
15
  cygwin_release.cmake        # Cygwin x86
16
  win64_release.cmake         # Windows x64
17
)
18

19
20
21
22
23
24
25
26
function(write_batch_shell_script filename)
  set(scripts ${ARGN})
  set(i 0)
  file(WRITE ${filename} "#!/bin/bash")
  foreach(f ${scripts})
    math(EXPR x "420*(${i}/4)")
    math(EXPR y "160*(${i}%4)")
    file(APPEND ${filename}
27
    "
28
\"${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\" &
29
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\" &
30
31
")
    math(EXPR i "${i}+1")
32
  endforeach()
33
34
35
  execute_process(COMMAND chmod a+x ${filename})
endfunction()

36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
function(write_docs_shell_script filename)
  find_program(SPHINX_EXECUTABLE
    NAMES sphinx-build sphinx-build.py
    DOC "Sphinx Documentation Builder (sphinx-doc.org)"
    )
  if(NOT SPHINX_EXECUTABLE)
    message(FATAL_ERROR "SPHINX_EXECUTABLE (sphinx-build) is not found!")
  endif()

  set(name cmake-${CMAKE_CREATE_VERSION}-docs)
  file(WRITE "${filename}" "#!/usr/bin/env bash

name=${name} &&
inst=\"\$PWD/\$name\"
(GIT_WORK_TREE=x git archive --prefix=\${name}-src/ ${CMAKE_CREATE_VERSION}) | tar x &&
rm -rf \${name}-build &&
mkdir \${name}-build &&
cd \${name}-build &&
\"${CMAKE_COMMAND}\" ../\${name}-src/Utilities/Sphinx \\
  -DCMAKE_INSTALL_PREFIX=\"\$inst/\" \\
56
  -DCMAKE_DOC_DIR=doc/cmake \\
57
58
59
60
61
62
63
64
65
66
67
68
  -DSPHINX_EXECUTABLE=\"${SPHINX_EXECUTABLE}\" \\
  -DSPHINX_HTML=ON -DSPHINX_MAN=ON &&
make install &&
cd .. &&
tar czf \${name}.tar.gz \${name} ||
echo 'Failed to create \${name}.tar.gz'
")
  execute_process(COMMAND chmod a+x ${filename})
  set(CMAKE_DOC_TARBALL "${name}.tar.gz" PARENT_SCOPE)
endfunction()

write_docs_shell_script("create-${CMAKE_CREATE_VERSION}-docs.sh")
69
write_batch_shell_script("create-${CMAKE_CREATE_VERSION}-batch1.sh" ${RELEASE_SCRIPTS_BATCH_1})
70
unset(CMAKE_DOC_TARBALL) # No pre-built docs in second batch.
71
72
write_batch_shell_script("create-${CMAKE_CREATE_VERSION}-batch2.sh" ${RELEASE_SCRIPTS_BATCH_2})

73
74
75
76
77
78
message("Run one at a time:
 ./create-${CMAKE_CREATE_VERSION}-docs.sh   &&
 ./create-${CMAKE_CREATE_VERSION}-batch1.sh &&
 ./create-${CMAKE_CREATE_VERSION}-batch2.sh &&
 echo done
")