aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/xntpd/Makefile
blob: 1e9c0b14afc35bfe750d1b98a79db9d0f58247f4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
# WARNING:
#	CONTENTS UNDER PRESSURE.
#	HIGHLY FLAMMABLE.
#	RISK OF SHOCK.
#	DO NOT ATTEMPT TO OPEN COVER.
#	NO USER SERVICEABLE PARTS INSIDE.
#	REFER SERVICING TO QUALIFIED PERSONNEL.
#
#	The vendor hits you...
#	You try to hit the vendor...
#	You die.
#
# Unfortunately the above is no fun...
#
# During testing/porting we have found a long list
# of "make" and "sh" and "awk" features in different implementations.
# Some goodies (make good horror stories for your kids 8-():
#	gmake 3.62
#		non standard target construction
#
#	pmake (e. g. NetBSD on MAC, possible other BNR2+pmake systems)
#		skips '' (empty string positional) args to sh
#		(this leads to following stupid constructions
#		 sh -c "./scripts/makeconfig.sh '$(OS)' '$(COMP)'")
#
#		Following Makefile construction fails for no
#		apparent reason (at least to me)
#		doit:
#			$(MAKE) MAKE=\"$(MAKE)\" all
#
#		all:
#			@echo all done.
#
#		for the "make MAKE=make" call not for "make" or
#		"make -e MAKE=make". Use the last form if you suffer
#		from that kind of make problems. (Easily detected
#		by failure to build with the message:
#		"don't know how to make make".
#
#	sh (Ultrix 4.2 MIPS)
#		shell broken (reversed pipe construction "false | true"
#				 returns false - major bummer)
#
#	awk (EP/IX 2.?)
#		unable to do regexp matches
#		(aka awk '/..*/ { print; }' fails on match)
#
# Usually the vendor should fix these bugs in vital utilities.
# We try to circumvent these bugs in a hopefully portable way.
# If you can reproduce these bugs on your system please bug your
# vendor to fix them. We are not trying anything fancy in here and
# we are shocked that even the most common tools fail so miserably.
# By the time you get this code the above utilities may already
# have been fixed. Hopefully one day we do not have to cope with
# this kind of broken utilities.
#
# Sorry about the situation,
#	Frank Kardel
#
SHELL=/bin/sh
CONF =	Config
CONFL =	$(CONF).local
CONFLD=	$(CONFL).dist
TARGETS	= xntpd/xntpd xntpdc/xntpdc ntpq/ntpq ntpdate/ntpdate \
	  ntptrace/ntptrace xntpres/xntpres authstuff/authspeed util/tickadj
OPTTARG = adjtime/adjtimed util/ntptime util/precision
REFCONF=
COMPRESSOR=compress
# Base distribution name (will be extended by <VERSION>.tar.<compressorsuffix>)
DISTNAME=xntp-
MAKE=	make

all:	version $(TARGETS) kernel_modules

$(TARGETS): VERSION $(CONF) 

version:
	@echo '### Building XNTP:' "`egrep '^.*=.*$$' VERSION | tr '\012' ';'`"

makeconfig:
	sh -c "./scripts/makeconfig.sh '$(OS)' '$(COMP)'"

$(CONFL).NO.clock:
	@echo '###' creating $(CONFL) for absolutely '*NO*' clocks '*AT ALL*'
	rm -f $(CONFL)-t $(CONFL)
	cat < $(CONFLD) > $(CONFL)-t && mv $(CONFL)-t $(CONFL)

$(CONFL).green:
	@echo '###' creating $(CONFL) for greenhorns '(local refclock only)'
	rm -f $(CONFL)-t $(CONFL)
	sed 's/#GREEN//' < $(CONFLD) > $(CONFL)-t && mv $(CONFL)-t $(CONFL)

$(CONFL):
	@echo ''
	@echo '### creating a $(CONFL) file as none existed.'
	@echo '### Use "make refconf" if you have a radio clock'
	@echo ''
	@$(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" $(CONFL).green

$(CONF): $(CONFL)
	@echo
	@echo '###' creating new configuration
	@sh -c "./scripts/makeconfig.sh '$(OS)' '$(COMP)'"

refconf: $(CONF)
	-@sh refclocks/rconfig '$(REFCONF)'
	@sh -c "./scripts/makeconfig.sh '$(OS)' '$(COMP)'"

kernel_modules: kernel/Makefile
	@cd kernel && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)"

