blob: 5f4615976023e7019b145e14051fc10f2167e8fc [file] [log] [blame]
################################################################################
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
################################################################################
# Determine how to run sphinx-build:
# 1. If SPHINXBUILD is set explicitly, use it as-is.
# 2. If SPHINXPYTHON is set explicitly, use '$(SPHINXPYTHON) -m sphinx'.
# 3. If uv is on PATH, use 'uv run sphinx-build' (deps from pyproject.toml).
# 4. Otherwise, fall back to bare 'sphinx-build'.
ifndef SPHINXBUILD
ifndef SPHINXPYTHON
ifneq ($(shell command -v uv 2>/dev/null),)
SPHINXBUILD = uv run sphinx-build
SPHINXINTL = uv run sphinx-intl
PYTHON = uv run python
else
SPHINXBUILD = sphinx-build
SPHINXINTL = sphinx-intl
PYTHON = python
endif
else
SPHINXBUILD = $(SPHINXPYTHON) -m sphinx
SPHINXINTL = $(SPHINXPYTHON) -m sphinx_intl
PYTHON = $(SPHINXPYTHON)
endif
else
SPHINXINTL ?= sphinx-intl
PYTHON ?= python
endif
# The project depends on py4j, so py4j-*-src.zip should be set in PYTHONPATH.
py4j_lib = $(shell echo ../lib/py4j-*-src.zip)
export PYTHONPATH = $(realpath $(py4j_lib))
# You can set these variables from the command line.
SPHINXOPTS ?=
PAPER ?=
SOURCEDIR ?= .
BUILDDIR ?= _build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -j auto -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html html-zh zh dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest gettext serve
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " serve to serve the HTML files locally at http://localhost:8080"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
-rm -rf _build/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html
@echo
@echo "Build finished. The HTML pages are in _build/html."
html-zh: html zh
zh: gettext
$(SPHINXINTL) update -p _build/gettext -l zh
$(SPHINXBUILD) -b html -D language=zh -d _build/doctrees-zh $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . _build/html/zh
@echo
@echo "Build finished. The Chinese HTML pages are in _build/html/zh."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml
@echo
@echo "Build finished. The HTML pages are in _build/dirhtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in _build/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in _build/qthelp, like this:"
@echo "# qcollectiongenerator _build/qthelp/pyflinkdoc.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile _build/qthelp/pyflinkdoc.qhc"
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex
@echo
@echo "Build finished; the LaTeX files are in _build/latex."
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
"run these through (pdf)latex."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes
@echo
@echo "The overview file is in _build/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in _build/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in _build/doctest/output.txt."
gettext:
$(SPHINXBUILD) -b gettext -j auto -d _build/doctrees-gettext $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . _build/gettext
@echo
@echo "Build finished. The message catalogs are in _build/gettext."
pdf: latex
cd _build/latex && make all-pdf
pdf-html: pdf html
cp _build/latex/pyflinkdoc.pdf _build/html
serve:
@echo "Serving docs at http://localhost:8080"
$(PYTHON) -m http.server -d _build/html 8080