Autotoolsの各ツールの役割と入力ファイル,出力ファイルの関係の概略について示す(それらのファイルは非常に多いので主なものについてのみ示す).ツールの出力ファイルは別のツールの入力ファイルになっていることがある.この頁により,どの入力ファイルを修正するとどのツールを再実行する必要があるかが分かる(たぶん).
流れ
Aclocal
Autoheader
Automake
Autoconf
configure
Make
流れ
パッケージを作成する際のAutotools実行の主な順序を以下に示す.
Aclocal
Autoheader
Automake
Autoconf
configure(ユーザ)
Make(ユーザ)
各ツールの位置付けについて以降に示す.
Aclocal
AclocalはAutomakeのためのマクロ,Autoconfのためのマクロ,ユーザ定義のマクロなどを参照し,configure.inに記述されている全てのマクロを解決し,aclocal.m4を生成する.
入力ファイル
configure.in
acinclude.m4(オプション.なくてもよい)
ユーザ定義マクロファイル(オプション.なくてもよい)
出力ファイル
aclocal.m4
Autoheader
Autoheaderはm4にconfigure.inを与えてconfig.h.inを生成する.
入力ファイル
configure.in
aclocal.m4
出力ファイル
configure.h.in
Automake
Automakeはconfigure.inとMakefile.amからMakefile.inなどを生成する.また,configure.inにおいてAC_PROG_LIBTOOLが記述されていれば,libtoolizeを実行してconfigureがlibtoolを生成するために必要なltconfigやltmain.shなどを生成する.
入力ファイル
configure.in
Makefile.am
出力ファイル
COPYING(オプション)
INSTALL(オプション)
install.sh
missing
mkinstalldirs
Makefile.in
ltmain.sh(libtoolizeAC_PROG_LIBTOOL指定時)
ltconfig(libtoolizeAC_PROG_LIBTOOL指定時)
Autoconf
Autoconfはconfigure.inに記述されたm4マクロをaclocal.m4参照しつつ展開し,configureスクリプトを生成する.
入力ファイル
configure.in
aclocal.m4
出力ファイル
configure
Autotoolsの目標は,このconfigureを作成することにある.
configure
configureはAutoconfにより生成されるスクリプトで,各プラットフォームの環境をチェックし,その環境にあわせてパッケージをビルドするためのMakefileを生成する.
入力ファイル
Makefile.in
config.h.in
ltmain.sh(Libtool使用時)
出力ファイル
Makefile
config.h
libtool(Libtool使用時)
この他にも多くの入出力ファイルを使用している.
Make
Makeはconfigureスクリプトによって生成された,各プラットフォームに適したMakefileからパッケージをビルドする.Autotoolsの目的はここにある(※).
入力ファイル
Makefile
config.h
ソース
出力ファイル
ターゲット(実行ファイル,ライブラリなど)
※ そのための目標としてconfigureスクリプトの作成がある.