Autotools

Autotoolsとは、主にUnix系オペレーティングシステム (OS) においてソフトウェアパッケージ開発を行うための、ツール及びフレームワークの一種である。このツールを使用することにより、多種多様なUNIX互換環境にパッケージを対応させることが容易になる。
Autotoolsは主に autoconf/automake/libtools の3つから成り立っている。
パッケージ利用者側から視たAutotools.
Autotoolsを用いて作成されたパッケージは容易に導入が可能である。典型的な場合、インストールまでの全工程が自動化されており、ソースコードを展開した後、以下のコマンドを入力するだけで全てが完了する。
多くのUNIX用オープンソースソフトウェアで、この方式が採用されている。
configure.
configurationスクリプト（codice_1）はビルド環境の構築を一括でおこなうシェルスクリプトである。
プログラムのビルドは複数のツールを連携させておこなわれるが、その際、ビルド設定（例: 拡張命令フラグ）を外部から取り込み全てのツール間にそれを一貫して適用しなければならない。これを手動でおこなうことは時間の浪費でありバグの温床である。このビルド環境構築を一括して自動でおこなうスクリプトが、慣例的にcodice_1と名付けられるconfigurationスクリプトである。パッケージの利用者はcodice_1を実行するだけでビルド環境が構築できる。
configure及び付属のスクリプト・Makefileなどは標準的なUNIXコマンドだけを使用しており、パッケージの利用者は、パッケージそのものの構築・運用に必要なソフトウェアを除いて、Autotoolsの為に特別なソフトウェアを導入する必要はない（Windows系OSではUNIXコマンドが標準で含まれていない為、別途Services for UNIXやCygwinなどのUNIX互換環境のインストールが必要である）。
また、自動的な環境検査が好ましくなかったり特別な設定が必要な場合、環境変数またはコマンド引数でconfigureの動作を調整できる。代表的なオプションを以下に説明する。
これ以外にも多くのオプションがあり、少ないパッケージでも10以上、多いパッケージでは数十から100以上の設定項目がある。利用者の設定に矛盾があったり、環境の機能に不足があれば診断情報を出力する。また、クロスコンパイル対応や、構築用の作業ディレクトリをソースコードと異なるディレクトリに設定する機能がある。
autoconf.
Autoconf (codice_4) はconfigurationスクリプトを自動生成するツールである。
ビルド環境の自動構築をおこなうconfigurationスクリプト (codice_1) はそれ自体が時に数千行に渡る巨大なスクリプトになる。これを手動で記述し維持することは時間の浪費でありバグの温床である。このcodice_1生成を自動でおこなうツールがAutoconfである。
Autoconfはcodice_7を入力とし、codice_1を出力とする。ユーザーがこのcodice_1を実行することでビルド環境が構築される。
特徴.
autoconfはDavid Mackenzieがフリーソフトウェア財団での仕事で使うために、1991年の夏から開発を開始した。その後、様々な人に改良を加えられ、オープンソースのコミュニティでは最もよく使われるツールの1つとなった。
autoconfはPerlで使われるMetaconfigに似ている。かつて（X11R6.9 まで）X Window Systemで使われていたにも密接に関連するが、設計思想が異なる。
autoconfは移植性の評価をバージョンではなく機能ベースで行う。例えばSunOS 4のCコンパイラはISO Cをサポートしていない。しかし、ユーザはISO C互換のコンパイラをインストールすることもできる。バージョンのみからでは、ISO Cコンパイラの存在は検出できないが、機能ベースの手法ではユーザがインストールしたISO Cコンパイラを発見できる。他にも、次のような利点がある。
機能.
m4言語のマクロとシェルスクリプトの断片で記述された入力ファイルconfigure.ac（古いバージョンではconfigure.in）を、autoconfがm4を用いて置換しconfigureを得る。
最終出力configureはBourne Shell用のシェルスクリプトで、数百行から数千行の長さがある。
以下に、簡単なconfigure.acの例を示す。
 AC_INIT(hello, 1.9, address) # 必須設定
 AC_CONFIG_SRCDIR([hello.c])
 # このパッケージではhogeを使用可能である configureに--with-hogeが追加される。
 #（実際には、この後に利用者が--with-hoge=yesとした場合の動作定義を記述する必要がある）
 AC_ARG_WITH(hoge, [Use hoge]) 
 AC_PROG_CC # Cコンパイラの設定 configureが環境変数CCを使用する
 AC_OUTPUT([Makefile]) # Makefile.inを雛形にしてMakefileを生成
出力のconfigureは非常に長いので掲載しない。この場合、一般的なオプションはサポートされる。利用者の要求に応じてhogeを利用するがどうかを決定する。また、Cコンパイラを探し実行方法を確認し、その結果得られたコマンド名・必要オプションなどをMakefileに出力する。
automake.
GNU Automake（codice_10）はcodice_11ファイルを自動生成するツールである。
automakeはプログラムとソースコードの関係などが記述されたcodice_12ファイルを入力とし、codice_11を出力する。
実行例.
HelloWorldプログラムで例を示す
 #Makefile.am
 #実行バイナリファイルの名前はhello
 bin_PROGRAMS = hello
 #helloのソースコードはhello.c,hello.h
 hello_SOURCES = hello.c hello.h
出力のMakefile.inは非常に長いので掲載しないが、期待した内容が得られる。
すなわち、configureを実行することでMakefileが生成される。このMakefileを用いてmakeコマンドを使用すると、hello.cをCコンパイラでコンパイルし、次いで標準ライブラリとリンクし、helloの実行ファイルが得られる。make installでは、helloはあるべき場所（ほとんどの場合は/usr/local/bin）にインストールされることになる。
参考文献.
『GNU Autoconf/Automake/Libtool』 Gary V. Vaughan, Ben Elliston, Tom Tromey, Ian Lance Taylor著 でびあんぐる監訳 ISBN 4-274-06411-5