PORTING   [plain text]


In order to port software to a new platform:

- Each system type needs to be identified by a unique name. Examples:
SUNOS5, FREEBSD4, and so on.  Choose a SYSTEMTYPE name for the new
system. You must use a name that includes at least the major version
of the operating system (such as SUNOS4 or LINUX2), so that different
releases of the same system can be supported without confusion.

- Add a case statement to the "makedefs" shell script in the
top-level directory that recognizes the new system reliably, and
that emits the right system-specific information.  Be sure to make 
the code robust against user PATH settings; if the system offers
multiple UNIX flavors (e.g. BSD and SYSV) be sure to build for the
native flavor, not the emulated one.

- Add an #ifdef SYSTEMTYPE section to the central util/sys_defs.h
include file.  You may have to invent new feature macros.  Please
choose sensible feature macro names such as HAS_DBM or
FIONREAD_IN_SYS_FILIO_H.  

I strongly object to #ifdef SYSTEMTYPE dependencies in individual
source files.  This may seem to be the quickest solution, but it
will create a mess that becomes increasingly difficult to maintain
over time. Moreover, with the next port to another system you'd
have to place #ifdefs all over the source code again.