summaryrefslogtreecommitdiff
path: root/altosui/Makefile-standalone
blob: e5f41639361259b989742b5114823bf0e336ff55 (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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
.SUFFIXES: .java .class

CLASSPATH=classes:./*:/usr/share/java/*
CLASSFILES=\
	Altos.class \
	AltosChannelMenu.class \
	AltosConfigFC.class \
	AltosConfigFCUI.class \
	AltosConvert.class \
	AltosCRCException.class \
	AltosCSV.class \
	AltosCSVUI.class \
	AltosDebug.class \
	AltosEepromDownload.class \
	AltosEepromMonitor.class \
	AltosEepromReader.class \
	AltosEepromRecord.class \
	AltosFile.class \
	AltosFlash.class \
	AltosFlashUI.class \
	AltosFlightInfoTableModel.class \
	AltosFlightStatusTableModel.class \
	AltosGPS.class \
	AltosGreatCircle.class \
	AltosHexfile.class \
	AltosLine.class \
	AltosInfoTable.class \
	AltosLog.class \
	AltosLogfileChooser.class \
	AltosParse.class \
	AltosPreferences.class \
	AltosReader.class \
	AltosRecord.class \
	AltosSerialMonitor.class \
	AltosSerial.class \
	AltosState.class \
	AltosStatusTable.class \
	AltosTelemetry.class \
	AltosTelemetryReader.class \
	AltosUI.class \
	AltosDevice.class \
	AltosDeviceDialog.class \
	AltosRomconfig.class \
	AltosRomconfigUI.class \
	AltosVoice.class

JAVA_ICONS=\
	../icon/altus-metrum-16.png \
	../icon/altus-metrum-32.png \
	../icon/altus-metrum-48.png \
	../icon/altus-metrum-64.png \
	../icon/altus-metrum-128.png \
	../icon/altus-metrum-256.png

WINDOWS_ICON=../icon/altus-metrum.ico

# where altosui.jar gets installed
ALTOSLIB=/usr/share/java

# where freetts.jar is to be found
FREETTSLIB=/usr/share/java

# all of the freetts files
FREETTSJAR= \
	$(FREETTSLIB)/cmudict04.jar \
	$(FREETTSLIB)/cmulex.jar \
	$(FREETTSLIB)/cmu_time_awb.jar \
	$(FREETTSLIB)/cmutimelex.jar \
	$(FREETTSLIB)/cmu_us_kal.jar \
	$(FREETTSLIB)/en_us.jar \
	$(FREETTSLIB)/freetts.jar

# The current hex files
HEXLIB=../src
HEXFILES = \
	$(HEXLIB)/telemetrum-v1.0.ihx \
	$(HEXLIB)/teledongle-v0.2.ihx

JAVAFLAGS=-Xlint:unchecked -Xlint:deprecation

ALTOSUIJAR = altosui.jar
FATJAR = fat/altosui.jar

OS:=$(shell uname)

LINUX_APP=altosui

DARWIN_ZIP=Altos-Mac.zip

WINDOWS_EXE=Altos-Windows.exe

LINUX_TGZ=Altos-Linux.tgz

all: altosui.jar $(LINUX_APP)
fat: altosui.jar $(LINUX_APP) $(DARWIN_ZIP) $(WINDOWS_EXE) $(LINUX_TGZ)

$(CLASSFILES):

.java.class:
	javac -encoding UTF8 -classpath "$(CLASSPATH)" $(JAVAFLAGS) $*.java

altosui.jar: classes/images classes/altosui classes/libaltosJNI $(CLASSFILES) Manifest.txt
	cd ./classes && jar cfm ../$@ altosui/Manifest.txt images/* altosui/*.class libaltosJNI/*.class

Manifest.txt: Makefile $(CLASSFILES)
	echo 'Main-Class: altosui.AltosUI' > $@
	echo "Class-Path: $(FREETTSLIB)/freetts.jar" >> $@

classes/altosui:
	mkdir -p classes
	ln -sf .. classes/altosui

classes/libaltosJNI:
	mkdir -p classes
	ln -sf ../libaltos/libaltosJNI classes/libaltosJNI

classes/images:
	mkdir -p classes/images
	ln -sf ../$(JAVA_ICONS) classes/images

altosui:
	echo "#!/bin/sh" > $@
	echo "exec java -Djava.library.path=/usr/lib/altos -jar /usr/share/java/altosui.jar" >> $@
	chmod +x ./altosui

fat/altosui:
	echo "#!/bin/sh" > $@
	echo 'ME=`which "$0"`' >> $@
	echo 'DIR=`dirname "$ME"`' >> $@
	echo 'exec java -Djava.library.path="$$DIR" -jar "$$DIR"/altosui.jar' >> $@
	chmod +x $@

fat/altosui.jar: $(CLASSFILES) $(JAVA_ICONS) fat/classes/Manifest.txt
	mkdir -p fat/classes
	test -L fat/classes/altosui || ln -sf ../.. fat/classes/altosui
	mkdir -p fat/classes/images
	cp $(JAVA_ICONS) fat/classes/images
	test -L fat/classes/libaltosJNI || ln -sf ../../libaltos/libaltosJNI fat/classes/libaltosJNI
	cd ./fat/classes && jar cfm ../../$@ Manifest.txt images/* altosui/*.class libaltosJNI/*.class

fat/classes/Manifest.txt: $(CLASSFILES) Makefile
	mkdir -p fat/classes
	echo 'Main-Class: altosui.AltosUI' > $@
	echo "Class-Path: freetts.jar" >> $@

install: altosui.jar altosui
	install -m 0644 altosui.jar $(DESTDIR)/usr/share/java/altosui.jar
	install -m 0644 altosui.1 $(DESTDIR)/usr/share/man/man1/altosui.1
	install altosui $(DESTDIR)/usr/bin/altosui

clean:
	rm -f *.class altosui.jar
	rm -f AltosUI.app/Contents/Resources/Java/*
	rm -rf classes
	rm -rf windows linux

distclean:	clean
	rm -f $(DARWIN_ZIP) $(WINDOWS_EXE) $(LINUX_TGZ)
	rm -rf darwin fat

FAT_FILES=$(FATJAR) $(FREETTSJAR) $(HEXFILES)

LINUX_FILES=$(FAT_FILES) libaltos/libaltos.so fat/altosui
$(LINUX_TGZ): $(LINUX_FILES)
	rm -f $@
	mkdir -p linux/AltOS
	rm -f linux/AltOS/*
	cp $(LINUX_FILES) linux/AltOS
	cd linux && tar czf ../$@ AltOS

DARWIN_RESOURCES=$(FATJAR) $(FREETTSJAR) libaltos/libaltos.dylib
DARWIN_EXTRA=$(HEXFILES)
DARWIN_FILES=$(DARWIN_RESOURCES) $(DARWIN_EXTRA)

$(DARWIN_ZIP): $(DARWIN_FILES)
	rm -f $@
	cp -a AltosUI.app darwin/
	mkdir -p darwin/AltosUI.app/Contents/Resources/Java
	cp $(DARWIN_RESOURCES) darwin/AltosUI.app/Contents/Resources/Java
	mkdir -p darwin/AltOS
	cp $(DARWIN_EXTRA) darwin/AltOS
	cd darwin && zip -r ../$@ AltosUI.app AltOS

WINDOWS_FILES = $(FAT_FILES) libaltos/altos.dll ../altusmetrum.inf $(WINDOWS_ICON)

$(WINDOWS_EXE): $(WINDOWS_FILES) altos-windows.nsi
	rm -f $@
	mkdir -p windows/AltOS
	rm -f windows/AltOS/*
	cp $(WINDOWS_FILES) windows/AltOS
	makensis altos-windows.nsi