次: , 上: Using autom4te


8.2.1 autom4teの呼び出し

コマンドライン引数は,M4のものをモデルにしています.

     autom4te options files

ここでのfilesは,直接m4に渡すものです.正規の展開に加え, それは四文字表記(see Quadrigraphs)と,出力の現在の行の `__oline__'の置換を処理します.それは,filesに対して拡張され た構文もサポートしています.

file.m4f
このファイルは,M4を固めたファイルです.以前のファイルはすべて無視 されることに注意してください.正当性については,オプション --meltを参照してください.
file?
ライブラリパスで見つかった場合,fileは展開に含められ,それ以外では, 異常終了を発生する代わりに無視されます.

もちろん,それはAutoconfの一般的のオプションのサブセットをサポートしてい ます.
--help
-h
コマンドラインオプションの概要を出力し,終了します.
--version
-V
Autoconfのバージョンナンバーを出力し,終了します.
--verbose
-v
処理しているステップを報告します.
--debug
-d
一時的なファイルを削除せず,さらに冗長になります.
--include=dir
-I dir
入力ファイルをdirでも探します.複数回の呼び出しは累積されます.
--output=file
-o file
(スクリプトやトレースの)出力をfileに保存します.ファイル- は標準出力を意味します.

m4の拡張として,それらは以下のオプションが含まれます.
--warnings=category
-W category
(実際にはカンマで分けられたリストになっている)categoryに関連する警 告を報告します.カテゴリの包括的なリストは,マクロAC_DIAGNOSE の See Reporting Messages. 以下の特殊な値が含まれます.
`all'
すべての警告を報告します.
`none'
何も報告しません.
`error'
警告をエラーとして扱います.
`no-category'
categoryに分類される警告を利用不可能にします.

`syntax'に関する警告は,デフォルトで利用可能で,カテゴリのカンマで 分離されたリストの環境変数WARNINGSは尊重されます. autom4te -W categoryは,実際に悪いことを実行したかのよう に動作します.

          autom4te --warnings=syntax,$WARNINGS,category
     

autom4teのデフォルトとWARNINGSを利用不可能にしたいけれ ども,(例えば)時代遅れの構成物に関する警告は利用可能にしたい場合, -W none,obsoleteを使用するべきでしょう.

autom4teはエラーのバックトレースを表示しますが,警告は表示しま せん.警告も表示したい場合,-W errorを渡してください.例えば以 下のようなconfigure.acを考えます.

          AC_DEFUN([INNER],
          [AC_RUN_IFELSE([AC_LANG_PROGRAM([exit (0)])])])
          
          AC_DEFUN([OUTER],
          [INNER])
          
          AC_INIT
          OUTER
     

以下のようになるでしょう.

          $ autom4te -l autoconf -Wcross
          configure.ac:8: warning: AC_RUN_IFELSE called without default \
          to allow cross compiling
          $ autom4te -l autoconf -Wcross,error -f
          configure.ac:8: error: AC_RUN_IFELSE called without default \
          to allow cross compiling
          acgeneral.m4:3044: AC_RUN_IFELSE is expanded from...
          configure.ac:2: INNER is expanded from...
          configure.ac:5: OUTER is expanded from...
          configure.ac:8: the top level
     

--melt
-m
固められたファイルを使用しません.すべての引数file.m4ffile.m4で置換されます.これは,ファイルが固められているとき だけに実行されるマクロ,通常はm4_defineの追跡で役に立ちます.例え ば以下のように実行します.
          autom4te --melt 1.m4 2.m4f 3.m4 4.m4f input.m4
     

これは以下を実行したのと等価です.

          m4 1.m4 2.m4 3.m4 4.m4 input.m4
     

一方,以下を実行した場合を考えます.

          autom4te 1.m4 2.m4f 3.m4 4.m4f input.m4
     

これは以下と等価です.

          m4 --reload-state=4.m4f input.m4
     

