| ################################################################################ | |
| # 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 | |
| # same Python as the docs build in flink-python/dev/lint-python.sh | |
| export UV_PYTHON ?= 3.13 | |
| 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 -j auto -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 |