[ English | Japanese ] [ 地球流体電脳倶楽部 / gtool プロジェクト ] [ gtool5 ドキュメント ]

configure と Config.mk.in の保守管理

本文書は configure、Config.mk.in の保守管理について記します。


  1. 概説
  2. 保守管理に必要なソフトウェア
  3. 保守管理の手順

概説

gtool5 では、利用者の環境に応じた設定を configure によって自動的に行います。 実際には、元々ソースコードに同梱される Config.mk.in を元に、 configure から Config.mk ファイルを作成します。 (configure での設定が不十分な場合には、Config.mk を利用者に直接編集してもらう必要がある場合もあります)。 各ディレクトリの Makefile はその Config.mk を include 文によって読み込み、ビルドを行います。

./configure 実行 --+
                   |
                   +---> Config.mk
                   |
Config.mk.in ------+

configure 自体は開発者側で作成した configure.in から autoconf を用いて作成します。 以下では、gtool5 における configure の保守管理に必要なソフトウェアおよび、 その具体的な方法を記します。

保守管理に必要なソフトウェア

configure を保守管理する際には、 以下のソフトウェアが必要となります。

以降では、autoconf を以下のように実行できることを想定して解説します。 システムへのインストールやパスの設定を適切に行ってください。

$ autoconf --version
autoconf (GNU Autoconf) X.XX ...

保守管理の手順

configure.in の編集

編集は configure 本体ではなく、 configure.in に対して行って下さい。

configure.in 自体は基本的に Bourne Shell のシェルスクリプトとして記述できますが、 AC_ で始まる関数は configure (Autoconf) 特有の関数です。 以下に、いくつかの関数について紹介します。 詳細については、Autoconf や Autotools 等に関する文書を別途参照してください。

なお、以下のように DC_ で始まる関数もありますが、 これは下記のマクロファイル aclocal.m4 内で定義される関数です。

DC_ARG_WITH(netcdf, [netcdf library filename], ac_cv_lib_netcdf, [
  AC_MSG_ERROR(specify netcdf library filename (like libnetcdf.a or libnetcdf.so) with --with-netcdf=)
])

マクロファイル aclocal.m4 の編集

Autoconf として用意する関数を組み合わせたマクロを記述するファイルとして script/configure/aclocal.m4 が用意されています。 ここでは、ライブラリファイルを指定するためのオプションを手軽に指定するための関数などが用意されています。 ローカルに定義されていることを明示するため、関数名の冒頭に DC_ を付与しています。

書式は m4 となっています。 (m4 の書法については、ここでは触れません)。

configure の作成

configure.in と aclocal.m4 の準備が整ったら、 その 2 つが置かれているディレクトリで autoconf コマンドを実行してください。 -B オプションは aclocal.m4 が置かれているディレクトリを指定します。 (もしも aclocal.m4 が configure.in と同じディレクトリに置かれている場合には、 オプションの指定は不要です。)

$ autoconf -B script/configure

これにより configure コマンドが作成されます。 また、キャッシュファイル置き場として autom4te.cache ディレクトリが作成されますが、これは作業後削除してください。

configure 実行時に使用される下請けスクリプト群

configure が実行される際には、 その下請けとしていくつかのスクリプトが呼ばれます。 これらはディレクトリ script/configure および gtool5 トップディレクトリ以下に置かれています。

script/configure/chkfort.sh
Fortran コンパイラチェック
script/configure/chkgmake.sh
GNU Make コマンドチェック
script/configure/chkrps.sh
Ruby, Perl, Shell のパスチェック
script/configure/chkrubyver.rb
Ruby バージョンチェック
config.guessconfig.sub
システムタイプの判別。それぞれ <URL:http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD><URL:http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD> よりダウンロードしたもの。

Config.mk.in の編集

Config.mk.in は、GNU Make の書式で記述します。 ただし、configure.in の編集 でも触れた通り、 configure.in の AC_SUBST 関数で置換される部分のみ、 @<変数名>@ と記述します。 例えば、

FC=@FC@

と記述しておくと、configure.in 内の

AC_SUBST(FC)

に応じて、@FC@ が置換され、Config.mk ファイルが作成されます。

CVS コミットに関する注意

CVS リポジトリのコミットは configure.in、configure の両方 に対して行ってください。 これは、利用者が Autoconf をインストールをせずに gtool5 をインストール可能とするためです。 configure 自体は UNIX 系 OS で用意される基本的なコマンドのみで構成されるため、 大半の環境で動作します。

また、Config.mk.in は CVS コミットしますが、 Config.mk はコミットしないでください。 上記で述べたとおり、Config.mk は利用者の環境に応じて自動生成されるものであるためです。


$Id: lib-configure.rd,v 1.4 2009-04-01 12:56:12 morikawa Exp $
gtool Development Group / GFD Dennou Staff dcstaff@gfd-dennou.org