[comp.windows.x] Imake gotcha - escape colons

drl@VUSE.VANDERBILT.EDU (David R. Linn) (02/07/90)

This may seem obvious to most but it took me an hour and a half
to track down. The imake manual page includes the following:

     On systems whose cpp reduces multiple tabs and spaces  to  a
     single  space, imake attempts to put back any necessary tabs
     (make is very picky about the difference  between  tabs  and
     spaces).   For this reason, colons (:) in command lines must
     be preceded by a backslash (\).

This means that colons in a MACRO that will be USED in a command
line must also be escaped.  In my particular case, I modified the
Imakefile in TOP/lib/Xt to provide a PARSE_DEFINES for compiling
parse.c.  It looks something like this:

  PARSE_DEFINES = -DXFILESEARCHPATHDEFAULT= <<NONL>>
\"$(LIBDIR)/%L/%T/%N%S\:$(LIBDIR)/%l/%T/%N%S\:$(LIBDIR)/%T/%N%S\"
		      ^^		    ^^
		      Note the escaped colons

The <<NONL>> indicates a newline introduced for the purpose of mail;
it does not exist in the Imakefile.  This macro is used in special
rules for compiling parse.c in the various combinations of debugging
and profiling.

Escaping the colons was not necessary on a Sun3 or Sun4 under SunOS
with its BSD-derived make.  However, under HP-UX on an HP9k300, the
makefile generated without the escapes was rejected by the ATT-derived
make.

	Hope this is of some use to someone,
	 David

David Linn, System Manager/Postmaster	   |INET: drl@vuse.vanderbilt.edu
Vanderbilt University School of Engineering|Phone: [+1] 615-343-6164
Post Office Box 3241, Station B            |Disclaimer:
Nashville, TN, USA  37235                  |  I speak only for myself.