| # Minimal makefile for Sphinx documentation | |
| DOCSDIR := $(dir $(lastword $(MAKEFILE_LIST))) | |
| TOPDIR := $(realpath $(DOCSDIR)/..) | |
| ifndef NO_CONDA | |
| include $(TOPDIR)/scripts/make/conda.mk | |
| endif | |
| ifdef NO_CONDA | |
| IN_CONDA_ENV := | |
| CONDA_ENV_PYTHON := | |
| endif | |
| SHELL = /bin/bash | |
| EXP_OPEN := $$(( | |
| EXP_CLOSE := )) | |
| CPU_CORES := $(shell nproc) | |
| CPU_CORES_2 := $(shell echo $(EXP_OPEN) $(CPU_CORES) * 2 $(EXP_CLOSE)) | |
| SPHINXOPTS = -j $(CPU_CORES_2) | |
| SPHINXBUILD = $(IN_CONDA_ENV) sphinx-build | |
| SPHINXAUTOBUILD = $(IN_CONDA_ENV) sphinx-autobuild | |
| SPHINXPROJ = SkyWaterPDK | |
| SOURCEDIR = $(DOCSDIR) | |
| BUILDDIR = $(DOCSDIR)/_build | |
| # Put it first so that "make" without argument is like "make help". | |
| help: | $(CONDA_ENV_PYTHON) | |
| @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | |
| # Vim makes a '4913' file for file system checking. Seriously. | |
| livehtml: | $(CONDA_ENV_PYTHON) | |
| @$(SPHINXAUTOBUILD) \ | |
| -b html \ | |
| --delay 5 \ | |
| \ | |
| --ignore \*.swp \ | |
| --ignore \*~ \ | |
| --ignore env \ | |
| --ignore _build \ | |
| --ignore .git \ | |
| --ignore */4913 \ | |
| \ | |
| $(SPHINXOPTS) \ | |
| "$(SOURCEDIR)" \ | |
| "$(BUILDDIR)/html" | |
| .PHONY: help livehtml Makefile | |
| # Generate the rules/periphery-rules.rst from CSV files in rules/periphery/ | |
| $(wildcard rules/periphery/*): | $(CONDA_ENV_PYTHON) | |
| true | |
| rules/periphery-rules.rst: $(wildcard rules/periphery/*) | $(CONDA_ENV_PYTHON) | |
| $(IN_CONDA_ENV) cd rules/periphery; ./periphery-split-csv.py > /dev/null | |
| rules/device-details.rst: rules/device-details.py $(wildcard rules/device-details/*/index.rst) | $(CONDA_ENV_PYTHON) | |
| $(IN_CONDA_ENV) cd rules; ./device-details.py > $(abspath $@) | |
| # Various automated fixups that can be run | |
| fixup: | |
| # Make sure it is SkyWater | |
| find ../ -type f -name \*.rst -exec sed -i 's/Skywater/SkyWater/gi' \{\} \+ | |
| # Strip trailing space | |
| find ../ -type f -name \*.rst -exec sed -i 's/ \+$$//' \{\} \+ | |
| # Make sure all library names have the :lib: role. | |
| find ../ -type f -name \*.rst -exec sed -i -e'/:name:.*/!s/\(:lib:\)\?`\?\(sky130_[a-z0-9]\+_[a-z0-9]\+\(_[a-z0-9]\+\)\?\)`\?\(\s\|$$\)/:lib:`\2`\4/g' \{\} \+ | |
| .PHONY: fixup | |
| echo: | $(CONDA_ENV_PYTHON) | |
| @echo '$(SPHINXBUILD) -M XXXX "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)' | |
| # Catch-all target: route all unknown targets to Sphinx using the new | |
| # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). | |
| .DEFAULT: | $(CONDA_ENV_PYTHON) | |
| @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | |
| clean: clean-docs | |
| clean-docs: | |
| rm -rf _build |