[cairo-bugs] [Bug 63310] New: x11-libs/cairo-1.12.12 fails to compile using clang+lto

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue Apr 9 05:43:48 PDT 2013


          Priority: medium
            Bug ID: 63310
          Assignee: chris at chris-wilson.co.uk
           Summary: x11-libs/cairo-1.12.12 fails to compile using
        QA Contact: cairo-bugs at cairographics.org
          Severity: normal
    Classification: Unclassified
                OS: Linux (All)
          Reporter: abendstund at gmail.com
          Hardware: All
            Status: NEW
           Version: 1.12.12
         Component: general
           Product: cairo

Created attachment 77662
  --> https://bugs.freedesktop.org/attachment.cgi?id=77662&action=edit

I've posted this to bugs.gentoo.org before

As requested there, I repost the patches here. There are two issues I
encountered when compiling cairo with "clang -O4":

1) bitcode representation of object files makes float endianess test in
configure break (see attached patch)

2) "automatic configuration" of pthreads does not work while explicitly
--enable-pthread=yes to configure does

If "--enable-pthread=yes" configure option is not passed, the default is "auto"
instead of "yes", which basically runs the first block of the following lines
  cairo-1.12.12/build/configure.ac.pthread (around line 220)
-- >8 --
    dnl Check if we can use libc's stubs in libcairo.
    dnl Only do this if the user hasn't explicitly enabled
    dnl pthreads, but is relying on automatic configuration.
    if test "x$enable_pthread" != "xyes"; then
            [pthread], [-D_REENTRANT], [],

    dnl Default to using the real pthreads for libcairo.
    if test "x$have_pthread" != "xyes"; then
-- >8 --

This automatic configuration apparently does not work if clang -O4 is used,
even though libcairo_pthread_program seems to succeed.

Or in other words: using libc stubs as a pthread provider currently does not
work if clang -O4 is in use, the automatically configured stubs make the
compile quit with

libtool: link: clang -march=native -pipe -fomit-frame-pointer -O4
-finline-limit=1200 -march=native -pipe -fomit-frame-pointer -O4 -Wl,-O1
-Wl,--hash-style=gnu -Wl,--sort-common -Wl,-z -Wl,norelro -o
.libs/cairo-analyse-trace cairo-analyse-trace.o cairo-error.o  -Wl,--as-needed
../util/cairo-missing/.libs/libcairo-missing.a ./.libs/libcairoperf.a
../src/.libs/libcairo.so -lpixman-1 -lfontconfig -lfreetype -lEGL -ldl -lpng15
-lxcb-shm -lxcb-render -lxcb -lXrender -lX11 -lXext -lz -lGL -lOpenVG -lrt -lm
error: undefined reference to 'pthread_mutexattr_settype'
error: undefined reference to 'pthread_mutexattr_init'
error: undefined reference to 'pthread_mutexattr_destroy'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[4]: *** [cairo-analyse-trace] Error 1
make[4]: Leaving directory
make[3]: Leaving directory
make[2]: Leaving directory
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: Leaving directory
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

I'm unsure about a proper fix for this, but thought about
  - patch configure.ac.pthread to use real_pthread as an automatic
    i.e. throw out libc stubs, use real_pthread if libcairo_pthread_program 


You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo-bugs/attachments/20130409/38a3847c/attachment.html>

More information about the cairo-bugs mailing list