configure を生成するときに行う autoreconf や autogen.sh を実行した時に「そんなマクロねーよ」と言われる。
ディストリビューションのファイルサイズを減らしたくて autoconf や automake を prefix 以外の場所にインストールしてたら Git ソースの glib と fontconfig がビルドできなくなってしまった。(glib は autogen.sh が AC_DEFINE エラーになり、fontconfig は PKG_PROG_PKG_CONFIG が正しく処理されず pkg-config が見つからない)
例えば、
- メインのインストール先を /tmp/dest
- ツールのインストール先を /tmp/tools
とした場合、/tmp/tools/bin/autoreconf は /tmp/tools/share/aclocal を探すので既にインストールされたパッケージのマクロがある /tmp/dest/share/aclocal を探しにいかない。(パッケージによっては ${datadir}/aclocal
を探しにいくのかもしれない)
対応策としては ACLOCAL_FLAGS="-I /tmp/dest/share/aclocal"
を設定する方法がある。ただ、configure.ac によっては ACLOCAL_FLAGS
を使っていないので ACLOCAL_PATH=/tmp/dest/share/aclocal
で追加する。
この辺はコンパイラの CPATH
と -I${prefix}/include
と同じような感じだと思う。ACLOCAL_PATH
はコロン区切りで複数指定できる。
使用する aclocal がデフォルトで検索する ACLOCAL_PATH は以下のように調べることができる。これについては man aclocal
ではなく aclocal --help
と info aclocal
に記載されている。
$ /tmp/tools/bin/aclocal --print-ac-dir
/tmp/tools/share/aclocal
ディレクトリの検索順は -I dir
で指定したものが最も上位で、次に ACDIR-APIVERSION
、ACDIR
と続く。--print-ac-dir
で表示されるのは ACDIR
の部分。
ACDIR-APIVERSION
と ACDIR
は --system-acdir=prefix
で接頭辞を変更できる(-isysroot
相当?)。