[comp.unix.aux] g++ port

gerson@parc.xerox.com (Dan Gerson) (09/13/90)

Yesterday, I played around trying to get g++ up under A/UX as I thought it would
be fairly simple.  However, it is starting to look a little more complicated
than I thought, so I was wondering if anyone has already done this.  If so,
could you let me know where I can find the files on internet, or maybe mail me a
diff file?

(Also, on a similar subject, does anyone have a version of emacs for aux with
the diffs already installed [yeah yeah, I'm lazy]?  The emacs file on apple.com
is the distribution 18.55 version, not the aux version, making me have to apply
the diff file, I guess manually.  [Currently I'm running the older 18.54 version
since there was a tar file for that on apple.com.]  And neither the new emacs
nor the previous 18.54 version seemed to have gdb converted - has anyone done
this?)

In case nobody else compiled g++, it was pretty trivial to get it to
successfully compile g++ and cc1plus binaries.  However, when it then trys to
use cc1plus to compile ld.c, it blows up horribly.  I pretty much used the
sledge hammer approach to getting it up, so it might be that I simply have some
of the options wrong, or it might be that I do actually have to modify some
modules.  But before I start going into diff files to figure out what needed to
be done to get gcc up, I thought I'd ask to ensure it was necessary.

For the curious among you, here are my notes on what I did using a standard
g++ 1.37.0 distribution with the latest gcc 1.37 from apple.com and the
latest bison (which I simply compiled without problems under A/UX):

Dan Gerson
Xerox Palo Alto Research Center
------

Notes on installing g++ on A/UX 2.0

modified config.g++ to include:
        aux)                            # Mac II running A/UX
                cpu_type=m68k
                configuration_file=xm-aux.h
                ;;
in the machine type case statement (copied from config.gcc).

modified Makefile to add -DYYDEBUG to CFLAGS since otherwise an error
occurs in cplus-parse.y referencing yytname which is undefined unless YYDEBUG
is set.  This appears to be an incompatibility with -DGATHER_STATISTICS.

also uncommented
HAVE_UNISTD_H = -DNO_UNISTD_H
in the Makefile.  Although A/UX does have <unistd.h>, the needed definitions
are under a POSIX conditional.  Rather than defining the POSIX conditional
as being true, it seems better to let g++ do its own definition.

A/UX appears to have USG, so uncommented
USG_STDIO = -DUSG_STDIO
in the Makefile.

Defined:
DIR = /local/gcc/gcc-1.37.aux
in the Makefile so that maketest will work with my hierarchy.

Apple has fcntl.h under /usr/include rather than /usr/include/sys, which
is where g++ expects it.  Created a link.

Apple's <sys/param.h> file doesn't define NBPG and CLSIZE.  Added
#define NBPG 8192
#define CLSIZE 1
to the gcc/config/tm-aux.h file.  Yeah, I know, apple defines getpagesize
in some other header file, but I can clean this up later.

Then pretty much did the standard installation:

setenv DIR /local/gcc/gcc-1.37.aux
make maketest
config.g++ aux
make

Everything seems to work until g++ is compiled and the makefile tries to compile
ld.c.  (which is the first time it tries to use the cc1plus it just made).  At
this point all hell breaks loose, apparently looking like g++'s parser is
broken.

coolidge@cs.uiuc.edu (John Coolidge) (09/13/90)

gerson@parc.xerox.com (Dan Gerson) writes:
>[...] I was wondering if anyone has already done this.  If so,
>could you let me know where I can find the files on internet, or maybe mail me a
>diff file?

Yes, I did a port of g++ several months ago. The binaries and sources
from that patch are available on wuarchive.wustl.edu (in systems/aux/gnu),
and I've just put the patch itself there. I'm planning on putting out
a new version sometime soon incorporating the newer gcc patches, but
for the moment I don't have anything ready to go.

--John

--------------------------------------------------------------------------
John L. Coolidge     Internet:coolidge@cs.uiuc.edu   UUCP:uiucdcs!coolidge
Of course I don't speak for the U of I (or anyone else except myself)
Copyright 1990 John L. Coolidge. Copying allowed if (and only if) attributed.
You may redistribute this article if and only if your recipients may as well.