summaryrefslogtreecommitdiff
path: root/ao-tools/altosui/Makefile
blob: 5a8d7454a1db9a202907a1a623503a6513049459 (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
.SUFFIXES: .java .class

CLASSPATH=classes:./*:/usr/share/java/*
CLASSFILES=\
	Altos.class \
	AltosChannelMenu.class \
	AltosConfig.class \
	AltosConfigUI.class \
	AltosConvert.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 \
	AltosLog.class \
	AltosLogfileChooser.class \
	AltosParse.class \
	AltosPreferences.class \
	AltosRecord.class \
	AltosSerialMonitor.class \
	AltosSerial.class \
	AltosState.class \
	AltosTelemetry.class \
	AltosTelemetryReader.class \
	AltosUI.class \
	AltosDevice.class \
	AltosDeviceDialog.class \
	AltosRomconfig.class \
	AltosRomconfigUI.class \
	AltosVoice.class

# 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_ZIP=Altos-Windows.zip

LINUX_TGZ=Altos-Linux.tgz

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

$(CLASSFILES):

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

altosui.jar: classes/altosui classes/libaltosJNI $(CLASSFILES) Manifest.txt
	cd ./classes && jar cfm ../$@ altosui/Manifest.txt 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

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) fat/classes/Manifest.txt
	mkdir -p fat/classes
	test -L fat/classes/altosui || ln -sf ../.. fat/classes/altosui
	test -L fat/classes/libaltosJNI || ln -sf ../../../libaltos/libaltosJNI fat/classes/libaltosJNI
	cd ./fat/classes && jar cfm ../../$@ Manifest.txt 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

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 -j -r ../$@ AltosUI.app AltOS

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

$(WINDOWS_ZIP): $(WINDOWS_FILES)
	rm -f $@
	mkdir -p windows/AltOS
	rm -f windows/AltOS/*
	cp $(WINDOWS_FILES) windows/AltOS
	cd windows && zip -j -r ../$@ AltOS