http://gimel.esc.cam.ac.uk/james/rpld/src/rpld-1.3.tar.gz
[rpld.git] / Makefile
1
2 # /*************************************************
3 # *     rpld - an IBM style RIPL server            *
4 # *************************************************/
5
6 # /* Copyright (c) 1999, James McKenzie.
7 #  *                      All rights reserved
8 #  * Copyright (c) 1998, Christopher Lightfoot.
9 #  *                      All rights reserved
10 #  *
11 #  * By using this file, you agree to the terms and conditions set
12 #  * forth in the LICENCE file which can be found at the top level of
13 #  * the rpld distribution.
14 #  *
15 #  * IBM is a trademark of IBM corp.
16 #  *
17 #  */
18
19 #
20 # $Id: Makefile,v 1.16 1999/09/26 10:46:57 root Exp root $
21 #
22 # $Log: Makefile,v $
23 # Revision 1.16  1999/09/26 10:46:57  root
24 # #
25 #
26 # Revision 1.15  1999/09/21 11:39:32  root
27 # #
28 #
29 # Revision 1.14  1999/09/15 13:46:58  root
30 # #
31 #
32 # Revision 1.13  1999/09/15 00:36:29  root
33 # #
34 #
35 # Revision 1.12  1999/09/14 21:45:17  root
36 # #
37 #
38 # Revision 1.11  1999/09/14 21:38:41  root
39 # #
40 #
41 # Revision 1.10  1999/09/14 21:36:03  root
42 # #
43 #
44 # Revision 1.9  1999/09/14 21:32:13  root
45 # #
46 #
47 # Revision 1.8  1999/09/14 21:26:00  root
48 # #
49 #
50 # Revision 1.7  1999/09/14 21:16:25  root
51 # #
52 #
53 # Revision 1.6  1999/09/14 21:14:38  root
54 # #
55 #
56 # Revision 1.5  1999/09/14 21:13:14  root
57 # #
58 #
59 # Revision 1.4  1999/09/14 17:18:27  root
60 # #
61 #
62 # Revision 1.3  1999/09/14 17:12:39  root
63 # #
64 #
65 # Revision 1.2  1999/09/14 16:17:16  root
66 # #
67 #
68 # Revision 1.1  1999/09/13 12:36:20  root
69 # #
70 #
71 #
72
73 # EDITME: this is the delay between transmitted packets in us 
74 # you may need to edit this if your clients are slow 
75 # if a client drops a packet it will typically wait 1s and then 
76 # issue a retransmit request causing a delay. 
77 # do make clean after changing this
78
79 DEFINES=-DPACKET_DELAY=0
80
81 # where do you want all this stuff
82
83 DESTDIR=/usr
84
85 # Stuff
86 CC       = gcc
87 INCLUDES = 
88 CFLAGS   = -O ${INCLUDES} ${DEFINES}
89 LIBS     =
90 LDFLAGS  =
91
92 # Where to find yacc and lex
93 YACC=yacc
94 LEX=lex
95
96 # Where to find BSD compatible install
97 INSTALL=install
98
99 ################# NO USER SERVICABLE PARTS BELOW HERE
100
101 VERSION=1.3
102
103 COFLAGS = -l
104
105 default:do-it-all
106
107 ifeq (.depend,$(wildcard .depend))
108 include .depend
109 do-it-all: all
110         @echo " " Now type make install to install rpld
111         @echo " " or make nics to assemble the adapter utilities
112         @echo " " or make capture to capture RPL traffic
113         @echo " " or make replay to analyse captured RPL traffic
114         @echo " " or make realtime to capture and analyse RPL traffic
115 else
116 do-it-all: depend
117         @echo " " Now type make again to build rpld
118 endif
119
120 BINDIR= ${DESTDIR}/sbin
121 NROFF=  groff -Tascii
122 NRCLN = sed 's/.\b//g'
123 MANDOC= -mandoc
124 INSTALL=install
125 BINOWN= root
126 BINGRP= kmem
127 BINMODE=555
128
129 MANOWN= bin
130 MANGRP= bin
131 MANMODE=444
132
133 MANROOT=${DESTDIR}/man/man
134 MAN8=   ${MANROOT}8
135 MAN8EXT=8
136 MAN8SRC=man
137 MAN5=   ${MANROOT}5
138 MAN5EXT=5
139 MAN5SRC=man
140
141 PROTOSRC = protocol.c linux-ps.c rpld.c util.c rpl.c llc.c client.c config.c
142 HSRCS=rpl.h project.h rpl.h linux-ps.h llc.h client.h 
143
144 CSRCS=${PROTOSRC} 
145
146 YSRCS=rpld_conf.y
147 LSRCS=rpld_conf.lex
148 MANSRCS=rpld.man rpld.conf.man
149
150 ALLSRCS=${CSRCS}
151
152 RCSCFILES=${CSRCS} ${HSRCS}
153 RCSFILES=${RCSCFILES} ${YSRCS} ${LSRCS} ${MANSRCS} ana.c
154
155
156 PROTOH=prototypes.h
157
158 PROG=rpld
159
160 OBJS=${CSRCS:%.c=%.o} ${YSRCS:%.y=%.yy.o} ${LSRCS:%.lex=%.tab.o}
161
162 YGUFF=${YSRCS:%.y=%.yy.c} ${LSRCS:%.lex=%.tab.c} ${LSRCS:%.lex=%.tab.h}
163
164 all:${PROG} ana doc
165
166
167
168
169 install: install-prog install-docs
170         @echo " " you can find a sample configuration file
171         @echo " " in this directory called rpld.conf.sample
172         @echo " " your config file should be placed in /etc/rpld.conf
173
174 MEN=rpld.conf.5 rpld.8
175 TXTMEN=${MEN:%=doc/%}
176
177 doc:${MEN} 
178
179 doc/rpld.8:rpld.man
180         ${NROFF} ${MANDOC} $< | ${NRCLN} > $@
181 doc/rpld.conf.5:rpld.conf.man
182         ${NROFF} ${MANDOC} $< | ${NRCLN} > $@
183
184 %.${MAN8EXT}:%.${MAN8SRC}
185         cp $< $@
186
187 %.${MAN5EXT}:%.${MAN5SRC}
188         cp $< $@
189
190 install-prog:${PROG}
191         ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} ${PROG} ${BINDIR}
192
193 install-docs: doc
194         ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} rpld.${MAN8EXT} ${MAN8}/rpld.${MAN8EXT}
195         ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} rpld.conf.${MAN5EXT} ${MAN5}/rpld.conf.${MAN5EXT}
196
197 ana:ana.c
198
199 realtime: ana
200         tcpdump -l -x -s 2048 ether[14]=0xfc and ether[15]=0xfc | ana
201
202 capture: 
203         tcpdump -x -s 2048 ether[14]=0xfc and ether[15]=0xfc -w capture.dat
204
205 replay: ana capture.dat
206         tcpdump -x -r capture.dat | ana
207
208
209 nics: nics.doesntexist
210
211 nics.doesntexist:
212         ${MAKE} -C nics
213
214 ${PROG}:${OBJS}
215         ${CC} ${CFLAGS} ${LDFLAGS} -o ${PROG} ${OBJS} ${LIBS}
216
217 clean: nodep
218         /bin/rm -rf ${OBJS} *% *~ *.o *.BAK core a.out ${PROG}
219         /bin/rm -rf ${YSRCS:%.y=%.yy.c} ${LSRCS:%.lex=%.tab.c}
220         /bin/rm -rf ${LSRCS:%.lex=%.tab.h}
221         /bin/rm -rf ana capture.dat
222         /bin/rm -rf nics.stamp
223         /bin/rm -rf ${MEN} Makefile.bak
224         ${MAKE} -C nics clean
225
226 proto: ${PROTOSRCS} ${HSRCS} ${LSRCS:%.lex=%.tab.h}
227         echo -n > ${PROTOH}
228         for i in ${PROTOSRC}; do cproto $$i | grep -v inline >> ${PROTOH}  ; done
229
230
231
232 depend: ${RCSFILES} ${YSRCS:%.y=%.tab.h} 
233         makedepend -f- ${INCLUDES} ${ALLSRCS} > .depend
234
235 nodep:
236         /bin/rm -rf .depend
237
238 tidy:
239         ci -l -m\# ${RCSFILES}
240         indent -ts0 -i2 ${RCSCFILES}
241         ci -l -m\# ana.c
242         indent -ts0 -i2 ana.c
243         /bin/rm -rf nics.stamp
244         ${MAKE} -C nics tidy
245         ci -l -m\# Makefile
246
247 checkin:
248         ci -m\# ${RCSFILES}
249 checkout:
250         ci -l ${RCSFILES}
251
252 MYDIR=rpld-${VERSION}
253
254 distrib: 
255         ${MAKE} tidy
256         ${MAKE} proto
257         ${MAKE} doc
258         ${MAKE} clean
259         ${MAKE} yguff
260         ${MAKE} ${TXTMEN}
261         cd ..; tar cvfzX ${MYDIR}/DISTRIB/${MYDIR}.tar.gz ${MYDIR}/.xclude ${MYDIR}
262
263 yguff:${YGUFF}
264         
265
266 %.tab.c:%.y
267         ${YACC} -d -b ${@:%.tab.c=%} $<
268
269 %.tab.h:%.y
270         ${YACC} -d -b ${@:%.tab.h=%} $<
271
272 %.yy.c:%.lex
273         ${LEX} -o$@ $<
274
275 config.o: rpld_conf.tab.h
276