The easiest way to build a new client (X application) is to use
xmkmf
if an Imakefile
is included in the sources. Type
``xmkmf -a
'' to create the Makefiles, check the configuration if
necessary and type ``make
''. Whenever you install additional man
pages you should update whatis.db
by running ``makewhatis
/usr/X11R6/man
''.
To avoid the ``Virtual memory exhausted'' message from cc while
compiling, increase the data and stack size limits (in csh type ``limit
datasize 32M
'' and ``limit stacksize 16M
'').
Note: Starting with XFree86 2.1 and NetBSD 0.9A, the symbol __386BSD__ no longer gets defined either by the compiler or via the X config files for *BSD systems. When porting clients to *BSD systems, make use of the symbol BSD for code which is truly BSD-specific. The value of the symbol can be used to distinguish different BSD releases. For example, code specific to the Net-2 and later releases can use:
#if (BSD >= 199103)
To ensure that this symbol is correctly defined, include
<sys/param.h>
in the source that requires it. Note that
the symbol CSRG_BASED is defined for *BSD systems in XFree86 3.1.1
and later. This should be used to protect the inclusion of
<sys/param.h>
.
For code that really is specific to a particular i386 BSD port, use __FreeBSD__ for FreeBSD, __NetBSD__ for NetBSD, __OpenBSD__ for OpenBSD, __386BSD__ for 386BSD, and __bsdi__ for BSD/386.
Another note: If you get the message:
ld.so: undefined symbol _XtCvtStringToFont
at run-time, you've stumbled on a semantic weakness of the NetBSD
dynamic linker. Applications that use libXmu also need libXt. If the
client uses a standard Imakefile
, this dependency will probably by
included in the Makefile automagically -- you'll not see the
problem. Otherwise, just add ``-lXt
'' to your library list in the
Imakefile or Makefile and relink.