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.