mattintosh note

どこかのエンジニアモドキの備忘録

Mavericks に libxml-2.0.pc と libxslt.pc が無かったので作ってみた

なんかビルドで弾かれると思ったら、

  • /usr/lib/pkgconfig/libxml-2.0.pc
  • /usr/lib/pkgconfig/libxslt.pc

が無い。ヘッダとライブラリはある。

pc ファイルを手書きしようと思ったけどバージョンが不明だったので Apple Open Source から一つ前の 10.9.2 用のソースを持ってきた。

xcodebuild コマンドだと pc ファイルをビルドしてくれない(プロジェクト編集すればいけるのか?)。ソースディレクトリに入って autogen.sh を実行する。autoconflibtoolize など各種 GNU Autotools が必要になる。autogen.sh はコマンド直書きで、glibtoolize ではなく libtoolize での呼び出しなので、無ければ g 付きのものにリンクを貼っておくか、スクリプトを弄る。autogen.sh の後に configure が自動で行われるので引数を与えておいて make はしない。

curl -O http://opensource.apple.com/tarballs/libxml2/libxml2-26.tar.gz
tar xf libxml2-26.tar.gz
cd libxml2-26/libxml2
PATH=/opt/local/libexec/autotools:`getconf PATH` ./autogen.sh --prefix=/usr

非システム標準なのでとりあえず /usr/local/lib/sys_pkgconfig とか作って置いておく。

mkdir -p /usr/local/lib/sys_pkgconfig
cp libxml-2.0.pc /usr/local/lib/sys_pkgconfig

libxslt も同様に。

curl -O http://opensource.apple.com/tarballs/libxslt/libxslt-13.tar.gz
tar xf libxslt-13.tar.gz
cd libxslt-13/libxslt
PATH=/opt/local/libexec/autotools:`getconf PATH` ./autogen.sh --prefix=/usr
cp libxslt.pc /usr/local/lib/pkgconfig

libxml-2.0.pc

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
modules=1

Name: libXML
Version: 2.9.1
Description: libXML library version2.
Requires:
Libs: -L${libdir} -lxml2
Libs.private:  -lpthread -lz  -liconv -lm  
Cflags: -I${includedir}/libxml2 

libxslt.pc

Cflags は -I${includedir}/libxml2 が必要になるかもしれない。

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include


Name: libxslt
Version: 1.1.28
Description: XSLT library version 2.
Requires: libxml-2.0
Libs: -L${libdir} -lxslt  -lxml2  
Cflags: -I${includedir}

10.6.8 と 10.9.3 の差分。

--- /dev/fd/13   2014-06-17 00:00:00.000000000 +0900
+++ /dev/fd/14    2014-06-17 00:00:00.000000000 +0900
@@ -1,12 +1,9 @@
 apr-1.pc
 apr-util-1.pc
 libcrypto.pc
-libcurl.pc
 libedit.pc
-libexslt.pc
 libiodbc.pc
 libpcre.pc
+libpcreposix.pc
 libssl.pc
-libxml-2.0.pc
-libxslt.pc
 openssl.pc