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=", where 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=", where 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: .tar. - 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. 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 tm: Tom Moore jmj: Jim Jagielski ras: Ray Schnitzler 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 Dennis Ferguson (Advanced Network Systems) Lars Mathiesen (University of Copenhagen) David Mills Frank Kardel Piete Brooks -- and a cast of thousands -- see the COPYRIGHT file 16 November 1993