X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Makefile;h=659bf66281f16a38784529da8d9d3af79da022c0;hb=9c5924131d4447eb12f38bfa93bf323be5e7214b;hp=fbe196b70b106bf3d2239c942614a86b9e75ac90;hpb=7069226ac628ee44b32abdd6bdf08b93abadc387;p=slipway.git diff --git a/Makefile b/Makefile index fbe196b..659bf66 100644 --- a/Makefile +++ b/Makefile @@ -1,55 +1,111 @@ +ifeq ($(shell uname),Darwin) +linkerflags = -Wl,-framework -Wl,IOKit -Wl,-framework -Wl,CoreFoundation +jnilib = libFtdiUartNative.jnilib +else +linkerflags = +jnilib = libFtdiUartNative.so +endif -java = java -Djava.library.path=$(shell pwd)/lib/ -cp lib/RXTXcomm.jar:obits.jar +## slipway ############################################################################ -led0: obits.jar - $(java) edu.berkeley.obits.AtmelSerial < bitstreams/led0.md4 +run: slipway.jar + java -cp slipway.jar edu.berkeley.slipway.Demo -led1: obits.jar - $(java) edu.berkeley.obits.AtmelSerial < bitstreams/led1.md4 +build/src/com/ftdi/usb/FtdiUart.c: src/com/ftdi/usb/FtdiUart.i + mkdir -p `dirname $@` + mkdir -p src/com/ftdi/usb + swig -module FtdiUartNative -noproxy -package com.ftdi.usb -o $@ -outdir `dirname $@` -java $< -run: obits.jar - $(java) edu.berkeley.obits.AtmelSerial < stupid.md4 +build/$(jnilib): build/src/com/ftdi/usb/FtdiUart.c upstream/libusb/.built + gcc -I. -Iupstream/libftdi -Iupstream/usb \ + -I$(JAVA_HOME)/include \ + $< \ + upstream/libftdi/ftdi.c \ + upstream/libusb/.libs/libusb.a \ + $(linkerflags) \ + -o $@ -dynamiclib -framework JavaVM -obits.jar: $(shell find src -name \*.java) - javac -cp lib/RXTXcomm.jar -d build $(shell find src -name \*.java) +slipway.jar: build/$(jnilib) $(shell find src build/src -name \*.java) bitstreams/slipway_drone.bst + mkdir -p build + javac -d build $(shell find src build/src -name \*.java) + cp bitstreams/slipway_drone.bst build/edu/berkeley/slipway/ cd build; jar cvf ../$@ . -# -O3 is required; otherwise the poor AVR can't keep up with us! -avrdrone.hex: src/edu/berkeley/obits/device/atmel/AvrDrone.c - avr-gcc -O3 -mmcu=at94k $< - avr-objcopy -O ihex a.out $@ -demo: ftdi.jar - java -cp ftdi.jar edu.berkeley.obits.device.atmel.Demo -build/src/com/ftdi/usb/FtdiUart.c: src/com/ftdi/usb/FtdiUart.i +## libusb ############################################################################## + +upstream/libusb: mkdir -p `dirname $@` - mkdir -p src/com/ftdi/usb - swig -noproxy -package com.ftdi.usb -outdir `dirname $@` -java $< + cd upstream; curl http://umn.dl.sourceforge.net/sourceforge/libusb/libusb-0.1.12.tar.gz | tar -xvzf - + cd upstream; mv libusb-0.1.12 libusb -build/libFtdi.jnilib: build/src/com/ftdi/usb/FtdiUart.c - gcc -I. -I/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Headers/ \ - $< -o $@ -lftdi -dynamiclib -framework JavaVM +upstream/libusb/.built: upstream/libusb + cd upstream/libusb; \ + ./configure && \ + make + touch $@ + +#java = java -Djava.library.path=$(shell pwd)/lib/ -cp lib/RXTXcomm.jar:slipway.jar -javafiles := $(shell find src build/src -name \*.java) -ftdi.jar: $(javafiles) build/libFtdi.jnilib - mkdir -p build - javac -d build $(javafiles) - cd build; jar cvf ../$@ . -drone.hex: src/drone.c - avr-gcc -mmcu=at94k -O3 $< - avr-objcopy -O ihex a.out $@ +## for rebuilding usbdrone.hex ########################################################### -rcompile: - cp src/edu/berkeley/obits/device/atmel/usbdrone.c /afs/megacz.com/goliath/work/tmp/ - ssh research.cs.berkeley.edu 'cd /afs/megacz.com/goliath/work/tmp; avr-gcc -O3 -mmcu=at94k usbdrone.c; avr-objcopy -O ihex a.out usbdrone.hex' - cp /afs/megacz.com/goliath/work/tmp/usbdrone.hex /afs/research.cs.berkeley.edu/user/megacz/edu.berkeley.obits/usbdrone.hex +build/slipway_drone.hex: src/edu/berkeley/slipway/FtdiBoardSlave.c upstream/avr-libc/.built + upstream/prefix/bin/avr-gcc -O3 -mmcu=at94k $< -o $@.o + upstream/prefix/bin/avr-objcopy -O ihex $@.o $@ + +# this only works on my personal setup [adam] +bitstreams/slipway_drone.bst: build/slipway_drone.hex + cp $< /afs/research.cs.berkeley.edu/user/megacz/edu.berkeley.obits/usbdrone.hex fs flush /afs/research.cs.berkeley.edu/user/megacz/edu.berkeley.obits/usbdrone.hex echo okay... read rm /afs/research.cs.berkeley.edu/user/megacz/edu.berkeley.obits/usbdrone.hex - diff -u /afs/research.cs.berkeley.edu/user/megacz/stupid/fpslic_stupid.bst bitstreams/usbdrone.bst && exit -1; true - mv /afs/research.cs.berkeley.edu/user/megacz/stupid/fpslic_stupid.bst bitstreams/usbdrone.bst - make demo \ No newline at end of file + diff -u /afs/research.cs.berkeley.edu/user/megacz/stupid/fpslic_stupid.bst $@ && exit -1; true + mv /afs/research.cs.berkeley.edu/user/megacz/stupid/fpslic_stupid.bst $@ + touch $@ + + + +## avr-gcc toolchain and libc ################################################################ + +upstream/binutils: + cd upstream; curl http://ftp.gnu.org/pub/pub/pub/gnu/binutils/binutils-2.16.1.tar.bz2 | tar -xvjf - + cd upstream; mv binutils-2.16.1 binutils + +upstream/binutils/.built: upstream/binutils + mkdir -p upstream/prefix + cd upstream/binutils; \ + PATH=$$PATH:$(shell pwd)/upstream/prefix/bin \ + ./configure --prefix=$(shell pwd)/upstream/prefix --target=avr && \ + make && \ + make install + touch $@ + +upstream/gcc: + cd upstream; curl http://ftp.gnu.org/pub/gnu/gcc/gcc-4.0.3/gcc-core-4.0.3.tar.bz2 | tar -xvjf - + cd upstream; mv gcc-4.0.3 gcc + +upstream/gcc/.built: upstream/gcc upstream/binutils/.built + mkdir -p upstream/prefix + mkdir -p upstream/gcc-build + cd upstream/gcc-build; \ + PATH=$$PATH:$(shell pwd)/upstream/prefix/bin \ + ../gcc/configure --prefix=$(shell pwd)/upstream/prefix --target=avr && \ + PATH=$$PATH:$(shell pwd)/upstream/prefix/bin make && \ + PATH=$$PATH:$(shell pwd)/upstream/prefix/bin make install + touch $@ + +upstream/avr-libc: + cd upstream; curl http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.4.3.tar.bz2 | tar -xvjf - + cd upstream; mv avr-libc-1.4.3 avr-libc + +upstream/avr-libc/.built: upstream/avr-libc upstream/gcc/.built + cd upstream/avr-libc; \ + PATH=$$PATH:$(shell pwd)/upstream/prefix/bin \ + ./configure --prefix=$(shell pwd)/upstream/prefix --host=avr && \ + PATH=$$PATH:$(shell pwd)/upstream/prefix/bin make && \ + PATH=$$PATH:$(shell pwd)/upstream/prefix/bin make install + touch $@ \ No newline at end of file