--freeze
-f
固まった状態のファイルを生成します.autom4teの固め方は,M4より 厳密です.警告を生成させたり,空の行(空白行は空の行ではありません) とコメント(`#'で始まります)以外の出力を生成してはいけません. m4とは異なり,このオプションは以下のように引数をとらないことに 注意してください.
          autom4te 1.m4 2.m4 3.m4 --freeze --output=3.m4f
     

これは以下に対応します.

          m4 1.m4 2.m4 3.m4 --freeze-state=3.m4f
     

--mode=octal-mode
-m octal-mode
octal-modeにトレース出力以外のモードを設定します.デフォルトは `0666'です.

それ以外のm4上の追加機能として,autom4teがその結果を キャッシュするというものがあります.GNU M4は,標準出力を生成す ると同時にトレースすることが可能です.トレースはGNUビルドシス テムで重点的に使用されています.autoheaderは, config.h.inをビルドするために,autoreconfは,使用されて いるGNUビルドシステムの構成要素を決定するために, automakeconfigure.acをパースするため等として使用して います.m4の長い実行結果を保存するために,通常の展開を実行して いる間,トレースはキャッシュされます1.このキャッシュ(実際には複数あ る) は,ディレクトリautom4te.cacheに保存されます.いつでも 削除して大丈夫です(特に,理由があればautom4teはそれが捨 てられてしまったと考えます).
--cache=directory
-C directory
結果をキャッシュするディレクトリの名前を指定します.空の値を渡すことで キャッシュが利用不可能になります.グローバルキャッシュがサポートされると きまで,相対パスで渡してください.
--no-cache
結果をキャッシュしません.
--force
-f
キャッシュが使用されている場合,時代遅れだと考えません(しかし,それはい ずれにせよ更新されます).

トレースはGNUビルドシステムに重きをおいて実装されているので, autom4teは,M4と比較して高度なトレース機能を提供していて,キャッ シュを利用する手助けとなります.
--trace=macro[:format]
-t macro[:format]
formatによって,macroの呼び出しをトレースします.複数の --trace引数は,いくつかのマクロリストを使用するために使用可能で す.単一マクロに対する複数の--trace引数は累積されません.その代 わりに,必要な長さのformatにすべきです.

formatは,必要なときは改行を用いていて,特殊なエスケープコードをも 用いている通常の文字列です.デフォルトは`$f:$l:$n:$%'です.以下の特 殊なエスケープ文字が使用可能です.

`$$'
文字`$'.
`$f'
macroが呼び出されているファイル名.
`$l'
macroが呼び出されている行番号.
`$d'
macro呼び出しの深さ.これはM4の技術的な詳細で,特に知りたいとは思 わないでしょう.
`$n'
macroの名前.
`$num'
macro呼び出しのnum番目の引数.
`$@'
`$sep@'
`${separator}@'
文字sepまたは文字列separatorで分離されている,マクロに渡され ているすべての引数(デフォルトは`,').それぞれの引数は引用符で囲まれ ています.すなわち,角カッコの組で囲まれています.
`$*'
`$sep*'
`${separator}*'
上と同じですが,引数は引用符で囲まれていません.
`$%'
`$sep%'
`${separator}%'
上と同じですが,引数は引用符で囲まれておらず,引数内部のすべての改行文字 は取り除かれていて,そして,デフォルトの分離子は`:'です.

エスケープの`$%'は,(`separator'に改行を書き込まない限り)一行 のトレース出力を生成しますが,`$@'と`$*'はそうではありません.

トレースの使用例はSee autoconf Invocation.

--preselect=macro
-p macro
macroのトレースをキャッシュしますが,キャッシュを利用可能にしませ ん.これは特に,将来のCPUサイクルを無駄にしないために重要です.例えば呼 び出し時に,m4の実行でトレースする必要が無いように, autoconfautoheaderautomakeautoreconfなどがトレースするすべてのマクロを前もって選択します. キャッシュは十分です.これは結果として非常に高速になります.

最後に,autom4teAutom4teライブラリ(Autom4te libraries) の概念を導入します.それらは,強力ですが非常にシンプルな機能から成り立っ ています.コマンドライン引数の組み合わせの組です.
--language=language
-l =language
languageをAutom4teライブラリで使用します.現在の言語は以下のものが 含まれています.
M4sugar
M4sugar出力を作成します.
M4sh
M4shの実行可能なシェルスクリプトを作成します.
Autotest
Autotestの実行可能なテストスイートを作成します.
Autoconf
Autoconfの実行可能なコンフィグレーションスクリプトを作成します.
Autoconf-without-aclocal-m4
aclocal.m4を読み込まずに,Autoconfの実行可能なコンフィグレーショ ンスクリプトを作成します.

--prepend-include=dir
-B dir
検索パスにディレクトリdirを前置します.これは,サードパーティーの マクロの前に,言語指定ファイルを含めるために使用します.

例として,Autoconfがデフォルトの場所/usr/localにインストールされ ている場合,`autom4te -l m4sugar foo.m4'を実行することは, `autom4te --prepend-include /usr/local/share/autoconf m4sugar/m4sugar.m4f --warning syntax foo.m4'を実行することと厳密に等価と なります.再帰的な展開も適用します.`autom4te --language m4sh foo.m4'を実行することは,`autom4te --language M4sugar m4sugar/m4sh.m4f foo.m4'と同じで,すなわち,`autom4te --prepend-include /usr/local/share/autoconf m4sugar/m4sugar.m4f m4sugar/m4sh.m4f --mode 777 foo.m4'と同じになります.言語の定義は, autom4te.cfgに保存されます.


脚注

[1] 訳注:原文にある“and conversely”が何を指すのか分かりません.