.SUFFIXES: .java .class CLASSPATH=classes:./*:/usr/share/java/* CLASSFILES=\ Altos.class \ AltosChannelMenu.class \ AltosConfig.class \ AltosConfigUI.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