5a8d7454a1db9a202907a1a623503a6513049459
[fw/altos] / ao-tools / altosui / Makefile
1 .SUFFIXES: .java .class
2
3 CLASSPATH=classes:./*:/usr/share/java/*
4 CLASSFILES=\
5         Altos.class \
6         AltosChannelMenu.class \
7         AltosConfig.class \
8         AltosConfigUI.class \
9         AltosConvert.class \
10         AltosCSV.class \
11         AltosCSVUI.class \
12         AltosDebug.class \
13         AltosEepromDownload.class \
14         AltosEepromMonitor.class \
15         AltosEepromReader.class \
16         AltosEepromRecord.class \
17         AltosFile.class \
18         AltosFlash.class \
19         AltosFlashUI.class \
20         AltosFlightInfoTableModel.class \
21         AltosFlightStatusTableModel.class \
22         AltosGPS.class \
23         AltosGreatCircle.class \
24         AltosHexfile.class \
25         AltosLog.class \
26         AltosLogfileChooser.class \
27         AltosParse.class \
28         AltosPreferences.class \
29         AltosRecord.class \
30         AltosSerialMonitor.class \
31         AltosSerial.class \
32         AltosState.class \
33         AltosTelemetry.class \
34         AltosTelemetryReader.class \
35         AltosUI.class \
36         AltosDevice.class \
37         AltosDeviceDialog.class \
38         AltosRomconfig.class \
39         AltosRomconfigUI.class \
40         AltosVoice.class
41
42 # where altosui.jar gets installed
43 ALTOSLIB=/usr/share/java
44
45 # where freetts.jar is to be found
46 FREETTSLIB=/usr/share/java
47
48 # all of the freetts files
49 FREETTSJAR= \
50         $(FREETTSLIB)/cmudict04.jar \
51         $(FREETTSLIB)/cmulex.jar \
52         $(FREETTSLIB)/cmu_time_awb.jar \
53         $(FREETTSLIB)/cmutimelex.jar \
54         $(FREETTSLIB)/cmu_us_kal.jar \
55         $(FREETTSLIB)/en_us.jar \
56         $(FREETTSLIB)/freetts.jar
57
58 # The current hex files
59 HEXLIB=../../src
60 HEXFILES = \
61         $(HEXLIB)/telemetrum-v1.0.ihx \
62         $(HEXLIB)/teledongle-v0.2.ihx
63
64 JAVAFLAGS=-Xlint:unchecked -Xlint:deprecation
65
66 ALTOSUIJAR = altosui.jar
67 FATJAR = fat/altosui.jar
68
69 OS:=$(shell uname)
70
71 LINUX_APP=altosui
72
73 DARWIN_ZIP=Altos-Mac.zip
74
75 WINDOWS_ZIP=Altos-Windows.zip
76
77 LINUX_TGZ=Altos-Linux.tgz
78
79 all: altosui.jar $(LINUX_APP)
80 fat: altosui.jar $(LINUX_APP) $(DARWIN_ZIP) $(WINDOWS_ZIP) $(LINUX_TGZ)
81
82 $(CLASSFILES):
83
84 .java.class:
85         javac -encoding UTF8 -classpath "$(CLASSPATH)" $(JAVAFLAGS) $*.java
86
87 altosui.jar: classes/altosui classes/libaltosJNI $(CLASSFILES) Manifest.txt
88         cd ./classes && jar cfm ../$@ altosui/Manifest.txt altosui/*.class libaltosJNI/*.class
89
90 Manifest.txt: Makefile $(CLASSFILES)
91         echo 'Main-Class: altosui.AltosUI' > $@
92         echo "Class-Path: $(FREETTSLIB)/freetts.jar" >> $@
93
94 classes/altosui:
95         mkdir -p classes
96         ln -sf .. classes/altosui
97
98 classes/libaltosJNI:
99         mkdir -p classes
100         ln -sf ../../libaltos/libaltosJNI classes/libaltosJNI
101
102 altosui:
103         echo "#!/bin/sh" > $@
104         echo "exec java -Djava.library.path=/usr/lib/altos -jar /usr/share/java/altosui.jar" >> $@
105         chmod +x ./altosui
106
107 fat/altosui:
108         echo "#!/bin/sh" > $@
109         echo 'ME=`which "$0"`' >> $@
110         echo 'DIR=`dirname "$ME"`' >> $@
111         echo 'exec java -Djava.library.path="$$DIR" -jar "$$DIR"/altosui.jar' >> $@
112         chmod +x $@
113
114 fat/altosui.jar: $(CLASSFILES) fat/classes/Manifest.txt
115         mkdir -p fat/classes
116         test -L fat/classes/altosui || ln -sf ../.. fat/classes/altosui
117         test -L fat/classes/libaltosJNI || ln -sf ../../../libaltos/libaltosJNI fat/classes/libaltosJNI
118         cd ./fat/classes && jar cfm ../../$@ Manifest.txt altosui/*.class libaltosJNI/*.class
119
120 fat/classes/Manifest.txt: $(CLASSFILES) Makefile
121         mkdir -p fat/classes
122         echo 'Main-Class: altosui.AltosUI' > $@
123         echo "Class-Path: freetts.jar" >> $@
124
125 install: altosui.jar altosui
126         install -m 0644 altosui.jar $(DESTDIR)/usr/share/java/altosui.jar
127         install -m 0644 altosui.1 $(DESTDIR)/usr/share/man/man1/altosui.1
128         install altosui $(DESTDIR)/usr/bin/altosui
129
130 clean:
131         rm -f *.class altosui.jar
132         rm -f AltosUI.app/Contents/Resources/Java/*
133         rm -rf classes
134         rm -rf windows linux
135
136 FAT_FILES=$(FATJAR) $(FREETTSJAR) $(HEXFILES)
137
138 LINUX_FILES=$(FAT_FILES) ../libaltos/libaltos.so fat/altosui
139 $(LINUX_TGZ): $(LINUX_FILES)
140         rm -f $@
141         mkdir -p linux/AltOS
142         rm -f linux/AltOS/*
143         cp $(LINUX_FILES) linux/AltOS
144         cd linux && tar czf ../$@ AltOS
145
146 DARWIN_RESOURCES=$(FATJAR) $(FREETTSJAR) ../libaltos/libaltos.dylib
147 DARWIN_EXTRA=$(HEXFILES)
148 DARWIN_FILES=$(DARWIN_RESOURCES) $(DARWIN_EXTRA)
149
150 $(DARWIN_ZIP): $(DARWIN_FILES)
151         rm -f $@
152         cp -a AltosUI.app darwin/
153         mkdir -p darwin/AltosUI.app/Contents/Resources/Java
154         cp $(DARWIN_RESOURCES) darwin/AltosUI.app/Contents/Resources/Java
155         mkdir -p darwin/AltOS
156         cp $(DARWIN_EXTRA) darwin/AltOS
157         cd darwin && zip -j -r ../$@ AltosUI.app AltOS
158
159 WINDOWS_FILES = $(FAT_FILES) ../libaltos/altos.dll ../../telemetrum.inf
160
161 $(WINDOWS_ZIP): $(WINDOWS_FILES)
162         rm -f $@
163         mkdir -p windows/AltOS
164         rm -f windows/AltOS/*
165         cp $(WINDOWS_FILES) windows/AltOS
166         cd windows && zip -j -r ../$@ AltOS