[llvm] build-docs: Add option to disable doxygen/sphinx docs (PR #66928)

Tobias Hieta via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 22 01:10:29 PDT 2023


https://github.com/tru updated https://github.com/llvm/llvm-project/pull/66928

>From 6e722507e06e8b817140fffa90bd3a38cef778c1 Mon Sep 17 00:00:00 2001
From: Tobias Hieta <tobias at hieta.se>
Date: Wed, 20 Sep 2023 18:39:11 +0200
Subject: [PATCH 1/3] build-docs: Add option to disable doxygen docs

Doxygen documentation takes very long to build, when making releases we
want to get the normal documentation up earlier so that we don't have to
wait for doxygen documentation.

This PR just adds the flag to disable doxygen builds, I will then later
make a PR that changes the actions to first build the normal docs and
another job to build the doxygen docs.
---
 llvm/utils/release/build-docs.sh | 45 +++++++++++++++++---------------
 1 file changed, 24 insertions(+), 21 deletions(-)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index ef3784959b4f3aa..aa76414171f4e99 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -20,7 +20,7 @@
 #   * pip install sphinx-markdown-tables
 #===------------------------------------------------------------------------===#
 
-set -ex
+set -e
 
 builddir=docs-build
 srcdir=$(readlink -f $(dirname "$(readlink -f "$0")")/../..)
@@ -34,6 +34,7 @@ usage() {
   echo "                documentation from that source."
   echo " -srcdir  <dir> Path to llvm source directory with CMakeLists.txt"
   echo "                (optional) default: $srcdir"
+  echo " -no-doxygen    Don't build Doxygen docs"
 }
 
 package_doxygen() {
@@ -57,6 +58,9 @@ while [ $# -gt 0 ]; do
       shift
       custom_srcdir=$1
       ;;
+    -no-doxygen )
+      no_doxygen="yes"
+      ;;
     * )
       echo "unknown option: $1"
       usage
@@ -89,28 +93,25 @@ if [ -n "$release" ]; then
   srcdir="./llvm-project/llvm"
 fi
 
+docs_targets="docs-clang-html docs-clang-tools-html docs-flang-html docs-lld-html docs-llvm-html docs-polly-html"
+
+if [ "$no_doxygen" != "yes" ]; then
+  echo "Doxygen: enabled"
+  docs_targets="$docs_target doxygen-clang doxygen-clang-tools doxygen-flang doxygen-llvm doxygen-mlir doxygen-polly"
+  doxygen_flag=" -DLLVM_ENABLE_DOXYGEN=ON -DLLVM_DOXYGEN_SVG=ON"
+else
+   echo "Doxygen: disabled"
+fi
+
 cmake -G Ninja $srcdir -B $builddir \
                -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;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
+               -DSPHINX_WARNINGS_AS_ERRORS=OFF \
+               $doxygen_flag
 
-ninja -C $builddir \
-               docs-clang-html \
-               docs-clang-tools-html \
-               docs-flang-html \
-               docs-lld-html \
-               docs-llvm-html \
-               docs-polly-html \
-               doxygen-clang \
-               doxygen-clang-tools \
-               doxygen-flang \
-               doxygen-llvm \
-               doxygen-mlir \
-               doxygen-polly
+ninja -C $builddir $docs_targets
 
 cmake -G Ninja $srcdir/../runtimes -B $builddir/runtimes-doc \
                -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
@@ -120,10 +121,12 @@ cmake -G Ninja $srcdir/../runtimes -B $builddir/runtimes-doc \
 ninja -C $builddir/runtimes-doc \
                docs-libcxx-html \
 
-package_doxygen llvm .
-package_doxygen clang tools/clang
-package_doxygen clang-tools-extra tools/clang/tools/extra
-package_doxygen flang tools/flang
+if [ "$no_doxygen" != "yes" ]; then
+  package_doxygen llvm .
+  package_doxygen clang tools/clang
+  package_doxygen clang-tools-extra tools/clang/tools/extra
+  package_doxygen flang tools/flang
+fi
 
 html_dir=$builddir/html-export/
 

>From d229aaece1bd5a7c064fa652a49944068da37aa7 Mon Sep 17 00:00:00 2001
From: Tobias Hieta <tobias at hieta.se>
Date: Thu, 21 Sep 2023 17:00:33 +0200
Subject: [PATCH 2/3] Add no-sphinx command as well

---
 llvm/utils/release/build-docs.sh | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index aa76414171f4e99..efd63eeb53ac062 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -35,6 +35,7 @@ usage() {
   echo " -srcdir  <dir> Path to llvm source directory with CMakeLists.txt"
   echo "                (optional) default: $srcdir"
   echo " -no-doxygen    Don't build Doxygen docs"
+  echo " -no-sphinx     Don't build Spinx docs"
 }
 
 package_doxygen() {
@@ -61,6 +62,9 @@ while [ $# -gt 0 ]; do
     -no-doxygen )
       no_doxygen="yes"
       ;;
+    -no-sphinx )
+      no_sphinx="yes"
+      ;;
     * )
       echo "unknown option: $1"
       usage
