Files
OpenROAD/docs/Makefile
Matt Liberty bee7f1d30f Various places: remove mpl2 vestiges
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
2025-03-17 03:47:13 +00:00

165 lines
5.0 KiB
Makefile

# Makefile is divided into two parts:
# Pandoc compilation - Manpages
# Sphinx compilation - ReadTheDocs
# _____ _ _ _____ ____ _____
# | __ \ /\ | \ | | __ \ / __ \ / ____|
# | |__) / \ | \| | | | | | | | |
# | ___/ /\ \ | . ` | | | | | | | |
# | | / ____ \| |\ | |__| | |__| | |____
# |_| /_/ \_\_| \_|_____/ \____/ \_____|
# Define variables
PANDOC = pandoc
NROFF = nroff
SRC_DIR = md
MAN_ROOT_DIR = man
HTML_ROOT_DIR = html
CAT_ROOT_DIR = cat
MAN1 = man1
MAN2 = man2
MAN3 = man3
# Exclude these set of keywords
EXCLUDE_KEYWORDS = ant cts dft dpl drt fin gpl grt gui ifp mpl \
odb pad par pdn ppl psm rcx rmp rsz sta \
stt tap upf utl
EXCLUDE_FILES := $(addsuffix .md,$(EXCLUDE_KEYWORDS))
MAN1_DIR = $(MAN_ROOT_DIR)/$(MAN1)
SRC1_DIR = $(SRC_DIR)/$(MAN1)
MAN1_FILES = $(wildcard $(SRC1_DIR)/*.md)
MAN1_PAGES = $(patsubst $(SRC1_DIR)/%.md,$(MAN1_DIR)/%.1,$(MAN1_FILES))
HTML1_DIR = $(HTML_ROOT_DIR)/html1
HTML1_PAGES = $(patsubst $(SRC1_DIR)/%.md,$(HTML1_DIR)/%.html,$(MAN1_FILES))
CAT1_DIR = $(CAT_ROOT_DIR)/cat1
CAT1_PAGES = $(patsubst $(SRC1_DIR)/%.md,$(CAT1_DIR)/%.1,$(MAN1_FILES))
MAN2_DIR = $(MAN_ROOT_DIR)/$(MAN2)
SRC2_DIR = $(SRC_DIR)/$(MAN2)
MAN2_FILES = $(wildcard $(SRC2_DIR)/*.md)
MAN2_FILES := $(filter-out $(foreach keyword, $(EXCLUDE_FILES), %$(keyword)), $(MAN2_FILES))
MAN2_PAGES = $(patsubst $(SRC2_DIR)/%.md,$(MAN2_DIR)/%.2,$(MAN2_FILES))
HTML2_DIR = $(HTML_ROOT_DIR)/html2
HTML2_PAGES = $(patsubst $(SRC2_DIR)/%.md,$(HTML2_DIR)/%.html,$(MAN2_FILES))
CAT2_DIR = $(CAT_ROOT_DIR)/cat2
CAT2_PAGES = $(patsubst $(SRC2_DIR)/%.md,$(CAT2_DIR)/%.2,$(MAN2_FILES))
MAN3_DIR = $(MAN_ROOT_DIR)/$(MAN3)
SRC3_DIR = $(SRC_DIR)/$(MAN3)
MAN3_FILES = $(wildcard $(SRC3_DIR)/*.md)
MAN3_PAGES = $(patsubst $(SRC3_DIR)/%.md,$(MAN3_DIR)/%.3,$(MAN3_FILES))
HTML3_DIR = $(HTML_ROOT_DIR)/html3
HTML3_PAGES = $(patsubst $(SRC3_DIR)/%.md,$(HTML3_DIR)/%.html,$(MAN3_FILES))
CAT3_DIR = $(CAT_ROOT_DIR)/cat3
CAT3_PAGES = $(patsubst $(SRC3_DIR)/%.md,$(CAT3_DIR)/%.3,$(MAN3_FILES))
# Default target
all: doc web cat
# Target to do symlinks and pandoc-compatible conversion
preprocess:
./src/scripts/link_readmes.sh && python3 src/scripts/md_roff_compat.py
# Target to generate all man pages
doc: $(MAN1_PAGES) $(MAN2_PAGES) $(MAN3_PAGES)
# Target to generate all web pages (changed name to disambiguate from sphinx)
web: $(HTML1_PAGES) $(HTML2_PAGES) $(HTML3_PAGES)
# Target to generate all cat pages
cat: $(CAT1_PAGES) $(CAT2_PAGES) $(CAT3_PAGES)
@echo $(CAT1_PAGES)
# Rule to create the man directory
$(MAN1_DIR):
mkdir -p $(MAN1_DIR)
$(MAN2_DIR):
mkdir -p $(MAN2_DIR)
$(MAN3_DIR):
mkdir -p $(MAN3_DIR)
$(HTML1_DIR):
mkdir -p $(HTML1_DIR)
$(HTML2_DIR):
mkdir -p $(HTML2_DIR)
$(HTML3_DIR):
mkdir -p $(HTML3_DIR)
$(CAT1_DIR):
mkdir -p $(CAT1_DIR)
$(CAT2_DIR):
mkdir -p $(CAT2_DIR)
$(CAT3_DIR):
mkdir -p $(CAT3_DIR)
# Rule to generate a roff file from a corresponding Markdown file
$(MAN1_DIR)/%.1: $(SRC1_DIR)/%.md | $(MAN1_DIR)
$(PANDOC) -s -t man $< -o $@ --quiet
$(MAN2_DIR)/%.2: $(SRC2_DIR)/%.md | $(MAN2_DIR)
$(PANDOC) -s -t man $< -o $@ --quiet
$(MAN3_DIR)/%.3: $(SRC3_DIR)/%.md | $(MAN3_DIR)
$(PANDOC) -s -t man $< -o $@ --quiet
# Rule to generate a html file from a corresponding roff file
$(HTML1_DIR)/%.html: $(MAN1_DIR)/%.1 | $(HTML1_DIR)
$(PANDOC) -s -o html $< -o $@ --quiet
$(HTML2_DIR)/%.html: $(MAN2_DIR)/%.2 | $(HTML2_DIR)
$(PANDOC) -s -o html $< -o $@ --quiet
$(HTML3_DIR)/%.html: $(MAN3_DIR)/%.3 | $(HTML3_DIR)
$(PANDOC) -s -o html $< -o $@ --quiet
# Rule to generate a cat file from a corresponding roff file
$(CAT1_DIR)/%.md: $(MAN1_DIR)/%.1 | $(CAT1_DIR)
nroff -man $< | col -b > $@
$(CAT2_DIR)/%.md: $(MAN2_DIR)/%.2 | $(CAT2_DIR)
nroff -man $< | col -b > $@
$(CAT3_DIR)/%.md: $(MAN3_DIR)/%.3 | $(CAT3_DIR)
nroff -man $< | col -b > $@
#$(PANDOC) -s -o markdown $< -o $@
#sed -i 's/\\\[/\[/g; s/\\]/\]/g; s/\\_/_/g' $@
$(CAT1_DIR)/%.1: $(CAT1_DIR)/%.md
mv $< $@
$(CAT2_DIR)/%.2: $(CAT2_DIR)/%.md
mv $< $@
$(CAT3_DIR)/%.3: $(CAT3_DIR)/%.md
mv $< $@
# Phony targets
.PHONY: all
# _____ _____ _ _ _____ _ ___ __
# / ____| __ \| | | |_ _| \ | \ \ / /
# | (___ | |__) | |__| | | | | \| |\ V /
# \___ \| ___/| __ | | | | . ` | > <
# ____) | | | | | |_| |_| |\ |/ . \
# |_____/|_| |_| |_|_____|_| \_/_/ \_\
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR =
BUILDDIR = build
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
html: Makefile
@$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
rm -f main
./revert-links.py
checklinks:
$(SPHINXBUILD) -b linkcheck "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) || echo
@echo
@echo "Check finished. Report is in $(BUILDDIR)."
rm -f main
./revert-links.py
# Clean target to remove all man pages/Sphinx docs
clean:
rm -rf $(MAN1_DIR) $(MAN2_DIR) $(MAN3_DIR)
rm -rf $(HTML1_DIR) $(HTML2_DIR) $(HTML3_DIR)
rm -rf $(CAT1_DIR) $(CAT2_DIR) $(CAT3_DIR)
rm -rf ./md/man2/*md
rm -rf ./md/man3/*md
rm -rf $(BUILDDIR)