1#
2# Makefile for converting svg files
3# to something else: png, pdf, eps
4#
5# 25-nov-2020 - Philippe Chauvat / Bacula Systems
6#		Porting what is done in covers to images to let them be including variables/parameters
7# 22-oct-2020 - Philippe Chauvat / Bacula Systems
8#		Improvements to handle Inkscape version
9# 10-Oct-2012 - Philippe Chauvat / Bacula Systems
10#
11INKSCAPE=inkscape
12VERSION=$(shell $(INKSCAPE) -V 2>/dev/null|cut -d ' ' -f2|cut -d'.' -f1)
13VERBOSE=FALSE
14ifeq ($(VERBOSE),TRUE)
15	HIDE=
16else
17	HIDE=@
18endif
19
20#
21# Traitement de la compilation à partir de la version 1 d'Inkscape
22ifeq ($(VERSION),1)
23	INKSCAPE_FLAGS=-o
24	SVG_TO_PDF=--export-type=pdf -C --export-pdf-version=1.5 -T $(INKSCAPE_FLAGS)
25	SVG_TO_EPS=--export-type=eps -C -T $(INKSCAPE_FLAGS)
26	SVG_TO_PNG=--export-type=png -C -T --export-dpi=120 $(INKSCAPE_FLAGS)
27#
28# Version 0.x
29else
30	INKSCAPE_FLAGS=-z -T -C
31	SVG_TO_PDF=$(INKSCAPE_FLAGS) -A
32	SVG_TO_EPS=$(INKSCAPE_FLAGS) -E
33	SVG_TO_PNG=$(INKSCAPE_FLAGS) -e
34endif
35
36PDFDIR=../pdf
37PNGDIR=../png
38EPSDIR=../eps
39
40TPLSVGS=$(shell grep -l '__' *.svg)
41SVGS=$(shell grep -L '__' *.svg)
42TPLS=$(TPLSVGS:.svg=.tpl)
43PDFS=$(addprefix $(PDFDIR)/,$(SVGS:.svg=.pdf)) $(addprefix $(PDFDIR)/,$(TPLS:.tpl=.pdf))
44EPSS=$(addprefix $(EPSDIR)/,$(SVGS:.svg=.eps)) $(addprefix $(EPSDIR)/,$(TPLS:.tpl=.eps))
45PNGS=$(addprefix $(PNGDIR)/,$(SVGS:.svg=.png)) $(addprefix $(PNGDIR)/,$(TPLS:.tpl=.png))
46
47BDATE := $(shell date +%Y-%m-%d)
48
49first_rule: all
50
51all: check tpl pdf png
52
53.SUFFIXES:
54.PHONY:
55.DONTCARE:
56
57check:
58	$(HIDE)echo "Template SVG files: $(TPLSVGS)"
59	$(HIDE)echo "Regular SVG files: $(SVGS)"
60	$(HIDE)echo "TPL files to be generated: $(TPLS)"
61	$(HIDE)echo "PDFDIR: $(PDFDIR)"
62	$(HIDE)echo "PDFs $(PDFS)"
63	$(HIDE)echo "EPSDIR: $(EPSDIR)"
64	$(HIDE)echo "EPSs: $(EPSS)"
65	$(HIDE)echo "PNGDIR: $(PNGDIR)"
66	$(HIDE)echo "PNGs: $(PNGS)"
67#
68# PDF images creation
69pdf: $(TEMPLATES) $(PDFS)
70
71tpl: $(TPLS)
72
73$(TPLS): $(VERSION_TEX)
74
75%.tpl: %.svg
76	$(HIDE)echo "$< :   Handling version number and date"
77	$(HIDE)sed "s/__BVERSION__/`awk '{print $$1}' $(VERSION_TEX)`/g" $< > $@
78	$(HIDE)sed -i 's/__BEDITION__/$(BACULAVERSION)/g' $@
79	$(HIDE)sed -i 's/__BDATE__/$(BDATE)/g' $@
80
81
82$(PDFS): | $(PDFDIR)
83$(PDFDIR):
84	$(HIDE)echo "Creating PDF images directory..."
85	$(HIDE)mkdir $(PDFDIR)
86	$(HIDE)echo "Done"
87
88$(PDFDIR)/%.pdf: %.tpl
89	$(HIDE)echo "Converting $< to $@"
90	$(HIDE)$(INKSCAPE) $(SVG_TO_PDF) $@ $< 1>$<.svg_error 2>$<.svg_error
91
92$(PDFDIR)/%.pdf: %.svg
93	$(HIDE)echo "$< :   Converting to PDF"
94	$(HIDE)$(INKSCAPE) $(SVG_TO_PDF) $@ $<
95#
96# EPS images creation
97eps: $(TEMPLATES) $(EPSS)
98$(EPSS): | $(EPSDIR)
99$(EPSDIR):
100	$(HIDE)echo "Creating EPS images directory..."
101	$(HIDE)mkdir $(EPSDIR)
102	$(HIDE)echo "Done"
103
104$(EPSDIR)/%.eps: %.tpl
105	$(HIDE)echo "Converting $< to $@"
106	$(HIDE)$(INKSCAPE) $(SVG_TO_EPS) $@ $< 1>$<.svg_error 2>$<.svg_error
107
108$(EPSDIR)/%.eps: %.svg
109	$(HIDE)$(INKSCAPE) $(INKSCAPE_FLAGS) $(SVG_TO_EPS) $(EPSDIR)/$@ $<
110
111#
112# PNG images creation
113png: $(TEMPLATES) $(PNGS)
114$(PNGS): | $(PNGDIR)
115$(PNGDIR):
116	$(HIDE)echo "Creating PNG images directory..."
117	$(HIDE)mkdir $(PNGDIR)
118	$(HIDE)echo "Done"
119
120$(PNGDIR)/%.png: %.tpl
121	$(HIDE)echo "Converting $< to $@"
122	$(HIDE)$(INKSCAPE) $(SVG_TO_PNG) $@ $< 1>$<.svg_error 2>$<.svg_error
123
124$(PNGDIR)/%.png: %.svg
125	$(HIDE)$(INKSCAPE) $(INKSCAPE_FLAGS) $(SVG_TO_PNG) $(PNGDIR)/$@ $<
126
127clean:
128	$(HIDE)rm -f $(TPLS)
129	$(HIDE)(if [ -e $(PDFDIR) ]; then cd $(PDFDIR) ; rm -f $(PDFS); fi)
130	$(HIDE)(if [ -e $(EPSDIR) ]; then cd $(EPSDIR) ; rm -f $(EPSS); fi)
131	$(HIDE)(if [ -e $(PNGDIR) ]; then cd $(PNGDIR) ; rm -f $(PNGS); fi)
132	$(HIDE)rm -f *~ *.svg_error
133
134distclean: clean
135