From: abraham@iesd.auc.dk (Per Abrahamsen)
Subject: Re: gcc include directories
Organization: CS@AUC, Denmark
	<1992Dec4.231255.25814@CSD-NewsHost.Stanford.EDU>
	<ABRAHAM.92Dec7191319@loke.iesd.auc.dk>
	<1992Dec10.033542.2080@CSD-NewsHost.Stanford.EDU>
Date: 16 Dec 92 11:08:02


>>>>>> On Fri, 4 Dec 1992 23:12:55 GMT, bothner@Xenon.Stanford.EDU (Per
>>>>>> M. Bothner) said:

Bothner> I doubt Cygnus is to blame.  We would just as soon change it,
Bothner> but Stallman likes it the way it is.  (Specifically, we find
Bothner> a directory for the version number useless.)

In article <ABRAHAM.92Dec7191319@loke.iesd.auc.dk> abraham@iesd.auc.dk
(Per Abrahamsen) writes: 

Abraham> Please, the version number directory is very useful.  It
Abraham> allows us to install new versions without removing the old
Abraham> version.

>>>>> On Thu, 10 Dec 1992 03:35:42 GMT, bothner@Xenon.Stanford.EDU
>>>>> (Per M. Bothner) said:

Bothner> Let me clarify my point: Being able to choose easily between
Bothner> multiple installed versions is very useful.  So useful that
Bothner> it should perhaps not be restricted to the compiler!  

It seldom gives problems with the other utilities, as the data format
of the files they manipulate stay reasonable constant.  Not so with
g++. 

Bothner> The -V flag seems rather peculiar:

Bothner> * You can't use the -V flag to select a different version of the gcc
Bothner> program itself.

Granted.  But it has not given any problems with the any of the gcc2
versions yet.

Bothner> * You can only use the -V flag to select versions of things that
Bothner> get installed by the compiler.  You can't use it to select different
Bothner> versions of the assembler, or the linker, or the C libraries, at
Bothner> least as things are normally installed.  This is partly because
Bothner> the version number is specific to gcc, and none of the other tools
Bothner> can use it.

The assembler, the linker, and the C libraries goes into 

	$GNUHOME/lib/gcc-lib/$ARCH/$VERS

This is the first place gcc search for them.  It works very well.

The only problem today is that libg++ for some reason is not assumed
to be in that directory, both the gcc and the libg++ distribution
seems to expect that all versions of gcc will share the same version
of libg++.  This is a pain, and we have to change both by hand to
correct the situation.

Bothner> * Using a -V flag can't be used to select different versions of
Bothner> other GNU utilities (i.e. switching between emacs 18 and 19),
Bothner> which is potentially just as useful.

It is less important with tools like emacs, we will probably never
have more than two versions of emacs installed.  After all, both emacs
18 and 19 manipulates text files, and their format does not (I hope!)
change. 

We have 4 versions of g++1 and 5 versions of gcc2 installed (tree
official versions and two local modifications).  

Bothner> The more general (and standard) way to select versions is by
Bothner> installing different versions into different directories.
Bothner> One simple mechanism:

Bothner> 	/new/bin - new releases
Bothner> 	/usr/bin - standard (default) version
Bothner> 	/old/bin - old obsolete version

And break object (and possibly source) code compatibility for all
users when we install a new version of g++?  The users of /new/bin/g++
and /usr/bin/g++ would need to edit their paths, and what would the
users of /old/bin/g++ do?  Upgrade their code is not an acceptable
answer here.

Bothner> Because gcc is not just a simple binary, and so running gcc involves
Bothner> a whole slew of programs and libraries, it is a little more
Bothner> involved to install it than just installing into /new/bin.
Bothner> But not a lot.  To install a new gcc version in /new/bin you could:

Bothner> 	configure sun4 --prefix=/gnu/gcc-VERSION
Bothner> 	make all install
Bothner> 	ln /gnu/gcc-VERSION/bin/gcc /new/bin/gcc

Bothner> (Here VERSION can be any identifier chosen by the installer.)

We are several people who install gcc related software, and having a
standard name scheme make it easier to ensure that we use the same
conventions. 

gcc2 also support arbitrary version identifiers, a fact we use for our
local hacked versions.
Newsgroups: gnu.gcc.help,comp.os.mach