| # 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 |