I recently tried to build a package that was using cpp for other purposes than
preprocessing C files. Its configure script was looking for a way to not have
cpp predefine anything, and it specifically tried the -undef option, but
failed. From reading the docs, I couldn't figure out why. Here's a quote from
"info cpp":

'-undef'
     Do not predefine any system-specific or GCC-specific macros.  The
     standard predefined macros remain defined.  *Note Standard
     Predefined Macros::.

So I searched the web a bit and figured that I could probably fix it in the
specs file. I realise that the specs file probably isn't the canonical place to
change this.

I'll attach a patch for the specs file that wraps all old define rules for cpp
inside the following:

%{!undef:old define rules}

I don't know if this is the correct thing to do, but it works for me<TM>.

"cpp -undef -mD < /dev/null" gives me this list:

#define __unix 1
#define __STDC_HOSTED__ 1
#define __unix__ 1
#define unix 1
#define __CYGWIN__ 1
#define __CYGWIN32__ 1

All but __STDC_HOSTED__ are system/gcc-specific according to "*Note Standard
Predefined Macros".

In my specific case, the configure script is looking for a way to not have
"unix" defined.

FWIW, the provided patch fixes all of the above, so that the output from the
above command is:

#define __STDC_HOSTED__ 1

Cheers,
Peter


-- 
           Summary: cpp does not honor the -undef option
           Product: gcc
           Version: 3.4.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: preprocessor
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: peda at lysator dot liu dot se
  GCC host triplet: i686-pc-cygwin


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26052

Reply via email to