This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GCC Install Instructions


Sorry for the duplicate post - I forgot to change the subject and address 
lines.

In reference to:
On Monday 12 August 2002 11:28 am, Janis Johnson wrote:
> On Sat, Aug 10, 2002 at 12:32:30AM -0500, Michael S. Zick wrote:
> > 10) The gcc/INSTALL files could use some help - will post something
> > later.
>
> Good, thanks.  The source for these is gcc/doc/install.texi.
>
Text at: <http://gcc.gnu.org/ml/gcc/2002-08/msg00658.html>

While the week's worth of "Cockpit Errors" I made at the keyboard still fresh 
in my mind...
Thread start at: <http://gcc.gnu.org/ml/gcc/2002-08/msg00457.html>

I am considering a two step process:
1) Clarify those install directions for GCC in a manner workable both with 
current GCC requirements and the current workings of other GNU-projects.
<panic>
2) Do a major re-think of those makefiles.  <panic> Actually, what I have in 
mind will re-use about 99.44% of the existing makefiles </panic>.  The 
process will remain the same, only the internal structure will become more 
general.

When I speak here of "makefiles" I naturally, also, mean those files the 
user's Makefile(s) is/are built from.

Item (2) above is at the "Comment and Reaction" stage for now.

Dealing with item (1) first - a description of the situation as I found it 
from the prospective of a "First Time Builder" of GCC and then a description 
of the sort of "Recommendation(s)" I would like to include in the "Install" 
directions.

Historically (and currently for some GNU projects) where the "<release_name>" 
is the highest level directory in the tar-ball downloaded...

Structure A: (where installation instructions say enter: "./configure")
<some_where>/<release_name>/configure.sh
I.E: Building in the <release_name> directory.

Structure B: (where installation instructions say enter: "../configure")
<some_where>/<release_name>/configure.sh
<some_where>/<release_name>/<build_directory>

Structure C: (where installation instructions say enter: 
"<src_dir>/configure")

<some_where>/<release_name>/configure.sh
<some_where>/<optionally_ a_built_for_directory>/<build_directory>

Currently, (as of the gcc-3.1.1 makefiles, when building (at least) <c, 
Ada>), directory structure (C) is REQUIRED.
(Which means that a "VPATH" capable version of "make" is also REQUIRED.)

Note: If you have a "VPATH" capable version of "make" (at least if you have a 
"VPATH" capable version of GNU-make) then other GNU-projects whose 
"makefiles" are written for either structure (A) or structure (B) but also 
set "VPATH" also work for structure (C).

 - * - * - * -

What I would like to include in the installation instructions is a: 
"Recommended Directory Structure" which would look like this -

Having installed your sources from the release tar-balls, your source 
directory structure will look like:
<some_where>/<release_name>
where "<release_name>" is created by the (FSF) tar-ball you just used.

Now create a directory for building the software into which is parallel to 
(and dis-joint from) the <release_name> directory.  You may use a single 
directory structure for the build, or multiple directories if doing multiple 
builds.
That is, make your build directory structure look like:
<some_where>/<build_directory>
OR:
<some_where>/<any_number_of_build_descriptive_directory(ies)/<build_directory>

Make that build directory your current directory and enter (the correct 
expansion of): <some_where>/<release_name>/configure

 - * - * - * -

Using the building of gcc-3.1.1 as an example, this would give a "source 
directory" structure like so (when combined with the other efforts being 
undertaken to have a "Software Requirements" page(s)):

<some_where>/<gcc-3.1.1>

If the system doesn't have a usable "make":
<some_where>/<make-3.79.1>

If user wants documentation built and system doesn't have a usable "makeinfo":
<some_where>/<texinfo-4.1>

If user wants a new set of "binutils" tools (perhaps to support the 
"--new-c++-abi" option):
<some_where>/<binutils-2.13>

If user wants a new gdb:
<some_where>/<gdb-5.2.1>

And so on, and so forth; for whatever the user needs to support a native 
build, cross build (double-cross) or a Canadian cross build (triple-cross).
All the while maintaining the ability to start the build using one or more 
"any ol' compiler(s)" and set(s) of tools.

Where all of the "<some_where>" portions of the source directory paths may be 
the same, relative, or different, absolute paths as long as they meet the 
"dis-joint" requirement.

 - * - * - * - * -

Moving forward, to "pre-think" item (2)...

Retain the historical sequence of: "configure", "make bootstrap", ["make 
check"], "make install"...

Add the targets for "make prep" and "make prep-check" - perhaps also add a 
single new target "make easy".

"make prep":
Tries to Grok the system's directory structure for the sources of everything 
needed, beginning with the recommended directory structure.  Writes a "fill 
in the blanks" script file WITH DIRECTIONS for anything it can't resolve a 
single path too (multiple versions of a needed source, versions on a remote 
system that isn't mounted when the command is run, etc.)

[Avoiding the case where messges like: "Can't make the documents because your 
makeinfo is too old" that fly by among a zillion other messages.]

After the user updates the generated file:

"make prep-check":
Will simply (??) check for a usable source(s) directory structure based on 
the user's updates to the path information of (above) generated file.
Ending with directions to the user to enter either:
"./configure" or "./configure --site=<generated_and_edited_filename>"

At which point the "First Time Builder" joins the path taken by the "Old 
Pros".

Comments?  Suggestions?

Mike

PS: I don't think the changes to the install instructions will take a 
copyright assignment - those are trival clarifications.  The changes to all 
of the "makefile" stuff are fairly extensive, so I need that link to the 
copyright assignment form please.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]