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