[llvm] 622346c - utils/release: Add script for building release documentation

Tom Stellard via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 27 12:57:14 PDT 2021


Author: Tom Stellard
Date: 2021-10-27T12:56:55-07:00
New Revision: 622346c6046724baf7b8e93b5a0f390bacdfeb45

URL: https://github.com/llvm/llvm-project/commit/622346c6046724baf7b8e93b5a0f390bacdfeb45
DIFF: https://github.com/llvm/llvm-project/commit/622346c6046724baf7b8e93b5a0f390bacdfeb45.diff

LOG: utils/release: Add script for building release documentation

Reviewed By: hans, kuhnel

Differential Revision: https://reviews.llvm.org/D95284

Added: 
    llvm/utils/release/build-docs.sh

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
new file mode 100755
index 0000000000000..8b12a4526e133
--- /dev/null
+++ b/llvm/utils/release/build-docs.sh
@@ -0,0 +1,127 @@
+#!/bin/sh
+#===-- build-docs.sh - Tag the LLVM release candidates ---------------------===#
+#
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#
+#===------------------------------------------------------------------------===#
+#
+# Build documentation for LLVM releases.
+#
+# Required Packages:
+# * Fedora:
+#   * dnf install doxygen python3-sphinx texlive-epstopdf ghostscript \
+#                 ninja-build gcc-c++
+#   * pip install sphinx-markdown-tables
+# * Ubuntu:
+#   * apt-get install doxygen sphinx-common python3-recommonmark \
+#             ninja-build graphviz texlive-font-utils
+#   * pip install sphinx-markdown-tables
+#===------------------------------------------------------------------------===#
+
+set -ex
+
+builddir=docs-build
+srcdir=$(readlink -f $(dirname "$(readlink -f "$0")")/../..)
+
+usage() {
+  echo "Build the documentation for an LLVM release.  This only needs to be "
+  echo "done for -final releases."
+  echo "usage: `basename $0`"
+  echo " "
+  echo " -release <num> Fetch the tarball for release <num> and build the "
+  echo "                documentation from that source."
+  echo " -srcdir  <dir> Path to llvm source directory with CMakeLists.txt"
+  echo "                (optional) default: $srcdir"
+}
+
+package_doxygen() {
+
+  project=$1
+  proj_dir=$2
+  output=${project}_doxygen-$release
+
+  mv $builddir/$proj_dir/docs/doxygen/html $output
+  tar -cJf $output.tar.xz $output
+}
+
+
+while [ $# -gt 0 ]; do
+  case $1 in
+    -release )
+      shift
+      release=$1
+      ;;
+    -srcdir )
+      shift
+      custom_srcdir=$1
+      ;;
+    * )
+      echo "unknown option: $1"
+      usage
+      exit 1
+      ;;
+   esac
+   shift
+done
+
+if [ -n "$release" -a -n "$custom_srcdir" ]; then
+  echo "error: Cannot specify both -srcdir and -release options"
+  exit 1
+fi
+
+if [ -n "$custom_srcdir" ]; then
+  srcdir="$custom_srcdir"
+fi
+
+# Set default source directory if one is not supplied
+if [ -n "$release" ]; then
+  git_ref=llvmorg-$release
+  if [ -d llvm-project ]; then
+    echo "error llvm-project directory already exists"
+    exit 1
+  fi
+  mkdir -p llvm-project
+  pushd llvm-project
+  curl -L https://github.com/llvm/llvm-project/archive/$git_ref.tar.gz | tar --strip-components=1 -xzf -
+  popd
+  srcdir="./llvm-project/llvm"
+fi
+
+cmake -G Ninja $srcdir -B $builddir \
+               -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;libcxx;polly;flang" \
+               -DCMAKE_BUILD_TYPE=Release \
+               -DLLVM_ENABLE_DOXYGEN=ON \
+               -DLLVM_ENABLE_SPHINX=ON \
+               -DLLVM_BUILD_DOCS=ON \
+               -DLLVM_DOXYGEN_SVG=ON \
+               -DSPHINX_WARNINGS_AS_ERRORS=OFF
+
+ninja -C $builddir \
+               docs-clang-html \
+               docs-clang-tools-html \
+               docs-flang-html \
+               docs-libcxx-html \
+               docs-lld-html \
+               docs-llvm-html \
+               docs-polly-html \
+               doxygen-clang \
+               doxygen-clang-tools \
+               doxygen-flang \
+               doxygen-llvm \
+               doxygen-mlir \
+               doxygen-polly
+
+
+package_doxygen llvm .
+package_doxygen clang tools/clang
+package_doxygen clang-tools-extra tools/clang/tools/extra
+package_doxygen flang tools/flang
+
+html_dir=$builddir/html-export/
+
+for d in docs/ tools/clang/docs/ tools/lld/docs/ tools/clang/tools/extra/docs/ projects/libcxx/docs/ tools/polly/docs/ tools/flang/docs/; do
+  mkdir -p $html_dir/$d
+  mv $builddir/$d/html/* $html_dir/$d/
+done


        


More information about the llvm-commits mailing list