
Hawkmoth is a Sphinx-extension that uses Clang to directly parse C code for automatic documentation of C/C++ code, similar to what Doxygen does. However, Doxygen is rather clunky to integrate into the build process, so let's start switching over to Hawkmoth instead. As Sphinx does not have syntax for describing parameter direction, add an rst_prolog with rst replacements for them. Reviewed-by: Jani Nikula <jani@nikula.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24507>
69 lines
1.7 KiB
YAML
69 lines
1.7 KiB
YAML
.docs-base:
|
|
variables:
|
|
BUILDER: html
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
artifacts:
|
|
expose_as: 'Documentation preview'
|
|
paths:
|
|
- public/
|
|
script:
|
|
- apk --no-cache add graphviz doxygen py3-clang clang-dev musl-dev linux-headers
|
|
- pip3 install sphinx===5.1.1 breathe===4.34.0 mako===1.2.3 hawkmoth===0.16.0
|
|
- docs/doxygen-wrapper.py --out-dir=docs/doxygen_xml
|
|
- sphinx-build -W -b $BUILDER docs public
|
|
|
|
pages:
|
|
extends: .docs-base
|
|
stage: deploy
|
|
needs: []
|
|
rules:
|
|
- !reference [.no_scheduled_pipelines-rules, rules]
|
|
- if: '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $CI_COMMIT_BRANCH'
|
|
changes: &docs-or-ci
|
|
- docs/**/*
|
|
- .gitlab-ci.yml
|
|
# Paths from doxygen-wrapper.py
|
|
- src/compiler/nir/nir.h
|
|
- src/intel/isl/**/*
|
|
- src/vulkan/runtime/**/*
|
|
when: always
|
|
# Other cases default to never
|
|
|
|
test-docs:
|
|
extends: .docs-base
|
|
# Cancel job if a newer commit is pushed to the same branch
|
|
interruptible: true
|
|
stage: deploy
|
|
needs: []
|
|
rules:
|
|
- !reference [.no_scheduled_pipelines-rules, rules]
|
|
- if: '$CI_COMMIT_BRANCH && $CI_PROJECT_NAMESPACE != "mesa"'
|
|
changes: *docs-or-ci
|
|
when: manual
|
|
# Other cases default to never
|
|
|
|
test-docs-mr:
|
|
extends:
|
|
- test-docs
|
|
needs:
|
|
- sanity
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
changes: *docs-or-ci
|
|
when: on_success
|
|
# Other cases default to never
|
|
|
|
linkcheck-docs:
|
|
extends: .docs-base
|
|
# Cancel job if a newer commit is pushed to the same branch
|
|
interruptible: true
|
|
stage: deploy
|
|
needs: []
|
|
rules:
|
|
- !reference [.scheduled_pipeline-rules, rules]
|
|
allow_failure: true
|
|
variables:
|
|
BUILDER: linkcheck
|
|
|