1 # Makefile for the PuTTY icon suite.
3 ICONS = putty puttycfg puttygen pscp pageant pterm ptermcfg puttyins
6 MODE = # override to -it on command line for opaque testing
8 PAMS = $(foreach I,$(ICONS),$(foreach S,$(SIZES),$(I)-$(S).pam))
9 MONOPAMS = $(foreach I,$(ICONS),$(foreach S,$(SIZES),$(I)-$(S)-mono.pam))
10 TRUEPAMS = $(foreach I,$(ICONS),$(foreach S,$(SIZES),$(I)-$(S)-true.pam))
12 PNGS = $(patsubst %.pam,%.png,$(PAMS))
13 MONOPNGS = $(patsubst %.pam,%.png,$(MONOPAMS))
14 TRUEPNGS = $(patsubst %.pam,%.png,$(TRUEPAMS))
16 ICOS = putty.ico puttygen.ico pscp.ico pageant.ico pageants.ico puttycfg.ico \
18 ICNS = PuTTY.icns Pterm.icns
19 CICONS = xpmputty.c xpmpucfg.c xpmpterm.c xpmptcfg.c
23 all: pngs monopngs base icns # truepngs currently disabled by default
37 $(PAMS): %.pam: mkicon.py
38 ./mkicon.py $(MODE) $(join $(subst -, ,$(basename $@)),_icon) $@
40 $(PNGS) $(MONOPNGS) $(TRUEPNGS): %.png: %.pam
43 $(MONOPAMS): %.pam: mkicon.py
44 ./mkicon.py -2 $(MODE) $(join $(subst -, ,$(subst -mono,,$(basename $@))),_icon) $@
46 $(TRUEPAMS): %.pam: mkicon.py
47 ./mkicon.py -T $(MODE) $(join $(subst -, ,$(subst -true,,$(basename $@))),_icon) $@
49 putty.ico: putty-16.png putty-32.png putty-48.png \
50 putty-16-mono.png putty-32-mono.png putty-48-mono.png
51 ./icon.pl -4 $(filter-out %-mono.png, $^) -1 $(filter %-mono.png, $^) > $@
53 puttycfg.ico: puttycfg-16.png puttycfg-32.png puttycfg-48.png \
54 puttycfg-16-mono.png puttycfg-32-mono.png puttycfg-48-mono.png
55 ./icon.pl -4 $(filter-out %-mono.png, $^) -1 $(filter %-mono.png, $^) > $@
57 puttygen.ico: puttygen-16.png puttygen-32.png puttygen-48.png \
58 puttygen-16-mono.png puttygen-32-mono.png puttygen-48-mono.png
59 ./icon.pl -4 $(filter-out %-mono.png, $^) -1 $(filter %-mono.png, $^) > $@
61 pageant.ico: pageant-16.png pageant-32.png pageant-48.png \
62 pageant-16-mono.png pageant-32-mono.png pageant-48-mono.png
63 ./icon.pl -4 $(filter-out %-mono.png, $^) -1 $(filter %-mono.png, $^) > $@
65 pageants.ico: pageant-16.png pageant-16-mono.png
66 ./icon.pl -4 $(filter-out %-mono.png, $^) -1 $(filter %-mono.png, $^) > $@
68 pscp.ico: pscp-16.png pscp-32.png pscp-48.png \
69 pscp-16-mono.png pscp-32-mono.png pscp-48-mono.png
70 ./icon.pl -4 $(filter-out %-mono.png, $^) -1 $(filter %-mono.png, $^) > $@
72 # Because the installer icon makes heavy use of brown when drawing
73 # the cardboard box, it's worth having 8-bit versions of it in
74 # addition to the 4- and 1-bit ones.
75 puttyins.ico: puttyins-16.png puttyins-32.png puttyins-48.png \
76 puttyins-16-mono.png puttyins-32-mono.png \
77 puttyins-48-mono.png \
78 puttyins-16-true.png puttyins-32-true.png \
80 ./icon.pl -8 $(filter %-true.png, $^) \
81 -4 $(filter-out %-true.png, $(filter-out %-mono.png, $^)) \
82 -1 $(filter %-mono.png, $^) > $@
84 # Icon for the website. (This isn't linked into "make all".)
85 website.ico: putty-16.png
88 xpmputty.c: putty-16.png putty-32.png putty-48.png
89 ./cicon.pl main_icon $^ > $@
91 xpmpucfg.c: puttycfg-16.png puttycfg-32.png puttycfg-48.png
92 ./cicon.pl cfg_icon $^ > $@
94 xpmpterm.c: pterm-16.png pterm-32.png pterm-48.png
95 ./cicon.pl main_icon $^ > $@
97 xpmptcfg.c: ptermcfg-16.png ptermcfg-32.png ptermcfg-48.png
98 ./cicon.pl cfg_icon $^ > $@
100 PuTTY.icns: putty-16-mono.pam putty-16.pam \
101 putty-32-mono.pam putty-32.pam \
102 putty-48-mono.pam putty-48.pam \
104 ./macicon.py mono:putty-16-mono.pam colour:putty-16.pam \
105 mono:putty-32-mono.pam colour:putty-32.pam \
106 mono:putty-48-mono.pam colour:putty-48.pam \
107 colour:putty-128.pam \
110 Pterm.icns: pterm-16-mono.pam pterm-16.pam \
111 pterm-32-mono.pam pterm-32.pam \
112 pterm-48-mono.pam pterm-48.pam \
114 ./macicon.py mono:pterm-16-mono.pam colour:pterm-16.pam \
115 mono:pterm-32-mono.pam colour:pterm-32.pam \
116 mono:pterm-48-mono.pam colour:pterm-48.pam \
117 colour:pterm-128.pam \
121 rm -f *.pam *.png *.ico *.icns *.c