# Copyright 2020 SkyWater PDK Authors # # Licensed 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 # # https://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. # # SPDX-License-Identifier: Apache-2.0 # The top directory where environment will be created. DOCS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) TOP_DIR := $(realpath $(DOCS_DIR)/..) # A pip `requirements.txt` file. # https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format REQUIREMENTS_FILE := requirements.txt # A conda `environment.yml` file. # https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html ENVIRONMENT_FILE := environment.yml $(TOP_DIR)/third_party/make-env/conda.mk: $(TOP_DIR)/.gitmodules cd $(TOP_DIR); git submodule update --init third_party/make-env -include $(TOP_DIR)/third_party/make-env/conda.mk 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 = $(DOCS_DIR) BUILDDIR = $(DOCS_DIR)/_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) @make env @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) clean:: clean-docs clean-docs: rm -rf _build