Automakeは,パッケージに関する特定の情報を決定するために,パッケージの
`configure.in'をスキャンします.必要なautoconf
マクロもあれば,
`configure.in'で定義する必要がある変数もあります.Automakeは,出力
物を調整するためにも,`configure.in'からの情報を使用します.
Automakeは,メンテナンスをより容易にするためのAutoconfマクロも提供してい
ます.これらのマクロは,aclocal
プログラムを使用して自動的に
`aclocal.m4'に書き込むことが可能です.
Automakeが本当に必要としていることは一つで,`configure.in'でマクロ
AM_INIT_AUTOMAKE
を呼び出すことです.このマクロは,適切なAutomake
の処理に必要なことをいくつか行ないます(see section Automakeが提供するAutoconfマクロ).
Automakeは必要としますが,AM_INIT_AUTOMAKE
で実行されないマクロに
は,以下のものがあります.
AC_CONFIG_FILES
AC_OUTPUT
AC_CONFIG_FILES([foo/Makefile])
で,
`foo/Makefile.am'が存在する場合は,Automakeが`foo/Makefile.in'
を生成します.
それ以外のリストアップされているファイルは扱い方が異なります.現在唯一の
違いは,make distclean
で`Makefile'は削除されますが,他のファ
イルはmake clean
で削除されるということです.
Automakeは実行されるたびに,`configure.in'を追跡するためにAutoconf を呼び出します.この方法で,特定のマクロの使用を認識し,生成される `Makefile.in'を適切に調整します.現在認識されるマクロとそれらの効果 は,以下のようになっています.
AC_CONFIG_HEADERS
AM_CONFIG_HEADER
の使用を要求していました
(see section Automakeが提供するAutoconfマクロ).これは今日では既に事実ではありません.
AC_CONFIG_AUX_DIR
AC_CANONICAL_HOST
AC_CANONICAL_SYSTEM
AC_CANONICAL_HOST
に似ていますが,`Makefile'変数の
`build_alias'と`target_alias'も定義します.
See section `Getting the Canonical System Type' in The Autoconf Manual.
AC_LIBSOURCE
AC_LIBSOURCES
AC_LIBOBJ
AC_LIBSOURCE
やAC_LIBSOURCES
でリストアップされ
ているすべてのファイルを自動的に配布します.
AC_LIBOBJS
マクロがAC_LIBSOURCE
を呼び出すことに注意してくだ
さい.そのため,AutoconfマクロがAC_LIBOBJ([file])
を呼び出すと説明
されている場合,`file.c'はAutomakeで自動的に配布されます.これには,
AC_FUNC_ALLOCA
,AC_FUNC_MEMCMP
,AC_REPLACE_FUNCS
等
の多くのマクロが含まれます.
ところで,直接LIBOBJS
に代入することは,既にサポートされていません.
この目的では常にAC_LIBOBJ
を使用すべきです.See section `AC_LIBOBJ
vs. LIBOBJS
' in The Autoconf Manual.
AC_PROG_RANLIB
AC_PROG_CXX
AC_PROG_F77
AC_F77_LIBRARY_LDFLAGS
AC_PROG_LIBTOOL
libtool
に対する処理を開始します(see section `Introduction' in The Libtool Manual).
AC_PROG_YACC
AC_PROG_LEX
AC_SUBST
AC_SUBST
を呼び出す
とか,出力変数varを定義するといった説明がある場合,varはそれ
ぞれの生成される`Makefile.in'で定義されます.例えば,
AC_PATH_XTRA
はX_CFLAGS
とX_LIBS
を定義するので,
AC_PATH_XTRA
が呼び出されている場合,`Makefile.am'でその変数
と使用することが可能です.
AM_C_PROTOTYPES
AM_GNU_GETTEXT
AM_MAINTAINER_MODE
configure
に`--enable-maintainer-mode'オプション
を加えます.これが使用されている場合,automake
は生成された
`Makefile.in'内の`maintainer-only'規則をデフォルトで停止します.
このマクロは`MAINTAINER_MODE'条件を定義し,自分の`Makefile.am'
で使用することが可能です.
Automakeには,パッケージで使用可能な多くのAutoconfマクロがあります.状況
によってはAutomakeが実際に必要とするものもあります.これらのマクロは
`aclocal.m4'で定義する必要があります.さもなければ,それらは
autoconf
では見つからないでしょう.
aclocal
プログラムは,`configure.in'の内容に基づいて自動的に
`aclocal.m4'ファイルを生成します.これは,Automakeが提供するマクロ
を入手する便利な方法を提供し,それらを探し回る必要がないようになっていま
す.また,aclocal
のメカニズムで,他のパッケージで使用するための独
自のマクロを供給することが可能になります.
はじめに,aclocal
はマクロ定義を探しながら見つかったすべての
`.m4'ファイルをスキャンします.それから`configure.in'をスキャ
ンします.最初のステップで見つかったマクロの記述によって,マクロとマクロ
が要求するファイルを`aclocal.m4'に書き込みます.
`acinclude.m4'の内容も,存在する場合は自動的に`aclocal.m4'に含 められます.これは`configure'にローカルなマクロを取り入れるときに役 に立ちます.
aclocal
は,スキャンしているファイルの新しいAC_DEFUN
を賢い
方法で探します.また,スキャンしているファイルのすべての文章も
`aclocal.m4'に含めようとし,それには`#'と`dnl'のコメント
も含まれます.aclocal
がコメントを完全に無視するようにしたい場合は,
コメントの最初に`##'を使用して下さい.
aclocal
は,以下のオプションを受け入れます.
--acdir=dir
--help
-I dir
--output=file
--print-ac-dir
aclocal
が検索
するディレクトリの名前を出力します.このオプションが与えられているとき,
標準的な処理は行われません.このオプションは,パッケージがマクロファイル
をインストールする場所を決定するために使用することが可能です.
--verbose
--version
デフォルトで,@command{aclocal}は`.m4'ファイルを以下のディレクトリ で,この順番に探します.
acdir-APIVERSION
1.6
になります.
acdir
--print-ac-dir
オプションを使用してください.
例として,automake-1.6.2が--prefix=/usr/local
を用いてコンフィグレー
ションされたと仮定します.そのとき検索パスは以下のようになります.
/usr/local/share/aclocal-1.6/ /usr/local/share/aclocal/
(see section aclocalのオプション)で説明したように,この検索パスの変更や拡張で使 用可能なオプションもあります.
--acdir
検索パスを変更する最も明確なオプションは--acdir=dir
で,デフォ
ルトのディレクトリを変更し,APIVERSIONディレクトリを取り消します.
例えば,--acdir=/opt/private/
を指定した場合,検索パスは以下のよう
になります.
/opt/private/
このオプション--acdir
の目的は,automakeのテストスイートの内部で使
用することだけです.それはエンドユーザは通常不要です.
-I dir
-I
オプション(see section aclocalのオプション)を使用して,あらゆる追加ディ
レクトリを指定することで,これらの検索リストに前置します.このた
め,aclocal -I /foo -I /bar
は結果として以下のような検索パスになり
ます.
/foo /bar acdir-APIVERSION acdir
検索パスをカスタマイズするため,三番目のメカニズムがあります. `dirlist'ファイルがacdirに存在する場合,そのファイルが,一行 ごとに検索リストに追加するディレクトリリストを含んでいると仮定されます. これらのディレクトリは,すべての他のディレクトリの後に検索されま す.
例えば,`acdir/dirlist'が以下の内容を含んでいると仮定します.
/test1 /test2
そして,aclocal
を-I /foo -I /bar
オプションで呼び出したと仮
定します.そのとき検索パスは以下のようになります.
/foo /bar acdir-APIVERSION acdir /test1 /test2
--acdir=dir
オプションが使用されている場合,
@command{aclocal}は`dirlist'ファイルをdirで検索します.上記の
--acdir=/opt/private/
の例では,@command{aclocal}は
`/opt/private/dirlist'を探します.しかし,繰り返しますが,
--acdir
オプションの目的は,automakeのテストスイートの内部で使用さ
れることだけです.通常,--acdir
はエンドユーザには不要です.
以下のような状況で,`dirlist'は役に立ちます.automake
のバー
ジョン1.6.2
が,`$prefix=/usr'でシステムベンダーによってイン
ストールされていると仮定します.このためデフォルトの検索ディレクトリは以
下のようになります.
/usr/share/aclocal-1.6/ /usr/share/aclocal/
しかし,システムには多くのパッケージが,いつも通りに
`$prefix=/usr/local'に手動でインストールされていると仮定します.こ
の状況では,これらの"追加の"`.m4'ファイルは
`/usr/local/share/aclocal'にあります.これらの"追加の"`.m4'
ファイルを見つけるため,`/usr/bin/aclocal'を強制させる方法は,常に
aclocal -I /usr/local/share/aclocal
を呼び出すことです.これは不便
です.`dirlist'を用いると,以下のファイルを作成することができます.
`/usr/share/aclocal/dirlist'
その内容は以下のようになっています.
`/usr/local/share/aclocal'
さて,システムに影響する"デフォルト"の検索パスは以下のようになります.
/usr/share/aclocal-1.6/ /usr/share/aclocal/ /usr/local/share/aclocal/
-I
オプションは不要です.-I
は,ローカルなシステム依存のツー
ルのインストールディレクトリを回避するのではなく,プロジェクト独自のもの
が必要な(`my-source-dir/m4/')として予約可能です.
同様に,Automakeのローカルコピーをアカウント内にインストールし, @command{aclocal}でシステムの他の場所にインストールされているマクロを探 したい場合,`dirlist'は手頃なはずです.
Automakeは,`configure.in'で使用可能ないくつかのAutoconfマクロとと
もに出荷されています.そのうちの一つを使用するとき,aclocal
で
`aclocal.m4'に含められるでしょう.
AM_CONFIG_HEADER
AC_CONFIG_HEADERS
と同じです
(see section その他のAutomakeが理解すること).
AM_ENABLE_MULTILIB
AM_C_PROTOTYPES
AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
TIOCGWINSZ
を使用するときに`<sys/ioctl.h>'が必要な場合,
GWINSZ_IN_SYS_IOCTL
を定義します.それ以外の場合,
TIOCGWINSZ
は`<termios.h>'で見つかるはずです.
AM_INIT_AUTOMAKE([OPTIONS])
AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
AC_INIT
マクロ(それ自身も古い形式と新しい
形式があります)から得ることが可能なので時代遅れです.
`configure.in'が以下の場合を考えます.
AC_INIT(src/foo.c) AM_INIT_AUTOMAKE(mumble, 1.5)以下のようにして新しいものにすることが可能です.
AC_INIT(mumble, 1.5) AC_CONFIG_SRCDIR(src/foo.c) AM_INIT_AUTOMAKE`configure.in'を以前のバージョンのAutomakeから更新している場合,上 記の例のように,単純にパッケージバージョンの引数を,直接
AM_INIT_AUTOMAKE
からAC_INIT
へ移動することが常に正しいとは
限りません.AC_INIT
の最初の引数はパッケージの名前(例えば`GNU
Automake')ですが,AM_INIT_AUTOMAKE
に渡すために使用しているtarball
の名前(例えば`automake')ではありません.パッケージ名からtarball名を
導き出すAutoconfの規則は,ほとんどのパッケージで動作しますが全てで動作す
るわけではないでしょう.特に,tarballの名前が全て小文字の場合,
AC_INIT
の四つの引数を用いる形式を使用する必要があるでしょう
(Autoconfのバージョン2.52g以上からサポートされています).
AM_INIT_AUTOMAKE
が単一の引数で呼び出されたとき,それはスペースで
分けられた,ツリーの全ての`Makefile.am'に適用されるAutomakeのオプショ
ンのリストとして解釈されます.その影響は,それぞれのオプションを
AUTOMAKE_OPTIONS
でリストアップしているかのようになります.
デフォルトでこのマクロは`PACKAGE'と`VERSION'をAC_DEFINE
します.以下のように`no-define'オプションを渡すことでこれを避けるこ
とが可能です.
AM_INIT_AUTOMAKE([gnits 1.5 no-define dist-bzip2])または時代遅れの形式に空の三番目に引数を渡すことで避けることが可能です.
AM_PATH_LISPDIR
emacs
プログラムを検索し,見つかった場合は,Emacsのsite-lispディレ
クトリへのフルパスを出力変数lispdir
に設定します.
このテストは(GNU EmacsやXEmacsのような)Emacs Lispをサポートしている
バージョンのemacs
が見つかることを想定しています.それ以外の
emacsenでは,このテストはハングアップします(古いバージョンのMicroEmacsの
ように,対話モードでセットアップされているものは,終了するために
`C-x C-c'が必要で,emacsユーザでなければなかなか気付かないでしょう).
しかし,ほとんどの状況で,テストを終了するために`C-c'を使用すること
が可能でしょう.問題を避けるため,環境変数でEMACS
を"no"に設定し
たり,(Emacs Lispをサポートしているemacs
が確実にある場合は)正しい
パスを明示的に設定するために@command{configure}で`--with-lispdir'を
使用することが可能です.
AM_PROG_AS
CCAS
を設定し,
そして,必要な場合はCCASFLAGS
も設定します.
AM_PROG_CC_C_O
AC_PROG_CC_C_O
に似ていますが,それはautomakeが要求する形式
の結果を生成します.この機能が必要なときは,AC_PROG_CC_C_O
の代わ
りにこれを使用して下さい.
AM_PROG_CC_STDC
CC
にオプションの追加を試みます.このマクロはシス
テムごとのANSI Cを選択する様々なオプションを試みます.関数プロトタイプを
正しく処理する場合,コンパイラがANSI Cモードであると考えます.
このマクロを使用する場合,それを呼び出した後で,CコンパイラをANSI Cに適
用させる設定があるかどうかを調査する必要があります.そうでない場合,シェ
ル変数のam_cv_prog_cc_stdc
は`no'に設定されます.ANSI Cでソー
スコードを書いた場合は,ansi2knr
オプションを使用して,非ANSIfied
のコピーを作成することが可能です(see section 自動的なde-ANSI-fication).
AM_PROG_LEX
AC_PROG_LEX
に似ていますが(see section `Particular Program Checks' in The Autoconf Manual),lex
が
無いシステムでmissing
スクリプトを使用します.`HP-UX 10'はそ
のようなシステムの一つです.
AM_PROG_GCJ
gcj
プログラムを見つけるか,そうでなければエラーを発
生します.それは`GCJ'と`GCJFLAGS'を設定します.gcj
は,
GNU Compiler CollectionのJavaフロントエンドです.
AM_SYS_POSIX_TERMIOS
am_cv_sys_posix_termios
を`yes'に設定します.そ
うでない場合,その変数を`no'に設定します.
AM_WITH_DMALLOC
WITH_DMALLOC
を定義し,LIBS
に
`-ldmalloc'を加えます.
AM_WITH_REGEX
configure
コマンドラインに`--with-regex'を追加します.指定さ
れた(デフォルトの)場合,`regex'の正規表現ライブラリが使用され,
`regex.o'が`LIBOBJS'に書き込まれ,そして,`WITH_REGEX'が
定義されます.`--without-regex'が与えられる場合,`rx'正規表現
ライブラリが使用され,`rx.o'が`LIBOBJS'に書き込まれます.
以下のマクロは,直接呼び出すべきではないプライベートマクロです.それらは 適切なときに他のパブリックマクロから呼び出されます.将来のバージョンで変 更される可能性があるので,それらを呼び出さないでください.それらは実装の 詳細を考察するものと考えてください.または,何も考え内容が良いかもしれま せん.このセクションは読み飛ばしてください!
_AM_DEPENDENCIES
AM_SET_DEPDIR
AM_DEP_TRACK
AM_OUTPUT_DEPENDENCY_COMMANDS
AM_MAKE_INCLUDE
make
がinclude
文を処理する方法を知る
ために使用されます.それらは,必要なとき自動的に呼び出されます.手動で呼
び出す必然性はありません.
AM_PROG_INSTALL_STRIP
strip
するために使用可能な
install
のバージョンを知るために使用されます.このマクロは要求され
るとき自動的に含められます.
AM_SANITY_CHECK
AM_INIT_AUTOMAKE
から自動的に実行され
ます.
aclocal
プログラムには,マクロ組み込みの知識が全く無いので,独自の
マクロでそれを拡張することは容易です.
これは,他のプログラムで使用する独自のAutoconfマクロを供給したいライブラ
リに対して主に使用されます.例えばgettext
ライブラリは,
gettext
を使用しているあらゆるパッケージで使用されるように,
AM_GNU_GETTEXT
マクロを供給しています.ライブラリがインストールさ
れるとき,aclocal
で見つかるように,このマクロをインストールします.
マクロのファイルは一連のAC_DEFUN
で行います.aclocal
プログ
ラムはAC_REQUIRE
も理解するので,別々のファイルにそれぞれのマクロ
を書き込むと安全です.See section `Prerequisite Macros' in The Autoconf Manual.そして,section `Macro Definitions' in The Autoconf Manualを参照してください.
マクロファイルの名前は`.m4'で終わらせすべきです.そのようなファイル
は`aclocal --print-ac-dir`
(偶然ですが,通常は
`$(datadir)/aclocal'になります)にインストールされます.
Go to the first, previous, next, last section, table of contents.