[comp.sys.ibm.pc.rt] cpp problem on RS6000

oliveria@caen.engin.umich.edu (ROQUE DONIZETE DE OLIVEIRA) (09/01/90)

Does anyone know why cpp on the RS6000 doesn't like the comment lines
in the file below (xanadu is an IBM RS/6000):

xanadu% cat /tmp/t
/**/# The binaries go here
BINDIR                  = /usr/um/math/bin
/**/# The libraries go here
LIBDIR                  = /usr/um/math/lib
xanadu% 
xanadu% /lib/cpp /tmp/t /tmp/t.out
        1 |  # The binaries go here
            ..a....................
a - 1288-218: (W) Unknown preprocessing directive The.
        3 |  # The libraries go here
            ..a.....................
a - 1288-218: (W) Unknown preprocessing directive The.
xanadu% 
xanadu% cat /tmp/t.out
# 1 "/tmp/t"
BINDIR                  = /usr/um/math/bin
LIBDIR                  = /usr/um/math/lib


As you can see, it didn't like the comment lines. On other systems, like
apollos, suns or dec3100, I would get (as the output file /tmp/t.out ):

# 1 "/tmp/t"
# The binaries go here
BINDIR			= /usr/um/math/bin
# The libraries go here
LIBDIR			= /usr/um/math/lib

Does anyone know if this is a bug or how I can coerce cpp to do what I want ?
Thanks.
      
      Roque Oliveira
      oliveria@caen.engin.umich.edu
      Computer Aided Engineering Network

eswu@engshien.uucp (Eng-Shien Wu/16000000) (09/01/90)

The Risc System/6000 uses an ANSI-compatible cpp where the following
line is not legal:

/**/ #it thinks this is a macro statement, because they can start anywhere

The solution is to use the cpp in /usr/lpp/X11/Xamples/util/cpp/cpp.
An excerpt from the document "Porting 4.3 BSD Programs to AIX Version 3.1":
---------------------------------------------------------------------------


   5.2.  /lib/cpp

      /lib/cpp is not the Kernighan & Ritchie cpp.   In-
      stead,  it is the same preprocessor as the AIXv3.1
      C compiler uses, but externalized, and it  uses  a
      default  language level of extended.  For example,
      /lib/cpp does not have to start preprocessor  mac-
      ros  in the first column (mandated by ANSI C), but
      any text after an #endif is ignored  (not  allowed
      by ANSI C).  The flags -tp -B/path/ can be used as
      compiler arguments to cause /path/cpp to  be  used
      for  preprocessing  the  source  file (see below).
      For example, to compile a single C source program,
      file.c, using /lib/cpp instead of the C compiler's
      built-in preprocessor, use:

              cc -tp -B/lib/ file.c


      See the InfoExplorer documentation in Appendix  A.
      of  the XL C Reference Manual for more information
      about language levels.

   5.3.  Kernighan & Ritchie cpp

      Because there are many programs, specifically  X11
      programs,  that  rely on the behavior of the K&R C
      preprocessor,   this   has   been   provided    in
      /usr/lpp/X11/Xamples/util/cpp/cpp.   To  get  this
      used as the C preprocessor, you need to  have  the
      X11   Development  LPP  installed  and  invoke  it
      directly,      use       the       flags       -tp
      -B/usr/lpp/X11/Xamples/util/cpp/   with  the  com-
      piler, or modify the /etc/xlc.cfg stanza  as  men-
      tioned above.

---------------------------------------------------------------------------

-- Eng-Shien Wu,  "My views only"

	X Windows, IBM Advanced Workstations Div, Austin, Texas
	Internet: eswu@ub.cc.umich.edu    VNET: ausvmq(engshien)