[comp.lang.modula3] install trouble: 1.6 on IBMR2

mccalpin@perelandra.cms.udel.edu (John D. McCalpin) (04/07/91)

I am running into an error that I cannot understand in the early
stages of installation of 1.6 on an IBM RS/6000.

After much fiddling (including telling imake to not delete its
temporary makefiles), I isolated the problem to line 105 of
util/m3fromC.tmpl.  I don't understand the whole 'imake' process well
enough to hazard a guess as to what is going on.  

Anybody have any ideas?

The offending lines are:
=======================================================================
#include "generic"

/* When we compile Modula-3 files, we compile first the interfaces,
   then the implemenations */

interfaces::
implementations::			<--------   This is line 105

#include INCLUDE_IMAKEFILE
=======================================================================
The log of the session is:
=======================================================================
$ cd /usr/src/Lang/Modula3/dist-1.6
$ make system
        cd system; \
          .ROOT/util/m3fromC; \
          (cd corelib; .ROOT/util/m3all allObjs.o); \
          (cd compiler; .ROOT/util/m3all link-compiler);
cpp -I. -I.ROOT/util -I.
make -f /tmp/Imf.NLgAB6 MAKE=.ROOT/util/imake MAKEFILE=Imakefile
Make: 1254-040 Line number 105 of the description file
        must include a separator character.
   Quitting.
.ROOT/util/imake: Exit code 1.  Stop.
1254-004  The error code from the last failed command is 1.

Make Quitting.
=======================================================================
--
John D. McCalpin			mccalpin@perelandra.cms.udel.edu
Assistant Professor			mccalpin@brahms.udel.edu
College of Marine Studies, U. Del.	J.MCCALPIN/OMNET

orgass+@rchland.ibm.com (Dick Orgass) (04/09/91)

In the referenced message, John McCalpin describes a problem with
make/imake on RISC 6000 systems (called IBMR2 in the Modula-3
distribution).  John's problem is related to the interaction between cpp
and imake.  The following is an explanation and a solution to the
problem that John appears to be describing.

The design and implementation of imake assumes a BSD style C
preprocessor and the distributed source (.ROOT/util/imake.c) has code
for getting along with System V style C preprocessors.  The difference
between the two styles that is of interest here is the treatment of
tabs.  BSD style preprocessors leave tabs in place while System V style
preprocessors compress them to spaces.

The C preprocessor, /lib/cpp, provided with the AIX 3.1 C compiler is a
strict ANSI C preprocessor which cannot be used with imake because of
output format incompatibilities.

The MIT X distribution includes a version of cpp that is System V like
and which can be used with imake.  For AIX 3.1, this is in directory
/usr/lpp/X11/Xamples/util/cpp.

This version of cpp can be used with imake (both the MIT version and the
source distributed with SRC Modula-3 -- .ROOT/util/imake.c) provided
that one change is made to the source file .ROOT/util/imake.c:

Modify line 129 so that it reads as follows:

#if defined(sun) || defined(SYSV) || defined(hpux) || (defined(_IBMR2)
&& defined(_AIX))

[The above is a single line but it may be wrapped in transit through
various mailers.]

If imake is built from the resulting source file and if the version of
cpp from the MIT X distribution is used, imake will work correctly for
IBMR2.

Dick