(2007/04/30)
前ページの手順に沿って、Xcode から LinuxSampler の CVS スナップショットをビルドできるようにしてみた。一般的な注意点は前ページと同様。
libsndfile, libgig, linuxsampler を1つのディレクトリ(以下 $PROJDIR とする。例えば PROJDIR=$HOME/Development/LinuxSampler)の中に展開する。名前はそれぞれ libsndfile, libgig, linuxsampler としておく。必要ならシンボリックリンクを作る。
前ページで説明したように autoconf の準備をする。
$PROJDIR/libgig/aclocal を /usr/local/bin にコピーして実行許可をつける。/usr/local/bin/libtoolize を /usr/bin/glibtoolize へのシンボリックリンクとする。
linuxsampler_xpj.tar.gz をダウンロードして展開する。中にある Xcode プロジェクトファイル (LinuxSampler.xcodeproj) とシェルスクリプト (make_wrapper.sh) を $PROJDIR に移す。
ビルド時のディレクトリ構成は前ページとは少し異なり、次のようになる。
$PROJDIR/
libgig/
libsndfile -> libsndfile-1.0.17
libsndfile-1.0.17/
linuxsampler/
LinuxSampler.xcodeproj/
make_wrapper.sh
build/
Deployment_ppc/ # インストール用ディレクトリ
bin/
include/
lib/
man/
share/
Deployment_i386/
...(Deployment_ppc と同様)
Development/
...(Deployment_ppc と同様)
LinuxSampler.build/
Deployment_ppc/
libgig.build/ # libgig のビルド用コピー
libsndfile.build/ # libsndfile のビルド用コピー
linuxsampler.build/ # linuxsampler のビルド用コピー
Deployment_i386/
...(Deployment_ppc と同様)
Development/
...(Deployment_ppc と同様)
LinuxSampler.pbxindex/ # Xcode が使用
build ディレクトリ以下は、Xcode でビルドする際に作成されるディレクトリである。Deployment_ppc, Deployment_i386, Development は Xcode プロジェクトの3つのビルドコンフィギュレーションの名前に対応する(次節参照)。
なお、linuxsampler の configure.in の不具合を修正するパッチを作っておいた。configure.patch。$PROJDIR ディレクトリ(linuxsampler ディレクトリではなく)に cd して、patch -p0 <configure.patch で修正する。
LinuxSampler.xcodeproj を開く。"Groups & Files" カラムの "Targets" の中に3つのターゲットがある:libsndfile, libgig, linuxsampler。libgig は libsndfile に依存し、linuxsampler は libgig に依存している。また、"Groups & Files" カラム一番上の "LinuxSampler" の info を開くとわかるように、3つのビルドコンフィギュレーション Development, Deployment_ppc, Deployment_i386 がある。
ビルドの処理内容は、シェルスクリプト make_wrapper.sh に記述されている。
Makefile が存在すれば make を実行。configure が存在すれば ./configure && make を実行。Makefile.cvs が存在すれば make -f Makefile.cvs && ./configure && make を実行。make が成功し、$WITH_INSTALL が未定義でなければ、続けて make install を実行。
Xcode の Build > Build Results を選んで、ビルドウィンドウを開く。Active Target を linuxsampler、Active Build Configuration を Deployment_ppc とし、ビルドする。依存関係に従って、libsndfile, libgig, linuxsampler が順にビルドされる。すべて終了すると、$PROJDIR/build/Deployment_ppc/bin に linuxsampler ができているはず。
なお、ADC に Xcode を使って configure ベースのソフトウェアの Universal Binary を作るチュートリアルがある:Building an Open Source Universal Binary。シェルスクリプトベースのターゲットを使っている点では同じだが、このチュートリアルでは PPC 版と i386 版に別々のターゲットを作っている。これでももちろん構わないのだが、PPC 版と i386 版は「コンパイルオプションが違うだけ」で同じものとも言える。また、今回はライブラリ2つと目的プログラム1つを順にビルドする必要があり、これは別々のターゲットにするのが妥当である。そういうわけで、アーキテクチャはビルドコンフィギュレーションの方で区別した。
ちょっと今回は手抜きで、Universal Binary は手動で作成する。