]> git.ipfire.org Git - artwork.git/commitdiff
Makefile: Generate favicons in all designs, too
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 13 Mar 2026 14:22:20 +0000 (14:22 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 13 Mar 2026 14:22:20 +0000 (14:22 +0000)
The file has also been stripped from all the repetition so
that it will be much shorter to add additional stuff.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile

index bff88d315fb49fd0b5817a080759a87845b335e6..5f8c57a99e2240a0a145f5c9ab9fe9a00acc60d3 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -8,126 +8,131 @@ OBJECTS = \
        standard/favicon-64x64.png \
        standard/favicon-128x128.png \
        standard/favicon-256x256.png \
+       standard/favicon-512x512.png \
        \
        monochrome/logo.svg \
        monochrome/logo.pdf \
        monochrome/logo-512x512.png \
        monochrome/logo-1024x1024.png \
        monochrome/logo-2048x2048.png \
+       monochrome/favicon-32x32.png \
+       monochrome/favicon-64x64.png \
+       monochrome/favicon-128x128.png \
+       monochrome/favicon-256x256.png \
+       monochrome/favicon-512x512.png \
        \
        inverted/logo.svg \
        inverted/logo.pdf \
        inverted/logo-512x512.png \
        inverted/logo-1024x1024.png \
-       inverted/logo-2048x2048.png
+       inverted/logo-2048x2048.png \
+       inverted/favicon-32x32.png \
+       inverted/favicon-64x64.png \
+       inverted/favicon-128x128.png \
+       inverted/favicon-256x256.png \
+       inverted/favicon-512x512.png
+
+# Colors
+PRIMARY = ff2e52
+DARK    = 363636
+WHITE   = ffffff
 
 # Inkscape command line
 INKSCAPE = inkscape $< --export-filename=$@
 
+# Macro to render fonts to paths so that we won't need to load the font
+define TO_PATHS
+       mkdir -p $(dir $@) && \
+       $(INKSCAPE) \
+               --batch-process \
+               --actions="select-all;object-to-path;export-plain-svg"
+endef
+
+define TO_INVERTED
+       mkdir -p $(dir $@) && \
+       sed \
+               -e "s/fill=\"#$(DARK)\"/fill=\"#$(WHITE)\"/g" \
+               -e "s/fill:#$(DARK)/fill:#$(WHITE)/g" \
+               -e "s/stroke:[^;\"]*/stroke:none/g" \
+               < $< > $@
+endef
+
+define TO_MONOCHROME
+       mkdir -p $(dir $@) && \
+       sed \
+               -e "s/fill:[^;\"]*/fill:#$(DARK)/g" \
+               -e "s/fill=\"[^\"]*\"/fill=\"#$(DARK)\"/g" \
+               -e "s/stroke:[^;\"]*/stroke:none/g" \
+               < $< > $@
+endef
+
 .PHONY: all
 all: $(OBJECTS)
 
 # Converts the logo to a plain SVG file without requiring the font
 standard/logo.svg: logo.svg
-       mkdir -p $(dir $@)
-       $(INKSCAPE) \
-               --batch-process \
-               --actions="select-all;object-to-path;export-plain-svg"
+       $(TO_PATHS)
+
+# Converts the logo to a plain SVG file without requiring the font
+%/logo.svg: logo-%.svg
+       $(TO_PATHS)
+
+# Converts the favicon to a plain SVG file without requiring the font
+standard/favicon.svg: favicon.svg
+       $(TO_PATHS)
+
+%/favicon.svg: favicon-%.svg
+       $(TO_PATHS)
 
 # Converts the logo to PDF
-standard/logo.pdf: logo.svg
+%/logo.pdf: %/logo.svg
        mkdir -p $(dir $@)
        $(INKSCAPE)
 
-# Converts the logo to a transparent PNG image with 512x512 pixels
-standard/logo-512x512.png: logo.svg
-       mkdir -p $(dir $@)
+# Converts the logo to PNG
+%/logo-512x512.png: %/logo.svg
+       mkdir -p $(dir $@) && \
        $(INKSCAPE) --export-width=512
 
-standard/logo-1024x1024.png: logo.svg
-       mkdir -p $(dir $@)
+%/logo-1024x1024.png: %/logo.svg
+       mkdir -p $(dir $@) && \
        $(INKSCAPE) --export-width=1024
 
-standard/logo-2048x2048.png: logo.svg
-       mkdir -p $(dir $@)
+%/logo-2048x2048.png: %/logo.svg
+       mkdir -p $(dir $@) && \
        $(INKSCAPE) --export-width=2048
 
-standard/favicon-32x32.png: favicon.svg
-       mkdir -p $(dir $@)
+# Converts the favicon to PNG
+%/favicon-32x32.png: %/favicon.svg
+       mkdir -p $(dir $@) && \
        $(INKSCAPE) --export-width=32
 
-standard/favicon-64x64.png: favicon.svg
-       mkdir -p $(dir $@)
+%/favicon-64x64.png: %/favicon.svg
+       mkdir -p $(dir $@) && \
        $(INKSCAPE) --export-width=64
 
-standard/favicon-128x128.png: favicon.svg
-       mkdir -p $(dir $@)
+%/favicon-128x128.png: %/favicon.svg
+       mkdir -p $(dir $@) && \
        $(INKSCAPE) --export-width=128
 
-standard/favicon-256x256.png: favicon.svg
-       mkdir -p $(dir $@)
+%/favicon-256x256.png: %/favicon.svg
+       mkdir -p $(dir $@) && \
        $(INKSCAPE) --export-width=256
 
-# Convert the logo to monochome only
-logo-monochrome.svg: logo.svg
-       sed "s/fill:[^;\"]*/fill:#000000/g; s/stroke:[^;\"]*/stroke:none/g" < $< > $@
-
-# Converts the logo to a plain SVG file without requiring the font
-monochrome/logo.svg: logo-monochrome.svg
-       mkdir -p $(dir $@)
-       $(INKSCAPE) \
-               --batch-process \
-               --actions="select-all;object-to-path;export-plain-svg"
-
-# Converts the logo to PDF
-monochrome/logo.pdf: logo-monochrome.svg
-       mkdir -p $(dir $@)
-       $(INKSCAPE)
-
-# Converts the logo to a transparent PNG image with 512x512 pixels
-monochrome/logo-512x512.png: logo-monochrome.svg
-       mkdir -p $(dir $@)
+%/favicon-512x512.png: %/favicon.svg
+       mkdir -p $(dir $@) && \
        $(INKSCAPE) --export-width=512
 
-monochrome/logo-1024x1024.png: logo-monochrome.svg
-       mkdir -p $(dir $@)
-       $(INKSCAPE) --export-width=1024
-
-monochrome/logo-2048x2048.png: logo-monochrome.svg
-       mkdir -p $(dir $@)
-       $(INKSCAPE) --export-width=1024
-
-# Convert the logo to use white only
-logo-inverted.svg: logo.svg
-       sed "s/fill:[^;\"]*/fill:#ffffff/g; s/stroke:[^;\"]*/stroke:none/g" < $< > $@
+# Convert the logo and favicon to monochome only
+%-monochrome.svg: %.svg
+       $(TO_MONOCHROME)
 
-# Converts the logo to a plain SVG file without requiring the font
-inverted/logo.svg: logo-inverted.svg
-       mkdir -p $(dir $@)
-       $(INKSCAPE) \
-               --batch-process \
-               --actions="select-all;object-to-path;export-plain-svg"
-
-# Converts the logo to PDF
-inverted/logo.pdf: logo-inverted.svg
-       mkdir -p $(dir $@)
-       $(INKSCAPE)
-
-# Converts the logo to a transparent PNG image with 512x512 pixels
-inverted/logo-512x512.png: logo-inverted.svg
-       mkdir -p $(dir $@)
-       $(INKSCAPE) --export-width=512
-
-inverted/logo-1024x1024.png: logo-inverted.svg
-       mkdir -p $(dir $@)
-       $(INKSCAPE) --export-width=1024
-
-inverted/logo-2048x2048.png: logo-inverted.svg
-       mkdir -p $(dir $@)
-       $(INKSCAPE) --export-width=1024
+# Convert the logo and favicon to use white only
+%-inverted.svg: %.svg
+       $(TO_INVERTED)
 
 .PHONY: clean
 clean:
        # Remove all generated objects
        rm -vf $(OBJECTS)
-       rm -vf logo-inverted.svg logo-monochrome.svg
+       rm -vf logo-inverted.svg logo-monochrome.svg favicon-inverted.svg favicon-monochrome.svg