cairoインストール

ちょっと前から放置していたFirefoxSolarisでビルドする一環として、cairoをインストール。

ソース入手

ソースはここから入手できます。ダウンロードして展開。

ビルド

早速なにも考えないでconfigureをかけてみます。

$ ./configure

おや、以外にノーエラーで終わった。glibが必要だけど、もうインストールはしてありますよ。
続いてmake。

$ /usr/local/bin/make
(中略)
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I. -I../pixman/src 
-I/usr/local/include/freetype2 -I/usr/local/include -I/usr/sfw/include/libpng12 -Wall -Wsign-compare 
-Werror-implicit-function-declaration -Wpointer-arith
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes 
-Wmissing-declarations -Wnested-externs -Wpacked -Wswitch-enum 
-Wmissing-format-attribute -Wstrict-aliasing=2 -Winit-self 
-Wunsafe-loop-optimizations -Wdeclaration-after-statement 
-Wold-style-definition -fno-strict-aliasing -g -O2 -MT 
cairo-xlib-surface.lo -MD -MP -MF .deps/cairo-xlib-surface.Tpo -c cairo-xlib-surface.c  -fPIC -DPIC -o .libs/cairo-xlib-surface.o
cairo-xlib-surface.c: In function '_CAIRO_FORMAT_TO_XRENDER_FORMAT':
cairo-xlib-surface.c:196: error: 'PictStandardA1' undeclared (first use in this function)
cairo-xlib-surface.c:196: error: (Each undeclared identifier is reported only once
cairo-xlib-surface.c:196: error: for each function it appears in.)
cairo-xlib-surface.c:198: error: 'PictStandardA8' undeclared (first use in this function)

なんか定義されてないって言っています。PictStandardA1が定義されてない?該当するソースはこんなの。

static XRenderPictFormat *
_CAIRO_FORMAT_TO_XRENDER_FORMAT(Display *dpy, cairo_format_t format)
{
    int pict_format;
    switch (format) {
    case CAIRO_FORMAT_A1:
        pict_format = PictStandardA1; break;
    case CAIRO_FORMAT_A8:
        pict_format = PictStandardA8; break;
    case CAIRO_FORMAT_RGB24:
        pict_format = PictStandardRGB24; break;
    case CAIRO_FORMAT_ARGB32:
    default:
        pict_format = PictStandardARGB32; break;
    }
    return XRenderFindStandardFormat (dpy, pict_format);

}

単純にintの値を代入しているってことはどこかにdefineされているはずだな。ということで探してみると、/usr/X11R6/include/X11/extensions/Xrender.hにありました。

#define PictStandardARGB32  0
#define PictStandardRGB24   1
#define PictStandardA8      2
#define PictStandardA4      3
#define PictStandardA1      4
#define PictStandardNUM     5

ここが見えないからエラーになってるんだね。configureにあたえるオプションを追加して再度ビルド。

$ ./configure --x-includes=/usr/X11R6/include
$ /usr/local/bin/make
# /usr/local/bin/make install

うまくいきました。