For special hints on setup/compilation/installation and other general
topics you may persue the files in the hints directory.

This file contains the usual instructions to compile and install the programs in
this distribution. To make these programs:

(0) Make sure that you have all necessary tools for building executables.
    These tools include cc/gcc, make, awk, sed, tr, sh, grep, egrep and
    a few others. Not all of these tools exist in the standard distribution
    of todays UNIX versions (compilers are likely to be an extra product).
    For a successful build all of these tools should be accessible via the
    current path.

(1) By default, if there is no Config.local, the system will generate one
    to support a local ref clock (i.e. run off the system clock).
    Greenhorns can skip on to (2).
    
    HACKers can create a Config.local and choose the compilation options,
    install destination directory and clock drivers.
    A template for Config.local can be found in Config.local.dist.
    There are two Configurations that can be auto-generated:
	make Config.local.local		# network configuration plus local
					# reference clock (the default)
	make Config.local.NO.clock	# network only configuration

    To set up for a radio clock, type "make refconf" and answer the questions
    about PLL, PPS and radio clock type.
    If this is the first use of the ref clock, don't forget to make suitable
    files in /dev/.

    For custom tailored configuration copying Config.local.dist to Config.local
    and editing Config.local to suit the local needs is neccessary (at most
    3 lines to change), or use one of the make's above and then tweak it.
    Config.local can also be used to override common settings from the
    machines/* files like the AUTHDEFS= to select very specific configurations.
    Please use this feature with care and don't be disappointed if it doesn't
    work the way you expect.

(2) Type "make" to compile everything of general interest. Expect few or
    no warnings using cc and a moderate level of warnings using gcc.
    Note: On some Unix platforms the use of gcc can result in quite a few
          complaints about system header files and type problems within xntp
          code. This is usually the case when the OS header files are not up
          up to ANSI standards or GCCISMs. (There may, however, be still some
	  inconsistencies in the code)

	  Other known problems stem from bugs/features/... in utility programs
	  of some vendors.

	  See section "build problems" for known problems and possible work-
	  arounds.

    Each time you change the configuration a script that pokes your hard- and
    software will be run to build the actual configuration files.
    If the script fails, it will give you a list of machines it knows about.
    You can override the automatic choice by cd to the ../machines directory
    and typing "make makeconfig OS=<machine>", where <machine> is one of the
    file names in the ../machine directory.

    The shell script will attempt to find the gcc compiler and, if
    found, will use it instead of the cc compiler.  You can override
    this automatic choice by cd to the ../machines directory and typing
    "make makeconfig COMP=<compiler>", where <compiler> is one of the file
    names in the ../compilers directory. This can be combined with
    the OS argument above.

    The configuration step can be separatly invoked by "make makeconfig".

    Note that any reconfiguration will result in cleaning the old
    program and object files.

(3) Assuming you have write permission on the install destination directory,
    type "make install" to install the binaries in the destination directory.
    At the time of writing this includes
    the programs xntpd (the daemon), xntpdc (an xntpd-dependent query
    program), ntpq (a standard query program), ntpdate (an rdate
    replacement for boot time date setting and sloppy time keeping)
    and xntpres (a program which provides name resolver support for
    some xntpd configurations).

(4) You are now ready to configure the daemon and start it.  At this
    point it might be useful to format and print the file doc/notes.me
    and read a little bit.  The sections on configuration and on the
    tickadj program will be immediately useful.

Additional "make" target you might find useful are:

clean		cleans out object files, programs and temporary files

dist		makes a new distribution file (also cleans current binaries)
		All usual scratch and backup files (*.rej, *.orig, *.o, *~
		core, lint*.errs, executables, tags, Makefile.bak, make.log)
		will be removed. The distribution is created in a tar file
		(file name: <prefix><version>.tar.<compression suffix> - with
		the prefix usually being ../xntp- and a compression suffix
		of .Z (compress))
		Note: the file Config.local will never be included in the
		distribution tar file. For configuration hints to propagate
		in in distribution changes must be made to Config.local.dist.

depend		possible maker of hazardous waste

refconf		a target to interactively configure reference clock support.
		This should work for you, but has not yet been tested on
		the more exotic Unix ports (mostly the supercomputer ones).

Bug reports of a general nature can be sent to David Mills (mills@udel.edu).
Reports concerning specific hardware or software systems mentioned in the
COPYRIGHT file should be sent to the author, with copy to David Mills for
archive.

The distribution has been compiled and run on at least the following
machines, operating systems and compilers. In all known cases, if
the gcc compiler eats it with some success, the cc compiler also enjoys
the meal. The converse is not always true. See the conf directory for
test suites known to compile with various radio clocks; however, not all
the combinations that compile have been tested.

	VAX-11/785 4.3 tahoe	cc	no REFCLOCK		(dm 93/11/20)
	Sun3	SunOS 4.1.1	gcc	no REFCLOCK		(pb 93/10/25)
	Sun4	SunOS 4.1.1	gcc	all REFCLOCK drivers	(dm 93/10/25)
	Sun4	SunOS 4.1.3	gcc	all REFLCOCK drivers
	Sun4	SunOS 5.1	gcc	no REFCLOCK		(pb 93/10/25)
	Sun4	SunOS 5.2	gcc	no REFCLOCK		(dm 93/11/20)
	Sun4	SunOS 5.2	gcc	PARSE REFCLOCK		(kd 93/11/10)
	Sun4	SunOS 5.3	gcc	local			(pb 93/11/10)
	HP700	HPUX 9.0	cc	no REFCLOCK
        hp7xx   HPUX 9.01       cc      local + PARSE		(kd 93/10/26)
	HP3xx	HPUX 9.01	cc	no REFCLOCK		(pb 93/10/25)
	HP3xx	HPUX 8.0	cc	no REFCLOCK		(pb 93/10/25)
	MIPS	Ultrix 4.3a	gcc	WWVB clock		(dm 93/11/20)
        MIPS    Ultrix 3a       gcc     green			(pb 93/10/26)
	ALPHA	OSF 1.2a	gcc	no REFCLOCK		(dm 93/11/20)
	ALPHA	OSF 1.3		gcc	no REFCLOCK		(pb 93/10/25)
	ALPHA   OSF1 1.3        gcc     green			(pb 93/10/26)
	Convex	Convex OS 10.1	?	?
	SGI	IRIX 4.0.5F	gcc	no REFCLOCK		(pb 93/11/10)
	AIX	3.2		?	?
	A/UX	2.0.1, 3.x.x	gcc	LOCAL_CLOCK		(jmj (94/01/26 see hints)
	RS6000	AIX 3.2		gcc	no REFCLOCK
	MX500	Sinix-m V5.40	cc	PARSE REFCLOCK
	S2000	Sequent PTX 1.4 cc	LOCAL_CLOCK		(kd 93/11/10)
	S2000	Sequent PTX 1.4 gcc	LOCAL_CLOCK		(kd 93/11/10)
	PC	FreeBSD		gcc	LOCAL_CLOCK		see "build problems"
	PC	NetBSD?		gcc	LOCAL_CLOCK possibly	see "build problems"
	PC	BSD/386 1.0	gcc	LOCAL_CLOCK possibly	see "build problems"
	PC	Linux (pl14)	gcc	LOCAL_CLOCK		(dw 93/10/30)
	PC	Dell SVR4 v2.2	gcc	?			(tl 93/12/30)
	PC	Unixware1/SVR4	cc	no tickadj, ?		(ras 93/04/11)
	NCR3445	NCR SVR4	cc	LOCAL_CLOCK		(tm 93/11/29)

	pb: Piete Brooks
	kd: Frank Kardel
	dw: Torsten Duwe (duwe@informatik.uni-erlangen.de)
	dm: David Mills (mills@udel.edu)
	tl: Tony Lill <ajlill@tlill.hookup.net>
	tm: Tom Moore <Tom.Moore@DaytonOH.NCR.COM>
	jmj: Jim Jagielski <jim@jagubox.gsfc.nasa.gov>
	ras: Ray Schnitzler <schnitz@unipress.com>

Build Problems (and workaround):

During testing/porting we have found some
of "make" and "sh" and "awk" features in different implementations.
If you have problems other tha the one listed below please check for
usualy things like the latest sh compatible pd shell in your own
environment. Things like this are known to hinder compilation if
they are not fully compatible with sh or are buggy.

Current build problem on (Mac) NetBSD, possibly BSDI and 386BSD:
	pmake (e. g. NetBSD on MAC, possible other BNR2+pmake systems)
		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 but 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".

		On BSD/386 the solution is to get GNU make and run build as:
			% gnumake MAKE=gnumake
		Note that BSD/386 1.0's "sed" goes into an infinite loop if
		you try to make the "refconf" target -- so edit Config.local
		by hand if you have a reference clock.  (BSD/386 1.1 will fix
		this "sed" bug.)

		The NetBSD people claim that this problem goes away
		when you compile make with POSIX compilation options.

The known sh and some make pecularities have already been taken care of.

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/developer group to fix them. We are not trying anything fancy
in here (except for starting sub-makes) 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.
	Frank Kardel

William L. Jones <jones@chpc.utexas.edu>
Dennis Ferguson (Advanced Network Systems) <dennis@ans.net>
Lars Mathiesen (University of Copenhagen) <thorinn@diku.dk>
David Mills <mills@udel.edu>
Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de>
Piete Brooks <Piete.Brooks@cl.cam.ac.uk>

-- and a cast of thousands -- see the COPYRIGHT file
16 November 1993
