Skip to content

Commit bd0ba53

Browse files
committed
SWPROT-8953: build: Improve helper to generate docs
Extra rules added: all replace build, reconfigure Doc generation is arch independendant, to avoid package overlap it will be generated from different context (action on tag or manually?). Origin: #30 Signed-off-by: Philippe Coval <[email protected]>
1 parent bb1e928 commit bd0ba53

File tree

1 file changed

+84
-12
lines changed

1 file changed

+84
-12
lines changed

helper.mk

Lines changed: 84 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ default: help all/default
99

1010
SELF?=${CURDIR}/helper.mk
1111

12-
project?=unifysdk
12+
project?=z-wave-protocol-controller
1313
# Temporary workaround for:
1414
# https://gitlab.kitware.com/cmake/cmake/-/issues/22813#note_1620373
1515
project_test_dir?=applications
16+
project_docs_api_target?=zpc_doxygen
17+
version?=$(shell git describe --tags || echo "0")
1618

1719
# Allow overloading from env if needed
1820
# VERBOSE?=1
@@ -35,6 +37,19 @@ packages+=nlohmann-json3-dev
3537
packages+=curl wget python3-pip
3638
packages+=time
3739

40+
# For docs
41+
packages+=graphviz
42+
export cmake_options+=-DDOXYGEN_HAVE_DOT=YES
43+
44+
packages+=python3-breathe python3-myst-parser \
45+
python3-sphinx-markdown-tables python3-sphinx-rtd-theme \
46+
python3-linkify-it
47+
48+
# TODO: https://bugs.debian.org/1004136#python-sphinxcontrib.plantuml
49+
# packages+=python3-sphinxcontrib.plantuml
50+
51+
docs_dist_dir?=${build_dir}/dist
52+
3853
# Extra for components, make it optional
3954
packages+=python3-jinja2
4055
packages+=yarnpkg
@@ -75,7 +90,9 @@ help: README.md
7590
@cat $<
7691
@echo ""
7792
@echo "# Available rules at your own risk:"
78-
@grep -o '^[^ ]*:' ${SELF} | grep -v '\$$' | grep -v '^#' | grep -v '^\.'
93+
@grep -o '^[^ ]*:' ${SELF} \
94+
| grep -v '\$$' | grep -v '^#' | grep -v '^\.' \
95+
| grep -v '=' | grep -v '%'
7996
@echo ""
8097
@echo "# Environment:"
8198
@echo "# PATH=${PATH}"
@@ -101,12 +118,15 @@ setup/rust:
101118
cargo install --version 1.44.0 --locked cargo-deb
102119
@echo "$@: TODO: Support stable version from https://releases.rs/ or older"
103120

104-
setup/python:
105-
python3 --version
106-
@echo "$@: TODO: https://bugs.debian.org/1094297"
121+
setup/python/pip/%:
107122
pip3 --version || echo "warning: Please install pip"
108-
pip3 install "pybars3" \
109-
|| pip3 install --break-system-packages "pybars3"
123+
pip3 install "${@F}" \
124+
|| pip3 install --break-system-packages "${@F}"
125+
126+
setup/python: setup/python/pip/pybars3 setup/python/pip/sphinxcontrib.plantuml
127+
python3 --version
128+
@echo "$@: TODO: https://bugs.debian.org/1094297#pybars3"
129+
@echo "$@: TODO: https://bugs.debian.org/1004136#python-sphinxcontrib.plantuml"
110130

111131
# Relate-to: https://gitlab.kitware.com/cmake/cmake/-/issues/22813#note_1620373
112132
cmake_version?=3.29.3
@@ -127,7 +147,29 @@ setup/cmake:
127147

128148
setup-cmake: setup/cmake
129149

