Subject: Re: Compiling XFree86
To: C Kane <>
From: Matthieu Herrb <>
List: current-users
Date: 02/23/1999 22:24:04
You wrote (in your message from Fri 19)
 > Hello.
 > Someone has posted a reasonably complete "crib sheet" for recompiling
 > netbsd, including how to build distribution sets.  It's been useful.
 > Does anyone have such a thing for XFree86? 

Not in a usable form, but I can try to help. 
There is a Makefile in xsrc that has a 'build' target with the same
meaning as in /usr/src: build and install everything. 
To be a less monolithic, you will need to use the standard X targets
in xsrc/xc:
- 'make World' generates all Makefiles, cleans old obs, and compiles
  all the tree. It is equivalent to 
- 'make install' installs all binaries and config files
- 'make' installs all man pages
- 'make install.linkkit' (i386 only) installs the XFree86 Linkkit.
- 'make Everything' generates all Makefiles and compiles all the tree
  without a clean. 

- 'make includes' generates some symbolic links needed to build the
- 'make', 'make clean' and 'make depend' do what you can expect
- 'make Makefile' regenerates the Makefile in the current dir
- 'make Makefiles' regenerates recursively all Makefiles from the
  current dir.

Make World is equivalent to 'make Makefiles && make cleandir && make
includes && make depend && make'
Make Everything is equivalent to 'make Makefiles && make includes &&
make depend && make'.

After building and installing xc, you can go to 'contrib'.
- 'xmkmf -a' generates all Makefiles
- 'make' builds the tree
- 'make install' && 'make' installs everything. 

The concept similar to the BSD obj directories for X11 is the shadow
link trees. To build xsrc in a separate tree, you start by build a
shadow link tree with the 'lndir' command. For instance:

  mkdir xobj.i386
  cd xobj.i386
  lndir /usr/xsrc
  make build

 >  In particular, is it 
 > advisable or possible to make incremental compiles of XFree86 (without
 > doing a make clean which seems to be done automatically)?  

Yes. see 'make Everything' above.

 > What needs
 > to be done to compile and install XF86Setup which is part of the 
 > distribution but isn't built by default?

you can create a xc/config/cf/host.def file to customize your build.
It may include all configuration options defined in
xc/config/cf/xf86site.def or other files in xc/config/cf.  For example
Here's the file I use to reenable the build of XF86Setup (you need to
have the tcl and tk packages installed):

-- Cut Here --
#define InstallEmptyHostDef

#define BuildXF86Setup		YES

#define HasTcl			YES
#define HasTk			YES
#define TclIncDir		/usr/pkg/include/tcl8.0
#define TclLibDir		/usr/pkg/lib
#define TkIncDir		/usr/pkg/include/tk8.0
#define TkLibDir		/usr/pkg/lib
#define TkLibName		tk80
#define TclLibName		tcl80
-- Cut Here --

Hope this helps.