File:  [Local Repository] / gnujdoc / automake-1.4 / automake-ja.texi
Revision 1.4: download - view: text, annotated - select for diffs
Sat Jun 11 07:02:48 2005 UTC (15 years, 4 months ago) by futoshi
Branches: MAIN
CVS tags: HEAD
Format html with makeinfo.
Some "@ininfo"s (for @menu and @top) replace to "@ifnottex"s.

    1: \input texinfo   @c -*-texinfo-*-
    2: @c %**start of header
    3: @setfilename automake-ja.info
    4: @settitle automake
    5: @setchapternewpage off
    6: @c %**end of header
    7: 
    8: @include automake-v.texi
    9: 
   10: @dircategory GNU admin
   11: @direntry
   12: * automake-ja: (automake-ja).	Makefile.inの作成
   13: @end direntry
   14: 
   15: @dircategory Individual utilities
   16: @direntry
   17: * aclocal-ja: (automake-ja)Invoking aclocal.    aclocal.m4の生成
   18: @end direntry
   19: 
   20: @ifinfo
   21: This file documents GNU automake @value{VERSION}
   22: 
   23: Copyright (C) 1995, 96, 97, 98 Free Software Foundation, Inc.
   24: 
   25: Permission is granted to make and distribute verbatim copies of
   26: this manual provided the copyright notice and this permission notice
   27: are preserved on all copies.
   28: 
   29: @ignore
   30: Permission is granted to process this file through TeX and print the
   31: results, provided the printed document carries copying permission
   32: notice identical to this one except for the removal of this paragraph
   33: 
   34: 
   35: @end ignore
   36: Permission is granted to copy and distribute modified versions of this
   37: manual under the conditions for verbatim copying, provided that the entire
   38: resulting derived work is distributed under the terms of a permission
   39: notice identical to this one.
   40: 
   41: Permission is granted to copy and distribute translations of this manual
   42: into another language, under the above conditions for modified versions,
   43: except that this permission notice may be stated in a translation approved
   44: by the Foundation.
   45: @end ifinfo
   46: 
   47: 
   48: @titlepage
   49: @title GNU Automake
   50: @subtitle For version @value{VERSION}, @value{UPDATED}
   51: @author David MacKenzie and Tom Tromey (原著)
   52: @author OKUJI Yoshinori (翻訳)
   53: 
   54: @page
   55: @vskip 0pt plus 1filll
   56: Copyright @copyright{} 1995, 96 Free Software Foundation, Inc.
   57: @sp 2
   58: This is the first edition of the GNU Automake documentation,@*
   59: and is consistent with GNU Automake @value{VERSION}.@*
   60: @sp 2
   61: Published by the Free Software Foundation @*
   62: 59 Temple Place - Suite 330, @*
   63: Boston, MA 02111-1307 USA @*
   64: 
   65: Permission is granted to make and distribute verbatim copies of
   66: this manual provided the copyright notice and this permission notice
   67: are preserved on all copies.
   68: 
   69: Permission is granted to copy and distribute modified versions of this
   70: manual under the conditions for verbatim copying, provided that the entire
   71: resulting derived work is distributed under the terms of a permission
   72: notice identical to this one.
   73: 
   74: Permission is granted to copy and distribute translations of this manual
   75: into another language, under the above conditions for modified versions,
   76: except that this permission notice may be stated in a translation
   77: approved by the Free Software Foundation.
   78: @end titlepage
   79: 
   80: @c Define an index of configure output variables.
   81: @defcodeindex ov
   82: @c Define an index of configure variables.
   83: @defcodeindex cv
   84: @c Define an index of options.
   85: @defcodeindex op
   86: @c Define an index of targets.
   87: @defcodeindex tr
   88: @c Define an index of commands.
   89: @defcodeindex cm
   90: 
   91: @c Put the macros and variables into their own index.
   92: @c @syncodeindex fn cp
   93: @syncodeindex ov vr
   94: @syncodeindex cv vr
   95: @syncodeindex fn vr
   96: 
   97: @c Put everything else into one index (arbitrarily chosen to be the concept index).
   98: @syncodeindex op cp
   99: @syncodeindex tr cp
  100: @syncodeindex cm cp
  101: 
  102: @c @ifinfo
  103: @ifnottex
  104: @node Top, Introduction, (dir), (dir)
  105: @comment  node-name,  next,  previous,  up
  106: @top GNU Automake
  107: 
  108: このファイルではテンプレート・ファイルからGNU準拠のMakefileを生成するた
  109: めのGNU Automakeパッケージを解説している。この版ではversion
  110: @value{VERSION}について解説している。
  111: 
  112: @menu
  113: * Introduction::                Automakeの目的
  114: * Generalities::                全般的な概念
  115: * Examples::                    いくつかの見本パッケージ
  116: * Invoking Automake::           Makefile.inの作成
  117: * configure::                   configure.inの検査
  118: * Top level::                   一番上のMakefile.am
  119: * Programs::                    プログラムやライブラリの構築
  120: * Other objects::               他の派生したオブジェクト
  121: * Other GNU Tools::             他のGNUツール
  122: * Documentation::               解説書の構築
  123: * Install::                     何がインストールされるか
  124: * Clean::                       何がクリーンされるか
  125: * Dist::                        何が配布物に含まれるか
  126: * Tests::                       テストのサポート
  127: * Options::                     Automakeの挙動の変更
  128: * Miscellaneous::               雑多な規則
  129: * Include::                     Including extra files in an Automake template.
  130: * Conditionals::                条件文
  131: * Gnits::                       @code{--gnu}と@code{--gnits}の影響
  132: * Cygnus::                      @code{--cygnus}の影響
  133: * Extending::                   Automakeの拡張
  134: * Distributing::                Makefile.inの配布
  135: * Future::                      将来の考え
  136: * Macro and Variable Index::    
  137: * General Index::               
  138: @end menu
  139: 
  140: @c @end ifinfo
  141: @end ifnottex
  142: 
  143: 
  144: @node Introduction, Generalities, Top, Top
  145: @chapter 導入
  146: 
  147: Automakeは@file{Makefile.am}と名付けられるファイルから@file{Makefile.in}
  148: を自動的に生成するためのツールである。各@file{Makefile.am}は基本的に(と
  149: きどき規則が差し挟まれた)一連の@code{make}マクロ定義である。生成された
  150: @file{Makefile.in}はGNU Makefile標準に適合する。
  151: 
  152: @cindex GNU Makefile standards
  153: 
  154: GNU Makefile標準の解説
  155: (@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
  156: は長くて、複雑で、変更を受けやすい。Automakeの目的は個々のGNU管理者の背
  157: 中からMakefile管理の重荷を取り除く(そしてそれをAutomake管理者の背中に置
  158: く)ことである。
  159: 
  160: 典型的なAutomakeの入力ファイルは単に一連のマクロ定義だけである。そのよう
  161: なファイルはそれぞれ@file{Makefile.in}を作成するために処理される。一般的
  162: にプロジェクトのディレクトリあたり一つの@file{Makefile.am}があるべきだ。
  163: 
  164: @cindex Constraints of Automake
  165: @cindex Automake constraints
  166: 
  167: Automakeはプロジェクトをある方法に強制する。例えば、そのプロジェクトが
  168: Autoconf(@pxref{Top, , Introduction, autoconf, The Autoconf Manual})
  169: を使うとみなし、@file{configure.in}の中身にある制限を加える。
  170: 
  171: @cindex Automake requirements
  172: @cindex Requirements, Automake
  173: 
  174: Automakeは@file{Makefile.in}を生成するために@code{perl}を必要とする。し
  175: かし、Automakeによって作成された配布物は完全にGNU準拠であり、構築するた
  176: めに@code{perl}を必要としない。
  177: 
  178: @cindex BUGS, reporting
  179: @cindex Reporting BUGS
  180: @cindex E-mail, bug reports
  181: 
  182: Automakeへの提案やバグ報告は@email{bug-automake@@gnu.org}にメールしなさ
  183: い@footnote{訳注: この翻訳に関しては@email{okuji@@kuicr.kyoto-u.ac.jp}ま
  184: で。}。
  185: 
  186: 
  187: @node Generalities, Examples, Introduction, Top
  188: @chapter 全般的な概念
  189: 
  190: 以下の節ではAutomakeがどう働くかを理解するのを助ける、2、3の基本的な概念を
  191: カバーする。
  192: 
  193: @menu
  194: * General Operation::           Automakeの全般的な操作
  195: * Depth::                       パッケージの種類
  196: * Strictness::                  標準適合性の点検
  197: * Uniform::                     一定の名付け方
  198: * Canonicalization::            派生した変数の名付け方
  199: @end menu
  200: 
  201: 
  202: @node General Operation, Depth, Generalities, Generalities
  203: @section 全般的な操作
  204: 
  205: Automakeは@file{Makefile.am}を読み、@file{Makefile.in}を生成することで働
  206: く。@file{Makefile.am}で定義される特定のマクロやターゲットはautomakeにもっ
  207: と特化したコードを生成するよう指示する。例えば、@samp{bin_PROGRAMS}マク
  208: ロ定義はプログラムをコンパイルしリンクするためのターゲットを生成させるだろう。
  209: 
  210: @cindex Non-standard targets
  211: @cindex cvs-dist, non-standard example
  212: @trindex cvs-dist
  213: 
  214: @file{Makefile.am}のマクロ定義やターゲットは生成されたファイルにそのままコピーさ
  215: れる。こうして任意のコードを生成される@file{Makefile.in}に加えることがで
  216: きる。例えば、Automakeの配布物は標準的でない@code{cvs-dist}ターゲットを
  217: 含み、それはAutomake管理者が彼のソース管理システムから配布物を作成するの
  218: に使用されるのだ。
  219: 
  220: @cindex GNU make extensions
  221: 
  222: GNUのmake拡張はAutomakeによって認識されないことを注意せよ。
  223: @file{Makefile.am}でそのような拡張を使用すれば、エラーや混乱させる振る
  224: 舞いを引き起こすだろう。
  225: 
  226: Automakeは隣接するターゲットとマクロ定義のコメントを賢いやり方で集
  227: めようとする。
  228: 
  229: @cindex Make targets, overriding
  230: @cindex Overriding make targets
  231: 
  232: @file{Makefile.am}で定義されるターゲットは一般的に@code{automake}によっ
  233: て自動的に生成される同じ名前のターゲットを上書きする。これはサポートされ
  234: ている特徴だが、ときどき生成される規則は非常に特殊なので、一般的にその使
  235: 用を避けるのが最善である。
  236: 
  237: @cindex Macros, overriding
  238: @cindex Overriding make macros
  239: 
  240: 同様に、@file{Makefile.am}で定義されるマクロは@code{automake}が通常生成す
  241: るマクロの定義を上書きするだろう。この特徴はターゲット定義を上書きする能力
  242: よりも頻繁に役立つ。@code{automake}によって生成されるマクロの多くは内部利
  243: 用だけのためであると想定されており、それらの名前は将来のリリースで変更さ
  244: れるかもしれないことに注意しなさい。
  245: 
  246: @cindex Recursive operation of Automake
  247: @cindex Automake, recursive operation
  248: @cindex Example of recursive operation
  249: 
  250: マクロ定義を調べるとき、Automakeはその定義で参照されるマクロを再帰的に調べる
  251: だろう。例えば、Automakeが次のコード片で@code{foo_SOURCES}の中身を見てい
  252: るなら、
  253: 
  254: @example
  255: xs = a.c b.c
  256: foo_SOURCES = c.c $(xs)
  257: @end example
  258: 
  259: @code{foo_SOURCES}の中身として@file{a.c}、@file{b.c}、@file{c.c}というファ
  260: イルを使用するだろう。
  261: 
  262: @cindex ## (special Automake comment)
  263: @cindex Special Automake comment
  264: @cindex Comment, special to Automake
  265: 
  266: Automakeはまた出力にコピー@emph{されない}コメントの形式を許す。@samp{##}
  267: で始まる全ての行はAutomakeに完全に無視される。
  268: 
  269: @file{Makefile.am}の最初の行にこう書いておくのが慣習である。
  270: 
  271: @cindex Makefile.am, first line
  272: @cindex First line of Makefile.am
  273: 
  274: @example
  275: ## Process this file with automake to produce Makefile.in
  276: @end example
  277: 
  278: @c FIXME discuss putting a copyright into Makefile.am here?  I would but
  279: @c I don't know quite what to say.
  280: 
  281: @c FIXME document customary ordering of Makefile.am here!
  282: 
  283: 
  284: @node Depth, Strictness, General Operation, Generalities
  285: @section 深さ
  286: 
  287: @cindex Flat package
  288: @cindex Package, Flat
  289: @cindex Shallow package
  290: @cindex Package, shallow
  291: @cindex Deep package
  292: @cindex Package, deep
  293: 
  294: @code{automake}は三つの種類のディレクトリ階層、@samp{flat}、@samp{shallow}、そ
  295: して@samp{deep}をサポートする。
  296: 
  297: @dfn{flat}パッケージは全てのファイルが単一のディレクトリにあるようなもの
  298: である。そのようなパッケージの@file{Makefile.am}は定義により
  299: @code{SUBDIRS}マクロがない。そのようなパッケージの例は@code{termutils}で
  300: ある。
  301: @vindex SUBDIRS
  302: 
  303: @cindex SUBDIRS, deep package
  304: 
  305: @dfn{deep}パッケージは全てのソースがサブディレクトリにあるようなものであ
  306: る。その一番上の階層のディレクトリは主に設定情報を含んでいる。GNU @code{cpio}は
  307: GNU @code{tar}と同じく、そのようなパッケージの良い例である。deepパッケー
  308: ジの一番上の階層の@file{Makefile.am}は@code{SUBDIRS}マクロを含むだろうが、
  309: 構築されるオブジェクトを定義するための他のマクロは含まない。
  310: 
  311: @dfn{shallow}パッケージは主要なソースが一番上の階層のディレクトリにある
  312: が、さまざまな部分(典型的にはライブラリ)がサブディレクトリにあるような
  313: ものである。Automakeは(GNU @code{make}、それは現在@code{automake}を使っ
  314: ていないが、それと同じく)そのようなパッケージの一つである。
  315: 
  316: 
  317: @node Strictness, Uniform, Depth, Generalities
  318: @section 厳密さ
  319: 
  320: @cindex Non-GNU packages
  321: 
  322: AutomakeはGNUパッケージの管理者によって使われることを意図しているが、そ
  323: れを使いたいけどGNUの慣習を全て使いたいわけではない人々に便宜をはかるた
  324: めに、いくらか努力している。
  325: 
  326: @cindex Strictness, defined
  327: @cindex Strictness, foreign
  328: @cindex foreign strictness
  329: @cindex Strictness, gnu
  330: @cindex gnits strictness
  331: @cindex Strictness, gnits
  332: @cindex gnits strictness
  333: 
  334: この目標に対し、Automakeは@dfn{strictness}---どれぐらい厳密にAutomakeが
  335: 標準適合性を点検すべきかを示す正確さ---の三つの階層をサポートしている。
  336: 
  337: 有効なstrictnessの階層は次のようである。
  338: 
  339: @table @samp
  340: @item foreign
  341: Automakeは適切な操作に絶対に必要とされるものだけを点検するだろう。例えば、
  342: GNU標準は@file{NEWS}ファイルの存在を命じているけれども、この様式では必要
  343: とされないだろう。その名前はAutomakeはGNUプログラムに対して使われること
  344: を意図されているという事実に由来している。これらの緩和された規則は標準的
  345: な様式の操作ではない。
  346: 
  347: @item gnu
  348: AutomakeはパッケージがGNU標準に一致することを---可能な限りたくさん---点
  349: 検するだろう。これがデフォルトである。
  350: 
  351: @item gnits
  352: Automakeはまだ書かれていない@dfn{Gnits標準}に一致することを点検するだろう。こ
  353: れらはGNU標準に基いているが、もっと詳細でさえある。あなたがGnits標準の寄
  354: 付者でないなら、Gnits標準が実際に公表されるようなときまでこのオプション
  355: を避けることが推奨される。
  356: @end table
  357: 
  358: strictnessの階層の精密な意味についてもっと情報を得るために、@ref{Gnits}
  359: を見なさい。
  360: 
  361: 
  362: @node Uniform, Canonicalization, Strictness, Generalities
  363: @section 一定の名付け方
  364: 
  365: @cindex Uniform naming scheme
  366: 
  367: 一般的にAutomakeマクロ(以降@emph{変数}と呼ぶ)はどうプログラム(や他の派生したオブジェクト)が構築さ
  368: れ、どうそれらがインストールされるのか決定するのが簡単にする@dfn{一定の名付け
  369: 方}に従う。この方法はまた何が構築されるべきかに関する@code{configure}時の
  370: 決定もサポートしている。
  371: 
  372: @cindex _PROGRAMS primary variable
  373: @cindex PROGRAMS primary variable
  374: @cindex Primary variable, PROGRAMS
  375: 
  376: @cindex Primary variable, defined
  377: 
  378: @code{make}のときに、特定の変数がどのオブジェクトが構築されるのかを決定
  379: するために使われる。これらは@dfn{主要な変数}と呼ばれる。例えば、主要な変数@code{PROGRAMS}はコンパイルされリ
  380: ンクされるプログラムのリストを保持する。
  381: @vindex PROGRAMS
  382: 
  383: @cindex pkglibdir, defined
  384: @cindex pkgincludedir, defined
  385: @cindex pkgdatadir, defined
  386: 
  387: @vindex pkglibdir
  388: @vindex pkgincludedir
  389: @vindex pkgdatadir
  390: 
  391: 異なる変数の組が構築されたオブジェクトがどこにインストールされるべきかを
  392: 決めるのに使われる。これらの変数は主要な変数にちなんで名付けられているが、
  393: どの標準ディレクトリがインストールのディレクトリとして使われるべきかを示
  394: す接頭辞を持っている。標準ディレクトリ名はGNU標準(@pxref{Directory
  395: Variables, , , standards, The GNU Coding Standards})で与えられている。
  396: Automakeはこのリストを@code{pkglibdir}、@code{pkgincludedir}と
  397: @code{pkgdatadir}で拡張する。これらは@samp{pkg}でないバージョンと同じだ
  398: が、@samp{@@PACKAGE@@}が追加されている。例えば、@code{pkglibdir}は
  399: @code{$(datadir)/@@PACKAGE@@}と定義されている@footnote{訳注:
  400: @code{$(libdir)/@@PACKAGE@@}の間違いだろう。}。
  401: @cvindex PACKAGE
  402: 
  403: @cindex EXTRA_, prepending
  404: 
  405: 各主要変数に対し、主要変数名に@samp{EXTRA_}を頭に付けて名付けられた、追
  406: 加の変数がある。この変数は@code{configure}が決定するものに依存して、構築
  407: されたりされなかったりするオブジェクトを列挙するために使われる。あらゆる
  408: 場合に働く@file{Makefile.in}を生成するために、Automakeは構築されるであろうオブジェ
  409: クトのリスト全体を静的に知っていなければならないので、この変数は必要とさ
  410: れる。
  411: 
  412: @cindex EXTRA_PROGRAMS, defined
  413: @cindex Example, EXTRA_PROGRAMS
  414: @cindex cpio example
  415: 
  416: 例えば、@code{cpio}はどのプログラムが構築されるか設定時に決定する。プロ
  417: グラムの一部は@code{bindir}にインストールされるし、一部は@code{sbindir}
  418: にインストールされる。
  419: 
  420: @example
  421: EXTRA_PROGRAMS = mt rmt
  422: bin_PROGRAMS = cpio pax
  423: sbin_PROGRAMS = @@PROGRAMS@@
  424: @end example
  425: 
  426: (@code{PROGRAMS}のように)接頭辞なしに主要な変数を定義するのは誤りである。
  427: 
  428: 変数名を組み立てるとき、共通の@samp{dir}接尾辞が除かれることに注意せよ。
  429: こうして@samp{bin_PROGRAMS}と書き、@samp{bindir_PROGRAMS}とは書かない。
  430: 
  431: あらゆる種類のオブジェクトがあらゆるディレクトリにインストールされ得るわ
  432: けではない。Automakeはエラーになる、そのような試みを止めるだろう。
  433: Automakeはまたディレクトリ名の明らかな綴り違いを診断するだろう。
  434: 
  435: @cindex Extending list of installation directories
  436: @cindex Installation directories, extending list
  437: 
  438: ときどき標準のディレクトリは---Automakeによって補強されてさえ---十分ではな
  439: い。とりわけ、明瞭さのために、ある先に定義されたディレクトリのサブディレ
  440: クトリにオブジェクトをインストールすることがときどき有用である。この目的
  441: のために、Automakeは可能なインストール用ディレクトリのリストを拡張できる
  442: ようにしている。任意の接頭辞(例えば@samp{zar})はもし@samp{dir}が付けられ
  443: た同じ名前の変数が定義されていれば(例えば@code{zardir})有効である。
  444: 
  445: @cindex HTML support, example
  446: 
  447: 例えば、HTMLサポートがAutomakeの一部となるまで、生のHTML文書をインストー
  448: ルために次のように使用できる。
  449: 
  450: @example
  451: htmldir = $(prefix)/html
  452: html_DATA = automake.html
  453: @end example
  454: 
  455: @cindex noinst primary prefix, definition
  456: 
  457: 特別な接頭辞@samp{noinst}は問題となっているオブジェクトが全くインストー
  458: ルされるべきでないことを表す。
  459: 
  460: @cindex check primary prefix, definition
  461: 
  462: 特別な接頭辞@samp{check}は問題となっているオブジェクトが@code{make
  463: check}コマンドが走らされるまで構築されるべきでないことを表す。
  464: 
  465: 可能な主要名は@samp{PROGRAMS}、@samp{LIBRARIES}、@samp{LISP}、
  466: @samp{SCRIPTS}、@samp{DATA}、@samp{HEADERS}、@samp{MANS}、そして
  467: @samp{TEXINFOS}である。
  468: @vindex PROGRAMS
  469: @vindex LIBRARIES
  470: @vindex LISP
  471: @vindex SCRIPTS
  472: @vindex DATA
  473: @vindex HEADERS
  474: @vindex MANS
  475: @vindex TEXINFOS
  476: 
  477: 
  478: @node Canonicalization,  , Uniform, Generalities
  479: @section 派生した変数の名付け方
  480: 
  481: @cindex canonicalizing Automake macros
  482: 
  483: ときどきMakefile変数名はユーザが与えるあるテキストに由来している。例えば、
  484: プログラム名はMakefileマクロ名に書き直される。Automakeはこのテキストが
  485: Makefileマクロ名の規則に従わなくても良いように、それを正規化する。マクロ参
  486: 照を行うとき、英字、数字、アンダースコアを除く、その名前の全ての文字がア
  487: ンダースコアに変換される。例えば、もしあなたのプログラムが
  488: @code{sniff-glue}と名付けられているなら、派生する変数名は
  489: @code{sniff_glue_SOURCES}で、@code{sniff-glue_SOURCES}ではない。
  490: 
  491: 
  492: @node Examples, Invoking Automake, Generalities, Top
  493: @chapter いくつかの見本パッケージ
  494: 
  495: @menu
  496: * Complete::                    簡単な例、始めから終わりまで
  497: * Hello::                       模範的なプログラム
  498: * etags::                       etagsとctagsの構築
  499: @end menu
  500: 
  501: 
  502: @node Complete, Hello, Examples, Examples
  503: @section 簡単な例、始めから終わりまで
  504: 
  505: @cindex Complete example
  506: 
  507: あなたはちょうど、あなたの頭を渦から渦へ漂わせるプログラム@footnote{訳注:
  508: 何だこりゃ。原文は、a program to make your head float from vortex to
  509: vortex. }、@code{zardoz}を書き終わったところだと想像しよう。移植性のある
  510: 枠組を提供するためにAutoconfを使っているが、あなたの
  511: @file{Makefile.in}はその場限りである。あなたはそれらをがっちりさせたいの
  512: で、Automakeに切り換える。
  513: 
  514: @cindex AM_INIT_AUTOMAKE, example use
  515: 
  516: 最初の段階は@code{automake}が必要とするコマンドを含むように、あなたの
  517: @file{configure.in}を更新することである。これを行う一番簡単な方法は
  518: @code{AC_INIT}のすぐ後に@code{AM_INIT_AUTOMAKE}呼び出しを加えることであ
  519: る。
  520: 
  521: @example
  522: AM_INIT_AUTOMAKE(zardoz, 1.0)
  523: @end example
  524: 
  525: あなたのプログラムは面倒な要因を持っていない(例えば、@code{gettext}を使
  526: わない、共有ライブラリを構築したがらない)ので、この部分は終了だ。ちょろ
  527: かったね!
  528: 
  529: @cindex aclocal program, introduction
  530: @cindex aclocal.m4, preexisting
  531: @cindex acinclude.m4, defined
  532: 
  533: さて、@file{configure}を再生成しなければならない。しかし、これを行うため
  534: に、あなたが使っている新しいマクロの発見法を@code{autoconf}に教える必要
  535: があるだろう。これを行う一番簡単な方法はあなたのために@file{aclocal.m4}
  536: を生成してくれる@code{aclocal}プログラムを使うことだ。でも待って... あな
  537: たはあなたのプログラムのためにいくつかの毛だらけのマクロ@footnote{訳注:
  538: 何だ、この表現は? some hairy macros}を書かなければならなかったので、す
  539: でに@file{aclocal.m4}を持っている。@code{aclocal}プログラムはあなた自身のマクロを
  540: @file{acinclude.m4}に入れさせるので、単に改名してから走らせる。
  541: 
  542: @example
  543: mv aclocal.m4 acinclude.m4
  544: aclocal
  545: autoconf
  546: @end example
  547: 
  548: @cindex zardoz example
  549: 
  550: さあ@code{zardoz}のために@file{Makefile.am}を書くときだ。@code{zardoz}は
  551: ユーザ・プログラムなので、その他のユーザ・プログラムが入るところにインス
  552: トールしたい。さらに@code{zardoz}はTexinfo文書も持っている。あなたの
  553: @file{configure.in}スクリプトは@code{AC_REPLACE_FUNCS}を使っているので、
  554: @samp{@@LIBOBJS@@}とリンクする必要がある。だからこれがあなたが書くものだ。
  555: 
  556: @example
  557: bin_PROGRAMS = zardoz
  558: zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
  559: zardoz_LDADD = @@LIBOBJS@@
  560: 
  561: info_TEXINFOS = zardoz.texi
  562: @end example
  563: 
  564: さて、あなたの@file{Makefile.in}を生成し、必要かもしれない補助ファイルを
  565: 取ってくるために@code{automake --add-missing}を走らせればよい、そうすれば
  566: 完了だ!
  567: 
  568: 
  569: @node Hello, etags, Complete, Examples
  570: @section 模範的なプログラム
  571: 
  572: @cindex Example, GNU Hello
  573: @cindex Hello example
  574: @cindex GNU Hello, example
  575: 
  576: @uref{ftp://prep.ai.mit.edu/pub/gnu/hello-1.3.tar.gz, GNU hello}
  577: はその模範的な単純さと汎用性で高名である。この節ではAutomake
  578: がどのようにGNU Helloパッケージで使われ得たのかを示す。以下の例は最近のGNU
  579: Helloのベータ版に由来するが、著作権のコメント全てだけではなく、管理者用のみのコー
  580: ドも全て除かれている。
  581: 
  582: もちろん、GNU Helloはあなたの伝統的な二行のものより幾分多くの特色を持っ
  583: ている。GNU Helloは国際化されており、オプションの処理を行い、マニュアル
  584: とテストの組を持っている。GNU Helloはdeepパッケージである。
  585: 
  586: @cindex configure.in, from GNU Hello
  587: @cindex GNU Hello, configure.in
  588: @cindex Hello, configure.in
  589: 
  590: ここにGNU Helloからの@file{configure.in}を見せる。
  591: 
  592: @example
  593: dnl Process this file with autoconf to produce a configure script.
  594: AC_INIT(src/hello.c)
  595: AM_INIT_AUTOMAKE(hello, 1.3.11)
  596: AM_CONFIG_HEADER(config.h)
  597: 
  598: dnl Set of available languages.
  599: ALL_LINGUAS="de fr es ko nl no pl pt sl sv"
  600: 
  601: dnl Checks for programs.
  602: AC_PROG_CC
  603: AC_ISC_POSIX
  604: 
  605: dnl Checks for libraries.
  606: 
  607: dnl Checks for header files.
  608: AC_STDC_HEADERS
  609: AC_HAVE_HEADERS(string.h fcntl.h sys/file.h sys/param.h)
  610: 
  611: dnl Checks for library functions.
  612: AC_FUNC_ALLOCA
  613: 
  614: dnl Check for st_blksize in struct stat
  615: AC_ST_BLKSIZE
  616: 
  617: dnl internationalization macros
  618: AM_GNU_GETTEXT
  619: AC_OUTPUT([Makefile doc/Makefile intl/Makefile po/Makefile.in \
  620:            src/Makefile tests/Makefile tests/hello],
  621:    [chmod +x tests/hello])
  622: @end example
  623: 
  624: @samp{AM_}マクロはAutomake(あるいはGettextライブラリ)によって提供され、
  625: 残りは標準的なAutoconfマクロである。
  626: 
  627: 
  628: 一番上層の@file{Makefile.am}。
  629: 
  630: @example
  631: EXTRA_DIST = BUGS ChangeLog.O
  632: SUBDIRS = doc intl po src tests
  633: @end example
  634: 
  635: このように、ここでは全ての作業が実際にはサブディレクトリで行われる。
  636: 
  637: @file{po}と@file{intl}ディレクトリは@code{gettextize}を使って自動的に生
  638: 成される。それらはここでは論じない。
  639: 
  640: @cindex Texinfo file handling example
  641: @cindex Example, handling Texinfo files
  642: 
  643: @file{doc/Makefile.am}ではこのようだ。
  644: 
  645: @example
  646: info_TEXINFOS = hello.texi
  647: hello_TEXINFOS = gpl.texi
  648: @end example
  649: 
  650: これはGNU Helloマニュアルを構築し、インストールし、配布するのに十分である。
  651: 
  652: @cindex Regression test example
  653: @cindex Example, regression test
  654: 
  655: ここに@file{tests/Makefile.am}を示す。
  656: 
  657: @example
  658: TESTS = hello
  659: EXTRA_DIST = hello.in testdata
  660: @end example
  661: 
  662: スクリプト@file{hello}は@code{configure}に生成され、唯一のテスト問題であ
  663: る。@code{make check}はこのテストを走らせるだろう。
  664: 
  665: @cindex INCLUDES, example usage
  666: 
  667: 最後は@file{src/Makefile.am}で、そこで本来の作業の全てが行われる。
  668: 
  669: @example
  670: bin_PROGRAMS = hello
  671: hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h 
  672: hello_LDADD = @@INTLLIBS@@ @@ALLOCA@@
  673: localedir = $(datadir)/locale
  674: INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\"
  675: @end example
  676: 
  677: 
  678: @node etags,  , Hello, Examples
  679: @section etagsとctagsの構築
  680: 
  681: @cindex Example, ctags and etags
  682: @cindex ctags Example
  683: @cindex etags Example
  684: 
  685: ここで別の、もっと巧妙な例を見せる。同じソース・ファイル(@file{etags.c})
  686: から二つのプログラム(@code{ctags}と@code{etags})を生成する方法を示す。難
  687: しい部分は@file{etags.c}のそれぞれのコンパイルに異なる@code{cpp}フラグを
  688: 必要とすることである。
  689: 
  690: @example
  691: bin_PROGRAMS = etags ctags
  692: ctags_SOURCES =
  693: ctags_LDADD = ctags.o
  694: 
  695: etags.o: etags.c
  696:         $(COMPILE) -DETAGS_REGEXPS -c etags.c
  697: 
  698: ctags.o: etags.c
  699:         $(COMPILE) -DCTAGS -o ctags.o -c etags.c
  700: @end example
  701: 
  702: @code{ctags_SOURCES}が空であると定義されていることに注意せよ---こうして
  703: 暗黙の値が代用されることはない。しかしながら、暗黙の値は@file{etags.o}か
  704: ら@code{etags}を生成するために使われている。
  705: 
  706: @code{ctags_LDADD}は@file{ctags.o}をリンク行に入れるために使われる。
  707: @code{ctags_DEPENDENCIES}はAutomakeによって生成される。
  708: 
  709: 上記の規則はあなたのコンパイラが@samp{-c}と@samp{-o}を同時に受け取らない
  710: なら上手く行かない。このための最も簡単な処置は(並列@code{make}での問題を
  711: 避けるために)にせものの依存関係を導入することである。
  712: 
  713: @example
  714: etags.o: etags.c ctags.o
  715:         $(COMPILE) -DETAGS_REGEXPS -c etags.c
  716: 
  717: ctags.o: etags.c
  718:         $(COMPILE) -DCTAGS -c etags.c && mv etags.o ctags.o
  719: @end example
  720: 
  721: また、これらの明示的な規則はもし非ANSIの特徴が使われていると上手く行かな
  722: い(@pxref{ANSI})。非ANSIをサポートするにはもう少しの作業が必要だ。
  723: 
  724: @example
  725: etags._o: etags._c ctags.o
  726:         $(COMPILE) -DETAGS_REGEXPS -c etags.c
  727: 
  728: ctags._o: etags._c
  729:         $(COMPILE) -DCTAGS -c etags.c && mv etags._o ctags.o
  730: @end example
  731: 
  732: 
  733: @node Invoking Automake, configure, Examples, Top
  734: @chapter @file{Makefile.in}の作成
  735: 
  736: @cindex Multiple configure.in files
  737: @cindex Invoking Automake
  738: @cindex Automake, invoking
  739: 
  740: あるパッケージの@file{Makefile.in}を全て作成するために、一番上層のディレ
  741: クトリで引数を付けずに@code{automake}プログラムを走らせる。
  742: @code{automake}は(@file{configure.in}を検査することで、
  743: @pxref{configure})自動的にそれぞれの適切な@file{Makefile.am}を見付け、対
  744: 応する@file{Makefile.in}を生成するだろう。@code{automake}はパッケージを
  745: 構成するものに関してやや単純化し過ぎた見方をすることに注意せよ。パッケー
  746: ジは最上位にたった一つの@file{configure.in}を持つとみなす。もしあなたの
  747: パッケージが複数の@file{configure.in}を持っているなら、
  748: @file{configure.in}を持つ各ディレクトリ毎に@code{automake}を走らせなけれ
  749: ばならない。
  750: 
  751: @code{automake}に引数を与えても構わない。@file{.am}がその引数に付け加え
  752: られ、その結果が入力ファイルの名前として使用される。この特徴は一般的に古
  753: くなっている@file{Makefile.in}を自動的に再構築するためにのみ使われる。あ
  754: るサブディレクトリの@file{Makefile.in}を再生成するために使われる場合でさ
  755: え、@code{automake}は常にプロジェクトの最高位のディレクトリから走らされ
  756: なければならないことに注意せよ。@code{automake}は@file{configure.in}を検
  757: 査しなければならないし、@code{automake}はある場合にはその振る舞いを変更
  758: するために@file{Makefile.in}はサブディレクトリにあるという情報を利用する
  759: ので、これは必要である。
  760: 
  761: @cindex Automake options
  762: @cindex Options, Automake
  763: 
  764: @code{automake}は以下のオプションを受け取る。
  765: 
  766: @cindex Extra files distributed with Automake
  767: @cindex Files distributed with Automake
  768: @cindex config.guess
  769: 
  770: @table @samp
  771: @item -a
  772: @itemx --add-missing
  773: @opindex -a
  774: @opindex --add-missing
  775: Automakeは特定の状況では特定の共通ファイルが存在することを必要とする。例
  776: えば、@file{configure.in}が@code{AC_CANONICAL_HOST}を走らせるなら
  777: @file{config.guess}が必要である。Automakeはこれらのファイルのいくつかと
  778: 共に配布されている。このオプションは可能ならいつでも、見付からないものを
  779: パッケージに自動的に追加させる。概してAutomakeがあるファイルが欠けている
  780: とあなたに教えたら、このオプションの使用を試みなさい。
  781: デフォルトではAutomakeは欠けているファイルを指すシンボリックリンクを作ろ
  782: うとする。これは@code{--copy}を(オプションに)加えることで変更できる。
  783: 
  784: @item --amdir=@var{dir}
  785: @opindex --amdir
  786: Automakeのデータ・ファイルをインストールされたディレクトリではなく
  787: ディレクトリ@var{dir}で探す。これは典型的にはデバッグのために使われる。
  788: 
  789: @item --build-dir=@var{dir}
  790: @opindex --build-dir
  791: Automakeにどこに構築ディレクトリがあるか知らせる。このオプションは
  792: @code{make dist}によって生成された@file{Makefile.in}に依存関係を含めると
  793: きに使われる。そうでなければ使われるべきでない。
  794: 
  795: @item -c
  796: @item --copy
  797: @code{--add-missing}を使ったとき、(ソースディレクトリに)備えられる
  798: ファイルをコピーする。デフォルトではシンボリックリンクを作ることで行う。
  799: 
  800: @item --cygnus
  801: @opindex --cygnus
  802: 生成される@file{Makefile.in}が、GNUやGnits規則ではなく、Cygnus規則に従う
  803: ようにする。より多くの情報のためには@ref{Cygnus}を見よ。
  804: 
  805: @item --foreign
  806: @opindex --foreign
  807: 広域的なstrictnessを@samp{foreign}に設定する。より多くの情報のためには@ref{Strictness}を見よ。
  808: 
  809: @item --gnits
  810: @opindex --gnits
  811: 広域的なstrictnessを@samp{gnits}に設定する。より多くの情報のためには@ref{Gnits}を見よ。
  812: 
  813: @item --gnu
  814: @opindex --gnu
  815: 広域的なstrictnessを@samp{gnu}に設定する。より多くの情報のためには@ref{Gnits}を見よ。これがデフォルトのstrictnessである。
  816: 
  817: @item --help
  818: @opindex --help
  819: コマンドラインのオプションのまとめを出力して終了する。
  820: 
  821: @item -i
  822: @itemx --include-deps
  823: @opindex -i
  824: @opindex --include-deps
  825: 生成された@file{Makefile.in}に自動的に生成された依存情報
  826: (@pxref{Dependencies})の全てを含める。これは一般的に配布物を作るときに行
  827: われる。@ref{Dist}を見よ。
  828: 
  829: @item --generate-deps
  830: @opindex --generate-deps
  831: 自動的に生成された依存情報(@pxref{Dependencies})の全てを一つのファイル、
  832: @file{.dep_segment}に連結するファイルを生成する。これは一般に配布物を作
  833: るときに行われる。@ref{Dist}を見よ。それは@file{SMakefile}や他のプラット
  834: ホームのmakefile(@file{Makefile.DOS}など)を管理するときに有用である。
  835: @samp{--include-deps}、@samp{--srcdir-name}、@samp{--build-dir}と組み合
  836: わせてだけ使うことができる。このオプションが与えられれば、他の処理は一切
  837: 行われないことに注意せよ。
  838: 
  839: @item --no-force
  840: @opindex --no-force
  841: 通常@code{automake}は@file{configure.in}で記述される@file{Makefile.in}を
  842: 全て作成する。このオプションは依存関係の一つに関して古くなっているような
  843: @file{Makefile.in}だけを更新させる。
  844: 
  845: @item -o @var{dir}
  846: @itemx --output-dir=@var{dir}
  847: @opindex -o
  848: @opindex --output-dir
  849: 生成された@file{Makefile.in}をディレクトリ@var{dir}に置く。通常それぞれ
  850: の@file{Makefile.in}は対応する@file{Makefile.am}のディレクトリに作成され
  851: る。このオプションは配布物を作るときに使われる。
  852: 
  853: @item --srcdir-name=@var{dir}
  854: @opindex --srcdir-name
  855: Automakeに現在の構築に関連するソース・ディレクトリの名前を教える。このオ
  856: プションは@code{make dist}によって生成された@file{Makefile.in}に依存関係
  857: を含めるときに使われる。さもなければ使われるべきでない。
  858: 
  859: @item -v
  860: @itemx --verbose
  861: @opindex -v
  862: @opindex --verbose
  863: Automakeにどのファイルが読まれており、作成されているのか、情報を出力させ
  864: る。
  865: 
  866: @item --version
  867: @opindex --version
  868: Automakeのバージョン・ナンバーを出力し終了する。
  869: @end table
  870: 
  871: 
  872: @node configure, Top level, Invoking Automake, Top
  873: @chapter @file{configure.in}の検査
  874: 
  875: @cindex configure.in, scanning
  876: @cindex Scanning configure.in
  877: 
  878: Automakeはパッケージに関するある情報を決定するために、そのパッケージの
  879: @file{configure.in}を検査する。@file{configure.in}には、いくつかの
  880: @code{autoconf}マクロが必要とされ、いくつかの変数が定義されていなければ
  881: ならない。Automakeはまたその出力を将来調整するために@file{configure.in}
  882: からの情報を使用するだろう。
  883: 
  884: Automakeはまた管理を容易にするためにいくつかのAutoconfマクロを与
  885: える。これらのマクロは@code{aclocal}プログラムを使って、あなたの
  886: @file{aclocal.m4}に自動的に配置することができる。
  887: 
  888: @menu
  889: * Requirements::                設定の必要なもの
  890: * Optional::                    Automakeが認識する他のもの
  891: * Invoking aclocal::            aclocal.m4の自動生成
  892: * Macros::                      Automakeと共に与えられるAutoconfのマクロ
  893: * Extending aclocal::           あなた自身のaclocalマクロの記述
  894: @end menu
  895: 
  896: 
  897: @node Requirements, Optional, configure, configure
  898: @section 設定の必要なもの
  899: 
  900: @cindex Automake requirements
  901: @cindex Requirements of Automake
  902: 
  903: Automakeに必要な基本的なものを満たす最も簡単な方法はマクロ
  904: @code{AM_INIT_AUTOMAKE}(@pxref{Macros})を使うことだ。しかし好むなら、手
  905: で必要な処置を行うことができる。
  906: @cvindex AM_INIT_AUTOMAKE
  907: 
  908: @itemize @bullet
  909: @item
  910: 変数@code{PACKAGE}と@code{VERSION}を@code{AC_SUBST}で定義しなさい。
  911: @cvindex PACKAGE
  912: @cvindex VERSION
  913: @code{PACKAGE}は配布物にまとめられるときに現れるような、パッケージの名前
  914: であるべきだ。例えば、Automakeは@code{PACKAGE}を@samp{automake}であると
  915: 定義している。@code{VERSION}は開発されているそのリリースのバージョン・ナ
  916: ンバーであるべきだ。@file{configure.in}をあなたのパッケージでバージョン・
  917: ナンバーが定義される唯一の場所とすることを勧める。こうすればもっとリリー
  918: スが簡単になる。
  919: 
  920: Automakeは@samp{Gnits}モード(@pxref{Gnits})以外では、@code{PACKAGE}や
  921: @code{VERSION}の解釈を何も行わない。
  922: 
  923: @item
  924: もしプログラムやスクリプトがインストールされるなら、マクロ
  925: @code{AC_ARG_PROGRAM}を使いなさい。
  926: @xref{Transforming Names, , Transforming Program Names When Installing,
  927: autoconf, The Autoconf}.
  928: @cvindex AC_ARG_PROGRAM
  929: 
  930: @item
  931: もしそのパッケージがflatでないなら、@code{AC_PROG_MAKE_SET}を使いなさい。
  932: @xref{Output, ,
  933: Creating Output Files, autoconf, The Autoconf Manual}.
  934: @cvindex AC_PROG_MAKE_SET
  935: 
  936: @item
  937: 構築環境が健全であることを確かにするために@code{AM_SANITY_CHECK}を使いな
  938: さい。
  939: 
  940: @item
  941: @code{AC_PROG_INSTALL}を呼びなさい。
  942: (@pxref{Particular Programs, , Particular Program Checks, autoconf, The
  943: Autoconf Manual}).
  944: @cvindex AC_PROG_INSTALL
  945: 
  946: @item
  947: プログラム @code{aclocal}、@code{autoconf}、@code{automake}、
  948: @code{autoheader}、@code{makeinfo}が構築環境にあるかどうかを調べるのに
  949: @code{AM_MISSING_PROG}を使いなさい。ここでこれがどう行われるかを示す。
  950: @example
  951: missing_dir=`cd $ac_aux_dir && pwd`
  952: AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
  953: AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
  954: AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
  955: AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
  956: AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
  957: @end example
  958: @end itemize
  959: 
  960: 
  961: Automakeが必要とするが@code{AM_INIT_AUTOMAKE}によって走らされない他のマ
  962: クロはこのようである。
  963: 
  964: @cindex AC_OUTPUT, scanning
  965: 
  966: @table @code
  967: @item AC_OUTPUT
  968: Automakeはこれをどのファイルが作成されるのかを決定するのに使用する
  969: (@pxref{Output, ,Creating Output Files, autoconf, The Autoconf Manual})。
  970: @code{Makefile}と名付けられた、列挙されたファイルは@file{Makefile}である
  971: として扱われる。他の列挙されたファイルは異なる扱いを受ける。現在唯一の違
  972: いは@file{Makefile}は@code{make distclean}によって削除されるが、他のファ
  973: イルは@code{make clean}によって削除されることである。
  974: @c FIXME: this is in violation of standards!
  975: @cvindex AC_OUTPUT
  976: @end table
  977: 
  978: 
  979: @node Optional, Invoking aclocal, Requirements, configure
  980: @section Automakeが認識する他のもの
  981: 
  982: @cindex Macros Automake recognizes
  983: @cindex Recognized macros by Automake
  984: 
  985: Automakeはまた特定のマクロの使用を認識し、生成された@file{Makefile.in}を
  986: 適切に調整する。現在認識されるマクロとそれらの効果はこのようである。
  987: 
  988: @table @code
  989: @item AC_CONFIG_HEADER
  990: Automakeは@code{AM_CONFIG_HEADER}の使用を必要とするが、それは
  991: @code{AC_CONFIG_HEADER}(@pxref{Configuration Headers, ,
  992: Configuration Header Files, autoconf, The Autoconf Manual})
  993: に似ているが、Automake特異的な有用な作業を行う。
  994: @cvindex AC_CONFIG_HEADER
  995: 
  996: @item AC_CONFIG_AUX_DIR
  997: Automakeは@file{mkinstalldirs}のような、さまざまな援助スクリプトをこのマ
  998: クロの起動で名付けられたディレクトリで探す。もし見付からないと、スクリプ
  999: トはそれらの@samp{標準的な}場所(一番上のソース・ディレクトリか、現在の
 1000: @file{Makefile.am}に対応するソース・ディレクトリで、適切であればどちらで
 1001: も)で探される。@xref{Input, , Finding `configure' Input, autoconf, The
 1002: Autoconf Manual}.
 1003: @cvindex AC_CONFIG_AUX_DIR
 1004: @c FIXME: give complete list of things looked for in this directory
 1005: 
 1006: @item AC_PATH_XTRA
 1007: Automakeは@code{AC_PATH_XTRA}によって定義される変数のための定義を、Cプロ
 1008: グラムやライブラリを構築する@file{Makefile.in}のそれぞれに挿入する。
 1009: @xref{System Services, , System Services, autoconf, The
 1010: Autoconf Manual}.
 1011: @cvindex AC_PATH_XTRA
 1012: 
 1013: @item AC_CANONICAL_HOST
 1014: @itemx AC_CHECK_TOOL
 1015: Automakeは@file{config.guess}と@file{config.sub}が存在することを保証する
 1016: だろう。また、@file{Makefile}変数の@samp{host_alias}と
 1017: @samp{host_triplet}が導入される。@ref{Canonicalizing, ,
 1018: Getting the Canonical System Type, autoconf, The Autoconf Manual}, と
 1019: @ref{Generic Programs, , Generic Program Checks, autoconf, The Autoconf
 1020: Manual} の両方を見なさい。
 1021: @c fixme xref autoconf docs.
 1022: @cvindex AC_CANONICAL_HOST
 1023: @cvindex AC_CHECK_TOOL
 1024: @vindex host_alias
 1025: @vindex host_triplet
 1026: 
 1027: @item AC_CANONICAL_SYSTEM
 1028: これは@code{AC_CANONICAL_HOST}に似ているが、@file{Makefile}変数の
 1029: @samp{build_alias}と@samp{target_alias}も定義する。
 1030: @xref{Canonicalizing, , Getting the Canonical System Type, autoconf, The
 1031: Autoconf Manual}.
 1032: @cvindex AC_CANONICAL_SYSTEM
 1033: @vindex build_alias
 1034: @vindex target_alias
 1035: 
 1036: @item AC_FUNC_ALLOCA
 1037: @itemx AC_FUNC_GETLOADAVG
 1038: @itemx AC_FUNC_MEMCMP
 1039: @itemx AC_STRUCT_ST_BLOCKS
 1040: @itemx AC_FUNC_FNMATCH
 1041: @itemx AM_FUNC_STRTOD
 1042: @itemx AC_REPLACE_FUNCS
 1043: @itemx AC_REPLACE_GNU_GETOPT
 1044: @itemx AM_WITH_REGEX
 1045: Automakeは適切な依存関係がこれらのマクロに対応するオブジェクトに対して生
 1046: 成されることを保証するだろう。また、Automakeは適切なソース・ファイルが配
 1047: 布物に含まれていることを確認するだろう。Automakeはこれらのマクロを使用す
 1048: るために必要とされる、いかなるCソースとも配られていないので、
 1049: @code{automake -a}はそのソースをインストールしようとしないことに注意せよ。
 1050: @xref{A Library}にもっと情報がある。@ref{Particular
 1051: Functions, , Particular Function Checks, autoconf, The Autoconf Manual}
 1052: も見なさい。
 1053: @cvindex AC_FUNC_ALLOCA
 1054: @cvindex AC_FUNC_GETLOADAVG
 1055: @cvindex AC_FUNC_MEMCMP
 1056: @cvindex AC_STRUCT_ST_BLOCKS
 1057: @cvindex AC_FUNC_FNMATCH
 1058: @cvindex AC_FUNC_FNMATCH
 1059: @cvindex AC_REPLACE_FUNCS
 1060: @cvindex AC_REPLACE_GNU_GETOPT
 1061: @cvindex AM_FUNC_STRTOD
 1062: @cvindex AM_WITH_REGEX
 1063: 
 1064: @item LIBOBJS
 1065: Automakeは@file{.o}ファイルを@code{LIBOBJS}に置く式を検出し、これらの追
 1066: 加ファイルが@code{AC_REPLACE_FUNCS}によって見付けられたかのように扱うだ
 1067: ろう。@xref{Generic Functions, ,
 1068: Generic Function Checks, autoconf, The Autoconf Manual}.
 1069: @cvindex LIBOBJS
 1070: 
 1071: @item AC_PROG_RANLIB
 1072: これはもしそのパッケージでライブラリが構築されるなら必要である。
 1073: @xref{Particular Programs, , Particular Program Checks, autoconf, The
 1074: Autoconf Manual}.
 1075: @cvindex AC_PROG_RANLIB
 1076: 
 1077: @item AC_PROG_CXX
 1078: これはC++のソースが含まれているなら必要である。@xref{Particular
 1079: Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
 1080: @cvindex AC_PROG_CXX
 1081: 
 1082: @item AC_PROG_F77
 1083: これはFortran77ソースが含まれているなら必要である。このマクロはAutoconf
 1084: のバージョン2.13以降に配布される。@xref{Particular Programs, ,
 1085: Particular Program Checks, autoconf, The Autoconf Manual}.
 1086: @cvindex AC_PROG_F77
 1087: 
 1088: @item AC_F77_LIBRARY_LDFLAGS
 1089: これはFortran77を含む言語が混在するプログラムと共有ライブラリのために必
 1090: 要である(@pxref{Mixing Fortran 77 With C and C++})。@xref{Macros, ,
 1091: Autoconf macros supplied with Automake}.
 1092: @cvindex AC_F77_LIBRARY_LDFLAGS
 1093: 
 1094: @item AM_PROG_LIBTOOL
 1095: Automakeは@code{libtool}(@pxref{Top, , Introduction, libtool, The
 1096: Libtool Manual})を処理するようになるだろう。
 1097: @cvindex AM_PROG_LIBTOOL
 1098: 
 1099: @item AC_PROG_YACC
 1100: もしYaccのソース・ファイルが現れるなら、このマクロを使うか、
 1101: @file{configure.in}で変数@samp{YACC}を定義してなければならない。前者がよ
 1102: り好ましい。(@pxref{Particular Programs, , Particular Program Checks,
 1103: autoconf, The Autoconf Manual}).
 1104: @cvindex AC_PROG_YACC
 1105: @cvindex YACC
 1106: 
 1107: @item AC_DECL_YYTEXT
 1108: このマクロはもしそのパッケージにLexのソースがあるなら必要である。
 1109: @xref{Particular Programs, , Particular Program Checks, autoconf, The
 1110: Autoconf Manual}.
 1111: @cvindex AC_DECL_YYTEXT
 1112: 
 1113: @item AC_PROG_LEX
 1114: もしLexのソース・ファイルが現れるなら、このマクロが使われなければならない。
 1115: @xref{Particular Programs, , Particular Program Checks, autoconf, The
 1116: Autoconf Manual}.
 1117: @cvindex AC_PROG_LEX
 1118: 
 1119: @item ALL_LINGUAS
 1120: もしAutomakeがこの変数が@file{configure.in}で設定されていることを確認す
 1121: ると、名付けられた@samp{.po}ファイルが全て存在し、存在する@samp{.po}ファ
 1122: イルが全て名付けられていることを保証するために、@file{po}ディレクトリを
 1123: 点検するだろう。
 1124: @cvindex ALL_LINGUAS
 1125: 
 1126: @item AM_C_PROTOTYPES
 1127: これは自動的な脱ANSI化を使うとき必要である。@ref{ANSI}を見なさい。
 1128: @cvindex AM_C_PROTOTYPES
 1129: 
 1130: @item AM_GNU_GETTEXT
 1131: このマクロはGNU gettext(@pxref{gettext})を使うパッケージに必要とされる。
 1132: それはgettextと配布されている。もしAutomakeがこのマクロを見付けると、
 1133: パッケージがgettextに必要なものの一部を満たすことを保証する。
 1134: @cvindex AM_GNU_GETTEXT
 1135: 
 1136: @item AM_MAINTAINER_MODE
 1137: @opindex --enable-maintainer-mode
 1138: このマクロは@code{configure}に@samp{--enable-maintainer-mode}オプション
 1139: を加える。これが使われれば、@code{automake}は生成される
 1140: @file{Makefile.in}でデフォルトでは@samp{管理者専用}規則を無効にするだろう。
 1141: このマクロは@samp{Gnits}モード(@pxref{Gnits})では禁止されている。
 1142: このマクロは@file{Makefile.am}で使うことのできる@samp{MAINTAINER_MODE}
 1143: 条件を定義する。
 1144: @cvindex AM_MAINTAINER_MODE
 1145: 
 1146: @item AC_SUBST
 1147: @itemx AC_CHECK_TOOL
 1148: @itemx AC_CHECK_PROG
 1149: @itemx AC_CHECK_PROGS
 1150: @itemx AC_PATH_PROG
 1151: @itemx AC_PATH_PROGS
 1152: これらのマクロのそれぞれに対し、最初の引数が自動的に生成される
 1153: @file{Makefile.in}のそれぞれで変数として定義される。
 1154: @xref{Setting Output
 1155: Variables, , Setting Output Variables, autoconf, The Autoconf Manual},
 1156: and @ref{Generic Programs, , Generic Program Checks, autoconf, The
 1157: Autoconf Manual}.
 1158: @cvindex AC_SUBST
 1159: @cvindex AC_CHECK_TOOL
 1160: @cvindex AC_CHECK_PROG
 1161: @cvindex AC_CHECK_PROGS
 1162: @cvindex AC_PATH_PROG
 1163: @cvindex AC_PATH_PROGS
 1164: 
 1165: @end table
 1166: 
 1167: 
 1168: @node Invoking aclocal, Macros, Optional, configure
 1169: @section aclocal.m4の自動生成
 1170: 
 1171: @cindex Invoking aclocal
 1172: @cindex aclocal, Invoking
 1173: 
 1174: Automakeはあなたのパッケージで使用可能なたくさんのAutoconfマクロを含んで
 1175: いる。それらの一部は特定の状況で実際にAutomakeによって必要とされる。これ
 1176: らのマクロはあなたの@file{aclocal.m4}で定義されていなければならない。そ
 1177: うでないと@code{autoconf}がそれらを発見できない。
 1178: 
 1179: @code{aclocal}プログラムは@file{configure.in}の中身に基いて自動的に
 1180: @file{aclocal.m4}ファイルを生成する。これによって、探し回らずにAutomake
 1181: が提供するマクロを簡便に得ることができる。また、@code{aclocal}の機構は他
 1182: のパッケージの利用に拡張可能である。
 1183: 
 1184: 開始時に、@code{aclocal}は見付けられる全ての@file{.m4}ファイルを検査し、
 1185: マクロ定義を探す。そして@file{configure.in}を検査する。最初の段階に見付
 1186: けたマクロの一つについて何らかの記述があれば、このマクロとそれがさらに必
 1187: 要とするどのマクロも@file{aclocal.m4}に置かれる。
 1188: 
 1189: もしあれば、@file{acinclude.m4}の中身も@file{aclocal.m4}に自動的に入れら
 1190: れる。これはローカルなマクロを@file{configure}に組み入れるのに便利である。
 1191: 
 1192: @code{aclocal}は以下のオプションを受け取る。
 1193: 
 1194: @table @code
 1195: @item --acdir=@var{dir}
 1196: @opindex --acdir
 1197: マクロ・ファイルをインストールされたディレクトリではなく@var{dir}で探す。
 1198: これは典型的にはデバッグのために使われる。
 1199: 
 1200: @item --help
 1201: @opindex --help
 1202: コマンドラインのオプションのまとめを出力し終了する。
 1203: 
 1204: @item -I @var{dir}
 1205: @opindex -I
 1206: @file{.m4}ファイルを探すディレクトリのリストにディレクトリ@var{dir}を加
 1207: える。
 1208: 
 1209: @item --output=@var{file}
 1210: @opindex --output
 1211: 出力を@file{aclocal.m4}ではなく@var{file}に置かせる。
 1212: 
 1213: @item --print-ac-dir
 1214: @opindex --print-ac-dir
 1215: @code{aclocal}が@file{.m4}ファイルを見付けるために検索するディレクトリの
 1216: 名前を出力する。このオプションが与えられると、通常の処理は抑制される。こ
 1217: のオプションはマクロ・ファイルをどこにインストールするかを決めるために、
 1218: パッケージによって使用されてもよい。
 1219: 
 1220: @item --verbose
 1221: @opindex --verbose
 1222: 調べるファイルの名前を出力する。
 1223: 
 1224: @item --version
 1225: @opindex --version
 1226: Automakeのバージョン・ナンバーを出力し終了する。
 1227: @end table
 1228: 
 1229: 
 1230: @node Macros, Extending aclocal, Invoking aclocal, configure
 1231: @section Automakeと共に与えられるAutoconfのマクロ
 1232: 
 1233: @c consider generating this node automatically from m4 files.
 1234: 
 1235: @table @code
 1236: @item AM_CONFIG_HEADER
 1237: Automakeは設定ヘッダを自動的に再生成するための規則を生成するだろう。もし
 1238: このマクロを使うなら、あなたのソース・ディレクトリにファイル
 1239: @file{stamp-h.in}を作成しなければならない。それは空で良い。
 1240: @cvindex AM_CONFIG_HEADER
 1241: 
 1242: @item AM_ENABLE_MULTILIB
 1243: これは、``multilib'' ライブラリが構築されるときに使用される。
 1244: @dfn{multilib}ライブラリは複数回、ターゲットフラグの組合せ毎に1回、構築される
 1245: ものである。これはライブラリがクロスコンパイルされると意図されたときにだけ
 1246: 役に立つ。省略可能な最初の引数は生成される@file{Makefile}の名前である。
 1247: それは@samp{Makefile}をデフォルトとする。省略可能な2番目の引数は最上位の
 1248: ソースディレクトリを探すのに使われる。それは空の文字列をデフォルトとする。
 1249: (概して、これは内部(訳注:automakeの内部?)を良く知っていることなしに使わ
 1250: れるべきではない)
 1251: 
 1252: @item AM_FUNC_STRTOD
 1253: もし@code{strtod}関数が利用できないか、(SunOS 5.4のもののように)上手く働
 1254: かないなら、@file{strtod.o}を出力変数@code{LIBOBJS}に加える。
 1255: @cvindex AM_FUNC_STRTOD
 1256: 
 1257: @item AM_FUNC_ERROR_AT_LINE
 1258: もし関数@code{error_at_line}が見付からなければ、@file{error.o}を
 1259: @code{LIBOBJS}に加える。
 1260: @cvindex AM_FUNC_ERROR_AT_LINE
 1261: 
 1262: @item AM_FUNC_MKTIME
 1263: 実用的な@code{mktime}関数を点検する。もし見付からなければ、
 1264: @file{mktime.o}を@samp{LIBOBJS}に加える。
 1265: @cvindex AM_FUNC_MKTIME
 1266: 
 1267: @item AM_FUNC_OBSTACK
 1268: GNU obstackのコードを点検する。もし見付からなければ、@file{obstack.o}を
 1269: @samp{LIBOBJS}に加える。
 1270: @cvindex AM_FUNC_OBSTACK
 1271: 
 1272: @item AM_C_PROTOTYPES
 1273: 関数プロトタイプがコンパイラによって理解されるかどうかを調べるために点検
 1274: する。もしそうなら、@samp{PROTOTYPES}を定義し、出力変数@samp{U}と
 1275: @samp{ANSI2KNR}を空文字列に設定する。そうでなければ、@samp{U}を@samp{_}
 1276: に設定し、@samp{ANSI2KNR}を@samp{./ansi2knr}に設定する。Automakeは自動的
 1277: な脱ANSI化を実装するためにこれらの値を使用する。
 1278: @cvindex AM_C_PROTOTYPES
 1279: 
 1280: @item AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
 1281: もし@code{TIOCGWINSZ}の使用に@file{<sys/ioctl.h>}が必要なら、
 1282: @code{GWINSZ_IN_SYS_IOCTL}を定義する。そうでなければ、@code{TIOCGWINSZ}
 1283: は@file{<termios.h>}で見付かる。
 1284: @cvindex AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
 1285: 
 1286: @item AM_INIT_AUTOMAKE
 1287: ほとんどの@file{configure.in}が必要とする多くのマクロを走らせる。このマ
 1288: クロは二つの必要な引数、パッケージとバージョン・ナンバーを持つ。デフォル
 1289: トでこのマクロは@samp{PACKAGE}と@samp{VERSION}を@code{AC_DEFINE}する。こ
 1290: れは空でない三番目の引数を渡すことで避けられる。
 1291: 
 1292: @item AM_PATH_LISPDIR
 1293: プログラム@code{emacs}を検索し、もしあれば、出力変数@code{lispdir}を
 1294: Emacsのsite-lispディレクトリへの完全なパスに設定する。
 1295: @cvindex AM_PATH_LISPDIR
 1296: 
 1297: @item AM_PROG_CC_STDC
 1298: もしCコンパイラがデフォルトでANSI Cモードでないなら、そうするように出力
 1299: 変数@code{CC}にオプションを付けようとする。このマクロはあるシステムで
 1300: ANSI Cを選択し、他ではそうでない、さまざまなオプションを試す。関数プロト
 1301: タイプを正しく処理すれば、そのコンパイラがANSI Cモードであると考える。
 1302: 
 1303: もしこのマクロを使うなら、それを呼んだ後にCコンパイラがANSI Cを受け入れ
 1304: ると設定されているかどうか点検すべきだ。もし駄目なら、シェル変数
 1305: @code{am_cv_prog_cc_stdc}は@samp{no}に設定される。もしあなたのソース・コー
 1306: ドをANSI Cで書いたなら、@code{ansi2knr}オプション(@pxref{ANSI})を使ってそ
 1307: れの脱ANSI化されたコピーを作ることができる。
 1308: 
 1309: @item AM_PROG_LEX
 1310: @cindex HP-UX 10, lex problems
 1311: @cindex lex problems with HP-UX 10
 1312: @code{AC_DECL_YYTEXT}(@pxref{Particular Programs, , Particular Program Checks, autoconf, The Autoconf Manual})
 1313: 付きの@code{AC_PROG_LEX}に似ているが、@code{lex}を持たない
 1314: システムで@code{missing}スクリプトを使用する。@samp{HP-UX 10}はそのよう
 1315: なシステムの一つだ。
 1316: 
 1317: @item AM_SANITY_CHECK
 1318: これは構築ディレクトリで作られたファイルがソース・ディレクトリのファイル
 1319: より新しいことを確認するために点検する。これはクロックが間違えて設定され
 1320: ているシステムで失敗し得る。このマクロは@code{AM_INIT_AUTOMAKE}から自動
 1321: 的に走らされる。
 1322: 
 1323: @item AM_SYS_POSIX_TERMIOS
 1324: @cvindex am_cv_sys_posix_termios
 1325: @cindex POSIX termios headers
 1326: @cindex termios POSIX headers
 1327: POSIX termiosヘッダや関数がそのシステムで利用できるかどうかを調べるため
 1328: に点検する。もしそうなら、シェル変数@code{am_cv_sys_posix_termios}を
 1329: @samp{yes}に設定する。そうでないなら、その変数を@samp{no}に設定する。
 1330: 
 1331: @item AM_TYPE_PTRDIFF_T
 1332: @cvindex HAVE_PTRDIFF_T
 1333: @vindex ptrdiff_t
 1334: 型@samp{ptrdiff_t}が@file{<stddef.h>}で定義されていれば
 1335: @samp{HAVE_PTRDIFF_T}を定義する。
 1336: 
 1337: @item AM_WITH_DMALLOC
 1338: @cvindex WITH_DMALLOC
 1339: @cindex dmalloc, support for
 1340: @opindex --with-dmalloc
 1341: @uref{ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz, dmalloc}
 1342: パッケージのサポートを加える。もしそのユーザが
 1343: @samp{--with-dmalloc}付きで設定すれば、@code{WITH_DMALLOC}を定義し、
 1344: @code{LIBS}に@samp{-ldmalloc}を追加する。
 1345: 
 1346: @item AM_WITH_REGEX
 1347: @cvindex WITH_REGEX
 1348: @opindex --with-regex
 1349: @cindex regex package
 1350: @cindex rx package
 1351: @code{configure}コマンドラインに@samp{--with-regex}を加える。もし指定さ
 1352: れれば(デフォルト)、@samp{regex}正規表現ライブラリが使われ、
 1353: @file{regex.o}が@samp{LIBOBJS}に入れられ、@samp{WITH_REGEX}が定義される。
 1354: もし@samp{--without-regex}が与えられれば、@samp{rx}正規表現ライブラリが
 1355: 使われ、@file{rx.o}が@samp{LIBOBJS}に入れられる。
 1356: 
 1357: @end table
 1358: 
 1359: 
 1360: @node Extending aclocal,  , Macros, configure
 1361: @section あなた自身のaclocalマクロの記述
 1362: 
 1363: @cindex aclocal, extending
 1364: @cindex Extending aclocal
 1365: 
 1366: @code{aclocal}プログラムはどのマクロに関しても組み込みの知識を持っていな
 1367: いので、あなた自身のマクロで拡張するのは簡単だ。
 1368: 
 1369: これは主に他のプログラムに使われる、自分自身のAutoconfマクロを与えたいラ
 1370: イブラリで使用される。例えば、@code{gettext}ライブラリは@code{gettext}を
 1371: 使用するパッケージによって使われるべきであるマクロ@code{AM_GNU_GETTEXT}
 1372: を与えている。そのライブラリがインストールされるとき、@code{aclocal}がそ
 1373: れを見付けられるようにこのマクロをインストールする。
 1374: 
 1375: マクロのファイルは一連の@code{AC_DEFUN}であるべきだ。@code{aclocal}プロ
 1376: グラムはまた@code{AC_REQUIRE}を理解するので、別々のファイルにそれぞれの
 1377: マクロを置いても大丈夫だ。@xref{Prerequisite Macros, , , autoconf, The
 1378: Autoconf Manual}, and @ref{Macro Definitions, , , autoconf, The Autoconf
 1379: Manual}.
 1380: 
 1381: マクロのファイル名は@file{.m4}で終端するべきだ。そのようなファイルは
 1382: @file{$(datadir)/aclocal}にインストールされるべきだ。
 1383: 
 1384: 
 1385: @node Top level, Programs, configure, Top
 1386: @chapter 一番上のMakefile.am
 1387: 
 1388: @cindex SUBDIRS, explained
 1389: 
 1390: flatでないパッケージでは、一番上の階層の@file{Makefile.am}はAutomakeにど
 1391: のサブディレクトリが構築される予定なのかを教えなければならない。これは
 1392: @code{SUBDIRS}変数を使って行われる。
 1393: @vindex SUBDIRS
 1394: 
 1395: @code{SUBDIRS}マクロはさまざまな種類の構築が起こるサブディレクトリのリス
 1396: トを保持する。生成された@file{Makefile}の多くのターゲット(例えば
 1397: @code{all})は局所的に、そして指定された全てのサブディレクトリとで走るだろう。
 1398: @code{SUBDIRS}で列挙されるディレクトリは@file{Makefile.am}を含む必要はな
 1399: いことに注意せよ。(設定の後に)@file{Makefile}だけが必要だ。これで
 1400: (@code{gettext}のような)Automakeを使わないパッケージからライブラリを含め
 1401: ることができる。@code{SUBDIRS}で記述されるディレクトリは現在のディレクト
 1402: リの直接の子供でなければならない。例えば、@samp{src/subdir}を
 1403: @code{SUBDIRS}に入れることはできない。
 1404: 
 1405: deepパッケージでは、一番上層の@file{Makefile.am}はよく非常に短い。例えば、
 1406: GNU Hello配布物の@file{Makefile.am}はこうである。
 1407: 
 1408: @example
 1409: EXTRA_DIST = BUGS ChangeLog.O README-alpha
 1410: SUBDIRS = doc intl po src tests
 1411: @end example
 1412: 
 1413: @cindex SUBDIRS, overriding
 1414: @cindex Overriding SUBDIRS
 1415: 
 1416: GNU @code{Inetutils}の場合のように、パッケージ全体の一部だけを構築したい
 1417: なら、@code{SUBDIRS}変数を上書きすることが可能だ。あなたの
 1418: @file{Makefile.am}では以下を含む。
 1419: 
 1420: @example
 1421: SUBDIRS = @@SUBDIRS@@
 1422: @end example
 1423: 
 1424: そしてあなたの@file{configure.in}でこう指定できる。
 1425: 
 1426: @example
 1427: SUBDIRS = "src doc lib po"
 1428: AC_SUBST(SUBDIRS)
 1429: @end example
 1430: 
 1431: これの要点は、Automakeはそのパッケージをそのサブディレクトリを持つように
 1432: 構築するとだまされるが、実際には@code{configure}が走らされるまでこのリス
 1433: トは固定されないということだ。
 1434: 
 1435: @code{SUBDIRS}マクロはconfigureの置き換え(例えば@samp{@@DIRS@@})を含むことがで
 1436: きるが、Automake自身は実際にはこの変数の中身を調べない。
 1437: 
 1438: もし@code{SUBDIRS}が定義されれば、あなたの@file{configure.in}は
 1439: @code{AC_PROG_MAKE_SET}を含まなければならない。
 1440: 
 1441: @code{SUBDIRS}の使用は一番上層の@file{Makefile.am}だけに制限されていない。
 1442: Automakeは任意の深さのパッケージを構成するように使用できる。
 1443: 
 1444: デフォルトでは、Automakeは深さ優先(訳注:depth-first)(@samp{postfix})で作
 1445: 業する@file{Makefile} を生成する。しかし、この順序を変更することは可能で
 1446: ある。あなたは@code{SUBDIRS} に@samp{.}を置くことによってこれを行うこと
 1447: ができる。例えば、最初に@samp{.}を置くことは、ディレクトリの
 1448: @samp{prefix}順序を引き起こすだろう。
 1449: 
 1450: @node Programs, Other objects, Top level, Top
 1451: @chapter プログラムやライブラリの構築
 1452: 
 1453: Automakeの機能の大部分はプログラムやライブラリを構築するのを容易にす
 1454: ることを目的にしている。
 1455: 
 1456: 
 1457: @menu
 1458: * A Program::                   プログラムの構築
 1459: * A Library::                   ライブラリの構築
 1460: * LIBOBJS::                     LIBOBJSとALLOCAの特殊処理
 1461: * A Shared Library::            Libtoolライブラリの構築
 1462: * Program variables::           プログラムを構築するときに使用される変数
 1463: * Yacc and Lex::                YaccとLexのサポート
 1464: * C++ Support::                 
 1465: * Fortran 77 Support::          
 1466: * Support for Other Languages::  
 1467: * ANSI::                        自動的な脱ANSI化
 1468: * Dependencies::                自動的な依存関係の追跡
 1469: @end menu
 1470: 
 1471: 
 1472: @node A Program, A Library, Programs, Programs
 1473: @section プログラムの構築
 1474: 
 1475: @cindex PROGRAMS, bindir
 1476: @vindex bin_PROGRAMS
 1477: @vindex sbin_PROGRAMS
 1478: @vindex libexec_PROGRAMS
 1479: @vindex pkglib_PROGRAMS
 1480: @vindex noinst_PROGRAMS
 1481: 
 1482: (ライブラリに対比して)プログラムに組み込まれるソースを含むディレクトリで
 1483: は、@samp{PROGRAMS}主要変数が使われる。プログラムは@code{bindir}、
 1484: @code{sbindir}、@code{libexecdir}、@code{pkglibdir}にインストールされる
 1485: か、全くインストールされない(@samp{noinst})。
 1486: 
 1487: 例えば、
 1488: 
 1489: @example
 1490: bin_PROGRAMS = hello
 1491: @end example
 1492: 
 1493: この単純な場合には、結果として生じる@file{Makefile.in}は@code{hello}と名
 1494: 付けられたプログラムを生成するコードを含むだろう。変数
 1495: @code{hello_SOURCES}はどのソース・ファイルが実行形式に組み込まれるかを指
 1496: 定するのに使われる。
 1497: 
 1498: @example
 1499: hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h 
 1500: @end example
 1501: 
 1502: これにより記述された@samp{.c}ファイルがそれぞれ対応する@samp{.o}にコンパ
 1503: イルされる。そして全て@file{hello}を生成するためにリンクされる。
 1504: 
 1505: @cindex _SOURCES primary, defined
 1506: @cindex SOURCES primary, defined
 1507: @cindex Primary variable, SOURCES
 1508: 
 1509: もし@samp{@var{prog}_SOURCES}が必要とされるが、指定されないなら、単一のファイ
 1510: ル@file{prog.c}がデフォルトになる。
 1511: @vindex _SOURCES
 1512: @vindex SOURCES
 1513: 
 1514: 複数のプログラムが単一ディレクトリで構築され得る。複数のプログラムは単一
 1515: のソース・ファイルを共有できる。ソース・ファイルはそれぞれの
 1516: @samp{_SOURCES}定義で列挙されねばならない。
 1517: 
 1518: @cindex Header files in _SOURCES
 1519: @cindex _SOURCES and header files
 1520: 
 1521: @samp{_SOURCES}定義で列挙されるヘッダ・ファイルは配布物に含まれるが、さ
 1522: もなければ無視されるだろう。それが明らかでない場合には、@samp{_SOURCES}
 1523: 変数に@file{configure}で生成されるヘッダ・ファイルを含むべきではない。こ
 1524: のファイルは配布されるべきではない。Lex(@samp{.l})やYacc(@samp{.y})ファ
 1525: イルもまた列挙されて良い。@ref{Yacc and Lex}を見よ。
 1526: 
 1527: @cindex EXTRA_prog_SOURCES, defined
 1528: 
 1529: Automakeはプログラムにもしかすると入るかもしれないソース・ファイルを全て
 1530: 知る必要がある、たとえあらゆる環境で全てのファイルが構築されるわけではな
 1531: いとしても。条件付きでのみ構築されるファイルは適切な@samp{EXTRA_}変数に
 1532: 列挙されるべきだ。例えば、もし@file{hello-linux.c}が@code{hello}に条件付
 1533: きで含まれるなら、@file{Makefile.am}はこれを含む。
 1534: 
 1535: @example
 1536: EXTRA_hello_SOURCES = hello-linux.c
 1537: @end example
 1538: 
 1539: 同様に、ときどき設定時に構築される予定のプログラムを決定することが役に立
 1540: つ。例えば、GNU @code{cpio}は特別な環境でのみ@code{mt}と@code{rmt}を構築
 1541: する。
 1542: 
 1543: @cindex EXTRA_PROGRAMS, defined
 1544: 
 1545: この場合、Automakeに、構築されるかもしれないが、同時に、生成され
 1546: た@file{Makefile.in}に@code{configure}によって指定されたプログラムを使う
 1547: ようにさせるかもしれない全てのプログラムを知らせなければならない。これは
 1548: @code{configure}に@samp{_PROGRAMS}定義の値をそれぞれ置き換えさせることに
 1549: よって行われるが、付加的に構築されるプログラムを@code{EXTRA_PROGRAMS}に
 1550: 列挙する。
 1551: @vindex EXTRA_PROGRAMS
 1552: 
 1553: もし@code{configure}で見付けられないライブラリに対してリンクする必要があ
 1554: るなら、そうするために@code{LDADD}を使うことができる。この変数は実際には
 1555: リンカのコマンドラインにいかなるオプションでも追加するのに使用できる。
 1556: @vindex LDADD
 1557: 
 1558: @cindex prog_LDADD, defined
 1559: 
 1560: ときどき、複数のプログラムは一つのディレクトリで構築されるがリンク時に必
 1561: 要なものが同じではない。この場合、@samp{@var{prog}_LDADD}変数(@var{prog}
 1562: はある@samp{_PROGRAMS}変数で現れるようなプログラムの名前であり、普通小文
 1563: 字で書かれる)を広域的な@code{LDADD}を上書きするために使用できる。もしこ
 1564: の変数が任意のプログラムに対して存在したら、このプログラムは@code{LDADD}
 1565: を使ってはリンクされない。
 1566: @vindex _LDADD
 1567: 
 1568: 例えば、GNU cpioでは、@code{pax}、@code{cpio} そして@code{mt}はライブラ
 1569: リ@file{libcpio.a}に対してリンクされる。しかし、@code{rmt}は同じディレク
 1570: トリで構築され、そのようなリンクの必要性はない。また、@code{mt}と
 1571: @code{rmt}は特定のアーキテクチャでしか構築されない。ここでcpioの
 1572: @file{src/Makefile.am}がどんな風か(要約して)示す。
 1573: 
 1574: @example
 1575: bin_PROGRAMS = cpio pax @@MT@@
 1576: libexec_PROGRAMS = @@RMT@@
 1577: EXTRA_PROGRAMS = mt rmt
 1578: 
 1579: LDADD = ../lib/libcpio.a @@INTLLIBS@@
 1580: rmt_LDADD =
 1581: 
 1582: cpio_SOURCES = @dots{}
 1583: pax_SOURCES = @dots{}
 1584: mt_SOURCES = @dots{}
 1585: rmt_SOURCES = @dots{}
 1586: @end example
 1587: 
 1588: @cindex _LDFLAGS, defined
 1589: 
 1590: @samp{@var{prog}_LDADD}は(@samp{-l}や@samp{-L}を除き)プログラム特異的なリンカ・
 1591: フラグを渡すには不適切である。だから、この目的には@samp{@var{prog}_LDFLAGS}を
 1592: 使用する。
 1593: @vindex _LDFLAGS
 1594: 
 1595: @cindex _DEPENDENCIES, defined
 1596: 
 1597: プログラムを実際にはこのプログラムの一部ではない他のターゲットに依存させ
 1598: るのもときには有用である。これは@samp{@var{prog}_DEPENDENCIES}変数を使って行わ
 1599: れ得る。各プログラムはそのような変数の中身に依存するが、さらに解釈が行わ
 1600: れることはない。
 1601: 
 1602: もし@samp{@var{prog}_DEPENDENCIES}が与えられないなら、Automakeによって計算され
 1603: る。自動的に指定される値は、@samp{@var{prog}_LDADD}の中身からほとんどの設定に
 1604: よる置換、@samp{-l}や@samp{-L}オプションが除かれたものである。残される設
 1605: 定による置換は@samp{@@LIBOBJS@@}と@samp{@@ALLOCA@@}だけである。これらは
 1606: @samp{@var{prog}_DEPENDENCIES}に対し無効な値を生成させないことが分かっているの
 1607: で残される。
 1608: 
 1609: 
 1610: @node A Library, LIBOBJS, A Program, Programs
 1611: @section ライブラリの構築
 1612: 
 1613: @cindex _LIBRARIES primary, defined
 1614: @cindex LIBRARIES primary, defined
 1615: @cindex Primary variable, LIBRARIES
 1616: 
 1617: @vindex lib_LIBRARIES
 1618: @vindex pkglib_LIBRARIES
 1619: @vindex noinst_LIBRARIES
 1620: 
 1621: ライブラリの構築はプログラムの構築に非常に似ている。この場合には、主要変
 1622: 数の名前は@samp{LIBRARIES}である。ライブラリは@code{libdir}や
 1623: @code{pkglibdir}にインストールされ得る。
 1624: 
 1625: Libtoolと@samp{LTLIBRARIES}主要変数を使って共有ライブラリを構築する方法
 1626: に関する情報は、@xref{A Shared Library}を。
 1627: 
 1628: 各@samp{_LIBRARIES}変数は構築されるライブラリのリストである。例えば
 1629: @file{libcpio.a}と名付けられたライブラリを作成するが、それをインストール
 1630: しないためには、こう書く。
 1631: 
 1632: @example
 1633: noinst_LIBRARIES = libcpio.a
 1634: @end example
 1635: 
 1636: ライブラリに入るソースはプログラムに対するのと全く同様に、
 1637: @samp{_SOURCES}変数によって決定される。ライブラリ名は正規化
 1638: (@pxref{Canonicalization})されるので、@file{liblob.a}に対応する
 1639: @samp{_SOURCES}変数は@samp{liblob_a_SOURCES}であって、
 1640: @samp{liblob.a_SOURCES}ではないことに注意せよ。
 1641: 
 1642: @cindex _LIBADD primary, defined
 1643: @cindex LIBADD primary, defined
 1644: @cindex Primary variable, LIBADD
 1645: 
 1646: 余分のオブジェクトは@samp{@var{library}_LIBADD}変数を使ってライブラリに追加で
 1647: きる。これは@code{configure}によって決定されるオブジェクトに使用されるべ
 1648: きだ。再び@code{cpio}から。
 1649: @vindex _LIBADD
 1650: @vindex LIBADD
 1651: 
 1652: @example
 1653: libcpio_a_LIBADD = @@LIBOBJS@@ @@ALLOCA@@
 1654: @end example
 1655: 
 1656: 
 1657: @node LIBOBJS, A Shared Library, A Library, Programs
 1658: @section LIBOBJSとALLOCAの特殊処理
 1659: 
 1660: @cindex @@LIBOBJS@@, special handling
 1661: @cindex @@ALLOCA@@, special handling
 1662: 
 1663: Automakeは@code{@@LIBOBJS@@}と@code{@@ALLOCA@@}の使用を明示的に認識し、
 1664: この情報に配布物(@pxref{Dist})の適切なソース・ファイルを自動的に含めるた
 1665: めに@file{configure.in}から得た@code{LIBOBJS}ファイルのリストを加えて利
 1666: 用する。これらのソース・ファイルはまた依存関係追跡の仕組みで自動的に処理
 1667: される。@xref{Dependencies}を見よ。
 1668: 
 1669: @code{@@LIBOBJS@@}と@code{@@ALLOCA@@}はどの@samp{_LDADD}や@samp{_LIBADD}
 1670: 変数でも特別に認識される。
 1671: 
 1672: 
 1673: @node A Shared Library, Program variables, LIBOBJS, Programs
 1674: @section 共有ライブラリの構築
 1675: 
 1676: @cindex Shared libraries, support for
 1677: 
 1678: 共有ライブラリの構築は比較的複雑な問題である。この理由のために、GNU
 1679: Libtool (@pxref{Top, , Introduction, libtool, The Libtool Manual})
 1680: がプラットフォーム独立な方法で共有ライブラリを構築するのを助けるために作
 1681: 成された。
 1682: 
 1683: @cindex _LTLIBRARIES primary, defined
 1684: @cindex LTLIBRARIES primary, defined
 1685: @cindex Primary variable, LTLIBRARIES
 1686: @cindex Example of shared libraries
 1687: 
 1688: @cindex suffix .la, defined
 1689: 
 1690: Automakeは@samp{LTLIBRARIES}主要変数で宣言されたライブラリを構築するため
 1691: にLibtoolを利用する。各@samp{_LTLIBRARIES}変数は構築する共有ライブラリの
 1692: リストである。例えば、@file{libgettext.a}と名付けられたライブラリとそれ
 1693: の対応する共有ライブラリを作成し、それらを@samp{libdir}にインストールす
 1694: るために、こう書く。
 1695: 
 1696: @example
 1697: lib_LTLIBRARIES = libgettext.la
 1698: @end example
 1699: 
 1700: @vindex lib_LTLIBRARIES
 1701: @vindex pkglib_LTLIBRARIES
 1702: @vindex noinst_LTLIBRARIES
 1703: @vindex check_LTLIBRARIES
 1704: 
 1705: @cindex check_LTLIBRARIES, not allowed
 1706: 
 1707: 共有ライブラリはインストールされ@emph{なければならない}ので、
 1708: @samp{check_LTLIBRARIES}は許されない。しかし、@samp{noinst_LTLIBRARIES}
 1709: は許される。この特徴はlibtool ``convenience libraries'' のために使われる
 1710: べきである。
 1711: 
 1712: @cindex suffix .lo, defined
 1713: 
 1714: それぞれのライブラリに対して、@samp{@var{library}_LIBADD}変数は共有ライブラリ
 1715: に追加するために追加のlibtoolオブジェクト(@file{.lo}ファイル)の名前を含
 1716: む。@samp{@var{library}_LDFLAGS}変数は@samp{-version-info}や@samp{-static}のよ
 1717: うな、追加のlibtoolフラグを含む。
 1718: 
 1719: @cindex @@LTLIBOBJS@@, special handling
 1720: 
 1721: 通常のライブラリが@code{@@LIBOBJS@@}を含むようなところでは、libtoolライ
 1722: ブラリは@code{@@LTLIBOBJS@@}を使用しなければならない。これはlibtoolが扱
 1723: うオブジェクト・ファイルは必ずしも@file{.o}で終わらないので必要である。
 1724: libtoolのマニュアルではこの話題についてもっと詳細な事を記している。
 1725: 
 1726: あるディレクトリにインストールされるライブラリに対して、Automake
 1727: は自動的に適切な@samp{-rpath}オプションを与えるだろう。しかしながら、設
 1728: 定時に決定される(したがって@code{EXTRA_LTLIBRARIES}で記述される)ライブラ
 1729: リに対しては、Automakeは結果になるインストール用のディレクトリが
 1730: 分からない。そのようなライブラリには手で@samp{-rpath}オプションを適切な
 1731: @samp{_LDFLAGS}変数に加えなければならない。
 1732: 
 1733: @xref{Using Automake, Using Automake with Libtool, The Libtool Manual,
 1734: libtool, The Libtool Manual}にもっと情報がある。
 1735: 
 1736: 
 1737: @node Program variables, Yacc and Lex, A Shared Library, Programs
 1738: @section プログラムを構築するときに使用される変数
 1739: 
 1740: ときおりAutomakeがコンパイルに使用する@file{Makefile}変数がどれか知って
 1741: おくと便利である。例えば、ある特別な場合にはあなた自身のコンパイル作業を
 1742: 行う必要があるだろう。
 1743: 
 1744: いくつかの変数はAutoconfから引き継がれる。これらは@code{CC}、
 1745: @code{CFLAGS}、@code{CPPFLAGS}、@code{DEFS}、@code{LDFLAGS}、そして
 1746: @code{LIBS}である。
 1747: @vindex LDFLAGS
 1748: 
 1749: Automake自身が定義するいくつかの追加された変数がある。
 1750: 
 1751: @vtable @code
 1752: @item INCLUDES
 1753: @samp{-I}オプションのリスト。もしあなたが参照したい特別なディレクトリが
 1754: あるなら、あなたの@file{Makefile.am}にこれを設定できる。Automake
 1755: はいくつかの@samp{-I}オプションをすでに自動的に与えている。特に
 1756: @samp{-I$(srcdir)}と@file{config.h}を持つディレクトリを指す@samp{-I}を生
 1757: 成する(@code{AC_CONFIG_HEADER}か@code{AM_CONFIG_HEADER}を使っているなら)。
 1758: 
 1759: @code{INCLUDES}は実際には@samp{-I}のほかに他の@code{cpp}オプションのため
 1760: に使用できる。例えば、ときどきコンパイラに任意の@samp{-D}オプションを渡
 1761: すために使用される。
 1762: 
 1763: @item COMPILE
 1764: これは実際にCのソース・ファイルをコンパイルするために使われるコマンドで
 1765: ある。ファイル名が完全なコマンドラインにするために付け加えられる。
 1766: 
 1767: @item LINK
 1768: これは実際にCプログラムをリンクするために使われるコマンドである。
 1769: @end vtable
 1770: 
 1771: 
 1772: @node Yacc and Lex, C++ Support, Program variables, Programs
 1773: @section YaccとLexのサポート
 1774: 
 1775: AutomakeはYaccとLexに対していくぶん特異なサポートを有している。
 1776: 
 1777: Automakeは@code{yacc}(あるいは@code{lex})によって生成された@file{.c}ファイルは入力ファ
 1778: イルの基部名(basename)を使って名前が付けられるべきだとみなしている。すな
 1779: わち、yaccのソース・ファイル@file{foo.y}に対して、Automakeは中間ファイル
 1780: を(もっと伝統的である、@file{y.tab.c}に対比して)@file{foo.c}という名前に
 1781: するだろう。
 1782: 
 1783: yaccソース・ファイルの拡張子は結果の@samp{C}や@samp{C++}ファイルの拡張子
 1784: を決定するのに使われる。拡張子@samp{.y}の付いたファイルは@samp{.c}ファイ
 1785: ルになるだろう。さらに、@samp{.yy}は@samp{.cc}になるだろう。@samp{.y++}
 1786: は@samp{.c++}に、そして@samp{.yxx}は@samp{.cxx}に。
 1787: 
 1788: 同様に、lexソース・ファ
 1789: イルは@samp{C}や@samp{C++}を生成するために使われる。拡張子@samp{.l}、
 1790: @samp{.ll}、@samp{.l++}、そして@samp{.lxx}が認識される。
 1791: 
 1792: どの@samp{SOURCES}変数でも中間の(@samp{C}や@samp{C++})ファイルを決して明
 1793: 示的に記述するべきではない。ソース・ファイルだけを列挙しなさい。
 1794: 
 1795: @code{yacc}(あるいは@code{lex})によって生成された中間ファイルは作られるどの配布物にも
 1796: 含まれるだろう。こうしてユーザは@code{yacc}や@code{lex}を持っている必要がないのである。
 1797: 
 1798: もし@code{yacc}のソース・ファイルが現れるなら、あなたの@file{configure.in}は変
 1799: 数@samp{YACC}を定義しなければならない。これはマクロ@samp{AC_PROG_YACC}(@pxref{Particular Programs, , Particular Program Checks, autoconf, The Autoconf Manual})
 1800: を起動することにより最も簡単に行われる。
 1801: 
 1802: 同じく、もし@code{lex}のソース・ファイルが現れるなら、あなたの
 1803: @file{configure.in}は変数@samp{LEX}を定義しなければならない。これを行う
 1804: ために@samp{AC_PROG_LEX}を使用できる(@pxref{Particular Programs, , Particular
 1805: Program Checks, autoconf, The Autoconf Manual})。
 1806: Automakeの@code{lex}サポートはまた
 1807: @samp{AC_DECL_YYTEXT}マクロを使用することを必要とする---automakeは
 1808: @samp{LEX_OUTPUT_ROOT}の値を知る必要がある。
 1809: もしあなたが@code{AM_PROG_LEX}マクロ(@pxref{Macros})を使用すれば、これは
 1810: すべて処理される。
 1811: 
 1812: @cindex ylwrap
 1813: @cindex yacc, multiple parsers
 1814: @cindex Multiple yacc parsers
 1815: @cindex Multiple lex lexers
 1816: @cindex lex, multiple lexers
 1817: 
 1818: Automakeは単一のプログラムで複数の@code{yacc}(あるいは@code{lex})のソース・ファイルを
 1819: 含むことができるようにする。Automakeはサブディレクトリで@code{yacc}(ある
 1820: いは@code{lex})を走らせるために@code{ylwrap}と呼ばれる小さなプログラムを
 1821: 使用する。これはyaccの出力ファイル名が固定であり、並列makeは@code{yacc}
 1822: を一つ以上同時に起動することが考えられるので必要である。@code{ylwrap}プログラムは
 1823: Automakeと共に配布されている。それは@samp{AC_CONFIG_AUX_DIR}(@pxref{Input, , Finding `configure' Input,
 1824: autoconf, The Autoconf Manual})で指定される
 1825: ディレクトリか、もしこのマクロが@file{configure.in}で使用されないなら現
 1826: 在のディレクトリにあるべきだ。
 1827: 
 1828: @code{yacc}に対して、単純に管理するロックは不十分である。@code{yacc}の出
 1829: 力は常に内部的に同じシンボル名を使用するので、同じ実行形式に二つの
 1830: @code{yacc}パーザをリンクすることは可能ではない。
 1831: 
 1832: 我々は@code{gdb}で使用されている以下の改名技法を使用することを推奨する。
 1833: @example
 1834: #define	yymaxdepth c_maxdepth
 1835: #define	yyparse	c_parse
 1836: #define	yylex	c_lex
 1837: #define	yyerror	c_error
 1838: #define	yylval	c_lval
 1839: #define	yychar	c_char
 1840: #define	yydebug	c_debug
 1841: #define	yypact	c_pact	
 1842: #define	yyr1	c_r1			
 1843: #define	yyr2	c_r2			
 1844: #define	yydef	c_def		
 1845: #define	yychk	c_chk		
 1846: #define	yypgo	c_pgo		
 1847: #define	yyact	c_act		
 1848: #define	yyexca	c_exca
 1849: #define yyerrflag c_errflag
 1850: #define yynerrs	c_nerrs
 1851: #define	yyps	c_ps
 1852: #define	yypv	c_pv
 1853: #define	yys	c_s
 1854: #define	yy_yys	c_yys
 1855: #define	yystate	c_state
 1856: #define	yytmp	c_tmp
 1857: #define	yyv	c_v
 1858: #define	yy_yyv	c_yyv
 1859: #define	yyval	c_val
 1860: #define	yylloc	c_lloc
 1861: #define yyreds	c_reds
 1862: #define yytoks	c_toks
 1863: #define yylhs	c_yylhs
 1864: #define yylen	c_yylen
 1865: #define yydefred c_yydefred
 1866: #define yydgoto	c_yydgoto
 1867: #define yysindex c_yysindex
 1868: #define yyrindex c_yyrindex
 1869: #define yygindex c_yygindex
 1870: #define yytable	 c_yytable
 1871: #define yycheck	 c_yycheck
 1872: #define yyname   c_yyname
 1873: #define yyrule   c_yyrule
 1874: @end example
 1875: 
 1876: それぞれの定義に対して、@samp{c_}接頭辞をあなたの好きなどんなものにでも
 1877: 置き換えなさい。これらの定義は@code{bison}、@code{byacc}や伝統的な
 1878: @code{yacc}で動作する。もしここで含まれていないシンボルを使用するパーザ・
 1879: ジェネレータ(parser generator)を見付けたら、リストに加えられるように新し
 1880: い名前を報告してください。
 1881: 
 1882: 
 1883: @node C++ Support, Fortran 77 Support, Yacc and Lex, Programs
 1884: @section C++のサポート
 1885: 
 1886: @cindex C++ support
 1887: @cindex Support for C++
 1888: 
 1889: AutomakeはC++に対する完全なサポート含んでいる。
 1890: 
 1891: C++コードを含むパッケージは出力変数@samp{CXX}を@file{configure.in}で定義
 1892: しなければならない。これを行う一番簡単な方法は@code{AC_PROG_CXX}マクロ
 1893: (@pxref{Particular Programs, , Particular
 1894: Program Checks, autoconf, The Autoconf Manual})を使用することである。
 1895: 
 1896: C++のソース・ファイルが現れるとき、少数の変数が追加されて定義される。
 1897: 
 1898: @vtable @code
 1899: @item CXX
 1900: C++コンパイラの名前。
 1901: 
 1902: @item CXXFLAGS
 1903: C++コンパイラに渡すフラグ。
 1904: 
 1905: @item CXXCOMPILE
 1906: C++のソース・ファイルを実際にコンパイルするために使われるコマンド。ファ
 1907: イル名が完全なコマンドラインにするために付け加えられる。
 1908: 
 1909: @item CXXLINK
 1910: C++プログラムを実際にリンクするために使われるコマンド。
 1911: @end vtable
 1912: 
 1913: 
 1914: @node Fortran 77 Support, Support for Other Languages, C++ Support, Programs
 1915: @comment  node-name,  next,  previous,  up
 1916: @section Fortran 77のサポート
 1917: 
 1918: @cindex Fortran 77 support
 1919: @cindex Support for Fortran 77
 1920: 
 1921: AutomakeはFortran 77に対する完全にサポートを含む。
 1922: 
 1923: Fortran 77コードを含むあらゆるパッケージは、@file{configure.in}で
 1924: @samp{F77}出力変数を定義する必要がある。こうするための最も簡単な方法は
 1925: @code{AC_PROG_F77}マクロを使うことである。(@pxref{Particular Programs, ,
 1926: Particular Program Checks, autoconf, The Autoconf Manual}).
 1927: @xref{Fortran 77 and Autoconf}.
 1928: 
 1929: Fortran 77ソースファイルがある場合、少数の追加変数が定義される。
 1930: 
 1931: @vtable @code
 1932: 
 1933: @item F77
 1934: Fortran 77コンパイラの名前。
 1935: 
 1936: @item FFLAGS
 1937: Fortran 77コンパイラに渡す、すべてのフラグ。
 1938: 
 1939: @item RFLAGS
 1940: Ratforコンパイラに渡すすべてのフラグ。
 1941: 
 1942: @item F77COMPILE
 1943: 実際にFortran 77ソースファイルをコンパイルするコマンド。ファイル名は完全
 1944: なコマンドラインを構成するために付加される。
 1945: 
 1946: @item FLINK
 1947: 純粋なFortran 77プログラムあるいは共有ライブラリを実際にリンクするコマン
 1948: ド。
 1949: @end vtable
 1950: 
 1951: Automakeは,追加コンパイルでFortran 77とRatforソースファイルの前処理をす
 1952: ることができる@footnote{次のFortran 77プログラムのプリプロセスに関する情
 1953: 報については、大部分でないが、多くは@ref{Catalogue of Rules, , Catalogue
 1954: of Rules, make, The GNU Make Manual},からほとんどそのまま持ってきてい
 1955: る。}。Automakeは、Fortran 77と他の言葉の混合のプログラムと共有ライブラ
 1956: リを作るため、いくつかサポートもする(@pxref{Mixing Fortran 77 With C and
 1957: C++})。
 1958: 
 1959: これらの問題は次のセクションで述べる。
 1960: 
 1961: @menu
 1962: * Preprocessing Fortran 77::    
 1963: * Compiling Fortran 77 Files::  
 1964: * Mixing Fortran 77 With C and C++::  
 1965: * Fortran 77 and Autoconf::     
 1966: @end menu
 1967: 
 1968: 
 1969: @node Preprocessing Fortran 77, Compiling Fortran 77 Files, Fortran 77 Support, Fortran 77 Support
 1970: @comment  node-name,  next,  previous,  up
 1971: @subsection Fortran 77のプリプロセス
 1972: 
 1973: @cindex Preprocessing Fortran 77
 1974: @cindex Fortran 77, Preprocessing
 1975: @cindex Ratfor programs
 1976: 
 1977: @file{N.f}は自動的に@file{N.F}あるいは@file{N.r}から作られる。この規則は
 1978: 前処理可能なFortran 77あるいはRatforソースファイルを厳密なFortran 77 ソー
 1979: スファイルに変換するためだけにプリプロセッサを走らせる。使われる正確なコ
 1980: マンドは次の通りである。
 1981: 
 1982: @table @file
 1983: 
 1984: @item .F
 1985: @code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
 1986: 
 1987: @item .r
 1988: @code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
 1989: 
 1990: @end table
 1991: 
 1992: 
 1993: @node Compiling Fortran 77 Files, Mixing Fortran 77 With C and C++, Preprocessing Fortran 77, Fortran 77 Support
 1994: @comment  node-name,  next,  previous,  up
 1995: @subsection Fortran 77ファイルのコンパイル
 1996: 
 1997: @file{N.o}は実際にはFortran 77を実行することによって@file{N.f}、
 1998: @file{N.F}や@file{N.r}から作られる。使われる正確なコマンドは次の通りであ
 1999: る。
 2000: 
 2001: @table @file
 2002: 
 2003: @item .f
 2004: @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
 2005: 
 2006: @item .F
 2007: @code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
 2008: 
 2009: @item .r
 2010: @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
 2011: 
 2012: @end table
 2013: 
 2014: 
 2015: @node Mixing Fortran 77 With C and C++, Fortran 77 and Autoconf, Compiling Fortran 77 Files, Fortran 77 Support
 2016: @comment  node-name,  next,  previous,  up
 2017: @subsection CとC++と,Fortran 77の混在
 2018: 
 2019: @cindex Fortran 77, mixing with C and C++
 2020: @cindex Mixing Fortran 77 with C and C++
 2021: @cindex Linking Fortran 77 with C and C++
 2022: @cindex cfortran
 2023: @cindex Mixing Fortran 77 with C and/or C++
 2024: 
 2025: Automakeは、現在Fortran 77とCとC++の混合のプログラムと共有ライブラリを作
 2026: るための@emph{限定された}サポートを供給している。しかし、(現在) Automake
 2027: によって処理され@emph{ない}が、他のパッケージ@footnote{例えば、
 2028: @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}は、
 2029: これらすべての言語間の問題を扱って、ほとんどすべてのプラットホームのほと
 2030: んどすべてのFortran 77、CとC++コンパイラで動作する。しかしながら、
 2031: @code{cfortran}はまだフリーソフトウェアではないが、次のメジャーリリース
 2032: でそうなるだろう。}によって処理されるFortran 77と他の言葉と混ぜることに
 2033: 関連して多くの問題がある。
 2034: 
 2035: @page
 2036: Automakeは2つの方法で補助が可能である。
 2037: 
 2038: @enumerate
 2039: @item
 2040: ソースコードのコンビネーションに依存したリンカの自動的な選択。
 2041: 
 2042: @item
 2043: 適切なFortran 77のイントリンシックとランタイムライブラリでリンクするため
 2044: の、自動的に選ばれたリンカに渡す適切なリンカフラグ(例えば@samp{-L}と
 2045: @samp{-l})の自動的な選択。
 2046: 
 2047: @cindex FLIBS, defined
 2048: これらの追加されたFortran 77リンカフラグは、Autoconf(Autoconfバージョン
 2049: 2.13やそれ以降)の新しいバージョンで供給された、Autoconfマクロ
 2050: @code{AC_F77_LIBRARY_LDFLAGS}が出力する@code{FLIBS}変数で供給される。
 2051: @xref{Fortran 77 Compiler Characteristics, , , autoconf, The Autoconf}.
 2052: @end enumerate
 2053: 
 2054: (@code{_PROGRAMS}や@code{_LTLIBRARIES}プライマリで記述された)プログラム
 2055: や共有ライブラリが、Fortran 77とCとC++の混合のソースコードを含むことを
 2056: Automakeが検出した場合、@code{AC_F77_LIBRARY_LDFLAGS}マクロを
 2057: @file{configure.in}で呼び出し、@code{$(FLIBS)}や@code{@@FLIBS@@}が適切な
 2058: (プログラムのための)@code{_LDADD}や(共有ライブラリのための)
 2059: @code{_LIBADD}変数があることを要求する。@code{$(FLIBS)}や
 2060: @code{@@FLIBS@@}が適切な@code{_LDADD}や@code{_LIBADD}変数にあることを確
 2061: かめることは、@file{Makefile.am}を書いている人の責任である。
 2062: 
 2063: @cindex Mixed language example
 2064: @cindex Example, mixed language
 2065: 
 2066: 例えば,次の@file{Makefile.am}を考える。
 2067: 
 2068: @example
 2069: bin_PROGRAMS = foo
 2070: foo_SOURCES  = main.cc foo.f
 2071: foo_LDADD    = libfoo.la @@FLIBS@@
 2072: 
 2073: pkglib_LTLIBRARIES = libfoo.la
 2074: libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
 2075: libfoo_la_LIBADD   = $(FLIBS)
 2076: @end example
 2077: 
 2078: この場合、Automakeは@code{AC_F77_LIBRARY_LDFLAGS}が@file{configure.in}で
 2079: 記述されることを強く要求する。同様に、@code{@@FLIBS@@}が@code{foo_LDADD}
 2080: と@code{libfoo_la_LIBADD}で記述されなかった場合もAutomakeは警告を出す。
 2081: 
 2082: 
 2083: @page
 2084: @menu
 2085: * How the Linker is Chosen::    
 2086: @end menu
 2087: 
 2088: @node How the Linker is Chosen,  , Mixing Fortran 77 With C and C++, Mixing Fortran 77 With C and C++
 2089: @comment  node-name,  next,  previous,  up
 2090: @subsubsection リンカの選択法
 2091: 
 2092: @cindex Automatic linker selection
 2093: @cindex Selecting the linker automatically
 2094: 
 2095: 次の図は、どんな状況下で特定のリンカがAutomakeによって選択されるかを明示
 2096: する。
 2097: 
 2098: 例えば、Fortran 77、CとC++ソースコードがプログラムにコンパイルされる場合、
 2099: C++リンカが使われる。この場合、CあるいはFortran 77リンカが、C++リンカに
 2100: 含まれていない特別なライブラリを必要とした場合、@file{Makefile.am}を書く
 2101: ユーザによって、@code{_LDADD}や@code{_LIBADD}変数を手作業で付け加える必
 2102: 要がある。
 2103: 
 2104: 
 2105: @example
 2106:                      \              Linker
 2107:           source      \
 2108:            code        \     C        C++     Fortran
 2109:      -----------------  +---------+---------+---------+
 2110:                         |         |         |         |
 2111:      C                  |    x    |         |         |
 2112:                         |         |         |         |
 2113:                         +---------+---------+---------+
 2114:                         |         |         |         |
 2115:          C++            |         |    x    |         |
 2116:                         |         |         |         |
 2117:                         +---------+---------+---------+
 2118:                         |         |         |         |
 2119:                Fortran  |         |         |    x    |
 2120:                         |         |         |         |
 2121:                         +---------+---------+---------+
 2122:                         |         |         |         |
 2123:      C + C++            |         |    x    |         |
 2124:                         |         |         |         |
 2125:                         +---------+---------+---------+
 2126:                         |         |         |         |
 2127:      C +       Fortran  |         |         |    x    |
 2128:                         |         |         |         |
 2129:                         +---------+---------+---------+
 2130:                         |         |         |         |
 2131:          C++ + Fortran  |         |    x    |         |
 2132:                         |         |         |         |
 2133:                         +---------+---------+---------+
 2134:                         |         |         |         |
 2135:      C + C++ + Fortran  |         |    x    |         |
 2136:                         |         |         |         |
 2137:                         +---------+---------+---------+
 2138: @end example
 2139: 
 2140: 
 2141: @node Fortran 77 and Autoconf,  , Mixing Fortran 77 With C and C++, Fortran 77 Support
 2142: @comment  node-name,  next,  previous,  up
 2143: @subsection Fortran 77とAutoconf
 2144: 
 2145: Fortran 77に対する現在のAutomakeサポートは、Fortran 77に対するサポートを
 2146: 含む十分最近のバージョンのAutoconfも必要である。十分なFortran 77のサポー
 2147: トがAutoconf2.13に加えられたので、それかそれ以降のバージョンのAutoconfを
 2148: 使用しなさい。
 2149: 
 2150: @node Support for Other Languages, ANSI, Fortran 77 Support, Programs
 2151: @comment  node-name,  next,  previous,  up
 2152: @section 他の言語のサポート
 2153: 
 2154: Automakeは現在C、C++(@pxref{C++ Support})とFortran 77(@pxref{Fortran 77
 2155: Support})のみ完全にサポートしてる。他の言葉に対しては、基本的なサポー
 2156: トと、ユーザの需要に基づいて改善されるサポートしかない。
 2157: 
 2158: @node ANSI, Dependencies, Support for Other Languages, Programs
 2159: @section 自動的な脱ANSI化
 2160: 
 2161: @cindex de-ANSI-fication, defined
 2162: 
 2163: GNU標準はANSI Cの使用を許しているが、これはいくつかの古いコンパイラ(特に
 2164: SunOS)へのパッケージの移植性を制限するという影響を持つ。
 2165: 
 2166: Automakeは実際のコンパイルが行われる前にそれぞれのソース・ファイルを@dfn{脱
 2167: ANSI化}することによって、そのようなマシンに関する問題を解決できる。
 2168: 
 2169: @vindex AUTOMAKE_OPTIONS
 2170: @opindex ansi2knr
 2171: 
 2172: もし@file{Makefile.am}の変数@code{AUTOMAKE_OPTIONS}
 2173: (@pxref{Options})がオプション@code{ansi2knr}
 2174: を含めば、脱ANSI化を処理するコードが生成される@file{Makefile.in}に挿入さ
 2175: れる。
 2176: 
 2177: これでそのディレクトリのそれぞれのCのソース・ファイルがANSI Cとして扱わ
 2178: れる。もしANSI Cコンパイラが利用可能なら、それが使われる。もしANSI Cコン
 2179: パイラが利用できないなら、ソース・ファイルをK&Rに変換するために
 2180: @code{ansi2knr}プログラムが使用され、それが次にコンパイルされる。
 2181: 
 2182: @code{ansi2knr}プログラムは単純である。ソース・コードが特定の方法で構成
 2183: されるとみなす。詳細は@code{ansi2knr}のmanページを見よ。
 2184: 
 2185: 脱ANSI化のサポートにはANSI Cのソースと同じパッケージにソース・ファイル
 2186: @file{ansi2knr.c}と@file{ansi2knr.1}があることが必要である。これらのファ
 2187: イルはAutomakeと一緒に配布されている。また、そのパッケージの
 2188: @file{configure.in}はマクロ@code{AM_C_PROTOTYPES}(@pxref{Macros})を呼び出さなければなら
 2189: ない。
 2190: @cvindex AM_C_PROTOTYPES
 2191: 
 2192: Automakeはまた現在のパッケージの他のあるディレクトリで@code{ansi2knr}サ
 2193: ポート・ファイルを見付ける処理を行う。これは適切なディレクトリへの相対パ
 2194: スを@code{ansi2knr}オプションの前に付けることで行われる。例えば、パッケー
 2195: ジが@file{src}と@file{lib}サブディレクトリにANSI Cコードを持っていると考
 2196: えなさい。ファイル@file{ansi2knr.c}と@file{ansi2knr.1}は@file{lib}にある。
 2197: すると@file{src/Makefile.am}ではこのようになるだろう。
 2198: 
 2199: @example
 2200: AUTOMAKE_OPTIONS = ../lib/ansi2knr
 2201: @end example
 2202: 
 2203: もしディレクトリの接頭辞が与えられないなら、ファイルは現在のディレクトリ
 2204: にあるとみなされる。
 2205: 
 2206: @code{LIBOBJS}の中に挙げられた脱ANSI化を必要とするファイルは自動的に処理
 2207: されないだろう。@code{make}は(脱ANSI 化のとき)@file{regex_.o}を期待して
 2208: いるのに@code{configure}は@file{regex.o}のようなオブジェクト名を生成する
 2209: だろうから。最終的には、この問題は@code{autoconf}の魔法によって修正され
 2210: るだろう。しかし今のところあなたは@code{configure.in}の@code{AC_OUTPUT}
 2211: の直前で以下のコードを書かなければならない。
 2212: 
 2213: @example
 2214: # これはLIBOBJSの中の.oファイルもANSI2KNRフィルタ規則を通して構築される
 2215: # ために必要である。
 2216: LIBOBJS=`echo $LIBOBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
 2217: @end example
 2218: 
 2219: 
 2220: @node Dependencies,  , ANSI, Programs
 2221: @section 自動的な依存関係の追跡
 2222: 
 2223: 開発者としては、インクルード・ファイルの依存関係があるプロジェクトで変更
 2224: する度に継続的に@file{Makefile.in}を更新するのはしばしば骨が折れる。
 2225: Automakeは自動的に依存関係の変更を追跡し、生成される
 2226: @file{Makefile.in}で依存関係を配布する方法を提供する。
 2227: 
 2228: 現在このサポートはGNU @code{make}と@code{gcc}の使用を必要とする。もし十
 2229: 分な要求があれば、異なる依存関係生成プログラムを与えることが将来可能にな
 2230: るかもしれない。一方、このモードはもしCプログラムやライブラリが現在のディ
 2231: レクトリで定義されていればデフォルトで有効にされるので、GNU以外のmakeか
 2232: らは@samp{Must be a separator}エラーを受け取るかもしれない。
 2233: 
 2234: @trindex dist
 2235: 
 2236: 配布物を作ることに決めるとき、@code{dist}
 2237: ターゲットは@code{automake}に@samp{--include-deps}や他のオプションを付け
 2238: て再び走らせる。@xref{Invoking Automake}, と @ref{Options}。
 2239: これによりその前に生成された依存関係が生成される
 2240: @file{Makefile.in}に挿入され、このようにして配布物に入れられる。この段階
 2241: はまた、あなたの配布物をダウンロードするがGNU @code{make}や@code{gcc}を
 2242: 使わない人々がエラーを受け取らないように、依存関係生成コードの挿入を起こ
 2243: さないようにする。
 2244: 
 2245: @vindex OMIT_DEPENDENCIES
 2246: 
 2247: @file{Makefile.in}に加えるとき、その依存関係から全てのシステム特異的な依
 2248: 存関係が取り除かれる。これは@samp{OMIT_DEPENDENCIES}でファイルを列挙する
 2249: ことで行われる。
 2250: 例えば、システムのヘッダ・ファイルへの全ての参照がAutomakeによっ
 2251: て取り除かれる。ときどき特定のヘッダ・ファイルが取り除かれるように指定す
 2252: ることが役に立つ。例えば、もしあなたの@file{configure.in}が
 2253: @samp{AM_WITH_REGEX}を使用するなら、ユーザがパッケージを設定するまで正し
 2254: いものが分からないので、@file{rx.h}や@file{regex.h}に関する依存関係は取
 2255: り除かれるべきである。
 2256: 
 2257: 分かるだろうが、Automakeは正規表現のヘッダという特別な場合を扱う
 2258: には実際十分利口である。またもし@samp{AM_GNU_GETTEXT}が使われれば、自動
 2259: 的に@file{libintl.h}を省く。
 2260: 
 2261: @vindex AUTOMAKE_OPTIONS
 2262: @opindex no-dependencies
 2263: 
 2264: 自動的な依存関係追跡は@code{no-dependencies}を変数
 2265: @code{AUTOMAKE_OPTIONS}に入れることで抑えられる。
 2266: 
 2267: もし@code{make dist}によって作られた配布物を展開して、依存関係追跡コード
 2268: を再び有効にしたいなら、単に@code{automake}を再び走らせなさい。
 2269: 
 2270: 実際の依存関係ファイルは構築ディレクトリの下に、@file{.deps}と名付けられ
 2271: たサブディレクトリの中に置かれる。これらの依存関係はマシンに特異的である。
 2272: そうしたいならそれらを削除するのが安全である。それらは次の構築の間に自動
 2273: 的に再作成されるだろう。
 2274: 
 2275: 
 2276: @node Other objects, Other GNU Tools, Programs, Top
 2277: @chapter 他の派生したオブジェクト
 2278: 
 2279: AutomakeはCプログラムではない派生したオブジェクトを扱うことができる。と
 2280: きどき実際にそのようなオブジェクトを構築するためのサポートが明示的に提供
 2281: されていなければならないが、Automakeはそれでもなお自動的にインストールや
 2282: 配布を処理するだろう。
 2283: 
 2284: @menu
 2285: * Scripts::                     実行可能なスクリプト
 2286: * Headers::                     ヘッダ・ファイル
 2287: * Data::                        アーキテクチャ独立なデータ・ファイル
 2288: * Sources::                     派生したソース
 2289: @end menu
 2290: 
 2291: 
 2292: @node Scripts, Headers, Other objects, Other objects
 2293: @section 実行可能なスクリプト
 2294: 
 2295: @cindex _SCRIPTS primary, defined
 2296: @cindex SCRIPTS primary, defined
 2297: @cindex Primary variable, SCRIPTS
 2298: 
 2299: スクリプトであるプログラムを定義しインストールすることが可能である。その
 2300: ようなプログラムは@samp{SCRIPTS}主要名を使って列挙される。
 2301: Automakeはスクリプトには依存関係を定義しない。@file{Makefile.am}
 2302: は適切な規則を含むべきだ。
 2303: @vindex SCRIPTS
 2304: 
 2305: Automakeはスクリプトは派生したオブジェクトであるとはみなさない。
 2306: そのようなオブジェクトは手で削除されねばならない(@pxref{Clean})。
 2307: 
 2308: @code{automake}プログラムそれ自体は@file{automake.in}から設定時に生成さ
 2309: れるPerlスクリプトである。ここにこれがどう扱われているかを見せる。
 2310: 
 2311: @example
 2312: bin_SCRIPTS = automake
 2313: @end example
 2314: 
 2315: @code{automake}は@code{AC_OUTPUT}マクロに現れるので、それのためのターゲッ
 2316: トは自動的に生成される。
 2317: 
 2318: @cindex SCRIPTS, installation directories
 2319: @cindex Installing scripts
 2320: 
 2321: @vindex bin_SCRIPTS
 2322: @vindex sbin_SCRIPTS
 2323: @vindex libexec_SCRIPTS
 2324: @vindex pkgdata_SCRIPTS
 2325: @vindex noinst_SCRIPTS
 2326: 
 2327: スクリプト・オブジェクトは@code{bindir}、@code{sbindir}、
 2328: @code{libexecdir}、あるいは@code{pkgdatadir}にインストールされ得る。
 2329: 
 2330: 
 2331: @node Headers, Data, Scripts, Other objects
 2332: @section ヘッダ・ファイル
 2333: 
 2334: @cindex _HEADERS primary, defined
 2335: @cindex HEADERS primary, defined
 2336: @cindex Primary variable, HEADERS
 2337: 
 2338: @vindex noinst_HEADERS
 2339: 
 2340: ヘッダ・ファイルは@samp{HEADERS}系の変数によって指定される。一般的にはヘッ
 2341: ダ・ファイルはインストールされないので、@code{noinst_HEADERS}変数が一番
 2342: 使用されるだろう。
 2343: @vindex HEADERS
 2344: 
 2345: 全てのヘッダ・ファイルはどこかに列挙されていなければならない。抜かしてい
 2346: るものは配布物には現れないだろう。しばしばインストールされないヘッダをプ
 2347: ログラムの残りのソースと共に列挙することが最もすっきりしている。@xref{A
 2348: Program}。@samp{_SOURCES}変数に列挙されるヘッダは@samp{_HEADERS}変数に列
 2349: 挙される必要がない。
 2350: 
 2351: @cindex HEADERS, installation directories
 2352: @cindex Installing headers
 2353: 
 2354: @vindex include_HEADERS
 2355: @vindex oldinclude_HEADERS
 2356: @vindex pkginclude_HEADERS
 2357: 
 2358: ヘッダは@code{includedir}、@code{oldincludedir}、あるいは
 2359: @code{pkgincludedir}にインストールされ得る。
 2360: 
 2361: 
 2362: @node Data, Sources, Headers, Other objects
 2363: @section アーキテクチャ独立なデータ・ファイル
 2364: 
 2365: @cindex _DATA primary, defined
 2366: @cindex DATA primary, defined
 2367: @cindex Primary variable, DATA
 2368: 
 2369: Automakeは@samp{DATA}系の変数を使って雑多なデータ・ファイルのインストー
 2370: ル作業をサポートする。
 2371: @vindex DATA
 2372: 
 2373: @vindex data_DATA
 2374: @vindex sysconf_DATA
 2375: @vindex sharedstate_DATA
 2376: @vindex localstate_DATA
 2377: @vindex pkgdata_DATA
 2378: 
 2379: そのようなデータはディレクトリ@code{datadir}、@code{sysconfdir}、
 2380: @code{sharedstatedir}、@code{localstatedir}、あるいは@code{pkgdatadir}に
 2381: インストールされ得る。
 2382: 
 2383: デフォルトで、データ・ファイルは配布物に含まれ@emph{ない}。
 2384: 
 2385: ここにAutomakeがその補助データ・ファイルをインストールする方法を
 2386: 示す。
 2387: 
 2388: @example
 2389: pkgdata_DATA = clean-kr.am clean.am @dots{}
 2390: @end example
 2391: 
 2392: 
 2393: @node Sources,  , Data, Other objects
 2394: @section 構築されるソース
 2395: 
 2396: @cindex BUILT_SOURCES, defined
 2397: 
 2398: ときおりそうでなければ@samp{ソース}と呼ばれたようなファイル(例えば、Cの
 2399: @samp{.h}ファイル)は実際にはある他のファイルから派生している。そのような
 2400: ファイルは@code{BUILT_SOURCES}変数に列挙されるべきだ。
 2401: @vindex BUILT_SOURCES
 2402: 
 2403: 構築されるソースはまたデフォルトでコンパイルされない。これが起きるように
 2404: ある他の@samp{_SOURCES}変数でそれらを明示的に記述しなければならない。
 2405: 
 2406: いくつかの場合には、@code{BUILT_SOURCES}がいくぶん意外な方法で働くことに
 2407: 注意しなさい。構築されるソースが自動的な依存関係追跡と働くようにするため
 2408: に、@file{Makefile}は@code{$(BUILT_SOURCES)}に依存しなければならない。こ
 2409: れによりこれらのソースが何かがおかしく見えるようなときに再構築されるよう
 2410: になる。
 2411: 
 2412: 
 2413: @node Other GNU Tools, Documentation, Other objects, Top
 2414: @chapter 他のGNUツール
 2415: 
 2416: Automakeは基本的にGNUプログラムで使用する@file{Makefile.in}を生成するこ
 2417: とを目論まれているので、他のGNUツールと一生懸命互換性を持とうとしている。
 2418: 
 2419: @menu
 2420: * Emacs Lisp::                  Emacs Lisp
 2421: * gettext::                     Gettext
 2422: * Guile::                       Guile
 2423: * Libtool::                     Libtool
 2424: * Java::                        Java
 2425: @end menu
 2426: 
 2427: 
 2428: @node Emacs Lisp, gettext, Other GNU Tools, Other GNU Tools
 2429: @section Emacs Lisp
 2430: 
 2431: @cindex _LISP primary, defined
 2432: @cindex LISP primary, defined
 2433: @cindex Primary variable, LISP
 2434: 
 2435: @vindex LISP
 2436: @vindex lisp_LISP
 2437: @vindex noinst_LISP
 2438: 
 2439: AutomakeはEmacs Lispに対してある程度のサポートを提供している。
 2440: @samp{LISP}主要変数は@file{.el}ファイルのリストを保持するために使われる。
 2441: この主要変数の可能な接頭辞は@samp{lisp_}と@samp{noinst_}である。もし
 2442: @code{lisp_LISP}が定義されれば、@file{configure.in}は
 2443: @code{AM_PATH_LISPDIR} (@pxref{Macros})を走らせなければならないことに注
 2444: 意せよ。
 2445: 
 2446: @vindex ELCFILES
 2447: 
 2448: デフォルトでAutomakeは@code{AM_PATH_LISPDIR}によって見付かるEmacsを使っ
 2449: て全てのEmacs Lispソース・ファイルをバイト・コンパイルするだろう。もしバ
 2450: イト・コンパイルを避けたいなら、単に変数@code{ELCFILES}を空であると定義
 2451: しなさい。
 2452: バイト・コンパイルされたEmacs LispファイルはEmacsの全てのバージョンに使
 2453: えるわけではないので、もしサイトが二つ以上のEmacsのバージョンをインストー
 2454: ルしていると考えるなら、これを無効にすることには意味がある。さらに、多く
 2455: のパッケージは実際にはバイト・コンパイルの利益を得られない。それでもなお、
 2456: 我々はデフォルトでそれを有効なままにしておくことを勧める。おそらく奇妙な
 2457: 設定をしているサイトが彼ら自身のために対処する方が、それ以外のみんなにとっ
 2458: てインストール作業をまずいものにしてしまうより良い。
 2459: 
 2460: 
 2461: @node gettext, Guile, Emacs Lisp, Other GNU Tools
 2462: @section Gettext
 2463: 
 2464: @cindex GNU Gettext support
 2465: @cindex Gettext support
 2466: @cindex Support for GNU Gettext
 2467: 
 2468: もし@code{AM_GNU_GETTEXT}が@file{configure.in}に現れれば、Automakeは国際
 2469: 化のためのメッセージ・カタログ・システム、GNU gettext(@pxref{GNU
 2470: Gettext, , , gettext, GNU gettext utilities})のサポートを有効にする。
 2471: 
 2472: Automakeの@code{gettext}サポートにはパッケージに二つのサブディレクトリ、
 2473: @file{intl}と@file{po}を追加することが必要である。Automakeはこれらのディ
 2474: レクトリが存在し、@code{SUBDIRS}に記述されていることを保証する。
 2475: 
 2476: さらに、Automakeは@file{configure.in}の@code{ALL_LINGUAS}の定義が全ての
 2477: 有効な@file{.po}ファイルに対応しており、それ以上にはないことを点検する。
 2478: 
 2479: 
 2480: @node Guile, Libtool, gettext, Other GNU Tools
 2481: @section Guile
 2482: 
 2483: AutomakeはGuileモジュールを書くためのいくらか自動的なサポートを提供する。
 2484: Automakeはもし@code{AM_INIT_GUILE_MODULE}マクロが@file{configure.in}に使
 2485: われていれば、Guileサポートを有効にするだろう。
 2486: 
 2487: ちょうど今はGuileサポートは単に@code{AM_INIT_GUILE_MODULE}マクロが以下を
 2488: 表すと理解されることだけを意味している。
 2489: @itemize @bullet
 2490: @item
 2491: @code{AM_INIT_AUTOMAKE}が走らされる。
 2492: 
 2493: @item
 2494: @code{AC_CONFIG_AUX_DIR}が@file{..}のパス付きで走らされる。
 2495: @end itemize
 2496: 
 2497: Guileモジュール・コードが成熟するにつれて、Automakeのサポートも発達する
 2498: ことは疑いない。
 2499: 
 2500: 
 2501: @node Libtool, Java, Guile, Other GNU Tools
 2502: @section Libtool
 2503: 
 2504: Automakeは@samp{LTLIBRARIES}主要変数でGNU Libtool(@pxref{Top, , Introduction,
 2505: libtool, The Libtool Manual})のサポートを提供している。
 2506: @xref{A Shared Library}。
 2507: 
 2508: 
 2509: @node Java,  , Libtool, Other GNU Tools
 2510: @section Java
 2511: 
 2512: @cindex _JAVA primary, defined
 2513: @cindex JAVA primary, defined
 2514: @cindex Primary variable, JAVA
 2515: 
 2516: Automakeは@samp{JAVA}主要変数でJavaコンパイル作業の最小限のサポートを提
 2517: 供する。
 2518: 
 2519: @samp{_JAVA}変数に列挙されるどの@file{.java}ファイルでも構築時に
 2520: @code{JAVAC}でコンパイルされるだろう。デフォルトで、@file{.class}ファイ
 2521: ルは配布物には含まれない。
 2522: 
 2523: @cindex JAVA restrictions
 2524: @cindex Restrictions for JAVA
 2525: 
 2526: 現在Automakeは任意の@file{Makefile.am}で一つだけの@samp{_JAVA}主要変数が
 2527: 使えるという制限を課している。この制限の理由は、一般的に、どの
 2528: @file{.class}ファイルがどの@file{.java}ファイルから生成されたのかを知る
 2529: ことができないということである --- だからどのファイルがどこにインストー
 2530: ルされるかを知ることが不可能なのだ。
 2531: 
 2532: 
 2533: @node Documentation, Install, Other GNU Tools, Top
 2534: @chapter 解説書の構築
 2535: 
 2536: 現在AutomakeはTexinfoやmanページのサポートを提供している。
 2537: 
 2538: @menu
 2539: * Texinfo::                     Texinfo
 2540: * Man pages::                   manページ
 2541: @end menu
 2542: 
 2543: 
 2544: @node Texinfo, Man pages, Documentation, Documentation
 2545: @section Texinfo
 2546: 
 2547: @cindex _TEXINFOS primary, defined
 2548: @cindex TEXINFOS primary, defined
 2549: @cindex Primary variable, TEXINFOS
 2550: 
 2551: もし現在のディレクトリがTexinfoのソースを含むなら、それを@samp{TEXINFOS}
 2552: 主要変数で宣言しなければならない。一般的にTexinfoファイルはinfoに変換さ
 2553: れるので、@code{info_TEXINFOS}マクロが最もありふれて使われている。
 2554: Texinfoのソース・ファイルは@file{.texi}か@file{.texinfo}拡張子で終端しな
 2555: ければならないことに注意せよ。
 2556: @vindex TEXINFOS
 2557: @vindex info_TEXINFOS
 2558: 
 2559: @cindex Texinfo macro, VERSION
 2560: @cindex Texinfo macro, UPDATED
 2561: @cindex Texinfo macro, EDITION
 2562: 
 2563: @cindex VERSION Texinfo macro
 2564: @cindex UPDATED Texinfo macro
 2565: @cindex EDITION Texinfo macro
 2566: 
 2567: @cindex mdate-sh
 2568: 
 2569: もし@file{.texi}ファイルが@file{version.texi}を@code{@@include}するなら、
 2570: このファイルは自動的に生成されるだろう。@file{version.texi}ファイルは参照可能な
 2571: 三つのTexinfoマクロを定義する。@code{EDITION}、@code{VERSION}、そして
 2572: @samp{UPDATED}である。最初の二つはあなたのパッケージのバージョン・ナンバー
 2573: を保持する(が明瞭なように別々にされている)。最後のは主要なファイルが最後
 2574: に変更された日付である。@file{version.texi}サポートには@code{mdata-sh}プ
 2575: ログラムが必要である。このプログラムはAutomakeと共に与えられており、
 2576: @code{automake}が@code{--add-missing}オプション付きで実行されたときに
 2577: 自動的に含まれる。
 2578: 
 2579: ときどきinfoファイルは実際には二つ以上の@file{.texi}ファイルに依存してい
 2580: る。例えば、GNU Helloでは、@file{hello.texi}はファイル@file{gpl.texi}を
 2581: 含む。Automakeにこれらの依存関係について@code{@var{texi}_TEXINFOS}変数を
 2582: 使って教えることができる。ここにGNU Helloがそれをどうやっているかを示す。
 2583: @vindex TEXINFOS
 2584: @vindex _TEXINFOS
 2585: 
 2586: @example
 2587: info_TEXINFOS = hello.texi
 2588: hello_TEXINFOS = gpl.texi
 2589: @end example
 2590: 
 2591: @cindex texinfo.tex
 2592: 
 2593: デフォルトで、AutomakeはTexinfoのソースと同じディレクトリにファイル
 2594: @file{texinfo.tex}があることを必要とする。しかしながら、もし
 2595: @file{configure.in}で@code{AC_CONFIG_AUX_DIR}(@pxref{Input, , Finding
 2596: `configure' Input, autoconf, The Autoconf Manual})を使ったなら、
 2597: @file{texinfo.tex}はそこで探される。Automakeはもし@samp{--add-missing}が
 2598: 与えられれば、@file{texinfo.tex}を与えてくれる。
 2599: 
 2600: @vindex TEXINFO_TEX
 2601: 
 2602: もしあなたのパッケージが多くのディレクトリでTexinfoファイルを持っている
 2603: なら、Automakeにあなたのパッケージの正しい@file{texinfo.tex}をどこで見付
 2604: けるかを教えるために変数@code{TEXINFO_TEX}を使用できる。この変数の値は現
 2605: 在の@file{Makefile.am}から@file{texinfo.tex}への相対パスであるべきだ。
 2606: 
 2607: @example
 2608: TEXINFO_TEX = ../doc/texinfo.tex
 2609: @end example
 2610: 
 2611: @opindex no-texinfo.tex
 2612: 
 2613: オプション@samp{no-texinfo.tex}が@file{texinfo.tex}の必要性を失くすため
 2614: に使われ得る。しかしながら、@code{dvi}ターゲットがそれでも働くようにする
 2615: ので、変数@code{TEXINFO_TEX}の使用がより好ましい。
 2616: 
 2617: @cindex Target, install-info
 2618: @cindex Target, noinstall-info
 2619: @cindex install-info target
 2620: @cindex noinstall-info target
 2621: 
 2622: @opindex no-installinfo
 2623: @trindex install-info
 2624: 
 2625: Automakeは@code{install-info}ターゲットを生成する。いくらかの人々は明ら
 2626: かにこれを使う。デフォルトでは、infoページは@samp{make install}でインス
 2627: トールされる。これは@code{no-installinfo}オプションにより妨げられる。
 2628: 
 2629: 
 2630: @node Man pages,  , Texinfo, Documentation
 2631: @section manページ
 2632: 
 2633: @cindex _MANS primary, defined
 2634: @cindex MANS primary, defined
 2635: @cindex Primary variable, MANS
 2636: 
 2637: パッケージはまたmanページを含むことができる。(だけどこの件についてGNU標
 2638: 準を見なさい、@ref{Man Pages, , , standards, The GNU Coding Standards}。)
 2639: manページは@samp{MANS}主要変数を使って宣言される。一般的に
 2640: @code{man_MANS}マクロが使用される。manページはファイルの拡張子に基いて、
 2641: 自動的に正しい@code{mandir}のサブディレクトリにインストールされる。
 2642: それらは配布物に自動的には含まれない。
 2643: @vindex MANS
 2644: @vindex man_MANS
 2645: 
 2646: @cindex Target, install-man
 2647: @cindex Target, noinstall-man
 2648: @cindex install-man target
 2649: @cindex noinstall-man target
 2650: 
 2651: @c Use @samp{make install} per documentation: (texi)code.
 2652: デフォルトでは、manページは@samp{make install}によってインストールされる。
 2653: しかし、GNUプロジェクトはmanページを必要としないので、多くの管理者はman
 2654: ページを最新状態にしようと努力しない。この場合には、@code{no-installman}
 2655: オプションがmanページをデフォルトでインストールされないようにするだろう。
 2656: ユーザはそれでもなお@samp{make install-man}によって明示的にそれらをイン
 2657: ストールすることができる。
 2658: @opindex no-installman
 2659: @trindex install-man
 2660: 
 2661: ここに解説書がGNU @code{cpio}でどう扱われるかを示す(それはTexinfo解説書
 2662: とmanページの両方を含む)。
 2663: 
 2664: @example
 2665: info_TEXINFOS = cpio.texi
 2666: man_MANS = cpio.1 mt.1
 2667: EXTRA_DIST = $(man_MANS)
 2668: @end example
 2669: 
 2670: Texinfoのソースとinfoページは配布物を作るという目的には全てソースである
 2671: と考えられる。
 2672: 
 2673: manページは現在のところソースであると考えられない、なぜならmanページが自
 2674: 動的に生成されるのは珍しくないからだ。同じ理由のために、それらは配布物に
 2675: 自動的には含まれない。
 2676: 
 2677: 
 2678: @node Install, Clean, Documentation, Top
 2679: @chapter 何がインストールされるか
 2680: 
 2681: @cindex Installation support
 2682: @cindex make install support
 2683: 
 2684: もちろん、Automakeはあなたのプログラムが構築されたなら、それを実際にイン
 2685: ストールすることを詳細に扱う。@code{PROGRAMS}、@code{SCRIPTS}、
 2686: @code{LIBRARIES}、@code{LISP}、@code{DATA}と@code{HEADERS}の全てが適切な
 2687: 場所に自動的にインストールされる。
 2688: 
 2689: Automakeはまた指定されたinfoやmanページのインストールも扱う。
 2690: 
 2691: Automakeはディレクトリ構造を共有する複数のマシンにそのインストーラがイン
 2692: ストールする場合には、@code{install-data}と@code{install-exec}ターゲット
 2693: を別々に生成する---これらのターゲットはマシン独立な部分がたった一度だけ
 2694: インストールされるようにする。@code{install}ターゲットはこれらのターゲッ
 2695: トの両方に依存している。
 2696: @trindex install-data
 2697: @trindex install-exec
 2698: @trindex install
 2699: 
 2700: Automakeはまた@code{uninstall}ターゲット、@code{installdirs}ターゲット、
 2701: そして@code{install-script}ターゲットを生成する。
 2702: @trindex uninstall
 2703: @trindex installdirs
 2704: @trindex install-strip
 2705: 
 2706: この機構を@code{install-exec-local}や@code{install-data-local}ターゲット
 2707: を定義することで拡張することが可能である。もしこれらのターゲットが存在す
 2708: れば、それらは@samp{make install}のときに実行されるだろう。
 2709: @trindex install-exec-local
 2710: @trindex install-data-local
 2711: 
 2712: 標準的なディレクトリ接頭辞、@samp{data}、@samp{info}、@samp{man}、
 2713: @samp{include}、@samp{oldinclude}、@samp{pkgdata}や@samp{pkginclude}を使
 2714: う変数(例えば、@samp{data_DATA})は@samp{install-data}によってインストー
 2715: ルされる。
 2716: 
 2717: 標準的なディレクトリ接頭辞、@samp{bin}、@samp{sbin}、@samp{libexec}、
 2718: @samp{sysconf}、@samp{localstate}、@samp{lib}や@samp{pkglib}を使う変数
 2719: (例えば、@samp{bin_PROGRAMS})は@samp{install-exec}によってインストールさ
 2720: れる。
 2721: 
 2722: その名前に@samp{exec}の付いたユーザ定義のディレクトリ接頭辞を使う変数(例
 2723: えば、@samp{myexecbin_PROGRAMS})は@samp{install-exec}によってインストー
 2724: ルされる。他のユーザ定義接頭辞は全て@samp{install-data}によってインストー
 2725: ルされる。
 2726: 
 2727: @vindex DESTDIR
 2728: Automakeは全てのインストール規則で@samp{DESTDIR}変数に対するサポートを生
 2729: 成する。@samp{DESTDIR}はインストールするものを集結地に移転するために
 2730: @samp{make install}ステップの間に使われる。それぞれの(インストールする)
 2731: ものとパスはインストール場所にコピーされる前に@samp{DESTDIR}の値を接頭時
 2732: としてつけられる。ここにDESTDIRの典型的な使い方の例がある。
 2733: 
 2734: @example
 2735: make DESTDIR=/tmp/staging install
 2736: @end example
 2737: 
 2738: この場所は@file{/tmp/staging}の下に構築されたディレクトリ・ツリーにもの
 2739: をインストールする。もし@file{/gnu/bin/foo} と 
 2740: @file{/gnu/share/aclocal/foo.m4}がインストールされるならば、上のコマンド
 2741: は@file{/tmp/staging/gnu/bin/foo} と
 2742: @file{/tmp/staging/gnu/share/aclocal/foo.m4} にインストールするだろう。
 2743: 
 2744: この特徴はインストールイメージとパッケージを構築するのに共通に使われる。
 2745: より多くの情報のために@ref{Makefile Conventions, , , standards, The GNU
 2746: Coding Standards}を見よ。
 2747: 
 2748: 
 2749: @node Clean, Dist, Install, Top
 2750: @chapter 何がクリーンされるか
 2751: 
 2752: @cindex make clean support
 2753: 
 2754: GNU Makefile標準はたくさんの異なったクリーン規則を指定する。
 2755: @c FIXME xref
 2756: 一般的にクリーンされるファイルはAutomakeによって自動的に決定される。もち
 2757: ろん、Automakeはまたクリーンされる追加ファイルを指定するために定義される
 2758: いくつかの変数を認識する。これらの変数は@code{MOSTLYCLEANFILES}、
 2759: @code{CLEANFILES}、@code{DISTCLEANFILES}、そして
 2760: @code{MAINTAINERCLEANFILES}である。
 2761: @vindex MOSTLYCLEANFILES
 2762: @vindex CLEANFILES
 2763: @vindex DISTCLEANFILES
 2764: @vindex MAINTAINERCLEANFILES
 2765: 
 2766: 
 2767: @node Dist, Tests, Clean, Top
 2768: @chapter 何が配布物に含まれるか
 2769: 
 2770: @cindex make dist
 2771: @cindex make distcheck
 2772: 
 2773: 生成される@file{Makefile.in}の@code{dist}ターゲットは配布のためにgzipさ
 2774: れた@code{tar}ファイルを生成するために使われる。tarファイルは
 2775: @samp{PACKAGE}や@samp{VERSION}変数に基いて名付けられる。もっと正確には
 2776: @samp{@var{package}-@var{version}.tar.gz}と名付けられる。
 2777: @cvindex PACKAGE
 2778: @cvindex VERSION
 2779: @trindex dist
 2780: あなたはgzipが実行される方法を制御するために@code{make}変数
 2781: @samp{GZIP_ENV}を使うことができる。デフォルト設定は@samp{--best} である。
 2782: 
 2783: 多くの場面では、配布するファイルはAutomakeによって自動的に見付けられる。
 2784: 全てのソース・ファイルは全ての@file{Makefile.am}と@file{Makefile.in}のよ
 2785: うに配布物に自動的に入れられる。Automakeはまた、もし現在のディレクトリに
 2786: あれば自動的に含められるよく使われるファイルの組み込みのリストを持ってい
 2787: る。このリストは@samp{automake --help}で表示される。また、
 2788: @code{configure}によって読まれるファイル(すなわち、@code{AC_OUTPUT}の起
 2789: 動で指定されるファイルに対応するソース・ファイル)は自動的に配布される。
 2790: 
 2791: それでもなお、ときどき配布されなければならないが、自動的な規則に収められ
 2792: ていないファイルがある。これらのファイルは@code{EXTRA_DIST}変数に列挙さ
 2793: れるべきだ。@code{EXTRA_DIST}の中にサブディレクトリのファイルを記述する
 2794: ことができる。そこにディレクトリを記述することもできる。この場合ディレク
 2795: トリ全体が再帰的に配布物の中にコピーされるだろう。
 2796: @vindex EXTRA_DIST
 2797: 
 2798: もし@code{SUBDIRS}を定義すれば、Automakeは配布物に再帰的にサブディレクト
 2799: リを含めるだろう。もし@code{SUBDIRS}が条件付きで(@pxref{Conditionals})定
 2800: 義されれば、Automakeは通常配布物の@code{SUBDIRS}に現れるかもしれないディ
 2801: レクトリを全て含めるだろう。もし条件付きでディレクトリの組を指定する必要
 2802: があれば、変数@code{DIST_SUBDIRS}に配布物に含める厳密なサブディレクトリ
 2803: のリストを設定することができる。
 2804: @vindex DIST_SUBDIRS
 2805: 
 2806: @trindex dist-hook
 2807: 
 2808: ときおりまとめられる前に配布物を変更できると便利である。もし
 2809: @code{dist-hook}ターゲットが存在すれば、それが配布物のディレクトリが埋め
 2810: られた後だが、実際のtar(あるいはshar)ファイルが作成される前に走らされる。
 2811: これを使う一つの観点は新しい@file{Makefile.am}がやり過ぎるようなサブディ
 2812: レクトリのファイルを配布するためである。
 2813: 
 2814: @example
 2815: dist-hook:
 2816:         mkdir $(distdir)/random
 2817:         cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
 2818: @end example
 2819: 
 2820: Automakeはまた任意の配布物が実際に働くことを保証する助けになる
 2821: @code{distcheck}ターゲットを生成する。@code{distcheck}は配布物を作り、そ
 2822: して@code{VPATH}の構築を行おうとする。
 2823: @trindex distcheck
 2824: @c FIXME: document distcheck-hook here
 2825: 
 2826: 
 2827: @node Tests, Options, Dist, Top
 2828: @chapter テストのサポート
 2829: 
 2830: @cindex Test suites
 2831: @cindex make check
 2832: 
 2833: Automakeは二つの形式のテストをサポートしている。
 2834: 
 2835: もし変数@code{TESTS}が定義されれば、その値は試験を行うために実行するプロ
 2836: グラムのリストであると解釈される。そのプログラムは派生したオブジェクトで
 2837: もソース・オブジェクトでも良い。生成された規則は@code{srcdir}と@file{.}
 2838: の両方を見るだろう。データ・ファイルを必要とするプログラムは別ディレクト
 2839: リで構築するとき(@pxref{Build Directories, , Build Directories ,
 2840: autoconf, The Autoconf Manual})に働くように@code{srcdir}(それは環境変数
 2841: とmake変数の両方である)でそれらを、特に@code{distcheck}ターゲット
 2842: (@pxref{Dist})のために見るべきである。
 2843: 
 2844: @cindex Exit status 77, special interpretation
 2845: 
 2846: 失敗の数は実行の終わりに表示されるだろう。もし任意のテスト・プログラムが
 2847: 77の状態で終了すれば、その結果は最終的な計算では無視される。この特徴は移
 2848: 植可能でないテストが意味をなさない環境で無視されるようにする。
 2849: 
 2850: 変数@code{TESTS_ENVIRONMENT}はテスト実行のために環境変数を設定するために
 2851: 使用できる。環境変数@code{srcdir}は規則で設定される。もしあなたのテスト・
 2852: プログラムが全てスクリプトなら、@code{TESTS_ENVIRONMENT}をシェルの起動
 2853: (例えば、@samp{$(SHELL) -x})に設定できる。これはテストのデバッグに有用で
 2854: ある。
 2855: @vindex TESTS
 2856: @vindex TESTS_ENVIRONMENT
 2857: 
 2858: もし@uref{ftp://prep.ai.mit.edu/pub/gnu/dejagnu-1.3.tar.gz,
 2859: @samp{dejagnu}}が@code{AUTOMAKE_OPTIONS}に現れれば、@code{dejagnu}に
 2860: 基くテストが想定される。変数@code{DEJATOOL}の値は@code{runtest}への
 2861: @code{--tool}引数として渡される。それはパッケージの名前がデフォルトであ
 2862: る。
 2863: 
 2864: 変数@code{RUNTESTDEFAULTFLAGS}はデフォルトでdejagnuに渡される
 2865: @code{--tool}と@code{--srcdir}のフラグを保持する。これは必要なら上書きし
 2866: て良い。
 2867: @vindex RUNTESTDEFAULTFLAGS
 2868: 
 2869: 変数@code{EXPECT}、@code{RUNTEST}や@code{RUNTESTFLAGS}はまたプロジェクト
 2870: に特異的な値を与えるために上書きされ得る。例えば、もしコンパイラのツール
 2871: の繋がりをテストしているなら、デフォルトの値はhostとtargetの名前を考慮に
 2872: 入れていないので、これを行う必要があるだろう。
 2873: @opindex dejagnu
 2874: @vindex DEJATOOL
 2875: @vindex EXPECT
 2876: @vindex RUNTEST
 2877: @vindex RUNTESTFLAGS
 2878: @c FIXME xref dejagnu
 2879: 
 2880: どちらの場合でも、試験は@samp{make check}によって行われる。
 2881: 
 2882: 
 2883: @node Options, Miscellaneous, Tests, Top
 2884: @chapter Automakeの挙動の変更
 2885: 
 2886: Automakeのさまざまな特徴は@file{Makefile.am}のオプションによって制御され
 2887: 得る。そのようなオプションは@code{AUTOMAKE_OPTIONS}という名前の特別な変
 2888: 数に列挙される。現在理解されるオプションは以下である。
 2889: @vindex AUTOMAKE_OPTIONS
 2890: 
 2891: @table @asis
 2892: @item @code{gnits}
 2893: @itemx @code{gnu}
 2894: @itemx @code{foreign}
 2895: @item @code{cygnus}
 2896: @cindex Option, gnits
 2897: @cindex Option, gnu
 2898: @cindex Option, foreign
 2899: @cindex Option, cygnus
 2900: 
 2901: strictnessをそのように設定する。@code{gnits}オプションはまた
 2902: @code{readme-alpha}と@code{check-news}を暗示する。
 2903: 
 2904: @item @code{ansi2knr}
 2905: @itemx @code{path/ansi2knr}
 2906: @cindex Option, ansi2knr
 2907: 自動的な脱ANSI化を有効にする。@xref{ANSI}。もしパスに先行されていれば、
 2908: 生成された@file{Makefile.in}は@file{ansi2knr}プログラムを見付けるのに指
 2909: 定されたディレクトリで探すだろう。一般的にパスは同じ配布物の他のディレク
 2910: トリへの相対パスであるべきだ(Automakeは今のところこれを点検しないけど)。
 2911: 
 2912: @item @code{check-news}
 2913: @cindex Option, check-news
 2914: @file{NEWS}ファイルの最初の数行に現在のバージョン・ナンバーが現れなけれ
 2915: ば@code{make dist}が失敗するようにする。
 2916: 
 2917: @item @code{dejagnu}
 2918: @cindex Option, dejagnu
 2919: @code{dejagnu}特有の規則が生成されるようにする。@xref{Tests}。
 2920: 
 2921: @item @code{dist-shar}
 2922: @cindex Option, dist-shar
 2923: 通常の@code{dist}だけでなく@code{dist-shar}ターゲットも生成する。この新
 2924: しいターゲットは配布物のsharアーカイブを作成するだろう。
 2925: @trindex dist-shar
 2926: 
 2927: @item @code{dist-zip}
 2928: @cindex Option, dist-zip
 2929: 通常の@code{dist}だけでなく@code{dist-zip}ターゲットも生成する。この新し
 2930: いターゲットは配布物のzipアーカイブを作成するだろう。
 2931: @trindex dist-zip
 2932: 
 2933: @item @code{dist-tarZ}
 2934: @cindex Option, dist-tarZ
 2935: 通常の@code{dist}ターゲットだけでなく@code{dist-tarZ}ターゲットも生成す
 2936: る。この新しいターゲットは配布物の圧縮されたtarアーカイブを作成するだろ
 2937: う。伝統的な@code{tar}と@code{compress}であるとされるだろう。警告、もし
 2938: 実際には@code{GNU tar}を使っているなら、生成されたアーカイブは移植性のな
 2939: い構成物を含むかもしれない。
 2940: @trindex dist-tarZ
 2941: 
 2942: @item @code{no-dependencies}
 2943: @cindex Option, no-dependencies
 2944: これはコマンドラインで@samp{--include-deps}を使うのに似ているが、自動的
 2945: な依存関係追跡が働くようにする(@xref{Dependencies})のに必要なわずかなも
 2946: のを持っていないような状況に有用である。この場合、その影響は事実上自動的
 2947: な依存関係追跡を無効にすることである。
 2948: 
 2949: @item @code{no-installinfo}
 2950: @cindex Option, no-installinfo
 2951: 生成された@file{Makefile.in}はinfoページがデフォルトでは構築されたりイン
 2952: ストールされたりしないようにするだろう。しかし、@code{info}と
 2953: @code{install-info}ターゲットはなお利用可能であるだろう。このオプション
 2954: は@samp{GNU}のstrictnessやそれ以上では禁止されている。
 2955: @trindex info
 2956: @trindex install-info
 2957: 
 2958: @item @code{no-installman}
 2959: @cindex Option, no-installman
 2960: 生成された@file{Makefile.in}はmanページがデフォルトでインストールされな
 2961: いようにするだろう。しかし、@code{install-man}ターゲットは付加的なインス
 2962: トール作業として利用可能であるだろう。このオプションは@samp{GNU}の
 2963: strictnessやそれ以上では禁止されている。
 2964: @trindex install-man
 2965: 
 2966: @item @code{no-texinfo.tex}
 2967: @cindex Option, no-texinfo
 2968: このディレクトリにtexinfoファイルがあっても、@file{texinfo.tex}を必要と
 2969: しない。
 2970: 
 2971: @item @code{readme-alpha}
 2972: @cindex Option, readme-alpha
 2973: もしこのリリースがalphaリリースで、ファイル@file{README-alpha}が存在すれ
 2974: ば、それが配布物に加えられるだろう。もしこのオプションが与えられれば、バー
 2975: ジョン・ナンバーは二つの形式の一つに従うと期待される。最初の形式は
 2976: @samp{@var{MAJOR}.@var{MINOR}.@var{ALPHA}}で、それぞれの要素は数字である。
 2977: 最後のピリオドと数字はalphaでないリリースでは除かれるべきだ。二番目の形
 2978: 式は@samp{@var{MAJOR}.@var{MINOR}@var{ALPHA}}で、@var{ALPHA}は文字である。
 2979: それはalphaでないリリースでは省かれるべきだ。
 2980: 
 2981: @item @var{version}
 2982: @cindex Option, version
 2983: バージョン・ナンバー(例えば、@samp{0.30})が指定され得る。もしAutomakeが
 2984: 指定されたバージョンよりも新しくなければ、@file{Makefile.in}の作成が抑制
 2985: されるだろう。
 2986: @end table
 2987: 
 2988: 認識されないオプションは@code{automake}によって診断される。
 2989: 
 2990: 
 2991: @node Miscellaneous, Include, Options, Top
 2992: @chapter 雑多な規則
 2993: 
 2994: 他のところには当てはまらなかった、少数の規則や変数がある。
 2995: 
 2996: @menu
 2997: * Tags::                        etagsとmkidのインターフェース
 2998: * Suffixes::                    新しいファイル拡張子の扱い
 2999: @end menu
 3000: 
 3001: 
 3002: @node Tags, Suffixes, Miscellaneous, Miscellaneous
 3003: @section @code{etags}へのインターフェース
 3004: 
 3005: @cindex TAGS support
 3006: 
 3007: Automakeはいくつかの環境でGNU Emacsで使われる@file{TAGS}ファイル
 3008: を生成する規則を生成するだろう。
 3009: 
 3010: もしC、C++、Fortran 77のソース・コードやヘッダがあれば、@code{tags}と@code{TAGS}ターゲッ
 3011: トがそのディレクトリに対して生成されるだろう。
 3012: @trindex tags
 3013: 
 3014: 複数ディレクトリのパッケージの最上位のディレクトリで、@code{tags}ターゲッ
 3015: ト・ファイルが生成され、それは実行するときにサブディレクトリから全ての
 3016: @file{TAGS}ファイルを参照によって含む@file{TAGS}ファイルを生成するだろう。
 3017: 
 3018: また、もし変数@code{ETAGS_ARGS}が定義されれば、@code{tags}ターゲットが生
 3019: 成されるだろう。この変数は@code{etags}が理解しないタグ付けできるソースを
 3020: 含むディレクトリでの使用を意図されている。
 3021: @vindex ETAGS_ARGS
 3022: 
 3023: ここにAutomakeがそのソースと、そのTexinfoファイルの節(node)に対するタグ
 3024: を生成する方法を示す。
 3025: 
 3026: @example
 3027: ETAGS_ARGS = automake.in --lang=none \
 3028:  --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
 3029: @end example
 3030: 
 3031: もし@samp{ETAGS_ARGS}にファイル名を加えるなら、おそらく
 3032: @samp{TAGS_DEPENDENCIES}も設定したいだろう。この変数の中身は@code{tags}
 3033: ターゲットに対する依存関係に直接加えられる。
 3034: @vindex TAGS_DEPENDENCIES
 3035: 
 3036: Automakeはまたソースに@code{mkid}を走らせる@code{ID}ターゲットも生成する
 3037: だろう。これはディレクトリずつの原理(directory-by-directory basis)でだけ
 3038: サポートされる。
 3039: @trindex id
 3040: 
 3041: 
 3042: @node Suffixes,  , Tags, Miscellaneous
 3043: @section 新しいファイル拡張子の扱い
 3044: 
 3045: @cindex Adding new SUFFIXES
 3046: @cindex SUFFIXES, adding
 3047: 
 3048: Automakeが知らないファイルの種類を扱うために新しい暗黙の規則を導入するこ
 3049: とがときどき役に立つ。もしこれがなされるなら、GNU Makeに新しい拡張子を知
 3050: らせねばならない。これは@code{SUFFIXES}変数に新しい拡張子のリストを付け
 3051: ることで行われ得る。
 3052: @vindex SUFFIXES
 3053: 
 3054: 例えば、現在AutomakeはJavaサポートを提供していない。もし@samp{.java}ソー
 3055: ス・ファイルから@samp{.class}ファイルを生成するマクロを書いたなら、これ
 3056: らの拡張子をそのリストに加える必要もあるだろう。
 3057: 
 3058: @example
 3059: SUFFIXES = .java .class
 3060: @end example
 3061: 
 3062: @node Include, Conditionals, Miscellaneous, Top
 3063: @chapter Include
 3064: 
 3065: @cmindex include
 3066: 別のファイル(おそらく共通の規則)を含めるために以下の文法がサポートされる。
 3067: 
 3068: include ($(srcdir)|$(top_srcdir))/filename
 3069: 
 3070: カレントディレクトリにあるファイルを使用するには
 3071: @example
 3072: include $(srcdir)/Makefile.extra
 3073: @end example
 3074: 
 3075: @example
 3076: include Makefile.generated
 3077: @end example
 3078: 
 3079: 最上位のディレクトリにあるファイルを使用するには
 3080: @example
 3081: include $(top_srcdir)/filename
 3082: @end example
 3083: 
 3084: 
 3085: @node Conditionals, Gnits, Include, Top
 3086: @chapter 条件文
 3087: 
 3088: @cindex Conditionals
 3089: 
 3090: Automakeは単純な種類の条件文をサポートする。
 3091: 
 3092: @cvindex AM_CONDITIONAL
 3093: 条件文を使う前に、@code{configure.in}ファイル(@pxref{Macros})で@code{AM_CONDITIONAL}を使っ
 3094: てそれを定義しなければならない。@code{AM_CONDITIONAL}マクロは二つの引数
 3095: を受け取る。
 3096: 
 3097: @code{AM_CONDITIONAL}への最初の引数は条件文の名前である。これは文字で始
 3098: まり、文字や整数、アンダースコアだけを含む単純な文字列であるべきだ。
 3099: 
 3100: @code{AM_CONDITIONAL}への二つ目の引数はシェルの@code{if}文での利用に適した、シェ
 3101: ルの条件文である。その条件文は@code{configure}が実行されるときに評価され
 3102: る。
 3103: 
 3104: @cindex --enable-debug, example
 3105: @cindex Example conditional --enable-debug
 3106: @cindex Conditional example,  --enable-debug
 3107: 
 3108: 条件文は典型的にはユーザが@code{configure}スクリプトに与えるオプションに
 3109: 依存している。ここにもしユーザが@samp{--enable-debug}オプションを使えば
 3110: 真である条件文の書き方の例がある。
 3111: 
 3112: @example
 3113: AC_ARG_ENABLE(debug,
 3114: [  --enable-debug    Turn on debugging],
 3115: [case "$@{enableval@}" in
 3116:   yes) debug=true ;;
 3117:   no)  debug=false ;;
 3118:   *) AC_MSG_ERROR(bad value $@{enableval@} for --enable-debug) ;;
 3119: esac],[debug=false])
 3120: AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
 3121: @end example
 3122: 
 3123: ここに@file{Makefile.am}でこの条件文を使用する方法の例を示す。
 3124: 
 3125: @cmindex if
 3126: @cmindex endif
 3127: @cmindex else
 3128: 
 3129: @example
 3130: if DEBUG
 3131: DBG = debug
 3132: else
 3133: DBG =
 3134: endif
 3135: noinst_PROGRAMS = $(DBG)
 3136: @end example
 3137: 
 3138: この平凡な例はまたEXTRA_PROGRAMS(@pxref{A Program})を使って処理されても
 3139: 良い。
 3140: 
 3141: @code{if}文では単一の変数だけをテストして良い。@code{else}文は省かれて良
 3142: い。条件文はどんな深さにでも入れ子にして良い。
 3143: 
 3144: Automakeの条件文はGNU Makeの条件文と同じではないことに注意せよ。Automake
 3145: の条件文は@file{configure}スクリプトによって設定時に点検され、
 3146: @file{Makefile.in}から@file{Makefile}への変換に影響する。それらは
 3147: @file{configure}に渡されたオプションと@file{configure}がホスト・システム
 3148: について発見した結果に基く。GNU Makeの条件文は@code{make}時に点検され、makeプロ
 3149: グラムに渡された変数や@file{Makefile}で定義された変数に基く。
 3150: 
 3151: Automakeの条件文はどんなmakeプログラムでも動作するだろう。
 3152: 
 3153: 
 3154: @node Gnits, Cygnus, Conditionals, Top
 3155: @chapter @code{--gnu}と@code{--gnits}の影響
 3156: 
 3157: @cindex --gnu, required files
 3158: @cindex --gnu, complete description
 3159: 
 3160: @samp{--gnu}オプション(あるいは@samp{AUTOMAKE_OPTIONS}変数の@samp{gnu})
 3161: は@code{automake}に以下を点検させる。
 3162: 
 3163: @itemize @bullet
 3164: @item
 3165: ファイル@file{INSTALL}、@file{NEWS}、@file{README}、@file{COPYING}、
 3166: @file{AUTHORS}、そして@file{ChangeLog}がパッケージの最上位のディレクトリ
 3167: に必要とされる。
 3168: 
 3169: @item
 3170: オプション@samp{no-installman}と@samp{no-installinfo}が禁止される。
 3171: @end itemize
 3172: 
 3173: このオプションはもっと点検するように将来拡張されるであろうことに注意せよ。
 3174: 厳密にGNU標準に必要とされるものに精通することが得策だ。また、
 3175: @samp{--gnu}はさまざまな管理者専用のターゲットによって使用されるために、
 3176: 特定の標準的でないGNUプログラムが存在することを必要とし得る。例えば、将
 3177: 来@code{pathchk}が@samp{make dist}に必要とされるかもしれない。
 3178: 
 3179: @cindex --gnits, complete description
 3180: 
 3181: @samp{--gnits}オプションは@samp{--gnu}がすることを全てを行い、以下も点検
 3182: する。
 3183: 
 3184: @itemize @bullet
 3185: @item
 3186: @samp{make dist}は@file{NEWS}ファイルが現在のバージョンに更新されている
 3187: ことを確実にするために点検するだろう。
 3188: 
 3189: @item
 3190: ファイル@file{COPYING.LIB}が禁止される。LGPLは明らかに失敗した試みと考え
 3191: られている。
 3192: 
 3193: @item
 3194: @samp{VERSION}がその形式がGnits標準に従うことを確実にするために点検され
 3195: る。
 3196: @c FIXME xref when standards are finished
 3197: 
 3198: @item
 3199: @cindex README-alpha
 3200: もし@samp{VERSION}がこれがalphaリリースであると示し、ファイル
 3201: @file{README-alpha}がパッケージの最上位のディレクトリに現れれば、配布物
 3202: にそれが含められる。これは@samp{--gnits}モードでだけ行われる。なぜなら、
 3203: このモードはバージョン・ナンバーの形式が強制される唯一のものだからで、こ
 3204: うしてAutomakeが@file{README-alpha}が含められるべきかどうかを自動
 3205: 的に決定できる唯一のモードなのである。
 3206: 
 3207: @item
 3208: ファイル@file{THANKS}が必要とされる。
 3209: @end itemize
 3210: 
 3211: 
 3212: @node Cygnus, Extending, Gnits, Top
 3213: @chapter @code{--cygnus}の影響
 3214: 
 3215: @cindex Cygnus strictness
 3216: 
 3217: Cygnus Solutionsは@file{Makefile.in}がどう構築されるのかについて若干異な
 3218: る規則を持っている。@code{automake}に@samp{--cygnus}を渡せば、どの生成さ
 3219: れた@file{Makefile.in}もCygnus規則に従うようになるだろう。
 3220: 
 3221: 以下が@samp{--cygnus}の正確な影響である。
 3222: 
 3223: @itemize @bullet
 3224: @item
 3225: infoファイルは常に構築ディレクトリで作成され、ソース・ディレクトリにはな
 3226: い。
 3227: 
 3228: @item
 3229: @file{texinfo.tex}がもしTexinfoのソース・ファイルが指定されれば必要とされ
 3230: ない。その仮定はそのファイルは供与されるだろうが、Automakeが見付
 3231: けられない場所にあるだろうということだ。この仮定はCygnusパッケージが典型
 3232: 的にまとめられる方法による作り事(artifact)である。
 3233: 
 3234: @item
 3235: @samp{make dist}はソース・ディレクトリだけでなく構築ディレクトリでもファ
 3236: イルを探すだろう。これはinfoファイルを構築ディレクトリに置くことをサポー
 3237: トするために必要とされる。
 3238: 
 3239: @item
 3240: 特定のツールがユーザの@samp{PATH}だけでなく構築ツリーでも検索されるだろ
 3241: う。これらのツールは@code{runtest}、@code{expect}、@code{makeinfo}と
 3242: @code{texi2dvi}である。
 3243: 
 3244: @item
 3245: @code{--foreign}が暗示される。
 3246: 
 3247: @item
 3248: オプション@samp{no-installinfo}と@samp{no-dependencies}が暗示される。
 3249: 
 3250: @item
 3251: マクロ@samp{AM_MAINTAINER_MODE}と@samp{AM_CYGWIN32}が必要とされる。
 3252: 
 3253: @item
 3254: @code{check}ターゲットが@code{all}に依存しない。
 3255: @end itemize
 3256: 
 3257: GNU管理者は特別なCygnusモードよりはむしろ@samp{gnu} strictnessを使用する
 3258: ことが忠告されている。
 3259: 
 3260: 
 3261: @node Extending, Distributing, Cygnus, Top
 3262: @chapter Automakeが十分でないとき
 3263: 
 3264: Automakeの暗黙の複製意味論は多くの問題が単にいくつかの@code{make}ターゲッ
 3265: トや規則を@file{Makefile.in}に加えるだけで取りかかれることを意味する。
 3266: Automakeはこれらの追加を無視するだろう。
 3267: 
 3268: @cindex -local targets
 3269: @cindex local targets
 3270: 
 3271: これを行うことに対して、いくつかの警告がある。Automakeによってす
 3272: でに使用されているターゲットをオーバーロード(overload)することができるが、
 3273: それはしばしば勧められない、特にflatでないパッケージの最上位のディレクト
 3274: リでは。しかしながら、さまざまな有用なターゲットがあなたの
 3275: @file{Makefile.in}で指定できる@samp{-local}バージョンを持っている。
 3276: Automakeは標準のターゲットをこれらのユーザが与えたターゲットに補足するだ
 3277: ろう。
 3278: 
 3279: @trindex  all-local
 3280: @trindex  info-local
 3281: @trindex  dvi-local
 3282: @trindex  check-local
 3283: @trindex  install-data-local
 3284: @trindex  install-exec-local
 3285: @trindex  uninstall-local
 3286: @trindex  mostlyclean-local
 3287: @trindex  clean-local
 3288: @trindex  distclean-local
 3289: 
 3290: 局所的なバージョンをサポートするターゲットは@code{all}、@code{info}、
 3291: @code{dvi}、@code{check}、@code{install-data}、@code{install-exec}、
 3292: @code{uninstall}とさまざまな@code{clean}ターゲット(@code{mostlyclean}、
 3293: @code{clean}、@code{distclean}と@code{maintainer-clean})である。
 3294: @code{uninstall-exec-local}や@code{uninstall-data-local}ターゲットはない
 3295: ことに注意せよ。単に@code{uninstall-local}を使いなさい。データだけや実行
 3296: 形式だけをアンインストールすることは意味をなさない。
 3297: @trindex all
 3298: @trindex info
 3299: @trindex dvi
 3300: @trindex check
 3301: @trindex install-data
 3302: @trindex install-exec
 3303: @trindex uninstall
 3304: 
 3305: 例えば、ここに@file{/etc}のファイルをインストールする一つの方法がある。
 3306: 
 3307: @example
 3308: install-data-local:
 3309:         $(INSTALL_DATA) $(srcdir)/afile /etc/afile
 3310: @end example
 3311: 
 3312: @cindex -hook targets
 3313: @cindex hook targets
 3314: 
 3315: いくつかのターゲットはまたそれらの作業が行われた後に、@dfn{hook}と呼ばれ
 3316: る、他のターゲットを走らせる手段を持つ。hookは基本的なターゲットにちなん
 3317: で、@samp{-hook}を付けて名付けられる。hookを許すターゲットは
 3318: @code{install-data}、@code{install-exec}、@code{dist}と@code{distcheck}
 3319: である。
 3320: @trindex install-data-hook
 3321: @trindex install-exec-hook
 3322: @trindex dist-hook
 3323: 
 3324: 例えば、ここにインストールされたプログラムにハード・リンクを作成する方法
 3325: がある。
 3326: 
 3327: @example
 3328: install-exec-hook:
 3329:         ln $(bindir)/program $(bindir)/proglink
 3330: @end example
 3331: 
 3332: @c FIXME should include discussion of variables you can use in these
 3333: @c rules
 3334: 
 3335: 
 3336: @node Distributing, Future, Extending, Top
 3337: @chapter @file{Makefile.in}の配布
 3338: 
 3339: Automakeは結果として生じる@file{Makefile.in}の配布に何らの制限も設けない。
 3340: 我々はそれでもなおソフトウェアの作者にGPLのような条件の下で彼らの作品を
 3341: 配布するよう奨励しているが、そうすることはAutomakeを使用するのに必要とさ
 3342: れていない。
 3343: 
 3344: @code{--add-missing}スィッチによって自動的にインストールされ得るファイル
 3345: の一部はGPLに該当する。それぞれのファイルを見て調べなさい。
 3346: 
 3347: 
 3348: @node Future, Macro and Variable Index, Distributing, Top
 3349: @chapter 将来の考え
 3350: 
 3351: @cindex Future directions
 3352: 
 3353: ここに将来起きるかもしれないことをいくつか挙げる。
 3354: 
 3355: @itemize @bullet
 3356: @item
 3357: HTMLのサポート。
 3358: 
 3359: @item
 3360: 出力がきれいにされるだろう。例えば、実際に使用される変数だけが生成された
 3361: @file{Makefile.in}に現れるだろう。
 3362: 
 3363: @item
 3364: 自動的に配布物をコード化し直すことがサポートされるだろう。その目的は管理
 3365: 者がどんな文字セットでも一番便利なものを局所的に使用できるが、全ての配布
 3366: 物をUnicodeやUTF-8符号化の@w{ISO 10646}にするようにすることである。
 3367: 
 3368: @cindex Guile rewrite
 3369: 
 3370: @item
 3371: Guileで書き直す。これは近い将来には起きないだろうが、結局は起きるだろう。
 3372: @end itemize
 3373: 
 3374: @page
 3375: @node Macro and Variable Index, General Index, Future, Top
 3376: @unnumbered マクロと変数索引
 3377: 
 3378: @printindex vr
 3379: 
 3380: 
 3381: @page
 3382: @node General Index,  , Macro and Variable Index, Top
 3383: @unnumbered 一般の索引
 3384: 
 3385: @printindex cp
 3386: 
 3387: 
 3388: @page
 3389: @contents
 3390: @bye

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>