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