blob: 0ae2243883e0d2dcbb367bfe22eb8442a7e12da7 [file] [log] [blame]
Joey Armstrong36592e32022-11-28 09:00:28 -05001# -*- makefile -*-
2# -----------------------------------------------------------------------
Joey Armstrong8d62cd92022-12-22 13:53:48 -05003# Copyright 2022-2023 Open Networking Foundation (ONF) and the ONF Contributors
Joey Armstrong36592e32022-11-28 09:00:28 -05004#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16# -----------------------------------------------------------------------
Zack Williams071eda22019-05-15 18:19:51 -070017# Makefile for Sphinx documentation
18
Joey Armstrong36592e32022-11-28 09:00:28 -050019.DEFAULT_GOAL := help
20
21TOP ?= .
22MAKEDIR ?= $(TOP)/makefiles
23
24$(if $(VERBOSE),$(eval export VERBOSE=$(VERBOSE))) # visible to include(s)
25
26##--------------------##
27##---] INCLUDES [---##
28##--------------------##
Joey Armstrong4de98b72023-02-09 14:51:38 -050029-include config.mk
30include $(MAKEDIR)/include.mk
Zack Williams071eda22019-05-15 18:19:51 -070031
32# You can set these variables from the command line.
33SPHINXOPTS ?=
34SPHINXBUILD ?= sphinx-build
35SOURCEDIR ?= .
36BUILDDIR ?= _build
37
Zack Williams88df4742019-12-20 08:24:47 -070038# Other repos with documentation to include.
39# edit the `git_refs` file with the commit/tag/branch that you want to use
Andrea Campanellac18d1182021-09-10 12:01:38 +020040OTHER_REPO_DOCS ?= bbsim cord-tester ofagent-go openolt voltctl voltha-openolt-adapter voltha-openonu-adapter-go voltha-protos voltha-system-tests device-management-interface voltha-helm-charts
Zack Williams88df4742019-12-20 08:24:47 -070041
Joey Armstrong36592e32022-11-28 09:00:28 -050042ifdef NO_OTHER_REPO_DOCS
43 # Inhibit pulling in external repos.
44 # python 3.10+ patching not supported by all repos yet.
45 OTHER_REPO_DOCS := $(null)
46endif
47
Zack Williams16042b62020-03-29 22:03:16 -070048# Static docs, built by other means (usually robot framework)
49STATIC_DOCS := _static/voltha-system-tests _static/cord-tester
50
Joey Armstrong4de98b72023-02-09 14:51:38 -050051# Why is existing source Makefile PHONY (?)
Zack Williams88df4742019-12-20 08:24:47 -070052.PHONY: help test lint reload Makefile prep
Zack Williams071eda22019-05-15 18:19:51 -070053
Joey Armstrong4de98b72023-02-09 14:51:38 -050054## -----------------------------------------------------------------------
55## Intent: Real time viewing, dynamically generate and reload document
56## changes for web browser viewing.
57## Usage:
58## make reload
59## -----------------------------------------------------------------------
60reload: $(venv-activate-script)
61 $(activate) && sphinx-reload $(SOURCEDIR)
Zack Williams071eda22019-05-15 18:19:51 -070062
Joey Armstrong8d62cd92022-12-22 13:53:48 -050063## -----------------------------------------------------------------------
64## Intent: lint and link verification. linkcheck is part of sphinx
65## -----------------------------------------------------------------------
Zack Williams071eda22019-05-15 18:19:51 -070066test: lint linkcheck
Joey Armstronga8bc8e12022-12-04 07:06:59 -050067
Joey Armstrong8d62cd92022-12-22 13:53:48 -050068## -----------------------------------------------------------------------
69## Intent: Exercise all generation targets
Joey Armstrong4de98b72023-02-09 14:51:38 -050070## Bridge: library workaround to support legacy targets
Joey Armstrong8d62cd92022-12-22 13:53:48 -050071## -----------------------------------------------------------------------
72test-all-targets += html
73test-all-targets += coverage
74# test-all-targets += changes
75# test-all-targets += info
76test-all-targets += man
77test-all-targe4ts += text
78# test-all-targets += latex
79
Joey Armstrong8d62cd92022-12-22 13:53:48 -050080test-all : test
81 $(MAKE) $(test-all-targets)
82
Joey Armstrong36592e32022-11-28 09:00:28 -050083# doctest
84# coverage
85# linkcheck
Zack Williams071eda22019-05-15 18:19:51 -070086
Zack Williams071eda22019-05-15 18:19:51 -070087# currently not enabled, should be added to lint target
88LINT_STYLE ?= mdl_strict.rb
89md-lint: | $(OTHER_REPO_DOCS)
90 @echo "markdownlint(mdl) version: `mdl --version`"
91 @echo "style config:"
92 @echo "---"
93 @cat $(LINT_STYLE)
94 @echo "---"
Joey Armstrong4de98b72023-02-09 14:51:38 -050095 mdl -s $(LINT_STYLE) `find -L $(SOURCEDIR) ! -path "./_$(venv-activate-script)/*" ! -path "./_build/*" ! -path "./repos/*" ! -path "*vendor*" -name "*.md"`
Zack Williams071eda22019-05-15 18:19:51 -070096
97# clean up
98clean:
Joey Armstrong36592e32022-11-28 09:00:28 -050099 $(RM) -r $(BUILDDIR) $(OTHER_REPO_DOCS) $(STATIC_DOCS)
Zack Williams071eda22019-05-15 18:19:51 -0700100
Joey Armstrong4de98b72023-02-09 14:51:38 -0500101clean-all sterile :: clean
102 $(RM) -r $(venv-activate-script) repos
Zack Williams071eda22019-05-15 18:19:51 -0700103
Zack Williams071eda22019-05-15 18:19:51 -0700104# checkout the repos inside repos/ dir
105repos:
106 mkdir repos
107
108# build directory paths in repos/* to perform 'git clone <repo>' into
109CHECKOUT_REPOS = $(foreach repo,$(OTHER_REPO_DOCS),repos/$(repo))
110
111# Host holding the git server
112REPO_HOST ?= https://gerrit.opencord.org
113
114# For QA patchset validation - set SKIP_CHECKOUT to the repo name and
115# pre-populate it under repos/ with the specific commit to being validated
116SKIP_CHECKOUT ?=
117
Zack Williams88df4742019-12-20 08:24:47 -0700118# clone (only if doesn't exist)
Zack Williams071eda22019-05-15 18:19:51 -0700119$(CHECKOUT_REPOS): | repos
Zack Williams071eda22019-05-15 18:19:51 -0700120 if [ ! -d '$@' ] ;\
121 then git clone $(REPO_HOST)/$(@F) $@ ;\
Zack Williams071eda22019-05-15 18:19:51 -0700122 fi
123
Joey Armstrong4de98b72023-02-09 14:51:38 -0500124## -----------------------------------------------------------------------
125## Intent: checkout correct ref if not under test, then copy
126## subdirectories into main docs dir
127## -----------------------------------------------------------------------
Zack Williams071eda22019-05-15 18:19:51 -0700128$(OTHER_REPO_DOCS): | $(CHECKOUT_REPOS)
Zack Williams88df4742019-12-20 08:24:47 -0700129 if [ "$(SKIP_CHECKOUT)" != "$@" ] ;\
130 then GIT_REF=`grep '^$@ ' git_refs | awk '{print $$3}'` ;\
Zack Williams6c1703f2019-12-20 15:31:58 -0700131 cd "repos/$@" && git checkout $$GIT_REF ;\
Zack Williams88df4742019-12-20 08:24:47 -0700132 fi
Zack Williams17e34022019-12-20 13:51:54 -0700133 GIT_SUBDIR=`grep '^$@ ' git_refs | awk '{print $$2}'` ;\
Zack Williams33085522020-02-28 11:41:01 -0700134 cp -r repos/$(@)$$GIT_SUBDIR $@ ;\
Zack Williams071eda22019-05-15 18:19:51 -0700135
Andrea Campanella92bd59b2020-01-30 17:26:32 +0100136# Build Robot documentation in voltha-system-tests and copy it into _static.
137_static/voltha-system-tests: | $(OTHER_REPO_DOCS)
138 make -C voltha-system-tests gendocs
139 mkdir -p $@
140 cp -r voltha-system-tests/gendocs/* $@
141
Andy Bavier39d67b12020-02-27 16:08:52 -0700142# Build Robot documentation in cord-tester and copy it into _static.
143_static/cord-tester: | $(OTHER_REPO_DOCS)
144 make -C cord-tester gendocs
145 mkdir -p $@
146 cp -r cord-tester/gendocs/* $@
147
Joey Armstrong4de98b72023-02-09 14:51:38 -0500148## -----------------------------------------------------------------------
149## Intent: generate a list of git checksums suitable for updating git_refs
150## -----------------------------------------------------------------------
Zack Williams071eda22019-05-15 18:19:51 -0700151freeze: repos
152 @for repo in $(OTHER_REPO_DOCS) ; do \
153 GIT_SUBDIR=`grep "^$$repo " git_refs | awk '{print $$2}'` ;\
Zack Williams6c1703f2019-12-20 15:31:58 -0700154 cd "repos/$$repo" > /dev/null ;\
Zack Williams071eda22019-05-15 18:19:51 -0700155 HEAD_SHA=`git rev-parse HEAD` ;\
156 printf "%-24s %-8s %-40s\n" $$repo $$GIT_SUBDIR $$HEAD_SHA ;\
Zack Williams6c1703f2019-12-20 15:31:58 -0700157 cd ../.. ;\
Zack Williams071eda22019-05-15 18:19:51 -0700158 done
159
Joey Armstrong4de98b72023-02-09 14:51:38 -0500160## -----------------------------------------------------------------------
161## Intent: build multiple versions
162## -----------------------------------------------------------------------
163multiversion: $(venv-activate-script) Makefile | prep $(OTHER_REPO_DOCS)
164 $(activate)\
165 && sphinx-multiversion "$(SOURCEDIR)" "$(BUILDDIR)/multiversion" $(SPHINXOPTS)
Zack Williams16042b62020-03-29 22:03:16 -0700166 cp "$(SOURCEDIR)/_templates/meta_refresh.html" "$(BUILDDIR)/multiversion/index.html"
Zack Williams88df4742019-12-20 08:24:47 -0700167
Joey Armstrong4de98b72023-02-09 14:51:38 -0500168## -----------------------------------------------------------------------
169## Intent: used in sphinx-multiversion to properly link
170## -----------------------------------------------------------------------
Zack Williams16042b62020-03-29 22:03:16 -0700171prep: | $(OTHER_REPO_DOCS) $(STATIC_DOCS)
Andy Bavier5dee6ae2020-01-29 16:03:40 -0700172
Joey Armstrong4de98b72023-02-09 14:51:38 -0500173## -----------------------------------------------------------------------
174## Intent: Forward sphinx supported targets to sphinxbuild.
175## Bridge: legacy makefile wildcard rule forwarded unknown targets to sphinx.
176## library makefiles do more so transfer control only when needed.
177## -----------------------------------------------------------------------
Joey Armstrong1a9b7d12022-12-19 14:13:07 -0500178include $(MAKEDIR)/voltha/docs-catchall-targets.mk
Joey Armstrong4de98b72023-02-09 14:51:38 -0500179$(voltha-docs-catchall): $(venv-activate-script) Makefile | $(OTHER_REPO_DOCS) $(STATIC_DOCS)
Joey Armstrong36592e32022-11-28 09:00:28 -0500180 @echo " ** CATCHALL: $@"
Joey Armstrong4de98b72023-02-09 14:51:38 -0500181 $(activate)\
182 && $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
Joey Armstrong36592e32022-11-28 09:00:28 -0500183
Joey Armstronga8bc8e12022-12-04 07:06:59 -0500184## -----------------------------------------------------------------------
185## -----------------------------------------------------------------------
186BROWSER ?= $(error Usage: $(MAKE) $@ BROWSER=)
187view-html:
188 "$(BROWSER)" _build/html/index.html
189
190## -----------------------------------------------------------------------
Joey Armstrong4de98b72023-02-09 14:51:38 -0500191## Intent: Display makefile target help
192## -----------------------------------------------------------------------
193help :: $(venv-activate-script)
194 @ echo
195 $(HIDE)$(activate) \
196 && $(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
197
198## -----------------------------------------------------------------------
199## Intent: Display make hel footer
Joey Armstronga8bc8e12022-12-04 07:06:59 -0500200## -----------------------------------------------------------------------
Joey Armstrong36592e32022-11-28 09:00:28 -0500201include $(MAKEDIR)/help/trailer.mk
202
203# [EOF]