summaryrefslogtreecommitdiff
path: root/icon/Makefile.am
blob: 516c547cb159c219d981565b305333c1c5889e51 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
JAVA_RES=16 32 48 64 128 256
MAC_RES=16 32 128 256 512
WIN_RES=16 24 32 48 64 72 96 128 180 256
RES=$(shell echo $(JAVA_RES) $(MAC_RES) $(WIN_RES) | awk '{ for (i = 1; i <= NF; i++) printf("%s\n", $$i); }' | sort -n -u)

# Application icon base names

AM_NAME		= altusmetrum-altosui
MP_NAME		= altusmetrum-micropeak
TG_NAME		= altusmetrum-telegps

# File icon base names

EEPROM_NAME	= application-vnd.altusmetrum.eeprom
TELEM_NAME	= application-vnd.altusmetrum.telemetry
MPD_NAME	= application-vnd.altusmetrum.micropeak

# Application icons

AM_ICON		= $(AM_NAME).svg
MP_ICON		= $(MP_NAME).svg
TG_ICON		= $(TG_NAME).svg

# File icons (note that MicroPeak uses the application icon for files)

EEPROM_ICON	= $(EEPROM_NAME).svg
TELEM_ICON	= $(TELEM_NAME).svg
MPD_ICON	= $(MPD_NAME).svg

# Files needed for Mac OSX icons

MAC_AM_FILES	= $(shell for i in $(MAC_RES); do echo $(AM_NAME)-$$i.png; done)
MAC_MP_FILES	= $(shell for i in $(MAC_RES); do echo $(MP_NAME)-$$i.png; done)
MAC_TG_FILES	= $(shell for i in $(MAC_RES); do echo $(TG_NAME)-$$i.png; done)
MAC_EEPROM_FILES= $(shell for i in $(MAC_RES); do echo $(EEPROM_NAME)-$$i.png; done)
MAC_TELEM_FILES	= $(shell for i in $(MAC_RES); do echo $(TELEM_NAME)-$$i.png; done)
MAC_MPD_FILES	= $(shell for i in $(MAC_RES); do echo $(MPD_NAME)-$$i.png; done)

ICNS_FILES	= $(AM_NAME).icns $(MP_NAME).icns $(TG_NAME).icns \
		  $(EEPROM_NAME).icns $(TELEM_NAME).icns $(MPD_NAME).icns

# Files needed for Windows icons

WIN_AM_FILES	= $(shell for i in $(WIN_RES); do echo $(AM_NAME)-$$i.png; done)
WIN_MP_FILES	= $(shell for i in $(WIN_RES); do echo $(MP_NAME)-$$i.png; done)
WIN_TG_FILES	= $(shell for i in $(WIN_RES); do echo $(TG_NAME)-$$i.png; done)
WIN_EEPROM_FILES= $(shell for i in $(WIN_RES); do echo $(EEPROM_NAME)-$$i.png; done)
WIN_TELEM_FILES	= $(shell for i in $(WIN_RES); do echo $(TELEM_NAME)-$$i.png; done)
WIN_MPD_FILES	= $(shell for i in $(WIN_RES); do echo $(MPD_NAME)-$$i.png; done)

ICO_FILES	= $(AM_NAME).ico $(MP_NAME).ico $(TG_NAME).ico \
		  $(EEPROM_NAME).ico $(TELEM_NAME).ico $(MPD_NAME).ico

EXE_FILES	= $(AM_NAME).exe $(MP_NAME).exe $(TG_NAME).exe \
		  $(EEPROM_NAME).exe $(TELEM_NAME).exe $(MPD_NAME).exe

# Files needed for Java internal icons

JAVA_AM_FILES	= $(shell for i in $(JAVA_RES); do echo $(AM_NAME)-$$i.png; done)
JAVA_MP_FILES	= $(shell for i in $(JAVA_RES); do echo $(MP_NAME)-$$i.png; done)
JAVA_TG_FILES	= $(shell for i in $(JAVA_RES); do echo $(TG_NAME)-$$i.png; done)

JAVA_FILES	= $(JAVA_AM_FILES) $(JAVA_MP_FILES) $(JAVA_TG_FILES)

# PNG files needed by anyone

AM_FILES	= $(shell for i in $(RES); do echo $(AM_NAME)-$$i.png; done)
MP_FILES	= $(shell for i in $(RES); do echo $(MP_NAME)-$$i.png; done)
TG_FILES	= $(shell for i in $(RES); do echo $(TG_NAME)-$$i.png; done)
EEPROM_FILES	= $(shell for i in $(RES); do echo $(EEPROM_NAME)-$$i.png; done)
TELEM_FILES	= $(shell for i in $(RES); do echo $(TELEM_NAME)-$$i.png; done)
IN_MPD_FILES	= $(shell for i in $(RES); do echo $(MPD_NAME)-$$i.png; done)

ICON_THEME=$(datadir)/icons/hicolor

appicondir = $(ICON_THEME)/scalable/apps
appicon_DATA = $(AM_ICON) $(MP_ICON) $(TG_ICON)

MIME_ICONS = $(EEPROM_ICON) $(TELEM_ICON) $(MPD_ICON)

mimeicondir = $(ICON_THEME)/scalable/mimetypes
mimeicon_DATA = $(MIME_ICONS)

mimedir = $(datadir)/mime/packages
mime_DATA = org-altusmetrum-mimetypes.xml

EXTRA_DIST = $(appicon_DATA) $(mimeicon_DATA) $(mime_DATA) windows-stub.c

res:
	echo $(RES)

java-altosui:
	@echo $(JAVA_AM_FILES)

java-micropeak:
	@echo $(JAVA_MP_FILES)

java-telegps:
	@echo $(JAVA_TG_FILES)

fat: all $(ICO_FILES) $(ICNS_FILES) $(EXE_FILES)

all-local: $(JAVA_FILES)

clean-local:
	$(RM) $(AM_NAME)-*.png $(TG_NAME)-*.png $(MP_NAME)-*.png
	$(RM) $(EEPROM_NAME)-*.png $(TELEM_NAME)-*.png $(MPD_NAME)-*.png
	$(RM) *.build *.ico *.rc *.icns *.o *.exe $(MPD_ICON)

install-data-hook:
	update-mime-database $(datadir)/mime
	update-icon-caches $(ICON_THEME)

$(MPD_ICON): $(MP_ICON)
	$(LN_S) $(MP_ICON) $@

$(AM_FILES): $(AM_NAME).build
$(MP_FILES): $(MP_NAME).build
$(TG_FILES): $(TG_NAME).build

SUFFIXES=.svg .build .icns .ico .rc .o .exe

.svg.build:
	for i in $(RES); do rsvg-convert -w $$i -h $$i -o $*-$$i.png $*.svg; done && touch $@

.build.icns:
	png2icns $@ $(shell for i in $(MAC_RES); do echo $*-$$i.png; done)

.build.ico:
	icotool -c -o $@ $(shell for i in $(WIN_RES); do echo $*-$$i.png; done)

.ico.rc:
	echo '101 ICON "$*.ico"' > $@

MINGCC32=i686-w64-mingw32-gcc
MINGWINDRES=i686-w64-mingw32-windres

.rc.o:
	$(MINGWINDRES) $*.rc $@

.o.exe:
	$(MINGCC32) -o $@ windows-stub.c $*.o