cairoインストール
ちょっと前から放置していたFirefoxをSolarisでビルドする一環として、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
うまくいきました。