[cairo] Recommendations for 1.4.0

Dave Yeo daveryeo at telus.net
Sat Mar 3 22:45:34 PST 2007

On Sat, 03 Mar 2007 16:13:20 -0500, Behdad Esfahbod wrote:

>  - Fix mutex initialization in win32, os2, and beos backends.  They are
>out of synch with the actually mutexes declared, and that causes link
>errors if not using pthread on win32.  I'm wondering if we should go for
>the backup plan:

Ok, I tried compiling and doing a make check on 1.3.16. First problem
is that in test/makefile.am we  need this patch

--- Makefile.am.bak     Fri Mar  2 21:04:02 2007
+++ Makefile.am Sat Mar  3 22:24:54 2007
@@ -465,7 +465,7 @@
 LDADD += -lpthread

-SUPPORT_PROGS += imagediff png-flatten
+SUPPORT_PROGS += imagediff$(EXEEXT) png-flatten$(EXEEXT)

 SUPPORT_PROGS += pdf2png

please apply. Actually looking at above pdf2png should also have
$(EXEEXT) added.

Anyways make check then ends with this
f:/usr/bin/sh.exe ../libtool --tag=CC --mode=link gcc.exe  -g -O2   -o
imagediff.exe  imagediff.o libcairotest.la -lpthread -lm
gcc.exe    -g    -O2    -o    imagediff.exe    imagediff.o       
./.libs/cairotest.a    -L/usr/local/lib   
/usr/local/lib/libfontconfig_dll.a    /usr/local/lib/libfreetype_dll.a 
  /usr/local/lib/expat.a    /usr/local/lib/libpng12_dll.a    -lz   
-lpthread    -lm       -L/usr/local/lib -L/usr/local/lib
(/usr/src/cairo-1.3.16/src/.libs/cairo.a(cairo-font.o)): Undefined
symbol _cairo_font_face_mutex referenced from text segment
(/usr/src/cairo-1.3.16/src/.libs/cairo.a(cairo-font.o)): Undefined
symbol _cairo_font_face_mutex referenced from text segment
cairo-font.c:0 (/usr/src/cairo-1.3.16/src/.libs/cairo.a(cairo-font.o)):
More undefined symbol _cairo_font_face_mutex refs follow
make[3]: *** [imagediff.exe] Error 1

which I take is the mutex problem referred above
ps also something needs to be done about pthread on OS/2, I usually
edit config.h to comment out
#define HAVE_PTHREAD_H 1
in config.h
A better fix would be along the lines of win32 where you can have or
not have pthreads. Or perhaps a configure option.
pps also here configure has to be called with --enable-os2
--disable-xlib, not a big deal but xlib needs an older libc (EMX) and
is not compatible with the newer libc (klibc).

More information about the cairo mailing list