iPhone用に PCRE (Perl-compatible regular expressions) をbuild

PCREを使うことになったので、arm向けの buildコマンドのメモ。
10/03: armv7s版のライブラリもbuildするように手順を変更しました。

前提となる環境が更新されていて、以下の通り。

  • OS: MacOSX 10.8 Mountain Lion
  • コンパイラ: XCode 4.5 *1
  • PCRE は ver 8.31
  • Cのライブラリ(libpcre.a)しか使わないので、libc++ or libstdc++への依存はなし

build手順は以下のコマンドを順に実行すればできました。

$ curl -O ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.31.tar.bz2
$ tar jxvf pcre-8.31.tar.bz2
$ cd pcre-8.31/
$ export SDK_ROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
$ ./configure CC="${SDK_ROOT}/usr/bin/gcc" CPP="${SDK_ROOT}/usr/bin/gcc -E" CFLAGS="-arch armv7 -isysroot ${SDK_ROOT}/SDKs/iPhoneOS6.0.sdk" --host=arm
$ make
$ mv .libs .libs_arm7
$ ./configure CC="${SDK_ROOT}/usr/bin/gcc" CPP="${SDK_ROOT}/usr/bin/gcc -E" CFLAGS="-arch armv7s -isysroot ${SDK_ROOT}/SDKs/iPhoneOS6.0.sdk" --host=arm
$ make
$ mv .libs .libs_arm7s
$ ./configure CC='gcc -arch i386' CPP='gcc -E'
$ make
$ mv .libs .libs_i386
$ xcrun -sdk iphoneos lipo -create -arch armv7 .libs_arm7/libpcre.a -arch armv7s .libs_arm7s/libpcre.a -arch i386 .libs_i386/libpcre.a -output libpcre.a

最後に、カレントディレクトリにある pcre.h と libpcre.a をコピーすればPCREが使えるようになります。

*1:XCode の Command Line Tools はインストールしておいて下さい。