update urls for upstream code
[slipway.git] / Makefile
1 ifeq ($(shell uname),Darwin)
2 linkerflags = -Wl,-framework -Wl,IOKit -Wl,-framework -Wl,CoreFoundation
3 jnilib      = libFtdiUartNative.jnilib
4 else
5 linkerflags =
6 jnilib      = libFtdiUartNative.so
7 endif
8
9 ## slipway ############################################################################
10
11 run: slipway.jar 
12         java -cp slipway.jar edu.berkeley.slipway.Demo 30
13
14 demo: slipway.jar 
15         java -cp slipway.jar edu.berkeley.slipway.Demo2 30
16
17 build/src/com/ftdi/usb/FtdiUart.c: src/com/ftdi/usb/FtdiUart.i
18         mkdir -p `dirname $@`
19         mkdir -p src/com/ftdi/usb
20         swig -module FtdiUartNative -noproxy -package com.ftdi.usb -o $@ -outdir `dirname $@` -java $<
21
22 build/$(jnilib): build/src/com/ftdi/usb/FtdiUart.c upstream/libusb/.built
23         gcc -I. -Iupstream/libftdi -Iupstream/libusb \
24                 -I$(JAVA_HOME)/include \
25                 $< \
26                 upstream/libftdi/ftdi.c \
27                 upstream/libusb/.libs/libusb.a \
28                 $(linkerflags) \
29                 -o $@ -dynamiclib -framework JavaVM
30
31 slipway.jar: build/$(jnilib) $(shell find src build/src -name \*.java) misc/slipway_drone.bst
32         mkdir -p build
33         $(javac) -d build $(shell find src build/src -name \*.java)
34         cp misc/slipway_drone.bst build/edu/berkeley/slipway/
35         cd build; jar cvf ../$@ .
36
37
38
39 ## libusb ##############################################################################
40
41 upstream/libusb:
42         mkdir -p `dirname $@`
43         cd upstream; curl http://voxel.dl.sourceforge.net/sourceforge/libusb/libusb-0.1.12.tar.gz | tar -xvzf -
44         cd upstream; mv libusb-0.1.12 libusb
45
46 upstream/libusb/.built: upstream/libusb
47         cd upstream/libusb; \
48                 ./configure && \
49                 make
50         touch $@
51
52 javac = javac -cp upstream/jhdl-edifparser.jar
53 #java = java -Djava.library.path=$(shell pwd)/lib/ -cp lib/RXTXcomm.jar:slipway.jar
54
55
56
57 ## for rebuilding usbdrone.hex ###########################################################
58
59 build/slipway_drone.hex: src/edu/berkeley/slipway/FtdiBoardSlave.c  upstream/avr-libc/.built
60         upstream/prefix/bin/avr-gcc -O3 -mmcu=at94k $< -o $@.o
61         upstream/prefix/bin/avr-objcopy -O ihex $@.o $@
62
63 # this only works on my personal setup [adam]
64 misc/slipway_drone.bst: build/slipway_drone.hex
65         cp $<    /afs/research.cs.berkeley.edu/user/megacz/slipway/$<
66         fs flush /afs/research.cs.berkeley.edu/user/megacz/slipway/$<
67         echo okay...
68         read
69         rm /afs/research.cs.berkeley.edu/user/megacz/slipway/$<
70         diff -u /afs/research.cs.berkeley.edu/user/megacz/slipway/$@ $@ && \
71                 exit -1; true
72         mv /afs/research.cs.berkeley.edu/user/megacz/slipway/$@ $@
73         touch $@
74
75
76
77 ## avr-gcc toolchain and libc ################################################################
78
79 upstream/binutils:
80         cd upstream; curl http://ftp.gnu.org/pub/pub/pub/gnu/binutils/binutils-2.16.1.tar.bz2 | tar -xvjf -
81         cd upstream; mv binutils-2.16.1 binutils
82
83 upstream/binutils/.built: upstream/binutils
84         mkdir -p upstream/prefix
85         cd upstream/binutils; \
86                 PATH=$$PATH:$(shell pwd)/upstream/prefix/bin \
87                 ./configure --prefix=$(shell pwd)/upstream/prefix --target=avr && \
88                 make && \
89                 make install
90         touch $@
91
92 upstream/gcc:
93         cd upstream; curl http://ftp.gnu.org/pub/gnu/gcc/gcc-4.0.3/gcc-core-4.0.3.tar.bz2 | tar -xvjf -
94         cd upstream; mv gcc-4.0.3 gcc
95
96 upstream/gcc/.built: upstream/gcc upstream/binutils/.built
97         mkdir -p upstream/prefix
98         mkdir -p upstream/gcc-build
99         cd upstream/gcc-build; \
100                 PATH=$$PATH:$(shell pwd)/upstream/prefix/bin \
101                 ../gcc/configure --prefix=$(shell pwd)/upstream/prefix --target=avr && \
102                 PATH=$$PATH:$(shell pwd)/upstream/prefix/bin make && \
103                 PATH=$$PATH:$(shell pwd)/upstream/prefix/bin make install
104         touch $@
105
106 upstream/avr-libc:
107         cd upstream; curl http://nongnu.askapache.com/avr-libc/avr-libc-1.4.3.tar.bz2 | tar -xvjf -
108         cd upstream; mv avr-libc-1.4.3 avr-libc
109
110 upstream/avr-libc/.built: upstream/avr-libc upstream/gcc/.built
111         cd upstream/avr-libc; \
112                 PATH=$$PATH:$(shell pwd)/upstream/prefix/bin \
113                 ./configure --prefix=$(shell pwd)/upstream/prefix --host=avr && \
114                 PATH=$$PATH:$(shell pwd)/upstream/prefix/bin make && \
115                 PATH=$$PATH:$(shell pwd)/upstream/prefix/bin make install
116         touch $@
117
118 mpardemo: upstream/jhdl-edifparser.jar slipway.jar
119         iverilog  -t fpga -s main -o out.edf misc/mpardemo.v
120         java -cp slipway.jar:upstream/jhdl-edifparser.jar edu.berkeley.slipway.mpar.MPARDemo out.edf
121
122
123 ## edif parser ##########################################################################
124
125 upstream/jhdl-edifparser.jar:
126         mkdir -p upstream
127         curl -o $@- http://reliability.ee.byu.edu/edif/jars/release_0.3.0/edif-0.3.0.jar
128         mv $@- $@
129
130 ## javadoc ##############################################################################
131
132 javadoc:
133         rm -rf doc/api
134         mkdir -p doc/api
135         javadoc \
136                 -linksource \
137                 -windowtitle "abits" \
138                 -sourcepath src \
139                 -public \
140                 -notree \
141                 -noindex \
142                 -nonavbar \
143                 -noqualifier all \
144                 -d doc/api \
145                 `find src -name \*.java`