1# $FreeBSD$
2#
3# Makefile for the BOOTP programs:
4#   bootpd	- BOOTP server daemon
5#   bootpef	- BOOTP extension file builder
6#   bootpgw	- BOOTP gateway daemon
7#   bootptest	- BOOTP tester (client)
8#
9
10# OPTion DEFinitions:
11# Remove the -DVEND_CMU if you don't wish to support the "CMU vendor format"
12# in addition to the RFC1048 format.  Leaving out DEBUG saves little.
13OPTDEFS= -DSYSLOG -DVEND_CMU -DDEBUG
14
15# Uncomment and edit this to choose the facility code used for syslog.
16# LOG_FACILITY= "-DLOG_BOOTP=LOG_LOCAL2"
17
18# SYStem DEFinitions:
19# Either uncomment some of the following, or do:
20#	"make sunos4"	(or "make sunos5", etc.)
21# SYSDEFS= -DSUNOS -DETC_ETHERS
22# SYSDEFS= -DSVR4
23# SYSLIBS= -lsocket -lnsl
24
25# Uncomment this if your system does not provide streror(3)
26# STRERROR=strerror.o
27
28# FILE DEFinitions:
29# The next few lines may be uncommented and changed to alter the default
30# filenames bootpd uses for its configuration and dump files.
31#CONFFILE= -DCONFIG_FILE=\"/usr/etc/bootptab\"
32#DUMPFILE= -DDUMPTAB_FILE=\"/usr/etc/bootpd.dump\"
33#FILEDEFS= $(CONFFILE) $(DUMPFILE)
34
35# MORE DEFinitions (whatever you might want to add)
36# One might define NDEBUG (to remove "assert()" checks).
37MOREDEFS=
38
39INSTALL=/usr/bin/install
40DESTDIR=
41BINDIR=/usr/etc
42MANDIR=/usr/local/man
43
44CFLAGS= $(OPTDEFS) $(SYSDEFS) $(FILEDEFS) $(MOREDEFS)
45PROGS= bootpd bootpef bootpgw bootptest
46TESTS= trylook trygetif trygetea
47
48all: $(PROGS) $(TESTS)
49
50system: install
51
52install: $(PROGS)
53	-for f in $(PROGS) ;\
54	do \
55		$(INSTALL) -c -s $$f $(DESTDIR)$(BINDIR) ;\
56	done
57
58MAN5= bootptab.5
59MAN8= bootpd.8 bootpef.8 bootptest.8
60install.man: $(MAN5) $(MAN8)
61	-for f in $(MAN5) ;\
62	do \
63		$(INSTALL) -c -m 644 $$f $(DESTDIR)$(MANDIR)/man5 ;\
64	done
65	-for f in $(MAN8) ;\
66	do \
67		$(INSTALL) -c -m 644 $$f $(DESTDIR)$(MANDIR)/man8 ;\
68	done
69
70clean:
71	-rm -f core *.o
72	-rm -f $(PROGS) $(TESTS)
73
74distclean:
75	-rm -f *.BAK *.CKP *~ .emacs*
76
77#
78# Handy targets for systems needing special treatment:
79# (Most POSIX systems should work with just "make all")
80#
81
82# DEC/OSF1 on the Alpha
83alpha:
84	$(MAKE) SYSDEFS="-DETC_ETHERS -Dint32=int -D_SOCKADDR_LEN" \
85		STRERROR=strerror.o
86
87# Control Data EP/IX 1.4.3 system, BSD 4.3 mode
88epix143:
89	$(MAKE) CC="cc -systype bsd43" \
90		SYSDEFS="-Dconst= -D_SIZE_T -DNO_UNISTD -DUSE_BFUNCS" \
91		STRERROR=strerror.o
92
93# Control Data EP/IX 2.1.1 system, SVR4 mode
94epix211:
95	$(MAKE) CC="cc -systype svr4" \
96		SYSDEFS="-DSVR4" \
97		SYSLIBS="-lsocket -lnsl"
98
99# IRIX 5.X (Silicon Graphics)
100irix:
101	$(MAKE) SYSDEFS= SYSLIBS=
102
103# Linux 1.1.80+ on [34]86
104linux:
105	$(MAKE) SYSDEFS="-O6 -Wall -fomit-frame-pointer"
106
107# SunOS 4.X
108sunos4:
109	$(MAKE) SYSDEFS="-DSUNOS -DETC_ETHERS" \
110		STRERROR=strerror.o
111
112# Solaris 2.X (i.e. SunOS 5.X)
113sunos5:
114	$(MAKE) SYSDEFS="-DSVR4 -DETC_ETHERS" \
115		SYSLIBS="-lsocket -lnsl"
116
117# Solaris 2.X (i.e. SunOS 5.X) with GCC.  Note that GCC normally
118# defines __STDC__=1 which breaks many Solaris header files...
119sunos5gcc:
120	$(MAKE) SYSDEFS="-DSVR4 -DETC_ETHERS -D__STDC__=0" \
121		SYSLIBS="-lsocket -lnsl" CC="gcc -Wall"
122
123# UNIX System V Rel. 3
124svr3:
125	$(MAKE) SYSDEFS="-DSYSV"
126
127# UNIX System V Rel. 4
128svr4:
129	$(MAKE) SYSDEFS="-DSVR4" \
130		SYSLIBS="-lsocket -lnsl"
131
132# AT&T/GIS - Both AT&T StarServer and NCR 3000
133# may work for others using Wollongong's WIN-TCP
134wollongong gis :
135	$(MAKE) SYSDEFS="-DSVR4 -DWIN_TCP" \
136		SYSLIBS="-lsocket -lnsl"
137
138#
139# How to build each program:
140#
141
142OBJ_D=	bootpd.o dovend.o readfile.o hash.o dumptab.o \
143	 lookup.o getif.o hwaddr.o tzone.o report.o $(STRERROR)
144bootpd: $(OBJ_D)
145	$(CC) -o $@ $(OBJ_D) $(SYSLIBS)
146
147OBJ_EF=	bootpef.o dovend.o readfile.o hash.o dumptab.o \
148	 lookup.o hwaddr.o tzone.o report.o $(STRERROR)
149bootpef: $(OBJ_EF)
150	$(CC) -o $@ $(OBJ_EF) $(SYSLIBS)
151
152OBJ_GW= bootpgw.o getif.o hwaddr.o report.o $(STRERROR)
153bootpgw: $(OBJ_GW)
154	$(CC) -o $@ $(OBJ_GW) $(SYSLIBS)
155
156OBJ_TEST= bootptest.o print-bootp.o getif.o getether.o \
157	 report.o $(STRERROR)
158bootptest: $(OBJ_TEST)
159	$(CC) -o $@ $(OBJ_TEST) $(SYSLIBS)
160
161# This is just for testing the lookup functions.
162TRYLOOK= trylook.o lookup.o report.o $(STRERROR)
163trylook : $(TRYLOOK)
164	$(CC) -o $@ $(TRYLOOK) $(SYSLIBS)
165
166# This is just for testing getif.
167TRYGETIF= trygetif.o getif.o report.o $(STRERROR)
168trygetif : $(TRYGETIF)
169	$(CC) -o $@ $(TRYGETIF) $(SYSLIBS)
170
171# This is just for testing getether.
172TRYGETEA= trygetea.o getether.o report.o $(STRERROR)
173trygetea : $(TRYGETEA)
174	$(CC) -o $@ $(TRYGETEA) $(SYSLIBS)
175
176# This rule just keeps the LOG_BOOTP define localized.
177report.o : report.c
178	$(CC) $(CFLAGS) $(LOG_FACILITY) -c $<
179
180# Punt SunOS -target noise
181.c.o:
182	$(CC) $(CFLAGS) -c $<
183
184#
185# Header file dependencies:
186#
187
188bootpd.o  : bootp.h bptypes.h hash.h hwaddr.h bootpd.h dovend.h
189bootpd.o  : readfile.h report.h tzone.h patchlevel.h getif.h
190bootpef.o : bootp.h bptypes.h hash.h hwaddr.h bootpd.h dovend.h
191bootpef.o : readfile.h report.h tzone.h patchlevel.h
192bootpgw.o : bootp.h bptypes.h getif.h hwaddr.h report.h patchlevel.h
193bootptest.o : bootp.h bptypes.h bootptest.h getif.h patchlevel.h
194dovend.o : bootp.h bptypes.h bootpd.h hash.h hwaddr.h report.h dovend.h
195dumptab.o : bootp.h bptypes.h hash.h hwaddr.h report.h patchlevel.h bootpd.h
196getif.o : getif.h report.h
197hash.o : hash.h
198hwaddr.o : bptypes.h hwaddr.h report.h
199lookup.o : bootp.h bptypes.h lookup.h report.h
200print-bootp.o : bootp.h bptypes.h bootptest.h
201readfile.o : bootp.h bptypes.h hash.h hwaddr.h lookup.h readfile.h
202readfile.o : report.h tzone.h bootpd.h
203report.o : report.h
204tzone.o : bptypes.h report.h tzone.h
205