Next: Future of aclocal, Previous: Extending aclocal, Up: configure
Autoconfで提案される機能テストは,すべてのニーズをカバーしていません. 独自のマクロやサードパーティーのマクロで既存のテストを補足する必要があ ることもよくあります.
パッケージのカスタムマクロを体系付ける方法は二つあります.
利用可能な最初の方法は(歴史的な手法で)すべてのマクロを acinclude.m4にリストアップすることです.このファイルは aclocalの実行時にaclocal.m4に含められ,そのマクロはそ れ以降autoconfから見えるようになります.しかし,たくさんのマ クロを含んでいる場合,ちょっとした管理が難しくなり,パッケージ間でマク ロを共有することが不可能になります.
利用可能な二番めの方法は,こちらが推奨されていますが,それぞれのマクロ
を単独ファイルに書き,一つのディレクトリにこれらすべてのファイルをまと
めておくことです.このディレクトリは通常m4/と呼ばれています.こ
のため,aclocal.m4をビルドする際,aclocalにm4/
をスキャンするように指示するべきです.コマンドラインからは,
aclocal -I m4
とします.または,最上位ののMakefile.amの定
義を以下のように更新すべきです.
ACLOCAL_AMFLAGS = -I m4
ACLOCAL_AMFLAGS
は,aclocal.m4がmake
でリビルドされ
るとき,aclocalに渡すオプションを含んでいます.この行は,適
切なオプションでaclocalを実行するため,autoreconf
(see Using autoreconf to Update configure Scripts)や,Gettextの
マクロがインストールされている場所を示すためautopoint
(see Invoking the autopoint Program)とgettextize
(see Invoking the gettextize Program)でも使用されます.そのため,リビ
ルドのルールであまり注意していなくても,ACLOCAL_AMFLAGS
を定義す
べきです.
aclocal -I m4
が実行されるとき,要求されているマクロが定義されて
いるm4/のあらゆるファイルをm4_include
し,
aclocal.m4
をビルドします.ローカルに見つからないマクロは,
Macro search pathで説明されているシステム全体のディレクトリで検
索されます.
カスタムマクロはconfigure.acと同じ理由で配布すべきです.パッケー
ジを動作させたい人は,そのすべてのファイルを持っているようにすべきです.
実際これは,すべてのm4_include
されるファイルが配布されるので,
自動的に配布されます.
しかし,パッケージで使用しているサードパーティーのマクロの配布には一致
している見解はありません.多くのライブラリは,独自のマクロをシステム全
体のaclocalディレクトリ(see Extending aclocal)にインストー
ルします.例えば,Guileはコンパイラの設定とGuileを使用する際に適切なリ
ンカフラグ定義するために使用することが可能な,マクロGUILE_FLAGS
を含んでいるguile.m4と呼ばれるファイルを配布しています.
configure.acでGUILE_FLAGS
を使用することで,
aclocalはguile.m4をaclocal.m4にコピーしますが,
guile.m4はプロジェクトの一部ではないので,それは配布していませ
ん.技術的には,aclocal.m4をリビルドする必要があるユーザはGuile
を最初にインストールする必要があることを意味します.Guileがパッケージ
のビルドで必要な場合,これはおそらく問題無いでしょう.しかし,Guileは
単なる追加機能だったり,パッケージをGuileがインストール不可能なマシン
で実行する可能性がある場合,この必要条件は開発の邪魔になります.簡単な
解決方法は,そのようなサードパーティーのマクロを,それらも配布されるよ
うに,ローカルなm4/ディレクトリにコピーすることです.