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