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/OMNETorgass+@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