Bug 15712

Summary: compile errors on Mac OS X with cairo 1.6.x and quartz/xlib enabled
Product: cairomm Reporter: Benjamin Reed <ranger>
Component: BuildAssignee: Murray Cumming <murrayc>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium Keywords: patch
Version: CVS HEAD   
Hardware: All   
OS: Mac OS X (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: separate calls to possibly-conflicting surface calls
enable hidden visiblity of the wrap_* functions
separate calls to possibly-conflicting surface calls

Description Benjamin Reed 2008-04-25 11:09:29 UTC
On Mac OS X, if you have both the xlib and quartz backends
enabled in cairo, cairomm fails to build with conflicting headers:

/bin/sh ../libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -DPNG_NO_MMX_CODE -I/sw/lib/freetype219/include/freetype2 -I/sw/lib/freetype219/include -I/sw/lib/fontconfig2/include -I/sw/include/pixman-1 -I/sw/include
/libpng12 -I/sw/include -I/sw/include/cairo -I/usr/X11R6/include -I/usr/X11/include -I/sw/lib/freetype219/include -I/sw/lib/freetype219/include/freetype2 -I/sw/lib/fontconfig2/include -I/sw/include -I/usr/X11R6/include  -g -O2 -c
 -o context.lo context.cc
g++ -DHAVE_CONFIG_H -I. -I.. -DPNG_NO_MMX_CODE -I/sw/lib/freetype219/include/freetype2 -I/sw/lib/freetype219/include -I/sw/lib/fontconfig2/include -I/sw/include/pixman-1 -I/sw/include/libpng12 -I/sw/include -I/sw/include/cairo -I
/usr/X11R6/include -I/usr/X11/include -I/sw/lib/freetype219/include -I/sw/lib/freetype219/include/freetype2 -I/sw/lib/fontconfig2/include -I/sw/include -I/usr/X11R6/include -g -O2 -c context.cc  -fno-common -DPIC -o .libs/context
.o
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:255: error: declaration does not declare anything
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/QuickdrawTypes.h:264: error: using typedef-name 'Cursor' after 'struct'
/usr/X11R6/include/X11/X.h:108: error: 'Cursor' has a previous declaration here
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/QuickdrawTypes.h:269: error: using typedef-name 'Cursor' after 'struct'
/usr/X11R6/include/X11/X.h:108: error: 'Cursor' has a previous declaration here
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/QuickdrawTypes.h:269: error: invalid type in declaration before ';' token
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/QuickdrawTypes.h:269: error: conflicting declaration 'typedef int Cursor'
/usr/X11R6/include/X11/X.h:108: error: 'Cursor' has a previous declaration as 'typedef XID Cursor'
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/QuickdrawTypes.h:296: error: using typedef-name 'Picture' after 'struct'
/usr/X11R6/include/X11/extensions/render.h:31: error: 'Picture' has a previous declaration here
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/QuickdrawTypes.h:300: error: using typedef-name 'Picture' after 'struct'
/usr/X11R6/include/X11/extensions/render.h:31: error: 'Picture' has a previous declaration here
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/QuickdrawTypes.h:300: error: invalid type in declaration before ';' token
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/QuickdrawTypes.h:300: error: conflicting declaration 'typedef int Picture'
/usr/X11R6/include/X11/extensions/render.h:31: error: 'Picture' has a previous declaration as 'typedef XID Picture'
Comment 1 Benjamin Reed 2008-04-25 11:10:08 UTC
Created attachment 16179 [details] [review]
separate calls to possibly-conflicting surface calls
Comment 2 Benjamin Reed 2008-04-25 11:10:35 UTC
Created attachment 16180 [details] [review]
enable hidden visiblity of the wrap_* functions
Comment 3 Benjamin Reed 2008-04-25 11:22:37 UTC
Created attachment 16182 [details] [review]
separate calls to possibly-conflicting surface calls

rebased the patch to put the new .cc files into cc_sources_private instead of cc_sources in Makefile.am
Comment 4 Jonathon Jongsma 2008-04-25 21:43:56 UTC
Thanks for the patch.  I've pushed the it to git.  I left out the gcc visibility one for now, though ...

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.