80 lines
2.7 KiB
CMake
80 lines
2.7 KiB
CMake
if(NOT DEFINED CMAKE_CREATE_VERSION)
|
|
set(CMAKE_CREATE_VERSION "release")
|
|
message("Using default value of 'release' for CMAKE_CREATE_VERSION")
|
|
endif()
|
|
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/logs)
|
|
|
|
set(RELEASE_SCRIPTS_BATCH_1
|
|
win32_release.cmake # Windows x86
|
|
osx_release.cmake # OS X x86_64
|
|
linux32_release.cmake # Linux x86
|
|
linux64_release.cmake # Linux x86_64
|
|
)
|
|
|
|
set(RELEASE_SCRIPTS_BATCH_2
|
|
cygwin_release.cmake # Cygwin x86
|
|
win64_release.cmake # Windows x64
|
|
)
|
|
|
|
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}
|
|
"
|
|
\"${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\" &
|
|
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\" &
|
|
")
|
|
math(EXPR i "${i}+1")
|
|
endforeach()
|
|
execute_process(COMMAND chmod a+x ${filename})
|
|
endfunction()
|
|
|
|
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/\" \\
|
|
-DCMAKE_DOC_DIR=doc/cmake \\
|
|
-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")
|
|
write_batch_shell_script("create-${CMAKE_CREATE_VERSION}-batch1.sh" ${RELEASE_SCRIPTS_BATCH_1})
|
|
unset(CMAKE_DOC_TARBALL) # No pre-built docs in second batch.
|
|
write_batch_shell_script("create-${CMAKE_CREATE_VERSION}-batch2.sh" ${RELEASE_SCRIPTS_BATCH_2})
|
|
|
|
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
|
|
")
|