\input texinfo
@setfilename srctree.info

@ifinfo
@format
START-INFO-DIR-ENTRY
* GNU Source Trees: (srctree).	Various notes on building GNU source trees
END-INFO-DIR-ENTRY
@end format
@end ifinfo

@ifinfo
This file purports to document the process by which large trees of GNU
software are maintained and built.

Copyright 1993 Free Software Foundation, Inc.
Contributed by Cygnus Support.  Written by david d `zoo' zuhn.

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

@ignore
Permission is granted to process this file through Tex and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).

@end ignore
Permission is granted to copy or distribute modified versions of this
manual under the terms of the GPL (for which purpose this text may be
regarded as a program in the language TeX).
@end ifinfo

@setchapternewpage off
@settitle GNU Source Trees
@titlepage
@title{Working in a GNU Source Tree}
@subtitle{A guide to how it all works}
@author david d zuhn
@author Cygnus Support
@page
@tex
\def\$#1${{#1}}  % Kluge: collect RCS revision info without $...$
\xdef\manvers{\$Revision: 1.3 $}  % For use in headers, footers too
{\parskip=0pt
\hfill Cygnus Support\par
\hfill \manvers\par
\hfill \TeX{}info \texinfoversion\par
}
@end tex

@vskip 0pt plus 1filll
Copyright @copyright{} 1993 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

@end titlepage

@node Top
@top

This file is a place for a lot of little facts to appear, facts about
how to build large trees of GNU software, and for how to add software to
the tree.  There is very little structure to this document at this point
in time, so feel free to add whatever information you happen to
discover.  Worry more about technical content than about form or style.

@menu
* Standards::			GNU Coding Standards 
* Configuration::		Configuring the tree
@end menu

@node Standards
@chapter GNU Coding Standards 

This should be fairly obvious, but the basic document describing a tree
of GNU software is the GNU Coding Standards (@file{standards.texi}).  

Cygnus maintains an additional standard Makefile target:

@table @samp
@item install-info
Install all Info files into @file{$(infodir)}, and run the program to
update the @file{info.dir} file.  This last program currently
(04/13/1993) doesn't exist.
@end table

In addition to this additional target, the optional targets @samp{check}
and @samp{installcheck} are required for every package in the tree.

@node Configuration
@chapter Configuring the tree

Since many components of the tree use 'autoconf' generated configure
scripts, you must configure the tree on the host that you wish to
configure for.  

A corollary to this is that you also need to have a C compiler available
at configure time.  @samp{cc} is used, unless you specify another
compiler by setting the environment variable @var{CC} during the
configuration.  The scripts and Makefiles used to build Cygnus releases
do something like this:

@example
CC='cc -Xs' ../progressive/configure sparc-sun-solaris2 @var{etc}
@end example

You are likely to run into problems if you configure with a different
compiler than you use during build time.  For example, if you configure
using @samp{gcc}, and compile with @samp{cc} on SunOS 4.x, you'll have
problems with programs that expect @samp{const} to be useful and valid,
since this feature is tested for at configure time.


@contents
@bye
