107 lines
3.5 KiB
Makefile
107 lines
3.5 KiB
Makefile
# 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
|