xntpd/xntpd:	lib/libntp.a parse/libparse.a xntpd/Makefile FRC
	@echo
	@echo '###' creating NTP daemon
	@cd xntpd && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)"

xntpdc/xntpdc:	lib/libntp.a xntpdc/Makefile FRC
	@echo
	@echo '###' creating XNTPDC utility
	@cd xntpdc && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)"

ntpq/ntpq:	lib/libntp.a ntpq/Makefile FRC
	@echo
	@echo '###' creating NTPQ utility
	@cd ntpq && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)"

ntptrace/ntptrace:	lib/libntp.a ntptrace/Makefile FRC
	@echo
	@echo '###' creating NTPTRACE utility
	@cd ntptrace && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)"

ntpdate/ntpdate: lib/libntp.a ntpdate/Makefile FRC
	@echo
	@echo '###' creating NTPDATE utility
	@cd ntpdate && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)"

authstuff/authspeed:	lib/libntp.a authstuff/Makefile FRC
	@echo
	@echo '###' creating AUTH utilities
	@cd authstuff && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)"

xntpres/xntpres:	lib/libntp.a xntpres/Makefile FRC
	@echo
	@echo '###' creating XNTPRES utility
	@cd xntpres && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" 

util/tickadj: util/Makefile FRC
	@echo
	@echo '###' creating TICKADJ utility
	@cd util && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)"

lib/libntp.a: lib/*.c lib/Makefile adjtime/Makefile
	@echo
	@echo '###' creating NTP library
	@cd lib && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)"

parse/libparse.a:	parse/*.c parse/Makefile parse/util/Makefile lib/libntp.a
	@echo
	@echo '### creating PARSE subsystem (if configured)'
	@cd parse && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)"

FRC:

savebin:
	@test -d bin || mkdir bin
	@echo
	@echo '### saving $(TARGETS) $(OPTTARG) in bin'
	-@for f in $(TARGETS) $(OPTTARG); \
	 do test -f $$f && mv $$f bin/. && echo "### saved $$f in bin/"; \
	 done; \
	 true

neatneat:
	@echo '###' cleaning derived config files
	-@rm -f $(CONF).sed $(CONF)

neat:
	@echo '###' cleaning top level left overs
	-@rm -f eddep makedep Makefile.bak make.log make.out

distclean: neatneat clean
	@echo '###' cleaning configuration dependent Makefiles
	-@find . -name Makefile -print | \
	  while read X; do \
	    if [ -f "$$X.tmpl" ]; then \
	      rm -f "$$X"; \
	    else \
	      :; \
	    fi \
	  done
	@echo '###' cleaning old scratch files
	-@find . \( -name '*.rej' -o -name '*.orig' -o -name '*~' -o \
		    -name '.version' -o -name '#*' -o -name '.#*' -o \
		    -name core -o -name version.c \) -print | xargs rm -f
	@echo '###' cleaning saved binaries
	-@rm -fr bin

clean:	neat
	@echo '###' cleaning adjtime
	@cd adjtime && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" -f Makefile.tmpl $@
	@echo '###' cleaning authstuff
	@cd authstuff && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" $@
	@echo '###' cleaning clockstuff
	@cd clockstuff && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" $@
	@echo '###' cleaning lib
	@cd lib && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" $@
	@echo '###' cleaning ntpdate
	@cd ntpdate && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" $@
	@echo '###' cleaning ntpq
	@cd ntpq && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" $@
	@echo '###' cleaning ntptrace
	@cd ntptrace && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" $@
	@echo '###' cleaning util
	@cd util && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" $@
	@echo '###' cleaning xntpd
	@cd xntpd && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" $@
	@echo '###' cleaning xntpdc
	@cd xntpdc && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" $@
	@echo '###' cleaning xntpres
	@cd xntpres && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" $@
	@echo '###' cleaning parse
	@cd parse && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" $@

install:	all
	@echo installing from xntpd
	@cd xntpd && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" install
	@echo installing from xntpdc
	@cd xntpdc && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" install
	@echo installing from ntpq
	@cd ntpq && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" install
	@echo installing from ntptrace
	@cd ntptrace && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" install
	@echo installing from ntpdate
	@cd ntpdate && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" install
	@echo installing from xntpres
	@cd xntpres && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" install
	@echo installing from util
	@cd util && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" install
	@echo installing from parse
	@cd parse && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" install

dist:
	@echo '### building distribution ...'
	@$(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" MAKE="$(MAKE)" distclean
	@DISTVERSION="`sed -e 's/^[ 	]*[Vv][Ee][Rr][Ss][Ii][Oo][Nn][ 	]*=\(.*\)$$/\1/' VERSION | \
		    sed -e 's/[^0-9a-zA-Z\.]/_/g; s/__*/_/g; s/_*$$//'`" && \
	 echo "### creating distribution file $(DISTNAME)$${DISTVERSION}.tar" && \
	 rm -f $(DISTNAME)$${DISTVERSION}.tar $(DISTNAME)$${DISTVERSION}.tar.* && \
	 tar cfv $(DISTNAME)$${DISTVERSION}.tar `ls | egrep -v "^$(CONFL)$$|^$(DISTNAME)$${DISTVERSION}.tar$$"` && \
	 $(COMPRESSOR) -v $(DISTNAME)$${DISTVERSION}.tar

