.bp
.SH
Appendix B \*- X11R5 Notes
.LP
X11R5 uses essentially the same architecture as X11R4, with two small
changes.
The
platform-specific file is called the vendor-specific file, and
the
.I site.def
file is included once before and once after the vendor-specific file:
.LP
.cS
.ta 3i
\fRvendor block section\fP
.sp .2v
#define BeforeVendorCF
#include <site.def>
#undef BeforeVendorCF
.sp .2v
#include <\fIvendor\fR.cf>
.sp .2v
#define AfterVendorCF
#include <site.def>
#undef AfterVendorCF
.sp .2v
\fRsystem description, build definitions\fP
.sp .2v
#include <Project.tmpl>
#include <Imake.rules>
.sp .2v
#include "./Imakefile"
\fRdefault \fIMakefile\fP target entries\fP
.cE
.LP
This allows
.I site.def
to be split into two sections to handle the case where site-specific
definitions need to be known at the time the vendor file is included.
It might have been simpler in some ways to include two different files.
On the other hand,
since instances in which the vendor file needs to know site-specific
things tend to be rare, the before-vendor file would be empty
much of the time.
.LP
The multiple-project architecture described in this document was patterned
after the X11R4 architecture, but can easily be modified slightly to
reflect the X11R5 changes.
.LP
.cS
\fRvendor block section\fP
.sp .2v
#define BeforeVendorCF
#include <site.pdef>
#include <site.def>
#undef BeforeVendorCF
.sp .2v
#include <\fIvendor\fR.pcf>
#include <\fIvendor\fR.cf>
.sp .2v
#define AfterVendorCF
#include <site.pdef>
#include <site.def>
#undef AfterVendorCF
.sp .2v
\fRsystem description, build definitions\fP
.sp .2v
#include <ProjectGroup.ptmpl>
#include <ProjectGroup.tmpl>
.sp .2v
#include <Imake.prules>
#include <Imake.rules>
.sp .2v
#include "./Imakefile"
.sp .2v
\fRdefault \fIMakefile\fP target entries\fP
.cE
The
.I site.def
file is split in halves to conform to the BeforeVendorCF/AfterVendorCF
usage.
The default dummy
.I site.pdef
can be empty, but if you supply a version of
.I site.pdef
in a project's private configuration directory, it should not be empty.
Rather, it should look like this:
.LP
.cS
#ifdef BeforeVendorCF
#endif
.sp .2v
#ifdef AfterVendorCF
#endif
.cE
.LP
I have found it more useful to have
.I imkmf
define
.Cw UseInstalled
by default.