130-
setup/debian/bookworm: setup/debian setup/rust setup/python
150+
151+
plantuml_url?=https://github.com/plantuml/plantuml/releases/download/v1.2022.0/plantuml-1.2022.0.jar
152+
plantuml_filename?=$(shell basename -- "${plantuml_url}")
153+
plantuml_sha256?=f1070c42b20e6a38015e52c10821a9db13bedca6b5d5bc6a6192fcab6e612691
154+
plantuml_dir?=/usr/local/share/plantuml
155+
PLANTUML_JAR_PATH?=${plantuml_dir}/${plantuml_filename}
156+
export PLANTUML_JAR_PATH
157+
158+
${PLANTUML_JAR_PATH}:
159+
@echo "# $@: TODO: Please help on:"
160+
@echo "# $@: https://bugs.debian.org/1004135#2025"
161+
curl -L ${plantuml_url} -O
162+
sha256sum ${plantuml_filename} | grep "${plantuml_sha256}"
163+
${sudo} install -d ${plantuml_dir}
164+
${sudo} install ${plantuml_filename} ${plantuml_dir}/
165+
rm -v ${plantuml_filename}
166+
@echo "# %@: Please adapt env to:"
167+
@echo "# export PLANTUML_JAR_PATH=${plantuml_dir}/${plantuml_filename}"
168+
169+
setup/plantuml: ${PLANTUML_JAR_PATH}
170+
file -E $<
171+
172+
setup/debian/bookworm: setup/debian setup/rust setup/python setup/plantuml
131173
date -u
132174

133175
setup: setup/debian/${debian_codename}
@@ -153,16 +195,22 @@ git/prepare: git/modules/prepare
153195
configure: ${build_dir}/CMakeCache.txt
154196
file -E $<
155197

198+
configure/clean:
199+
rm -rf ${build_dir}/CMake*
200+
201+
reconfigure: configure/clean configure
202+
@date -u
203+
156204
${build_dir}/CMakeCache.txt: CMakeLists.txt
157205
cmake ${cmake_options}
158206

159-
build: ${build_dir}/CMakeCache.txt
207+
all: ${build_dir}/CMakeCache.txt
160208
cmake --build ${<D} \
161209
|| cat ${build_dir}/CMakeFiles/CMakeOutput.log
162210
cmake --build ${<D}
163-
.PHONY: build
211+
.PHONY: all
164212

165-
${build_dir}/%: build
213+
${build_dir}/%: all
166214
file -E "$@"
167215

168216
test: ${build_dir}
@@ -188,7 +236,7 @@ prepare: git/prepare
188236
git --version
189237
cmake --version
190238

191-
all/default: configure prepare build test dist
239+
all/default: configure prepare all test dist
192240
@date -u
193241

194242

@@ -243,3 +291,27 @@ docker/%: Dockerfile
243291

244292
test/docker: distclean prepare/docker docker/help docker/test
245293
@echo "# ${project}: log: $@: done: $^"
294+
295+
docs: ./scripts/build/build_documentation.py doc ${PLANTUML_JAR_PATH} configure
296+
@echo "# export PLANTUML_JAR_PATH=${plantuml_dir}/${plantuml_filename}"
297+
@echo "$@: PLANTUML_JAR_PATH=${PLANTUML_JAR_PATH}"
298+
$< --output-dir $@
299+
touch $@/.nojekyll
300+
301+
zpc/docs/api: docs
302+
cmake --build build --target zpc_doxygen
303+
install -d docs/doxygen_zpc
304+
cp -rfa build/zpc_doxygen_zpc/html/* docs/doxygen_zpc/
305+
306+
docs/api: zpc/docs/api
307+
308+
docs/dist: ${docs_dist_dir}/${project}-docs-${version}.zip
309+
file -E "$<"
310+
@du -hsc "$<"
311+
312+
${docs_dist_dir}/${project}-docs-${version}.zip: docs docs/api
313+
ln -fs docs "${project}-docs-${version}"
314+
install -d ${@D}
315+
zip -r9 "$@" "${project}-docs-${version}/" \
316+
--exclude "*/_sources/*"
317+
rm "${project}-docs-${version}"

0 commit comments

Comments
 (0)