From 5567931c8096d79c0174bbb5f52d45091fc100b9 Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 18 Dec 2023 17:24:39 +0100 Subject: [PATCH 01/16] fix(graphviz): Generate GRAPHVIZ_DEST_DIR if missing --- graphviz.mk | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/graphviz.mk b/graphviz.mk index 8187e0e..6361b81 100644 --- a/graphviz.mk +++ b/graphviz.mk @@ -30,10 +30,13 @@ GRAPHVIZ_APT_PACKAGES := graphviz ## Rules ## -$(GRAPHVIZ_DEST_DIR)/%.dot.svg: $(GRAPHVIZ_SRC_DIR)/%.dot +$(GRAPHVIZ_DEST_DIR): + mkdir -p $(GRAPHVIZ_DEST_DIR) + +$(GRAPHVIZ_DEST_DIR)/%.dot.svg: $(GRAPHVIZ_SRC_DIR)/%.dot | $(GRAPHVIZ_DEST_DIR) dot -Tsvg $< > $@ -$(GRAPHVIZ_DEST_DIR)/%.circo.svg: $(GRAPHVIZ_SRC_DIR)/%.circo +$(GRAPHVIZ_DEST_DIR)/%.circo.svg: $(GRAPHVIZ_SRC_DIR)/%.circo | $(GRAPHVIZ_DEST_DIR) circo -Tsvg $< > $@ $(GRAPHVIZ_SVG): | $(GRAPHVIZ_DEST_DIR) From 5c519903f0f6e60910acfda2697d6f90f6f28172 Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 18 Dec 2023 17:25:07 +0100 Subject: [PATCH 02/16] fix(plantuml): improve support & fill missing rules --- plantuml.mk | 50 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/plantuml.mk b/plantuml.mk index 1393d0a..b349f47 100644 --- a/plantuml.mk +++ b/plantuml.mk @@ -5,30 +5,62 @@ ## ## External variables (API) ## -PLANTUML_SRC_DIR= -PLANTUML_DEST_DIR= +PLANTUML_SRC_DIR ?= +PLANTUML_DEST_DIR ?= ## ## Internal variables ## ## Find .uml graphs -PLANTUML_UML=$(shell find $(PLANTUML_SRC_DIR) \( -name '*.uml' ! -name '_*' \)) -PLANTUML_UML_SVG=$(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.svg,$(PLANTUML_UML)) +PLANTUML_UML := $(shell find $(PLANTUML_SRC_DIR) \( -name '*.uml' ! -name '_*' \)) +PLANTUML_UML_SVG := $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.svg,$(PLANTUML_UML)) +PLANTUML_UML_PDF := $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.pdf,$(PLANTUML_UML)) ## ## Rules ## -$(PLANTUML_DEST_DIR)/%.uml.svg: $(PLANTUML_SRC_DIR)/%.uml - plantuml -pipe -tsvg < $< > $@ +$(PLANTUML_DEST_DIR): + mkdir -p $(PLANTUML_DEST_DIR) -plantuml-uml-svg: +$(PLANTUML_DEST_DIR)/%.uml.svg: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) + plantuml -pipe -tsvg < $< > $@ -plantuml-svg: +$(PLANTUML_DEST_DIR)/%.uml.pdf: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) + plantuml -pipe -tpdf < $< > $@ +.PHONY: plantuml-uml-svg +plantuml-uml-svg: $(PLANTUML_UML_SVG) + +.PHONY: plantuml-uml-pdf +plantuml-uml-pdf: $(PLANTUML_UML_PDF) + +.PHONY: plantuml-svg +plantuml-svg: plantuml-uml-svg + +.PHONY: plantuml-pdf +plantuml-pdf: plantuml-uml-pdf + +.PHONY: plantuml-clean-svg plantuml-clean-svg: + rm -f $(PLANTUML_UML_SVG) + +.PHONY: plantuml-clean-pdf +plantuml-clean-pdf: + rm -f $(PLANTUML_UML_PDF) + +.PHONY: plantuml-clean +plantuml-clean: plantuml-clean-pdf plantuml-clean-svg + +.PHONY: plantuml-info +plantuml-info: + @echo "PLANTUML_DEST_DIR: $(PLANTUML_DEST_DIR)" + @echo "PLANTUML_SRC_DIR: $(PLANTUML_SRC_DIR)" + @echo "--" + @echo "PLANTUML_UML: $(PLANTUML_UML)" + @echo "PLANTUML_UML_PDF: $(PLANTUML_UML_PDF)" + @echo "PLANTUML_UML_SVG: $(PLANTUML_UML_SVG)" -plantuml-clean: From 9feef7a57e5d78a03f2fd7d7e3973343da5283f7 Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 19:24:35 +0100 Subject: [PATCH 03/16] fix: variable evaluation must be done in this order --- plantuml.mk | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/plantuml.mk b/plantuml.mk index b349f47..284bc6c 100644 --- a/plantuml.mk +++ b/plantuml.mk @@ -5,17 +5,19 @@ ## ## External variables (API) ## +PLANTUML_SUFFIX ?= uml PLANTUML_SRC_DIR ?= PLANTUML_DEST_DIR ?= ## -## Internal variables +## Internal variables (lazy recursive evaluation) ## ## Find .uml graphs -PLANTUML_UML := $(shell find $(PLANTUML_SRC_DIR) \( -name '*.uml' ! -name '_*' \)) -PLANTUML_UML_SVG := $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.svg,$(PLANTUML_UML)) -PLANTUML_UML_PDF := $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.pdf,$(PLANTUML_UML)) +PLANTUML_UML = $(shell find $(PLANTUML_SRC_DIR) \( -name '*.uml' ! -name '_*' \)) +PLANTUML_UML_PNG = $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.png,$(PLANTUML_UML)) +PLANTUML_UML_SVG = $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.svg,$(PLANTUML_UML)) +PLANTUML_UML_PDF = $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.pdf,$(PLANTUML_UML)) ## @@ -25,21 +27,31 @@ PLANTUML_UML_PDF := $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%. $(PLANTUML_DEST_DIR): mkdir -p $(PLANTUML_DEST_DIR) -$(PLANTUML_DEST_DIR)/%.uml.svg: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) - plantuml -pipe -tsvg < $< > $@ +$(PLANTUML_DEST_DIR)/%.uml.png: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) + podman run -i plantuml/plantuml plantuml -pipe -tpng < $< > $@ -$(PLANTUML_DEST_DIR)/%.uml.pdf: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) - plantuml -pipe -tpdf < $< > $@ +$(PLANTUML_DEST_DIR)/%.uml.svg: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) + podman run -i plantuml/plantuml plantuml -pipe -tsvg < $< > $@ + +$(PLANTUML_DEST_DIR)/%.uml.pdf: $(PLANTUML_SRC_DIR)/%.uml.svg | $(PLANTUML_DEST_DIR) + #podman run -i plantuml/plantuml plantuml -pipe -tpdf < $< > $@ + rsvg-convert -f pdf -o $@ $< .PHONY: plantuml-uml-svg plantuml-uml-svg: $(PLANTUML_UML_SVG) +.PHONY: plantuml-uml-png +plantuml-uml-png: $(PLANTUML_UML_PNG) + .PHONY: plantuml-uml-pdf plantuml-uml-pdf: $(PLANTUML_UML_PDF) .PHONY: plantuml-svg plantuml-svg: plantuml-uml-svg +.PHONY: plantuml-png +plantuml-png: plantuml-uml-png + .PHONY: plantuml-pdf plantuml-pdf: plantuml-uml-pdf @@ -47,6 +59,10 @@ plantuml-pdf: plantuml-uml-pdf plantuml-clean-svg: rm -f $(PLANTUML_UML_SVG) +.PHONY: plantuml-clean-png +plantuml-clean-png: + rm -f $(PLANTUML_UML_PNG) + .PHONY: plantuml-clean-pdf plantuml-clean-pdf: rm -f $(PLANTUML_UML_PDF) @@ -63,4 +79,4 @@ plantuml-info: @echo "PLANTUML_UML_PDF: $(PLANTUML_UML_PDF)" @echo "PLANTUML_UML_SVG: $(PLANTUML_UML_SVG)" - +.SUFFIXES: From a9a2a536454775fc9fc811bbc19a871e8e4764d4 Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 21:41:37 +0100 Subject: [PATCH 04/16] fix: change prerequisite for pdf generation --- plantuml.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plantuml.mk b/plantuml.mk index 284bc6c..9af6e9c 100644 --- a/plantuml.mk +++ b/plantuml.mk @@ -33,7 +33,7 @@ $(PLANTUML_DEST_DIR)/%.uml.png: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) $(PLANTUML_DEST_DIR)/%.uml.svg: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) podman run -i plantuml/plantuml plantuml -pipe -tsvg < $< > $@ -$(PLANTUML_DEST_DIR)/%.uml.pdf: $(PLANTUML_SRC_DIR)/%.uml.svg | $(PLANTUML_DEST_DIR) +$(PLANTUML_DEST_DIR)/%.uml.pdf: $(PLANTUML_DEST_DIR)/%.uml.svg | $(PLANTUML_DEST_DIR) #podman run -i plantuml/plantuml plantuml -pipe -tpdf < $< > $@ rsvg-convert -f pdf -o $@ $< @@ -80,3 +80,4 @@ plantuml-info: @echo "PLANTUML_UML_SVG: $(PLANTUML_UML_SVG)" .SUFFIXES: + From 8cad34ecf62b158f6425d18b67d4f46998188eb0 Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 22:36:04 +0100 Subject: [PATCH 05/16] feat: add missing png and pdf generation to graphviz --- graphviz.mk | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/graphviz.mk b/graphviz.mk index 6361b81..e00c47b 100644 --- a/graphviz.mk +++ b/graphviz.mk @@ -1,3 +1,8 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# +# SPDX-FileCopyrightText: 2023 Glenn Y. Rolland +# Copyright © 2023 Glenn Y. Rolland + ## ## GRAPHVIZ MODULE ## @@ -15,11 +20,18 @@ GRAPHVIZ_DEST_DIR ?= ## Find .dot graphs GRAPHVIZ_DOT := $(shell find $(GRAPHVIZ_SRC_DIR) \( -name '*.dot' ! -name '_*' \)) GRAPHVIZ_DOT_SVG := $(patsubst $(GRAPHVIZ_SRC_DIR)/%.dot,$(GRAPHVIZ_DEST_DIR)/%.dot.svg,$(GRAPHVIZ_DOT)) +GRAPHVIZ_DOT_PNG := $(patsubst $(GRAPHVIZ_SRC_DIR)/%.dot,$(GRAPHVIZ_DEST_DIR)/%.dot.png,$(GRAPHVIZ_DOT)) +GRAPHVIZ_DOT_PDF := $(patsubst $(GRAPHVIZ_SRC_DIR)/%.dot,$(GRAPHVIZ_DEST_DIR)/%.dot.pdf,$(GRAPHVIZ_DOT)) ## Find .circo graphs GRAPHVIZ_CIRCO := $(shell find $(GRAPHVIZ_SRC_DIR) \( -name '*.circo' ! -name '_*' \)) GRAPHVIZ_CIRCO_SVG := $(patsubst $(GRAPHVIZ_SRC_DIR)/%.circo,$(GRAPHVIZ_DEST_DIR)/%.circo.svg,$(GRAPHVIZ_CIRCO)) +GRAPHVIZ_CIRCO_PNG := $(patsubst $(GRAPHVIZ_SRC_DIR)/%.circo,$(GRAPHVIZ_DEST_DIR)/%.circo.png,$(GRAPHVIZ_CIRCO)) +GRAPHVIZ_CIRCO_PDF := $(patsubst $(GRAPHVIZ_SRC_DIR)/%.circo,$(GRAPHVIZ_DEST_DIR)/%.circo.pdf,$(GRAPHVIZ_CIRCO)) + GRAPHVIZ_SVG := $(GRAPHVIZ_DOT_SVG) $(GRAPHVIZ_CIRCO_SVG) +GRAPHVIZ_PNG := $(GRAPHVIZ_DOT_PNG) $(GRAPHVIZ_CIRCO_PNG) +GRAPHVIZ_PDF := $(GRAPHVIZ_DOT_PDF) $(GRAPHVIZ_CIRCO_PDF) ## ## Prerequisistes (system packages) @@ -40,21 +52,38 @@ $(GRAPHVIZ_DEST_DIR)/%.circo.svg: $(GRAPHVIZ_SRC_DIR)/%.circo | $(GRAPHVIZ_DEST_ circo -Tsvg $< > $@ $(GRAPHVIZ_SVG): | $(GRAPHVIZ_DEST_DIR) - mkdir -p $(GRAPHVIZ_DEST_DIR) +$(GRAPHVIZ_PDF): | $(GRAPHVIZ_DEST_DIR) + +$(GRAPHVIZ_PNG): | $(GRAPHVIZ_DEST_DIR) + +.PHONY: graphviz-build-dot-svg graphviz-build-dot-svg: $(GRAPHVIZ_DOT_SVG) +.PHONY: graphviz-build-circo-svg graphviz-build-circo-svg: $(GRAPHVIZ_CIRCO_SVG) +.PHONY: graphviz-build-svg graphviz-build-svg: graphviz-build-dot-svg graphviz-build-circo-svg +.PHONY: graphviz-buil graphviz-build: graphviz-build-svg # Clean # +.PHONY: graphviz-clean-svg graphviz-clean-svg: rm -f $(GRAPHVIZ_SVG) -graphviz-clean: graphviz-clean-svg +.PHONY: graphviz-clean-pdf +graphviz-clean-pdf: + rm -f $(GRAPHVIZ_PDF) + +.PHONY: graphviz-clean-png +graphviz-clean-png: + rm -f $(GRAPHVIZ_PNG) + +.PHONY: graphviz-clean +graphviz-clean: graphviz-clean-svg graphviz-clean-png graphviz-clean-pdf From d4b0c6d1a61d7cf0bd2bf963a2707c401b4f4a8e Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 22:36:26 +0100 Subject: [PATCH 06/16] fix: add missing SPDX license header --- mocodo.mk | 49 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/mocodo.mk b/mocodo.mk index be26f04..f7dd4ac 100644 --- a/mocodo.mk +++ b/mocodo.mk @@ -1,3 +1,8 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# +# SPDX-FileCopyrightText: 2023 Glenn Y. Rolland +# Copyright © 2023 Glenn Y. Rolland + ## ## MOCODO MODULE ## @@ -5,26 +10,31 @@ ## ## External variables (API) ## -MOCODO_OPT=--colors brewer-6 --shapes verdana -MOCODO_SRC_DIR= -MOCODO_DEST_DIR= +MOCODO_OPT ?= --colors brewer-6 --shapes verdana +MOCODO_SRC_DIR ?= +MOCODO_DEST_DIR ?= ## -## Internal variables +## Internal variables (lazy recursive evaluation) ## -MOCODO_MCD_FILES=$(shell find $(MOCODO_SRC_DIR) \( -name '*.mcd' ! -name '_*' \)) -MOCODO_MCD_MLD=$(patsubst $(MOCODO_SRC_DIR)/%.mcd,$(MOCODO_DEST_DIR)/%.mcd.mld,$(MOCODO_MCD_FILES)) -MOCODO_MCD_SVG=$(patsubst $(MOCODO_SRC_DIR)/%.mcd,$(MOCODO_DEST_DIR)/%.mcd.svg,$(MOCODO_MCD_FILES)) -MOCODO_MCD_PDF=$(patsubst $(MOCODO_SRC_DIR)/%.mcd,$(MOCODO_DEST_DIR)/%.mcd.pdf,$(MOCODO_MCD_FILES)) -MOCODO_MLD_FILES=$(shell find $(MOCODO_SRC_DIR) \( -name '*.mld' ! -name '_*' \)) $(MOCODO_MCD_MLD) -MOCODO_MLD_SVG=$(patsubst $(MOCODO_SRC_DIR)/%.mld,$(MOCODO_DEST_DIR)/%.mld.svg,$(MOCODO_MLD_FILES)) -MOCODO_MLD_PDF=$(patsubst $(MOCODO_SRC_DIR)/%.mld,$(MOCODO_DEST_DIR)/%.mld.pdf,$(MOCODO_MLD_FILES)) +## Find .mcd and .mld files +## Convert .mcd to .mcd.mld, .mcd.svg and .mcd.pdf files +## Convert .mld to .mld.svg, and .mld.pdf files + +MOCODO_MCD_FILES = $(shell find $(MOCODO_SRC_DIR) \( -name '*.mcd' ! -name '_*' \)) +MOCODO_MCD_MLD = $(patsubst $(MOCODO_SRC_DIR)/%.mcd,$(MOCODO_DEST_DIR)/%.mcd.mld,$(MOCODO_MCD_FILES)) +MOCODO_MCD_SVG = $(patsubst $(MOCODO_SRC_DIR)/%.mcd,$(MOCODO_DEST_DIR)/%.mcd.svg,$(MOCODO_MCD_FILES)) +MOCODO_MCD_PDF = $(patsubst $(MOCODO_SRC_DIR)/%.mcd,$(MOCODO_DEST_DIR)/%.mcd.pdf,$(MOCODO_MCD_FILES)) + +MOCODO_MLD_FILES = $(shell find $(MOCODO_SRC_DIR) \( -name '*.mld' ! -name '_*' \)) $(MOCODO_MCD_MLD) +MOCODO_MLD_SVG = $(patsubst $(MOCODO_SRC_DIR)/%.mld,$(MOCODO_DEST_DIR)/%.mld.svg,$(MOCODO_MLD_FILES)) +MOCODO_MLD_PDF = $(patsubst $(MOCODO_SRC_DIR)/%.mld,$(MOCODO_DEST_DIR)/%.mld.pdf,$(MOCODO_MLD_FILES)) ## ## Prerequisistes (system packages) ## -MOCODO_APT_PACKAGES=ghostscript librsvg2-bin +MOCODO_APT_PACKAGES = ghostscript librsvg2-bin ## ## Rules @@ -71,26 +81,39 @@ $(MOCODO_DEST_DIR)/%.mcd.pdf: $(MOCODO_SRC_DIR)/%.mcd.svg # rsvg-convert -f pdf $< > $@ rsvg-convert -f ps $< | gs -sDEVICE=pdfwrite -sOutputFile=$@ -f - +.PHONY: mocodo-mcd-mld mocodo-mcd-mld: $(MOCODO_MCD_MLD) +.PHONY: mocodo-mcd-svg mocodo-mcd-svg: $(MOCODO_MCD_SVG) + +.PHONY: mocodo-mld-pdf +mocodo-mcd-pdf: $(MOCODO_MCD_PDF) + +.PHONY: mocodo-mld-svg mocodo-mld-svg: $(MOCODO_MLD_SVG) -mocodo-mcd-pdf: $(MOCODO_MCD_PDF) +.PHONY: mocodo-mld-pdf mocodo-mld-pdf: $(MOCODO_MLD_PDF) +.PHONY: mocodo-svg mocodo-svg: mocodo-mcd-svg mocodo-mld-svg +.PHONY: mocodo-pdf mocodo-pdf: mocodo-mcd-pdf mocodo-mld-pdf +.PHONY: mocodo-clean-mld mocodo-clean-mld: rm -f $(MOCODO_MCD_MLD) +.PHONY: mocodo-clean-svg mocodo-clean-svg: rm -f $(MOCODO_MCD_SVG) $(MOCODO_MLD_SVG) +.PHONY: mocodo-clean-pdf mocodo-clean-pdf: rm -f $(MOCODO_MCD_PDF) $(MOCODO_MLD_PDF) +.PHONY: mocodo-clean mocodo-clean: mocodo-clean-mld mocodo-clean-svg mocodo-clean-pdf From bb76625bdfc041c7bf80c6f2378993e485486536 Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 22:36:38 +0100 Subject: [PATCH 07/16] fix: add missing SPDX license header --- plantuml.mk | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/plantuml.mk b/plantuml.mk index 9af6e9c..ee7c86e 100644 --- a/plantuml.mk +++ b/plantuml.mk @@ -1,3 +1,8 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# +# SPDX-FileCopyrightText: 2023 Glenn Y. Rolland +# Copyright © 2023 Glenn Y. Rolland + ## ## PLANTUML MODULE ## @@ -13,13 +18,12 @@ PLANTUML_DEST_DIR ?= ## Internal variables (lazy recursive evaluation) ## -## Find .uml graphs +## Find .uml files PLANTUML_UML = $(shell find $(PLANTUML_SRC_DIR) \( -name '*.uml' ! -name '_*' \)) PLANTUML_UML_PNG = $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.png,$(PLANTUML_UML)) PLANTUML_UML_SVG = $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.svg,$(PLANTUML_UML)) PLANTUML_UML_PDF = $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.pdf,$(PLANTUML_UML)) - ## ## Rules ## @@ -34,8 +38,10 @@ $(PLANTUML_DEST_DIR)/%.uml.svg: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) podman run -i plantuml/plantuml plantuml -pipe -tsvg < $< > $@ $(PLANTUML_DEST_DIR)/%.uml.pdf: $(PLANTUML_DEST_DIR)/%.uml.svg | $(PLANTUML_DEST_DIR) - #podman run -i plantuml/plantuml plantuml -pipe -tpdf < $< > $@ - rsvg-convert -f pdf -o $@ $< + # podman run -i plantuml/plantuml plantuml -pipe -tpdf < $< > $@ + # rsvg-convert -f pdf -o $@ $< + rsvg-convert -f ps $< | gs -sDEVICE=pdfwrite -sOutputFile=$@ -f - + .PHONY: plantuml-uml-svg plantuml-uml-svg: $(PLANTUML_UML_SVG) @@ -79,5 +85,3 @@ plantuml-info: @echo "PLANTUML_UML_PDF: $(PLANTUML_UML_PDF)" @echo "PLANTUML_UML_SVG: $(PLANTUML_UML_SVG)" -.SUFFIXES: - From 298fea539fcafc1721302658d2cb45fa125cbbed Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 22:49:47 +0100 Subject: [PATCH 08/16] fix: make plantuml commands configurable --- plantuml.mk | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/plantuml.mk b/plantuml.mk index ee7c86e..7ca703b 100644 --- a/plantuml.mk +++ b/plantuml.mk @@ -13,6 +13,9 @@ PLANTUML_SUFFIX ?= uml PLANTUML_SRC_DIR ?= PLANTUML_DEST_DIR ?= +PLANTUML_PLANTUML_COMMAND ?= podman run -i plantuml/plantuml plantuml +PLANTUML_RSVGCONVERT_COMMAND ?= rsvg-convert +PLANTUML_GHOSTSCRIPT_COMMAND ?= gs ## ## Internal variables (lazy recursive evaluation) @@ -24,6 +27,11 @@ PLANTUML_UML_PNG = $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.u PLANTUML_UML_SVG = $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.svg,$(PLANTUML_UML)) PLANTUML_UML_PDF = $(patsubst $(PLANTUML_SRC_DIR)/%.uml,$(PLANTUML_DEST_DIR)/%.uml.pdf,$(PLANTUML_UML)) +## +## Prerequisistes (system packages) +## +GRAPHVIZ_APT_PACKAGES := plantuml librsvg2-bin ghostscript + ## ## Rules ## @@ -32,15 +40,13 @@ $(PLANTUML_DEST_DIR): mkdir -p $(PLANTUML_DEST_DIR) $(PLANTUML_DEST_DIR)/%.uml.png: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) - podman run -i plantuml/plantuml plantuml -pipe -tpng < $< > $@ + $(PLANTUML_COMMAND) -pipe -tpng < $< > $@ $(PLANTUML_DEST_DIR)/%.uml.svg: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) - podman run -i plantuml/plantuml plantuml -pipe -tsvg < $< > $@ + $(PLANTUML_COMMAND) -pipe -tsvg < $< > $@ $(PLANTUML_DEST_DIR)/%.uml.pdf: $(PLANTUML_DEST_DIR)/%.uml.svg | $(PLANTUML_DEST_DIR) - # podman run -i plantuml/plantuml plantuml -pipe -tpdf < $< > $@ - # rsvg-convert -f pdf -o $@ $< - rsvg-convert -f ps $< | gs -sDEVICE=pdfwrite -sOutputFile=$@ -f - + $(PLANTUML_RSVGCONVERT_COMMAND) -f ps $< | $(PLANTUML_GHOSTSCRIPT_COMMAND) -sDEVICE=pdfwrite -sOutputFile=$@ -f - .PHONY: plantuml-uml-svg From 35c3c5e38414ec9f1e044f64213f573f298ee4b5 Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 23:01:22 +0100 Subject: [PATCH 09/16] fix: improve readability of plantuml-info --- plantuml.mk | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/plantuml.mk b/plantuml.mk index 7ca703b..43c5842 100644 --- a/plantuml.mk +++ b/plantuml.mk @@ -84,10 +84,17 @@ plantuml-clean: plantuml-clean-pdf plantuml-clean-svg .PHONY: plantuml-info plantuml-info: - @echo "PLANTUML_DEST_DIR: $(PLANTUML_DEST_DIR)" - @echo "PLANTUML_SRC_DIR: $(PLANTUML_SRC_DIR)" - @echo "--" - @echo "PLANTUML_UML: $(PLANTUML_UML)" - @echo "PLANTUML_UML_PDF: $(PLANTUML_UML_PDF)" - @echo "PLANTUML_UML_SVG: $(PLANTUML_UML_SVG)" + @echo "PLANTUML:" + @echo " External variables:" + @echo " PLANTUML_SUFFIX: $(PLANTUML_SUFFIX)" + @echo " PLANTUML_DEST_DIR: $(PLANTUML_DEST_DIR)" + @echo " PLANTUML_SRC_DIR: $(PLANTUML_SRC_DIR)" + @echo " PLANTUML_PLANTUML_COMMAND: $(PLANTUML_PLANTUML_COMMAND)" + @echo " PLANTUML_RSVGCONVERT_COMMAND: $(PLANTUML_RSVGCONVERT_COMMAND)" + @echo " PLANTUML_GHOSTSCRIPT_COMMAND: $(PLANTUML_GHOSTSCRIPT_COMMAND)" + @echo " Internal variables" + @echo " PLANTUML_UML: $(PLANTUML_UML)" + @echo " PLANTUML_UML_PDF: $(PLANTUML_UML_PDF)" + @echo " PLANTUML_UML_PNG: $(PLANTUML_UML_PNG)" + @echo " PLANTUML_UML_SVG: $(PLANTUML_UML_SVG)" From 813b48f99ebeda666cb9737f015f0c40d9799fc7 Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 23:02:01 +0100 Subject: [PATCH 10/16] fix: add missing target mocodo-info --- mocodo.mk | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mocodo.mk b/mocodo.mk index f7dd4ac..b04a440 100644 --- a/mocodo.mk +++ b/mocodo.mk @@ -117,3 +117,20 @@ mocodo-clean-pdf: .PHONY: mocodo-clean mocodo-clean: mocodo-clean-mld mocodo-clean-svg mocodo-clean-pdf +.PHONY: mocodo-info +mocodo-info: + @echo "MOCODO:" + @echo " External variables:" + @echo " MOCODO_OPT: $(MOCODO_OPT)" + @echo " MOCODO_SRC_DIR: $(MOCODO_SRC_DIR)" + @echo " MOCODO_DEST_DIR: $(MOCODO_DEST_DIR)" + @echo " Internal variables" + @echo " MOCODO_MCD_FILES: $(MOCODO_MCD_FILES)" + @echo " MOCODO_MLD_FILES: $(MOCODO_MLD_FILES)" + @echo " MOCODO_MCD_MLD: $(MOCODO_MCD_MLD)" + @echo " MOCODO_MCD_SVG: $(MOCODO_MCD_SVG)" + @echo " MOCODO_MCD_PDF: $(MOCODO_MCD_PDF)" + @echo " MOCODO_MLD_FILES: $(MOCODO_MLD_FILES)" + @echo " MOCODO_MLD_SVG: $(MOCODO_MLD_SVG)" + @echo " MOCODO_MLD_PDF: $(MOCODO_MLD_PDF)" + From dbe9e97f62aaaaae72f3f313811593e09df8a64b Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 23:02:16 +0100 Subject: [PATCH 11/16] feat: add new module for mypaint --- mypaint.mk | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/mypaint.mk b/mypaint.mk index e69de29..75b2417 100644 --- a/mypaint.mk +++ b/mypaint.mk @@ -0,0 +1,100 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# +# SPDX-FileCopyrightText: 2023 Glenn Y. Rolland +# Copyright © 2023 Glenn Y. Rolland + +## +## MYPAINT MODULE +## + +## +## External variables (API) +## +MYPAINT_SUFFIX ?= ora +MYPAINT_SRC_DIR ?= +MYPAINT_DEST_DIR ?= +MYPAINT_PDF_DENSITY ?= 75 +MYPAINT_JPG_QUALITY ?= 100 + +## +## Internal variables (lazy recursive evaluation) +## + +## Find .ora files +MYPAINT_ORA = $(shell find $(MYPAINT_SRC_DIR) \( -name '*.ora' ! -name '_*' \)) +MYPAINT_ORA_PNG = $(patsubst $(MYPAINT_SRC_DIR)/%.ora,$(MYPAINT_DEST_DIR)/%.ora.png,$(MYPAINT_ORA)) +MYPAINT_ORA_JPG = $(patsubst $(MYPAINT_SRC_DIR)/%.ora,$(MYPAINT_DEST_DIR)/%.ora.jpg,$(MYPAINT_ORA)) +MYPAINT_ORA_PDF = $(patsubst $(MYPAINT_SRC_DIR)/%.ora,$(MYPAINT_DEST_DIR)/%.ora.pdf,$(MYPAINT_ORA)) + +## +## Prerequisistes (system packages) +## +MYPAINT_APT_PACKAGES := unzip mypaint imagemagick + +## +## Rules +## + +$(MYPAINT_DEST_DIR): + mkdir -p $(MYPAINT_DEST_DIR) + +$(MYPAINT_DEST_DIR)/%.ora.png: $(MYPAINT_SRC_DIR)/%.ora | $(MYPAINT_DEST_DIR) + TMPDIR="$$(mktemp -d)" \ + && unzip -q $< -d "$$TMPDIR" mergedimage.png \ + && touch "$$TMPDIR/mergedimage.png" \ + && mv "$$TMPDIR/mergedimage.png" $@ + +$(MYPAINT_DEST_DIR)/%.ora.jpg: $(MYPAINT_DEST_DIR)/%.ora.png | $(MYPAINT_DEST_DIR) + convert -quality $(MYPAINT_JPG_QUALITY) $< $@ + +$(MYPAINT_DEST_DIR)/%.ora.pdf: $(MYPAINT_DEST_DIR)/%.ora.png | $(MYPAINT_DEST_DIR) + convert -density $(MYPAINT_PDF_DENSITY) $< $@ + +.PHONY: mypaint-ora-jpg +mypaint-ora-jpg: $(MYPAINT_ORA_JPG) + +.PHONY: mypaint-ora-png +mypaint-ora-png: $(MYPAINT_ORA_PNG) + +.PHONY: mypaint-ora-pdf +mypaint-ora-pdf: $(MYPAINT_ORA_PDF) + +.PHONY: mypaint-jpg +mypaint-jpg: mypaint-ora-jpg + +.PHONY: mypaint-png +mypaint-png: mypaint-ora-png + +.PHONY: mypaint-pdf +mypaint-pdf: mypaint-ora-pdf + +.PHONY: mypaint-clean-jpg +mypaint-clean-jpg: + rm -f $(MYPAINT_ORA_JPG) + +.PHONY: mypaint-clean-png +mypaint-clean-png: + rm -f $(MYPAINT_ORA_PNG) + +.PHONY: mypaint-clean-pdf +mypaint-clean-pdf: + rm -f $(MYPAINT_ORA_PDF) + +.PHONY: mypaint-clean +mypaint-clean: mypaint-clean-pdf mypaint-clean-jpg + +.PHONY: mypaint-info +mypaint-info: + @echo "MYPAINT:" + @echo " External variables:" + @echo " MYPAINT_SUFFIX: $(MYPAINT_SUFFIX)" + @echo " MYPAINT_SRC_DIR: $(MYPAINT_SRC_DIR)" + @echo " MYPAINT_DEST_DIR: $(MYPAINT_DEST_DIR)" + @echo " MYPAINT_PDF_DENSITY: $(MYPAINT_PDF_DENSITY)" + @echo " MYPAINT_JPG_QUALITY: $(MYPAINT_JPG_QUALITY)" + @echo " Internal variables" + @echo " MYPAINT_ORA: $(MYPAINT_ORA)" + @echo " MYPAINT_ORA_PNG: $(MYPAINT_ORA_PDF)" + @echo " MYPAINT_ORA_PDF: $(MYPAINT_ORA_PDF)" + @echo " MYPAINT_ORA_JPG: $(MYPAINT_ORA_JPG)" + From 88543836ce832a2c13f0cc9c899c0486f0e8a9a0 Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 23:03:29 +0100 Subject: [PATCH 12/16] feat: add sample Makefile which uses the modules --- Makefile | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index f08136c..512c8b6 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,35 @@ +# Usage example + +## +## Local configuration +## + +## +## Configuration of input variables for libraries +## +PLANTUML_SRC_DIR = $(SOURCE_DIR)/plantuml +PLANTUML_DEST_DIR = $(IMAGES_DIR)/plantuml + +MOCODO_SRC_DIR = $(SOURCE_DIR)/mocodo +MOCODO_DEST_DIR = $(IMAGES_DIR)/mocodo + +GRAPHVIZ_SRC_DIR = $(SOURCE_DIR)/graphviz +GRAPHVIZ_DEST_DIR = $(IMAGES_DIR)/graphviz + +## +## Include libraries +## +include mocodo.mk +include dot.mk +include plantuml.mk + +## +## Rules +## + +.PHONY: build +build: plantuml-build mocodo-build graphviz-build + +.PHONY: clean +clean: plantuml-clean mocodo-clean graphviz-clean --include mocodo.mk --include dot.mk --include plantuml.mk From f95d28d72ef0ed10f6ec80639246172edfe25fb8 Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 23:08:25 +0100 Subject: [PATCH 13/16] doc: improve README content --- README.md | 92 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 69 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 6ab2e52..35d2887 100644 --- a/README.md +++ b/README.md @@ -1,60 +1,106 @@ + + # Makefiles Forever A drop-in collection of makefiles libraries for your projects ## Description -* plantuml.makefile — Build [plantuml](https://plantuml.com/) diagrams -* dot.mk — Build [graphviz](https://graphviz.org/) graph diagrams -* mocodo.mk — Build [mocodo](http://mocodo.wingi.net/) entity-relation and logical diagrams +* plantuml.makefile — Automate the building [plantuml](https://plantuml.com/) diagrams. +* graphviz.mk — Streamline the creation of [graphviz](https://graphviz.org/) graph diagrams. +* mocodo.mk — Facilitate the development of [mocodo](http://mocodo.wingi.net/) entity-relation and logical diagrams. +* mypaint.mk - Automate the conversion of [mypaint](https://mypaint.app/) openraster images to usual image formats. ## Usage -Add this repository as a GIT submodule of your project +### Adding to your project + +To include 'Makefiles Forever' in your project, add this repository as a GIT +submodule: ```shell-session $ git submodule add https://github.com/glenux/makefiles-forever .makefiles ``` -Include needed features in the end of your makefile +### Configuring your makefiles + +In your project's makefile, include the necessary modules. __The `include` instructions must be located +__before your existing targets__. ```makefile -# [...] +# [... variable definitions ...] --include .makefiles/featureA.mk --include .makefiles/featureB.mk +# Include as many Makefiles Forever features as your want +include .makefiles/plantuml.mk +include .makefiles/mocodo.mk +include .makefiles/graphviz.mk + +# [... targets definitions ...] ``` Declare API variables (ex: `*_SRC_DIR`, `*_DEST_DIR`) for each module ```makefile -# Configuration for featureA from Makefiles Forever -FEATUREA_SRC_DIR=/path/to/somewhere -FEATUREA_DEST_DIR=/some/other/path +# PlantUML Configuration +PLANTUML_SRC_DIR=/path/to/plantuml/files +PLANTUML_DEST_DIR=/path/to/output/directory -# Configuration for featureB from Makefiles Forever -FEATUREA_SRC_DIR=/another/path -FEATUREB_DEST_DIR=/a/different/one +# Mocodo Configuration +MOCODO_SRC_DIR=/path/to/mocodo/files +MOCODO_DEST_DIR=/path/to/output/directory + +# Graphviz Configuration +GRAPHVIZ_SRC_DIR=/path/to/mocodo/files +GRAPHVIZ_DEST_DIR=/path/to/output/directory + +# [ ... etc ...] ``` -Use pre-defined targets as dependencies of your targets: +Use pre-defined targets in your build process, as dependencies of your existing +targets: ```makefile -build: featureA-build -build: featureB-build -clean: featureA-clean -clean: featureB-clean +build: plantuml-build mocodo-build graphviz-build + +clean: plantuml-clean mocodo-clean graphviz-clean ``` Feature files usually define more targets than just build and clean, and you can use those too! -## Good practices for coding .mk files +## Best practices used in our .mk modules -* Keep task parallelism in mind - * Make all targets available from root makefile - * Do not descend in subdirectories +* Parallel Execution: We ensure targets are available from the root makefile and avoid descending into subdirectories for parallel execution. +* Modular Design: We keep our makefiles modular for easy maintenance and scalability. +* Documentation: We comment our makefiles for clarity and ease of use by others. + +## Contributing + +Contributions are what make the open-source community such an amazing place to +learn, inspire, and create. Any contributions you make are **greatly +appreciated**. + +## Troubleshooting and Support + +If you encounter any issues or need support, please open an issue in +[the project's issue tracker](https://code.apps.glenux.net/glenux/makefiles-forever/issues). +We strive to be responsive and helpful. + +## License + +Distributed under the LGPL-3.0-or-later License. See `LICENSE` file for more +information. + +## Acknowledgments + +* A special thanks to all contributors and users of this project for their + valuable feedback and support. From 30a0b0e7a87effeafad0dfd139fe0b3ce3557fd4 Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 23:24:31 +0100 Subject: [PATCH 14/16] doc: update preamble with badges and info about mirrors --- README.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 35d2887..de42395 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,22 @@ # Copyright © 2023 Glenn Y. Rolland --> +[![Build Status](https://cicd.apps.glenux.net/api/badges/glenux/makefiles-forever/status.svg)](https://cicd.apps.glenux.net/glenux/makefiles-forever) +![License LGPL3.0-or-later](https://img.shields.io/badge/license-LGPL3.0--or--later-blue.svg) +[![Donate on patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://patreon.com/glenux) + +> :information_source: This project is available on our self-hosted server and +> on CodeBerg and GitHub as mirrors. For the latest updates and comprehensive +> version of our project, please visit our primary repository at: +> . + # Makefiles Forever A drop-in collection of makefiles libraries for your projects ## Description -* plantuml.makefile — Automate the building [plantuml](https://plantuml.com/) diagrams. +* plantuml.mk — Automate the building [plantuml](https://plantuml.com/) diagrams. * graphviz.mk — Streamline the creation of [graphviz](https://graphviz.org/) graph diagrams. * mocodo.mk — Facilitate the development of [mocodo](http://mocodo.wingi.net/) entity-relation and logical diagrams. * mypaint.mk - Automate the conversion of [mypaint](https://mypaint.app/) openraster images to usual image formats. @@ -33,14 +42,14 @@ In your project's makefile, include the necessary modules. __The `include` instr __before your existing targets__. ```makefile -# [... variable definitions ...] +# [...variable definitions...] # Include as many Makefiles Forever features as your want include .makefiles/plantuml.mk include .makefiles/mocodo.mk -include .makefiles/graphviz.mk +# [...include as many modules as you want...] -# [... targets definitions ...] +# [...targets definitions...] ``` Declare API variables (ex: `*_SRC_DIR`, `*_DEST_DIR`) for each module @@ -54,9 +63,7 @@ PLANTUML_DEST_DIR=/path/to/output/directory MOCODO_SRC_DIR=/path/to/mocodo/files MOCODO_DEST_DIR=/path/to/output/directory -# Graphviz Configuration -GRAPHVIZ_SRC_DIR=/path/to/mocodo/files -GRAPHVIZ_DEST_DIR=/path/to/output/directory +# [...you the external variables of the modules you included...] # [ ... etc ...] ``` From eda6531cf03f5cefb13b81709d33c102bf95372e Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 23:37:10 +0100 Subject: [PATCH 15/16] fix: make sure there is no inconsistency in variable names --- plantuml.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plantuml.mk b/plantuml.mk index 43c5842..dfa646a 100644 --- a/plantuml.mk +++ b/plantuml.mk @@ -40,10 +40,10 @@ $(PLANTUML_DEST_DIR): mkdir -p $(PLANTUML_DEST_DIR) $(PLANTUML_DEST_DIR)/%.uml.png: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) - $(PLANTUML_COMMAND) -pipe -tpng < $< > $@ + $(PLANTUML_PLANTUML_COMMAND) -pipe -tpng < $< > $@ $(PLANTUML_DEST_DIR)/%.uml.svg: $(PLANTUML_SRC_DIR)/%.uml | $(PLANTUML_DEST_DIR) - $(PLANTUML_COMMAND) -pipe -tsvg < $< > $@ + $(PLANTUML_PLANTUML_COMMAND) -pipe -tsvg < $< > $@ $(PLANTUML_DEST_DIR)/%.uml.pdf: $(PLANTUML_DEST_DIR)/%.uml.svg | $(PLANTUML_DEST_DIR) $(PLANTUML_RSVGCONVERT_COMMAND) -f ps $< | $(PLANTUML_GHOSTSCRIPT_COMMAND) -sDEVICE=pdfwrite -sOutputFile=$@ -f - From 681e05dc65fb7a1f7454f37d99ac710ff474edd4 Mon Sep 17 00:00:00 2001 From: Glenn Date: Fri, 5 Jan 2024 23:38:44 +0100 Subject: [PATCH 16/16] doc: fix error in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index de42395..4725684 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ $ git submodule add https://github.com/glenux/makefiles-forever .makefiles ### Configuring your makefiles In your project's makefile, include the necessary modules. __The `include` instructions must be located -__before your existing targets__. +after your existing targets__. ```makefile # [...variable definitions...]