GNU Autoconfの自分用メモ
以下はGNU Autoconf HTMLドキュメントより抜粋したファイル関連図。"*"付がコマンド実行、"[]"囲みはオプショナルファイル or コマンド実行を表す。
step1 : autoscan実行からconfigure.acの準備まで
your source files --> [autoscan*] --> [configure.scan] --> configure.ac
step2 : configure.ac, Makefile.in の準備から autoconf/autoheaderの実行, configureスクリプトの生成まで
configure.ac --. | .------> autoconf* -----> configure [aclocal.m4] --+---+ | `-----> [autoheader*] --> [config.h.in] [acsite.m4] ---' Makefile.in -------------------------------> Makefile.in
※aclocalはGNU Automakeに含まれるツールなので、当メモでは取り上げない
step3 : configureスクリプトの生成以降
.-------------> [config.cache] configure* ------------+-------------> config.log | [config.h.in] -. v .-> [config.h] -. +--> config.status* -+ +--> make* Makefile.in ---' `-> Makefile ---'
基本は以上。./configure内部でセットされた変数群は、Makefile.in中では"@変数名@"とすることで置換されるようになる。"@prefix@", "@CC@", "@INSALL@"など。
なおAC_PROG_INSTALLマクロをconfigure.acに追加すると "install-sh" を要求されるようになる。install-sh の"本家"は GNU Automake に含まれている。実行権の付いた"install-sh"という名前のファイルであれば空っぽでもチェックが通るので、とりあえず./configureをpassさせるにはそれでごまかす事も出来る。
"AC_CONFIG_HEADERS"マクロをconfigure.acに追加し、autoheaderコマンドを実行するとヘッダテンプレートが生成される。
なお "AC_CONFIG_HEADER" のように単数形で指定する事も出来る。
AC_CONFIG_HEADER([config.h]) or AC_CONFIG_HEADERS([config.h])
→ autoheaderにより "config.h.in" が生成される。
autoheaderはconfigure.acがあれば実行可能である。autoconfによりconfigureスクリプトを生成するのは、autoheaderの前でも後ろでも構わない。ただし、エラーのないconfigure.acで動かしたい、というのもあるので、autoconf→autoheaderの順で実行した方が良いかも知れない。