continue even if rm's don't have anything to do
[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 altosui.jar $(LINUX_APP) $(DARWIN_ZIP) $(WINDOWS_ZIP) $(LINUX_TGZ)
80
81 $(CLASSFILES):
82
83 .java.class:
84         javac -encoding UTF8 -classpath "$(CLASSPATH)" $(JAVAFLAGS) $*.java
85
86 altosui.jar: classes/altosui classes/libaltosJNI $(CLASSFILES) Manifest.txt
87         cd ./classes && jar cfm ../$@ altosui/Manifest.txt altosui/*.class libaltosJNI/*.class
88
89 Manifest.txt: Makefile $(CLASSFILES)
90         echo 'Main-Class: altosui.AltosUI' > $@
91         echo "Class-Path: $(FREETTSLIB)/freetts.jar" >> $@
92
93 classes/altosui:
94         mkdir -p classes
95         ln -sf .. classes/altosui
96
97 classes/libaltosJNI:
98         mkdir -p classes
99         ln -sf ../../libaltos/libaltosJNI classes/libaltosJNI
100
101 altosui:
102         echo "#!/bin/sh" > $@
103         echo "exec java -Djava.library.path=/usr/lib/altos -jar /usr/share/java/altosui.jar" >> $@
104         chmod +x ./altosui
105
106 fat/altosui:
107         echo "#!/bin/sh" > $@
108         echo 'ME=`which "$0"`' >> $@
109         echo 'DIR=`dirname "$ME"`' >> $@
110         echo 'exec java -Djava.library.path="$$DIR" -jar "$$DIR"/altosui.jar' >> $@
111         chmod +x $@
112
113 fat/altosui.jar: $(CLASSFILES) fat/classes/Manifest.txt
114         mkdir -p fat/classes
115         test -L fat/classes/altosui || ln -sf ../.. fat/classes/altosui
116         test -L fat/classes/libaltosJNI || ln -sf ../../../libaltos/libaltosJNI fat/classes/libaltosJNI
117         cd ./fat/classes && jar cfm ../../$@ Manifest.txt altosui/*.class libaltosJNI/*.class
118
119 fat/classes/Manifest.txt: $(CLASSFILES) Makefile
120         mkdir -p fat/classes
121         echo 'Main-Class: altosui.AltosUI' > $@
122         echo "Class-Path: freetts.jar" >> $@
123
124 install: altosui.jar altosui
125         /usr/bin/install -m 0644 altosui.jar $(DESTDIR)/usr/share/java/altosui.jar
126         /usr/bin/install -m 0644 altosui.1 $(DESTDIR)/usr/share/man/man1/altosui.1
127         /usr/bin/install altosui $(DESTDIR)/usr/bin/altosui
128
129 clean:
130         rm -f *.class altosui.jar
131         rm -f AltosUI.app/Contents/Resources/Java/*
132         rm -rf classes
133         rm -rf windows linux
134
135 FAT_FILES=$(FATJAR) $(FREETTSJAR) $(HEXFILES)
136
137 LINUX_FILES=$(FAT_FILES) ../libaltos/libaltos.so fat/altosui
138 $(LINUX_TGZ): $(LINUX_FILES)
139         rm -f $@
140         mkdir -p linux/AltOS
141         rm -f linux/AltOS/*
142         cp $(LINUX_FILES) linux/AltOS
143         cd linux && tar czf ../$@ AltOS
144
145 DARWIN_RESOURCES=$(FATJAR) $(FREETTSJAR) ../libaltos/libaltos.dylib
146 DARWIN_EXTRA=$(HEXFILES)
147 DARWIN_FILES=$(DARWIN_RESOURCES) $(DARWIN_EXTRA)
148
149 $(DARWIN_ZIP): $(DARWIN_FILES)
150         rm -f $@
151         cp -a AltosUI.app darwin/
152         mkdir -p darwin/AltosUI.app/Contents/Resources/Java
153         cp $(DARWIN_RESOURCES) darwin/AltosUI.app/Contents/Resources/Java
154         mkdir -p darwin/AltOS
155         cp $(DARWIN_EXTRA) darwin/AltOS
156         cd darwin && zip -j -r ../$@ AltosUI.app AltOS
157
158 WINDOWS_FILES = $(FAT_FILES) ../libaltos/altos.dll ../../telemetrum.inf
159
160 $(WINDOWS_ZIP): $(WINDOWS_FILES)
161         rm -f $@
162         mkdir -p windows/AltOS
163         rm -f windows/AltOS/*
164         cp $(WINDOWS_FILES) windows/AltOS
165         cd windows && zip -j -r ../$@ AltOS