[cairo] Fix OS/2 build

Peter Weilbacher mozilla at weilbacher.org
Mon Nov 10 14:30:46 PST 2008

On 10.11.08 17:13, Behdad Esfahbod wrote:
> Doodle wrote:
>> Just a note:
>> Including os2.h from a library's header file might introduce problems
>> sometimes.
>> Imagine a case, when the library needs only INCL_PM and INCL_DOSERRORS
>> parts from os2.h, so it defines those, and includes os2.h.
>> Then the application includes the library's header file (thus,
>> implicitly including the PM and DOSERRORS parts from os2.h), then it
>> wants to include os2.h with INCL_SEMAPHORES, INCL_PM and INCL_DOSERRORS.
>> However, as os2.h was already included, it won't be included again, and
>> the INCL_SEMAPHORES will not take effect.
>> That was the reason for not having os2.h includes in Cairo's public
>> os2-specific header files.
> Other systems have similar problems.  The user can do their defines before
> including cairo-os2.h.

That is right, but Doodle has a good point there. How is the user supposed
to _know_ that he has to #define the necessary macros before including
cairo-os2.h? If he defines none of too few he might get really weird error
messages that can take long to track down. (Especially since it worked
without those #defines in user code until now.)

The problematic checkin said
    "Test that every cairo private header includes some other cairo
     header before any other includes."
That would still be correct when only moving the cairo-os2.h line down as
Dave suggested.

That said, I can't build cairo to test any of the changes. I get
    In file included from cairoint.h:2365,
                     from cairo-analysis-surface.c:37:
    cairo-region-private.h:50: error: parse error before "pixman_region32_t"
    cairo-region-private.h:50: warning: no semicolon at end of struct or union
    cairo-analysis-surface.c:55: error: field `supported_region' has incomplete type
with the 1.8.2 package (using pixman 0.12.0).


More information about the cairo mailing list