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.