@@ -93,11 +97,19 @@ if [ -n "$release" ]; then
   srcdir="./llvm-project/llvm"
 fi
 
-docs_targets="docs-clang-html docs-clang-tools-html docs-flang-html docs-lld-html docs-llvm-html docs-polly-html"
+if [ "$no_doxygen" == "yes" ] && [ "$no_sphinx" == "yes" ]; then
+  echo "You can't specify both -no-doxygen and -no-sphinx, we have nothing to build then!"
+  exit 1
+fi
+
+if [ "$no_sphinx" != "yes" ]; then
+  sphinx_targets="docs-clang-html docs-clang-tools-html docs-flang-html docs-lld-html docs-llvm-html docs-polly-html"
+  sphinx_flag=" -DLLVM_ENABLE_SPHINX=ON -DSPHINX_WARNINGS_AS_ERRORS=OFF"
+fi
 
 if [ "$no_doxygen" != "yes" ]; then
   echo "Doxygen: enabled"
-  docs_targets="$docs_target doxygen-clang doxygen-clang-tools doxygen-flang doxygen-llvm doxygen-mlir doxygen-polly"
+  doxygen_targets="$docs_target doxygen-clang doxygen-clang-tools doxygen-flang doxygen-llvm doxygen-mlir doxygen-polly"
   doxygen_flag=" -DLLVM_ENABLE_DOXYGEN=ON -DLLVM_DOXYGEN_SVG=ON"
 else
    echo "Doxygen: disabled"
@@ -106,12 +118,11 @@ fi
 cmake -G Ninja $srcdir -B $builddir \
                -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;polly;flang" \
                -DCMAKE_BUILD_TYPE=Release \
-               -DLLVM_ENABLE_SPHINX=ON \
                -DLLVM_BUILD_DOCS=ON \
-               -DSPHINX_WARNINGS_AS_ERRORS=OFF \
+               $sphinx_flag \
                $doxygen_flag
 
-ninja -C $builddir $docs_targets
+ninja -C $builddir $sphinx_targets $doxygen_targets
 
 cmake -G Ninja $srcdir/../runtimes -B $builddir/runtimes-doc \
                -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
@@ -128,6 +139,10 @@ if [ "$no_doxygen" != "yes" ]; then
   package_doxygen flang tools/flang
 fi
 
+if [ "$no_sphinx" == "yes" ]; then
+  exit 0
+fi
+
 html_dir=$builddir/html-export/
 
 for d in docs/ tools/clang/docs/ tools/lld/docs/ tools/clang/tools/extra/docs/ tools/polly/docs/ tools/flang/docs/; do

>From d8effd4d091fcabc021ef80294e898141b173cc3 Mon Sep 17 00:00:00 2001
From: Tobias Hieta <tobias at hieta.se>
Date: Fri, 22 Sep 2023 10:10:14 +0200
Subject: [PATCH 3/3] Add output for sphinx docs

---
 llvm/utils/release/build-docs.sh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/llvm/utils/release/build-docs.sh b/llvm/utils/release/build-docs.sh
index efd63eeb53ac062..1ab7561da9c0148 100755
--- a/llvm/utils/release/build-docs.sh
+++ b/llvm/utils/release/build-docs.sh
@@ -103,8 +103,11 @@ if [ "$no_doxygen" == "yes" ] && [ "$no_sphinx" == "yes" ]; then
 fi
 
 if [ "$no_sphinx" != "yes" ]; then
+  echo "Sphinx: enabled"
   sphinx_targets="docs-clang-html docs-clang-tools-html docs-flang-html docs-lld-html docs-llvm-html docs-polly-html"
   sphinx_flag=" -DLLVM_ENABLE_SPHINX=ON -DSPHINX_WARNINGS_AS_ERRORS=OFF"
+else
+  echo "Sphinx: disabled"
 fi
 
 if [ "$no_doxygen" != "yes" ]; then



More information about the llvm-commits mailing list