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