# CONTENTS UNDER PRESSURE.
# DO NOT ATTEMPT TO OPEN COVER.
# NO USER SERVICEABLE PARTS INSIDE.
# REFER SERVICING TO QUALIFIED PERSONNEL.
# You try to hit the vendor...
# 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-():
# 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)
# $(MAKE) MAKE=\"$(MAKE)\" all
# 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".
# shell broken (reversed pipe construction "false | true"
# returns false - major bummer)
# 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,
TARGETS
= xntpd
/xntpd xntpdc
/xntpdc ntpq
/ntpq ntpdate
/ntpdate \
ntptrace
/ntptrace xntpres
/xntpres authstuff
/authspeed util
/tickadj
OPTTARG
= adjtime
/adjtimed util
/ntptime util
/precision
# Base distribution name (will be extended by <VERSION>.tar.<comperssorsuffix>)
all: version
$(TARGETS
) kernel_modules
$(TARGETS
): VERSION
$(CONF
)
@echo
'### Building XNTP:' "`egrep '^.*=.*$$' VERSION | tr '\012' ';'`"
sh
-c
"./scripts/makeconfig.sh '$(OS)' '$(COMP)'"
@echo
'###' creating
$(CONFL
) for absolutely
'*NO*' clocks
'*AT ALL*'
rm -f
$(CONFL
)-t
$(CONFL
)
cat
< $(CONFLD
) > $(CONFL
)-t
&& mv
$(CONFL
)-t
$(CONFL
)
@echo
'###' creating
$(CONFL
) for greenhorns
'(local refclock only)'
rm -f
$(CONFL
)-t
$(CONFL
)
sed
's/#GREEN//' < $(CONFLD
) > $(CONFL
)-t
&& mv
$(CONFL
)-t
$(CONFL
)
@echo
'### creating a $(CONFL) file as none existed.'
@echo
'### Use "make refconf" if you have a radio clock'
@
$(MAKE
) $(MFLAGS
) MFLAGS
="$(MFLAGS)" $(CONFL
).green
@echo
'###' creating new configuration
@sh
-c
"./scripts/makeconfig.sh '$(OS)' '$(COMP)'"
-@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
'###' creating NTP daemon
@cd xntpd
&& $(MAKE
) $(MFLAGS
) MFLAGS
="$(MFLAGS)" MAKE
="$(MAKE)"
xntpdc
/xntpdc
: lib
/libntp.a xntpdc
/Makefile FRC
@echo
'###' creating XNTPDC utility
@cd xntpdc
&& $(MAKE
) $(MFLAGS
) MFLAGS
="$(MFLAGS)" MAKE
="$(MAKE)"
ntpq
/ntpq
: lib
/libntp.a ntpq
/Makefile FRC
@echo
'###' creating NTPQ utility
@cd ntpq
&& $(MAKE
) $(MFLAGS
) MFLAGS
="$(MFLAGS)" MAKE
="$(MAKE)"
ntptrace
/ntptrace
: lib
/libntp.a ntptrace
/Makefile FRC
@echo
'###' creating NTPTRACE utility
@cd ntptrace
&& $(MAKE
) $(MFLAGS
) MFLAGS
="$(MFLAGS)" MAKE
="$(MAKE)"
ntpdate
/ntpdate
: lib
/libntp.a ntpdate
/Makefile FRC
@echo
'###' creating NTPDATE utility
@cd ntpdate
&& $(MAKE
) $(MFLAGS
) MFLAGS
="$(MFLAGS)" MAKE
="$(MAKE)"
authstuff
/authspeed
: lib
/libntp.a authstuff
/Makefile FRC
@echo
'###' creating AUTH utilities
@cd authstuff
&& $(MAKE
) $(MFLAGS
) MFLAGS
="$(MFLAGS)" MAKE
="$(MAKE)"
xntpres
/xntpres
: lib
/libntp.a xntpres
/Makefile FRC
@echo
'###' creating XNTPRES utility
@cd xntpres
&& $(MAKE
) $(MFLAGS
) MFLAGS
="$(MFLAGS)" MAKE
="$(MAKE)"
util
/tickadj
: util
/Makefile FRC
@echo
'###' creating TICKADJ utility
@cd util
&& $(MAKE
) $(MFLAGS
) MFLAGS
="$(MFLAGS)" MAKE
="$(MAKE)"
lib
/libntp.a
: lib
/*.c lib
/Makefile adjtime
/Makefile
@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
'### creating PARSE subsystem (if configured)'
@cd parse
&& $(MAKE
) $(MFLAGS
) MFLAGS
="$(MFLAGS)" MAKE
="$(MAKE)"
@
test -d bin || mkdir bin
@echo
'### saving $(TARGETS) $(OPTTARG) in bin'
-@for f in
$(TARGETS
) $(OPTTARG
); \
do
test -f
$$f && mv
$$f bin
/.
&& echo
"### saved $$f in bin/"; \
@echo
'###' cleaning derived config files
-@
rm -f
$(CONF
).sed
$(CONF
)
@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 | \
if
[ -f
"$$X.tmpl" ]; then \
@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
@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)" $@
@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)" $@
@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
@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
) > $@
find .
-name Makefile.tmpl
-print > eddep
sed
-e
's:^\./::' -e
'/^Makefile/d' \
-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' \
echo
'/^# DO NOT DELETE THIS LINE/+1,$$d' >eddep
echo
'$$r makedep' >>eddep
/bin
/ed
- Makefile
< eddep
# DO NOT DELETE THIS LINE -- It is used by 'make depend' to update this file
adjtime
/Makefile
: adjtime
/Makefile.tmpl
${CONF}.sed
@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
'###' 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
'###' 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
'###' 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
'###' 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
'###' 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
'###' 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
'###' 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
'###' 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
'###' 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
'###' 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
'###' 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
'###' 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
'###' 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