$(CONF).sed:	$(CONF) Makefile
	@sed -n -e 's:^\([^ 	]*\)=[ 	]*\(.*\):s~^\1=.*~&~:p' < $(CONF) > $@

depend:
	find . -name Makefile.tmpl -print > eddep
	echo >> makedep
	sed -e 's:^\./::' -e '/^Makefile/d' \
	    -e h \
	    -e 's/^\(.*\)\.tmpl$$/\1:	\1.tmpl $${CONF}.sed/' -e p -e g \
	    -e 's/.*/	@echo/' -e p -e g \
	    -e 's:^\(.*\)/Makefile\.tmpl$$:	@echo '"'###'"' updating Makefile in \1:' -e p -e g \
	    -e 's/.*/	@sed -f $${CONF}.sed < $$@.tmpl > $$@/' -e p -e g \
	    -e 's:^\(.*\)/Makefile\.tmpl$$:	@echo '"'###'"' cleaning in \1:' -e p -e g \
	    -e 's:^\(.*\)/Makefile\.tmpl$$:	@cd \1 \&\& $$(MAKE) $$(MFLAGS) MFLAGS="$$(MFLAGS)" -f Makefile.tmpl MAKE="$$(MAKE)" clean:p' \
	    < eddep >> makedep
	echo '/^# DO NOT DELETE THIS LINE/+1,$$d' >eddep
	echo '$$r makedep' >>eddep
	echo 'w' >>eddep
	cp Makefile Makefile.bak
	/bin/ed - Makefile < eddep
	rm eddep makedep

# DO NOT DELETE THIS LINE -- It is used by 'make depend' to update this file

adjtime/Makefile:	adjtime/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in adjtime
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in adjtime
	@cd adjtime && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
authstuff/Makefile:	authstuff/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in authstuff
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in authstuff
	@cd authstuff && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
clockstuff/Makefile:	clockstuff/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in clockstuff
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in clockstuff
	@cd clockstuff && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
kernel/Makefile:	kernel/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in kernel
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in kernel
	@cd kernel && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
lib/Makefile:	lib/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in lib
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in lib
	@cd lib && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
ntpdate/Makefile:	ntpdate/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in ntpdate
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in ntpdate
	@cd ntpdate && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
ntpq/Makefile:	ntpq/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in ntpq
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in ntpq
	@cd ntpq && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
ntptrace/Makefile:	ntptrace/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in ntptrace
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in ntptrace
	@cd ntptrace && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
util/Makefile:	util/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in util
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in util
	@cd util && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
xntpd/Makefile:	xntpd/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in xntpd
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in xntpd
	@cd xntpd && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
xntpdc/Makefile:	xntpdc/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in xntpdc
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in xntpdc
	@cd xntpdc && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
xntpres/Makefile:	xntpres/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in xntpres
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in xntpres
	@cd xntpres && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
parse/util/Makefile:	parse/util/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in parse/util
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in parse/util
	@cd parse/util && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean
parse/Makefile:	parse/Makefile.tmpl ${CONF}.sed
	@echo
	@echo '###' updating Makefile in parse
	@sed -f ${CONF}.sed < $@.tmpl > $@
	@echo '###' cleaning in parse
	@cd parse && $(MAKE) $(MFLAGS) MFLAGS="$(MFLAGS)" -f Makefile.tmpl MAKE="$(MAKE)" clean