12.3 GNU autoconf & automake

  2.autoconf、automake
1.autoconf
 autoconfは最終的にconfigureスクリプトを作成するものです。簡単に言えば、autoconfはconfigureスクリプト作成支援ソフトといいかえることができます。

 configureスクリプトは、Makefileとconfig.hヘッダファイルを作成するシェルスクリプトです。
具体的には、configureスクリプトは、ある関数が存在するか否か、あるいは、あるファイルが存在するか否かを検査し、Makefileとconfig.hファイルを作成します。
 例えば、mmac()関数がターゲットシステムに存在している場合、生成するconfig.hでは以下のようなマクロが定義され、機種依存な部分をソースプログラム中ではこのマクロを利用しコンパイル時のソースを切り替えることが可能になります。
#define HAVE_MMAC 1
 autoconfの目指す目的とは、システム依存の関数などのための、ソースプログラム中の、例えば、
#ifdef SOLARIS
などの厄介な定義を排除することにあります。#ifdef SOLARISなどのやり方は、新しいプラットフォームに対応する度に、その定義を追加していかなければならないのです。これは作成者にとって、大変面倒でコストのかかる仕事になります。

 また、configureスクリプトを使っていない配布パッケージの場合、例えば次のようなことをエンドユーザに強いる場面に遭遇します。
/* Uncomment your platform. */

// #define SOLARIS
// #define LINUX
// #define FreeBSD
 自分のシステムに合わせてこのようにconfig.hを編集することは、エンドユーザにとって大変に面倒なことで混乱も生じさせます。作成者、エンドユーザ双方のこれらの負担を軽減するのが、autoconfの目的なのです。