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