File:  [Local Repository] / gnujdoc / automake-1.8 / automake-ja.texi
Revision 1.2: download - view: text, annotated - select for diffs
Sat Feb 21 16:50:42 2004 UTC (16 years, 8 months ago) by futoshi
Branches: MAIN
CVS tags: HEAD
Bug fix for some Texinfo files.

    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: @c @documentlanguage ja
    9: 
   10: @include automake-v.texi
   11: 
   12: @copying
   13: 
   14: This manual is for @acronym{GNU} Automake (version @value{VERSION},
   15: @value{UPDATED}), a program which creates GNU standards-compliant
   16: Makefiles from template files.  This edition documents version
   17: @value{VERSION}.
   18: 
   19: Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
   20: 2003 Free Software Foundation, Inc.
   21: 
   22: @quotation
   23: Permission is granted to copy, distribute and/or modify this document
   24: under the terms of the @acronym{GNU} Free Documentation License,
   25: Version 1.1 or any later version published by the Free Software
   26: Foundation; with no Invariant Sections, with the Front-Cover texts
   27: being ``A @acronym{GNU} Manual,'' and with the Back-Cover Texts as in
   28: (a) below.  A copy of the license is included in the section entitled
   29: ``@acronym{GNU} Free Documentation License.''
   30: 
   31: (a) The FSF's Back-Cover Text is: ``You have freedom to copy and
   32: modify this @acronym{GNU} Manual, like @acronym{GNU} software.  Copies
   33: published by the Free Software Foundation raise funds for
   34: @acronym{GNU} development.''
   35: @end quotation
   36: @end copying
   37: 
   38: @dircategory Software development
   39: @direntry
   40: * automake(ja): (automake-ja).		Making Makefile.in's.
   41: @end direntry
   42: 
   43: @dircategory Individual utilities
   44: @direntry
   45: * aclocal(ja): (automake-ja)Invoking aclocal.          Generating aclocal.m4.
   46: @end direntry
   47: 
   48: @titlepage
   49: @title GNU Automake
   50: @subtitle For version @value{VERSION}, @value{UPDATED}
   51: @author David MacKenzie
   52: @author Tom Tromey
   53: @author Alexandre Duret-Lutz
   54: @c 翻訳:西尾 太
   55: @page
   56: @vskip 0pt plus 1filll
   57: @insertcopying
   58: @end titlepage
   59: 
   60: @c Define an index of configure output variables.
   61: @defcodeindex ov
   62: @c Define an index of configure variables.
   63: @defcodeindex cv
   64: @c Define an index of options.
   65: @defcodeindex op
   66: @c Define an index of targets.
   67: @defcodeindex tr
   68: @c Define an index of commands.
   69: @defcodeindex cm
   70: 
   71: @c Put the macros and variables into their own index.
   72: @c @syncodeindex fn cp
   73: @syncodeindex ov vr
   74: @syncodeindex cv vr
   75: @syncodeindex fn vr
   76: 
   77: @c Put everything else into one index (arbitrarily chosen to be the concept index).
   78: @syncodeindex op cp
   79: @syncodeindex tr cp
   80: @syncodeindex cm cp
   81: 
   82: @ifnottex
   83: @node Top
   84: @comment  node-name,  next,  previous,  up
   85: @top GNU Automake
   86: 
   87: @c This file documents the GNU Automake package.  Automake is a program
   88: @c which creates GNU standards-compliant Makefiles from template files.
   89: @c This edition documents version @value{VERSION}.
   90: @c 
   91: このファイルでは,GNU Automakeパッケージを説明します.Automakeはテンプ
   92: レートファイルからGNU標準に準拠したMakefileを作成するプログラムです.
   93: このエディションは,バージョン@value{VERSION}を説明します.
   94: 
   95: @menu
   96: * Introduction::                Automake's purpose
   97: * Generalities::                General ideas
   98: * Examples::                    Some example packages
   99: * Invoking Automake::           Creating a Makefile.in
  100: * configure::                   Scanning configure.ac or configure.in
  101: * Top level::                   The top-level Makefile.am
  102: * Alternative::                 An alternative approach to subdirectories
  103: * Programs::                    Building programs and libraries
  104: * Other objects::               Other derived objects
  105: * Other GNU Tools::             Other GNU Tools
  106: * Documentation::               Building documentation
  107: * Install::                     What gets installed
  108: * Clean::                       What gets cleaned
  109: * Dist::                        What goes in a distribution
  110: * Tests::                       Support for test suites
  111: * Rebuilding::                  Automatic rebuilding of Makefile
  112: * Options::                     Changing Automake's behavior
  113: * Miscellaneous::               Miscellaneous rules
  114: * Include::                     Including extra files in an Automake template.
  115: * Conditionals::                Conditionals
  116: * Gnits::                       The effect of @code{--gnu} and @code{--gnits}
  117: * Cygnus::                      The effect of @code{--cygnus}
  118: * Extending::                   Extending Automake
  119: * Distributing::                Distributing the Makefile.in
  120: * API versioning::              About compatibility between Automake versions
  121: * FAQ::                         Frequently Asked Questions
  122: * Copying This Manual::         How to make copies of this manual
  123: * Indices::                     Indices of variables, macros, and concepts
  124: @end menu
  125: 
  126: @end ifnottex
  127: 
  128: 
  129: @node Introduction
  130: @c @chapter Introduction
  131: @chapter はじめに
  132: 
  133: @c Automake is a tool for automatically generating @file{Makefile.in}s from
  134: @c files called @file{Makefile.am}.  Each @file{Makefile.am} is basically a
  135: @c series of @code{make} variable definitions@footnote{These variables are
  136: @c also called @dfn{make macros} in Make terminology, however in this
  137: @c manual we reserve the term @dfn{macro} for Autoconf's macros.}, with
  138: @c rules being thrown in occasionally.  The generated @file{Makefile.in}s
  139: @c are compliant with the GNU Makefile standards.
  140: @c 
  141: Automakeは,@file{Makefile.am}と呼ばれるファイルから,
  142: @file{Makefile.in}を自動的に生成するツールです.それぞれの
  143: @file{Makefile.am}は,基本的には一連の@code{make}変数の定義
  144: @footnote{これらの変数は,Makeの用語では@dfn{makeのマクロ(make
  145: macros)}とも呼ばれていますが,このマニュアルでは,@dfn{マクロ(macro)}
  146: はAutoconfのマクロの予約語になっています.}になっていて,ルールが時折
  147: 投入されています.生成された@file{Makefile.in}はGNU Makefileの標準に従
  148: います.
  149: 
  150: @cindex GNU Makefile standards
  151: 
  152: @c The GNU Makefile Standards Document
  153: @c (@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
  154: @c is long, complicated, and subject to change.  The goal of Automake is to
  155: @c remove the burden of Makefile maintenance from the back of the
  156: @c individual GNU maintainer (and put it on the back of the Automake
  157: @c maintainer).
  158: @c 
  159: GNU Makefile Standards Documentは(@pxref{Makefile Conventions, , ,
  160: standards, The GNU Coding Standards}),長くて複雑で変更の原因にもなり
  161: ます.Automakeの目的は,個別のGNU管理者の背中からMakefle管理の負担を取
  162: り除く(そしてAutomake管理者に任せる)ことです.
  163: 
  164: @c The typical Automake input file is simply a series of variable definitions.
  165: @c Each such file is processed to create a @file{Makefile.in}.  There
  166: @c should generally be one @file{Makefile.am} per directory of a project.
  167: @c 
  168: 一般的なAutomakeの入力ファイルは,単純な一連の変数定義です.それぞれの
  169: ファイルは,@file{Makefile.in}を作成するために処理されます.通常,プロ
  170: ジェクト内のディレクトリごとに,一つの@file{Makefile.am}を配置します.
  171: 
  172: @cindex Constraints of Automake
  173: @cindex Automake constraints
  174: 
  175: @c Automake does constrain a project in certain ways; for instance it
  176: @c assumes that the project uses Autoconf (@pxref{Top, , Introduction,
  177: @c autoconf, The Autoconf Manual}), and enforces certain restrictions on
  178: @c the @file{configure.ac} contents@footnote{Older Autoconf versions used
  179: @c @file{configure.in}.  Autoconf 2.50 and greater promotes
  180: @c @file{configure.ac} over @file{configure.in}.  The rest of this
  181: @c documentation will refer to @file{configure.ac}, but Automake also
  182: @c supports @file{configure.in} for backward compatibility.}.
  183: @c 
  184: Automakeは,ある方法でプロジェクトに制限を与えます.例えばプロジェクト
  185: でAutoconf(@pxref{Top, , Introduction, autoconf, The Autoconf Manual}) 
  186: の使用を仮定すると,@file{configure.ac}の内容には,ある制限が発生しま
  187: す@footnote{古いバージョンのAutoconfでは@file{configure.in}を使用して
  188: いました.Autoconf 2.50とそれ以降のでは,@file{configure.in}ではなく
  189: @file{configure.ac}を推奨しています.このドキュメントの残りの部分では
  190: @file{configure.ac}について説明していますが,下位互換性としてAutomake 
  191: は@file{configure.in}もサポートしています.}.
  192: 
  193: @cindex Automake requirements
  194: @cindex Requirements, Automake
  195: 
  196: @c Automake requires @code{perl} in order to generate the
  197: @c @file{Makefile.in}s.  However, the distributions created by Automake are
  198: @c fully GNU standards-compliant, and do not require @code{perl} in order
  199: @c to be built.
  200: @c 
  201: Automakeでは,@file{Makefile.in}を生成するために@code{perl}が必要にな
  202: ります.しかし,Automakeで作成された配布物は完全にGNUの標準に従ってい
  203: て,ビルドするために@code{perl}は不要です.
  204: 
  205: @cindex BUGS, reporting
  206: @cindex Reporting BUGS
  207: @cindex E-mail, bug reports
  208: 
  209: @c Mail suggestions and bug reports for Automake to
  210: @c @email{bug-automake@@gnu.org}.
  211: @c 
  212: @email{bug-automake@@gnu.org}宛にAutomakeの提案とバグレポートをメール
  213: してください.
  214: 
  215: 
  216: @node Generalities
  217: @c @chapter General ideas
  218: @chapter 一般的な考え
  219: 
  220: @c The following sections cover a few basic ideas that will help you
  221: @c understand how Automake works.
  222: @c 
  223: 以下のセクションで,Automakeが動作する方法を理解することに役立つ,基本
  224: 的な考えをいくつか述べます.
  225: 
  226: @menu
  227: * General Operation::           General operation of Automake
  228: * Strictness::                  Standards conformance checking
  229: * Uniform::                     The Uniform Naming Scheme
  230: * Canonicalization::            How derived variables are named
  231: * User Variables::              Variables reserved for the user
  232: * Auxiliary Programs::          Programs automake might require
  233: @end menu
  234: 
  235: 
  236: @node General Operation
  237: @c @section General Operation
  238: @section 一般的な操作
  239: 
  240: @c Automake works by reading a @file{Makefile.am} and generating a
  241: @c @file{Makefile.in}.  Certain variables and rules defined in the
  242: @c @file{Makefile.am} instruct Automake to generate more specialized code;
  243: @c for instance, a @samp{bin_PROGRAMS} variable definition will cause rules
  244: @c for compiling and linking programs to be generated.
  245: @c 
  246: Automakeは@file{Makefile.am}を読み込み,@file{Makefile.in}を生成する仕
  247: 事をします.@file{Makefile.am}で定義されている変数とルールで,Automake 
  248: は更に特殊なコードを生成します.例えば,@samp{bin_PROGRAMS}変数定義で,
  249: 生成されるプログラムをコンパイルしてリンクするルールを生成します.
  250: 
  251: @cindex Non-standard targets
  252: @cindex cvs-dist, non-standard example
  253: @trindex cvs-dist
  254: 
  255: @c The variable definitions and rules in the @file{Makefile.am} are
  256: @c copied verbatim into the generated file.  This allows you to add
  257: @c arbitrary code into the generated @file{Makefile.in}.  For instance
  258: @c the Automake distribution includes a non-standard rule for the
  259: @c @code{cvs-dist} target, which the Automake maintainer uses to make
  260: @c distributions from his source control system.
  261: @c 
  262: @file{Makefile.am}の変数定義とルールは,そのまま生成されたファイルにコ
  263: ピーされます.これにより,生成される@file{Makefile.in}に任意のコードを
  264: 加えることが可能になります.例えばAutomakeの配布物には,Automake管理者
  265: がソースコントロールシステムから配布物を作成するときに使用する,非標準
  266: 的な@code{cvs-dist}ターゲットが含まれています.
  267: 
  268: @cindex GNU make extensions
  269: 
  270: @c Note that most GNU make extensions are not recognized by Automake.  Using
  271: @c such extensions in a @file{Makefile.am} will lead to errors or confusing
  272: @c behavior.
  273: @c 
  274: ほとんどのGNU makeの拡張は,Automakeが理解しないことに注意してください.
  275: @file{Makefile.am}でこのような拡張を使用すると,エラーが生じたり紛らわ
  276: しい動作をしたりします.
  277: 
  278: @cindex Append operator
  279: @c A special exception is that the GNU make append operator, @samp{+=}, is
  280: @c supported.  This operator appends its right hand argument to the variable
  281: @c specified on the left.  Automake will translate the operator into
  282: @c an ordinary @samp{=} operator; @samp{+=} will thus work with any make program.
  283: @c 
  284: 特別な例外として,GNU makeの追加オペレータの@samp{+=}はサポートされて
  285: います.このオペレータは,その右辺の引数を左辺で指定された変数に追加し
  286: ます.Automakeはそのオペレータを通常の@samp{=}オペレータに変換します.
  287: このため@samp{+=}は,あらゆるmakeプログラムでうまく動作します.
  288: 
  289: @c Automake tries to keep comments grouped with any adjoining rules or
  290: @c variable definitions.
  291: @c 
  292: Automakeは賢い方法で,ルールや変数定義に隣接しているグループ化されたコ
  293: メントの保持を試みます.
  294: 
  295: @cindex Make targets, overriding
  296: @cindex Make rules, overriding
  297: @cindex Overriding make rules
  298: @cindex Overriding make targets
  299: 
  300: @c A rule defined in @file{Makefile.am} generally overrides any such
  301: @c rule of a similar name that would be automatically generated by
  302: @c @code{automake}.  Although this is a supported feature, it is generally
  303: @c best to avoid making use of it, as sometimes the generated rules are
  304: @c very particular.
  305: @c 
  306: 一般に,@file{Makefile.am}で定義されているルールは,@code{automake}に
  307: よって自動的に生成されるルールに似た名前を持つものに優先します.これは
  308: サポートされている機能ですが,一般的に,生成されるルールは非常に特殊な
  309: こともあるので,それを利用することは避けたほうがよいでしょう.
  310: 
  311: @cindex Variables, overriding
  312: @cindex Overriding make variables
  313: 
  314: @c Similarly, a variable defined in @file{Makefile.am} or
  315: @c @code{AC_SUBST}'ed from @file{configure.ac} will override any
  316: @c definition of the variable that @code{automake} would ordinarily
  317: @c create.  This feature is more often useful than the ability to
  318: @c override a rule.  Be warned that many of the variables generated by
  319: @c @code{automake} are considered to be for internal use only, and their
  320: @c names might change in future releases.
  321: @c 
  322: 同様に,@file{Makefile.am}で定義されている変数や@file{configure.ac}で
  323: @code{AC_SUBST}されているものも,@code{automake}が通常作成するあらゆる
  324: 変数定義より優先されます.この機能は,ルール優先の機能より役に立つこと
  325: が多いでしょう.@code{automake}で生成された多くの変数は,内部で使用す
  326: ることだけ考慮されていて,それら名前が将来のリリースで変更される可能性
  327: があることに注意しておいてください.
  328: 
  329: @cindex Recursive operation of Automake
  330: @cindex Automake, recursive operation
  331: @cindex Example of recursive operation
  332: 
  333: @c When examining a variable definition, Automake will recursively examine
  334: @c variables referenced in the definition.  For example, if Automake is
  335: @c looking at the content of @code{foo_SOURCES} in this snippet
  336: @c 
  337: 変数定義を調査しているとき,Automakeは定義で参照されている変数を再帰的
  338: に調査します.例えば,以下の断片的な@code{foo_SOURCES}の内容をAutomake 
  339: が調査している状況を考えます.
  340: 
  341: @example
  342: xs = a.c b.c
  343: foo_SOURCES = c.c $(xs)
  344: @end example
  345: 
  346: @c it would use the files @file{a.c}, @file{b.c}, and @file{c.c} as the
  347: @c contents of @code{foo_SOURCES}.
  348: @c 
  349: それは,ファイル@file{a.c},@file{b.c},そして@file{c.c}を
  350: @code{foo_SOURCES}の内容として使用します.
  351: 
  352: @cindex ## (special Automake comment)
  353: @cindex Special Automake comment
  354: @cindex Comment, special to Automake
  355: 
  356: @c Automake also allows a form of comment which is @emph{not} copied into
  357: @c the output; all lines beginning with @samp{##} (leading spaces allowed)
  358: @c are completely ignored by Automake.
  359: @c 
  360: Automakeでは,出力ファイルにコピー@emph{されない}コメントの形式も利用
  361: 可能です.Automakeは@samp{##}で始まる(スペースの前置は可能です)すべて
  362: の行を完全に無視します.
  363: 
  364: @c It is customary to make the first line of @file{Makefile.am} read:
  365: @c 
  366: 読み込まれる@file{Makefile.am}の最初の行に,以下の行を書くのはいつもの
  367: ことです.
  368: 
  369: @cindex Makefile.am, first line
  370: @cindex First line of Makefile.am
  371: 
  372: @example
  373: ## Process this file with automake to produce Makefile.in
  374: @end example
  375: 
  376: @c FIXME discuss putting a copyright into Makefile.am here?  I would but
  377: @c I don't know quite what to say.
  378: 
  379: @c FIXME document customary ordering of Makefile.am here!
  380: 
  381: 
  382: @node Strictness
  383: @c @section Strictness
  384: @section 厳密さ
  385: 
  386: @cindex Non-GNU packages
  387: 
  388: @c While Automake is intended to be used by maintainers of GNU packages, it
  389: @c does make some effort to accommodate those who wish to use it, but do
  390: @c not want to use all the GNU conventions.
  391: @c 
  392: Automakeは,GNUパッケージの管理者が使用することを目的としていますが,
  393: 使用したいけれども,すべてのGNU規約を使用したいわけではない人たちをも
  394: 受け入れる努力をしています.
  395: 
  396: @cindex Strictness, defined
  397: @cindex Strictness, foreign
  398: @cindex foreign strictness
  399: @cindex Strictness, gnu
  400: @cindex gnu strictness
  401: @cindex Strictness, gnits
  402: @cindex gnits strictness
  403: 
  404: @c To this end, Automake supports three levels of @dfn{strictness}---the
  405: @c strictness indicating how stringently Automake should check standards
  406: @c conformance.
  407: @c 
  408: このため,Automakeは三つの@dfn{厳密さ}のレベルをサポートします --- 厳
  409: 密さとは,Automakeに調査させる標準への適合度を示すものです.
  410: 
  411: @c The valid strictness levels are:
  412: @c 
  413: 有効な厳密さのレベルは以下のとおりです.
  414: 
  415: @table @samp
  416: @item foreign
  417: @c Automake will check for only those things which are absolutely
  418: @c required for proper operations.  For instance, whereas GNU standards
  419: @c dictate the existence of a @file{NEWS} file, it will not be required in
  420: @c this mode.  The name comes from the fact that Automake is intended to be
  421: @c used for GNU programs; these relaxed rules are not the standard mode of
  422: @c operation.
  423: @c 
  424: Automakeは,適切な処理のため絶対に必要なものだけを調査します.例えば,
  425: GNUの標準は@file{NEWS}ファイルが存在することを必要としますが,このモー
  426: ドで必要ではありません.この名前(foreign)は,本来はGNUプログラムのため
  427: にAutomakeを使用して欲しいのでこのように名付けられています.これらの緩
  428: い規則は標準的な操作様式ではありません.
  429: 
  430: @item gnu
  431: @c Automake will check---as much as possible---for compliance to the GNU
  432: @c standards for packages.  This is the default.
  433: @c 
  434: Automakeは,パッケージがGNUの標準に準拠しているかどうか ---可能な限り 
  435: --- 調査します.これはデフォルトです.
  436: 
  437: @item gnits
  438: @c Automake will check for compliance to the as-yet-unwritten @dfn{Gnits
  439: @c standards}.  These are based on the GNU standards, but are even more
  440: @c detailed.  Unless you are a Gnits standards contributor, it is
  441: @c recommended that you avoid this option until such time as the Gnits
  442: @c standard is actually published (which may never happen).
  443: @c 
  444: Automakeは,まだ書かれていない@dfn{Gnits standards}に準拠しているかど
  445: うかを調査します.これらはGNUの標準に基づいていますが,より詳しく記述
  446: されています.Gnits standardsの貢献者でない場合,Gnits standardsが実際
  447: に発表されるときまで(発表されることはないかもしれませんが),このオプショ
  448: ンの使用を避けるよう推奨します.
  449: @end table
  450: 
  451: @c For more information on the precise implications of the strictness
  452: @c level, see @ref{Gnits}.
  453: @c 
  454: 厳密さのレベルの正確な意味についての詳細は,@ref{Gnits}を参照してくだ
  455: さい.
  456: 
  457: @c Automake also has a special ``cygnus'' mode which is similar to
  458: @c strictness but handled differently.  This mode is useful for packages
  459: @c which are put into a ``Cygnus'' style tree (e.g., the GCC tree).  For
  460: @c more information on this mode, see @ref{Cygnus}.
  461: @c 
  462: Automakeには,厳密さに似ていますが異なる扱いを受ける,特殊な``cygnus'' 
  463: モードもあります.このモードは,``Cygnus''形式のツリー(例えば,GCCツリー) 
  464: に配置するパッケージで役に立ちます.このモードの詳細は,@ref{Cygnus}を
  465: 参照してください.
  466: 
  467: 
  468: @node Uniform
  469: @c @section The Uniform Naming Scheme
  470: @section 一様な命名法
  471: 
  472: @cindex Uniform naming scheme
  473: 
  474: @c Automake variables generally follow a @dfn{uniform naming scheme} that
  475: @c makes it easy to decide how programs (and other derived objects) are
  476: @c built, and how they are installed.  This scheme also supports
  477: @c @code{configure} time determination of what should be built.
  478: @c 
  479: Automake変数は,一般に以下の@dfn{一様な命名法(uniform naming scheme)}
  480: に従っていて,それは,プログラム(とその他の派生されるオブジェクト)のビ
  481: ルド方法と,それらのインストール方法の決定を容易にします.この手法は,
  482: @code{configure}時にビルドするものを決定することもサポートしています.
  483: 
  484: @cindex _PROGRAMS primary variable
  485: @cindex PROGRAMS primary variable
  486: @cindex Primary variable, PROGRAMS
  487: @cindex Primary variable, defined
  488: 
  489: @c At @code{make} time, certain variables are used to determine which
  490: @c objects are to be built.  The variable names are made of several pieces
  491: @c which are concatenated together.
  492: @c 
  493: @code{make}時にビルドするオブジェクトを決定するため,特定の変数を使用
  494: します.変数の名前は,いくつかの部品をお互いに連結したものからできてい
  495: ます.
  496: 
  497: @c The piece which tells automake what is being built is commonly called
  498: @c the @dfn{primary}.  For instance, the primary @code{PROGRAMS} holds a
  499: @c list of programs which are to be compiled and linked.
  500: @c 
  501: ビルドするものをautomakeに伝える部品は,一般に@dfn{プライマリ}と呼ばれ
  502: ています.例えば,プライマリの@code{PROGRAMS}は,コンパイルされリンク
  503: されるプログラムのリストを保持しています.
  504: @vindex PROGRAMS
  505: 
  506: @cindex pkglibdir, defined
  507: @cindex pkgincludedir, defined
  508: @cindex pkgdatadir, defined
  509: 
  510: @vindex pkglibdir
  511: @vindex pkgincludedir
  512: @vindex pkgdatadir
  513: 
  514: @c A different set of names is used to decide where the built objects
  515: @c should be installed.  These names are prefixes to the primary which
  516: @c indicate which standard directory should be used as the installation
  517: @c directory.  The standard directory names are given in the GNU standards
  518: @c (@pxref{Directory Variables, , , standards, The GNU Coding Standards}).
  519: @c Automake extends this list with @code{pkglibdir}, @code{pkgincludedir},
  520: @c and @code{pkgdatadir}; these are the same as the non-@samp{pkg}
  521: @c versions, but with @samp{$(PACKAGE)} appended.  For instance,
  522: @c @code{pkglibdir} is defined as @code{$(libdir)/$(PACKAGE)}.
  523: @c 
  524: ビルドしたオブジェクトをインストールする場所を決定するため,異なる名前
  525: の組が使用されます.これらの名前はプライマリに前置されていて,それはイ
  526: ンストールするディレクトリとして使用される標準的なディレクトリを示して
  527: います.標準的なディレクトリ名はGNUの標準で与えられています
  528: (@pxref{Directory Variables, , , standards, The GNU Coding Standards}).
  529: Automakeは,@code{pkglibdir},@code{pkgincludedir},そして
  530: @code{pkgdatadir}を用いて,このリストを拡張します.これらは非
  531: @samp{pkg}のバージョンと同じですが,@samp{$(PACKAGE)}が付加されます.
  532: 例えば,@code{pkglibdir}は@code{$(libdir)/$(PACKAGE)}として定義されま
  533: す.
  534: @cvindex PACKAGE, directory
  535: 
  536: @cindex EXTRA_, prepending
  537: 
  538: @c For each primary, there is one additional variable named by prepending
  539: @c @samp{EXTRA_} to the primary name.  This variable is used to list
  540: @c objects which may or may not be built, depending on what
  541: @c @code{configure} decides.  This variable is required because Automake
  542: @c must statically know the entire list of objects that may be built in
  543: @c order to generate a @file{Makefile.in} that will work in all cases.
  544: @c 
  545: それぞれのプライマリに対して,@samp{EXTRA_}をプライマリ名に前置して命
  546: 名された追加の変数があります.この変数は,ビルドされたりされなかったり
  547: する可能性のあるオブジェクトのリストで使用され,それは,
  548: @code{configure}が決定したものに依存します.Automakeは,すべての状況で
  549: 動作する@file{Makefile.in}を生成するために,ビルドされる可能性のあるオ
  550: ブジェクト全体のリストをあらかじめ知っておく必要があるので,この変数が
  551: 必要になります.
  552: 
  553: @cindex EXTRA_PROGRAMS, defined
  554: @cindex Example, EXTRA_PROGRAMS
  555: @cindex cpio example
  556: 
  557: @c For instance, @code{cpio} decides at configure time which programs are
  558: @c built.  Some of the programs are installed in @code{bindir}, and some
  559: @c are installed in @code{sbindir}:
  560: @c 
  561: 例えば,@code{cpio}はconfigure時にビルドするプログラムを決定します.
  562: @code{bindir}にインストールされるプログラムもあれば,@code{sbindir}に
  563: インストールされるものもあります.
  564: 
  565: @example
  566: EXTRA_PROGRAMS = mt rmt
  567: bin_PROGRAMS = cpio pax
  568: sbin_PROGRAMS = $(MORE_PROGRAMS)
  569: @end example
  570: 
  571: @c Defining a primary without a prefix as a variable, e.g.,
  572: @c @code{PROGRAMS}, is an error.
  573: @c 
  574: 接頭辞がないプライマリを変数として定義すること,例えば@code{PROGRAMS}
  575: はエラーになります.
  576: 
  577: @c Note that the common @samp{dir} suffix is left off when constructing the
  578: @c variable names; thus one writes @samp{bin_PROGRAMS} and not
  579: @c @samp{bindir_PROGRAMS}.
  580: @c 
  581: 一般的な@samp{dir}接尾辞は,変数名を作るときには捨てられることに注意し
  582: て下さい.このため,@samp{bindir_PROGRAMS}ではなく,
  583: @samp{bin_PROGRAMS}と書きます.
  584: 
  585: @c Not every sort of object can be installed in every directory.  Automake
  586: @c will flag those attempts it finds in error.
  587: @c Automake will also diagnose obvious misspellings in directory names.
  588: @c 
  589: すべての種類のオブジェクトが,すべてのディレクトリにインストールされる
  590: わけではありません.Automakeはエラーを見つけたとき,フラグを付けようと
  591: します.Automakeはディレクトリ名での明らかなスペルミスも診断します.
  592: 
  593: @cindex Extending list of installation directories
  594: @cindex Installation directories, extending list
  595: 
  596: @c Sometimes the standard directories---even as augmented by Automake---
  597: @c are not enough.  In particular it is sometimes useful, for clarity, to
  598: @c install objects in a subdirectory of some predefined directory.  To this
  599: @c end, Automake allows you to extend the list of possible installation
  600: @c directories.  A given prefix (e.g. @samp{zar}) is valid if a variable of
  601: @c the same name with @samp{dir} appended is defined (e.g. @code{zardir}).
  602: @c 
  603: 標準ディレクトリは --- Automakeによって強化されてはいますが --- 十分で
  604: ない場合もあります.特に,前もって定義されているディレクトリのサブディ
  605: レクトリにオブジェクトをインストールすると役に立つこともあります.この
  606: ため,Automakeはインストール可能なディレクトリのリストを拡張することを
  607: 可能にします.与えられている接頭辞(例えば@samp{zar})は,同じ名前の変数
  608: に@samp{dir}を付加した変数(例えば@code{zardir})が定義されている場合に
  609: 有効です.
  610: 
  611: @cindex HTML installation, example
  612: 
  613: @c For instance, installation of HTML files is part of Automake, you could
  614: @c use this to install raw HTML documentation:
  615: @c 
  616: 例えば,HTMLファイルのインストールはAutomakeの一部ですが,以下のように
  617: して生のHTMLドキュメントをインストール可能です.
  618: 
  619: @example
  620: htmldir = $(prefix)/html
  621: html_DATA = automake.html
  622: @end example
  623: 
  624: @cindex noinst primary prefix, definition
  625: 
  626: @c The special prefix @samp{noinst} indicates that the objects in question
  627: @c should be built but not installed at all.  This is usually used for
  628: @c objects required to build the rest of your package, for instance static
  629: @c libraries (@pxref{A Library}), or helper scripts.
  630: @c 
  631: 特別な接頭辞@samp{noinst}は,該当するオブジェクトをビルドしインストー
  632: ルは決して行なわないことを示します.これは,パッケージ残りのビルドで必
  633: 要なオブジェクト,例えば,スタティックライブラリ(@pxref{A Library})や,
  634: 補助的なスクリプトに対して有効です.
  635: 
  636: @cindex check primary prefix, definition
  637: 
  638: @c The special prefix @samp{check} indicates that the objects in question
  639: @c should not be built until the @code{make check} command is run.  Those
  640: @c objects are not installed either.
  641: @c 
  642: 特別な接頭辞@samp{check}は,該当するオブジェクトが@code{make check}コ
  643: マンドが実行されるまでビルドされないことを示します.これらのオブジェク
  644: トはインストールもされません.
  645: 
  646: @c The current primary names are @samp{PROGRAMS}, @samp{LIBRARIES},
  647: @c @samp{LISP}, @samp{PYTHON}, @samp{JAVA}, @samp{SCRIPTS}, @samp{DATA},
  648: @c @samp{HEADERS}, @samp{MANS}, and @samp{TEXINFOS}.
  649: @c 
  650: 現在のプライマリ名は,@samp{PROGRAMS},@samp{LIBRARIES},@samp{LISP},
  651: @samp{PYTHON},@samp{JAVA},@samp{SCRIPTS},@samp{DATA},
  652: @samp{HEADERS},@samp{MANS},そして@samp{TEXINFOS}です.
  653: @vindex PROGRAMS
  654: @vindex LIBRARIES
  655: @vindex LISP
  656: @vindex PYTHON
  657: @vindex JAVA
  658: @vindex SCRIPTS
  659: @vindex DATA
  660: @vindex HEADERS
  661: @vindex MANS
  662: @vindex TEXINFOS
  663: 
  664: @c Some primaries also allow additional prefixes which control other
  665: @c aspects of @code{automake}'s behavior.  The currently defined prefixes
  666: @c are @samp{dist_}, @samp{nodist_}, and @samp{nobase_}.  These prefixes
  667: @c are explained later (@pxref{Program and Library Variables}).
  668: @c 
  669: @code{automake}の動作の他の側面を制御する,追加の接頭辞が可能なプライ
  670: マリもあります.現在定義されている接頭辞は,@samp{dist_},
  671: @samp{nodist_},そして@samp{nobase_}です.これらの接頭辞は後で説明しま
  672: す(@pxref{Program and Library Variables}).
  673: 
  674: 
  675: @node Canonicalization
  676: @c @section How derived variables are named
  677: @section 派生される変数と命名法
  678: 
  679: @cindex canonicalizing Automake variables
  680: 
  681: @c Sometimes a Makefile variable name is derived from some text the
  682: @c maintainer supplies.  For instance, a program name listed in
  683: @c @samp{_PROGRAMS} is rewritten into the name of a @samp{_SOURCES}
  684: @c variable.  In cases like this, Automake canonicalizes the text, so that
  685: @c program names and the like do not have to follow Makefile variable naming
  686: @c rules.  All characters in the name except for letters, numbers, the
  687: @c strudel (@@), and the underscore are turned into underscores when making
  688: @c variable references.
  689: @c 
  690: Makefileの変数名は,管理者が提供するいくつかのテキストから派生すること
  691: もあります.例えば,@samp{_PROGRAMS}にリストアップされているプログラム
  692: 名は,@samp{_SOURCES}変数の名前にも再び書き込まれます.このような状況
  693: では,プログラム名とそれに類似したものがMakefileの変数命名規則に従う必
  694: 要が無いように,Automakeはテキストを標準に従うものにします.名前の中の
  695: 文字,数字,アットマーク(@@),そしてアンダースコア以外のすべての文字は,
  696: 変数で参照されるときにアンダースコアに変換されます.
  697: 
  698: @c For example, if your program is named @code{sniff-glue}, the derived
  699: @c variable name would be @code{sniff_glue_SOURCES}, not
  700: @c @code{sniff-glue_SOURCES}.  Similarly the sources for a library named
  701: @c @code{libmumble++.a} should be listed in the
  702: @c @code{libmumble___a_SOURCES} variable.
  703: @c 
  704: 例えば,プログラムを@code{sniff-glue}と命名する場合,派生する変数名は,
  705: @code{sniff-glue_SOURCES}ではなく@code{sniff_glue_SOURCES}になります.
  706: 同様に,@code{libmumble++.a}と命名されるライブラリのソースは,
  707: @code{libmumble___a_SOURCES}変数にリストアップすべきです.
  708: 
  709: @c The strudel is an addition, to make the use of Autoconf substitutions in
  710: @c variable names less obfuscating.
  711: @c 
  712: 変数名の内部でAutoconfの置換を使用する際にできるだけ明瞭にするため,アッ
  713: トマーク(strudel)が追加されています.
  714: 
  715: 
  716: @node User Variables
  717: @c @section Variables reserved for the user
  718: @section ユーザに対して予約されている変数
  719: 
  720: @cindex variables, reserved for the user
  721: @cindex user variables
  722: 
  723: @c Some @code{Makefile} variables are reserved by the GNU Coding Standards
  724: @c for the use of the ``user'' -- the person building the package.  For
  725: @c instance, @code{CFLAGS} is one such variable.
  726: @c 
  727: @code{Makefile}変数には,``user''が使用するためにGNU Coding Standards
  728: で予約されているものもあります -- それはパッケージを構築する人のためで
  729: す.例えば,@code{CFLAGS}はそのような変数の一つです.
  730: 
  731: @c Sometimes package developers are tempted to set user variables such as
  732: @c @code{CFLAGS} because it appears to make their job easier.  However,
  733: @c the package itself should never set a user variable, particularly not
  734: @c to include switches which are required for proper compilation of the
  735: @c package.  Since these variables are documented as being for the
  736: @c package builder, that person rightfully expects to be able to override
  737: @c any of these variables at build time.
  738: @c 
  739: パッケージ開発者は,明らかに仕事を簡単にするために,@code{CFLAGS}のよ
  740: うなユーザ変数の設定を試みるときもあります.しかし,パッケージ自身でユー
  741: ザ変数を設定すべきではなく,特に,パッケージの適切なコンパイルに要求さ
  742: れるスイッチを含めるべきではありません.これらの変数はパッケージの構築
  743: 者に対して説明されるので,人々は,ビルド時にこれらの変数に優先させるこ
  744: とが可能だと期待しています.
  745: 
  746: @c To get around this problem, automake introduces an automake-specific
  747: @c shadow variable for each user flag variable.  (Shadow variables are not
  748: @c introduced for variables like @code{CC}, where they would make no
  749: @c sense.)  The shadow variable is named by prepending @samp{AM_} to the
  750: @c user variable's name.  For instance, the shadow variable for
  751: @c @code{YFLAGS} is @code{AM_YFLAGS}.
  752: @c 
  753: この問題を解決するため,automakeはそれぞれのユーザフラグ変数に対し,
  754: automake特有の隠れた変数を導入しています.(隠れた変数は,@code{CC}のよ
  755: うな変数に対しては導入されておらず,それは意味が無いためです.)隠れた
  756: 変数は,ユーザ変数名に@samp{AM_}を前置して命名されています.例えば,
  757: @code{YFLAGS}に対する隠れた変数は,@code{AM_YFLAGS}になります.
  758: 
  759: 
  760: @node Auxiliary Programs
  761: @c @section Programs automake might require
  762: @section automakeが必要とする可能性があるプログラム
  763: 
  764: @cindex Programs, auxiliary
  765: @cindex Auxiliary programs
  766: 
  767: @c Automake sometimes requires helper programs so that the generated
  768: @c @file{Makefile} can do its work properly.  There are a fairly large
  769: @c number of them, and we list them here.
  770: @c 
  771: 生成された@file{Makefile}が適切に動作するように,automakeが補助的なプ
  772: ログラムを必要とすることもあります.それらは数がかなり多いのですが,こ
  773: こにリストアップします.
  774: 
  775: @table @code
  776: @item ansi2knr.c
  777: @itemx ansi2knr.1
  778: @c These two files are used by the automatic de-ANSI-fication support
  779: @c (@pxref{ANSI}).
  780: @c 
  781: これらの二つのファイルは,自動的なde-ANSI-ficationのサポートで使用され
  782: ます(@pxref{ANSI}).
  783: 
  784: @item compile
  785: @c This is a wrapper for compilers which don't accept both @samp{-c} and
  786: @c @samp{-o} at the same time.  It is only used when absolutely required.
  787: @c Such compilers are rare.
  788: @c 
  789: これは,@samp{-c}と@samp{-o}の両方を同時に受け入れることができないコン
  790: パイラに対するラッパーです.それは実際に要求されたときだけ使用されます.
  791: そのようなコンパイラは滅多にありません.
  792: 
  793: @item config.guess
  794: @itemx config.sub
  795: @c These programs compute the canonical triplets for the given build,
  796: @c host, or target architecture.  These programs are updated regularly to
  797: @c support new architectures and fix probes broken by changes in new
  798: @c kernel versions.  You are encouraged to fetch the latest versions of
  799: @c these files from @url{ftp://ftp.gnu.org/gnu/config/} before making a
  800: @c release.
  801: @c 
  802: これらのプログラムは,与えられているビルド,ホスト,またはターゲットの
  803: アーキテクチャといった,三つの標準的なものを調べます.これらのプログラ
  804: ムは,新しいアーキテクチャのサポートや新しいカーネルでの変更で検査の失
  805: 敗を修正するために定期的に更新されています.これらのファイルの最新バー
  806: ジョンを@url{ftp://ftp.gnu.org/gnu/config/}から取得して,リリース物を
  807: 作成する前に確かめてください.
  808: 
  809: @item depcomp
  810: @c This program understands how to run a compiler so that it will generate
  811: @c not only the desired output but also dependency information which is
  812: @c then used by the automatic dependency tracking feature.
  813: @c 
  814: 要求された出力だけでなく,自動的な依存性の追跡機能で使用されている依存
  815: 情報も生成するために,このプログラムはコンパイラの実行方法を理解します.
  816: 
  817: @item elisp-comp
  818: @c This program is used to byte-compile Emacs Lisp code.
  819: @c 
  820: このプログラムは,Emacs Lispコードをバイトコンパイルするために使用され
  821: ます.
  822: 
  823: @item install-sh
  824: @c This is a replacement for the @code{install} program which works on
  825: @c platforms where @code{install} is unavailable or unusable.
  826: @c 
  827: これは,@code{install}プログラムの代わりのもので,@code{install}の利用
  828: や使用が不可能なプラットフォームで動作します.
  829: 
  830: @item mdate-sh
  831: @c This script is used to generate a @file{version.texi} file.  It examines
  832: @c a file and prints some date information about it.
  833: @c 
  834: このスクリプトは,@file{version.texi}ファイルを生成します.それはファ
  835: イルを調査し,それに関する日付の情報を出力します.
  836: 
  837: @item missing
  838: @c This wraps a number of programs which are typically only required by
  839: @c maintainers.  If the program in question doesn't exist, @code{missing}
  840: @c prints an informative warning and attempts to fix things so that the
  841: @c build can continue.
  842: @c 
  843: これは,通常管理者だけが必要とするいくつかのプログラムのラッパーです.
  844: 該当のプログラムが存在しない場合,@code{missing}は情報を伝える警告を出
  845: 力し,ビルドを継続することが可能になるように修正を試みます.
  846: 
  847: @item mkinstalldirs
  848: @c This script used to be a wrapper around @code{mkdir -p}, which is not
  849: @c portable.  Now we use prefer to use @code{install-sh -d} when configure
  850: @c finds that @code{mkdir -p} does not work, this makes one less script to
  851: @c distribute.
  852: @c 
  853: このスクリプトは移植性が無い@code{mkdir -p}のラッパーです.現在我々は,
  854: @code{mkdir -p}が動作しないことをconfigure時に見つけたとき,
  855: @code{install-sh -d}を使用するようにしていて,これで配布時のスクリプト
  856: が少なくなります.
  857: 
  858: @c For backward compatibility @code{mkinstalldirs} is still used and
  859: @c distributed when @code{automake} finds it in a package.  But it is no
  860: @c longer installed automatically, and it should be safe to remove it.
  861: @c 
  862: @code{automake}がパッケージで@code{mkinstalldirs}を見つけた時,下位互
  863: 換性のため,それはまだ使用され配布されます.しかし,それはもはや自動的
  864: にインストールされず,削除した方が安全でしょう.
  865: 
  866: @item py-compile
  867: @c This is used to byte-compile Python scripts.
  868: @c 
  869: これは,Pythonスクリプトをバイトコンパイルするために使用されます.
  870: 
  871: @item texinfo.tex
  872: @c Not a program, this file is required for @code{make dvi}, @code{make ps}
  873: @c and @code{make pdf} to work when Texinfo sources are in the package.
  874: @c 
  875: プログラムではなく,パッケージにTexinfoソースファイルがあるとき,この
  876: ファイルは,@code{make dvi},@code{make ps},そして@code{make pdf}を動
  877: 作させるために必要になります.
  878: 
  879: @item ylwrap
  880: @c This program wraps @code{lex} and @code{yacc} and ensures that, for
  881: @c instance, multiple @code{yacc} instances can be invoked in a single
  882: @c directory in parallel.
  883: @c 
  884: このプログラムは,@code{lex}と@code{yacc}のラッパーで,例えば,複数の
  885: @code{yacc}のインスタンスを単一のディレクトリで,並行して呼び出すこと
  886: が可能であることを確かめます.
  887: 
  888: @end table
  889: 
  890: 
  891: @node Examples
  892: @c @chapter Some example packages
  893: @chapter いくつかのパッケージの例
  894: 
  895: @menu
  896: * Complete::                    A simple example, start to finish
  897: * Hello::                       A classic program
  898: * true::                        Building true and false
  899: @end menu
  900: 
  901: 
  902: @node Complete
  903: @c @section A simple example, start to finish
  904: @section 簡単なサンプル例の最初から最後まで
  905: 
  906: @cindex Complete example
  907: 
  908: @c Let's suppose you just finished writing @code{zardoz}, a program to make
  909: @c your head float from vortex to vortex.  You've been using Autoconf to
  910: @c provide a portability framework, but your @file{Makefile.in}s have been
  911: @c ad-hoc.  You want to make them bulletproof, so you turn to Automake.
  912: @c 
  913: さて,渦から渦まで頭を浮かせる(?)プログラムの@code{zardoz}を,たった今
  914: 書き終えたと仮定します.移植性のフレームワークを提供するためにAutoconf 
  915: を使用していましたが,@file{Makefile.in}は特別に作成しました.それらを
  916: 堅牢にしたいのでAutomakeに切替えてみましょう.
  917: 
  918: @cindex AM_INIT_AUTOMAKE, example use
  919: 
  920: @c The first step is to update your @file{configure.ac} to include the
  921: @c commands that @code{automake} needs.  The way to do this is to add an
  922: @c @code{AM_INIT_AUTOMAKE} call just after @code{AC_INIT}:
  923: @c 
  924: 第一歩は@code{automake}が必要とするコマンドを含めるため,
  925: @file{configure.ac}の更新を開始します.こうする方法は,@code{AC_INIT}
  926: の直後に@code{AM_INIT_AUTOMAKE}の呼び出しを加えることです.
  927: 
  928: @example
  929: AC_INIT(zardoz, 1.0)
  930: AM_INIT_AUTOMAKE
  931: @dots{}
  932: @end example
  933: 
  934: @c Since your program doesn't have any complicating factors (e.g., it
  935: @c doesn't use @code{gettext}, it doesn't want to build a shared library),
  936: @c you're done with this part.  That was easy!
  937: @c 
  938: プログラムには,(例えば,@code{gettext}を使用していないし,共有ライブ
  939: ラリもビルドしないし)複雑な要因が全くないので,この部分はおしまいです.
  940: なんて簡単なんでしょう!
  941: 
  942: @cindex aclocal program, introduction
  943: @cindex aclocal.m4, preexisting
  944: @cindex acinclude.m4, defined
  945: 
  946: @c Now you must regenerate @file{configure}.  But to do that, you'll need
  947: @c to tell @code{autoconf} how to find the new macro you've used.  The
  948: @c easiest way to do this is to use the @code{aclocal} program to generate
  949: @c your @file{aclocal.m4} for you.  But wait@dots{} maybe you already have an
  950: @c @file{aclocal.m4}, because you had to write some hairy macros for your
  951: @c program.  The @code{aclocal} program lets you put your own macros into
  952: @c @file{acinclude.m4}, so simply rename and then run:
  953: @c 
  954: さて@file{configure}を再生成する必要があります.しかしこうするためには,
  955: 使用している新しいマクロを見つける方法を@code{autoconf}に伝える必要が
  956: あります.こうするための最も簡単な方法は,@file{aclocal.m4}を生成する
  957: @code{aclocal}プログラムを使用することです.しかしちょっと待って下さい
  958: @dots{}プログラムに対してちょっとマクロを書く必要があり,既に
  959: @file{aclocal.m4}があるかもしれません.@code{aclocal}プログラムでは,
  960: マクロを@file{acinclude.m4}に書いておく必要があるので,単純に名前を変
  961: 更して以下のように実行します.
  962: 
  963: @example
  964: mv aclocal.m4 acinclude.m4
  965: aclocal
  966: autoconf
  967: @end example
  968: 
  969: @cindex zardoz example
  970: 
  971: @c Now it is time to write your @file{Makefile.am} for @code{zardoz}.
  972: @c Since @code{zardoz} is a user program, you want to install it where the
  973: @c rest of the user programs go: @code{bindir}.  Additionally,
  974: @c @code{zardoz} has some Texinfo documentation.  Your @file{configure.ac}
  975: @c script uses @code{AC_REPLACE_FUNCS}, so you need to link against
  976: @c @samp{$(LIBOBJS)}.  So here's what you'd write:
  977: @c 
  978: さて@code{zardoz}に対する@file{Makefile.am}を書く時間がやってきました.
  979: @code{zardoz}はユーザプログラムなので,他のユーザプログラムがインストー
  980: ルされる場所にインストールしたいと思います.@code{bindir}です.さらに,
  981: @code{zardoz}にはTexinfoドキュメントもあります.@file{configure.ac}ス
  982: クリプトでは@code{AC_REPLACE_FUNCS}を使用するので,@samp{$(LIBOBJS)} 
  983: をリンクする必要があります.そのため以下のように書いたほうが良いでしょ
  984: う.
  985: 
  986: @example
  987: bin_PROGRAMS = zardoz
  988: zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
  989: zardoz_LDADD = $(LIBOBJS)
  990: 
  991: info_TEXINFOS = zardoz.texi
  992: @end example
  993: 
  994: @c Now you can run @code{automake --add-missing} to generate your
  995: @c @file{Makefile.in} and grab any auxiliary files you might need, and
  996: @c you're done!
  997: @c 
  998: さて,@file{Makefile.in}を生成するために@code{automake --add-missing}
  999: を実行して,必要な補助ファイルを入手して,おしまいです!
 1000: 
 1001: 
 1002: @node Hello
 1003: @c @section A classic program
 1004: @section 古典的なプログラム
 1005: 
 1006: @cindex Example, GNU Hello
 1007: @cindex Hello example
 1008: @cindex GNU Hello, example
 1009: 
 1010: @c @uref{ftp://prep.ai.mit.edu/pub/gnu/hello-1.3.tar.gz, GNU hello} is
 1011: @c renowned for its classic simplicity and versatility.  This section shows
 1012: @c how Automake could be used with the GNU Hello package.  The examples
 1013: @c below are from the latest beta version of GNU Hello, but with all of the
 1014: @c maintainer-only code stripped out, as well as all copyright comments.
 1015: @c 
 1016: @uref{ftp://prep.ai.mit.edu/pub/gnu/hello-1.3.tar.gz, GNU hello}は,古
 1017: 典的単純さと融通性で有名です.このセクションでは,AutomakeをGNU Hello
 1018: パッケージに使用する方法を示します.以下の例は,GNU Helloの最近のベー
 1019: タバージョンからのものですが,著作権のコメント全体と同様に,管理者専用
 1020: のすべてのコードが取り除かれています.
 1021: 
 1022: @c Of course, GNU Hello is somewhat more featureful than your traditional
 1023: @c two-liner.  GNU Hello is internationalized, does option processing, and
 1024: @c has a manual and a test suite.
 1025: @c 
 1026: もちろん,GNU Helloは伝統的な二行より幾分長くなっています.GNU Helloは
 1027: 国際化されていて,オプション処理をして,そしてマニュアルとテストスイー
 1028: トもあります.
 1029: 
 1030: @cindex configure.ac, from GNU Hello
 1031: @cindex GNU Hello, configure.ac
 1032: @cindex Hello, configure.ac
 1033: 
 1034: @c Here is the @file{configure.ac} from GNU Hello.
 1035: @c @strong{Please note:} The calls to @code{AC_INIT} and @code{AM_INIT_AUTOMAKE}
 1036: @c in this example use a deprecated syntax.  For the current approach,
 1037: @c see the description of @code{AM_INIT_AUTOMAKE} in @ref{Public macros}.
 1038: @c 
 1039: GNU Helloの@file{configure.ac}は以下のようになっています.@strong{注意
 1040: して下さい:} 例にある@code{AC_INIT}と@code{AM_INIT_AUTOMAKE}の呼出は,
 1041: 推奨されない構文です.現在の手法は,@ref{Public macros}の
 1042: @code{AM_INIT_AUTOMAKE}の記述を参照して下さい.
 1043: 
 1044: @c FIXME: This definitely requires an update, e.g. to GNU Hello 2.1.1.
 1045: 
 1046: @example
 1047: dnl Process this file with autoconf to produce a configure script.
 1048: AC_INIT(src/hello.c)
 1049: AM_INIT_AUTOMAKE(hello, 1.3.11)
 1050: AM_CONFIG_HEADER(config.h)
 1051: 
 1052: dnl Set of available languages.
 1053: ALL_LINGUAS="de fr es ko nl no pl pt sl sv"
 1054: 
 1055: dnl Checks for programs.
 1056: AC_PROG_CC
 1057: AC_ISC_POSIX
 1058: 
 1059: dnl Checks for libraries.
 1060: 
 1061: dnl Checks for header files.
 1062: AC_STDC_HEADERS
 1063: AC_HAVE_HEADERS(string.h fcntl.h sys/file.h sys/param.h)
 1064: 
 1065: dnl Checks for library functions.
 1066: AC_FUNC_ALLOCA
 1067: 
 1068: dnl Check for st_blksize in struct stat
 1069: AC_ST_BLKSIZE
 1070: 
 1071: dnl internationalization macros
 1072: AM_GNU_GETTEXT
 1073: AC_OUTPUT([Makefile doc/Makefile intl/Makefile po/Makefile.in \
 1074:            src/Makefile tests/Makefile tests/hello],
 1075:    [chmod +x tests/hello])
 1076: @end example
 1077: 
 1078: @c The @samp{AM_} macros are provided by Automake (or the Gettext library);
 1079: @c the rest are standard Autoconf macros.
 1080: @c 
 1081: @samp{AM_}マクロは,Automake(あるいはGettextライブラリ)によって提供さ
 1082: れています.残りは標準的なAutoconfマクロです.
 1083: 
 1084: @c The top-level @file{Makefile.am}:
 1085: @c 
 1086: 最上位の@file{Makefile.am}は以下のようになっています.
 1087: 
 1088: @example
 1089: EXTRA_DIST = BUGS ChangeLog.O
 1090: SUBDIRS = doc intl po src tests
 1091: @end example
 1092: 
 1093: @c As you can see, all the work here is really done in subdirectories.
 1094: @c 
 1095: 御覧のように,ここでの仕事はすべてサブディレクトリで実際に実行されます.
 1096: 
 1097: @c The @file{po} and @file{intl} directories are automatically generated
 1098: @c using @code{gettextize}; they will not be discussed here.
 1099: @c 
 1100: @file{po}と@file{intl}ディレクトリは,@code{gettextize}を使用すること
 1101: で自動的に生成されます.それらについてはここで述べません.
 1102: 
 1103: @cindex Texinfo file handling example
 1104: @cindex Example, handling Texinfo files
 1105: 
 1106: @c In @file{doc/Makefile.am} we see:
 1107: @c 
 1108: @file{doc/Makefile.am}は以下のようになっています.
 1109: 
 1110: @example
 1111: info_TEXINFOS = hello.texi
 1112: hello_TEXINFOS = gpl.texi
 1113: @end example
 1114: 
 1115: @c This is sufficient to build, install, and distribute the GNU Hello
 1116: @c manual.
 1117: @c 
 1118: これで,GNU Helloマニュアルをビルドして,インストールして,そして配布
 1119: するには十分です.
 1120: 
 1121: @cindex Regression test example
 1122: @cindex Example, regression test
 1123: 
 1124: @c Here is @file{tests/Makefile.am}:
 1125: @c 
 1126: @file{tests/Makefile.am}は以下のようになっています.
 1127: 
 1128: @example
 1129: TESTS = hello
 1130: EXTRA_DIST = hello.in testdata
 1131: @end example
 1132: 
 1133: @c The script @file{hello} is generated by @code{configure}, and is the
 1134: @c only test case.  @code{make check} will run this test.
 1135: @c 
 1136: @file{hello}スクリプトは,@code{configure}により生成され,それはテスト
 1137: ケースのみで生成されます.@code{make check}でこのテストを実行します.
 1138: 
 1139: @cindex INCLUDES, example usage
 1140: 
 1141: @c Last we have @file{src/Makefile.am}, where all the real work is done:
 1142: @c 
 1143: 最後は@file{src/Makefile.am}で,実際にすべての仕事が行なわれる場所で
 1144: す.
 1145: @c FIXME: As all the Hello World excerpts in this manual, this
 1146: @c shows deprecated features (here: $(INCLUDES)).
 1147: 
 1148: @example
 1149: bin_PROGRAMS = hello
 1150: hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
 1151: hello_LDADD = $(INTLLIBS) $(ALLOCA)
 1152: localedir = $(datadir)/locale
 1153: INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\"
 1154: @end example
 1155: 
 1156: 
 1157: @node true
 1158: @c @section Building true and false
 1159: @section trueとfalseのビルド
 1160: 
 1161: @cindex Example, false and true
 1162: @cindex false Example
 1163: @cindex true Example
 1164: 
 1165: @c Here is another, trickier example.  It shows how to generate two
 1166: @c programs (@code{true} and @code{false}) from the same source file
 1167: @c (@file{true.c}).  The difficult part is that each compilation of
 1168: @c @file{true.c} requires different @code{cpp} flags.
 1169: @c 
 1170: 以下にもう一つの,トリッキーな例があります.それは同じソースファイル
 1171: (@file{true.c})から二つのプログラム(@code{true}と@code{false})を生成す
 1172: る方法を示します.難しい部分は,それぞれの@file{true.c}のコンパイルで,
 1173: 異なる@code{cpp}フラグが必要になるということです.
 1174: 
 1175: @example
 1176: bin_PROGRAMS = true false
 1177: false_SOURCES =
 1178: false_LDADD = false.o
 1179: 
 1180: true.o: true.c
 1181:         $(COMPILE) -DEXIT_CODE=0 -c true.c
 1182: 
 1183: false.o: true.c
 1184:         $(COMPILE) -DEXIT_CODE=1 -o false.o -c true.c
 1185: @end example
 1186: 
 1187: @c Note that there is no @code{true_SOURCES} definition.  Automake will
 1188: @c implicitly assume that there is a source file named @file{true.c}, and
 1189: @c define rules to compile @file{true.o} and link @file{true}.  The
 1190: @c @code{true.o: true.c} rule supplied by the above @file{Makefile.am},
 1191: @c will override the Automake generated rule to build @file{true.o}.
 1192: @c 
 1193: @code{true_SOURCES}の定義が無いことに注意してください.Automake は,ソー
 1194: スファイル名@file{true.c}が存在すると暗黙に仮定し,@file{true.o}にコン
 1195: パイルし,@file{true}にリンクするルールを定義します.上記の
 1196: @file{Makefile.am}で提供されている@code{true.o: true.c}のルールは,
 1197: Automakeが生成する@file{true.o}をビルドするためのルールに優先します.
 1198: 
 1199: @c @code{false_SOURCES} is defined to be empty---that way no implicit value
 1200: @c is substituted.  Because we have not listed the source of
 1201: @c @file{false}, we have to tell Automake how to link the program.  This is
 1202: @c the purpose of the @code{false_LDADD} line.  A @code{false_DEPENDENCIES}
 1203: @c variable, holding the dependencies of the @file{false} target will be
 1204: @c automatically generated by Automake from the content of
 1205: @c @code{false_LDADD}.
 1206: @c 
 1207: @code{false_SOURCES}は空で定義されています --- その方法では,暗黙の値
 1208: で置換されません.@file{false}のソースでリストアップしていないので,プ
 1209: ログラムをリンクする方法をAutomakeに伝える必要があります.これが
 1210: @code{false_LDADD}行の目的です.@code{false_DEPENDENCIES}変数は
 1211: @file{false}ターゲットの依存性を保持していて,@code{false_LDADD}の内容
 1212: からAutomakeが自動的に生成されます.
 1213: 
 1214: @c The above rules won't work if your compiler doesn't accept both
 1215: @c @samp{-c} and @samp{-o}.  The simplest fix for this is to introduce a
 1216: @c bogus dependency (to avoid problems with a parallel @code{make}):
 1217: @c 
 1218: 上記のルールは,コンパイラが@samp{-c}と@samp{-o}の両方を受け入れない場
 1219: 合は動作しません.これを簡単に修正するため,(並行した@code{make}の問題
 1220: を避けるために)偽の依存性を導入します.
 1221: 
 1222: @example
 1223: true.o: true.c false.o
 1224:         $(COMPILE) -DEXIT_CODE=0 -c true.c
 1225: 
 1226: false.o: true.c
 1227:         $(COMPILE) -DEXIT_CODE=1 -c true.c && mv true.o false.o
 1228: @end example
 1229: 
 1230: @c Also, these explicit rules do not work if the de-ANSI-fication feature
 1231: @c is used (@pxref{ANSI}).  Supporting de-ANSI-fication requires a little
 1232: @c more work:
 1233: @c 
 1234: また,これらの明示的なルールは,de-ANSI-ficationが使用される場合は動作
 1235: しません(@pxref{ANSI}).de-ANSI-ficationをサポートするためには,もう少
 1236: し多くの仕事が必要です.
 1237: 
 1238: @example
 1239: true._o: true._c false.o
 1240:         $(COMPILE) -DEXIT_CODE=0 -c true.c
 1241: 
 1242: false._o: true._c
 1243:         $(COMPILE) -DEXIT_CODE=1 -c true.c && mv true._o false.o
 1244: @end example
 1245: 
 1246: @c As it turns out, there is also a much easier way to do this same task.
 1247: @c Some of the above techniques are useful enough that we've kept the
 1248: @c example in the manual.  However if you were to build @code{true} and
 1249: @c @code{false} in real life, you would probably use per-program
 1250: @c compilation flags, like so:
 1251: @c 
 1252: お分かりのように,同じ作業を行なうため,よりいっそう簡単な方法もありま
 1253: す.上記のテクニックには,マニュアルの例として残しておくには十分役に立
 1254: つものもあります.しかし,@code{true}と@code{false}を現実的にビルドす
 1255: る場合は,以下のように,おそらくプログラムごとにコンパイルのフラグを使
 1256: 用することでしょう.
 1257: 
 1258: @example
 1259: bin_PROGRAMS = false true
 1260: 
 1261: false_SOURCES = true.c
 1262: false_CPPFLAGS = -DEXIT_CODE=1
 1263: 
 1264: true_SOURCES = true.c
 1265: true_CPPFLAGS = -DEXIT_CODE=0
 1266: @end example
 1267: 
 1268: @c In this case Automake will cause @file{true.c} to be compiled twice,
 1269: @c with different flags.  De-ANSI-fication will work automatically.  In
 1270: @c this instance, the names of the object files would be chosen by
 1271: @c automake; they would be @file{false-true.o} and @file{true-true.o}.
 1272: @c (The name of the object files rarely matters.)
 1273: @c 
 1274: この状況では,Automakeによって,@file{true.c}は異なるフラグで二度コン
 1275: パイルされることになります.de-ANSI-ficationは自動的に動作します.この
 1276: 例では,オブジェクトファイルの名前はautomakeが選択します.それは
 1277: @file{false-true.o}と@file{true-true.o}になるでしょう.(オブジェクトファ
 1278: イルの名前が問題となることは滅多にありません.)
 1279: 
 1280: 
 1281: @node Invoking Automake
 1282: @c @chapter Creating a @file{Makefile.in}
 1283: @chapter @file{Makefile.in}の生成
 1284: 
 1285: @cindex Multiple configure.ac files
 1286: @cindex Invoking Automake
 1287: @cindex Automake, invoking
 1288: 
 1289: @c To create all the @file{Makefile.in}s for a package, run the
 1290: @c @code{automake} program in the top level directory, with no arguments.
 1291: @c @code{automake} will automatically find each appropriate
 1292: @c @file{Makefile.am} (by scanning @file{configure.ac}; @pxref{configure})
 1293: @c and generate the corresponding @file{Makefile.in}.  Note that
 1294: @c @code{automake} has a rather simplistic view of what constitutes a
 1295: @c package; it assumes that a package has only one @file{configure.ac}, at
 1296: @c the top.  If your package has multiple @file{configure.ac}s, then you
 1297: @c must run @code{automake} in each directory holding a
 1298: @c @file{configure.ac}.  (Alternatively, you may rely on Autoconf's
 1299: @c @code{autoreconf}, which is able to recurse your package tree and run
 1300: @c @code{automake} where appropriate.)
 1301: @c 
 1302: パッケージに対するすべての@file{Makefile.in}を作成するため,
 1303: @code{automake}プログラムを最上位のディレクトリで,引数無しで実行して
 1304: ください.@code{automake}は,(@file{configure.ac}をスキャンしながら
 1305: @pxref{configure}),自動的にそれぞれ適切な@file{Makefile.am}を見つけ,
 1306: 対応する@file{Makefile.in}を生成します.@code{automake}では,パッケー
 1307: ジを構成するものへの視野がかなり単純になっていることに注意してください.
 1308: それは,一つのパッケージにはトップディレクトリにただ一つ
 1309: @file{configure.ac}があることを想定しています.パッケージに複数の
 1310: @file{configure.ac}がある場合,@file{configure.ac}があるそれぞれのディ
 1311: レクトリで@code{automake}を実行する必要があります.(代わりの方法として,
 1312: パッケージツリーを巡回して,適切な場所で@code{automake}を実行すること
 1313: が可能な,Autoconfの@code{autoreconf}をあてにしてもかまいません.)
 1314: 
 1315: @c You can optionally give @code{automake} an argument; @file{.am} is
 1316: @c appended to the argument and the result is used as the name of the input
 1317: @c file.  This feature is generally only used to automatically rebuild an
 1318: @c out-of-date @file{Makefile.in}.  Note that @code{automake} must always
 1319: @c be run from the topmost directory of a project, even if being used to
 1320: @c regenerate the @file{Makefile.in} in some subdirectory.  This is
 1321: @c necessary because @code{automake} must scan @file{configure.ac}, and
 1322: @c because @code{automake} uses the knowledge that a @file{Makefile.in} is
 1323: @c in a subdirectory to change its behavior in some cases.
 1324: @c 
 1325: オプションとして@code{automake}に引数を与えることが可能です.
 1326: @file{.am}が引数に後置され,その結果が入力ファイルの名前として使用され
 1327: ます.この機能は,一般的に,時代遅れの@file{Makefile.in}を自動的にリビ
 1328: ルドするためだけに使用します.いくつかのサブディレクトリで
 1329: @file{Makefile.in}を再生成するために使用している場合でも,プロジェクト
 1330: のトップディレクトリで@code{automake}を実行する必要があることに注意し
 1331: てください.これは,@code{automake}は@file{configure.ac}をスキャンする
 1332: 必要があるため,そして,@code{automake}が状況によってその動作を変更す
 1333: るため,@file{Makefile.in}がサブディレクトリに存在するという知識を使用
 1334: するためです.
 1335: 
 1336: @vindex AUTOCONF
 1337: @c Automake will run @code{autoconf} to scan @file{configure.ac} and its
 1338: @c dependencies (@file{aclocal.m4}), therefore @code{autoconf} must be in
 1339: @c your @code{PATH}.  If there is an @code{AUTOCONF} variable in your
 1340: @c environment it will be used instead of @code{autoconf}, this allows you
 1341: @c to select a particular version of Autoconf.  By the way, don't
 1342: @c misunderstand this paragraph: Automake runs @code{autoconf} to
 1343: @c @strong{scan} your @file{configure.ac}, this won't build
 1344: @c @file{configure} and you still have to run @code{autoconf} yourself for
 1345: @c this purpose.
 1346: @c 
 1347: Automakeは,@file{configure.ac}をスキャンするためと,その依存性
 1348: (@file{aclocal.m4})のため,@code{autoconf}を実行するので,
 1349: @code{autoconf}は@code{PATH}に存在する必要があります.@code{AUTOCONF}
 1350: 変数が環境変数にある場合,@code{autoconf}の代わりにそれを使用し,これ
 1351: で特定のバージョンのAutoconfを選択することが可能になります.ところで,
 1352: この段落を誤解しないでください.Automakeは@file{configure.ac}を
 1353: @strong{スキャン}するために@code{autoconf}を実行するのであって,
 1354: @file{configure}をビルドするわけではありません.この目的に対しては
 1355: @code{autoconf}を自分で実行する必要があります.
 1356: 
 1357: @cindex Automake options
 1358: @cindex Options, Automake
 1359: @cindex Strictness, command line
 1360: 
 1361: @c @code{automake} accepts the following options:
 1362: @c 
 1363: @code{automake}は以下のオプションを受け入れます.
 1364: 
 1365: @cindex Extra files distributed with Automake
 1366: @cindex Files distributed with Automake
 1367: @cindex config.guess
 1368: 
 1369: @table @samp
 1370: @item -a
 1371: @itemx --add-missing
 1372: @opindex -a
 1373: @opindex --add-missing
 1374: @c Automake requires certain common files to exist in certain situations;
 1375: @c for instance @file{config.guess} is required if @file{configure.ac} runs
 1376: @c @code{AC_CANONICAL_HOST}.  Automake is distributed with several of these
 1377: @c files (@pxref{Auxiliary Programs}); this option will cause the missing
 1378: @c ones to be automatically added to the package, whenever possible.  In
 1379: @c general if Automake tells you a file is missing, try using this option.
 1380: @c By default Automake tries to make a symbolic link pointing to its own
 1381: @c copy of the missing file; this can be changed with @code{--copy}.
 1382: @c 
 1383: Automakeには,ある共通ファイルが存在することを要求する状況もあります.
 1384: 例えば,@file{configure.ac}で@code{AC_CANONICAL_HOST}を実行する場合,
 1385: @file{config.guess}が必要です.Automakeはこれらのファイルのいくつかと
 1386: 一緒に配布されています(@pxref{Auxiliary Programs}).このオプションは,
 1387: 可能であれば,足りないものを自動的にパッケージに加えます.一般的に,
 1388: Automakeが足りないファイルがあることを告げる場合,このオプションを使用
 1389: してみてください.デフォルトでAutomakeは,足りないファイルを指し示すシ
 1390: ンボリックリンクの作成を試みます.これは@code{--copy}で変更可能です.
 1391: 
 1392: @c Many of the potentially-missing files are common scripts whose
 1393: @c location may be specified via the @code{AC_CONFIG_AUX_DIR} macro.
 1394: @c Therefore, @code{AC_CONFIG_AUX_DIR}'s setting affects whether a
 1395: @c file is considered missing, and where the missing file is added
 1396: @c (@pxref{Optional}).
 1397: @c 
 1398: 足りない可能性のあるファイルの多くは共通スクリプトで,それは
 1399: @code{AC_CONFIG_AUX_DIR}マクロで指定した場所に配置してもかまいません.
 1400: このため,@code{AC_CONFIG_AUX_DIR}の設定は,ファイルが足りないかどうか
 1401: を考慮したり,足りないファイルを追加する場所(@pxref{Optional})に影響し
 1402: ます.
 1403: 
 1404: @item --libdir=@var{dir}
 1405: @opindex --libdir
 1406: @c Look for Automake data files in directory @var{dir} instead of in the
 1407: @c installation directory.  This is typically used for debugging.
 1408: @c 
 1409: Automakeのデータファイルを,インストールされたディレクトリではなく
 1410: @var{dir}で探します.これは通常,デバッグで使用されます.
 1411: 
 1412: @item -c
 1413: @opindex -c
 1414: @itemx --copy
 1415: @opindex --copy
 1416: @c When used with @code{--add-missing}, causes installed files to be
 1417: @c copied.  The default is to make a symbolic link.
 1418: @c 
 1419: @code{--add-missing}と一緒に使用するとき,インストールされるファイルを
 1420: コピーします.デフォルトではシンボリックリンクを作成します.
 1421: 
 1422: @item --cygnus
 1423: @opindex --cygnus
 1424: @c Causes the generated @file{Makefile.in}s to follow Cygnus rules, instead
 1425: @c of GNU or Gnits rules.  For more information, see @ref{Cygnus}.
 1426: @c 
 1427: GNUやGnitsの規則の代わりに,Cygnusの規則に従う@file{Makefile.in}を生成
 1428: します.詳細は,@ref{Cygnus}を参照してください.
 1429: 
 1430: @item -f
 1431: @opindex -f
 1432: @itemx --force-missing
 1433: @opindex --force-missing
 1434: @c When used with @code{--add-missing}, causes standard files to be reinstalled
 1435: @c even if they already exist in the source tree.  This involves removing
 1436: @c the file from the source tree before creating the new symlink (or, with
 1437: @c @code{--copy}, copying the new file).
 1438: @c 
 1439: @code{--add-missing}とともに使用するとき,標準のファイルがソースツリー
 1440: に存在する場合でもそれらを再インストールします.これで,新しいシンボリッ
 1441: クリンクを作成する前に,ソースツリーからファイルを削除します(または,
 1442: @code{--copy}とともに使用すると,新しいファイルをコピーします).
 1443: 
 1444: @item --foreign
 1445: @opindex --foreign
 1446: @c Set the global strictness to @samp{foreign}.  For more information, see
 1447: @c @ref{Strictness}.
 1448: @c 
 1449: グローバルな厳密さを@samp{foreign}に設定します.詳細は,
 1450: @ref{Strictness}を参照してください.
 1451: 
 1452: @item --gnits
 1453: @opindex --gnits
 1454: @c Set the global strictness to @samp{gnits}.  For more information, see
 1455: @c @ref{Gnits}.
 1456: @c 
 1457: グローバルな厳密さを@samp{gnits}に設定します.詳細は,@ref{Gnits}を参
 1458: 照してください.
 1459: 
 1460: @item --gnu
 1461: @opindex --gnu
 1462: @c Set the global strictness to @samp{gnu}.  For more information, see
 1463: @c @ref{Gnits}.  This is the default strictness.
 1464: @c 
 1465: グローバルな厳密さを@samp{gnu}に設定します.詳細は,@ref{Gnits}を参照
 1466: してください.これはデフォルトの厳密さです.
 1467: 
 1468: @item --help
 1469: @opindex --help
 1470: @c Print a summary of the command line options and exit.
 1471: @c 
 1472: コマンドラインオプションの概要を出力して終了します.
 1473: 
 1474: @item -i
 1475: @itemx --ignore-deps
 1476: @opindex -i
 1477: @c This disables the dependency tracking feature in generated
 1478: @c @file{Makefile}s; see @ref{Dependencies}.
 1479: @c 
 1480: これは,生成される@file{Makefile}での依存性追跡の機能を使用不可能にし
 1481: ます.@ref{Dependencies}を参照してください.
 1482: 
 1483: @item --include-deps
 1484: @opindex --include-deps
 1485: @c This enables the dependency tracking feature.  This feature is enabled
 1486: @c by default.  This option is provided for historical reasons only and
 1487: @c probably should not be used.
 1488: @c 
 1489: 依存性追跡の機能を使用可能にします.この機能は,デフォルトで使用可能で
 1490: す.このオプションは歴史的な理由でのみ提供されていて,おそらく使用すべ
 1491: きではありません.
 1492: 
 1493: @item --no-force
 1494: @opindex --no-force
 1495: @c Ordinarily @code{automake} creates all @file{Makefile.in}s mentioned in
 1496: @c @file{configure.ac}.  This option causes it to only update those
 1497: @c @file{Makefile.in}s which are out of date with respect to one of their
 1498: @c dependents.
 1499: @c 
 1500: 通常@code{automake}は,@file{configure.ac}で記述されているすべての
 1501: @file{Makefile.in}を作成します.このオプションは,依存性の一つの側面を
 1502: 用いて,時代遅れになっている@file{Makefile.in}だけを更新します.
 1503: 
 1504: @item -o @var{dir}
 1505: @itemx --output-dir=@var{dir}
 1506: @opindex -o
 1507: @opindex --output-dir
 1508: @c Put the generated @file{Makefile.in} in the directory @var{dir}.
 1509: @c Ordinarily each @file{Makefile.in} is created in the directory of the
 1510: @c corresponding @file{Makefile.am}.  This option is deprecated and will be
 1511: @c removed in a future release.
 1512: @c 
 1513: 生成された@file{Makefile.in}を@var{dir}に配置します.通常,それぞれの
 1514: @file{Makefile.in}は,@file{Makefile.am}に対応するディレクトリに作成さ
 1515: れます.このオプションの使用は反対で,将来のリリースでは削除されるでしょ
 1516: う.
 1517: 
 1518: @item -v
 1519: @itemx --verbose
 1520: @opindex -v
 1521: @opindex --verbose
 1522: @c Cause Automake to print information about which files are being read or
 1523: @c created.
 1524: @c 
 1525: 読み込まれたり作成されたりしているファイルの情報をAutomakeに出力させま
 1526: す.
 1527: 
 1528: @item --version
 1529: @opindex --version
 1530: @c Print the version number of Automake and exit.
 1531: @c 
 1532: Automakeのバージョンナンバーを出力して終了します.
 1533: 
 1534: @item -W CATEGORY
 1535: @item --warnings=@var{category}
 1536: @opindex -W
 1537: @opindex --warnings
 1538: @c Output warnings falling in @var{category}.  @var{category} can be
 1539: @c one of:
 1540: @c 
 1541: @var{category}に当てはまる警告を出力します.@var{category}は以下の一つ
 1542: です.
 1543: @table @samp
 1544: @item gnu
 1545: @c warnings related to the GNU Coding Standards
 1546: @c (@pxref{Top, , , standards, The GNU Coding Standards}).
 1547: @c 
 1548: GNU Coding Standards(@pxref{Top, , , standards, The GNU Coding
 1549: Standards})に関連する警告です.
 1550: @item obsolete
 1551: @c obsolete features or constructions
 1552: @c 
 1553: 時代遅れの機能と構成物です.
 1554: @item override
 1555: @c user redefinitions of Automake rules or variables
 1556: @c 
 1557: Automakeのルールと変数のユーザによる再定義.
 1558: @item portability
 1559: @c portability issues (e.g., use of Make features which are known not portable)
 1560: @c 
 1561: 移植性の問題です(例えば,移植性が無いことが知られているMakeの機能).
 1562: @item syntax
 1563: @c weird syntax, unused variables, typos
 1564: @c 
 1565: 怪しい構文,未使用の変数,入力ミスです.
 1566: @item unsupported
 1567: @c unsupported or incomplete features
 1568: @c 
 1569: サポートされていない,または不完全な機能です.
 1570: @item all
 1571: @c all the warnings
 1572: @c 
 1573: すべての警告です.
 1574: @item none
 1575: @c turn off all the warnings
 1576: @c 
 1577: すべての警告をオフにします.
 1578: @item error
 1579: @c treat warnings as errors
 1580: @c 
 1581: 警告をエラーとして処理します.
 1582: @end table
 1583: 
 1584: @c A category can be turned off by prefixing its name with @samp{no-}.  For
 1585: @c instance @samp{-Wno-syntax} will hide the warnings about unused
 1586: @c variables.
 1587: @c 
 1588: カテゴリは,その名前に@samp{no-}を前置することでオフにすることが可能で
 1589: す.例えば,@samp{-Wno-syntax}は未使用の変数に関する警告を隠します.
 1590: 
 1591: @c The categories output by default are @samp{syntax} and
 1592: @c @samp{unsupported}.  Additionally, @samp{gnu} is enabled in @samp{--gnu} and
 1593: @c @samp{--gnits} strictness.
 1594: @c 
 1595: デフォルトで出力されるカテゴリは,@samp{syntax}と@samp{unsupported}で
 1596: す.さらに,@samp{gnu}は@samp{--gnu}と@samp{--gnits}の厳密さで有効にな
 1597: ります.
 1598: 
 1599: @c @samp{portability} warnings are currently disabled by default, but they
 1600: @c will be enabled in @samp{--gnu} and @samp{--gnits} strictness in a
 1601: @c future release.
 1602: @c 
 1603: @samp{portability}の警告は,現在デフォルトでは無効になっていますが,将
 1604: 来のリリースでは,@samp{--gnu}と@samp{--gnits}の厳密さで有効になるでしょ
 1605: う.
 1606: 
 1607: @vindex WARNINGS
 1608: @c The environment variable @samp{WARNINGS} can contain a comma separated
 1609: @c list of categories to enable.  It will be taken into account before the
 1610: @c command-line switches, this way @samp{-Wnone} will also ignore any
 1611: @c warning category enabled by @samp{WARNINGS}.  This variable is also used
 1612: @c by other tools like @command{autoconf}; unknown categories are ignored
 1613: @c for this reason.
 1614: @c 
 1615: 環境変数@samp{WARNINGS}に,カンマで分けた有効にするカテゴリのリストを
 1616: 含めることが可能です.それは,コマンドラインスイッチの前に累積され,こ
 1617: の方法で@samp{-Wnone}することで,@samp{WARNINGS}で有効にしたすべての警
 1618: 告カテゴリを無視します.この変数は@command{autoconf}のような他のツール
 1619: でも使用されます.このため,未知のカテゴリは無視されます.
 1620: 
 1621: @end table
 1622: 
 1623: 
 1624: @node configure
 1625: @c @chapter Scanning @file{configure.ac}
 1626: @chapter @file{configure.ac}のスキャン
 1627: 
 1628: @cindex configure.ac, scanning
 1629: @cindex Scanning configure.ac
 1630: 
 1631: @c Automake scans the package's @file{configure.ac} to determine certain
 1632: @c information about the package.  Some @code{autoconf} macros are required
 1633: @c and some variables must be defined in @file{configure.ac}.  Automake
 1634: @c will also use information from @file{configure.ac} to further tailor its
 1635: @c output.
 1636: @c 
 1637: Automakeは,パッケージに関する特定の情報を決定するために,パッケージの
 1638: @file{configure.ac}をスキャンします.必要な@code{autoconf}マクロもあれ
 1639: ば,@file{configure.ac}で定義する必要がある変数もあります.Automakeは,
 1640: 出力物を調整するためにも,@file{configure.ac}からの情報を使用します.
 1641: 
 1642: @c Automake also supplies some Autoconf macros to make the maintenance
 1643: @c easier.  These macros can automatically be put into your
 1644: @c @file{aclocal.m4} using the @code{aclocal} program.
 1645: @c 
 1646: Automakeは,管理をより容易にするためのAutoconfマクロも提供しています.
 1647: これらのマクロは,@code{aclocal}プログラムを使用して自動的に
 1648: @file{aclocal.m4}に書き込むことが可能です.
 1649: 
 1650: @menu
 1651: * Requirements::                Configuration requirements
 1652: * Optional::                    Other things Automake recognizes
 1653: * Invoking aclocal::            Auto-generating aclocal.m4
 1654: * aclocal options::             aclocal command line arguments
 1655: * Macro search path::           Modifying aclocal's search path
 1656: * Macros::                      Autoconf macros supplied with Automake
 1657: * Extending aclocal::           Writing your own aclocal macros
 1658: * Local Macros::                Organizing local macros
 1659: * Future of aclocal::           aclocal's scheduled death
 1660: @end menu
 1661: 
 1662: 
 1663: @node Requirements
 1664: @c @section Configuration requirements
 1665: @section コンフィグレーションの必要条件
 1666: 
 1667: @cindex Automake requirements
 1668: @cindex Requirements of Automake
 1669: 
 1670: @c The one real requirement of Automake is that your @file{configure.ac}
 1671: @c call @code{AM_INIT_AUTOMAKE}.  This macro does several things which are
 1672: @c required for proper Automake operation (@pxref{Macros}).
 1673: @c 
 1674: Automakeが本当に必要としていることは一つで,@file{configure.ac}でマク
 1675: ロ@code{AM_INIT_AUTOMAKE}を呼び出すことです.このマクロは,適切な
 1676: Automakeの処理に必要なことをいくつか行ないます(@pxref{Macros}).
 1677: @cvindex AM_INIT_AUTOMAKE
 1678: 
 1679: @c Here are the other macros which Automake requires but which are not run
 1680: @c by @code{AM_INIT_AUTOMAKE}:
 1681: @c 
 1682: Automakeは必要としますが,@code{AM_INIT_AUTOMAKE}で実行されないマクロ
 1683: には,以下のものがあります.
 1684: 
 1685: @table @code
 1686: @item AC_CONFIG_FILES
 1687: @itemx AC_OUTPUT
 1688: @c Automake uses these to determine which files to create (@pxref{Output, ,
 1689: @c Creating Output Files, autoconf, The Autoconf Manual}).  A listed file
 1690: @c is considered to be an Automake generated @file{Makefile} if there
 1691: @c exists a file with the same name and the @file{.am} extension appended.
 1692: @c Typically, @code{AC_CONFIG_FILES([foo/Makefile])} will cause Automake to
 1693: @c generate @file{foo/Makefile.in} if @file{foo/Makefile.am} exists.
 1694: @c 
 1695: Automakeは,作成するファイルを決定するためにこれらを使用します
 1696: (@pxref{Output, , Creating Output Files, autoconf, The Autoconf
 1697: Manual}).同じ名前のファイルが@file{.am}拡張子が後置されている状態で存
 1698: 在している場合,リストアップされているファイルは,Automakeが
 1699: @file{Makefile}を生成するものと考慮します.通常,
 1700: @code{AC_CONFIG_FILES([foo/Makefile])}で,@file{foo/Makefile.am}が存在
 1701: する場合は,Automakeが@file{foo/Makefile.in} を生成します.
 1702: 
 1703: @c When using @code{AC_CONFIG_FILES} with multiple input files, as in
 1704: @c @code{AC_CONFIG_FILES([Makefile:top.in:Makefile.in:bot.in])}, Automake
 1705: @c will generate the first @file{.in} input file for which a @file{.am}
 1706: @c file exists.  If no such file exists the output file is not considered
 1707: @c to be Automake generated.
 1708: @c 
 1709: @code{AC_CONFIG_FILES([Makefile:top.in:Makefile.in:bot.in])}のように,
 1710: 複数の入力ファイルで@code{AC_CONFIG_FILES}を使用しているとき,Automake 
 1711: は,存在する@file{.am}ファイルに対して,最初の@file{.in}入力ファイルを
 1712: 生成します.そのようなファイルが存在しない場合,出力ファイルはAutomake 
 1713: が生成したものと考えません.
 1714: 
 1715: @c Files created by @code{AC_CONFIG_FILES} are removed by @code{make distclean}.
 1716: @c 
 1717: @code{AC_CONFIG_FILES}で生成されたファイルは,@code{make distclean}で
 1718: 削除されます.
 1719: @cvindex AC_CONFIG_FILES
 1720: @cvindex AC_OUTPUT
 1721: @end table
 1722: 
 1723: 
 1724: @node Optional
 1725: @c @section Other things Automake recognizes
 1726: @section その他のAutomakeが理解すること
 1727: 
 1728: @cindex Macros Automake recognizes
 1729: @cindex Recognized macros by Automake
 1730: 
 1731: @c Every time Automake is run it calls Autoconf to trace
 1732: @c @file{configure.ac}.  This way it can recognize the use of certain
 1733: @c macros and tailor the generated @file{Makefile.in} appropriately.
 1734: @c Currently recognized macros and their effects are:
 1735: @c 
 1736: Automakeは実行されるたびに,@file{configure.ac}を追跡するために
 1737: Autoconfを呼び出します.この方法で,特定のマクロの使用を認識し,生成さ
 1738: れる@file{Makefile.in}を適切に調整します.現在認識されるマクロとそれら
 1739: の効果は,以下のようになっています.
 1740: 
 1741: @table @code
 1742: @item AC_CONFIG_HEADERS
 1743: @c Automake will generate rules to rebuild these headers.  Older versions
 1744: @c of Automake required the use of @code{AM_CONFIG_HEADER}
 1745: @c (@pxref{Macros}); this is no longer the case today.
 1746: @c 
 1747: Automakeはこれらのヘッダをリビルドするルールを生成します.古いバージョ
 1748: ンのAutomakeは@code{AM_CONFIG_HEADER}の使用を要求していました
 1749: (@pxref{Macros}).これは今日では既に事実ではありません.
 1750: @cvindex AC_CONFIG_HEADERS
 1751: 
 1752: @item AC_CONFIG_LINKS
 1753: @c Automake will generate rules to remove @file{configure} generated links on
 1754: @c @code{make distclean} and to distribute named source files as part of
 1755: @c @code{make dist}.
 1756: @c 
 1757: @file{configure}が生成したリンクをAutomakeは@code{make distclean}で削
 1758: 除し,@code{make dist}の部分で生成される指名されたソースファイルを配布
 1759: するためのルールを生成します.
 1760: @cvindex AC_CONFIG_LINKS
 1761: 
 1762: @item AC_CONFIG_AUX_DIR
 1763: @c Automake will look for various helper scripts, such as
 1764: @c @file{install-sh}, in the directory named in this macro invocation.
 1765: @c 
 1766: Automakeは,@file{install-sh}のような様々なヘルパースクリプトを,この
 1767: マクロの呼び出しで指定されたディレクトリで探します.
 1768: @c This list is accurate relative to version 1.8
 1769: @c 
 1770: @c (The full list of scripts is: @file{config.guess}, @file{config.sub},
 1771: @c @file{depcomp}, @file{elisp-comp}, @file{compile}, @file{install-sh},
 1772: @c @file{ltmain.sh}, @file{mdate-sh}, @file{missing}, @file{mkinstalldirs},
 1773: @c @file{py-compile}, @file{texinfo.tex}, and @file{ylwrap}.)  Not all
 1774: @c scripts are always searched for; some scripts will only be sought if the
 1775: @c generated @file{Makefile.in} requires them.
 1776: @c 
 1777: (スクリプトの完全なリストは以下のとおりです.@file{config.guess},
 1778: @file{config.sub}, @file{depcomp}, @file{elisp-comp}, 
 1779: @file{compile},@file{install-sh}, @file{ltmain.sh}, @file{mdate-sh}, 
 1780: @file{missing},@file{mkinstalldirs}, @file{py-compile}, 
 1781: @file{texinfo.tex},そして@file{ylwrap})すべてのスクリプトが常に探され
 1782: るわけではありません.@file{Makefile.in}の要求で生成された場合だけ探さ
 1783: れるスクリプトもあります.
 1784: @cvindex AC_CONFIG_AUX_DIR
 1785: 
 1786: @c If @code{AC_CONFIG_AUX_DIR} is not given, the scripts are looked for in
 1787: @c their @samp{standard} locations.  For @file{mdate-sh},
 1788: @c @file{texinfo.tex}, and @file{ylwrap}, the standard location is the
 1789: @c source directory corresponding to the current @file{Makefile.am}.  For
 1790: @c the rest, the standard location is the first one of @file{.}, @file{..},
 1791: @c or @file{../..} (relative to the top source directory) that provides any
 1792: @c one of the helper scripts.  @xref{Input, , Finding `configure' Input,
 1793: @c autoconf, The Autoconf Manual}.
 1794: @c 
 1795: @code{AC_CONFIG_AUX_DIR}が与えられていない場合,スクリプトは
 1796: @samp{standard}な場所で探されます.@file{mdate-sh},@file{texinfo.tex},
 1797: そして@file{ylwrap}の標準的な場所は,現在の@file{Makefile.am}に対応す
 1798: るソースディレクトリです.それ以外のものの標準的な場所は,最初は
 1799: @file{.},@file{..},または@file{../..}(トップソースディレクトリに関連) 
 1800: で,それは経る羽ースクリプトの一つを提供しています.@xref{Input, ,
 1801: Finding `configure' Input, autoconf, The Autoconf Manual}.
 1802: 
 1803: @c Required files from @code{AC_CONFIG_AUX_DIR} are automatically
 1804: @c distributed, even if there is no @file{Makefile.am} in this directory.
 1805: @c 
 1806: @code{AC_CONFIG_AUX_DIR}で要求されるファイルは,このディレクトリに
 1807: @file{Makefile.am}が無い場合でも自動的に配布されます.
 1808: 
 1809: @item AC_CANONICAL_HOST
 1810: @c Automake will ensure that @file{config.guess} and @file{config.sub}
 1811: @c exist.  Also, the @file{Makefile} variables @samp{host_alias} and
 1812: @c @samp{host_triplet} are introduced.  See @ref{Canonicalizing, ,
 1813: @c Getting the Canonical System Type, autoconf, The Autoconf Manual}.
 1814: @c 
 1815: Automakeは,@file{config.guess}と@file{config.sub}が確実に存在するよう
 1816: にします.また,@file{Makefile}変数の@samp{host_alias}と
 1817: @samp{host_triplet}も導入します.@ref{Canonicalizing, , Getting the
 1818: Canonical System Type, autoconf, The Autoconf Manual}を参照してくださ
 1819: い.
 1820: @cvindex AC_CANONICAL_HOST
 1821: @vindex host_alias
 1822: @vindex host_triplet
 1823: 
 1824: @item AC_CANONICAL_SYSTEM
 1825: @c This is similar to @code{AC_CANONICAL_HOST}, but also defines the
 1826: @c @file{Makefile} variables @samp{build_alias} and @samp{target_alias}.
 1827: @c @xref{Canonicalizing, , Getting the Canonical System Type, autoconf, The
 1828: @c Autoconf Manual}.
 1829: @c 
 1830: これは@code{AC_CANONICAL_HOST}に似ていますが,@file{Makefile}変数の
 1831: @samp{build_alias}と@samp{target_alias}も定義します.
 1832: @xref{Canonicalizing, , Getting the Canonical System Type, autoconf,
 1833: The Autoconf Manual}.
 1834: @cvindex AC_CANONICAL_SYSTEM
 1835: @vindex build_alias
 1836: @vindex target_alias
 1837: 
 1838: @item AC_LIBSOURCE
 1839: @itemx AC_LIBSOURCES
 1840: @itemx AC_LIBOBJ
 1841: @c Automake will automatically distribute any file listed in
 1842: @c @code{AC_LIBSOURCE} or @code{AC_LIBSOURCES}.
 1843: @c 
 1844: Automakeは,@code{AC_LIBSOURCE}や@code{AC_LIBSOURCES}でリストアップさ
 1845: れているすべてのファイルを自動的に配布します.
 1846: 
 1847: @c Note that the @code{AC_LIBOBJ} macro calls @code{AC_LIBSOURCE}.  So if
 1848: @c an Autoconf macro is documented to call @code{AC_LIBOBJ([file])}, then
 1849: @c @file{file.c} will be distributed automatically by Automake.  This
 1850: @c encompasses many macros like @code{AC_FUNC_ALLOCA},
 1851: @c @code{AC_FUNC_MEMCMP}, @code{AC_REPLACE_FUNCS}, and others.
 1852: @c 
 1853: @code{AC_LIBOBJS}マクロが@code{AC_LIBSOURCE}を呼び出すことに注意してく
 1854: ださい.そのため,Autoconfマクロが@code{AC_LIBOBJ([file])}を呼び出すと
 1855: 説明されている場合,@file{file.c}はAutomakeで自動的に配布されます.こ
 1856: れには,@code{AC_FUNC_ALLOCA},@code{AC_FUNC_MEMCMP},
 1857: @code{AC_REPLACE_FUNCS}等の多くのマクロが含まれます.
 1858: @cvindex AC_LIBOBJ
 1859: @cvindex AC_LIBSOURCE
 1860: @cvindex AC_LIBSOURCES
 1861: 
 1862: @c By the way, direct assignments to @code{LIBOBJS} are no longer
 1863: @c supported.  You should always use @code{AC_LIBOBJ} for this purpose.
 1864: @c @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs. @code{LIBOBJS},
 1865: @c autoconf, The Autoconf Manual}.
 1866: @c 
 1867: ところで,直接@code{LIBOBJS}に代入することは,既にサポートされていませ
 1868: ん.この目的では常に@code{AC_LIBOBJ}を使用すべきです.@xref{AC_LIBOBJ
 1869: vs LIBOBJS, , @code{AC_LIBOBJ} vs. @code{LIBOBJS}, autoconf, The
 1870: Autoconf Manual}.
 1871: @cvindex LIBOBJS
 1872: 
 1873: @item AC_PROG_RANLIB
 1874: @c This is required if any libraries are built in the package.
 1875: @c @xref{Particular Programs, , Particular Program Checks, autoconf, The
 1876: @c Autoconf Manual}.
 1877: @c 
 1878: これは,ライブラリをビルドするパッケージの場合に必要になります.
 1879: @xref{Particular Programs, , Particular Program Checks, autoconf, The
 1880: Autoconf Manual}.
 1881: @cvindex AC_PROG_RANLIB
 1882: 
 1883: @item AC_PROG_CXX
 1884: @c This is required if any C++ source is included.  @xref{Particular
 1885: @c Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
 1886: @c 
 1887: これは,C++ソースが含まれる場合に必要になります.@xref{Particular
 1888: Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
 1889: @cvindex AC_PROG_CXX
 1890: 
 1891: @item AC_PROG_F77
 1892: @c This is required if any Fortran 77 source is included.  This macro is
 1893: @c distributed with Autoconf version 2.13 and later.  @xref{Particular
 1894: @c Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
 1895: @c 
 1896: これは,Fortran77ソースが含まれる場合に必要になります.このマクロは
 1897: Autoconfのバージョン2.13以降で配布されます.@xref{Particular Programs,
 1898: , Particular Program Checks, autoconf, The Autoconf Manual}.
 1899: @cvindex AC_PROG_F77
 1900: 
 1901: @item AC_F77_LIBRARY_LDFLAGS
 1902: @c This is required for programs and shared libraries that are a mixture of
 1903: @c languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
 1904: @c C++}).  @xref{Macros, , Autoconf macros supplied with Automake}.
 1905: @c 
 1906: これはFortran77を含む言語が混在しているプログラムと共有ライブラリに対
 1907: して必要になります(@pxref{Mixing Fortran 77 With C and C++}).
 1908: @xref{Macros, , Autoconf macros supplied with Automake}.
 1909: @cvindex AC_F77_LIBRARY_LDFLAGS
 1910: 
 1911: @item AC_PROG_LIBTOOL
 1912: @c Automake will turn on processing for @code{libtool} (@pxref{Top, ,
 1913: @c Introduction, libtool, The Libtool Manual}).
 1914: @c 
 1915: Automakeは@code{libtool}に対する処理を開始します(@pxref{Top, ,
 1916: Introduction, libtool, The Libtool Manual}).
 1917: @cvindex AC_PROG_LIBTOOL
 1918: 
 1919: @item AC_PROG_YACC
 1920: @c If a Yacc source file is seen, then you must either use this macro or
 1921: @c define the variable @samp{YACC} in @file{configure.ac}.  The former is
 1922: @c preferred (@pxref{Particular Programs, , Particular Program Checks,
 1923: @c autoconf, The Autoconf Manual}).
 1924: @c 
 1925: Yaccソースファイルがある場合,このマクロを使用するか,
 1926: @file{configure.ac}で変数@samp{YACC}を定義する必要があります.前者が好
 1927: まれます(@pxref{Particular Programs, , Particular Program Checks,
 1928: autoconf, The Autoconf Manual}).
 1929: @cvindex AC_PROG_YACC
 1930: @cvindex YACC
 1931: 
 1932: @item AC_PROG_LEX
 1933: @c If a Lex source file is seen, then this macro must be used.
 1934: @c @xref{Particular Programs, , Particular Program Checks, autoconf, The
 1935: @c Autoconf Manual}.
 1936: @c 
 1937: Lexソースファイルがある場合,このマクロを使用する必要があります.
 1938: @xref{Particular Programs, , Particular Program Checks, autoconf, The
 1939: Autoconf Manual}.
 1940: @cvindex AC_PROG_LEX
 1941: 
 1942: @item AC_SUBST
 1943: @cvindex AC_SUBST
 1944: @c The first argument is automatically defined as a variable in each
 1945: @c generated @file{Makefile.in}.  @xref{Setting Output Variables, , Setting
 1946: @c Output Variables, autoconf, The Autoconf Manual}.
 1947: @c 
 1948: 最初の引数は,それぞれの生成される@file{Makefile.in}で,変数として自動
 1949: 的に定義されます.@xref{Setting Output Variables, , Setting Output
 1950: Variables, autoconf, The Autoconf Manual}.
 1951: 
 1952: @c If the Autoconf manual says that a macro calls @code{AC_SUBST} for
 1953: @c @var{var}, or defines the output variable @var{var} then @var{var} will
 1954: @c be defined in each @file{Makefile.in} generated by Automake.
 1955: @c E.g. @code{AC_PATH_XTRA} defines @code{X_CFLAGS} and @code{X_LIBS}, so
 1956: @c you can use these variables in any @file{Makefile.am} if
 1957: @c @code{AC_PATH_XTRA} is called.
 1958: @c 
 1959: Autoconfマニュアルで,マクロが@var{var}に対して@code{AC_SUBST}を呼び出
 1960: すとか,出力変数@var{var}を定義するといった説明がある場合,@var{var}は
 1961: それぞれのAutomakeが生成する@file{Makefile.in}で定義されます.例えば,
 1962: @code{AC_PATH_XTRA}は@code{X_CFLAGS}と@code{X_LIBS}を定義するので,
 1963: @code{AC_PATH_XTRA}が呼び出されている場合,@file{Makefile.am}でこれら
 1964: 変数と使用することが可能です.
 1965: 
 1966: @item AM_C_PROTOTYPES
 1967: @c This is required when using automatic de-ANSI-fication; see @ref{ANSI}.
 1968: @c 
 1969: これは,de-ANSI-ficationを自動的に使用するときに必要です.@ref{ANSI}を
 1970: 参照してください.
 1971: @cvindex AM_C_PROTOTYPES
 1972: 
 1973: @item AM_GNU_GETTEXT
 1974: @c This macro is required for packages which use GNU gettext
 1975: @c (@pxref{gettext}).  It is distributed with gettext.  If Automake sees
 1976: @c this macro it ensures that the package meets some of gettext's
 1977: @c requirements.
 1978: @c 
 1979: このマクロはGNU gettextを使うパッケージに対して必要になります
 1980: (@pxref{gettext}).それはgettextとともに配布されます.Automakeがこのマ
 1981: クロを見つけた場合,このマクロはパッケージがgettextの必要条件のいくつ
 1982: かを確実に満たすようにします.
 1983: @cvindex AM_GNU_GETTEXT
 1984: 
 1985: @item AM_MAINTAINER_MODE
 1986: @opindex --enable-maintainer-mode
 1987: @c This macro adds a @samp{--enable-maintainer-mode} option to
 1988: @c @code{configure}.  If this is used, @code{automake} will cause
 1989: @c @samp{maintainer-only} rules to be turned off by default in the
 1990: @c generated @file{Makefile.in}s. This macro defines the
 1991: @c @samp{MAINTAINER_MODE} conditional, which you can use in your own
 1992: @c @file{Makefile.am}.
 1993: @c 
 1994: このマクロは@code{configure}に@samp{--enable-maintainer-mode}オプショ
 1995: ンを加えます.これが使用されている場合,@code{automake}は生成された
 1996: @file{Makefile.in}内の@samp{maintainer-only}ルールをデフォルトで停止し
 1997: ます.このマクロは@samp{MAINTAINER_MODE}条件を定義し,自分の
 1998: @file{Makefile.am}で使用することが可能です.
 1999: @cvindex AM_MAINTAINER_MODE
 2000: 
 2001: @item m4_include
 2002: @cvindex m4_include
 2003: @c Files included by @file{configure.ac} using this macro will be
 2004: @c detected by Automake and automatically distributed.  They will also
 2005: @c appear as dependencies in @file{Makefile} rules.
 2006: @c 
 2007: @file{configure.ac}でインクルードされるこのマクロを使用しているファイ
 2008: ルはAutomakeで検索され,自動的に配布されます.それらは@file{Makefile} 
 2009: のルールで依存性として表現されます.
 2010: 
 2011: @c @code{m4_include} is seldom used by @file{configure.ac} authors, but
 2012: @c can appear in @file{aclocal.m4} when @command{aclocal} detects that
 2013: @c some required macros come from files local to your package (as
 2014: @c opposed to macros installed in a system-wide directory, see
 2015: @c @ref{Invoking aclocal}).
 2016: @c 
 2017: @code{m4_include}が@file{configure.ac}の著者によって使用されることは滅
 2018: 多にありませんが,@command{aclocal}がパッケージローカルのファイルにあ
 2019: るマクロを要求していることを検出したとき,@file{aclocal.m4}に現れるは
 2020: ずです(システム全域のディレクトリにインストールされているマクロとは異
 2021: なります.@ref{Invoking aclocal}を参照して下さい).
 2022: 
 2023: @end table
 2024: 
 2025: 
 2026: @node Invoking aclocal
 2027: @c @section Auto-generating aclocal.m4
 2028: @section aclocal.m4の自動生成
 2029: 
 2030: @cindex Invoking aclocal
 2031: @cindex aclocal, Invoking
 2032: 
 2033: @c Automake includes a number of Autoconf macros which can be used in
 2034: @c your package (@pxref{Macros}); some of them are actually required by
 2035: @c Automake in certain situations.  These macros must be defined in your
 2036: @c @file{aclocal.m4}; otherwise they will not be seen by
 2037: @c @command{autoconf}.
 2038: @c 
 2039: Automakeには,パッケージで使用可能な多くのAutoconfマクロがあります
 2040: (@pxref{Macros}).状況によってはAutomakeが実際に必要とするものもありま
 2041: す.これらのマクロは@file{aclocal.m4}で定義する必要があります.さもな
 2042: ければ,それらは@code{autoconf}では見つからないでしょう.
 2043: 
 2044: @c The @command{aclocal} program will automatically generate
 2045: @c @file{aclocal.m4} files based on the contents of @file{configure.ac}.
 2046: @c This provides a convenient way to get Automake-provided macros,
 2047: @c without having to search around.  The @command{aclocal} mechanism
 2048: @c allows other packages to supply their own macros (@pxref{Extending
 2049: @c aclocal}).  You can also use it to maintain your own set of custom
 2050: @c macros (@pxref{Local Macros}).
 2051: @c 
 2052: @code{aclocal}プログラムは,@file{configure.ac}の内容に基づいて自動的
 2053: に@file{aclocal.m4}ファイルを生成します.これは,Automakeが提供するマ
 2054: クロを入手する便利な方法を提供し,それらを探し回る必要がないようになっ
 2055: ています.@code{aclocal}のメカニズムで,他のパッケージに対して独自のマ
 2056: クロを提供することも可能です(@pxref{Extending aclocal}).また,カスタ
 2057: ムマクロの独自セットを管理するためにそれを使用することも可能です
 2058: (@pxref{Local Macros}).
 2059: 
 2060: @c At startup, @command{aclocal} scans all the @file{.m4} files it can
 2061: @c find, looking for macro definitions (@pxref{Macro search path}).  Then
 2062: @c it scans @file{configure.ac}.  Any mention of one of the macros found
 2063: @c in the first step causes that macro, and any macros it in turn
 2064: @c requires, to be put into @file{aclocal.m4}.
 2065: @c 
 2066: はじめに,@code{aclocal}はマクロ定義を探しながら見つかったすべての
 2067: @file{.m4}ファイルをスキャンします(@pxref{Macro search path}).それか
 2068: ら@file{configure.ac}をスキャンします.最初のステップで見つかったマク
 2069: ロの記述によって,マクロとマクロが要求するファイルを@file{aclocal.m4} 
 2070: に書き込みます.
 2071: 
 2072: @c @emph{Putting} the file that contains the macro definition into
 2073: @c @file{aclocal.m4} is usually done by copying the entire text of this
 2074: @c file, including unused macro definitions as well as both @samp{#} and
 2075: @c @samp{dnl} comments.  If you want to make a comment which will be
 2076: @c completely ignored by @command{aclocal}, use @samp{##} as the comment
 2077: @c leader.
 2078: @c 
 2079: マクロ定義を含むファイルを@file{aclocal.m4}に@emph{書くこと}は,通常こ
 2080: のファイルのテキスト全体を,@samp{#}と@samp{dnl}コメントを含め,未使用
 2081: のマクロまで含めてコピーすることで実行されます.@code{aclocal}がコメン
 2082: トを完全に無視するようにしたい場合は,コメントの最初に@samp{##}を使用
 2083: して下さい.
 2084: 
 2085: @c When @command{aclocal} detects that the file containing the macro
 2086: @c definition is in a subdirectory of your package, it will use
 2087: @c @code{m4_include} instead of copying it; this makes the package
 2088: @c smaller and eases dependency tracking.  This only works if the
 2089: @c subdirectory containing the macro was specified as a relative search
 2090: @c path with @command{aclocal}'s @code{-I} argument.  (@pxref{Local
 2091: @c Macros} for an example.)  Any macro which is found in a system-wide
 2092: @c directory, or via an absolute search path will be copied.
 2093: @c 
 2094: @command{aclocal}がマクロ定義を含んでいるファイルを,パッケージのサブ
 2095: ディレクトリで見つけた場合,それはコピーする代わりに@code{m4_include} 
 2096: を使用します.これで,パッケージはより小さくなり,依存性の追跡がより容
 2097: 易になります.これは,マクロを含んでいるサブディレクトリが,
 2098: @command{aclocal}の@code{-I}の引数で相対的な検索パスとして指定されてい
 2099: る場合だけ動作します.(例は,@pxref{Local Macros})システム全体で,また
 2100: は絶対パスで検索され見つかったマクロはコピーされます.
 2101: 
 2102: @c The contents of @file{acinclude.m4}, if it exists, are also
 2103: @c automatically included in @file{aclocal.m4}.  We recommend against
 2104: @c using @file{acinclude.m4} in new packages (@pxref{Local Macros}).
 2105: @c 
 2106: @file{acinclude.m4}の内容も,存在する場合は自動的に@file{aclocal.m4}に
 2107: 含められます.我々は,新しいパッケージでの@file{acinclude.m4}の使用に
 2108: 反対します(@pxref{Local Macros}).
 2109: 
 2110: @vindex AUTOM4TE
 2111: @c While computing @file{aclocal.m4}, @code{aclocal} runs @code{autom4te}
 2112: @c (@pxref{Using autom4te, , Using @code{Autom4te}, autoconf, The
 2113: @c Autoconf Manual}) in order to trace the macros which are really used,
 2114: @c and omit from @file{aclocal.m4} all macros which are mentioned but
 2115: @c otherwise unexpanded (this can happen when a macro is called
 2116: @c conditionally).  @code{autom4te} is expected to be in the @code{PATH},
 2117: @c just as @code{autoconf}.  Its location can be overridden using the
 2118: @c @code{AUTOM4TE} environment variable.
 2119: @c 
 2120: @file{aclocal.m4}を調べている間,実際に利用されているマクロを追跡し,
 2121: 記述されているが要望されていないすべてのマクロを@file{aclocal.m4}から
 2122: 削除するため,@code{aclocal}は@code{autom4te}を実行します(@pxref{Using
 2123: autom4te, , Using @code{Autom4te}, autoconf, The Autoconf Manual}).
 2124: @code{autom4te}は@code{autoconf}と同じ@code{PATH}にあることを期待され
 2125: ています.その場所は,@code{AUTOM4TE}環境変数を使用して優先させること
 2126: が可能です.
 2127: 
 2128: @menu
 2129: * aclocal options::             Options supported by aclocal
 2130: * Macro search path::           How aclocal finds .m4 files
 2131: @end menu
 2132: 
 2133: @node aclocal options
 2134: @c @section aclocal options
 2135: @section aclocalのオプション
 2136: 
 2137: @cindex aclocal, Options
 2138: @cindex Options, aclocal
 2139: 
 2140: @c @code{aclocal} accepts the following options:
 2141: @c 
 2142: @code{aclocal}は,以下のオプションを受け入れます.
 2143: 
 2144: @table @code
 2145: @item --acdir=@var{dir}
 2146: @opindex --acdir
 2147: @c Look for the macro files in @var{dir} instead of the installation
 2148: @c directory.  This is typically used for debugging.
 2149: @c 
 2150: インストールされたディレクトリの代わりに,@var{dir}でマクロファイルを
 2151: 探します.これは,通常デバッグで使用します.
 2152: 
 2153: @item --help
 2154: @opindex --help
 2155: @c Print a summary of the command line options and exit.
 2156: @c 
 2157: コマンドラインオプションの概要を出力し,終了します.
 2158: 
 2159: @item -I @var{dir}
 2160: @opindex -I
 2161: @c Add the directory @var{dir} to the list of directories searched for
 2162: @c @file{.m4} files.
 2163: @c 
 2164: @file{.m4}ファイルを探すディレクトリのリストに,@var{dir}ディレクトリ
 2165: を追加します.
 2166: 
 2167: @item --force
 2168: @opindex --force
 2169: @c Always overwrite the output file.  The default is to overwrite the output
 2170: @c file only when really needed, i.e., when its contents changes or if one
 2171: @c of its dependencies is younger.
 2172: @c 
 2173: 出力ファイルを常に上書きします.デフォルトは,必要なときだけ,すなわち
 2174: その内容が変更されたときや,その依存元がより新しい場合,出力ファイルを
 2175: 上書きします.
 2176: 
 2177: @item --output=@var{file}
 2178: @opindex --output
 2179: @c Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
 2180: @c 
 2181: @file{aclocal.m4}の代わりに,@var{file}に出力を書き込みます.
 2182: 
 2183: @item --print-ac-dir
 2184: @opindex --print-ac-dir
 2185: @c Prints the name of the directory which @code{aclocal} will search to
 2186: @c find third-party @file{.m4} files.  When this option is given, normal
 2187: @c processing is suppressed.  This option can be used by a package to
 2188: @c determine where to install a macro file.
 2189: @c 
 2190: サードパーティーの@file{.m4}ファイルを見つけるために@code{aclocal}が検
 2191: 索するディレクトリの名前を出力します.このオプションが与えられていると
 2192: き,標準的な処理は行われません.このオプションは,パッケージがマクロファ
 2193: イルをインストールする場所を決定するために使用することが可能です.
 2194: 
 2195: @item --verbose
 2196: @opindex --verbose
 2197: @c Print the names of the files it examines.
 2198: @c 
 2199: 調査しているファイルの名前を出力します.
 2200: 
 2201: @item --version
 2202: @opindex --version
 2203: @c Print the version number of Automake and exit.
 2204: @c 
 2205: Automakeのバージョンナンバーを出力し,終了します.
 2206: @end table
 2207: 
 2208: @node Macro search path
 2209: @c @section Macro search path
 2210: @section マクロ検索パス
 2211: 
 2212: @cindex Macro search path
 2213: @cindex aclocal search path
 2214: 
 2215: @c By default, @command{aclocal} searches for @file{.m4} files in the following
 2216: @c directories, in this order:
 2217: @c 
 2218: デフォルトで,@command{aclocal}は@file{.m4}ファイルを以下のディレクト
 2219: リで,この順番に探します.
 2220: 
 2221: @table @code
 2222: @item @var{acdir-APIVERSION}
 2223: @c This is where the @file{.m4} macros distributed with automake itself
 2224: @c are stored.  @var{APIVERSION} depends on the automake release used;
 2225: @c for automake 1.6.x, @var{APIVERSION} = @code{1.6}.
 2226: @c 
 2227: これは,automake自身が配布している@file{.m4}マクロを保持している場所で
 2228: す.@var{APIVERSION}は,使用しているautomakeのリリースに依存します.
 2229: automake 1.6.xに対して,@var{APIVERSION} = @code{1.6}になります.
 2230: 
 2231: @item @var{acdir}
 2232: @c This directory is intended for third party @file{.m4} files, and is
 2233: @c configured when @command{automake} itself is built.  This is
 2234: @c @file{@@datadir@@/aclocal/}, which typically
 2235: @c expands to @file{$@{prefix@}/share/aclocal/}.  To find the compiled-in
 2236: @c value of @var{acdir}, use the @code{--print-ac-dir} option
 2237: @c (@pxref{aclocal options}).
 2238: @c 
 2239: このディレクトリは,サードパーティーの@file{.m4}ファイルが目的で,
 2240: @command{automake}自身がビルドされるときにconfigureされます.これは
 2241: @file{@@datadir@@/aclocal/}で,通常@file{$@{prefix@}/share/aclocal/}に
 2242: 展開されます.組み込みの@var{acdir}を知るために,@code{--print-ac-dir} 
 2243: オプションを使用してください.
 2244: @end table
 2245: 
 2246: @c As an example, suppose that automake-1.6.2 was configured with
 2247: @c @code{--prefix=/usr/local}.  Then, the search path would be:
 2248: @c 
 2249: 例として,automake-1.6.2が@code{--prefix=/usr/local}を用いてconfigure 
 2250: されたと仮定します.そのとき検索パスは以下のようになります.
 2251: 
 2252: @enumerate
 2253: @item @file{/usr/local/share/aclocal-1.6/}
 2254: @item @file{/usr/local/share/aclocal/}
 2255: @end enumerate
 2256: 
 2257: @c As explained in (@pxref{aclocal options}), there are several options that
 2258: @c can be used to change or extend this search path.
 2259: @c 
 2260: (@pxref{aclocal options})で説明したように,この検索パスの変更や拡張で
 2261: 使用可能なオプションもあります.
 2262: 
 2263: @c @subsection Modifying the macro search path: @code{--acdir}
 2264: @subsection マクロ検索パスを変更する: @code{--acdir}
 2265: 
 2266: @c The most obvious option to modify the search path is
 2267: @c @code{--acdir=@var{dir}}, which changes default directory and
 2268: @c drops the @var{APIVERSION} directory.  For example, if one specifies
 2269: @c @code{--acdir=/opt/private/}, then the search path becomes:
 2270: @c 
 2271: 検索パスを変更する最も明確なオプションは@code{--acdir=@var{dir}}で,デ
 2272: フォルトのディレクトリを変更し,@var{APIVERSION}ディレクトリを取り消し
 2273: ます.例えば,@code{--acdir=/opt/private/}を指定した場合,検索パスは以
 2274: 下のようになります.
 2275: 
 2276: @enumerate
 2277: @item @file{/opt/private/}
 2278: @end enumerate
 2279: 
 2280: @c Note that this option, @code{--acdir}, is intended for use
 2281: @c by the internal automake test suite only; it is not ordinarily
 2282: @c needed by end-users.
 2283: @c 
 2284: このオプション@code{--acdir}の目的は,automakeのテストスイートの内部で
 2285: 使用することだけです.それはエンドユーザは通常不要です.
 2286: 
 2287: @c @subsection Modifying the macro search path: @code{-I @var{dir}}
 2288: @subsection マクロ検索パスを変更する: @code{-I @var{dir}}
 2289: 
 2290: @c Any extra directories specified using @code{-I} options
 2291: @c (@pxref{aclocal options}) are @emph{prepended} to this search list.  Thus,
 2292: @c @code{aclocal -I /foo -I /bar} results in the following search path:
 2293: @c 
 2294: @code{-I}オプション(@pxref{aclocal options})を使用して,あらゆる追加ディ
 2295: レクトリを指定することで,これらの検索リストに@emph{前置します}.この
 2296: ため,@code{aclocal -I /foo -I /bar}は結果として以下のような検索パスに
 2297: なります.
 2298: 
 2299: @enumerate
 2300: @item @file{/foo}
 2301: @item @file{/bar}
 2302: @item @var{acdir}-@var{APIVERSION}
 2303: @item @var{acdir}
 2304: @end enumerate
 2305: 
 2306: @c @subsection Modifying the macro search path: @file{dirlist}
 2307: @subsection マクロ検索パスを変更する: @file{dirlist}
 2308: @cindex @file{dirlist}
 2309: 
 2310: @c There is a third mechanism for customizing the search path.  If a
 2311: @c @file{dirlist} file exists in @var{acdir}, then that file is assumed to
 2312: @c contain a list of directories, one per line, to be added to the search
 2313: @c list.  These directories are searched @emph{after} all other
 2314: @c directories.
 2315: @c 
 2316: 検索パスをカスタマイズするため,三番目のメカニズムがあります.
 2317: @file{dirlist}ファイルが@var{acdir}に存在する場合,そのファイルが,一
 2318: 行ごとに検索リストに追加するディレクトリリストを含んでいると仮定されま
 2319: す.これらのディレクトリは,すべての他のディレクトリの@emph{後に}検索
 2320: されます.
 2321: 
 2322: @c For example, suppose
 2323: @c @file{@var{acdir}/dirlist} contains the following:
 2324: @c 
 2325: 例えば,@file{@var{acdir}/dirlist}が以下の内容を含んでいると仮定します.
 2326: 
 2327: @example
 2328: /test1
 2329: /test2
 2330: @end example
 2331: 
 2332: @noindent
 2333: @c and that @code{aclocal} was called with the @code{-I /foo -I /bar} options.
 2334: @c Then, the search path would be
 2335: @c 
 2336: そして,@code{aclocal}を@code{-I /foo -I /bar}オプションで呼び出したと
 2337: 仮定します.そのとき検索パスは以下のようになります.
 2338: 
 2339: @enumerate
 2340: @item @file{/foo}
 2341: @item @file{/bar}
 2342: @item @var{acdir}-@var{APIVERSION}
 2343: @item @var{acdir}
 2344: @item @file{/test1}
 2345: @item @file{/test2}
 2346: @end enumerate
 2347: 
 2348: @c If the @code{--acdir=@var{dir}} option is used, then @command{aclocal}
 2349: @c will search for the @file{dirlist} file in @var{dir}.  In the
 2350: @c @code{--acdir=/opt/private/} example above, @command{aclocal} would look
 2351: @c for @file{/opt/private/dirlist}.  Again, however, the @code{--acdir}
 2352: @c option is intended for use by the internal automake test suite only;
 2353: @c @code{--acdir} is not ordinarily needed by end-users.
 2354: @c 
 2355: @code{--acdir=@var{dir}}オプションが使用されている場合,
 2356: @command{aclocal}は@file{dirlist}ファイルを@var{dir}で検索します.上記
 2357: の@code{--acdir=/opt/private/}の例では,@command{aclocal}は
 2358: @file{/opt/private/dirlist}を探します.しかし,繰り返しますが,
 2359: @code{--acdir}オプションの目的は,automakeのテストスイートの内部で使用
 2360: されることだけです.通常,@code{--acdir}はエンドユーザには不要です.
 2361: 
 2362: @c @file{dirlist} is useful in the following situation: suppose that
 2363: @c @code{automake} version @code{1.6.2} is installed with
 2364: @c $prefix=/usr by the system vendor. Thus, the default search
 2365: @c directories are
 2366: @c 
 2367: 以下のような状況で,@file{dirlist}は役に立ちます.@code{automake}のバー
 2368: ジョン@code{1.6.2}が,@samp{$prefix=/usr}でシステムベンダーによってイ
 2369: ンストールされていると仮定します.このためデフォルトの検索ディレクトリ
 2370: は以下のようになります.
 2371: 
 2372: @enumerate
 2373: @item @file{/usr/share/aclocal-1.6/}
 2374: @item @file{/usr/share/aclocal/}
 2375: @end enumerate
 2376: 
 2377: @c However, suppose further that many packages have been manually
 2378: @c installed on the system, with $prefix=/usr/local, as is typical.
 2379: @c In that case, many of these ``extra'' @file{.m4} files are in
 2380: @c @file{/usr/local/share/aclocal}.  The only way to force
 2381: @c @file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files
 2382: @c is to always call @code{aclocal -I /usr/local/share/aclocal}.
 2383: @c This is inconvenient.  With @file{dirlist}, one may create the file
 2384: @c 
 2385: しかし,システムには多くのパッケージが,いつも通りに
 2386: @samp{$prefix=/usr/local}に手動でインストールされていると仮定します.
 2387: この状況では,これらの``追加の''@file{.m4}ファイルは
 2388: @file{/usr/local/share/aclocal}にあります.これらの``追加の''
 2389: @file{.m4} ファイルを見つけるため,@file{/usr/bin/aclocal}を強制させる
 2390: 方法は,常に@code{aclocal -I /usr/local/share/aclocal}を呼び出すことで
 2391: す.これは不便です.@file{dirlist}を用いると,以下のファイルを作成する
 2392: ことができます.
 2393: 
 2394: @file{/usr/share/aclocal/dirlist}
 2395: 
 2396: @noindent
 2397: @c which contains only the single line
 2398: @c 
 2399: その内容は以下のようになっています.
 2400: 
 2401: @file{/usr/local/share/aclocal}
 2402: 
 2403: @c Now, the ``default'' search path on the affected system is
 2404: @c 
 2405: さて,システムに影響する``デフォルト''の検索パスは以下のようになります.
 2406: 
 2407: @enumerate
 2408: @item @file{/usr/share/aclocal-1.6/}
 2409: @item @file{/usr/share/aclocal/}
 2410: @item @file{/usr/local/share/aclocal/}
 2411: @end enumerate
 2412: 
 2413: @c without the need for @code{-I} options; @code{-I} options can be reserved
 2414: @c for project-specific needs (@file{my-source-dir/m4/}), rather than
 2415: @c using it to work around local system-dependent tool installation
 2416: @c directories.
 2417: @c 
 2418: @code{-I}オプションは不要です.@code{-I}は,ローカルなシステム依存のツー
 2419: ルのインストールディレクトリを回避するのではなく,プロジェクト独自のも
 2420: のが必要な(@file{my-source-dir/m4/})として予約可能です.
 2421: 
 2422: @c Similarly, @file{dirlist} can be handy if you have installed a local
 2423: @c copy Automake on your account and want @command{aclocal} to look for
 2424: @c macros installed at other places on the system.
 2425: @c 
 2426: 同様に,Automakeのローカルコピーをアカウント内にインストールし,
 2427: @command{aclocal}でシステムの他の場所にインストールされているマクロを
 2428: 探したい場合,@file{dirlist}は手頃なはずです.
 2429: 
 2430: 
 2431: @node Macros
 2432: @c @section Autoconf macros supplied with Automake
 2433: @section Automakeが提供するAutoconfマクロ
 2434: 
 2435: @c Automake ships with several Autoconf macros that you can use from your
 2436: @c @file{configure.ac}.  When you use one of them it will be included by
 2437: @c @code{aclocal} in @file{aclocal.m4}.
 2438: @c 
 2439: Automakeは,@file{configure.ac}で使用可能ないくつかのAutoconfマクロと
 2440: ともに出荷されています.そのうちの一つを使用するとき,@code{aclocal}で
 2441: @file{aclocal.m4}に含められるでしょう.
 2442: 
 2443: @menu
 2444: * Public macros::               Macros that you can use.
 2445: * Private macros::              Macros that you should not use.
 2446: @end menu
 2447: 
 2448: @c consider generating the following subsections automatically from m4 files.
 2449: 
 2450: @node Public macros
 2451: @c @subsection Public macros
 2452: @subsection パブリックマクロ
 2453: 
 2454: @table @code
 2455: @item AM_CONFIG_HEADER
 2456: @c Automake will generate rules to automatically regenerate the config
 2457: @c header.  This obsolete macro is a synonym of @code{AC_CONFIG_HEADERS}
 2458: @c today (@pxref{Optional}).
 2459: @c 
 2460: Automakeは,コンフィグヘッダを自動的に再生成するルールを生成します.こ
 2461: の時代遅れのマクロは,現在は@code{AC_CONFIG_HEADERS}と同じです
 2462: (@pxref{Optional}).
 2463: @cvindex AM_CONFIG_HEADER
 2464: 
 2465: @item AM_ENABLE_MULTILIB
 2466: @c This is used when a ``multilib'' library is being built.  The first
 2467: @c optional argument is the name of the @file{Makefile} being generated; it
 2468: @c defaults to @samp{Makefile}.  The second option argument is used to find
 2469: @c the top source directory; it defaults to the empty string (generally
 2470: @c this should not be used unless you are familiar with the internals).
 2471: @c @xref{Multilibs}.
 2472: @c 
 2473: これは,``multilib''ライブラリをビルドするときに使用します.最初のオプ
 2474: ション引数は,生成される@file{Makefile}の名前です.デフォルトは
 2475: @samp{Makefile}です.二番目のオプション引数は,ソースディレクトリのトッ
 2476: プを見つけるために使用します.デフォルトは空の文字列です(内部を理解し
 2477: ていない場合,通常はこれを使用しないほうが良いでしょう.)
 2478: 
 2479: @item AM_C_PROTOTYPES
 2480: @c Check to see if function prototypes are understood by the compiler.  If
 2481: @c so, define @samp{PROTOTYPES} and set the output variables @samp{U} and
 2482: @c @samp{ANSI2KNR} to the empty string.  Otherwise, set @samp{U} to
 2483: @c @samp{_} and @samp{ANSI2KNR} to @samp{./ansi2knr}.  Automake uses these
 2484: @c values to implement automatic de-ANSI-fication.
 2485: @c 
 2486: 関数プロトタイプをコンパイラが理解するかどうかを調査します.その場合,
 2487: @samp{PROTOTYPES}を定義して,出力変数@samp{U}と@samp{ANSI2KNR}を空の文
 2488: 字列に設定します.それ以外の場合,@samp{U}を@samp{_}に,
 2489: @samp{ANSI2KNR}を@samp{./ansi2knr}にします.Automakeはこれらの値を自動
 2490: 的なde-ANSI-ficationを実装するために使用します.
 2491: @cvindex AM_C_PROTOTYPES
 2492: 
 2493: @item AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
 2494: @c If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
 2495: @c define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
 2496: @c found in @file{<termios.h>}.
 2497: @c 
 2498: @code{TIOCGWINSZ}を使用するときに@file{<sys/ioctl.h>}が必要な場合,
 2499: @code{GWINSZ_IN_SYS_IOCTL}を定義します.それ以外の場合,
 2500: @code{TIOCGWINSZ}は@file{<termios.h>}で見つかるはずです.
 2501: @cvindex AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
 2502: 
 2503: @item AM_INIT_AUTOMAKE([OPTIONS])
 2504: @itemx AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 2505: @c Runs many macros required for proper operation of the generated Makefiles.
 2506: @c 
 2507: 生成されたMakefileが適切な処理を行なうために必要な多くのマクロを実行し
 2508: ます.
 2509: 
 2510: @c This macro has two forms, the first of which is preferred.
 2511: @c In this form, @code{AM_INIT_AUTOMAKE} is called with a
 2512: @c single argument --- a space-separated list of Automake options which should
 2513: @c be applied to every @file{Makefile.am} in the tree.  The effect is as if
 2514: @c each option were listed in @code{AUTOMAKE_OPTIONS}.
 2515: @c 
 2516: このマクロには二つの形式があり,最初のものが好まれます.この形式では,
 2517: @code{AM_INIT_AUTOMAKE}は単一の引数で呼び出されます --- ツリー内のすべ
 2518: ての@file{Makefile.am}に適用するAutomakeオプションのスペースで分離され
 2519: ているリストです.それぞれのオプションが@code{AUTOMAKE_OPTIONS}でリス
 2520: トアップされているかの様な効果があります.
 2521: 
 2522: @c The second, deprecated, form of @code{AM_INIT_AUTOMAKE} has two required
 2523: @c arguments: the package and the version number.  This form is
 2524: @c obsolete because the @var{package} and @var{version} can be obtained
 2525: @c from Autoconf's @code{AC_INIT} macro (which itself has an old and a new
 2526: @c form).
 2527: @c 
 2528: 反対されている二番目の@code{AM_INIT_AUTOMAKE}の形式は,二つの引数が必
 2529: 要です.パッケージとバージョンナンバーです.この形式は,@var{package} 
 2530: と@var{version}がAutoconfの@code{AC_INIT}マクロ(それ自身も古い形式と新
 2531: しい形式があります)から得ることが可能なので時代遅れです.
 2532: 
 2533: @c If your @file{configure.ac} has:
 2534: @c 
 2535: @file{configure.ac}が以下の場合を考えます.
 2536: @example
 2537: AC_INIT(src/foo.c)
 2538: AM_INIT_AUTOMAKE(mumble, 1.5)
 2539: @end example
 2540: @c you can modernize it as follows:
 2541: @c 
 2542: 以下のようにして新しいものにすることが可能です.
 2543: @example
 2544: AC_INIT(mumble, 1.5)
 2545: AC_CONFIG_SRCDIR(src/foo.c)
 2546: AM_INIT_AUTOMAKE
 2547: @end example
 2548: 
 2549: @c Note that if you're upgrading your @file{configure.ac} from an earlier
 2550: @c version of Automake, it is not always correct to simply move the package
 2551: @c and version arguments from @code{AM_INIT_AUTOMAKE} directly to
 2552: @c @code{AC_INIT}, as in the example above.  The first argument to
 2553: @c @code{AC_INIT} should be the name of your package (e.g. @samp{GNU Automake}),
 2554: @c not the tarball name (e.g. @samp{automake}) that you used to pass to
 2555: @c @code{AM_INIT_AUTOMAKE}.  Autoconf tries to derive a tarball name from
 2556: @c the package name, which should work for most but not all package names.
 2557: @c (If it doesn't work for yours, you can use the
 2558: @c four-argument form of @code{AC_INIT} --- supported in Autoconf versions
 2559: @c greater than 2.52g --- to provide the tarball name explicitly).
 2560: @c 
 2561: @file{configure.ac}を以前のバージョンのAutomakeから更新している場合,
 2562: 上記の例のように,単純にパッケージバージョンの引数を,直接
 2563: @code{AM_INIT_AUTOMAKE}から@code{AC_INIT}へ移動することが常に正しいと
 2564: は限りません.@code{AC_INIT}の最初の引数はパッケージの名前(例えば
 2565: @samp{GNU Automake})ですが,@code{AM_INIT_AUTOMAKE}に渡すために使用し
 2566: ているtarballの名前(例えば@samp{automake})ではありません.Autoconfはパッ
 2567: ケージ名からtarball名を導き出すことを試み,それはほとんどのパッケージ
 2568: で動作しますが全てで動作するとは限りません.(うまく動作しない場合 ---
 2569: Autoconfのバージョン2.52g以上からサポートされている --- tarball名を明
 2570: 示的に提供する,@code{AC_INIT}の四つの引数を用いる形式を使用することが
 2571: 可能です).
 2572: 
 2573: @c By default this macro @code{AC_DEFINE}'s @samp{PACKAGE} and
 2574: @c @samp{VERSION}.  This can be avoided by passing the @samp{no-define}
 2575: @c option, as in:
 2576: @c 
 2577: デフォルトでこのマクロは@samp{PACKAGE}と@samp{VERSION}を
 2578: @code{AC_DEFINE}します.以下のように@samp{no-define}オプションを渡すこ
 2579: とでこれを避けることが可能です.
 2580: @example
 2581: AM_INIT_AUTOMAKE([gnits 1.5 no-define dist-bzip2])
 2582: @end example
 2583: @c or by passing a third non-empty argument to the obsolete form.
 2584: @c 
 2585: または時代遅れの形式に空の三番目に引数を渡すことで避けることが可能です.
 2586: 
 2587: @cvindex PACKAGE, prevent definition
 2588: @cvindex VERSION, prevent definition
 2589: 
 2590: 
 2591: @item AM_PATH_LISPDIR
 2592: @c Searches for the program @code{emacs}, and, if found, sets the output
 2593: @c variable @code{lispdir} to the full path to Emacs' site-lisp directory.
 2594: @c 
 2595: @code{emacs}プログラムを検索し,見つかった場合は,Emacsのsite-lispディ
 2596: レクトリへのフルパスを出力変数@code{lispdir}に設定します.
 2597: 
 2598: @c Note that this test assumes the @code{emacs} found to be a version that
 2599: @c supports Emacs Lisp (such as @sc{gnu} Emacs or XEmacs).  Other emacsen
 2600: @c can cause this test to hang (some, like old versions of MicroEmacs,
 2601: @c start up in interactive mode, requiring @samp{C-x C-c} to exit, which
 2602: @c is hardly obvious for a non-emacs user).  In most cases, however, you
 2603: @c should be able to use @samp{C-c} to kill the test.  In order to avoid
 2604: @c problems, you can set @code{EMACS} to ``no'' in the environment, or
 2605: @c use the @samp{--with-lispdir} option to @command{configure} to
 2606: @c explicitly set the correct path (if you're sure you have an @code{emacs}
 2607: @c that supports Emacs Lisp.
 2608: @c 
 2609: このテストは(@sc{gnu} EmacsやXEmacsのような)Emacs Lispをサポートしてい
 2610: るバージョンの@code{emacs}が見つかることを想定しています.それ以外の
 2611: emacsenでは,このテストはハングアップします(古いバージョンのMicroEmacs
 2612: のように,対話モードでセットアップされているものは,終了するために
 2613: @samp{C-x C-c}が必要で,emacsユーザでなければなかなか気付かないでしょ
 2614: う).しかし,ほとんどの状況で,テストを終了するために@samp{C-c}を使用
 2615: することが可能でしょう.問題を避けるため,環境変数で@code{EMACS}を
 2616: ``no''に設定したり,(Emacs Lispをサポートしている@code{emacs}が確実に
 2617: ある場合は)正しいパスを明示的に設定するために@command{configure}で
 2618: @samp{--with-lispdir}を使用することが可能です.
 2619: @cvindex AM_PATH_LISPDIR
 2620: 
 2621: @item AM_PROG_AS
 2622: @c Use this macro when you have assembly code in your project.  This will
 2623: @c choose the assembler for you (by default the C compiler) and set
 2624: @c @code{CCAS}, and will also set @code{CCASFLAGS} if required.
 2625: @c 
 2626: プロジェクトにアセンブラコードがあるときは,このマクロを使用して下さい.
 2627: これはアセンブラを選択し(デフォルトはCコンパイラ),@code{CCAS}を設定し,
 2628: そして,必要な場合は@code{CCASFLAGS}も設定します.
 2629: 
 2630: @item AM_PROG_CC_C_O
 2631: @c This is like @code{AC_PROG_CC_C_O}, but it generates its results in the
 2632: @c manner required by automake.  You must use this instead of
 2633: @c @code{AC_PROG_CC_C_O} when you need this functionality.
 2634: @c 
 2635: これは@code{AC_PROG_CC_C_O}に似ていますが,それはautomakeが要求する形
 2636: 式の結果を生成します.この機能が必要なときは,@code{AC_PROG_CC_C_O}の
 2637: 代わりにこれを使用して下さい.
 2638: 
 2639: @item AM_PROG_LEX
 2640: @cindex HP-UX 10, lex problems
 2641: @cindex lex problems with HP-UX 10
 2642: @c Like @code{AC_PROG_LEX} (@pxref{Particular Programs, , Particular
 2643: @c Program Checks, autoconf, The Autoconf Manual}), but uses the
 2644: @c @code{missing} script on systems that do not have @code{lex}.
 2645: @c @samp{HP-UX 10} is one such system.
 2646: @c 
 2647: @code{AC_PROG_LEX}に似ていますが(@pxref{Particular Programs, ,
 2648: Particular Program Checks, autoconf, The Autoconf Manual}),@code{lex}
 2649: が無いシステムで@code{missing}スクリプトを使用します.@samp{HP-UX 10}
 2650: はそのようなシステムの一つです.
 2651: 
 2652: @item AM_PROG_GCJ
 2653: @c This macro finds the @code{gcj} program or causes an error.  It sets
 2654: @c @samp{GCJ} and @samp{GCJFLAGS}.  @code{gcj} is the Java front-end to the
 2655: @c GNU Compiler Collection.
 2656: @c 
 2657: このマクロは,@code{gcj}プログラムを見つけるか,そうでなければエラーを
 2658: 発生します.それは@samp{GCJ}と@samp{GCJFLAGS}を設定します.@code{gcj}
 2659: は,GNU Compiler CollectionのJavaフロントエンドです.
 2660: @cvindex AM_PROG_GCJ
 2661: 
 2662: @item AM_SYS_POSIX_TERMIOS
 2663: @cvindex am_cv_sys_posix_termios
 2664: @cindex POSIX termios headers
 2665: @cindex termios POSIX headers
 2666: @c Check to see if POSIX termios headers and functions are available on the
 2667: @c system.  If so, set the shell variable @code{am_cv_sys_posix_termios} to
 2668: @c @samp{yes}.  If not, set the variable to @samp{no}.
 2669: @c 
 2670: POSIX termiosヘッダと関数がシステムで利用可能かどうか調査します.その
 2671: 場合,シェル変数@code{am_cv_sys_posix_termios}を@samp{yes}に設定します.
 2672: そうでない場合,その変数を@samp{no}に設定します.
 2673: 
 2674: @item AM_WITH_DMALLOC
 2675: @cvindex WITH_DMALLOC
 2676: @cindex dmalloc, support for
 2677: @opindex --with-dmalloc
 2678: @c Add support for the
 2679: @c @uref{ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz, dmalloc}
 2680: @c package.  If the user configures with @samp{--with-dmalloc}, then define
 2681: @c @code{WITH_DMALLOC} and add @samp{-ldmalloc} to @code{LIBS}.
 2682: @c 
 2683: @uref{ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz, dmalloc}パッケー
 2684: ジに対するサポートを追加します.ユーザが@samp{--with-demalloc}を用いて
 2685: configureする場合,@code{WITH_DMALLOC}を定義し,@code{LIBS}に
 2686: @samp{-ldmalloc}を加えます.
 2687: 
 2688: @item AM_WITH_REGEX
 2689: @cvindex WITH_REGEX
 2690: @opindex --with-regex
 2691: @cindex regex package
 2692: @cindex rx package
 2693: @c Adds @samp{--with-regex} to the @code{configure} command line.  If
 2694: @c specified (the default), then the @samp{regex} regular expression
 2695: @c library is used, @file{regex.o} is put into @samp{LIBOBJS}, and
 2696: @c @samp{WITH_REGEX} is defined.  If @samp{--without-regex} is given, then
 2697: @c the @samp{rx} regular expression library is used, and @file{rx.o} is put
 2698: @c into @samp{LIBOBJS}.
 2699: @c 
 2700: @code{configure}コマンドラインに@samp{--with-regex}を追加します.指定
 2701: されている(デフォルトの)場合,@samp{regex}の正規表現ライブラリが使用さ
 2702: れ,@file{regex.o}が@samp{LIBOBJS}に書き込まれ,そして,
 2703: @samp{WITH_REGEX}が定義されます.@samp{--without-regex}が与えられる場
 2704: 合,@samp{rx}正規表現ライブラリが使用され,@file{rx.o}が@samp{LIBOBJS} 
 2705: に書き込まれます.
 2706: 
 2707: @end table
 2708: 
 2709: @node Private macros
 2710: @c @subsection Private macros
 2711: @subsection プライベートマクロ
 2712: 
 2713: @c The following macros are private macros you should not call directly.
 2714: @c They are called by the other public macros when appropriate.  Do not
 2715: @c rely on them, as they might be changed in a future version.  Consider
 2716: @c them as implementation details; or better, do not consider them at all:
 2717: @c skip this section!
 2718: @c 
 2719: 以下のマクロは,直接呼び出すべきではないプライベートマクロです.それら
 2720: は適切なときに他のパブリックマクロから呼び出されます.将来のバージョン
 2721: で変更される可能性があるので,それらを呼び出さないでください.それらは
 2722: 実装の詳細を考察するものと考えてください.または,何も考えないほうが良
 2723: いかもしれません.このセクションは読み飛ばしてください!
 2724: 
 2725: @table @code
 2726: @item _AM_DEPENDENCIES
 2727: @itemx AM_SET_DEPDIR
 2728: @itemx AM_DEP_TRACK
 2729: @itemx AM_OUTPUT_DEPENDENCY_COMMANDS
 2730: @c These macros are used to implement Automake's automatic dependency
 2731: @c tracking scheme.  They are called automatically by automake when
 2732: @c required, and there should be no need to invoke them manually.
 2733: @c 
 2734: これらのマクロはAutomakeの自動的な依存性の追跡手法を実装するために使用
 2735: されます.それらは,要求されたときAutomakeから自動的に呼び出され,手動
 2736: で呼び出す必然性はありません.
 2737: 
 2738: @item AM_MAKE_INCLUDE
 2739: @c This macro is used to discover how the user's @code{make} handles
 2740: @c @code{include} statements.  This macro is automatically invoked when
 2741: @c needed; there should be no need to invoke it manually.
 2742: @c 
 2743: このマクロは,ユーザの@code{make}が@code{include}文を処理する方法を知
 2744: るために使用されます.それらは,必要なとき自動的に呼び出されます.手動
 2745: で呼び出す必然性はありません.
 2746: 
 2747: @item AM_PROG_INSTALL_STRIP
 2748: @c This is used to find a version of @code{install} which can be used to
 2749: @c @code{strip} a program at installation time.  This macro is
 2750: @c automatically included when required.
 2751: @c 
 2752: これは,インストール時にプログラムを@code{strip}するために使用可能な
 2753: @code{install}のバージョンを知るために使用されます.このマクロは要求さ
 2754: れるとき自動的にインクルードされます.
 2755: 
 2756: @item AM_SANITY_CHECK
 2757: @c This checks to make sure that a file created in the build directory is
 2758: @c newer than a file in the source directory.  This can fail on systems
 2759: @c where the clock is set incorrectly.  This macro is automatically run
 2760: @c from @code{AM_INIT_AUTOMAKE}.
 2761: @c 
 2762: これは,ビルドディレクトリに作成されるファイルがソースディレクトリのファ
 2763: イルより確実に新しいことを調査します.時計の設定が正しくないシステムで
 2764: 失敗するはずです.このマクロは@code{AM_INIT_AUTOMAKE}から自動的に実行
 2765: されます.
 2766: 
 2767: @end table
 2768: 
 2769: 
 2770: @node Extending aclocal
 2771: @c @section Writing your own aclocal macros
 2772: @section 独自のaclocalマクロを書く
 2773: 
 2774: @cindex aclocal, extending
 2775: @cindex Extending aclocal
 2776: 
 2777: @c The @command{aclocal} program doesn't have any built-in knowledge of
 2778: @c any macros, so it is easy to extend it with your own macros.
 2779: @c 
 2780: @command{aclocal}プログラムには,マクロ組み込みの知識が全く無いので,
 2781: 独自のマクロでそれを拡張することは容易です.
 2782: 
 2783: @c This can be used by libraries which want to supply their own Autoconf
 2784: @c macros for use by other programs.  For instance the @command{gettext}
 2785: @c library supplies a macro @code{AM_GNU_GETTEXT} which should be used by
 2786: @c any package using @command{gettext}.  When the library is installed, it
 2787: @c installs this macro so that @command{aclocal} will find it.
 2788: @c 
 2789: これは,他のプログラムで使用する独自のAutoconfマクロを,供給したいライ
 2790: ブラリに対して使用することが可能です.例えば@code{gettext}ライブラリは,
 2791: @code{gettext}を使用しているあらゆるパッケージで使用されるように,
 2792: @code{AM_GNU_GETTEXT}マクロを提供しています.ライブラリがインストール
 2793: されるとき,@code{aclocal}で見つかるように,このマクロをインストールし
 2794: ます.
 2795: 
 2796: @c A macro file's name should end in @file{.m4}.  Such files should be
 2797: @c installed in @file{$(datadir)/aclocal}.  This is as simple as writing:
 2798: @c 
 2799: マクロファイルの名前は@file{.m4}で終わらせすべきです.そのようなファイ
 2800: ルは@file{$(datadir)/aclocal}にインストールされます.簡単に書くと以下
 2801: のようになります.
 2802: 
 2803: @example
 2804: aclocaldir = $(datadir)/aclocal
 2805: aclocal_DATA = mymacro.m4 myothermacro.m4
 2806: @end example
 2807: 
 2808: @c A file of macros should be a series of properly quoted
 2809: @c @code{AC_DEFUN}'s (@pxref{Macro Definitions, , , autoconf, The
 2810: @c Autoconf Manual}).  The @command{aclocal} programs also understands
 2811: @c @code{AC_REQUIRE} (@pxref{Prerequisite Macros, , , autoconf, The
 2812: @c Autoconf Manual}), so it is safe to put each macro in a separate file.
 2813: @c Each file should have no side effects but macro definitions.
 2814: @c Especially, any call to @code{AC_PREREQ} should be done inside the
 2815: @c defined macro, not at the beginning of the file.
 2816: @c 
 2817: マクロのファイルは,@code{AC_DEFUN} (@pxref{Macro Definitions, , ,
 2818: autoconf, The Autoconf Manual})で適切に引用符で囲むべきです.
 2819: @command{aclocal}プログラムは@code{AC_REQUIRE} (@pxref{Prerequisite
 2820: Macros, , , autoconf, The Autoconf Manual})も理解するので,個別のファ
 2821: イルのそれぞれのマクロに書き込んでも大丈夫です.それぞれのファイルには
 2822: マクロ定義以外の副作用が無いようにすべきです.特に,@code{AC_PREREQ}の
 2823: 呼び出しは,マクロ定義内部にすべきでファイルの最初に書くべきではありま
 2824: せん.
 2825: 
 2826: @cindex underquoted AC_DEFUN
 2827: @cvindex AC_DEFUN
 2828: @cvindex AC_PREREQ
 2829: 
 2830: @c Starting with Automake 1.8, @command{aclocal} will warn about all
 2831: @c underquoted calls to @code{AC_DEFUN}.  We realize this will annoy a
 2832: @c lot of people, because @command{aclocal} was not so strict in the past
 2833: @c and many third party macros are underquoted; and we have to apologize
 2834: @c for this temporary inconvenience.  The reason we have to be stricter
 2835: @c is that a future implementation of @command{aclocal} (@pxref{Future of
 2836: @c aclocal}) will have to temporary include all these third party
 2837: @c @file{.m4} files, maybe several times, even those which are not
 2838: @c actually needed.  Doing so should alleviate many problem of the
 2839: @c current implementation, however it requires a stricter style from the
 2840: @c macro authors.  Hopefully it is easy to revise the existing macros.
 2841: @c For instance
 2842: @c 
 2843: Automake 1.8から,@command{aclocal}は,引用符で囲まれていない
 2844: @code{AC_DEFUN}の呼び出しすべてに警告を発するようになっています.我々
 2845: はこれで,人々がうんざりすることを自覚していて,それは
 2846: @command{aclocal}はこれまであまり厳密ではなく,多くのサードパーティー
 2847: のマクロは引用符で囲まれていないためです.そして我々は,この一時的な不
 2848: 便さを謝罪しなければなりません.我々が厳密にする必要がある理由は,将来
 2849: の@command{aclocal} (@pxref{Future of aclocal})の実装で,一時的にこれ
 2850: らすべてのサードパーティーの@file{.m4}ファイルを,可能性としては複数回,
 2851: 不要なものであっても,インクルードする必要があるためです.そうすること
 2852: で,多少なりとも現在の実装では多くの問題があるのですが,より厳密な形式
 2853: をマクロの著者に要求することになります.希望としては,既存のマクロを
 2854: ちょっと修正して欲しいと思っています.例えば以下のようにします.
 2855: @example
 2856: # bad style
 2857: AC_PREREQ(2.57)
 2858: AC_DEFUN(AX_FOOBAR,
 2859: [AC_REQUIRE([AX_SOMETHING])dnl
 2860: AX_FOO
 2861: AX_BAR
 2862: ])
 2863: @end example
 2864: @noindent
 2865: @c should be rewritten as
 2866: @c 
 2867: 以下のように書き換えるべきです.
 2868: @example
 2869: AC_DEFUN([AX_FOOBAR],
 2870: [AC_PREREQ(2.57)dnl
 2871: AC_REQUIRE([AX_SOMETHING])dnl
 2872: AX_FOO
 2873: AX_BAR
 2874: ])
 2875: @end example
 2876: 
 2877: @c Wrapping the @code{AC_PREREQ} call inside the macro ensures that
 2878: @c Autoconf 2.57 will not be required if @code{AX_FOOBAR} is not actually
 2879: @c used.  Most importantly, quoting the first argument of @code{AC_DEFUN}
 2880: @c allows the macro to be redefined or included twice (otherwise this
 2881: @c first argument would be expansed during the second definition).
 2882: @c 
 2883: @code{AC_PREREQ}の呼出をマクロ内にラップすることで,Autoconf 2.57は,
 2884: @code{AX_FOOBAR}を実際に使用しない場合は要求しなくなります.最も重要な
 2885: ことは,@code{AC_DEFUN}の最初の引数を引用符で囲むことで,マクロを再定
 2886: 義したり,二回インクルードすることが可能になります(そうしなければ,こ
 2887: の最初の引数は二番目の定義の間展開されたままです).
 2888: 
 2889: @c If you have been directed here by the @command{aclocal} diagnostic but
 2890: @c are not the maintainer of the implicated macro, you will want to
 2891: @c contact the maintainer of that macro.  Please make sure you have the
 2892: @c last version of the macro and that the problem already hasn't been
 2893: @c reported before doing so: people tend to work faster when they aren't
 2894: @c flooded by mails.
 2895: @c 
 2896: このような@command{aclocal}の診断が示された場合,マクロ実装の管理者で
 2897: はない場合,マクロの管理者に連絡したいかもしれません.マクロの最新バー
 2898: ジョンと,そのような報告が以前になされていないことを確認ししてください.
 2899: 人は,メールの洪水がないときには,すぐにでも仕事をするものです.
 2900: 
 2901: @c Another situation where @command{aclocal} is commonly used is to
 2902: @c manage macros which are used locally by the package, @ref{Local
 2903: @c Macros}.
 2904: @c 
 2905: @command{aclocal}を一般的に使用するもう一つの状況は,パッケージローカ
 2906: ルのマクロを管理するときです.@ref{Local Macros}を参照して下さい.
 2907: 
 2908: @node Local Macros
 2909: @c @section Handling Local Macros
 2910: @section ローカルなマクロの処理
 2911: 
 2912: @c Feature tests offered by Autoconf do not cover all needs.  People
 2913: @c often have to supplement existing tests with their own macros, or
 2914: @c with third-party macros.
 2915: @c 
 2916: Autoconfで提案される機能テストは,すべてのニーズをカバーしていません.
 2917: 独自のマクロやサードパーティーのマクロで既存のテストを補足する必要があ
 2918: ることもよくあります.
 2919: 
 2920: @c There are two ways to organize custom macros in a package.
 2921: @c 
 2922: パッケージのカスタムマクロを体系付ける方法は二つあります.
 2923: 
 2924: @c The first possibility (the historical practice) is to list all your
 2925: @c macros in @file{acinclude.m4}.  This file will be included in
 2926: @c @file{aclocal.m4} when you run @command{aclocal}, and its macro(s) will
 2927: @c henceforth be visible to @command{autoconf}.  However if it contains
 2928: @c numerous macros, it will rapidly become difficult to maintain, and it
 2929: @c will be almost impossible to share macros between packages.
 2930: @c 
 2931: 最初の可能性は(歴史的な手法で)すべてのマクロを@file{acinclude.m4}にリ
 2932: ストアップすることです.このファイルは@command{aclocal}の実行時に
 2933: @file{aclocal.m4}に含められ,そのマクロはそれ以降@command{autoconf}か
 2934: ら見えるようになります.しかし,たくさんのマクロを含んでいる場合,ちょっ
 2935: とした管理が難しくなり,パッケージ間でマクロを共有することが不可能にな
 2936: ります.
 2937: 
 2938: @vindex ACLOCAL_AMFLAGS
 2939: @c The second possibility, which we do recommend, is to write each macro
 2940: @c in its own file and gather all these files in a directory.  This
 2941: @c directory is usually called @file{m4/}.  To build @file{aclocal.m4},
 2942: @c one should therefore instruct @command{aclocal} to scan @file{m4/}.
 2943: @c From the command line, this is done with @code{aclocal -I m4}.  The
 2944: @c top-level @file{Makefile.am} should also be updated to define
 2945: @c 
 2946: 二番めの可能性は,こちらが推奨されていて,それぞれのマクロを単独ファイ
 2947: ルに書き,一つのディレクトリにこれらすべてのファイルをまとめておくこと
 2948: です.このディレクトリは通常@file{m4/}と呼ばれています.このため,
 2949: @file{aclocal.m4}をビルドする際,@command{aclocal}に@file{m4/}をスキャ
 2950: ンするように指示するべきです.コマンドラインからは,@code{aclocal -I
 2951: m4}とします.または,最上位のの@file{Makefile.am}の定義を以下のように
 2952: 更新すべきです.
 2953: 
 2954: @example
 2955:  ACLOCAL_AMFLAGS = -I m4
 2956: @end example
 2957: 
 2958: @c @code{ACLOCAL_AMFLAGS} contains options to pass to @command{aclocal}
 2959: @c when @file{aclocal.m4} is to be rebuilt by @code{make}.  This line is
 2960: @c also used by @command{autoreconf} (@pxref{autoreconf Invocation, ,
 2961: @c Using @command{autoreconf} to Update @file{configure} Scripts,
 2962: @c autoconf, The Autoconf Manual}) to run @command{aclocal} with suitable
 2963: @c options, or by @command{autopoint} (@pxref{autopoint Invocation, ,
 2964: @c Invoking the @command{autopoint} Program, gettext, GNU gettext tools})
 2965: @c and @command{gettextize} (@pxref{gettextize Invocation, , Invoking the
 2966: @c @command{gettextize} Program, gettext, GNU gettext tools}) to locate
 2967: @c the place where Gettext's macros should be installed.  So even if you
 2968: @c do not really care about the rebuild rules, you should define
 2969: @c @code{ACLOCAL_AMFLAGS}.
 2970: @c 
 2971: @code{ACLOCAL_AMFLAGS}は,@file{aclocal.m4}が@code{make}でリビルドされ
 2972: るとき,@command{aclocal}に渡すオプションを含んでいます.この行は,適
 2973: 切なオプションで@command{aclocal}を実行するため,@command{autoreconf}
 2974: (@pxref{autoreconf Invocation, , Using @command{autoreconf} to Update
 2975: @file{configure} Scripts, autoconf, The Autoconf Manual})や,Gettextの
 2976: マクロがインストールされている場所を示すため@command{autopoint}
 2977: (@pxref{autopoint Invocation, , Invoking the @command{autopoint}
 2978: Program, gettext, GNU gettext tools})と@command{gettextize}
 2979: (@pxref{gettextize Invocation, , Invoking the @command{gettextize}
 2980: Program, gettext, GNU gettext tools})でも使用されます.そのため,リビ
 2981: ルドのルールであまり注意していなくても,@code{ACLOCAL_AMFLAGS}を定義す
 2982: べきです.
 2983: 
 2984: @c When @code{aclocal -I m4} is run, it will build a @code{aclocal.m4}
 2985: @c that @code{m4_include}s any file from @file{m4/} that defines a
 2986: @c required macro.  Macros not found locally will still be searched in
 2987: @c system-wide directories, as explained in @ref{Macro search path}.
 2988: @c 
 2989: @code{aclocal -I m4}が実行されるとき,要求されているマクロが定義されて
 2990: いる@file{m4/}のあらゆるファイルを@code{m4_include}し,
 2991: @code{aclocal.m4}をビルドします.ローカルに見つからないマクロは,
 2992: @ref{Macro search path}で説明されているシステム全体のディレクトリで検
 2993: 索されます.
 2994: 
 2995: @c Custom macros should be distributed for the same reason that
 2996: @c @file{configure.ac} is: so that other people have all the sources of
 2997: @c your package if they want to work on it.  Actually, this distribution
 2998: @c happens automatically because all @code{m4_include}d files are
 2999: @c distributed.
 3000: @c 
 3001: カスタムマクロは@file{configure.ac}と同じ理由で配布すべきです.パッケー
 3002: ジを動作させたい人は,そのすべてのファイルを持っているようにすべきです.
 3003: 実際これは,すべての@code{m4_include}されるファイルが配布されるので,
 3004: 自動的に配布されます.
 3005: 
 3006: @c However there is no consensus on the distribution of third-party
 3007: @c macros that your package may use.  Many libraries install their own
 3008: @c macro in the system-wide @command{aclocal} directory (@pxref{Extending
 3009: @c aclocal}).  For instance Guile ships with a file called
 3010: @c @file{guile.m4} that contains the macro @code{GUILE_FLAGS} which can
 3011: @c be used to define setup compiler and linker flags appropriate for
 3012: @c using Guile.  Using @code{GUILE_FLAGS} in @file{configure.ac} will
 3013: @c cause @command{aclocal} to copy @file{guile.m4} into
 3014: @c @file{aclocal.m4}, but as @file{guile.m4} is not part of the project,
 3015: @c it will not be distributed.  Technically, that means a user which
 3016: @c needs to rebuild @file{aclocal.m4} will have to install Guile first.
 3017: @c This is probably OK, if Guile already is a requirement to build the
 3018: @c package.  However, if Guile is only an optional feature, or if your
 3019: @c package might run on architectures where Guile cannot be installed,
 3020: @c this requirement will hinder development.  An easy solution is to copy
 3021: @c such third-party macros in your local @file{m4/} directory so they get
 3022: @c distributed.
 3023: @c 
 3024: しかし,パッケージで使用しているサードパーティーのマクロの配布には一致
 3025: している見解はありません.多くのライブラリは,独自のマクロをシステム全
 3026: 体の@command{aclocal}ディレクトリ(@pxref{Extending aclocal})にインストー
 3027: ルします.例えば,Guileはコンパイラの設定とGuileを使用する際に適切なリ
 3028: ンカフラグ定義するために使用することが可能な,マクロ@code{GUILE_FLAGS} 
 3029: を含んでいる@file{guile.m4}と呼ばれるファイルを配布しています.
 3030: @file{configure.ac}で@code{GUILE_FLAGS}を使用することで,
 3031: @command{aclocal}は@file{guile.m4}を@file{aclocal.m4}にコピーしますが,
 3032: @file{guile.m4}はプロジェクトの一部ではないので,それは配布していませ
 3033: ん.技術的には,@file{aclocal.m4}をリビルドする必要があるユーザはGuile 
 3034: を最初にインストールする必要があることを意味します.Guileがパッケージ
 3035: のビルドで必要な場合,これはおそらく問題無いでしょう.しかし,Guileは
 3036: 単なる追加機能だったり,パッケージをGuileがインストール不可能なマシン
 3037: で実行する可能性がある場合,この必要条件は開発の邪魔になります.簡単な
 3038: 解決方法は,そのようなサードパーティーのマクロを,それらも配布されるよ
 3039: うに,ローカルな@file{m4/}ディレクトリにコピーすることです.
 3040: 
 3041: @node Future of aclocal
 3042: @c @section The Future of @command{aclocal}
 3043: @section @command{aclocal}の将来
 3044: @cindex aclocal's scheduled death
 3045: 
 3046: @c @command{aclocal} is expected to disappear.  This feature really
 3047: @c should not be offered by Automake.  Automake should focus on generating
 3048: @c @file{Makefile}s; dealing with M4 macros really is Autoconf's job.
 3049: @c That some people install Automake just to use @command{aclocal}, but
 3050: @c do not use @command{automake} otherwise is an indication of how that
 3051: @c feature is misplaced.
 3052: @c 
 3053: @command{aclocal}の消滅が予想されています.この機能はAutomakeで提供す
 3054: るものではありません.Automakeは@file{Makefile}の生成に焦点を絞るべき
 3055: です.M4マクロの処理は,本当はAutoconfの仕事でしょう.
 3056: @command{aclocal}を使用するためだけにAutomakeをインストールしていて,
 3057: それ以外での@command{automake}を使用しない人もいますが,それこそが,こ
 3058: の機能が場違いであることを示しています.
 3059: 
 3060: @c The new implementation will probably be done slightly differently.
 3061: @c For instance it could enforce the @file{m4/}-style layout discussed in
 3062: @c @ref{Local Macros}, and take care of copying (or even updating)
 3063: @c third-party macro into this directory.
 3064: @c 
 3065: 新たな実装は,若干違うものになる可能性があります.例えば,@ref{Local
 3066: Macros}で議論した@file{m4/}形式の配置を強制し,サードパーティーのマク
 3067: ロをこのディレクトリにコピー(または更新)するようになるかもしれません.
 3068: 
 3069: @c We have no idea when and how this will happen.  This has been
 3070: @c discussed several times in the past, but someone still has to commit
 3071: @c itself to that non-trivial task.
 3072: @c 
 3073: 我々には,これがどうすれば良いか分かりません.このことは,これまでに何
 3074: 度も議論されてきましたが,誰かがそのような不明確な作業を自分に科さなけ
 3075: ればなりません.
 3076: 
 3077: @c From the user point of view, @command{aclocal}'s removal might turn
 3078: @c out to be painful.  There is a simple precaution that you may take to
 3079: @c make that switch more seamless: never call @command{aclocal} yourself.
 3080: @c Keep this guy under the exclusive control of @command{autoreconf} and
 3081: @c Automake's rebuild rules.  Hopefully you won't need to worry about
 3082: @c things breaking, when @command{aclocal} disappears, because everything
 3083: @c will have been taken care of.  If otherwise you used to call
 3084: @c @command{aclocal} directly yourself or from some script, you will
 3085: @c quickly notice the change.
 3086: @c 
 3087: ユーザの視点からは,@command{aclocal}の消滅は痛ましいものになり得ます.
 3088: がたがたしないように切替えるための予防策があります.それは自分で
 3089: @command{aclocal}を呼び出さないことです.こいつを@command{autoreconf} 
 3090: の制御下に追いやったり,Automakeのリビルドのルールにしたりしてください.
 3091: 希望としては,@command{aclocal}が無くなったとき,すべての面倒が見られ
 3092: ていて,崩壊後に悩む必要が無いようにしたいことでしょう.それ以外で,直
 3093: 接,またはスクリプトから@command{aclocal}を呼び出している場合,変更に
 3094: 注意して下さい.
 3095: 
 3096: @c Many packages come with a script called @file{bootstrap.sh} or
 3097: @c @file{autogen.sh}, that will just call @command{aclocal},
 3098: @c @command{libtoolize}, @command{gettextize} or @command{autopoint},
 3099: @c @command{autoconf}, @command{autoheader}, and @command{automake} in
 3100: @c the right order.  Actually this is precisely what @command{autoreconf}
 3101: @c can do for you.  If your package has such a @file{bootstrap.sh} or
 3102: @c @file{autogen.sh} script, consider using @command{autoreconf}.  That
 3103: @c should simplify its logic a lot (less things to maintain, yum!), it's
 3104: @c even likely you will not need the script anymore, and more to the point
 3105: @c you will not call @command{aclocal} directly anymore.
 3106: @c 
 3107: @command{aclocal},@command{libtoolize},@command{gettextize}または
 3108: @command{autopoint},@command{autoconf},@command{autoheader},そして
 3109: @command{automake}を正しい順序で呼び出している,@file{bootstrap.sh}や
 3110: @file{autogen.sh}といったスクリプトが一緒になっているパッケージもたく
 3111: さんあります.実際,これは@command{autoreconf}でできることと全く同じで
 3112: す.@file{bootstrap.sh}や@file{autogen.sh}のようなスクリプトがパッケー
 3113: ジにある場合,@command{autoreconf}の使用を検討してみて下さい.それは論
 3114: 理的にずいぶん簡単になり(管理には旨味はないけどね!),スクリプトはもは
 3115: や不要で,@command{aclocal}を直接呼び出す場所も無くなります.
 3116: 
 3117: 
 3118: @node Top level
 3119: @c @chapter The top-level @file{Makefile.am}
 3120: @chapter 最上位の@file{Makefile.am}
 3121: 
 3122: @c @section Recursing subdirectories
 3123: @section サブディレクトリの再帰
 3124: 
 3125: @cindex SUBDIRS, explained
 3126: 
 3127: @c In packages with subdirectories, the top level @file{Makefile.am} must
 3128: @c tell Automake which subdirectories are to be built.  This is done via
 3129: @c the @code{SUBDIRS} variable.
 3130: @c 
 3131: サブディレクトリがあるパッケージでは,最上位の@file{Makefile.am}でビル
 3132: ドするサブディレクトリをAutomakeに伝える必要があります.これは
 3133: @code{SUBDIRS}変数によってなされます.
 3134: @vindex SUBDIRS
 3135: 
 3136: @c The @code{SUBDIRS} variable holds a list of subdirectories in which
 3137: @c building of various sorts can occur.  The rules for many targets
 3138: @c (e.g. @code{all}) in the generated @file{Makefile} will run commands
 3139: @c both locally and in all specified subdirectories.  Note that the
 3140: @c directories listed in @code{SUBDIRS} are not required to contain
 3141: @c @file{Makefile.am}s; only @file{Makefile}s (after configuration).
 3142: @c This allows inclusion of libraries from packages which do not use
 3143: @c Automake (such as @code{gettext}).
 3144: @c 
 3145: @code{SUBDIRS}変数は,さまざまな種類のビルドが行われるサブディレクトリ
 3146: のリストを保持しています.生成されている@file{Makefile}内の多くのター
 3147: ゲットに対するルールは(例えば@code{all}),ローカルと指定されたすべての
 3148: サブディレクトリの両方で実行されます.@code{SUBDIRS}でリストアップされ
 3149: ているディレクトリには,@file{Makefile.am}を含んでいる必要がないことに
 3150: 注意してください.(configure後の)@file{Makefile}だけが必要です.こうす
 3151: ることで,(@code{gettext}のような)Automakeを使用しないパッケージからラ
 3152: イブラリを含めることが可能になります.
 3153: 
 3154: @c In packages that use subdirectories, the top-level @file{Makefile.am} is
 3155: @c often very short.  For instance, here is the @file{Makefile.am} from the
 3156: @c GNU Hello distribution:
 3157: @c 
 3158: サブディレクトリを使用しているパッケージでは,最上位の
 3159: @file{Makefile.am}は非常に短いことが多くなっています.例えば,GNU
 3160: Hello 配布物の@file{Makefile.am}は以下のようになっています.
 3161: 
 3162: @example
 3163: EXTRA_DIST = BUGS ChangeLog.O README-alpha
 3164: SUBDIRS = doc intl po src tests
 3165: @end example
 3166: 
 3167: @c When Automake invokes @code{make} in a subdirectory, it uses the value
 3168: @c of the @code{MAKE} variable.  It passes the value of the variable
 3169: @c @code{AM_MAKEFLAGS} to the @code{make} invocation; this can be set in
 3170: @c @file{Makefile.am} if there are flags you must always pass to
 3171: @c @code{make}.
 3172: @c 
 3173: Automakeが@code{make}をサブディレクトリで呼び出すとき,@code{MAKE}変数
 3174: の値を使用します.それは,変数@code{AM_MAKEFLAGS}の値を@code{make}の呼
 3175: び出しに渡します.これで,常に@code{make}に渡す必要があるフラグを
 3176: @file{Makefile.am}で設定することが可能になります.
 3177: @vindex MAKE
 3178: @vindex MAKEFLAGS
 3179: 
 3180: @c The directories mentioned in @code{SUBDIRS} must be direct children of
 3181: @c the current directory.  For instance, you cannot put @samp{src/subdir}
 3182: @c into @code{SUBDIRS}.  Instead you should put @code{SUBDIRS = subdir}
 3183: @c into @file{src/Makefile.am}.  Automake can be used to construct packages
 3184: @c of arbitrary depth this way.
 3185: @c 
 3186: @code{SUBDIRS}で記述されているディレクトリは,現在のディレクトリの直接
 3187: の子ディレクトリにする必要があります.例えば,@code{SUBDIRS}に
 3188: @samp{src/subdir}を書くことはできません.代わりに,@code{SUBDIRS =
 3189: subdir}を@file{src/Makefile.am}に書くべきです.この方法で任意の深さの
 3190: パッケージ構成で,Automakeを使用することがが可能になります.
 3191: 
 3192: @c By default, Automake generates @file{Makefiles} which work depth-first
 3193: @c (@samp{postfix}).  However, it is possible to change this ordering.
 3194: @c You can do this by putting @samp{.} into @code{SUBDIRS}.  For
 3195: @c instance, putting @samp{.}  first will cause a @samp{prefix} ordering
 3196: @c of directories.  All @samp{clean} rules are run in reverse
 3197: @c order of build rules.
 3198: @c 
 3199: デフォルトで,Automakeは最初の深さ(@samp{postfix})で動作する
 3200: @file{Makefile}を生成します.しかし,この順序を変更することは可能です.
 3201: @code{SUBDIRS}に@samp{.}を書くことでこうすることが可能です.例えば,
 3202: @samp{.}を最初に書くことで,ディレクトリの@samp{prefix}の順序になりま
 3203: す.すべての@samp{clean}ルールは,ビルドルールの逆の順序で実行されます.
 3204: 
 3205: @c @section Conditional subdirectories
 3206: @section サブディレクトリの条件
 3207: @cindex Subdirectories, building conditionally
 3208: @cindex Conditional subdirectories
 3209: @cindex @code{SUBDIRS}, conditional
 3210: @cindex Conditional @code{SUBDIRS}
 3211: 
 3212: @c It is possible to define the @code{SUBDIRS} variable conditionally if,
 3213: @c like in the case of GNU @code{Inetutils}, you want to only build a
 3214: @c subset of the entire package.
 3215: @c 
 3216: GNU @code{Inetutils}のように,パッケージ全体のサブセットをビルドしたい
 3217: だけの場合,@code{SUBDIRS}変数を条件的に定義することがが可能です.
 3218: 
 3219: @c To illustrate how this works, let's assume we have two directories
 3220: @c @file{src/} and @file{opt/}.  @file{src/} should always be built, but we
 3221: @c want to decide in @code{./configure} whether @file{opt/} will be built
 3222: @c or not.  (For this example we will assume that @file{opt/} should be
 3223: @c built when the variable @code{$want_opt} was set to @code{yes}.)
 3224: @c 
 3225: これがどのように動作するかを説明するため,二つのディレクトリ
 3226: @file{src/} と@file{opt/}があると仮定しましょう.@file{src/}は常にビル
 3227: ドされますが,@file{opt/}は@code{./configure}でビルドするかどうかを決
 3228: 定したいと思います.(この例では,変数@code{$want_opt}が@code{yes}に設
 3229: 定されているとき@file{opt/}をビルドすると仮定します.)
 3230: 
 3231: @c Running @code{make} should thus recurse into @file{src/} always, and
 3232: @c then maybe in @file{opt/}.
 3233: @c 
 3234: @code{make}と実行することで,@file{src/}は常に再帰され,@file{opt/}も
 3235: そうなるかもしれません.
 3236: 
 3237: @c However @code{make dist} should always recurse into both @file{src/} and
 3238: @c @file{opt/}.  Because @file{opt/} should be distributed even if it is
 3239: @c not needed in the current configuration. This means @file{opt/Makefile}
 3240: @c should be created unconditionally.  @footnote{Don't try seeking a
 3241: @c solution where @file{opt/Makefile} is created conditionally, this is a
 3242: @c lot trickier than the solutions presented here.}
 3243: @c 
 3244: しかし,@code{make dist}では常に@file{src/}と@file{opt/}の両方を再帰す
 3245: べきです.つまり,現在のconfigureでは不要な場合でも,@file{opt/}は配布
 3246: されるべきです.これは,@file{opt/Makefile}は条件に依存せず作成される
 3247: べきだということを意味します.@footnote{@file{opt/Makefile}を条件的に
 3248: 作成するという解を探さないでください.これはここにある解より扱いにくい
 3249: ものです.}
 3250: 
 3251: @c There are two ways to setup a project like this.  You can use Automake
 3252: @c conditionals (@pxref{Conditionals}) or use Autoconf @code{AC_SUBST}
 3253: @c variables (@pxref{Setting Output Variables, , Setting Output Variables,
 3254: @c autoconf, The Autoconf Manual}).  Using Automake conditionals is the
 3255: @c preferred solution.
 3256: @c 
 3257: このようにプロジェクトを設定する方法は二つあります.Automakeの条件式
 3258: (@pxref{Conditionals})を使用したり,Autoconfの@code{AC_SUBST}マクロ
 3259: (@pxref{Setting Output Variables, , Setting Output Variables,
 3260: autoconf, The Autoconf Manual})を使用したりすることが可能です.
 3261: Automakeの条件式の使用は,より好まれる解となります.
 3262: 
 3263: @c @subsection Conditional subdirectories with @code{AM_CONDITIONAL}
 3264: @subsection @code{AM_CONDITIONAL}を用いた条件付サブディレクトリ
 3265: @cindex @code{SUBDIRS} and @code{AM_CONDITIONAL}
 3266: @cindex @code{AM_CONDITIONAL} and @code{SUBDIRS}
 3267: 
 3268: @c The test case for the setup described here is
 3269: @c     test/subdircond2.test
 3270: @c Try to keep it in sync.
 3271: @c 
 3272: @c @file{configure} should output the @file{Makefile} for each directory
 3273: @c and define a condition into which @file{opt/} should be built.
 3274: @c 
 3275: @file{configure}でそれぞれのディレクトリの@file{Makefile}を出力し,
 3276: @file{opt/}をビルドするかどうかの条件を定義すべきです.
 3277: 
 3278: @example
 3279: @dots{}
 3280: AM_CONDITIONAL([COND_OPT], [test "$want_opt" = yes])
 3281: AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
 3282: @dots{}
 3283: @end example
 3284: 
 3285: @c Then @code{SUBDIRS} can be defined in the top-level @file{Makefile.am}
 3286: @c as follows.
 3287: @c 
 3288: @code{SUBDIRS}は,最上位の@file{Makefile.am}で,以下のように定義するこ
 3289: とが可能です.
 3290: 
 3291: @example
 3292: if COND_OPT
 3293:   MAYBE_OPT = opt
 3294: endif
 3295: SUBDIRS = src $(MAYBE_OPT)
 3296: @end example
 3297: 
 3298: @c As you can see, running @code{make} will rightly recurse into
 3299: @c @file{src/} and maybe @file{opt/}.
 3300: @c 
 3301: 御覧のように,@code{make}を実行することで,@file{src/}と,おそらく
 3302: @file{opt/}に再帰していくでしょう.
 3303: 
 3304: @vindex DIST_SUBDIRS
 3305: @c As you can't see, running @code{make dist} will recurse into both
 3306: @c @file{src/} and @file{opt/} directories because @code{make dist}, unlike
 3307: @c @code{make all}, doesn't use the @code{SUBDIRS} variable.  It uses the
 3308: @c @code{DIST_SUBDIRS} variable.
 3309: @c 
 3310: 見ることはできませんが,@code{make dist}は@code{make all}とは異なり,
 3311: @code{SUBDIRS}変数を使用しないので,@code{make dist}を実行することで,
 3312: @file{src/}と@file{opt/}の両方に再帰的に行ないます.それは
 3313: @code{DIST_SUBDIRS}変数を使用します.
 3314: 
 3315: @c In this case Automake will define @code{DIST_SUBDIRS = src opt}
 3316: @c automatically because it knows that @code{MAYBE_OPT} can contain
 3317: @c @code{opt} in some condition.
 3318: @c 
 3319: この場合,Automakeは@code{MAYBE_OPT}が条件によっては@code{opt}を含むこ
 3320: とを知っているので,@code{DIST_SUBDIRS = src opt}を自動的に定義します.
 3321: 
 3322: @c @subsection Conditional subdirectories with @code{AC_SUBST}
 3323: @subsection @code{AC_SUBST}を用いたサブディレクトリの条件式
 3324: @cindex @code{SUBDIRS} and @code{AC_SUBST}
 3325: @cindex @code{AC_SUBST} and @code{SUBDIRS}
 3326: 
 3327: @c The test case for the setup described here is
 3328: @c     test/subdircond3.test
 3329: @c Try to keep it in sync.
 3330: @c 
 3331: @c Another idea is to define @code{MAYBE_OPT} from @file{./configure} using
 3332: @c @code{AC_SUBST}:
 3333: @c 
 3334: もう一つの考えは,@code{AC_SUBST}を使用して,@file{./configure}で
 3335: @code{MAYBE_OPT}を定義することです.
 3336: 
 3337: @example
 3338: @dots{}
 3339: if test "$want_opt" = yes; then
 3340:   MAYBE_OPT=opt
 3341: else
 3342:   MAYBE_OPT=
 3343: fi
 3344: AC_SUBST([MAYBE_OPT])
 3345: AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
 3346: @dots{}
 3347: @end example
 3348: 
 3349: @c In this case the top-level @file{Makefile.am} should look as follows.
 3350: @c 
 3351: この状況では,最上位の@file{Makefile.am}は以下のようになるでしょう.
 3352: 
 3353: @example
 3354: SUBDIRS = src $(MAYBE_OPT)
 3355: DIST_SUBDIRS = src opt
 3356: @end example
 3357: 
 3358: @c The drawback is that since Automake cannot guess what the possible
 3359: @c values of @code{MAYBE_OPT} are, it is necessary to define
 3360: @c @code{DIST_SUBDIRS}.
 3361: @c 
 3362: 欠点は,Automakeが@code{MAYBE_OPT}の変数が何かを推測することが不可能な
 3363: ので,@code{DIST_SUBDIRS}に定義する必要があるということです.
 3364: 
 3365: @c @subsection How @code{DIST_SUBDIRS} is used
 3366: @subsection @code{DIST_SUBDIRS}が使用される方法
 3367: @cindex @code{DIST_SUBDIRS}, explained
 3368: 
 3369: @c As shown in the above examples, @code{DIST_SUBDIRS} is used in rules
 3370: @c that need to recurse in all directories, even those which have been
 3371: @c conditionally left out of the build.
 3372: @c 
 3373: 上記の例のように,@code{DIST_SUBDIRS}は,条件によってビルドされないま
 3374: まであっても,すべてのディレクトリで再帰的に必要なルールとして使用され
 3375: ます.
 3376: 
 3377: @c Precisely, @code{DIST_SUBDIRS} is used by @code{make dist}, @code{make
 3378: @c distclean}, and @code{make maintainer-clean}.  All other recursive
 3379: @c rules use @code{SUBDIRS}.
 3380: @c 
 3381: 厳密にいうと,@code{DIST_SUBDIRS}は@code{make dist},@code{make
 3382: distclean},そして@code{make maintainer-clean}で使用されます.すべての
 3383: その他の再帰的なルールは@code{SUBDIRS}を使用します.
 3384: 
 3385: @c Automake will define @code{DIST_SUBDIRS} automatically from the
 3386: @c possibles values of @code{SUBDIRS} in all conditions.
 3387: @c 
 3388: Automakeは,すべての条件で取り得る@code{SUBDIRS}の値から,自動的に
 3389: @code{DIST_SUBDIRS}を定義します.
 3390: 
 3391: @c If @code{SUBDIRS} contains @code{AC_SUBST} variables,
 3392: @c @code{DIST_SUBDIRS} will not be defined correctly because Automake
 3393: @c doesn't know the possible values of these variables.  In this case
 3394: @c @code{DIST_SUBDIRS} needs to be defined manually.
 3395: @c 
 3396: @code{SUBDIRS}が@code{AC_SUBST}変数を含んでいる場合,Automakeはこれら
 3397: の変数の取り得る値を知らないので,@code{DIST_SUBDIRS}は正しく定義され
 3398: ません.この状況では,@code{DIST_SUBDIRS}を手動で定義する必要がありま
 3399: す.
 3400: 
 3401: 
 3402: @node Alternative
 3403: @c @chapter An Alternative Approach to Subdirectories
 3404: @chapter サブディレクトリに代わるアプローチ
 3405: 
 3406: @c If you've ever read Peter Miller's excellent paper,
 3407: @c @uref{http://www.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html,
 3408: @c Recursive Make Considered Harmful}, the preceding section on the use of
 3409: @c subdirectories will probably come as unwelcome advice.  For those who
 3410: @c haven't read the paper, Miller's main thesis is that recursive
 3411: @c @code{make} invocations are both slow and error-prone.
 3412: @c 
 3413: Peter Millerの優れた論文をすでに読んでいる場合
 3414: @uref{http://www.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html,
 3415: Recursive Make Considered Harmful},サブディレクトリを使用する前のセク
 3416: ションは,おそらくありがたくない助言になるでしょう.論文を読んでいない
 3417: 人のために,Millerの主題は,再帰的な@code{make}の呼び出しは,遅くてエ
 3418: ラーを発生しやすいということです.
 3419: 
 3420: @c Automake provides sufficient cross-directory support @footnote{We
 3421: @c believe.  This work is new and there are probably warts.
 3422: @c @xref{Introduction}, for information on reporting bugs.} to enable you
 3423: @c to write a single @file{Makefile.am} for a complex multi-directory
 3424: @c package.
 3425: @c 
 3426: 複雑な複数のディレクトリがあるパッケージに対して,単一の
 3427: @file{Makefile.am}だけを書くことを可能にする,ディレクトリを跨るための
 3428: 優れたサポート@footnote{我々は信じています.この動作は新しく,問題があ
 3429: る可能性があります.バグレポートの情報は,@xref{Introduction}.}を,
 3430: Automake は提供しています.
 3431: 
 3432: @c By default an installable file specified in a subdirectory will have its
 3433: @c directory name stripped before installation.  For instance, in this
 3434: @c example, the header file will be installed as
 3435: @c @file{$(includedir)/stdio.h}:
 3436: @c 
 3437: デフォルトで,サブディレクトリで指定されているインストール可能なファイ
 3438: ルは,インストールする前にそのディレクトリ名が切り取られています.例え
 3439: ば以下の例では,ヘッダファイルが@file{$(includedir)/stdio.h}にインストー
 3440: ルされるでしょう.
 3441: 
 3442: @example
 3443: include_HEADERS = inc/stdio.h
 3444: @end example
 3445: 
 3446: @cindex nobase_
 3447: @cindex Path stripping, avoiding
 3448: @cindex Avoiding path stripping
 3449: 
 3450: @c However, the @samp{nobase_} prefix can be used to circumvent this path
 3451: @c stripping.  In this example, the header file will be installed as
 3452: @c @file{$(includedir)/sys/types.h}:
 3453: @c 
 3454: しかし,@samp{nobase_}を前置することで,このパスを切り取りを回避するこ
 3455: とが可能になります.以下の例では,ヘッダファイルは
 3456: @file{$(includedir)/sys/types.h}にインストールされるでしょう.
 3457: 
 3458: @example
 3459: nobase_include_HEADERS = sys/types.h
 3460: @end example
 3461: 
 3462: @cindex nobase_ and dist_ or nodist_
 3463: @cindex dist_ and nobase_
 3464: @cindex nodist_ and nobase_
 3465: 
 3466: @c @samp{nobase_} should be specified first when used in conjunction with
 3467: @c either @samp{dist_} or @samp{nodist_} (@pxref{Dist}).  For instance:
 3468: @c 
 3469: @samp{nobase_}は,@samp{dist_}や@samp{nodist_}(@pxref{Dist})のいずれか
 3470: と組合わせて使用するとき,最初に指定するべきです.例えば以下のようにし
 3471: ます.
 3472: 
 3473: @example
 3474: nobase_dist_pkgdata_DATA = images/vortex.pgm
 3475: @end example
 3476: 
 3477: @node Programs
 3478: @c @chapter Building Programs and Libraries
 3479: @chapter プログラムとライブラリのビルド
 3480: 
 3481: @c A large part of Automake's functionality is dedicated to making it easy
 3482: @c to build programs and libraries.
 3483: @c 
 3484: Automakeの機能の大半は,プログラムとライブラリのビルドを容易にすること
 3485: に費やされています.
 3486: 
 3487: @menu
 3488: * A Program::                   Building a program
 3489: * A Library::                   Building a library
 3490: * A Shared Library::            Building a Libtool library
 3491: * Program and Library Variables::  Variables controlling program and
 3492:                                 library builds
 3493: * Default _SOURCES::            Default source files
 3494: * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
 3495: * Program variables::           Variables used when building a program
 3496: * Yacc and Lex::                Yacc and Lex support
 3497: * C++ Support::
 3498: * Assembly Support::
 3499: * Fortran 77 Support::
 3500: * Java Support::
 3501: * Support for Other Languages::
 3502: * ANSI::                        Automatic de-ANSI-fication
 3503: * Dependencies::                Automatic dependency tracking
 3504: * EXEEXT::                      Support for executable extensions
 3505: @end menu
 3506: 
 3507: 
 3508: @node A Program
 3509: @c @section Building a program
 3510: @section プログラムのビルド
 3511: 
 3512: @c In order to build a program, you need to tell Automake which sources
 3513: @c are part of it, and which libraries it should be linked with.
 3514: @c 
 3515: プログラムをビルドするために,その一部となるソースとリンクされるライブ
 3516: ラリをAutomakeに伝える必要があります.
 3517: 
 3518: @c This section also covers conditional compilation of sources or
 3519: @c programs.  Most of the comments about these also apply to libraries
 3520: @c (@pxref{A Library}) and libtool libraries (@pxref{A Shared Library}).
 3521: @c 
 3522: このセクションは,ソースやプログラムの条件付きコンパイルもカバーしてい
 3523: ます.これらのコメントのほとんどは,ライブラリ(@pxref{A Library})と
 3524: libtoolライブラリ(@pxref{A Shared Library})に適用されます.
 3525: 
 3526: @menu
 3527: * Program Sources::             Defining program sources
 3528: * Linking::                     Linking with libraries or extra objects
 3529: * Conditional Sources::         Handling conditional sources
 3530: * Conditional Programs::        Building program conditionally
 3531: @end menu
 3532: 
 3533: @node Program Sources
 3534: @c @subsection Defining program sources
 3535: @subsection プログラムソースの定義
 3536: 
 3537: @cindex PROGRAMS, bindir
 3538: @vindex bin_PROGRAMS
 3539: @vindex sbin_PROGRAMS
 3540: @vindex libexec_PROGRAMS
 3541: @vindex pkglib_PROGRAMS
 3542: @vindex noinst_PROGRAMS
 3543: @vindex check_PROGRAMS
 3544: 
 3545: @c In a directory containing source that gets built into a program (as
 3546: @c opposed to a library or a script), the @samp{PROGRAMS} primary is used.
 3547: @c Programs can be installed in @code{bindir}, @code{sbindir},
 3548: @c @code{libexecdir}, @code{pkglibdir}, or not at all (@samp{noinst}).
 3549: @c They can also be built only for @code{make check}, in which case the
 3550: @c prefix is @samp{check}.
 3551: @c 
 3552: (ライブラリやスクリプトと比べて)プログラムにビルドされるソースを含んで
 3553: いるディレクトリには,@samp{PROGRAMS}プライマリが使用されます.プログ
 3554: ラムを,@code{bindir},@code{sbindir},@code{libexecdir},
 3555: @code{pkglibdir}にインストールしたり,または全くインストールしない
 3556: (@code{noinst})ことが可能です.@code{make check}に対してのみビルドさせ
 3557: ることも可能で,そのときは接頭辞は@samp{check}になります.
 3558: 
 3559: @c For instance:
 3560: @c 
 3561: 例えば以下のようにします.
 3562: 
 3563: @example
 3564: bin_PROGRAMS = hello
 3565: @end example
 3566: 
 3567: @c In this simple case, the resulting @file{Makefile.in} will contain code
 3568: @c to generate a program named @code{hello}.
 3569: @c 
 3570: この単純な状況では,結果として生成される@file{Makefile.in}に,
 3571: @code{hello}という名前のプログラムを生成するコードが含まれるでしょう.
 3572: 
 3573: @c Associated with each program are several assisting variables which are
 3574: @c named after the program.  These variables are all optional, and have
 3575: @c reasonable defaults.  Each variable, its use, and default is spelled out
 3576: @c below; we use the ``hello'' example throughout.
 3577: @c 
 3578: それぞれのプログラムに関連して,プログラムの後に命名される補助変数もあ
 3579: ります.これらの変数はすべてオプションで,妥当なデフォルト値を持ちます.
 3580: それぞれの変数,その使用,そしてデフォルトについては以下で記述します.
 3581: 我々は,``hello''の例を終始使用します.
 3582: 
 3583: @c The variable @code{hello_SOURCES} is used to specify which source files
 3584: @c get built into an executable:
 3585: @c 
 3586: 変数@code{hello_SOURCES}は,実行形式にビルドされるソースファイルを指定
 3587: するために使用されます.
 3588: 
 3589: @example
 3590: hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
 3591: @end example
 3592: 
 3593: @c This causes each mentioned @samp{.c} file to be compiled into the
 3594: @c corresponding @samp{.o}.  Then all are linked to produce @file{hello}.
 3595: @c 
 3596: これにより,上記のそれぞれの@samp{.c}ファイルを,対応する@samp{.o}にコ
 3597: ンパイルします.そして,すべては@file{hello}を生成するためにリンクされ
 3598: ます.
 3599: 
 3600: @cindex _SOURCES primary, defined
 3601: @cindex SOURCES primary, defined
 3602: @cindex Primary variable, SOURCES
 3603: 
 3604: @c If @samp{hello_SOURCES} is not specified, then it defaults to the single
 3605: @c file @file{hello.c} (@pxref{Default _SOURCES}).
 3606: @c 
 3607: @samp{hello_SOURCES}が指定されていない場合,そのデフォルトは一つのファ
 3608: イル@file{hello.c}になります(@pxref{Default _SOURCES}).
 3609: @vindex _SOURCES
 3610: @vindex SOURCES
 3611: 
 3612: @c Multiple programs can be built in a single directory.  Multiple programs
 3613: @c can share a single source file, which must be listed in each
 3614: @c @samp{_SOURCES} definition.
 3615: @c 
 3616: 複数のプログラムを一つのディレクトリでビルドすることが可能です.複数の
 3617: プログラムで単一のソースファイルを共有することが可能で,それぞれの
 3618: @samp{_SOURCES}定義でリストアップする必要があります.
 3619: 
 3620: @cindex Header files in _SOURCES
 3621: @cindex _SOURCES and header files
 3622: 
 3623: @c Header files listed in a @samp{_SOURCES} definition will be included in
 3624: @c the distribution but otherwise ignored.  In case it isn't obvious, you
 3625: @c should not include the header file generated by @file{configure} in a
 3626: @c @samp{_SOURCES} variable; this file should not be distributed.  Lex
 3627: @c (@samp{.l}) and Yacc (@samp{.y}) files can also be listed; see @ref{Yacc
 3628: @c and Lex}.
 3629: @c 
 3630: @samp{_SOURCES}定義にリストアップされているヘッダファイルは配布物に含
 3631: まれますが,それ以外のものは無視されます.明らかではないときは,
 3632: @file{configure}で生成されるヘッダファイルを@samp{_SOURCES}変数に含め
 3633: るべきではありません.このファイルは配布すべきではありません.
 3634: Lex(@samp{.l})とYacc(@samp{.y})のファイルもリストアップすることが可能
 3635: です.@ref{Yacc and Lex}を参照して下さい.
 3636: 
 3637: 
 3638: @node Linking
 3639: @c @subsection Linking the program
 3640: @subsection プログラムのリンク
 3641: 
 3642: @c If you need to link against libraries that are not found by
 3643: @c @code{configure}, you can use @code{LDADD} to do so.  This variable is
 3644: @c used to specify additional objects or libraries to link with; it is
 3645: @c inappropriate for specifying specific linker flags, you should use
 3646: @c @code{AM_LDFLAGS} for this purpose.
 3647: @c 
 3648: @code{configure}で見つからないライブラリに対してリンクする必要がある場
 3649: 合,そうするために@code{LDADD}を使用することが可能です.この変数は,リ
 3650: ンクする追加のオブジェクトやライブラリを指定するために使用されます.そ
 3651: れは,特定のリンカフラグを指定するには不適切で,この目的では
 3652: @code{AM_LDFLAGS}を使用すべきです.
 3653: @vindex LDADD
 3654: @vindex AM_LDFLAGS
 3655: 
 3656: @cindex prog_LDADD, defined
 3657: 
 3658: @c Sometimes, multiple programs are built in one directory but do not share
 3659: @c the same link-time requirements.  In this case, you can use the
 3660: @c @samp{@var{prog}_LDADD} variable (where @var{prog} is the name of the
 3661: @c program as it appears in some @samp{_PROGRAMS} variable, and usually
 3662: @c written in lowercase) to override the global @code{LDADD}.  If this
 3663: @c variable exists for a given program, then that program is not linked
 3664: @c using @code{LDADD}.
 3665: @c 
 3666: 複数のプログラムが一つのディレクトリでビルドされていても,リンク時に同
 3667: じ条件を共有しないときもあります.この場合は,グローバルな@code{LDADD} 
 3668: に優先させるため,@samp{@var{prog}_LDADD}変数(ここでの@var{prog}はプロ
 3669: グラムの名前で,それは@samp{_PROGRAMS}変数にあって,通常は小文字で書か
 3670: れています)を使用することが可能です.この変数が所定のプログラムに対し
 3671: て存在する場合,そのプログラムは@code{LDADD}を使用してリンクされません.
 3672: @vindex _LDADD
 3673: 
 3674: @c For instance, in GNU cpio, @code{pax}, @code{cpio} and @code{mt} are
 3675: @c linked against the library @file{libcpio.a}.  However, @code{rmt} is
 3676: @c built in the same directory, and has no such link requirement.  Also,
 3677: @c @code{mt} and @code{rmt} are only built on certain architectures.  Here
 3678: @c is what cpio's @file{src/Makefile.am} looks like (abridged):
 3679: @c 
 3680: 例えば,GNU cpioでは,@code{pax},@code{cpio},そして@code{mt}は,
 3681: @file{libcpio.a}ライブラリにリンクされます.しかし,@code{rmt}は同じディ
 3682: レクトリでビルドされますが,そのようなリンクは必要ありません.また,
 3683: @code{mt}と@code{rmt}は特定のアーキテクチャでのみビルドされます.以下
 3684: は,cpioの@file{src/Makefile.am}に似たものです(省略されています).
 3685: 
 3686: @example
 3687: bin_PROGRAMS = cpio pax $(MT)
 3688: libexec_PROGRAMS = $(RMT)
 3689: EXTRA_PROGRAMS = mt rmt
 3690: 
 3691: LDADD = ../lib/libcpio.a $(INTLLIBS)
 3692: rmt_LDADD =
 3693: 
 3694: cpio_SOURCES = @dots{}
 3695: pax_SOURCES = @dots{}
 3696: mt_SOURCES = @dots{}
 3697: rmt_SOURCES = @dots{}
 3698: @end example
 3699: 
 3700: @cindex _LDFLAGS, defined
 3701: 
 3702: @c @samp{@var{prog}_LDADD} is inappropriate for passing program-specific
 3703: @c linker flags (except for @samp{-l}, @samp{-L}, @samp{-dlopen} and
 3704: @c @samp{-dlpreopen}).  So, use the @samp{@var{prog}_LDFLAGS} variable for
 3705: @c this purpose.
 3706: @c 
 3707: @samp{@var{prog}_LDADD}でプログラム独自のリンカフラグ(@samp{-l},
 3708: @samp{-L},@samp{-dlopen}そして@samp{-dlpreopen}を除く)を渡すことは不
 3709: 適当です.そのため,この目的に対しては@samp{@var{prog}_LDFLAGS}変数を
 3710: 使用してください.
 3711: @vindex _LDFLAGS
 3712: 
 3713: @cindex _DEPENDENCIES, defined
 3714: 
 3715: @c It is also occasionally useful to have a program depend on some other
 3716: @c target which is not actually part of that program.  This can be done
 3717: @c using the @samp{@var{prog}_DEPENDENCIES} variable.  Each program depends
 3718: @c on the contents of such a variable, but no further interpretation is
 3719: @c done.
 3720: @c 
 3721: 実際にはプログラムの一部でない他のターゲットに依存するプログラムを持つ
 3722: ことが役に立つこともあります.これは@samp{@var{prog}_DEPENDENCIES}変数
 3723: を使用することで可能になります.それぞれのプログラムはこの変数の内容に
 3724: 依存しますが,それ以上の解釈はされません.
 3725: 
 3726: @c If @samp{@var{prog}_DEPENDENCIES} is not supplied, it is computed by
 3727: @c Automake.  The automatically-assigned value is the contents of
 3728: @c @samp{@var{prog}_LDADD}, with most configure substitutions, @samp{-l},
 3729: @c @samp{-L}, @samp{-dlopen} and @samp{-dlpreopen} options removed.  The
 3730: @c configure substitutions that are left in are only @samp{$(LIBOBJS)} and
 3731: @c @samp{$(ALLOCA)}; these are left because it is known that they will not
 3732: @c cause an invalid value for @samp{@var{prog}_DEPENDENCIES} to be
 3733: @c generated.
 3734: @c 
 3735: @samp{@var{prog}_DEPENDENCIES}が提供されていない場合,Automakeが考えま
 3736: す.自動的に割り当てられる値は@samp{@var{prog}_LDADD}の内容で,ほとん
 3737: どのconfigureの置換式,@samp{-l},@samp{-L},@samp{-dlopen},そして
 3738: @samp{-dlpreopen}オプションは削除されます.残っているconfigureの置換式
 3739: は,@samp{$(LIBOBJS)}と@samp{$(ALLOCA)}だけです.これらは,生成される
 3740: @samp{@var{prog}_DEPENDENCIES}に無効な値を与えないことが知られているの
 3741: で残されています.
 3742: 
 3743: 
 3744: @node Conditional Sources
 3745: @c @subsection Conditional compilation of sources
 3746: @subsection ソースの条件コンパイル
 3747: 
 3748: @c You can't put a configure substitution (e.g., @samp{@@FOO@@} or
 3749: @c @samp{$(FOO)} where @code{FOO} is defined via @code{AC_SUBST}) into a
 3750: @c @samp{_SOURCES} variable.  The reason for this is a bit hard to
 3751: @c explain, but suffice to say that it simply won't work.  Automake will
 3752: @c give an error if you try to do this.
 3753: @c 
 3754: @code{configure}の置換式(例えば,@code{AC_SUBST}で定義される@code{FOO} 
 3755: を用いた@samp{@@FOO@@}や@samp{$(FOO)})を@samp{_SOURCES} 変数に書き込む
 3756: ことはできません.この理由を説明するのは少し難しいのですが,単純に言っ
 3757: て動作しないということで十分でしょう.これを試みた場合,Automakeはエラー
 3758: を発します.
 3759: 
 3760: @c Fortunately there are two other ways to achieve the same result.  One is
 3761: @c to use configure substitutions in @code{_LDADD} variables, the other is
 3762: @c to use an Automake conditional.
 3763: @c 
 3764: 幸い,同じ結果を達成するために二つの別の方法があります.一つは,
 3765: @code{configure}の置換式を@code{_LDADD}変数で使用する方法で,もう一つ
 3766: は,Automakeの条件式を使用する方法です.
 3767: 
 3768: @c @subsubsection Conditional compilation using @code{_LDADD} substitutions
 3769: @subsubsection @code{_LDADD}の置換式を使用した条件コンパイル
 3770: 
 3771: @cindex EXTRA_prog_SOURCES, defined
 3772: 
 3773: @c Automake must know all the source files that could possibly go into a
 3774: @c program, even if not all the files are built in every circumstance.  Any
 3775: @c files which are only conditionally built should be listed in the
 3776: @c appropriate @samp{EXTRA_} variable.  For instance, if
 3777: @c @file{hello-linux.c} or @file{hello-generic.c} were conditionally included
 3778: @c in @code{hello}, the @file{Makefile.am} would contain:
 3779: @c 
 3780: Automakeは,すべてのファイルが全ての状況でビルドされるわけではない場合
 3781: でも,プログラムに組み込まれる可能性があるソースファイルをすべて知って
 3782: いる必要があります.条件によってのみビルドされるファイルは,適切な
 3783: @samp{EXTRA_}変数でリストアップすべきです.例えば,条件によって
 3784: @file{hello-linux.c}や@file{hello-generic.c}を@code{hello}に組み込む場
 3785: 合,@file{Makefile.am}に以下のものを含めます.
 3786: 
 3787: @example
 3788: bin_PROGRAMS = hello
 3789: hello_SOURCES = hello-common.c
 3790: EXTRA_hello_SOURCES = hello-linux.c hello-generic.c
 3791: hello_LDADD = $(HELLO_SYSTEM)
 3792: hello_DEPENDENCIES = $(HELLO_SYSTEM)
 3793: @end example
 3794: 
 3795: @noindent
 3796: @c You can then setup the @code{$(HELLO_SYSTEM)} substitution from
 3797: @c @file{configure.ac}:
 3798: @c 
 3799: @file{configure.ac}で@code{$(HELLO_SYSTEM)}の置換式を設定することが可
 3800: 能です.
 3801: 
 3802: @example
 3803: @dots{}
 3804: case $host in
 3805:   *linux*) HELLO_SYSTEM='hello-linux.$(OBJEXT)' ;;
 3806:   *)       HELLO_SYSTEM='hello-generic.$(OBJEXT)' ;;
 3807: esac
 3808: AC_SUBST([HELLO_SYSTEM])
 3809: @dots{}
 3810: @end example
 3811: 
 3812: @c In this case, @code{HELLO_SYSTEM} should be replaced by
 3813: @c @file{hello-linux.o} or @file{hello-bsd.o}, and added to
 3814: @c @code{hello_DEPENDENCIES} and @code{hello_LDADD} in order to be built
 3815: @c and linked in.
 3816: @c 
 3817: この場合,@code{HELLO_SYSTEM}は@file{hello-linux.o}や
 3818: @file{hello-bsd.o}で置換され,ビルドしリンクするために
 3819: @code{hello_DEPENDENCIES}と@code{hello_LDADD}に追加されます.
 3820: 
 3821: @c @subsubsection Conditional compilation using Automake conditionals
 3822: @subsubsection Automakeの条件式を使用した条件コンパイル
 3823: 
 3824: @c An often simpler way to compile source files conditionally is to use
 3825: @c Automake conditionals.  For instance, you could use this
 3826: @c @file{Makefile.am} construct to build the same @file{hello} example:
 3827: @c 
 3828: 条件によってソースファイルをコンパイルするためのより簡単な方法としては,
 3829: Automakeの条件式を使用することが多くなっています.例えば,同じ
 3830: @file{hello}の例をビルドするため,以下のような内容の@file{Makefile.am}
 3831: を使用することが可能でしょう.
 3832: 
 3833: @example
 3834: bin_PROGRAMS = hello
 3835: if LINUX
 3836: hello_SOURCES = hello-linux.c hello-common.c
 3837: else
 3838: hello_SOURCES = hello-generic.c hello-common.c
 3839: endif
 3840: @end example
 3841: 
 3842: @c In this case, your @file{configure.ac} should setup the @code{LINUX}
 3843: @c conditional using @code{AM_CONDITIONAL} (@pxref{Conditionals}).
 3844: @c 
 3845: この場合,@file{configure.ac}で@code{AM_CONDITIONAL}を使用して
 3846: @code{LINUX}条件式を設定する必要があります(@pxref{Conditionals}).
 3847: 
 3848: @c When using conditionals like this you don't need to use the
 3849: @c @samp{EXTRA_} variable, because Automake will examine the contents of
 3850: @c each variable to construct the complete list of source files.
 3851: @c 
 3852: Automakeは,ソースファイルの完全なリストを構成するためにそれぞれの変数
 3853: の内容を調査するので,このような条件を使用するときは,@samp{EXTRA_}変
 3854: 数を使用する必要はありません.
 3855: 
 3856: @c If your program uses a lot of files, you will probably prefer a
 3857: @c conditional @code{+=}.
 3858: @c 
 3859: プログラムで多くのファイルを使用している場合,おそらく条件付の
 3860: @code{+=}のほうが望ましいでしょう.
 3861: 
 3862: @example
 3863: bin_PROGRAMS = hello
 3864: hello_SOURCES = hello-common.c
 3865: if LINUX
 3866: hello_SOURCES += hello-linux.c
 3867: else
 3868: hello_SOURCES += hello-generic.c
 3869: endif
 3870: @end example
 3871: 
 3872: @node Conditional Programs
 3873: @c @subsection Conditional compilation of programs
 3874: @subsection プログラムの条件付コンパイル
 3875: @cindex Conditional programs
 3876: @cindex Programs, conditional
 3877: 
 3878: @c Sometimes it is useful to determine the programs that are to be built
 3879: @c at configure time.  For instance, GNU @code{cpio} only builds
 3880: @c @code{mt} and @code{rmt} under special circumstances.  The means to
 3881: @c achieve conditional compilation of programs are the same you can use
 3882: @c to compile source files conditionally: substitutions or conditionals.
 3883: @c 
 3884: ビルドされるプログラムをconfigure時に決定することが役に立つときもあり
 3885: ます.例えば,GNU @code{cpio}は特別な状況のときだけ@code{mt}と
 3886: @code{rmt}をビルドします.プログラムの条件付きコンパイルを達成するとい
 3887: う意味は,ソースファイルのコンパイルを条件的に行なうことと一緒です.置
 3888: 換式を用いたり条件式を用いたりします.
 3889: 
 3890: @c @subsubsection Conditional programs using @code{configure} substitutions
 3891: @subsubsection @code{configure}の置換式を使用した条件的プログラム
 3892: 
 3893: @c In this case, you must notify Automake of all the programs that can
 3894: @c possibly be built, but at the same time cause the generated
 3895: @c @file{Makefile.in} to use the programs specified by @code{configure}.
 3896: @c This is done by having @code{configure} substitute values into each
 3897: @c @samp{_PROGRAMS} definition, while listing all optionally built programs
 3898: @c in @code{EXTRA_PROGRAMS}.
 3899: @c 
 3900: この場合は,ビルドされる可能性のあるすべてのプログラムをAutomakeに知ら
 3901: せる必要がありますが,同時に,@code{configure}で指定されるプログラムを
 3902: 使用するように@file{Makefile.in}を生成させる必要もあります.このことは,
 3903: それぞれの@samp{_PROGRAMS}定義に@code{configure}での置換式の値を持たせ
 3904: ることで行なわれますが,一方では,@code{EXTRA_PROGRAMS}でオプションと
 3905: してビルドされるプログラムがすべてリストアップされています.
 3906: @vindex EXTRA_PROGRAMS
 3907: @cindex EXTRA_PROGRAMS, defined
 3908: 
 3909: @example
 3910: bin_PROGRAMS = cpio pax $(MT)
 3911: libexec_PROGRAMS = $(RMT)
 3912: EXTRA_PROGRAMS = mt rmt
 3913: @end example
 3914: 
 3915: @c As explained in @ref{EXEEXT}, Automake will rewrite
 3916: @c @code{bin_PROGRAMS}, @code{libexec_PROGRAMS}, and
 3917: @c @code{EXTRA_PROGRAMS}, appending @code{$(EXEEXT)} to each binary.
 3918: @c Obviously it cannot rewrite values obtained at run-time through
 3919: @c @code{configure} substitutions, therefore you should take care of
 3920: @c appending @code{$(EXEEXT)} yourself, as in @code{AC_SUBST([MT],
 3921: @c ['mt$@{EXEEXT@}'])}.
 3922: @c 
 3923: @ref{EXEEXT}の説明として,Automakeは@code{$(EXEEXT)}をそれぞれのバイナ
 3924: リに付加して,@code{bin_PROGRAMS},@code{libexec_PROGRAMS},そして
 3925: @code{EXTRA_PROGRAMS}を書き換えます.@code{configure}の置換式で,実行
 3926: 時に値を明示的に書き換えることは明らかに不可能なので,
 3927: @code{AC_SUBST([MT], ['mt$@{EXEEXT@}'])}の様に@code{$(EXEEXT)}を付加す
 3928: ることには気を付けて下さい.
 3929: 
 3930: @c @subsubsection Conditional programs using Automake conditionals
 3931: @subsubsection Automakeの条件式を使用した条件的プログラム
 3932: 
 3933: @c You can also use Automake conditionals (@pxref{Conditionals}) to
 3934: @c select programs to be built.  In this case you don't have to worry
 3935: @c about @code{$(EXEEXT)} or @code{EXTRA_PROGRAMS}.
 3936: @c 
 3937: ビルドするプログラムを選択するため,Automakeの条件式を
 3938: (@pxref{Conditionals})使用することも可能です.この状況では,
 3939: @code{$(EXEEXT)}や@code{EXTRA_PROGRAMS}に気を付ける必要はありません.
 3940: 
 3941: @example
 3942: bin_PROGRAMS = cpio pax
 3943: if WANT_MT
 3944:   bin_PROGRAMS += mt
 3945: endif
 3946: if WANT_RMT
 3947:   libexec_PROGRAMS = rmt
 3948: endif
 3949: @end example
 3950: 
 3951: 
 3952: @node A Library
 3953: @c @section Building a library
 3954: @section ライブラリのビルド
 3955: 
 3956: @cindex _LIBRARIES primary, defined
 3957: @cindex LIBRARIES primary, defined
 3958: @cindex Primary variable, LIBRARIES
 3959: 
 3960: @vindex lib_LIBRARIES
 3961: @vindex pkglib_LIBRARIES
 3962: @vindex noinst_LIBRARIES
 3963: 
 3964: @c Building a library is much like building a program.  In this case, the
 3965: @c name of the primary is @samp{LIBRARIES}.  Libraries can be installed in
 3966: @c @code{libdir} or @code{pkglibdir}.
 3967: @c 
 3968: ライブラリをビルドすることは,プログラムをビルドすることによく似ていま
 3969: す.この場合は,プライマリの名前は@samp{LIBRARIES}です.ライブラリは
 3970: @code{libdir}や@code{pkglibdir}にインストールされます.
 3971: 
 3972: @c @xref{A Shared Library}, for information on how to build shared
 3973: @c libraries using libtool and the @samp{LTLIBRARIES} primary.
 3974: @c 
 3975: libtoolと@samp{LTLIBRARIES}プライマリを使用して共有ライブラリをビルド
 3976: する方法についての詳細は,@xref{A Shared Library}.
 3977: 
 3978: @c Each @samp{_LIBRARIES} variable is a list of the libraries to be built.
 3979: @c For instance to create a library named @file{libcpio.a}, but not install
 3980: @c it, you would write:
 3981: @c 
 3982: それぞれの@samp{_LIBRARIES}変数は,ビルドされるライブラリのリストです.
 3983: 例えば,@file{libcpio.a}という名前のライブラリを作成し,それをインストー
 3984: ルしないため,以下のように書きます.
 3985: 
 3986: @example
 3987: noinst_LIBRARIES = libcpio.a
 3988: @end example
 3989: 
 3990: @c The sources that go into a library are determined exactly as they are
 3991: @c for programs, via the @samp{_SOURCES} variables.  Note that the library
 3992: @c name is canonicalized (@pxref{Canonicalization}), so the @samp{_SOURCES}
 3993: @c variable corresponding to @file{liblob.a} is @samp{liblob_a_SOURCES},
 3994: @c not @samp{liblob.a_SOURCES}.
 3995: @c 
 3996: ライブラリに組み込まれるソースは,プログラムのときのように,
 3997: @samp{_SOURCES}変数によって正しく決定されます.ライブラリ名は標準的に
 3998: されるので(@pxref{Canonicalization}),@samp{liblob.a}に対応する
 3999: @samp{_SOURCES}変数は@samp{liblob.a_SOURCES}ではなく
 4000: @samp{liblob_a_SOURCES}になることに注意してください.
 4001: 
 4002: @cindex _LIBADD primary, defined
 4003: @cindex LIBADD primary, defined
 4004: @cindex Primary variable, LIBADD
 4005: 
 4006: @c Extra objects can be added to a library using the
 4007: @c @samp{@var{library}_LIBADD} variable.  This should be used for objects
 4008: @c determined by @code{configure}.  Again from @code{cpio}:
 4009: @c 
 4010: 追加のオブジェクトは,@samp{@var{library}_LIBADD}変数を使用してライブ
 4011: ラリに追加することが可能です.これは@code{configure}で決定されるオブジェ
 4012: クトに対して使用されるべきです.再び@code{cpio}からの引用です.
 4013: @vindex _LIBADD
 4014: @vindex LIBADD
 4015: 
 4016: @example
 4017: libcpio_a_LIBADD = $(LIBOBJS) $(ALLOCA)
 4018: @end example
 4019: 
 4020: @c In addition, sources for extra objects that will not exist until
 4021: @c configure-time must be added to the @code{BUILT_SOURCES} variable
 4022: @c (@pxref{Sources}).
 4023: @c 
 4024: さらに,configure時まで存在しない追加のオブジェクトに対するソースは,
 4025: @code{BUILT_SOURCES}変数に追加する必要があります(@pxref{Sources}).
 4026: 
 4027: @c Building a static library is done by compiling all object files, then
 4028: @c by invoking @code{$(AR) $(ARFLAGS)} followed by the name of the
 4029: @c library and the list of objects, and finally by calling
 4030: @c @code{$(RANLIB)} on that library.  You should call
 4031: @c @code{AC_PROG_RANLIB} from your @file{configure.ac} to define
 4032: @c @code{RANLIB} (Automake will complain otherwise).  @code{AR} and
 4033: @c @code{ARFLAGS} default to @code{ar} and @code{cru} respectively; you
 4034: @c can override these two variables my setting them in your
 4035: @c @file{Makefile.am}, by @code{AC_SUBST}ing them from your
 4036: @c @file{configure.ac}, or by defining a per-library @code{maude_AR}
 4037: @c variable (@pxref{Program and Library Variables}).
 4038: @c 
 4039: スタティックライブラリをビルドすることは,すべてのオブジェクトファイル
 4040: をコンパイルし,その後で@code{$(AR) $(ARFLAGS)}にライブラリ名とオブジェ
 4041: クトのリストを続けたものを呼び出し,そして最後にライブラリで
 4042: @code{$(RANLIB)}を呼び出すことで達成されます.@code{RANLIB}を定義する
 4043: ため,@code{AC_PROG_RANLIB}を@file{configure.ac}から呼び出すべきです
 4044: (そうしなければ,Automakeは文句を言います).@code{AR}と@code{ARFLAGS} 
 4045: のデフォルトはそれぞれ@code{ar}と@code{cru}です.これらの二つの変数を
 4046: @file{Makefile.am}で設定する,@file{configure.ac}で@code{AC_SUBST}する,
 4047: または,ライブラリごとに@code{maude_AR}変数で定義することで優先させる
 4048: ことが可能です(@pxref{Program and Library Variables}).
 4049: 
 4050: @node A Shared Library
 4051: @c @section Building a Shared Library
 4052: @section 共有ライブラリのビルド
 4053: 
 4054: @cindex Shared libraries, support for
 4055: 
 4056: @c Building shared libraries portably is a relatively complex matter.
 4057: @c For this reason, GNU Libtool (@pxref{Top, , Introduction, libtool, The
 4058: @c Libtool Manual}) was created to help build shared libraries in a
 4059: @c platform-independent way.
 4060: @c 
 4061: 移植性の高い共有ライブラリをビルドすることは比較的複雑な問題です.この
 4062: ために,GNU Libtoolは(@pxref{Top, , Introduction, libtool, The Libtool
 4063: Manual})プラットホームに依存しない方法で共有ライブラリをビルドする補助
 4064: を行なうために作成されました.
 4065: 
 4066: @menu
 4067: * Libtool Concept::             Introducing Libtool
 4068: * Libtool Libraries::           Declaring Libtool Libraries
 4069: * Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
 4070: * Conditional Libtool Sources::  Choosing Library Sources Conditionally
 4071: * Libtool Convenience Libraries::  Building Convenience Libtool Libraries
 4072: * Libtool Modules::             Building Libtool Modules
 4073: * Libtool Flags::               Using _LIBADD and _LDFLAGS
 4074: * LTLIBOBJ::                    Using $(LTLIBOBJ)
 4075: * Libtool Issues::              Common Issues Related to Libtool's Use
 4076: @end menu
 4077: 
 4078: @node Libtool Concept
 4079: @c @subsection The Libtool Concept
 4080: @subsection Libtoolの概念
 4081: 
 4082: @cindex libtool, introduction
 4083: @cindex libtool library, definition
 4084: @cindex suffix .la, defined
 4085: @cindex .la suffix, defined
 4086: 
 4087: @c Libtool abstracts shared and static libraries into a unified
 4088: @c concept henceforth called @dfn{libtool libraries}.  Libtool libraries
 4089: @c are files using the @file{.la} suffix, and can designate a static
 4090: @c library, a shared library, or maybe both.  Their exact nature cannot
 4091: @c be determined until @file{./configure} is run: not all platforms
 4092: @c support all kinds of libraries, and users can explicitly select which
 4093: @c libraries should be built.  (However the package's maintainers can
 4094: @c tune the default, @xref{AC_PROG_LIBTOOL, , The @code{AC_PROG_LIBTOOL}
 4095: @c macro, libtool, The Libtool Manual}.)
 4096: @c 
 4097: Libtoolは,共有ライブラリとスタティックライブラリを統一した概念で,
 4098: @dfn{libtoolライブラリ(libtool libraries)}と呼ばれるものに抽出します.
 4099: Libtoolライブラリは@file{.la}接尾子を使用しているファイルで,スタティッ
 4100: クライブラリ,共有ライブラリ,または両方を表します.正確な性質は
 4101: @file{./configure}が実行されるまで決定することは不可能です.すべてのプ
 4102: ラットフォームですべての種類のライブラリをサポートしているわけではあり
 4103: ませんし,ユーザは明示的にビルドするライブラリを選択するすることも可能
 4104: です.(しかし,パッケージの管理者はデフォルトを調整することが可能です.
 4105: @xref{AC_PROG_LIBTOOL, , The @code{AC_PROG_LIBTOOL} macro, libtool,
 4106: The Libtool Manual}.)
 4107: 
 4108: @cindex suffix .lo, defined
 4109: @c Because object files for shared and static libraries must be compiled
 4110: @c differently, libtool is also used during compilation.  Object files
 4111: @c built by libtool are called @dfn{libtool objects}: these are files
 4112: @c using the @file{.lo} suffix.  Libtool libraries are built from these
 4113: @c libtool objects.
 4114: @c 
 4115: 共有ライブラリとスタティックライブラリのオブジェクトファイルは,別々に
 4116: コンパイルする必要があるので,libtoolはコンパイル時にも使用されます.
 4117: libtoolでビルドされたライブラリは,@dfn{libtoolオブジェクト(libtool
 4118: objects)}と呼ばれます.これらは,@file{.lo}接尾子を利用しているファイ
 4119: ルです.libtoolライブラリはこれらのlibtoolオブジェクトからビルドされま
 4120: す.
 4121: 
 4122: @c You should not assume anything about the structure of @file{.la} or
 4123: @c @file{.lo} files and how libtool constructs them: this is libtool's
 4124: @c concern, and the last thing one wants is to learn about libtool's
 4125: @c guts.  However the existence of these files matters, because they are
 4126: @c used as targets and dependencies in @file{Makefile}s rules when
 4127: @c building libtool libraries.  There are situations where you may have
 4128: @c to refer to these, for instance when expressing dependencies for
 4129: @c building source files conditionally (@pxref{Conditional Libtool
 4130: @c Sources}).
 4131: @c 
 4132: @file{.la}や@file{.lo}ファイルの構造や,libtoolがそれらを構築する方法
 4133: を仮定すべきではありません.これはlibtoolが考えることで,最後のものは
 4134: libtoolの中身を勉強したい人が欲しいものです.しかし,これらのファイル
 4135: は,libtoolライブラリをビルドするとき,@file{Makefile}ルール内のターゲッ
 4136: トと依存性として使用されるので,その存在が重要になります.例えば,条件
 4137: 的にソースファイルをビルドする依存性を表現するとき,これらを参照する必
 4138: 要がある状況があります(@pxref{Conditional Libtool Sources}).
 4139: 
 4140: @cindex libltdl, introduction
 4141: 
 4142: @c People considering writing a plug-in system, with dynamically loaded
 4143: @c modules, should look into @file{libltdl}: libtool's dlopening library
 4144: @c (@pxref{Using libltdl, , Using libltdl, libtool, The Libtool Manual}).
 4145: @c This offers a portable dlopening facility to load libtool libraries
 4146: @c dynamically, and can also achieve static linking where unavoidable.
 4147: @c 
 4148: 動的にロードされるモジュールとなっているプラグインシステムを書こうと考
 4149: えている人々は,@file{libltdl}の中を見るべきです.libtoolによるライブ
 4150: ラリのdlopenです(@pxref{Using libltdl, , Using libltdl, libtool, The
 4151: Libtool Manual}).これは,libtoolライブラリを動的にロードするための移
 4152: 植性の高いdlopenを提供し,やむをえないところではスタティックにリンクす
 4153: ることも可能です.
 4154: 
 4155: @c Before we discuss how to use libtool with Automake in details, it
 4156: @c should be noted that the libtool manual also has a section about how
 4157: @c to use Automake with libtool (@pxref{Using Automake, , Using Automake
 4158: @c with Libtool, libtool, The Libtool Manual}).
 4159: @c 
 4160: 我々がAutomakeを用いてlibtoolを使用する方法の詳細を議論する前に,
 4161: libtoolマニュアルにあるlibtoolとともにAutomakeを使用する方法に付いて書
 4162: かれているセクションにも注意しておくべきです(@pxref{Using Automake, ,
 4163: Using Automake with Libtool, libtool, The Libtool Manual}).
 4164: 
 4165: @node Libtool Libraries
 4166: @c @subsection Building Libtool Libraries
 4167: @subsection Libtoolライブラリのビルド
 4168: 
 4169: @cindex _LTLIBRARIES primary, defined
 4170: @cindex LTLIBRARIES primary, defined
 4171: @cindex Primary variable, LTLIBRARIES
 4172: @cindex Example of shared libraries
 4173: @vindex lib_LTLIBRARIES
 4174: @vindex pkglib_LTLIBRARIES
 4175: 
 4176: @c Automake uses libtool to build libraries declared with the
 4177: @c @samp{LTLIBRARIES} primary.  Each @samp{_LTLIBRARIES} variable is a
 4178: @c list of libtool libraries to build.  For instance, to create a libtool
 4179: @c library named @file{libgettext.la}, and install it in @samp{libdir},
 4180: @c write:
 4181: @c 
 4182: Automakeは,@samp{LTLIBRARIES}プライマリで宣言されたライブラリをビルド
 4183: するためにLibtoolを使用します.それぞれの@samp{_LTLIBRARIES}変数はビル
 4184: ドするlibtoolライブラリのリストです.例えば,@file{libgettext.la}とい
 4185: う名前のlibtoolライブラリを作成し,@samp{libdir}にインストールするため
 4186: に,以下のように書いてください.
 4187: 
 4188: @example
 4189: lib_LTLIBRARIES = libgettext.la
 4190: libgettext_la_SOURCES = gettext.c gettext.h @dots{}
 4191: @end example
 4192: 
 4193: @c Automake predefines the variable @samp{pkglibdir}, so you can use
 4194: @c @code{pkglib_LTLIBRARIES} to install libraries in
 4195: @c @code{$(libdir)/@@PACKAGE@@/}.
 4196: @c 
 4197: Automakeは変数@samp{pkglibdir}を前もって定義しているので,ライブラリを
 4198: @code{$(libdir)/@@PACKAGE@@/}にインストールするために,
 4199: @code{pkglib_LTLIBRARIES}を使用することが可能です.
 4200: 
 4201: @node Conditional Libtool Libraries
 4202: @c @subsection Building Libtool Libraries Conditionally
 4203: @subsection Libtoolライブラリのビルドの条件分岐
 4204: @cindex libtool libraries, conditional
 4205: @cindex conditional libtool libraries
 4206: 
 4207: @c Like conditional programs (@pxref{Conditional Programs}), there are
 4208: @c two main ways to build conditional libraries: using Automake
 4209: @c conditionals or using Autoconf @code{AC_SUBST}itutions.
 4210: @c 
 4211: プログラムの条件式のように(@pxref{Conditional Programs}),ライブラリの
 4212: 条件付きビルドにも主に二つの方法があります.Automakeの条件式を使用する
 4213: 方法と,Autoconfの@code{AC_SUBST}を使用する方法です.
 4214: 
 4215: @c The important implementation detail you have to be aware of is that
 4216: @c the place where a library will be installed matters to libtool: it
 4217: @c needs to be indicated @emph{at link-time} using the @code{-rpath}
 4218: @c option.
 4219: @c 
 4220: 気を付けるべき重要な実装の詳細は,ライブラリがインストールされる場所が
 4221: libtoolにとって重要だということです.それは,@code{-rpath}オプションを
 4222: 使用して@emph{リンク時に}示されるものが必要になります.
 4223: 
 4224: @c For libraries whose destination directory is known when Automake runs,
 4225: @c Automake will automatically supply the appropriate @samp{-rpath}
 4226: @c option to libtool. This is the case for libraries listed explicitly in
 4227: @c some installable @code{_LTLIBRARIES} variables such as
 4228: @c @code{lib_LTLIBRARIES}.
 4229: @c 
 4230: Automakeの実行時にインストール先のディレクトリが分かっているライブラリ
 4231: に対し,Automakeは自動的に適切な@samp{-rpath}オプションをlibtoolに供給
 4232: します.これは,@code{lib_LTLIBRARIES}のように,インストール可能な
 4233: @code{_LTLIBRARIES}に明示的にリストアップされているライブラリの場合で
 4234: す.
 4235: 
 4236: @c However, for libraries determined at configure time (and thus
 4237: @c mentioned in @code{EXTRA_LTLIBRARIES}), Automake does not know the
 4238: @c final installation directory.  For such libraries you must add the
 4239: @c @samp{-rpath} option to the appropriate @samp{_LDFLAGS} variable by
 4240: @c hand.
 4241: @c 
 4242: しかし,configure時に決定される(@code{EXTRA_LTLIBRARIES}に記述されてい
 4243: る)ライブラリに対して,Automakeは最終的なインストールディレクトリが分
 4244: かりません.そのようなライブラリに対して,適切な@samp{_LDFLAGS}変数に
 4245: @samp{-rpath}オプションを手動で追加する必要があります.
 4246: 
 4247: @c The examples below illustrate the differences between these two methods.
 4248: @c 
 4249: 以下の例で,これら二つの手法の違いを説明します.
 4250: 
 4251: @c Here is an example where @code{$(WANTEDLIBS)} is an @code{AC_SUBST}ed
 4252: @c variable set at @file{./configure}-time to either @file{libfoo.la},
 4253: @c @file{libbar.la}, both, or none.  Although @code{$(WANTEDLIBS)}
 4254: @c appears in the @code{lib_LTLIBRARIES}, Automake cannot guess it
 4255: @c relates to @file{libfoo.la} or @file{libbar.la} by the time it creates
 4256: @c the link rule for these two libraries.  Therefore the @code{-rpath}
 4257: @c argument must be explicitly supplied.
 4258: @c 
 4259: この例は,@code{$(WANTEDLIBS)}が@code{AC_SUBST}されている変数で,
 4260: @file{./configure}時に@file{libfoo.la},@file{libbar.la},その両方,ま
 4261: たは空で設定されます.@code{$(WANTEDLIBS)}は@code{lib_LTLIBRARIES}に書
 4262: かれていますが,Automakeは,それが@file{libfoo.la}または
 4263: @file{libbar.la}に関連付けされることを,これら二つのライブラリに対する
 4264: リンクルールが作成されるときまで推測することが不可能です.このため,特
 4265: に@code{-rpath}引数を提供する必要があります.
 4266: 
 4267: @example
 4268: EXTRA_LTLIBRARIES = libfoo.la libbar.la
 4269: lib_LTLIBRARIES = $(WANTEDLIBS)
 4270: libfoo_la_SOURCES = foo.c @dots{}
 4271: libfoo_la_LDFLAGS = -rpath '$(libdir)'
 4272: libbar_la_SOURCES = bar.c @dots{}
 4273: libbar_la_LDFLAGS = -rpath '$(libdir)'
 4274: @end example
 4275: 
 4276: @c Here is how the same @file{Makefile.am} would look using Automake
 4277: @c conditionals named @code{WANT_LIBFOO} and @code{WANT_LIBBAR}.  Now
 4278: @c Automake is able to compute the @code{-rpath} setting itself, because
 4279: @c it's clear that both libraries will end up in @code{$(libdir)} if they
 4280: @c are installed.
 4281: @c 
 4282: これは,同じ@file{Makefile.am}で,@code{WANT_LIBFOO}と
 4283: @code{WANT_LIBBAR}という名前のAutomakeの条件式を使用しているものがあり
 4284: ます.Automakeは,両方のライブラリをインストールする場合,結局
 4285: @code{$(libdir)}になることが明らかなので,@code{-rpath}の設定を自分で
 4286: 計算することが可能です.
 4287: 
 4288: @example
 4289: lib_LTLIBRARIES =
 4290: if WANT_LIBFOO
 4291: lib_LTLIBRARIES += libfoo.la
 4292: endif
 4293: if WANT_LIBBAR
 4294: lib_LTLIBRARIES += libbar.la
 4295: endif
 4296: libfoo_la_SOURCES = foo.c @dots{}
 4297: libbar_la_SOURCES = bar.c @dots{}
 4298: @end example
 4299: 
 4300: @node Conditional Libtool Sources
 4301: @c @subsection Libtool Libraries with Conditional Sources
 4302: @subsection 条件的ソースを用いたLibtoolライブラリ
 4303: 
 4304: @c Conditional compilation of sources in a library can be achieved in the
 4305: @c same way as conditional compilation of sources in a program
 4306: @c (@pxref{Conditional Sources}).  The only difference is that
 4307: @c @code{_LIBADD} should be used instead of @code{_LDADD} and that it
 4308: @c should mention libtool objects (@file{.lo} files).
 4309: @c 
 4310: ライブラリでのソースの条件的コンパイルは,プログラムでのソースの条件的
 4311: コンパイルと同じ方法で達成することが可能です(@pxref{Conditional
 4312: Sources}).違いは,@code{_LDADD}の代わりに@code{_LIBADD}を使用し,
 4313: libtoolオブジェクト(@file{.lo}ファイル)について記述することだけです.
 4314: 
 4315: @c So, to mimic the @file{hello} example from @ref{Conditional Sources},
 4316: @c we could build a @file{libhello.la} library using either
 4317: @c @file{hello-linux.c} or @file{hello-generic.c} with the following
 4318: @c @file{Makefile.am}.
 4319: @c 
 4320: そのため,@ref{Conditional Sources}の@file{hello}の例を真似てみると,
 4321: 以下のような@file{Makefile.am}を用いて@file{hello-linux.c}または
 4322: @file{hello-generic.c}のいずれかを使用して@file{libhello.la}ライブラリ
 4323: をビルドすることが可能でしょう.
 4324: 
 4325: @example
 4326: lib_LTLIBRARIES = libhello.la
 4327: libhello_la_SOURCES = hello-common.c
 4328: EXTRA_libhello_la_SOURCES = hello-linux.c hello-generic.c
 4329: libhello_la_LIBADD = $(HELLO_SYSTEM)
 4330: libhello_la_DEPENDENCIES = $(HELLO_SYSTEM)
 4331: @end example
 4332: 
 4333: @noindent
 4334: @c And make sure @code{$(HELLO_SYSTEM)} is set to either
 4335: @c @file{hello-linux.lo} or @file{hello-generic.lo} in
 4336: @c @file{./configure}.
 4337: @c 
 4338: そして,@code{$(HELLO_SYSTEM)}が@file{./configure}で
 4339: @file{hello-linux.lo}または@file{hello-generic.lo}のいずれかに設定され
 4340: ていることを確かめて下さい.
 4341: 
 4342: @c Or we could simply use an Automake conditional as follows.
 4343: @c 
 4344: また,Automake条件式を使用して以下のように簡単にすることも可能でしょう.
 4345: 
 4346: @example
 4347: lib_LTLIBRARIES = libhello.la
 4348: libhello_la_SOURCES = hello-common.c
 4349: if LINUX
 4350: libhello_la_SOURCES += hello-linux.c
 4351: else
 4352: libhello_la_SOURCES += hello-generic.c
 4353: endif
 4354: @end example
 4355: 
 4356: @node Libtool Convenience Libraries
 4357: @c @subsection Libtool Convenience Libraries
 4358: @subsection Libtoolのコンビニエンスライブラリ
 4359: @cindex convenience libraries, libtool
 4360: @cindex libtool convenience libraries
 4361: @vindex noinst_LTLIBRARIES
 4362: @vindex check_LTLIBRARIES
 4363: 
 4364: @c Sometimes you want to build libtool libraries which should not be
 4365: @c installed.  These are called @dfn{libtool convenience libraries} and
 4366: @c are typically used to encapsulate many sublibraries, later gathered
 4367: @c into one big installed library.
 4368: @c 
 4369: インストールされないlibtoolライブラリをビルドしたいときもあります.こ
 4370: れらは,@dfn{libtoolコンビニエンスライブラリ(libtool convenience
 4371: libraries)}と呼ばれ,通常多くのサブライブラリをカプセル化し,後でイン
 4372: ストールされる大きな一つのライブラリにまとめるときに使用されます.
 4373: 
 4374: @c Libtool convenience libraries are declared by
 4375: @c @code{noinst_LTLIBRARIES}, @code{check_LTLIBRARIES}, or even
 4376: @c @code{EXTRA_LTLIBRARIES}.  Unlike installed libtool libraries they do
 4377: @c not need an @code{-rpath} flag at link time (actually this is the only
 4378: @c difference).
 4379: @c 
 4380: libtoolコンビニエンスライブラリは,@code{noinst_LTLIBRARIES},
 4381: @code{check_LTLIBRARIES},または@code{EXTRA_LTLIBRARIES}でも宣言されま
 4382: す.インストールされるlibtoolライブラリと異なり,それらはリンク時に
 4383: @code{-rpath}フラグが不要です(実際,これが違うだけです).
 4384: 
 4385: @c Convenience libraries listed in @code{noinst_LTLIBRARIES} are always
 4386: @c built.  Those listed in @code{check_LTLIBRARIES} are built only upon
 4387: @c @code{make check}.  Finally, libraries listed in
 4388: @c @code{EXTRA_LTLIBRARIES} are never built explicitly: Automake outputs
 4389: @c rules to build them, but if the library does not appear as a Makefile
 4390: @c dependency anywhere it won't be built (this is why
 4391: @c @code{EXTRA_LTLIBRARIES} is used for conditional compilation).
 4392: @c 
 4393: @code{noinst_LTLIBRARIES}でリストアップされているコンビニエンスライブ
 4394: ラリは,常にビルドされます.@code{check_LTLIBRARIES}にリストアップされ
 4395: ているものは,@code{make check}のときだけビルドされます.最後に,
 4396: @code{EXTRA_LTLIBRARIES}でリストアップされているライブラリは,明示的に
 4397: はビルドされません.Automakeはそれらのビルドルールを出力しますが,ライ
 4398: ブラリがMakefileの依存性に表れない場合はビルドされません(これは,
 4399: @code{EXTRA_LTLIBRARIES}が条件付きコンパイルで使用されるためです).
 4400: 
 4401: @c Here is a sample setup merging libtool convenience libraries from
 4402: @c subdirectories into one main @file{libtop.la} library.
 4403: @c 
 4404: サブディレクトリのlibtoolコンビニエンスライブラリを,一つの中心となる
 4405: @file{libtop.la}ライブラリにまとめる設定例は以下のようになります.
 4406: 
 4407: @example
 4408: # -- Top-level Makefile.am --
 4409: SUBDIRS = sub1 sub2 @dots{}
 4410: lib_LTLIBRARIES = libtop.la
 4411: libtop_la_SOURCES =
 4412: libtop_la_LIBADD = \
 4413:   sub1/libsub1.la \
 4414:   sub2/libsub2.la \
 4415:   @dots{}
 4416: 
 4417: # -- sub1/Makefile.am --
 4418: noinst_LTLIBRARIES = libsub1.la
 4419: libsub1_la_SOURCES = @dots{}
 4420: 
 4421: # -- sub2/Makefile.am --
 4422: # showing nested convenience libraries
 4423: SUBDIRS = sub2.1 sub2.2 @dots{}
 4424: noinst_LTLIBRARIES = libsub2.la
 4425: libsub2_la_SOURCES =
 4426: libsub2_la_LIBADD = \
 4427:   sub21/libsub21.la \
 4428:   sub22/libsub22.la \
 4429:   @dots{}
 4430: @end example
 4431: 
 4432: @node Libtool Modules
 4433: @c @subsection Libtool Modules
 4434: @subsection Libtoolのモジュール
 4435: @cindex modules, libtool
 4436: @cindex libtool modules
 4437: @cindex -module, libtool
 4438: 
 4439: @c These are libtool libraries meant to be dlopened.  They are
 4440: @c indicated to libtool by passing @code{-module} at link-time.
 4441: @c 
 4442: これらは,dlopenされることを意味するlibtoolライブラリです.それらは,
 4443: リンク時に@code{-module}をlibtoolに渡すことで示されます.
 4444: 
 4445: @example
 4446: pkglib_LTLIBRARIES = mymodule.la
 4447: mymodule_la_SOURCES = doit.c
 4448: mymodule_LDFLAGS = -module
 4449: @end example
 4450: 
 4451: @c Ordinarily, Automake requires that a Library's name starts with
 4452: @c @samp{lib}.  However, when building a dynamically loadable module you
 4453: @c might wish to use a "nonstandard" name.
 4454: @c 
 4455: 通常,Automakeは共有ライブラリの名前が@samp{lib}で始まることを要求しま
 4456: す.しかし,動的にロードされるモジュールをビルドしている場合,"標準的
 4457: でない" 名前を使用したいかもしれません.
 4458: 
 4459: @c If @samp{mymodule_la_SOURCES} is not specified, then it defaults to the single
 4460: @c file @file{mymodule.c} (@pxref{Default _SOURCES}).
 4461: @c 
 4462: @samp{mymodule_la_SOURCES}が指定されていない場合,そのデフォルトは単一
 4463: ファイルの@file{mymodule.c} (@pxref{Default _SOURCES})です.
 4464: 
 4465: 
 4466: @node Libtool Flags
 4467: @c @subsection _LIBADD and _LDFLAGS
 4468: @subsection _LIBADDと_LDFLAGS
 4469: @cindex _LIBADD, libtool
 4470: @cindex _LDFLAGS, libtool
 4471: 
 4472: @c As shown in previous sections, the @samp{@var{library}_LIBADD}
 4473: @c variable should be used to list extra libtool objects (@file{.lo}
 4474: @c files) or libtool libraries (@file{.la}) to add to @var{library}.
 4475: @c 
 4476: 前のセクションで見てきたように,@samp{@var{library}_LIBADD}変数は,
 4477: @var{library}に追加する補助的なlibtoolオブジェクト(@file{.lo}ファイル) 
 4478: やlibtoolライブラリ(@file{.la})をリストアップするために使用すべきです.
 4479: 
 4480: @c The @samp{@var{library}_LDFLAGS} variable is the place to list
 4481: @c additional libtool flags, such as @samp{-version-info},
 4482: @c @samp{-static}, and a lot more.  See @xref{Link mode, , Using libltdl,
 4483: @c libtool, The Libtool Manual}.
 4484: @c 
 4485: @samp{@var{library}_LDFLAGS}変数には,@samp{-version-info},
 4486: @samp{-static},などの追加のlibtoolフラグをリストアップします.
 4487: @xref{Link mode, , Using libltdl, libtool, The Libtool Manual}.
 4488: 
 4489: @node LTLIBOBJ, Libtool Issues, Libtool Flags, A Shared Library
 4490: @subsection @code{LTLIBOBJS}
 4491: @cindex @code{LTLIBOBJS}, special handling
 4492: @vindex LTLIBOBJS
 4493: @vindex LIBOBJS
 4494: @cvindex AC_LIBOBJ
 4495: 
 4496: @c Where an ordinary library might include @code{$(LIBOBJS)}, a libtool
 4497: @c library must use @code{$(LTLIBOBJS)}.  This is required because the
 4498: @c object files that libtool operates on do not necessarily end in
 4499: @c @file{.o}.
 4500: @c 
 4501: 通常のライブラリは@code{$(LIBOBJS)}に含まれますが,libtoolライブラリは
 4502: @code{$(LTLIBOBJS)}を使用する必要があります.libtoolが処理するオブジェ
 4503: クトファイルは,最終的に@file{.o}にする必要がないため,このように要求
 4504: されます.
 4505: 
 4506: @c Nowadays, the computation of @code{LTLIBOBJS} from @code{LIBOBJS} is
 4507: @c performed automatically by Autoconf (@pxref{AC_LIBOBJ vs LIBOBJS, ,
 4508: @c @code{AC_LIBOBJ} vs. @code{LIBOBJS}, autoconf, The Autoconf Manual}).
 4509: @c 
 4510: 現在,@code{LIBOBJS}から@code{LTLIBOBJS}を求めることはAutoconfが自動的
 4511: に実行します(@pxref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ}
 4512: vs. @code{LIBOBJS}, autoconf, The Autoconf Manual}).
 4513: 
 4514: @node Libtool Issues
 4515: @c @subsection Common Issues Related to Libtool's Use
 4516: @subsection Libtoolの使用に関連する一般的な問題
 4517: 
 4518: @c @subsubsection @code{required file `./ltmain.sh' not found}
 4519: @subsubsection 要求されるファイル`./ltmain.sh'が見つからない
 4520: @cindex ltmain.sh not found
 4521: @cindex libtoolize, no longer run by Automake
 4522: @cindex libtoolize and autoreconf
 4523: @cindex autoreconf and libtoolize
 4524: @cindex bootstrap.sh and autoreconf
 4525: @cindex autogen.sh and autoreconf
 4526: 
 4527: @c Libtool comes with a tool called @command{libtoolize} that will
 4528: @c install libtool's supporting files into a package.  Running this
 4529: @c command will install @file{ltmain.sh}.  You should execute it before
 4530: @c @command{aclocal} and @command{automake}.
 4531: @c 
 4532: libtoolは,パッケージにlibtoolのサポートを行なうファイルをインストール
 4533: する@command{libtoolize}と呼ばれるツールから生じます.このコマンドを実
 4534: 行すると,@file{ltmain.sh}がインストールされます.@command{aclocal}と
 4535: @command{automake}の前にそれを実行すべきです.
 4536: 
 4537: @c People upgrading old packages to newer autotools are likely to face
 4538: @c this issue because older Automake versions used to call
 4539: @c @command{libtoolize}.  Therefore old build scripts do not call
 4540: @c @command{libtoolize}.
 4541: @c 
 4542: 古いパッケージから新しいautotoolにアップグレードすると,古いバージョン
 4543: のAutomakeは@command{libtoolize}と呼ばれるものを使用していたのでこの問
 4544: 題に直面します.このため,古いビルドスクリプトでは@command{libtoolize} 
 4545: を呼び出しません.
 4546: 
 4547: @c Since Automake 1.6, it has been decided that running
 4548: @c @command{libtoolize} was none of Automake's business.  Instead, that
 4549: @c functionality has been moved into the @command{autoreconf} command
 4550: @c (@pxref{autoreconf Invocation, , Using @command{autoreconf}, autoconf,
 4551: @c The Autoconf Manual}).  If you do not want to remember what to run and
 4552: @c when, just learn the @command{autoreconf} command.  Hopefully,
 4553: @c replacing existing @file{bootstrap.sh} or @file{autogen.sh} scripts by
 4554: @c a call to @command{autoreconf} should also free you from any similar
 4555: @c incompatible change in the future.
 4556: @c 
 4557: Automake1.6から,@command{libtoolize}の実行がAutomakeの仕事ではないと
 4558: 決定しました.その代わり,その機能は@command{autoreconf}コマンドに渡さ
 4559: れました(@pxref{autoreconf Invocation, , Using @command{autoreconf},
 4560: autoconf, The Autoconf Manual}).いつ何を実行するのか覚えたくない場合,
 4561: @command{autoreconf}コマンドだけを勉強して下さい.希望的には,既存の
 4562: @file{bootstrap.sh}や@file{autogen.sh}スクリプトを@command{autoreconf} 
 4563: の呼び出しに置換することで,将来においても同様の互換性の無い変更から自
 4564: 由になれるでしょう.
 4565: 
 4566: @c @subsubsection Objects @code{created with both libtool and without}
 4567: @subsubsection libtoolで作成されたりされなかったりするオブジェクト
 4568: 
 4569: @c Sometimes, the same source file is used both to build a libtool
 4570: @c library and to build another non-libtool target (be it a program or
 4571: @c another library).
 4572: @c 
 4573: 同じソースファイルが,libtoolライブラリのビルドと,libtoolではない他の
 4574: ターゲット(プログラムだったり,他のライブラリだったりします)をビルドす
 4575: るために使用されることもあります.
 4576: 
 4577: @c Let's consider the following @file{Makefile.am}.
 4578: @c 
 4579: 以下の@file{Makefile.am}を考えてみましょう.
 4580: 
 4581: @example
 4582: bin_PROGRAMS = prog
 4583: prog_SOURCES = prog.c foo.c @dots{}
 4584: 
 4585: lib_LTLIBRARIES = libfoo.la
 4586: libfoo_la_SOURCES = foo.c @dots{}
 4587: @end example
 4588: 
 4589: @noindent
 4590: @c (In this trivial case the issue could be avoided by linking
 4591: @c @file{libfoo.la} with @file{prog} instead of listing @file{foo.c} in
 4592: @c @code{prog_SOURCES}.  But let's assume we really want to keep
 4593: @c @file{prog} and @file{libfoo.la} separate.)
 4594: @c 
 4595: (この平凡な状況では,@code{prog_SOURCES}にリストアップされている
 4596: @file{foo.c}の代わりに,@file{prog}を用いて@file{libfoo.la}をリンクす
 4597: ることを避けることで,問題を回避することが可能です.しかし,実際には
 4598: @file{prog}と@file{libfoo.la}は別々に保持したいと仮定します.)
 4599: 
 4600: @c Technically, it means that we should build @file{foo.$(OBJEXT)} for
 4601: @c @file{prog}, and @file{foo.lo} for @file{libfoo.la}.  The problem is
 4602: @c that in the course of creating @file{foo.lo}, libtool may erase (or
 4603: @c replace) @file{foo.$(OBJEXT)} -- and this cannot be avoided.
 4604: @c 
 4605: 技術的には,我々は@file{prog}に対して@file{foo.$(OBJEXT)}をビルドし,
 4606: @file{libfoo.la}に対して@file{foo.lo}をビルドべきだということを意味し
 4607: ます.問題は,@file{foo.lo}を作成する仮定で,libtoolが
 4608: @file{foo.$(OBJEXT)}を削除(または置換)する可能性があるということです 
 4609: -- これは避けられません.
 4610: 
 4611: @c Therefore, when Automake detects this situation it will complain
 4612: @c with a message such as
 4613: @c 
 4614: このため,Automakeがこの状況を検出すると,以下のようなメッセージで文句
 4615: を言います.
 4616: @example
 4617: object `foo.$(OBJEXT)' created both with libtool and without
 4618: @end example
 4619: 
 4620: @c A workaround for this issue is to ensure that these two objects get
 4621: @c different basenames.  As explained in @ref{renamed objects}, this
 4622: @c happens automatically when per-targets flags are used.
 4623: @c 
 4624: この問題を回避する方法は,これら二つのオブジェクトを確実に異なるベース
 4625: 名にすることです.@ref{renamed objects}で説明されているように,ターゲッ
 4626: トごとのフラグが使用されているとき,これは自動的に行なわれます.
 4627: 
 4628: @example
 4629: bin_PROGRAMS = prog
 4630: prog_SOURCES = prog.c foo.c @dots{}
 4631: prog_CFLAGS = $(AM_CFLAGS)
 4632: 
 4633: lib_LTLIBRARIES = libfoo.la
 4634: libfoo_la_SOURCES = foo.c @dots{}
 4635: @end example
 4636: 
 4637: @noindent
 4638: @c Adding @code{prog_CFLAGS = $(AM_CFLAGS)} is almost a no-op, because
 4639: @c when the @code{prog_CFLAGS} is defined, it is used instead of
 4640: @c @code{AM_CFLAGS}.  However as a side effect it will cause
 4641: @c @file{prog.c} and @file{foo.c} to be compiled as
 4642: @c @file{prog-prog.$(OBJEXT)} and @file{prog-foo.$(OBJEXT)} which solves
 4643: @c the issue.
 4644: @c 
 4645: @code{prog_CFLAGS = $(AM_CFLAGS)}の追加は,@code{prog_CFLAGS}が定義さ
 4646: れているとき,@code{AM_CFLAGS}の代わりにそれを使用するので,ほとんど何
 4647: もしません.しかし,副作用として,@file{prog.c}と@file{foo.c}を
 4648: @file{prog-prog.$(OBJEXT)}と@file{prog-foo.$(OBJEXT)}にコンパイルし,
 4649: 問題を解決することになります.
 4650: 
 4651: @node Program and Library Variables
 4652: @c @section Program and Library Variables
 4653: @section プログラムとライブラリの変数
 4654: 
 4655: @c Associated with each program are a collection of variables which can be
 4656: @c used to modify how that program is built.  There is a similar list of
 4657: @c such variables for each library.  The canonical name of the program (or
 4658: @c library) is used as a base for naming these variables.
 4659: @c 
 4660: それぞれのプログラムに関連して,プログラムのビルドの方法を修正するため
 4661: に使用可能な変数の集合があります.それぞれのライブラリに対しても,それ
 4662: に似たような変数のリストがあります.プログラム(やライブラリ)の標準的な
 4663: 名前が,これらの変数の命名に対してベースとして使用されます.
 4664: 
 4665: @c In the list below, we use the name ``maude'' to refer to the program or
 4666: @c library.  In your @file{Makefile.am} you would replace this with the
 4667: @c canonical name of your program.  This list also refers to ``maude'' as a
 4668: @c program, but in general the same rules apply for both static and dynamic
 4669: @c libraries; the documentation below notes situations where programs and
 4670: @c libraries differ.
 4671: @c 
 4672: 以下のリストでは,名前``maude''をプログラムやライブラリを示すものとし
 4673: て使用しています.@file{Makefile.am}で,これをプログラムの標準的な名前
 4674: に置換してください.このリストは,``maude''をプログラムを示すものとし
 4675: ていますが,一般的に同じルールを,スタティックライブラリやダイナミック
 4676: ライブラリに適用します.以下の文章では,プログラムとライブラリで異なる
 4677: 状況をコメントしています.
 4678: 
 4679: @table @samp
 4680: @item maude_SOURCES
 4681: @c This variable, if it exists, lists all the source files which are
 4682: @c compiled to build the program.  These files are added to the
 4683: @c distribution by default.  When building the program, Automake will cause
 4684: @c each source file to be compiled to a single @file{.o} file (or
 4685: @c @file{.lo} when using libtool).  Normally these object files are named
 4686: @c after the source file, but other factors can change this.  If a file in
 4687: @c the @samp{_SOURCES} variable has an unrecognized extension, Automake
 4688: @c will do one of two things with it.  If a suffix rule exists for turning
 4689: @c files with the unrecognized extension into @file{.o} files, then
 4690: @c automake will treat this file as it will any other source file
 4691: @c (@pxref{Support for Other Languages}).  Otherwise, the file will be
 4692: @c ignored as though it were a header file.
 4693: @c 
 4694: 存在する場合,この変数は,プログラムをビルドするためにコンパイルされる,
 4695: すべてのソースファイルをリストアップします.プログラムをビルドしている
 4696: とき,Automakeはそれぞれのソースファイルを単一の@file{.o}ファイル(や
 4697: libtoolを使用しているときは@file{.lo})にコンパイルさせます.通常これら
 4698: のオブジェクトファイルはソースファイルの後に命名されますが,他の要因で
 4699: 変更することが可能です.@samp{_SOURCES}変数のファイルに認識できない拡
 4700: 張子がある場合,Automakeは二つのうちの一つを実行します.認識できない拡
 4701: 張子を持つファイルを@file{.o}に変換するためのサフィックスルールが存在
 4702: する場合,automakeはこのファイルを,その他の(言語の)ソースファイルとし
 4703: て扱います(@pxref{Support for Other Languages}).それ以外では,ファイ
 4704: ルがヘッダファイルと考えて無視されます.
 4705: 
 4706: @c The prefixes @samp{dist_} and @samp{nodist_} can be used to control
 4707: @c whether files listed in a @samp{_SOURCES} variable are distributed.
 4708: @c @samp{dist_} is redundant, as sources are distributed by default, but it
 4709: @c can be specified for clarity if desired.
 4710: @c 
 4711: 接頭辞の@samp{dist_}と@samp{nodist_}で,@samp{_SOURCES}にリストアップ
 4712: されているファイルを配布するかどうか制御するために使用することが可能で
 4713: す.ソースはデフォルトで配布されるので,@samp{dist_}は冗長ですが,必要
 4714: があれば明確にするために指定可能です.
 4715: 
 4716: @c It is possible to have both @samp{dist_} and @samp{nodist_} variants of
 4717: @c a given @samp{_SOURCES} variable at once; this lets you easily
 4718: @c distribute some files and not others, for instance:
 4719: @c 
 4720: @samp{_SOURCES}変数に与えるものとして@samp{dist_}と@samp{nodist_}の両
 4721: 方を一度に用いることが可能です.これによって,配布するファイルとしない
 4722: ものに簡単に分類することができ,例えば以下のようにします.
 4723: 
 4724: @example
 4725: nodist_maude_SOURCES = nodist.c
 4726: dist_maude_SOURCES = dist-me.c
 4727: @end example
 4728: 
 4729: @c By default the output file (on Unix systems, the @file{.o} file) will be
 4730: @c put into the current build directory.  However, if the option
 4731: @c @code{subdir-objects} is in effect in the current directory then the
 4732: @c @file{.o} file will be put into the subdirectory named after the source
 4733: @c file.  For instance, with @code{subdir-objects} enabled,
 4734: @c @file{sub/dir/file.c} will be compiled to @file{sub/dir/file.o}.  Some
 4735: @c people prefer this mode of operation.  You can specify
 4736: @c @code{subdir-objects} in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
 4737: @c 
 4738: デフォルトで,出力ファイル(Unixシステム上では@file{.o}ファイル)は,現
 4739: 在のビルドディレクトリに書き込まれます.しかし,現在のディレクトリに対
 4740: してオプションの@code{subdir-objects}の影響がある場合,@file{.o}ファイ
 4741: ルはソースファイルの後で指名されるサブディレクトリに書き込まれます.例
 4742: えば,@code{subdir-objects}が利用可能な場合,@file{sub/dir/file.c}は
 4743: @file{sub/dir/file.o}にコンパイルされます.この処理モードを好む人もい
 4744: ます.@code{subdir-objects}を@code{AUTOMAKE_OPTIONS}で指定することが可
 4745: 能です(@pxref{Options}).
 4746: @cindex Subdirectory, objects in
 4747: @cindex Objects in subdirectory
 4748: 
 4749: 
 4750: @item EXTRA_maude_SOURCES
 4751: @c Automake needs to know the list of files you intend to compile
 4752: @c @emph{statically}.  For one thing, this is the only way Automake has of
 4753: @c knowing what sort of language support a given @file{Makefile.in}
 4754: @c requires.  @footnote{There are other, more obscure reasons reasons for
 4755: @c this limitation as well.}  This means that, for example, you can't put a
 4756: @c configure substitution like @samp{@@my_sources@@} into a @samp{_SOURCES}
 4757: @c variable.  If you intend to conditionally compile source files and use
 4758: @c @file{configure} to substitute the appropriate object names into, e.g.,
 4759: @c @samp{_LDADD} (see below), then you should list the corresponding source
 4760: @c files in the @samp{EXTRA_} variable.
 4761: @c 
 4762: Automakeは,コンパイルしたいファイルのリストを@emph{静的に}知っている
 4763: 必要があります.一つには,該当する@file{Makefile.in}が要求する言語のサ
 4764: ポートの種類をAutomakeが知るための唯一の方法だということがあげられます.
 4765: @footnote{それ以外にも,この制限に対してあまり知られていない理由も存在
 4766: します.}例えばこれには,@samp{@@my_sources@@}のようなconfigureの置換
 4767: 式を@samp{_SOURCES}に書き込むことができないという意味があります.ソー
 4768: スファイルの条件コンパイルを行ない,例えば@samp{_LDADD}(以下を参照して
 4769: ください)のオブジェクト名を適切に置換するために@file{configure}を使用
 4770: したい場合,対応するソースファイルを@samp{EXTRA_}にリストアップした方
 4771: が良いでしょう.
 4772: 
 4773: @c This variable also supports @samp{dist_} and @samp{nodist_} prefixes,
 4774: @c e.g., @samp{nodist_EXTRA_maude_SOURCES}.
 4775: @c 
 4776: この変数は,例えば@samp{nodist_EXTRA_maude_SOURCES}のように,
 4777: @samp{dist_}と@samp{nodist_}もサポートします.
 4778: 
 4779: @item maude_AR
 4780: @c A static library is created by default by invoking @code{$(AR)
 4781: @c $(ARFLAGS)} followed by the name of the library and then the objects
 4782: @c being put into the library.  You can override this by setting the
 4783: @c @samp{_AR} variable.  This is usually used with C++; some C++
 4784: @c compilers require a special invocation in order to instantiate all the
 4785: @c templates which should go into a library.  For instance, the SGI C++
 4786: @c compiler likes this variable set like so:
 4787: @c 
 4788: スタティックライブラリは,デフォルトで,@code{$(AR) $(ARFLAGS)}にライ
 4789: ブラリ名とライブラリに書き込むオブジェクトを続けて呼び出すことで作成さ
 4790: れます.@samp{_AR}変数でこれに優先することが可能です.これは,通常C++ 
 4791: で使用されます.C++コンパイラには,ライブラリに組み込むすべてのテンプ
 4792: レートを生成するために,特殊な呼び出しが必要なものもあります.例えば,
 4793: SGI C++コンパイラは,この変数を以下のように設定します.
 4794: @example
 4795: libmaude_a_AR = $(CXX) -ar -o
 4796: @end example
 4797: 
 4798: @item maude_LIBADD
 4799: @c Extra objects can be added to a @emph{library} using the @samp{_LIBADD}
 4800: @c variable.  For instance this should be used for objects determined by
 4801: @c @code{configure} (@pxref{A Library}).
 4802: @c 
 4803: @samp{_LIBADD}変数を使用することで,追加のオブジェクトを@emph{ライブラ
 4804: リ}に加えることが可能です.例えばこれは,@code{configure}で決定される
 4805: オブジェクトに対して使用すべきです(@pxref{A Library}).
 4806: 
 4807: @item maude_LDADD
 4808: @c Extra objects can be added to a @emph{program} by listing them in the
 4809: @c @samp{_LDADD} variable.  For instance this should be used for objects
 4810: @c determined by @code{configure} (@pxref{Linking}).
 4811: @c 
 4812: @samp{_LDADD}変数に追加のオブジェクトをリストアップすることで,
 4813: @emph{プログラム}に加えることが可能です.例えばこれは,
 4814: @code{configure}で決定されるオブジェクトに対して使用すべきです
 4815: (@pxref{Linking}).
 4816: 
 4817: @c @samp{_LDADD} and @samp{_LIBADD} are inappropriate for passing
 4818: @c program-specific linker flags (except for @samp{-l}, @samp{-L},
 4819: @c @samp{-dlopen} and @samp{-dlpreopen}).  Use the @samp{_LDFLAGS} variable
 4820: @c for this purpose.
 4821: @c 
 4822: (@samp{-l},@samp{-L},@samp{-dlopen},そして@samp{-dlpreopen}以外の)
 4823: プログラム特有のリンカフラグを渡すために@samp{_LDADD}と@samp{_LIBADD}
 4824: を使用することは不適切です.この目的に対しては,@samp{_LDFLAGS}変数を
 4825: 使用してください.
 4826: 
 4827: @c For instance, if your @file{configure.ac} uses @code{AC_PATH_XTRA}, you
 4828: @c could link your program against the X libraries like so:
 4829: @c 
 4830: 例えば,@file{configure.ac}で@code{AC_PATH_XTRA}を使用している場合,X
 4831: のライブラリに対してプログラムをリンクするため,以下のようにすることが
 4832: 可能でしょう.
 4833: 
 4834: @example
 4835: maude_LDADD = $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
 4836: @end example
 4837: 
 4838: @item maude_LDFLAGS
 4839: @c This variable is used to pass extra flags to the link step of a program
 4840: @c or a shared library.
 4841: @c 
 4842: これは,プログラムや共有ライブラリのリンク段階に特別なフラグを渡すため
 4843: に使用する変数です.
 4844: 
 4845: @item maude_DEPENDENCIES
 4846: @c It is also occasionally useful to have a program depend on some other
 4847: @c target which is not actually part of that program.  This can be done
 4848: @c using the @samp{_DEPENDENCIES} variable.  Each program depends on the
 4849: @c contents of such a variable, but no further interpretation is done.
 4850: @c 
 4851: 実際には,プログラムの一部にはならない他のターゲットに依存するプログラ
 4852: ムがあることが,役に立つ場合もあります.これは,@samp{_DEPENDENCIES}変
 4853: 数を使用することで可能になります.それぞれのプログラムは,その変数の内
 4854: 容に依存しますが,それ以上に解釈されません.
 4855: 
 4856: @c If @samp{_DEPENDENCIES} is not supplied, it is computed by Automake.
 4857: @c The automatically-assigned value is the contents of @samp{_LDADD} or
 4858: @c @samp{_LIBADD}, with most configure substitutions, @samp{-l}, @samp{-L},
 4859: @c @samp{-dlopen} and @samp{-dlpreopen} options removed.  The configure
 4860: @c substitutions that are left in are only @samp{$(LIBOBJS)} and
 4861: @c @samp{$(ALLOCA)}; these are left because it is known that they will not
 4862: @c cause an invalid value for @samp{_DEPENDENCIES} to be generated.
 4863: @c 
 4864: @samp{_DEPENDENCIES}が提供されていない場合,それはAutomakeが考慮します.
 4865: 自動的に割り当てられる値は@samp{_LDADD}や@samp{_LIBADD}の内容で,ほと
 4866: んどのconfigure置換式,@samp{-l},@samp{-L},@samp{-dlopen},
 4867: @samp{-dlpreopen},そして@samp{-dlpreopen}オプションは削除されています.
 4868: 残っているconfigureの置換式は,@samp{$(LIBOBJS)}と@samp{$(ALLOCA)}です.
 4869: これらは,生成される@samp{_DEPENDENCIES}に対して無効な値を生成しないこ
 4870: とが分かっているので残されます.
 4871: 
 4872: @item maude_LINK
 4873: @c You can override the linker on a per-program basis.  By default the
 4874: @c linker is chosen according to the languages used by the program.  For
 4875: @c instance, a program that includes C++ source code would use the C++
 4876: @c compiler to link.  The @samp{_LINK} variable must hold the name of a
 4877: @c command which can be passed all the @file{.o} file names as arguments.
 4878: @c Note that the name of the underlying program is @emph{not} passed to
 4879: @c @samp{_LINK}; typically one uses @samp{$@@}:
 4880: @c 
 4881: プログラムごとを基本として,(デフォルトの)リンカに優先することが可能で
 4882: す.デフォルトで,プログラムで使用されている言語によってリンカは選択さ
 4883: れます.例えば,C++のソースコードを含むプログラムでは,C++コンパイラが
 4884: リンクに使用されます.@samp{_LINK}変数は,すべての@file{.o}ファイル名
 4885: を引数として渡すことが可能なコマンドの名前を含んでいる必要があります.
 4886: 基礎となるプログラム名は,@samp{_LINK}に渡され@emph{ない}ことに注意し
 4887: てください.通常は@samp{$@@}を使用します.
 4888: 
 4889: @example
 4890: maude_LINK = $(CCLD) -magic -o $@@
 4891: @end example
 4892: 
 4893: @item maude_CCASFLAGS
 4894: @itemx maude_CFLAGS
 4895: @itemx maude_CPPFLAGS
 4896: @itemx maude_CXXFLAGS
 4897: @itemx maude_FFLAGS
 4898: @itemx maude_GCJFLAGS
 4899: @itemx maude_LFLAGS
 4900: @itemx maude_OBJCFLAGS
 4901: @itemx maude_RFLAGS
 4902: @itemx maude_YFLAGS
 4903: @cindex per-target compilation flags, defined
 4904: @c Automake allows you to set compilation flags on a per-program (or
 4905: @c per-library) basis.  A single source file can be included in several
 4906: @c programs, and it will potentially be compiled with different flags for
 4907: @c each program.  This works for any language directly supported by
 4908: @c Automake.  These @dfn{per-target compilation flags} are
 4909: @c @samp{_CCASFLAGS},
 4910: @c @samp{_CFLAGS},
 4911: @c @samp{_CPPFLAGS},
 4912: @c @samp{_CXXFLAGS},
 4913: @c @samp{_FFLAGS},
 4914: @c @samp{_GCJFLAGS},
 4915: @c @samp{_LFLAGS},
 4916: @c @samp{_OBJCFLAGS},
 4917: @c @samp{_RFLAGS}, and
 4918: @c @samp{_YFLAGS}.
 4919: @c 
 4920: Automakeでは,プログラムごと(またはライブラリごと)を基本として,コンパ
 4921: イルフラグを設定することが可能です.単一のソースファイルを複数のプログ
 4922: ラムに含めることが可能で,それぞれのプログラムに対して異なるフラグでコ
 4923: ンパイルされる可能性もあります.これは,あらゆる言語に対し,直接
 4924: Automakeがサポートすることで動作します.これらの@dfn{ターゲットごとの
 4925: コンパイルフラグ(per-target compilation flags)}は,@samp{_CCASFLAGS},
 4926: @samp{_CFLAGS},@samp{_CPPFLAGS},@samp{_CXXFLAGS},@samp{_FFLAGS},
 4927: @samp{_GCJFLAGS},@samp{_LFLAGS},@samp{_OBJCFLAGS},@samp{_RFLAGS},
 4928: そして@samp{_YFLAGS}です.
 4929: 
 4930: @c When using a per-target compilation flag, Automake will choose a
 4931: @c different name for the intermediate object files.  Ordinarily a file
 4932: @c like @file{sample.c} will be compiled to produce @file{sample.o}.
 4933: @c However, if the program's @samp{_CFLAGS} variable is set, then the
 4934: @c object file will be named, for instance, @file{maude-sample.o}.
 4935: @c (See also @ref{renamed objects}.)
 4936: @c 
 4937: ターゲットごとのコンパイルフラグを使用するとき,Automakeは,中間的なオ
 4938: ブジェクトファイルに対して異なる名前を選択します.通常,
 4939: @file{sample.c}のようなファイルは,コンパイルされて@file{sample.o}が生
 4940: 成されます.しかし,プログラムの@samp{_CFLAGS}変数を設定した場合,オブ
 4941: ジェクトファイルは,例えば@file{maude-sample.o}のように命名されます.
 4942: (@ref{renamed objects}も参照して下さい.)
 4943: 
 4944: @c In compilations with per-target flags, the ordinary @samp{AM_} form of
 4945: @c the flags variable is @emph{not} automatically included in the
 4946: @c compilation (however, the user form of the variable @emph{is} included).
 4947: @c So for instance, if you want the hypothetical @file{maude} compilations
 4948: @c to also use the value of @samp{AM_CFLAGS}, you would need to write:
 4949: @c 
 4950: ターゲットごとにフラグを用いてコンパイルする際は,通常の@samp{AM_}形式
 4951: のフラグ変数は自動的にコンパイルに組み込まれ@emph{ません}(しかし,ユー
 4952: ザ形式の変数は組み込まれ@emph{ます}).そのため,例えば,
 4953: @samp{AM_CFLAGS}の変数も使用して@file{maude}のコンパイルを行なうと仮定
 4954: すると,以下のように書く必要があります.
 4955: 
 4956: @example
 4957: maude_CFLAGS = @dots{} your flags @dots{} $(AM_CFLAGS)
 4958: @end example
 4959: 
 4960: 
 4961: @item maude_SHORTNAME
 4962: @c On some platforms the allowable file names are very short.  In order to
 4963: @c support these systems and per-target compilation flags at the same
 4964: @c time, Automake allows you to set a ``short name'' which will influence
 4965: @c how intermediate object files are named.  For instance, in the following
 4966: @c example,
 4967: @c 
 4968: 利用可能なファイル名が非常に短いプラットフォームもあります.これらのシ
 4969: ステムと,ターゲットごとのコンパイルフラグを同時にサポートするために,
 4970: Automakeでは,中間的なオブジェクトファイルの命名方法に影響する``短い名
 4971: 前''を設定することが可能です.例えば,以下の例のようにします.
 4972: 
 4973: @example
 4974: bin_PROGRAMS = maude
 4975: maude_CPPFLAGS = -DSOMEFLAG
 4976: maude_SHORTNAME = m
 4977: maude_SOURCES = sample.c @dots{}
 4978: @end example
 4979: 
 4980: @noindent
 4981: @c the object file would be named @file{m-sample.o} rather than
 4982: @c @file{maude-sample.o}.
 4983: @c 
 4984: オブジェクトファイルは@file{maude-sample.o}ではなく@file{m-sample.o}と
 4985: 命名されます.
 4986: 
 4987: @c This facility is rarely needed in practice,
 4988: @c and we recommend avoiding it until you find it is required.
 4989: @c 
 4990: この機能は,実行上滅多に必要になりませんし,要求されていることが分かる
 4991: まで使用を避けることを推奨します.
 4992: @end table
 4993: 
 4994: @node Default _SOURCES
 4995: @c @section Default @code{_SOURCES}
 4996: @section デフォルトの@code{_SOURCES}
 4997: 
 4998: @vindex _SOURCES
 4999: @vindex SOURCES
 5000: @cindex @code{_SOURCES}, default
 5001: @cindex default @code{_SOURCES}
 5002: 
 5003: @c @code{_SOURCES} variables are used to specify source files of programs
 5004: @c (@pxref{A Program}), libraries (@pxref{A Library}), and Libtool
 5005: @c libraries (@pxref{A Shared Library}).
 5006: @c 
 5007: @code{_SOURCES}変数は,プログラム(@pxref{A Program}),ライブラリ
 5008: (@pxref{A Library}),そしてLibtoolライブラリ(@pxref{A Shared Library}) 
 5009: のソースファイルを指定するために使用します.
 5010: 
 5011: @c When no such variable is specified for a target, Automake will define
 5012: @c one itself.  The default is to compile a single C file whose base name
 5013: @c is the name of the target itself, with any extension replaced by
 5014: @c @file{.c}.  (Defaulting to C is terrible but we are stuck with it for
 5015: @c historical reasons.)
 5016: @c 
 5017: そのような変数がターゲットに対して指定されていない場合,Automakeは独自
 5018: に定義します.デフォルトは,コンパイルする単一のCファイルで,その名前
 5019: はターゲット自身の名前を元にしていて,拡張子を@file{.c}に置換したもの
 5020: です.(Cのデフォルトは危険ですが,我々は歴史的な理由で身動きがとれなく
 5021: なっています.)
 5022: 
 5023: @c For example if you have the following somewhere in your
 5024: @c @file{Makefile.am} with no corresponding @samp{libfoo_a_SOURCES}:
 5025: @c 
 5026: 例えば,以下のような@file{Makefile.am}があって,対応する
 5027: @samp{libfoo_a_SOURCES}が無い場合を考えます.
 5028: 
 5029: @example
 5030: lib_LIBRARIES = libfoo.a sub/libc++.a
 5031: @end example
 5032: 
 5033: @noindent
 5034: @c @file{libfoo.a} will be built using a default source file named
 5035: @c @file{libfoo.c}, and @file{sub/libc++.a} will be built from
 5036: @c @file{sub/libc++.c}.  (In older versions @file{sub/libc++.a}
 5037: @c would be built from @file{sub_libc___a.c}, i.e., the default source
 5038: @c was the canonized name of the target, with @file{.c} appended.
 5039: @c Be believe the new behavior is more sensible, but for backward
 5040: @c compatibility automake will use the old name if a file or a rule
 5041: @c with that name exist.)
 5042: @c 
 5043: @file{libfoo.a}はデフォルトのソースファイル名@file{libfoo.c}を使用して
 5044: ビルドされ,@file{sub/libc++.a}は@file{sub/libc++.c}からビルドされます.
 5045: (より古いバージョンでは,@file{sub/libc++.a}は@file{sub_libc___a.c}か
 5046: ら,すなわちデフォルトのソースはターゲットの標準的な名前に@file{.c}を
 5047: 追加したものでした.新しい動作はより賢明だと信じていますが,下位互換性
 5048: として,その名前のファイルやルールが存在する場合,automakeは古い名前を
 5049: 使用します.)
 5050: 
 5051: @cindex @code{check_PROGRAMS} example
 5052: @vindex check_PROGRAMS
 5053: @c Default sources are mainly useful in test suites, when building many
 5054: @c tests programs each from a single source.  For instance in
 5055: @c 
 5056: デフォルトのソースは,たくさんのテストプログラムをそれぞれ単一のソース
 5057: からビルドする,テストスイートで主に役に立ちます.例えば以下のようにし
 5058: ます.
 5059: 
 5060: @example
 5061: check_PROGRAMS = test1 test2 test3
 5062: @end example
 5063: 
 5064: @noindent
 5065: @c @file{test1}, @file{test2}, and @file{test3} will be built
 5066: @c from @file{test1.c}, @file{test2.c}, and @file{test3.c}.
 5067: @c 
 5068: @file{test1},@file{test2},そして@file{test3}は,それぞれ
 5069: @file{test1.c},@file{test2.c},そして@file{test3.c}からビルドされます.
 5070: 
 5071: @cindex Libtool modules, default source example
 5072: @cindex default source, Libtool modules example
 5073: @c Another case where is this convenient is building many Libtool modules
 5074: @c (@file{moduleN.la}), each defined in its own file (@file{moduleN.c}).
 5075: @c 
 5076: これが便利になるもう一つの状況は,独自のファイル(@file{moduleN.c})で定
 5077: 義されている多くのLibtoolモジュール(@file{moduleN.la})をビルドするとき
 5078: です.
 5079: 
 5080: @example
 5081: AM_LDFLAGS = -module
 5082: lib_LTLIBRARIES = module1.la module2.la module3.la
 5083: @end example
 5084: 
 5085: @cindex empty @code{_SOURCES}
 5086: @cindex @code{_SOURCES}, empty
 5087: @c Finally, there is one situation where this default source computation
 5088: @c needs to be avoided: when a target should not be built from sources.
 5089: @c We already saw such an example in @ref{true}; this happens when all
 5090: @c the constituents of a target have already been compiled and need just
 5091: @c to be combined using a @code{_LDADD} variable.  Then it is necessary
 5092: @c to define an empty @code{_SOURCES} variable, so that automake does not
 5093: @c compute a default.
 5094: @c 
 5095: おしまいに,このデフォルトのソースを求めることを避ける必要がある状況が
 5096: 一つあります.ターゲットがソースからビルドされないときです.我々は
 5097: @ref{true}でそのような例を見てきました.これは,ターゲットのすべての構
 5098: 成要素が既にコンパイルされていて,単に@code{_LDADD}変数を使用して結合
 5099: する必要があるときに生じます.そして,automakeがデフォルトを求めないよ
 5100: うに空の@code{_SOURCES}変数を定義する必要があります.
 5101: 
 5102: @example
 5103: bin_PROGRAMS = target
 5104: target_SOURCES =
 5105: target_LDADD = libmain.a libmisc.a
 5106: @end example
 5107: 
 5108: @node LIBOBJS
 5109: @c @section Special handling for LIBOBJS and ALLOCA
 5110: @section LIBOBJSとALLOCAに対する特別扱い
 5111: 
 5112: @cindex @code{LIBOBJS}, special handling
 5113: @cindex @code{ALLOCA}, special handling
 5114: 
 5115: @c Automake explicitly recognizes the use of @code{$(LIBOBJS)} and
 5116: @c @code{$(ALLOCA)}, and uses this information, plus the list of
 5117: @c @code{LIBOBJS} files derived from @file{configure.ac} to automatically
 5118: @c include the appropriate source files in the distribution (@pxref{Dist}).
 5119: @c These source files are also automatically handled in the
 5120: @c dependency-tracking scheme; see @xref{Dependencies}.
 5121: @c 
 5122: Automakeは,@code{$(LIBOBJS)}と@code{$(ALLOCA)}を使用していることを明
 5123: 示的に認識し,そしてこの情報を使用し,配布物に適切なソースファイルを自
 5124: 動的に含めるため(@pxref{Dist}),@file{configure.ac}から派生される
 5125: @code{LIBOBJS}ファイルのリストに追加します.これらのソースファイルは,
 5126: 依存性追跡でも自動的に処理されます.@xref{Dependencies}.
 5127: 
 5128: @c @code{$(LIBOBJS)} and @code{$(ALLOCA)} are specially recognized in any
 5129: @c @samp{_LDADD} or @samp{_LIBADD} variable.
 5130: @c 
 5131: @code{$(LIBOBJS)}と@code{$(ALLOCA)}は,あらゆる@samp{_LDADD}や
 5132: @samp{_LIBADD}で特別に認識されます.
 5133: 
 5134: 
 5135: @node Program variables
 5136: @c @section Variables used when building a program
 5137: @section プログラムビルド時に使用される変数
 5138: 
 5139: @c Occasionally it is useful to know which @file{Makefile} variables
 5140: @c Automake uses for compilations; for instance you might need to do your
 5141: @c own compilation in some special cases.
 5142: @c 
 5143: Automakeがコンパイルに使用する@file{Makefile}変数を知ることが役に立ち
 5144: つこともあります.例えば,特別な状況では,自分でコンパイルをする必要が
 5145: あるかもしれません.
 5146: 
 5147: @c Some variables are inherited from Autoconf; these are @code{CC},
 5148: @c @code{CFLAGS}, @code{CPPFLAGS}, @code{DEFS}, @code{LDFLAGS}, and
 5149: @c @code{LIBS}.
 5150: @c 
 5151: Autoconfから継承される変数もあります.これらは@code{CC},@code{CFLAGS},
 5152: @code{CPPFLAGS},@code{DEFS},@code{LDFLAGS},そして@code{LIBS}です.
 5153: @vindex CC
 5154: @vindex CFLAGS
 5155: @vindex CPPFLAGS
 5156: @vindex DEFS
 5157: @vindex LDFLAGS
 5158: @vindex LIBS
 5159: 
 5160: @c There are some additional variables which Automake itself defines:
 5161: @c 
 5162: Automake自身が定義する追加の変数もあります.
 5163: 
 5164: @vtable @code
 5165: @item AM_CPPFLAGS
 5166: @c The contents of this variable are passed to every compilation which invokes
 5167: @c the C preprocessor; it is a list of arguments to the preprocessor.  For
 5168: @c instance, @samp{-I} and @samp{-D} options should be listed here.
 5169: @c 
 5170: この変数の内容は,Cプリプロセッサを呼び出すコンパイルで毎回渡されます.
 5171: それはプリプロセッサへの引数リストです.例えば,@samp{-I}と@samp{-D}オ
 5172: プションは,ここにリストアップすべきです.
 5173: 
 5174: @c Automake already provides some @samp{-I} options automatically.  In
 5175: @c particular it generates @samp{-I$(srcdir)}, @samp{-I.}, and a @samp{-I}
 5176: @c pointing to the directory holding @file{config.h} (if you've used
 5177: @c @code{AC_CONFIG_HEADERS} or @code{AM_CONFIG_HEADER}).  You can disable
 5178: @c the default @samp{-I} options using the @samp{nostdinc} option.
 5179: @c 
 5180: Automakeは,すでに@samp{-I}オプションを自動的に提供しています.特に,
 5181: @samp{-I$(srcdir)},@samp{-I.},そして(@code{AC_CONFIG_HEADERS}や
 5182: @code{AM_CONFIG_HEADER}を使用している場合は)@file{config.h}があるディ
 5183: レクトリを示す@samp{-I}を生成します.@samp{nostdinc}オプションを使用す
 5184: ることで,デフォルトの@samp{-I}オプションを利用不可能にすることが可能
 5185: です.
 5186: 
 5187: @c @code{AM_CPPFLAGS} is ignored in preference to a per-executable (or
 5188: @c per-library) @code{_CPPFLAGS} variable if it is defined.
 5189: @c 
 5190: 実行形式ごと(またはライブラリごと)に@code{_CPPFLAGS}変数が定義されてい
 5191: る場合,それを優先するので,@code{AM_CPPFLAGS}は無視されます.
 5192: 
 5193: @item INCLUDES
 5194: @c This does the same job as @samp{AM_CPPFLAGS} (or any per-target
 5195: @c @samp{_CPPFLAGS} variable if it is used).  It is an older name for the
 5196: @c same functionality.  This variable is deprecated; we suggest using
 5197: @c @samp{AM_CPPFLAGS} and per-target @samp{_CPPFLAGS} instead.
 5198: @c 
 5199: これは,@samp{AM_CPPFLAGS}と同じ仕事をします(または,ターゲットごとに
 5200: @samp{_CPPFLAGS}が使用されている場合と同じです).それは同じ機能に対す
 5201: る古い名前です.この変数の使用には反対します.我々は,代わりに
 5202: @samp{AM_CPPFLAGS}とターゲットごとの@samp{_CPPFLAGS}の使用を勧めます.
 5203: 
 5204: @item AM_CFLAGS
 5205: @c This is the variable which the @file{Makefile.am} author can use to pass
 5206: @c in additional C compiler flags.  It is more fully documented elsewhere.
 5207: @c In some situations, this is not used, in preference to the
 5208: @c per-executable (or per-library) @code{_CFLAGS}.
 5209: @c 
 5210: これは,@file{Makefile.am}の著者が,追加のCコンパイラフラグを渡すため
 5211: に使用することが可能な変数です.その完全な説明はどこかにあるでしょう.
 5212: 状況によっては,実行形式ごと(またはライブラリごと)の@code{_CFLAGS}が優
 5213: 先され,これは使用されません.
 5214: 
 5215: @item COMPILE
 5216: @c This is the command used to actually compile a C source file.  The
 5217: @c filename is appended to form the complete command line.
 5218: @c 
 5219: これはCソースファイルをコンパイルするために実際に使用されるコマンドで
 5220: す.完全なコマンドラインを構成するために,ファイル名が追加されます.
 5221: 
 5222: @item AM_LDFLAGS
 5223: @c This is the variable which the @file{Makefile.am} author can use to pass
 5224: @c in additional linker flags.  In some situations, this is not used, in
 5225: @c preference to the per-executable (or per-library) @code{_LDFLAGS}.
 5226: @c 
 5227: これは,@file{Makefile.am}の著者が,追加のリンカフラグを渡すために使用
 5228: することが可能な変数です.状況によっては,実行形式ごと(またはライブラ
 5229: リごと)の@code{_LDFLAGS}が優先され,これは使用されません.
 5230: 
 5231: @item LINK
 5232: @c This is the command used to actually link a C program.  It already
 5233: @c includes @samp{-o $@@} and the usual variable references (for instance,
 5234: @c @code{CFLAGS}); it takes as ``arguments'' the names of the object files
 5235: @c and libraries to link in.
 5236: @c 
 5237: これはCプログラムをリンクするために実際に使用されるコマンドです.それ
 5238: にはすでに,@samp{-o $@@}と通常参照される変数(例えば,@code{CFLAGS})が
 5239: 含まれています.それは,リンクされるオブジェクトファイルとライブラリの
 5240: 名前を``引数''として受けとります.
 5241: @end vtable
 5242: 
 5243: 
 5244: @node Yacc and Lex
 5245: @c @section Yacc and Lex support
 5246: @section YaccとLexのサポート
 5247: 
 5248: @c Automake has somewhat idiosyncratic support for Yacc and Lex.
 5249: @c 
 5250: AutomakeはYaccとLexに対して幾分特異なサポートを行ないます.
 5251: 
 5252: @c Automake assumes that the @file{.c} file generated by @code{yacc} (or
 5253: @c @code{lex}) should be named using the basename of the input file.  That
 5254: @c is, for a yacc source file @file{foo.y}, Automake will cause the
 5255: @c intermediate file to be named @file{foo.c} (as opposed to
 5256: @c @file{y.tab.c}, which is more traditional).
 5257: @c 
 5258: Automakeは,@code{yacc}(あるいは@code{lex})によって生成された@file{.c}
 5259: ファイルが,入力ファイルのベース名を使用して命名されていると仮定します.
 5260: すなわち,yaccソースファイル@file{foo.y}に対して,Automakeは中間ファイ
 5261: ルを(より伝統的な@file{y.tab.c}ではなく)@file{foo.c}と命名します.
 5262: 
 5263: @c The extension of a yacc source file is used to determine the extension
 5264: @c of the resulting @samp{C} or @samp{C++} file.  Files with the extension
 5265: @c @samp{.y} will be turned into @samp{.c} files; likewise, @samp{.yy} will
 5266: @c become @samp{.cc}; @samp{.y++}, @samp{c++}; and @samp{.yxx},
 5267: @c @samp{.cxx}.
 5268: @c 
 5269: yaccソースファイルの拡張子は,結果として生じる@samp{C}あるいは
 5270: @samp{C++} ファイルの拡張子を決定するために使用されます.ファイルの拡
 5271: 張子が@samp{.y}の場合は@samp{.c}になります.同様に@samp{.yy}は
 5272: @samp{.cc}に,@samp{.y++}は@samp{c++}に,そして@samp{.yxx}は
 5273: @samp{.cxx}になります.
 5274: 
 5275: @c Likewise, lex source files can be used to generate @samp{C} or
 5276: @c @samp{C++}; the extensions @samp{.l}, @samp{.ll}, @samp{.l++}, and
 5277: @c @samp{.lxx} are recognized.
 5278: @c 
 5279: 同様に,lexソースファイルは,@samp{C}や@samp{C++}を生成するために使用
 5280: することが可能です.拡張子の@samp{.l},@samp{.ll},@samp{.l++},そして
 5281: @samp{.lxx}が認識されます.
 5282: 
 5283: @c You should never explicitly mention the intermediate (@samp{C} or
 5284: @c @samp{C++}) file in any @samp{SOURCES} variable; only list the source
 5285: @c file.
 5286: @c 
 5287: あらゆる@samp{SOURCES}変数に,(@samp{C}や@samp{C++}の)中間的なファイル
 5288: を明示的に書いてはいけません.ソースファイルだけをリストアップします.
 5289: 
 5290: @c The intermediate files generated by @code{yacc} (or @code{lex}) will be
 5291: @c included in any distribution that is made.  That way the user doesn't
 5292: @c need to have @code{yacc} or @code{lex}.
 5293: @c 
 5294: @code{yacc}(あるいは@code{lex})によって生成さる中間的なファイルは,作
 5295: 成されるすべての配布物に含められます.そのためユーザが@code{yacc}や
 5296: @code{lex}を持っている必要がありません.
 5297: 
 5298: @c If a @code{yacc} source file is seen, then your @file{configure.ac} must
 5299: @c define the variable @samp{YACC}.  This is most easily done by invoking
 5300: @c the macro @samp{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
 5301: @c Program Checks, autoconf, The Autoconf Manual}).
 5302: @c 
 5303: @code{yacc}ソースファイルが見つかった場合,@file{configure.ac}で変数
 5304: @samp{YACC}を定義する必要があります.これは,マクロ@samp{AC_PROG_YACC}
 5305: を呼び出すことで最も容易に行なえます(@pxref{Particular Programs, ,
 5306: Particular Program Checks, autoconf, The Autoconf Manual}).
 5307: 
 5308: @c When @code{yacc} is invoked, it is passed @samp{YFLAGS} and
 5309: @c @samp{AM_YFLAGS}.  The former is a user variable and the latter is
 5310: @c intended for the @file{Makefile.am} author.
 5311: @c 
 5312: @code{yacc}が呼び出された時,@samp{YFLAGS}と@samp{AM_YFLAGS}フラグが渡
 5313: されます.前者はユーザ変数で,後者は@file{Makefile.am}の著者のためのも
 5314: のです.
 5315: 
 5316: @c @samp{AM_YFLAGS} is usually used to pass the @code{-d} option to
 5317: @c @code{yacc}.  Automake knows what this means and will automatically
 5318: @c adjust its rules to update and distribute the header file built by
 5319: @c @code{yacc -d}.  What Automake cannot guess, though, is where this
 5320: @c header will be used: it is up to you to ensure the header gets built
 5321: @c before it is first used.  Typically this is necessary in order for
 5322: @c dependency tracking to work when the header is included by another
 5323: @c file.  The common solution is listing the header file in
 5324: @c @code{BUILT_SOURCES} (@pxref{Sources}) as follows.
 5325: @c 
 5326: @samp{AM_YFLAGS}は通常,@code{-d}オプションを@code{yacc}に渡すとき使用
 5327: されます.Automakeはこれが意味するところを知っていて,@code{yacc -d}で
 5328: ビルドされるヘッダファイルの更新と配布のルールを,自動的に調整します.
 5329: しかし,Automakeが分からないものは,このヘッダが使用される場所です.ヘッ
 5330: ダが最初に使用される前にヘッダをビルドしておくことはあなたの責任です.
 5331: 通常これは,ヘッダが他のファイルからインクルードされているとき,依存性
 5332: の追跡が動作するために必要となります.一般的な解決策は,ヘッダファイル
 5333: を以下のように@code{BUILT_SOURCES} (@pxref{Sources})にリストアップする
 5334: ことです.
 5335: 
 5336: @example
 5337: BUILT_SOURCES = parser.h
 5338: AM_YFLAGS = -d
 5339: bin_PROGRAMS = foo
 5340: foo_SOURCES = @dots{} parser.y @dots{}
 5341: @end example
 5342: 
 5343: @c If a @code{lex} source file is seen, then your @file{configure.ac}
 5344: @c must define the variable @samp{LEX}.  You can use @samp{AC_PROG_LEX}
 5345: @c to do this (@pxref{Particular Programs, , Particular Program Checks,
 5346: @c autoconf, The Autoconf Manual}), but using @code{AM_PROG_LEX} macro
 5347: @c (@pxref{Macros}) is recommended.
 5348: @c 
 5349: 同様に,@code{lex}ソースファイルがある場合,@file{configure.ac}で変数
 5350: @samp{LEX}を定義する必要があります.こうするために@samp{AC_PROG_LEX}を
 5351: 使用することが可能ですが(@pxref{Particular Programs, , Particular
 5352: Program Checks, autoconf, The Autoconf Manual}),@code{AM_PROG_LEX}マ
 5353: クロ(@pxref{Macros})の使用を推奨します.
 5354: 
 5355: @c When @code{lex} is invoked, it is passed @samp{LFLAGS} and
 5356: @c @samp{AM_LFLAGS}.  The former is a user variable and the latter is
 5357: @c intended for the @file{Makefile.am} author.
 5358: @c 
 5359: @code{lex}が呼び出されたとき,@samp{LFLAGS}と@samp{AM_LFLAGS}フラグが
 5360: 渡されます.前者はユーザ変数で,後者は@file{Makefile.am}の著者のための
 5361: ものです.
 5362: 
 5363: @cindex ylwrap
 5364: @cindex yacc, multiple parsers
 5365: @cindex Multiple yacc parsers
 5366: @cindex Multiple lex lexers
 5367: @cindex lex, multiple lexers
 5368: 
 5369: 
 5370: @c Automake makes it possible to include multiple @code{yacc} (or
 5371: @c @code{lex}) source files in a single program.  When there is more than
 5372: @c one distinct @code{yacc} (or @code{lex}) source file in a directory,
 5373: @c Automake uses a small program called @code{ylwrap} to run @code{yacc}
 5374: @c (or @code{lex}) in a subdirectory.  This is necessary because yacc's
 5375: @c output filename is fixed, and a parallel make could conceivably invoke
 5376: @c more than one instance of @code{yacc} simultaneously.  The @code{ylwrap}
 5377: @c program is distributed with Automake.  It should appear in the directory
 5378: @c specified by @samp{AC_CONFIG_AUX_DIR} (@pxref{Input, , Finding
 5379: @c `configure' Input, autoconf, The Autoconf Manual}), or the current
 5380: @c directory if that macro is not used in @file{configure.ac}.
 5381: @c 
 5382: Automakeで,一つのプログラムに複数の@code{yacc}(または@code{lex})ソー
 5383: スファイルを含めることが可能になります.ディレクトリに一つ以上の異なる
 5384: @code{yacc}(または@code{lex})のソースファイルがあるとき,Automakeは,
 5385: サブディレクトリで@code{yacc}(または@code{lex})を実行するために,
 5386: @code{ylwrap}と呼ばれる小さいプログラムを使用します.これが必要になる
 5387: のは,yaccの出力ファイル名が固定されていて,並列的なmakeで@code{yacc} 
 5388: の一つ以上のインスタンスを同時に呼び出す可能性があるためです.
 5389: @code{ylwrap}プログラムは,Automakeと一緒に配布されます.それは
 5390: @samp{AC_CONFIG_AUX_DIR}が指定するディレクトリ (@pxref{Input, ,
 5391: Finding `configure' Input, autoconf, The Autoconf Manual}),または,そ
 5392: のマクロが@file{configure.ac}で使用されていない場合はカレントディレク
 5393: トリにあります.
 5394: 
 5395: @c For @code{yacc}, simply managing locking is insufficient.  The output of
 5396: @c @code{yacc} always uses the same symbol names internally, so it isn't
 5397: @c possible to link two @code{yacc} parsers into the same executable.
 5398: @c 
 5399: @code{yacc}に対しては,簡単なロックでの管理は不十分です.@code{yacc}の
 5400: 出力は,内部で常に同じシンボル名を使うので,同じ実行形式の中に二つの
 5401: @code{yacc}パーサーをリンクするは不可能です.
 5402: 
 5403: @c We recommend using the following renaming hack used in @code{gdb}:
 5404: @c 
 5405: @code{gdb}では,使用する名前を以下のように変更してください.
 5406: @example
 5407: #define	yymaxdepth c_maxdepth
 5408: #define	yyparse	c_parse
 5409: #define	yylex	c_lex
 5410: #define	yyerror	c_error
 5411: #define	yylval	c_lval
 5412: #define	yychar	c_char
 5413: #define	yydebug	c_debug
 5414: #define	yypact	c_pact
 5415: #define	yyr1	c_r1
 5416: #define	yyr2	c_r2
 5417: #define	yydef	c_def
 5418: #define	yychk	c_chk
 5419: #define	yypgo	c_pgo
 5420: #define	yyact	c_act
 5421: #define	yyexca	c_exca
 5422: #define yyerrflag c_errflag
 5423: #define yynerrs	c_nerrs
 5424: #define	yyps	c_ps
 5425: #define	yypv	c_pv
 5426: #define	yys	c_s
 5427: #define	yy_yys	c_yys
 5428: #define	yystate	c_state
 5429: #define	yytmp	c_tmp
 5430: #define	yyv	c_v
 5431: #define	yy_yyv	c_yyv
 5432: #define	yyval	c_val
 5433: #define	yylloc	c_lloc
 5434: #define yyreds	c_reds
 5435: #define yytoks	c_toks
 5436: #define yylhs	c_yylhs
 5437: #define yylen	c_yylen
 5438: #define yydefred c_yydefred
 5439: #define yydgoto	c_yydgoto
 5440: #define yysindex c_yysindex
 5441: #define yyrindex c_yyrindex
 5442: #define yygindex c_yygindex
 5443: #define yytable	 c_yytable
 5444: #define yycheck	 c_yycheck
 5445: #define yyname   c_yyname
 5446: #define yyrule   c_yyrule
 5447: @end example
 5448: 
 5449: @c For each define, replace the @samp{c_} prefix with whatever you like.
 5450: @c These defines work for @code{bison}, @code{byacc}, and traditional
 5451: @c @code{yacc}s.  If you find a parser generator that uses a symbol not
 5452: @c covered here, please report the new name so it can be added to the list.
 5453: @c 
 5454: それぞれの定義に対して,@samp{c_}接頭辞は好みのものに置き換えて下さい.
 5455: これらは,@code{bison},@code{byacc},そして伝統的な@code{yacc}に対す
 5456: る動作を定義します.パーサジェネレータが,ここでカバーされていないシン
 5457: ボルを使用していることが分かった場合,リストに加えることができるように,
 5458: 新しい名前を報告してください.
 5459: 
 5460: 
 5461: @node C++ Support
 5462: @c @section C++ Support
 5463: @section C++のサポート
 5464: 
 5465: @cindex C++ support
 5466: @cindex Support for C++
 5467: 
 5468: @c Automake includes full support for C++.
 5469: @c 
 5470: Automakeには,C++に対する完全なサポートが含まれています.
 5471: 
 5472: @c Any package including C++ code must define the output variable
 5473: @c @samp{CXX} in @file{configure.ac}; the simplest way to do this is to use
 5474: @c the @code{AC_PROG_CXX} macro (@pxref{Particular Programs, , Particular
 5475: @c Program Checks, autoconf, The Autoconf Manual}).
 5476: @c 
 5477: C++コードを含んでいるすべてのパッケージでは,@file{configure.ac}で出力
 5478: 変数@samp{CXX}を定義する必要があります.これを行う最も単純な方法は,
 5479: @code{AC_PROG_CXX}マクロを使用することです(@pxref{Particular Programs,
 5480: , Particular Program Checks, autoconf, The Autoconf Manual}).
 5481: 
 5482: @c A few additional variables are defined when a C++ source file is seen:
 5483: @c 
 5484: C++ソースファイルがあるとき,少しだけ追加変数が定義されます.
 5485: 
 5486: @vtable @code
 5487: @item CXX
 5488: @c The name of the C++ compiler.
 5489: @c 
 5490: C++コンパイラの名前です.
 5491: 
 5492: @item CXXFLAGS
 5493: @c Any flags to pass to the C++ compiler.
 5494: @c 
 5495: C++コンパイラに渡すすべてのフラグです.
 5496: 
 5497: @item AM_CXXFLAGS
 5498: @c The maintainer's variant of @code{CXXFLAGS}.
 5499: @c 
 5500: 管理者のための@code{CXXFLAGS}です.
 5501: 
 5502: @item CXXCOMPILE
 5503: @c The command used to actually compile a C++ source file.  The file name
 5504: @c is appended to form the complete command line.
 5505: @c 
 5506: C++ソースファイルを実際にコンパイルするために使用されるコマンドです.
 5507: 完全なコマンドラインを構成するためにファイル名が追加されます.
 5508: 
 5509: @item CXXLINK
 5510: @c The command used to actually link a C++ program.
 5511: @c 
 5512: 実際にC++プログラムをリンクするコマンドです.
 5513: @end vtable
 5514: 
 5515: 
 5516: @node Assembly Support
 5517: @c @section Assembly Support
 5518: @section アセンブラのサポート
 5519: 
 5520: @c Automake includes some support for assembly code.
 5521: @c 
 5522: Automakeは,アセンブラコードに対するサポートも含んでいます.
 5523: 
 5524: @c The variable @code{CCAS} holds the name of the compiler used to build
 5525: @c assembly code.  This compiler must work a bit like a C compiler; in
 5526: @c particular it must accept @samp{-c} and @samp{-o}.  The value of
 5527: @c @code{CCASFLAGS} is passed to the compilation.
 5528: @c 
 5529: 変数@code{CCAS}には,アセンブラコードをビルドするために使用するコンパ
 5530: イラ名が保持されています.このコンパイラは,Cコンパイラにちょっと似て
 5531: いる動作をする必要があります.特に,それは@samp{-c}と@samp{-o}を受け入
 5532: れる必要があります.@code{CCASFLAGS}の値はコンパイラに渡されます.
 5533: @vindex CCAS
 5534: @vindex CCASFLAGS
 5535: 
 5536: @c You are required to set @code{CCAS} and @code{CCASFLAGS} via
 5537: @c @file{configure.ac}.  The autoconf macro @code{AM_PROG_AS} will do this
 5538: @c for you.  Unless they are already set, it simply sets @code{CCAS} to the
 5539: @c C compiler and @code{CCASFLAGS} to the C compiler flags.
 5540: @c 
 5541: @file{configure.ac}で@code{CCAS}と@code{CCASFLAGS}を設定する必要があり
 5542: ます.autoconfマクロの@code{AM_PROG_AS}でこれを行ないます.前もって設
 5543: 定されていない場合は,@code{CCAS}をCコンパイラに, @code{CCASFLAGS}をC
 5544: コンパイラフラグに,単純に設定します.
 5545: 
 5546: @c Only the suffixes @samp{.s} and @samp{.S} are recognized by
 5547: @c @code{automake} as being files containing assembly code.
 5548: @c 
 5549: 接尾子の@samp{.s}と@samp{.S}だけがアセンブリコードを含んでいるファイル
 5550: だと@code{automake}で認識されます.
 5551: 
 5552: 
 5553: @node Fortran 77 Support
 5554: @comment  node-name,  next,  previous,  up
 5555: @c @section Fortran 77 Support
 5556: @section Fortran 77のサポート
 5557: 
 5558: @cindex Fortran 77 support
 5559: @cindex Support for Fortran 77
 5560: 
 5561: @c Automake includes full support for Fortran 77.
 5562: @c 
 5563: Automakeには,Fortran 77に対する完全なサポートが含まれています.
 5564: 
 5565: @c Any package including Fortran 77 code must define the output variable
 5566: @c @samp{F77} in @file{configure.ac}; the simplest way to do this is to use
 5567: @c the @code{AC_PROG_F77} macro (@pxref{Particular Programs, , Particular
 5568: @c Program Checks, autoconf, The Autoconf Manual}).  @xref{Fortran 77 and
 5569: @c Autoconf}.
 5570: @c 
 5571: Fortran 77コードを含むパッケージでは,@file{configure.ac}で出力変数
 5572: @samp{F77}を定義する必要があります.こうするための最も簡単な方法は
 5573: @code{AC_PROG_F77}マクロを使用することです(@pxref{Particular Programs,
 5574: , Particular Program Checks, autoconf, The Autoconf Manual}).
 5575: @xref{Fortran 77 and Autoconf}.
 5576: 
 5577: @c A few additional variables are defined when a Fortran 77 source file is
 5578: @c seen:
 5579: @c 
 5580: Fortran 77ソースファイルが見つかるとき,追加変数がいくつか定義されます.
 5581: 
 5582: @vtable @code
 5583: 
 5584: @item F77
 5585: @c The name of the Fortran 77 compiler.
 5586: @c 
 5587: Fortran 77コンパイラの名前です.
 5588: 
 5589: @item FFLAGS
 5590: @c Any flags to pass to the Fortran 77 compiler.
 5591: @c 
 5592: Fortran 77コンパイラに渡す,すべてのフラグです.
 5593: 
 5594: @item AM_FFLAGS
 5595: @c The maintainer's variant of @code{FFLAGS}.
 5596: @c 
 5597: 管理者のための@code{FFLAGS}です.
 5598: 
 5599: @item RFLAGS
 5600: @c Any flags to pass to the Ratfor compiler.
 5601: @c 
 5602: Ratforコンパイラに渡す,すべてのフラグです.
 5603: 
 5604: @item AM_RFLAGS
 5605: @c The maintainer's variant of @code{RFLAGS}.
 5606: @c 
 5607: 管理者のための@code{RFLAGS}です.
 5608: 
 5609: @item F77COMPILE
 5610: @c The command used to actually compile a Fortran 77 source file.  The file
 5611: @c name is appended to form the complete command line.
 5612: @c 
 5613: 実際にFortran 77ソースファイルをコンパイルするコマンドです.完全なコマ
 5614: ンドラインを構成するために,ファイル名が追加されます.
 5615: 
 5616: @item FLINK
 5617: @c The command used to actually link a pure Fortran 77 program or shared
 5618: @c library.
 5619: @c 
 5620: 実際に純粋なFortran 77プログラムあるいは共有ライブラリをリンクするコマ
 5621: ンドです.
 5622: 
 5623: @end vtable
 5624: 
 5625: @c Automake can handle preprocessing Fortran 77 and Ratfor source files in
 5626: @c addition to compiling them@footnote{Much, if not most, of the
 5627: @c information in the following sections pertaining to preprocessing
 5628: @c Fortran 77 programs was taken almost verbatim from @ref{Catalogue of
 5629: @c Rules, , Catalogue of Rules, make, The GNU Make Manual}.}.  Automake
 5630: @c also contains some support for creating programs and shared libraries
 5631: @c that are a mixture of Fortran 77 and other languages (@pxref{Mixing
 5632: @c Fortran 77 With C and C++}).
 5633: @c 
 5634: さらにAutomakeは,コンパイルするためにFortran 77とRatforソースファイル
 5635: のプリプロセス処理を行なうことが可能です@footnote{以下のセクションにあ
 5636: るFortran 77プログラムのプリプロセスに関する情報について,大部分ではあ
 5637: りませんが,多くのものを@ref{Catalogue of Rules, , Catalogue of Rules,
 5638: make, The GNU Make Manual}からほとんどそのまま持ってきています.}.
 5639: Automake には,Fortran 77と他の言葉が混合しているプログラムと共有ライ
 5640: ブラリを作成するためのサポートも含まれています(@pxref{Mixing Fortran
 5641: 77 With C and C++}).
 5642: 
 5643: @c These issues are covered in the following sections.
 5644: @c 
 5645: これらの問題は次のセクションで述べます.
 5646: 
 5647: @menu
 5648: * Preprocessing Fortran 77::
 5649: * Compiling Fortran 77 Files::
 5650: * Mixing Fortran 77 With C and C++::
 5651: * Fortran 77 and Autoconf::
 5652: @end menu
 5653: 
 5654: 
 5655: @node Preprocessing Fortran 77
 5656: @comment  node-name,  next,  previous,  up
 5657: @c @subsection Preprocessing Fortran 77
 5658: @subsection Fortran 77のプリプロセス
 5659: 
 5660: @cindex Preprocessing Fortran 77
 5661: @cindex Fortran 77, Preprocessing
 5662: @cindex Ratfor programs
 5663: 
 5664: @c @file{N.f} is made automatically from @file{N.F} or @file{N.r}.  This
 5665: @c rule runs just the preprocessor to convert a preprocessable Fortran 77
 5666: @c or Ratfor source file into a strict Fortran 77 source file.  The precise
 5667: @c command used is as follows:
 5668: @c 
 5669: @file{N.f}は自動的に@file{N.F}あるいは@file{N.r}から作成されます.この
 5670: ルールは,プリプロセス可能なFortran 77やRatforソースファイルを,厳密な
 5671: Fortran 77ソースファイルに変換するためだけにプリプロセッサを走らせます.
 5672: 使用される正確なコマンドは以下のようになります.
 5673: 
 5674: @table @file
 5675: 
 5676: @item .F
 5677: @code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
 5678: 
 5679: @item .r
 5680: @code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
 5681: 
 5682: @end table
 5683: 
 5684: 
 5685: @node Compiling Fortran 77 Files
 5686: @comment  node-name,  next,  previous,  up
 5687: @c @subsection Compiling Fortran 77 Files
 5688: @subsection Fortran 77ファイルのコンパイル
 5689: 
 5690: @c @file{N.o} is made automatically from @file{N.f}, @file{N.F} or
 5691: @c @file{N.r} by running the Fortran 77 compiler.  The precise command used
 5692: @c is as follows:
 5693: @c 
 5694: @file{N.o}は,Fortran 77を実行することによって@file{N.f},@file{N.F}や
 5695: @file{N.r}から自動的に作成されます.使用される正確なコマンドは以下のよ
 5696: うになります.
 5697: 
 5698: @table @file
 5699: 
 5700: @item .f
 5701: @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
 5702: 
 5703: @item .F
 5704: @code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
 5705: 
 5706: @item .r
 5707: @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
 5708: 
 5709: @end table
 5710: 
 5711: 
 5712: @node Mixing Fortran 77 With C and C++
 5713: @comment  node-name,  next,  previous,  up
 5714: @c @subsection Mixing Fortran 77 With C and C++
 5715: @subsection CとC++と,Fortran 77の混在
 5716: 
 5717: @cindex Fortran 77, mixing with C and C++
 5718: @cindex Mixing Fortran 77 with C and C++
 5719: @cindex Linking Fortran 77 with C and C++
 5720: @cindex cfortran
 5721: @cindex Mixing Fortran 77 with C and/or C++
 5722: 
 5723: @c Automake currently provides @emph{limited} support for creating programs
 5724: @c and shared libraries that are a mixture of Fortran 77 and C and/or C++.
 5725: @c However, there are many other issues related to mixing Fortran 77 with
 5726: @c other languages that are @emph{not} (currently) handled by Automake, but
 5727: @c that are handled by other packages@footnote{For example,
 5728: @c @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
 5729: @c addresses all of these inter-language issues, and runs under nearly all
 5730: @c Fortran 77, C and C++ compilers on nearly all platforms.  However,
 5731: @c @code{cfortran} is not yet Free Software, but it will be in the next
 5732: @c major release.}.
 5733: @c 
 5734: Automakeは現在,Fortran 77とCそして/またはC++が混在しているプログラム
 5735: と共有ライブラリを作成するため,@emph{限定された}サポートを提供してい
 5736: ます.しかし,(現在は)Automakeによって処理され@emph{ません}が,他のパッ
 5737: ケージ@footnote{例えば,
 5738: @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
 5739: は,これらすべての言語間の問題を扱い,ほとんどすべてのプラットホームの,
 5740: ほとんどすべてのFortran 77,C,そしてC++コンパイラで動作します.しかし
 5741: ながら,@code{cfortran}はまだフリーソフトウェアではありませんが,次の
 5742: メジャーリリースでそうなるでしょう.}で処理される,Fortran 77と他の言
 5743: 葉との混在に関連して,多くの問題が発生しています.
 5744: 
 5745: @page
 5746: @c Automake can help in two ways:
 5747: @c 
 5748: Automakeは二つの方法でそれを助けることが可能です.
 5749: 
 5750: @enumerate
 5751: @item
 5752: @c Automatic selection of the linker depending on which combinations of
 5753: @c source code.
 5754: @c 
 5755: ソースコードの組み合わせに依存したリンカの自動的な選択.
 5756: 
 5757: @item
 5758: @c Automatic selection of the appropriate linker flags (e.g. @samp{-L} and
 5759: @c @samp{-l}) to pass to the automatically selected linker in order to link
 5760: @c in the appropriate Fortran 77 intrinsic and run-time libraries.
 5761: @c 
 5762: 適切なFortran 77のイントリンシックとランタイムライブラリにリンクするた
 5763: めに,自動的に選択されたリンカに渡す適切なリンカフラグ(例えば@samp{-L}
 5764: と@samp{-l})の自動的な選択.
 5765: 
 5766: @cindex FLIBS, defined
 5767: @c These extra Fortran 77 linker flags are supplied in the output variable
 5768: @c @code{FLIBS} by the @code{AC_F77_LIBRARY_LDFLAGS} Autoconf macro
 5769: @c supplied with newer versions of Autoconf (Autoconf version 2.13 and
 5770: @c later).  @xref{Fortran 77 Compiler Characteristics, , , autoconf, The
 5771: @c Autoconf}.
 5772: @c 
 5773: これらの追加されたFortran 77リンカフラグは,Autoconf(Autoconfバージョ
 5774: ン2.13やそれ以降)の新しいバージョンで供給された,
 5775: @code{AC_F77_LIBRARY_LDFLAGS}というAutoconfマクロでの出力変数
 5776: @code{FLIBS}で提供されます.@xref{Fortran 77 Compiler Characteristics,
 5777: , , autoconf, The Autoconf}.
 5778: @end enumerate
 5779: 
 5780: @c If Automake detects that a program or shared library (as mentioned in
 5781: @c some @code{_PROGRAMS} or @code{_LTLIBRARIES} primary) contains source
 5782: @c code that is a mixture of Fortran 77 and C and/or C++, then it requires
 5783: @c that the macro @code{AC_F77_LIBRARY_LDFLAGS} be called in
 5784: @c @file{configure.ac}, and that either @code{$(FLIBS)}
 5785: @c appear in the appropriate @code{_LDADD} (for programs) or @code{_LIBADD}
 5786: @c (for shared libraries) variables.  It is the responsibility of the
 5787: @c person writing the @file{Makefile.am} to make sure that @code{$(FLIBS)}
 5788: @c appears in the appropriate @code{_LDADD} or
 5789: @c @code{_LIBADD} variable.
 5790: @c 
 5791: (@code{_PROGRAMS}や@code{_LTLIBRARIES}プライマリで記述されているような) 
 5792: プログラムや共有ライブラリが,Fortran 77と,Cそして/またはC++が混合す
 5793: るソースコードを含んでいることをAutomakeが検出した場合,
 5794: @code{AC_F77_LIBRARY_LDFLAGS}マクロを@file{configure.ac}で呼び出し,
 5795: @code{$(FLIBS)}が,適切な(プログラムに対する)@code{_LDADD}や,(共有ラ
 5796: イブラリに対する)@code{_LIBADD}変数のいずれかで書かれていることを要求
 5797: します.@code{$(FLIBS)}が適切な@code{_LDADD}や@code{_LIBADD}変数に書か
 5798: れていることを確かめるのは,@file{Makefile.am}を書いている人の責任です.
 5799: 
 5800: @cindex Mixed language example
 5801: @cindex Example, mixed language
 5802: 
 5803: @c For example, consider the following @file{Makefile.am}:
 5804: @c 
 5805: 例えば,以下の@file{Makefile.am}を考えます.
 5806: 
 5807: @example
 5808: bin_PROGRAMS = foo
 5809: foo_SOURCES  = main.cc foo.f
 5810: foo_LDADD    = libfoo.la $(FLIBS)
 5811: 
 5812: pkglib_LTLIBRARIES = libfoo.la
 5813: libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
 5814: libfoo_la_LIBADD   = $(FLIBS)
 5815: @end example
 5816: 
 5817: @c In this case, Automake will insist that @code{AC_F77_LIBRARY_LDFLAGS}
 5818: @c is mentioned in @file{configure.ac}.  Also, if @code{$(FLIBS)} hadn't
 5819: @c been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
 5820: @c Automake would have issued a warning.
 5821: @c 
 5822: この状況では,Automakeは,@code{AC_F77_LIBRARY_LDFLAGS}が
 5823: @file{configure.ac}で記述されることを強く要求します.また,
 5824: @code{$(FLIBS)}が@code{foo_LDADD}と@code{libfoo_la_LIBADD}で記述されて
 5825: いない場合も,Automakeは警告を出します.
 5826: 
 5827: 
 5828: @page
 5829: @menu
 5830: * How the Linker is Chosen::
 5831: @end menu
 5832: 
 5833: @node How the Linker is Chosen
 5834: @comment  node-name,  next,  previous,  up
 5835: @c @subsubsection How the Linker is Chosen
 5836: @subsubsection リンカの選択方法
 5837: 
 5838: @cindex Automatic linker selection
 5839: @cindex Selecting the linker automatically
 5840: 
 5841: @c The following diagram demonstrates under what conditions a particular
 5842: @c linker is chosen by Automake.
 5843: @c 
 5844: Automakeによって特定のリンカが選択される条件を以下の図で明示します.
 5845: 
 5846: @c For example, if Fortran 77, C and C++ source code were to be compiled
 5847: @c into a program, then the C++ linker will be used.  In this case, if the
 5848: @c C or Fortran 77 linkers required any special libraries that weren't
 5849: @c included by the C++ linker, then they must be manually added to an
 5850: @c @code{_LDADD} or @code{_LIBADD} variable by the user writing the
 5851: @c @file{Makefile.am}.
 5852: @c 
 5853: 例えば,Fortran 77,C,そしてC++ソースコードがプログラムにコンパイルさ
 5854: れる場合,C++リンカが使用されます.この場合,CあるいはFortran 77リンカ
 5855: が,C++リンカに含まれていない特別なライブラリを必要とした場合,
 5856: @file{Makefile.am}を書いているユーザが,@code{_LDADD}や@code{_LIBADD} 
 5857: 変数を手作業で付け加える必要があります.
 5858: 
 5859: @example
 5860:                      \              Linker
 5861:           source      \
 5862:            code        \     C        C++     Fortran
 5863:      -----------------  +---------+---------+---------+
 5864:                         |         |         |         |
 5865:      C                  |    x    |         |         |
 5866:                         |         |         |         |
 5867:                         +---------+---------+---------+
 5868:                         |         |         |         |
 5869:          C++            |         |    x    |         |
 5870:                         |         |         |         |
 5871:                         +---------+---------+---------+
 5872:                         |         |         |         |
 5873:                Fortran  |         |         |    x    |
 5874:                         |         |         |         |
 5875:                         +---------+---------+---------+
 5876:                         |         |         |         |
 5877:      C + C++            |         |    x    |         |
 5878:                         |         |         |         |
 5879:                         +---------+---------+---------+
 5880:                         |         |         |         |
 5881:      C +       Fortran  |         |         |    x    |
 5882:                         |         |         |         |
 5883:                         +---------+---------+---------+
 5884:                         |         |         |         |
 5885:          C++ + Fortran  |         |    x    |         |
 5886:                         |         |         |         |
 5887:                         +---------+---------+---------+
 5888:                         |         |         |         |
 5889:      C + C++ + Fortran  |         |    x    |         |
 5890:                         |         |         |         |
 5891:                         +---------+---------+---------+
 5892: @end example
 5893: 
 5894: 
 5895: @node Fortran 77 and Autoconf
 5896: @comment  node-name,  next,  previous,  up
 5897: @c @subsection Fortran 77 and Autoconf
 5898: @subsection Fortran 77とAutoconf
 5899: 
 5900: @c The current Automake support for Fortran 77 requires a recent enough
 5901: @c version of Autoconf that also includes support for Fortran 77.  Full
 5902: @c Fortran 77 support was added to Autoconf 2.13, so you will want to use
 5903: @c that version of Autoconf or later.
 5904: @c 
 5905: Fortran 77に対する現在のAutomakeサポートは,Fortran 77に対するサポート
 5906: が含まれている最近のバージョンのAutoconfも必要になります.Fortran 77の
 5907: 完全なサポートがAutoconf2.13で加えられたので,それかそれ以降のバージョ
 5908: ンのAutoconfを使用したいと思うことでしょう.
 5909: 
 5910: 
 5911: @node Java Support
 5912: @comment  node-name,  next,  previous,  up
 5913: @c @section Java Support
 5914: @section Javaのサポート
 5915: 
 5916: @cindex Java support
 5917: @cindex Support for Java
 5918: 
 5919: @c Automake includes support for compiled Java, using @code{gcj}, the Java
 5920: @c front end to the GNU Compiler Collection.
 5921: @c 
 5922: Automakeには,GNU Compiler CollectionのJavaフロントエンドである
 5923: @code{gcj}を使用してコンパイルされるJavaに対するサポートも含まれていま
 5924: す.
 5925: 
 5926: @c Any package including Java code to be compiled must define the output
 5927: @c variable @samp{GCJ} in @file{configure.ac}; the variable @samp{GCJFLAGS}
 5928: @c must also be defined somehow (either in @file{configure.ac} or
 5929: @c @file{Makefile.am}).  The simplest way to do this is to use the
 5930: @c @code{AM_PROG_GCJ} macro.
 5931: @c 
 5932: Javaコードを含んでいるパッケージのコンパイルには,@file{configure.ac} 
 5933: で出力変数@samp{GCJ}を定義する必要があります.変数@samp{GCJFLAGS}も,
 5934: (@file{configure.ac}や@file{Makefile.am}で)なんとかして定義する必要が
 5935: あります.こうするための最も簡単な方法は,@code{AM_PROG_GCJ}マクロを使
 5936: 用することです.
 5937: 
 5938: @vindex GCJFLAGS
 5939: 
 5940: @c By default, programs including Java source files are linked with
 5941: @c @code{gcj}.
 5942: @c 
 5943: デフォルトで,Javaソースファイルを含んでいるプログラムは,@code{gcj}で
 5944: リンクされます.
 5945: 
 5946: @c As always, the contents of @samp{AM_GCJFLAGS} are passed to every
 5947: @c compilation invoking @code{gcj} (in its role as an ahead-of-time
 5948: @c compiler -- when invoking it to create @file{.class} files,
 5949: @c @samp{AM_JAVACFLAGS} is used instead).  If it is necessary to pass
 5950: @c options to @code{gcj} from @file{Makefile.am}, this variable, and not
 5951: @c the user variable @samp{GCJFLAGS}, should be used.
 5952: @c 
 5953: 通常どおり,@samp{AM_GCJFLAGS}の内容は,@code{gcj}が呼び出されるコンパ
 5954: イルごとに渡されます(コンパイル前でのその役割を果たすもの ---
 5955: @file{.class}ファイルを作成するためにそれを呼び出すとき,
 5956: @samp{AM_JAVACFLAGS}が代わりに使用されます).@file{Makefile.am}から
 5957: @code{gcj}にオプションを渡す必要がある場合,この変数とユーザ変数でない
 5958: @samp{GCJFLAGS}を使用すべきでしょう.
 5959: 
 5960: @vindex AM_GCJFLAGS
 5961: 
 5962: @c @code{gcj} can be used to compile @file{.java}, @file{.class},
 5963: @c @file{.zip}, or @file{.jar} files.
 5964: @c 
 5965: @code{gcj}は,@file{.java},@file{.class},@file{.zip},または
 5966: @file{.jar}ファイルをコンパイルするために使用することが可能です.
 5967: 
 5968: @c When linking, @code{gcj} requires that the main class be specified
 5969: @c using the @samp{--main=} option.  The easiest way to do this is to use
 5970: @c the @code{_LDFLAGS} variable for the program.
 5971: @c 
 5972: リンク時に,@code{gcj}はメインクラスが@samp{--main=}オプションを使用し
 5973: て指定されていることを要求します.こうするための最も簡単な方法は,プロ
 5974: グラムで@code{_LDFLAGS}変数を使用することです.
 5975: 
 5976: 
 5977: @node Support for Other Languages
 5978: @comment  node-name,  next,  previous,  up
 5979: @c @section Support for Other Languages
 5980: @section 他の言語のサポート
 5981: 
 5982: @c Automake currently only includes full support for C, C++ (@pxref{C++
 5983: @c Support}), Fortran 77 (@pxref{Fortran 77 Support}), and Java
 5984: @c (@pxref{Java Support}).  There is only rudimentary support for other
 5985: @c languages, support for which will be improved based on user demand.
 5986: @c 
 5987: Automakeには現在,C,C++(@pxref{C++ Support}),Fortran
 5988: 77(@pxref{Fortran 77 Support}),そしてJava(@pxref{Java Support})のみの
 5989: 完全なサポートが含まれています.他の言葉に対しては,基本的なサポートと
 5990: ユーザの需要に基づいて改善されるサポートしかありません.
 5991: 
 5992: @c Some limited support for adding your own languages is available via the
 5993: @c suffix rule handling; see @ref{Suffixes}.
 5994: @c 
 5995: 独自の言語を加えるため幾分制限されているサポートは,サフィックスルール
 5996: の処理によって利用可能になっています.@ref{Suffixes}を参照してください.
 5997: 
 5998: 
 5999: @node ANSI
 6000: @c @section Automatic de-ANSI-fication
 6001: @section 自動的なde-ANSI-fication
 6002: 
 6003: @cindex de-ANSI-fication, defined
 6004: 
 6005: @c Although the GNU standards allow the use of ANSI C, this can have the
 6006: @c effect of limiting portability of a package to some older compilers
 6007: @c (notably the SunOS C compiler).
 6008: @c 
 6009: GNU standardsはANSI Cの使用を許可していますが,これはもっと古いコンパ
 6010: イラ(特にSunOS C コンパイラ)へのパッケージの移植性を制限することになる
 6011: はずです.
 6012: 
 6013: @c Automake allows you to work around this problem on such machines by
 6014: @c @dfn{de-ANSI-fying} each source file before the actual compilation takes
 6015: @c place.
 6016: @c 
 6017: 実際にコンパイルされる前に@dfn{de-ANSI-fyng}したそれぞれのファイルによっ
 6018: て,Automakeではそのようなマシン上でのこの問題を解決することが可能にな
 6019: ります.
 6020: 
 6021: @vindex AUTOMAKE_OPTIONS
 6022: @opindex ansi2knr
 6023: 
 6024: @c If the @file{Makefile.am} variable @code{AUTOMAKE_OPTIONS}
 6025: @c (@pxref{Options}) contains the option @code{ansi2knr} then code to
 6026: @c handle de-ANSI-fication is inserted into the generated
 6027: @c @file{Makefile.in}.
 6028: @c 
 6029: @file{Makefile.am}の変数@code{AUTOMAKE_OPTIONS}(@pxref{Options})がオプ
 6030: ション@code{ansi2knr}を含んでいる場合,de-ANSI-ficationを処理するため
 6031: のコードが生成された@file{Makefile.in}に挿入されます.
 6032: 
 6033: @c This causes each C source file in the directory to be treated as ANSI C@.
 6034: @c If an ANSI C compiler is available, it is used.  If no ANSI C compiler
 6035: @c is available, the @code{ansi2knr} program is used to convert the source
 6036: @c files into K&R C, which is then compiled.
 6037: @c 
 6038: これによって,ディレクトリ内のそれぞれのCソースファイルをANSI Cとして
 6039: 扱います.ANSI Cコンパイラが利用可能な場合,それが使用されます.ANSI C 
 6040: コンパイラが利用可能でない場合,@code{ansi2knr}プログラムがソースファ
 6041: イルをK&R Cに変換するために使用され,そしてコンパイルされます.
 6042: 
 6043: @c The @code{ansi2knr} program is simple-minded.  It assumes the source
 6044: @c code will be formatted in a particular way; see the @code{ansi2knr} man
 6045: @c page for details.
 6046: @c 
 6047: @code{ansi2knr}プログラムは単純です.それはソースコードが特定の方法で
 6048: 書式化されると仮定します.詳細は@code{ansi2knr}のmanページを参照してく
 6049: ださい.
 6050: 
 6051: @c Support for de-ANSI-fication requires the source files @file{ansi2knr.c}
 6052: @c and @file{ansi2knr.1} to be in the same package as the ANSI C source;
 6053: @c these files are distributed with Automake.  Also, the package
 6054: @c @file{configure.ac} must call the macro @code{AM_C_PROTOTYPES}
 6055: @c (@pxref{Macros}).
 6056: @c 
 6057: de-ANSI-ficationに対するサポートでは,ソースファイル@file{ansi2knr.c}
 6058: と@file{ansi2knr.1}がANSI Cソースと同じパッケージにある必要があります.
 6059: これらのファイルはAutomakeと一緒に配布されます.また,パッケージ
 6060: @file{configure.ac}では,@code{AM_C_PROTOTYPES}マクロを呼び出す必要も
 6061: あります(@pxref{Macros}).
 6062: @cvindex AM_C_PROTOTYPES
 6063: 
 6064: @c Automake also handles finding the @code{ansi2knr} support files in some
 6065: @c other directory in the current package.  This is done by prepending the
 6066: @c relative path to the appropriate directory to the @code{ansi2knr}
 6067: @c option.  For instance, suppose the package has ANSI C code in the
 6068: @c @file{src} and @file{lib} subdirectories.  The files @file{ansi2knr.c} and
 6069: @c @file{ansi2knr.1} appear in @file{lib}.  Then this could appear in
 6070: @c @file{src/Makefile.am}:
 6071: @c 
 6072: Automakeは,現在のパッケージの他のディレクトリで@code{ansi2knr}サポー
 6073: トファイルを見つけることもできます.これは,@code{ansi2knr}オプション
 6074: へ適切なディレクトリへの相対的なパスを前置することで行なわれます.例え
 6075: ば,パッケージの@file{src}と@file{lib}サブディレクトリにANSI Cコードが
 6076: あると仮定します.ファイル@file{ansi2knr.c}と@file{ansi2knr.1}は
 6077: @file{lib}にあります.この場合,@file{src/Makefile.am}は以下のように書
 6078: くことが可能でしょう.
 6079: 
 6080: @example
 6081: AUTOMAKE_OPTIONS = ../lib/ansi2knr
 6082: @end example
 6083: 
 6084: @c If no directory prefix is given, the files are assumed to be in the
 6085: @c current directory.
 6086: @c 
 6087: ディレクトリの接頭辞が与えられてない場合,ファイルはカレントディレクト
 6088: リにあると仮定されます.
 6089: 
 6090: @c Note that automatic de-ANSI-fication will not work when the package is
 6091: @c being built for a different host architecture.  That is because automake
 6092: @c currently has no way to build @code{ansi2knr} for the build machine.
 6093: @c 
 6094: 自動的なde-ANSI-ficationは,パッケージが異なるホストアーキテクチャに対
 6095: するビルドでは動作しないことに注意してください.それは,ビルドマシンに
 6096: 対して@code{ansi2knr}をビルドする方法が,現在のautomakeには無いためで
 6097: す.
 6098: 
 6099: @c FIXME: this paragraph might be better moved to an `upgrading' section.
 6100: @cindex @code{LTLIBOBJS} and @code{ansi2knr}
 6101: @cindex @code{LIBOBJS} and @code{ansi2knr}
 6102: @cindex @code{ansi2knr} and @code{LTLIBOBJS}
 6103: @cindex @code{ansi2knr} and @code{LIBOBJS}
 6104: @c Using @code{LIBOBJS} with source de-ANSI-fication used to require
 6105: @c hand-crafted code in @file{configure} to append @code{$U} to basenames
 6106: @c in @code{LIBOBJS}.  This is no longer true today.  Starting with version
 6107: @c 2.54, Autoconf takes care of rewriting @code{LIBOBJS} and
 6108: @c @code{LTLIBOBJS}.  (@pxref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ}
 6109: @c vs. @code{LIBOBJS}, autoconf, The Autoconf Manual})
 6110: @c 
 6111: ソースのde-ANSI-ficationで@code{LIBOBJS}を使用すると,@file{configure} 
 6112: の@code{LIBOBJS}のbasenameに@code{$U}を手動で追加する必要がありました.
 6113: 現在ではそうではありません.バージョン2.54から,Autoconfは
 6114: @code{LIBOBJS}と@code{LTLIBOBJS}を注意深く書き換えています.
 6115: (@pxref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs. @code{LIBOBJS},
 6116: autoconf, The Autoconf Manual})
 6117: 
 6118: 
 6119: @node Dependencies
 6120: @c @section Automatic dependency tracking
 6121: @section 自動的な依存性追跡
 6122: 
 6123: @c As a developer it is often painful to continually update the
 6124: @c @file{Makefile.in} whenever the include-file dependencies change in a
 6125: @c project.  Automake supplies a way to automatically track dependency
 6126: @c changes.
 6127: @c 
 6128: プロジェクトで,インクルードファイルの依存性が変化するときはいつでも,
 6129: 絶えず@file{Makefile.in}を更新することは開発者として辛いことも多いもの
 6130: です.Automakeは自動的に依存性の変更を追跡する方法を提供しています.
 6131: 
 6132: @cindex Dependency tracking
 6133: @cindex Automatic dependency tracking
 6134: 
 6135: @c Automake always uses complete dependencies for a compilation, including
 6136: @c system headers.  Automake's model is that dependency computation should
 6137: @c be a side effect of the build.  To this end, dependencies are computed
 6138: @c by running all compilations through a special wrapper program called
 6139: @c @code{depcomp}.  @code{depcomp} understands how to coax many different C
 6140: @c and C++ compilers into generating dependency information in the format
 6141: @c it requires.  @code{automake -a} will install @code{depcomp} into your
 6142: @c source tree for you.  If @code{depcomp} can't figure out how to properly
 6143: @c invoke your compiler, dependency tracking will simply be disabled for
 6144: @c your build.
 6145: @c 
 6146: Automakeは常に,システムヘッダを含むコンパイルに対する完全な依存性を使
 6147: 用します.Automakeのモデルは,依存性の評価がビルドの副作用になるという
 6148: ものです.つまり依存性は,@code{depcomp}と呼ばれる特別なラッパプログラ
 6149: ムを通じてすべてのコンパイルを実行することで求められます.
 6150: @code{depcomp}は,多くの異なるCとC++コンパイラで,それが要求する書式で
 6151: 依存情報の生成させるように上手に扱う方法を理解してます.@code{automake
 6152: -a}で,@code{depcomp}をソースツリーにインストールします.
 6153: @code{depcomp}がコンパイラの正しい呼び出し方が分からない場合,依存性の
 6154: 追跡はビルドで利用不可能になるだけです.
 6155: 
 6156: @cindex depcomp
 6157: 
 6158: @c Experience with earlier versions of Automake @footnote{See
 6159: @c @uref{http://sources.redhat.com/automake/dependencies.html} for more
 6160: @c information on the history and experiences with automatic dependency
 6161: @c tracking in Automake} taught us that it is not reliable to generate
 6162: @c dependencies only on the maintainer's system, as configurations vary too
 6163: @c much.  So instead Automake implements dependency tracking at build time.
 6164: @c 
 6165: これまでのバージョンのAutomakeの経験上@footnote{Automakeでの自動的な依
 6166: 存性の追跡に関する歴史と経験についての情報は,
 6167: @uref{http://sources.redhat.com/automake/dependencies.html}を参照して
 6168: ください.},configureが非常に多くなるにつれ,管理者のシステムでのみ生
 6169: 成される依存性が信頼できないことを我々に教えてくれました.そのため,
 6170: Automake はビルド時に依存性を追跡することをその代わりに実装しました.
 6171: 
 6172: @c Automatic dependency tracking can be suppressed by putting
 6173: @c @code{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}, or
 6174: @c passing @code{no-dependencies} as an argument to @code{AM_INIT_AUTOMAKE}
 6175: @c (this should be the preferred way).  Or, you can invoke @code{automake}
 6176: @c with the @code{-i} option.  Dependency tracking is enabled by default.
 6177: @c 
 6178: 自動的な依存性の追跡で,変数@code{AUTOMAKE_OPTIONS}に
 6179: @code{no-dependencies}を書くことや,@code{AM_INIT_AUTOMAKE}への引数と
 6180: して@code{no-dependencies}を渡すこと(これは推奨されるべき方法です)が無
 6181: くなるはずです.そうしない場合は,@code{automake}を@code{-i}オプション
 6182: を用いて呼び出してください.依存性の追跡はデフォルトで利用可能です.
 6183: 
 6184: @vindex AUTOMAKE_OPTIONS
 6185: @opindex no-dependencies
 6186: 
 6187: @c The person building your package also can choose to disable dependency
 6188: @c tracking by configuring with @code{--disable-dependency-tracking}.
 6189: @c 
 6190: パッケージを構築している人々も,@code{--disable-dependency-tracking}を
 6191: 用いてconfigureすることで,依存性の追跡を利用不可能にすることを選択す
 6192: ることが可能です.
 6193: 
 6194: @cindex Disabling dependency tracking
 6195: @cindex Dependency tracking, disabling
 6196: 
 6197: 
 6198: @node EXEEXT
 6199: @c @section Support for executable extensions
 6200: @section 実行形式の拡張子のサポート
 6201: 
 6202: @cindex Executable extension
 6203: @cindex Extension, executable
 6204: @cindex Windows
 6205: 
 6206: @c On some platforms, such as Windows, executables are expected to have an
 6207: @c extension such as @samp{.exe}.  On these platforms, some compilers (GCC
 6208: @c among them) will automatically generate @file{foo.exe} when asked to
 6209: @c generate @file{foo}.
 6210: @c 
 6211: プラットフォームによっては,Windowsのように実行形式が@samp{.exe}のよう
 6212: な拡張子を持つことを期待するものもあります.これらのプラットフォームで
 6213: は,(GCCを含む)コンパイラは,@file{foo}を生成するように依頼されるとき,
 6214: 自動的に@file{foo.exe}を生成します.
 6215: 
 6216: @c Automake provides mostly-transparent support for this.  Unfortunately
 6217: @c @emph{mostly} doesn't yet mean @emph{fully}.  Until the English
 6218: @c dictionary is revised, you will have to assist Automake if your package
 6219: @c must support those platforms.
 6220: @c 
 6221: Automakeは,これに対するほとんどの変換でサポートを提供します.残念なが
 6222: ら@emph{ほとんど}とは完全ではないということです.英語の辞書では反対に
 6223: なりますが,パッケージをこれらのプラットフォームでサポートされるように
 6224: したい場合,Automakeを補助する必要があります.
 6225: 
 6226: @c One thing you must be aware of is that, internally, Automake rewrites
 6227: @c something like this:
 6228: @c 
 6229: 気付いていると思われることの一つは,Automakeが以下のような内容に内部で
 6230: 書き直すことです.
 6231: 
 6232: @example
 6233: bin_PROGRAMS = liver
 6234: @end example
 6235: 
 6236: @c to this:
 6237: @c 
 6238: これを以下のようにします.
 6239: 
 6240: @example
 6241: bin_PROGRAMS = liver$(EXEEXT)
 6242: @end example
 6243: 
 6244: @c The targets Automake generates are likewise given the @samp{$(EXEEXT)}
 6245: @c extension.  @code{EXEEXT}
 6246: @c 
 6247: Automakeが生成するターゲットは,@samp{$(EXEEXT)}拡張子が与えられたもの
 6248: になります.@code{EXEEXT}
 6249: 
 6250: @c However, Automake cannot apply this rewriting to @code{configure}
 6251: @c substitutions.  This means that if you are conditionally building a
 6252: @c program using such a substitution, then your @file{configure.ac} must
 6253: @c take care to add @samp{$(EXEEXT)} when constructing the output variable.
 6254: @c 
 6255: しかし,Automakeがこの書き換えを@code{configure}の置換式に適用すること
 6256: は不可能です.そのような置換式を使用しているプログラムを条件付きでビル
 6257: ドしている場合,出力変数を作成しているときに@file{configure.ac}に
 6258: @samp{$(EXEEXT)}を注意して加えるようにする必要があるということを,これ
 6259: は意味します.
 6260: 
 6261: @c With Autoconf 2.13 and earlier, you must explicitly use @code{AC_EXEEXT}
 6262: @c to get this support.  With Autoconf 2.50, @code{AC_EXEEXT} is run
 6263: @c automatically if you configure a compiler (say, through
 6264: @c @code{AC_PROG_CC}).
 6265: @c 
 6266: Autoconf 2.13とそれ以前のものを用いると,このサポートを得るために,明
 6267: 示的に@code{AC_EXEEXT}を使用する必要があります.Autoconf 2.50を用いる
 6268: と,コンパイラをconfigureする際に(すなわち@code{AC_PROG_CC}を通じて),
 6269: @code{AC_EXEEXT}が自動的に実行されます.
 6270: 
 6271: @c Sometimes maintainers like to write an explicit link rule for their
 6272: @c program.  Without executable extension support, this is easy---you
 6273: @c simply write a rule whose target is the name of the program.  However,
 6274: @c when executable extension support is enabled, you must instead add the
 6275: @c @samp{$(EXEEXT)} suffix.
 6276: @c 
 6277: それらのプログラムに対し,管理者が明示的にリンクルールを書きたいときも
 6278: あります.実行形式の拡張子サポートを用いなければ,これは簡単です --- 
 6279: ターゲットをプログラム名にしたルールを書くだけです.しかし,実行形式の
 6280: 拡張子のサポートが利用可能な時は,代わりに@samp{$(EXEEXT)}接尾辞を加え
 6281: る必要があります.
 6282: 
 6283: @c Unfortunately, due to the change in Autoconf 2.50, this means you must
 6284: @c always add this extension.  However, this is a problem for maintainers
 6285: @c who know their package will never run on a platform that has
 6286: @c executable extensions.  For those maintainers, the @code{no-exeext}
 6287: @c option (@pxref{Options}) will disable this feature.  This works in a
 6288: @c fairly ugly way; if @code{no-exeext} is seen, then the presence of a
 6289: @c rule for a target named @code{foo} in @file{Makefile.am} will override
 6290: @c an automake-generated rule for @code{foo$(EXEEXT)}.  Without
 6291: @c the @code{no-exeext} option, this use will give a diagnostic.
 6292: @c 
 6293: 残念ながら,Autoconf 2.50の変更のため,常にこの拡張子を加える必要があ
 6294: ることを,これは意味しています.しかし,パッケージが実行形式の拡張子を
 6295: 持つプラットフォームで実行されるはずがないことを知っている管理者にとっ
 6296: て,このことは問題になります.これらの管理者に対しては,
 6297: @code{no-exeext}オプション(@pxref{Options})でこの機能が利用不可能にな
 6298: ります.これは,かなり醜い方法で動作します.@code{no-exeext}が見つかっ
 6299: た場合,@file{Makefile.am}の@code{foo}という名前のターゲットに対するルー
 6300: ルが存在すると,automekeが生成する@code{foo$(EXEEXT)}に対するルールで
 6301: 上書きされます.@code{no-exeext}オプションが用いなければ,これでエラー
 6302: が生じます.
 6303: 
 6304: 
 6305: @node Other objects
 6306: @c @chapter Other Derived Objects
 6307: @chapter その他の派生されるオブジェクト
 6308: 
 6309: @c Automake can handle derived objects which are not C programs.  Sometimes
 6310: @c the support for actually building such objects must be explicitly
 6311: @c supplied, but Automake will still automatically handle installation and
 6312: @c distribution.
 6313: @c 
 6314: AutomakeはCプログラムではない派生されるオブジェクトを扱うことが可能で
 6315: す.このようなオブジェクトを実際にビルドするサポートを明示的に供給する
 6316: 必要があることもありますが,Automakeは自動的にインストールと配布物を扱
 6317: います.
 6318: 
 6319: @menu
 6320: * Scripts::                     Executable scripts
 6321: * Headers::                     Header files
 6322: * Data::                        Architecture-independent data files
 6323: * Sources::                     Derived sources
 6324: @end menu
 6325: 
 6326: 
 6327: @node Scripts
 6328: @c @section Executable Scripts
 6329: @section 実行可能なスクリプト
 6330: 
 6331: @cindex _SCRIPTS primary, defined
 6332: @cindex SCRIPTS primary, defined
 6333: @cindex Primary variable, SCRIPTS
 6334: 
 6335: @c It is possible to define and install programs which are scripts.  Such
 6336: @c programs are listed using the @samp{SCRIPTS} primary name.  Automake
 6337: @c doesn't define any dependencies for scripts; the @file{Makefile.am}
 6338: @c should include the appropriate rules.
 6339: @c 
 6340: スクリプトのプログラムを定義しインストールすることが可能です.そのよう
 6341: なプログラムは,@samp{SCRIPTS}プライマリを使用してリストアップします.
 6342: Automakeは,スクリプトに対する依存性の定義を全く行ないません.
 6343: @file{Makefile.am}に適切なルールを含ませるべきでしょう.
 6344: @vindex SCRIPTS
 6345: 
 6346: @c Automake does not assume that scripts are derived objects; such objects
 6347: @c must be deleted by hand (@pxref{Clean}).
 6348: @c 
 6349: Automakeはスクリプトがオブジェクトからの派生物であると想定しません.そ
 6350: のようなオブジェクトは手動で削除する必要があります(@pxref{Clean}).
 6351: 
 6352: @c The @code{automake} program itself is a Perl script that is generated
 6353: @c from @file{automake.in}.  Here is how this is handled:
 6354: @c 
 6355: @code{automake}プログラム自身は,@file{automake.in}から生成されるPerl 
 6356: スクリプトです.これを処理する方法は以下のようになります.
 6357: 
 6358: @example
 6359: bin_SCRIPTS = automake
 6360: CLEANFILES = $(bin_SCRIPTS)
 6361: 
 6362: do_subst = sed -e 's,[@@]datadir[@@],$(datadir),g' \
 6363:             -e 's,[@@]PERL[@@],$(PERL),g' \
 6364:             -e 's,[@@]PACKAGE[@@],$(PACKAGE),g' \
 6365:             -e 's,[@@]VERSION[@@],$(VERSION),g' \
 6366:             @dots{}
 6367: 
 6368: automake: automake.in Makefile
 6369:         $(do_subst) < $(srcdir)/automake.in > automake
 6370:         chmod +x automake
 6371: @end example
 6372: 
 6373: @c Because---as we have just seen---scripts can be built, they are not
 6374: @c distributed by default.  Scripts that should be distributed can be
 6375: @c specified using a @code{dist_} prefix as in other primaries.  For
 6376: @c instance the following @file{Makefile.am} declares that
 6377: @c @file{my_script} should be distributed and installed in
 6378: @c @code{$(sbindir)}.
 6379: @c 
 6380: 御覧のように --- スクリプトはビルド可能なので,デフォルトでは配布され
 6381: ません.配布されるべきスクリプトは,他のプライマリとして@code{dist_}プ
 6382: レフィクスを使用して指定することが可能です.例えば,以下の
 6383: @file{Makefile.am}では,@file{my_script}を配布し@code{$(sbindir)}にイ
 6384: ンストールするように宣言されています.
 6385: 
 6386: @example
 6387: dist_sbin_SCRIPTS = my_script
 6388: @end example
 6389: 
 6390: @cindex SCRIPTS, installation directories
 6391: @cindex Installing scripts
 6392: 
 6393: @vindex bin_SCRIPTS
 6394: @vindex sbin_SCRIPTS
 6395: @vindex libexec_SCRIPTS
 6396: @vindex pkgdata_SCRIPTS
 6397: @vindex noinst_SCRIPTS
 6398: @vindex check_SCRIPTS
 6399: 
 6400: @c Script objects can be installed in @code{bindir}, @code{sbindir},
 6401: @c @code{libexecdir}, or @code{pkgdatadir}.
 6402: @c 
 6403: スクリプトオブジェクトは@code{bindir},@code{sbindir},
 6404: @code{libexecdir},または@code{pkgdatadir}にインストールすることが可能
 6405: です.
 6406: 
 6407: @c Scripts that need not being installed can be listed in
 6408: @c @code{noinst_SCRIPTS}, and among them, those which are needed only by
 6409: @c @code{make check} should go in @code{check_SCRIPTS}.
 6410: @c 
 6411: インストールする必要が無いスクリプトは@code{noinst_SCRIPTS}にリストアッ
 6412: プすることが可能で,その中で@code{make check}だけで必要なものは
 6413: @code{check_SCRIPTS}に書くべきです.
 6414: 
 6415: 
 6416: @node Headers
 6417: @c @section Header files
 6418: @section ヘッダファイル
 6419: 
 6420: @cindex _HEADERS primary, defined
 6421: @cindex HEADERS primary, defined
 6422: @cindex Primary variable, HEADERS
 6423: 
 6424: @vindex noinst_HEADERS
 6425: 
 6426: @c Header files are specified by the @samp{HEADERS} family of variables.
 6427: @c Generally header files are not installed, so the @code{noinst_HEADERS}
 6428: @c variable will be the most used.  @footnote{However, for the case of a
 6429: @c non-installed header file that is actually used by a particular program,
 6430: @c we recommend listing it in the program's @samp{_SOURCES} variable
 6431: @c instead of in @code{noinst_HEADERS}.  We believe this is more clear.}
 6432: @c 
 6433: ヘッダファイルは,@samp{HEADERS}等の変数で指定します.ヘッダファイルは
 6434: 通常インストールされないので,@code{noinst_HEADERS}変数が最も多く使用
 6435: されます.@footnote{しかし,実際に特定のプログラムで使用されるがインス
 6436: トールされないヘッダファイルに対しては,@code{noinst_HEADERS}の代わり
 6437: に,プログラムの@samp{_SOURCES}変数でリストアップすることを推奨します.
 6438: これがより明白だと信じています.}
 6439: @vindex HEADERS
 6440: 
 6441: @c All header files must be listed somewhere; missing ones will not appear
 6442: @c in the distribution.  Often it is clearest to list uninstalled headers
 6443: @c with the rest of the sources for a program.  @xref{A Program}.  Headers
 6444: @c listed in a @samp{_SOURCES} variable need not be listed in any
 6445: @c @samp{_HEADERS} variable.
 6446: @c 
 6447: すべてのヘッダファイルは,どこかにリストアップする必要があります.行方
 6448: 不明のものは配布物に含まれません.プログラムのソースの残りにインストー
 6449: ルしないヘッダをリストアップすることが,最も分かり易くなることが多いで
 6450: す.@xref{A Program}.  @samp{_SOURCES}変数でリストアップされているヘッ
 6451: ダを,@samp{_HEADERS}変数でリストアップする必要はありません.
 6452: 
 6453: @cindex HEADERS, installation directories
 6454: @cindex Installing headers
 6455: 
 6456: @vindex include_HEADERS
 6457: @vindex oldinclude_HEADERS
 6458: @vindex pkginclude_HEADERS
 6459: 
 6460: @c Headers can be installed in @code{includedir}, @code{oldincludedir}, or
 6461: @c @code{pkgincludedir}.
 6462: @c 
 6463: ヘッダは@code{includedir},@code{oldincludedir},または
 6464: @code{pkgincludedir}にインストールすることが可能です.
 6465: 
 6466: 
 6467: @node Data
 6468: @c @section Architecture-independent data files
 6469: @section アーキテクチャ非依存のデータファイル
 6470: 
 6471: @cindex _DATA primary, defined
 6472: @cindex DATA primary, defined
 6473: @cindex Primary variable, DATA
 6474: 
 6475: @c Automake supports the installation of miscellaneous data files using the
 6476: @c @samp{DATA} family of variables.
 6477: @c 
 6478: Automakeは,@samp{DATA}等の変数を使用して様々なデータファイルのインス
 6479: トールをサポートします.
 6480: @vindex DATA
 6481: 
 6482: @vindex data_DATA
 6483: @vindex sysconf_DATA
 6484: @vindex sharedstate_DATA
 6485: @vindex localstate_DATA
 6486: @vindex pkgdata_DATA
 6487: 
 6488: @c Such data can be installed in the directories @code{datadir},
 6489: @c @code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
 6490: @c @code{pkgdatadir}.
 6491: @c 
 6492: そのようなデータは,ディレクトリ@code{datadir},@code{sysconfdir},
 6493: @code{sharedstatedir},@code{localstatedir},または@code{pkgdatadir}に
 6494: インストールすること可能です.
 6495: 
 6496: @c By default, data files are @emph{not} included in a distribution.  Of
 6497: @c course, you can use the @samp{dist_} prefix to change this on a
 6498: @c per-variable basis.
 6499: @c 
 6500: デフォルトで,データファイルは配布物に含まれ@emph{ません}.もちろん,
 6501: @samp{dist_}接頭辞を使用することで,変数ごとにこの(デフォルト動作)を変
 6502: 更することが可能です.
 6503: 
 6504: @c Here is how Automake declares its auxiliary data files:
 6505: @c 
 6506: Automakeでその補助データファイルを宣言する方法は,以下のとおりです.
 6507: 
 6508: @example
 6509: dist_pkgdata_DATA = clean-kr.am clean.am @dots{}
 6510: @end example
 6511: 
 6512: 
 6513: @node Sources
 6514: @c @section Built sources
 6515: @section ビルドされているソース
 6516: 
 6517: @c Because Automake's automatic dependency tracking works as a side-effect
 6518: @c of compilation (@pxref{Dependencies}) there is a bootstrap issue: a
 6519: @c target should not be compiled before its dependencies are made, but
 6520: @c these dependencies are unknown until the target is first compiled.
 6521: @c 
 6522: Automakeの自動的な依存性追跡は,コンパイルの副作用として働くので
 6523: (@pxref{Dependencies}),ブートストラップで問題があります.ターゲットは,
 6524: 依存性が作成されるまでコンパイルされるべきではありませんが,これらの依
 6525: 存性は最初にコンパイルされるまで知ることができません.
 6526: 
 6527: @c Ordinarily this is not a problem, because dependencies are distributed
 6528: @c sources: they preexist and do not need to be built.  Suppose that
 6529: @c @file{foo.c} includes @file{foo.h}.  When it first compiles
 6530: @c @file{foo.o}, @command{make} only knows that @file{foo.o} depends on
 6531: @c @file{foo.c}.  As a side-effect of this compilation @code{depcomp}
 6532: @c records the @file{foo.h} dependency so that following invocations of
 6533: @c @command{make} will honor it.  In these conditions, it's clear there is
 6534: @c no problem: either @file{foo.o} doesn't exist and has to be built
 6535: @c (regardless of the dependencies), either accurate dependencies exist and
 6536: @c they can be used to decide whether @file{foo.o} should be rebuilt.
 6537: @c 
 6538: 通常,依存性は配布されているソースにあるので,これは問題になりません.
 6539: それらは既に存在し,ビルドする必要はありません.@file{foo.c}が
 6540: @file{foo.h}をインクルードしていると仮定します.最初に@file{foo.o}にコ
 6541: ンパイルするとき,@command{make}は@file{foo.o}が@file{foo.c}に依存する
 6542: ことを知っています.このコンパイルの副作用として,それ以降の
 6543: @command{make}の呼び出しで尊重されるように,@code{depcomp}が
 6544: @file{foo.h}の依存性を記録します.この条件では,問題がないことが明らか
 6545: です.つまり,@file{foo.o}が存在せずビルドされていない(依存性には影響
 6546: されない),または,正確な依存性が存在し@file{foo.o}をリビルドすべきか
 6547: どうかを決定するために使用することが可能であるという,いずれかの状態に
 6548: なっています.
 6549: 
 6550: @c It's a different story if @file{foo.h} doesn't exist by the first
 6551: @c @command{make} run.  For instance there might be a rule to build
 6552: @c @file{foo.h}.  This time @file{file.o}'s build will fail because the
 6553: @c compiler can't find @file{foo.h}. @command{make} failed to trigger the
 6554: @c rule to build @file{foo.h} first by lack of dependency information.
 6555: @c 
 6556: 最初に@command{make}を実行するとき@file{foo.h}が存在しない場合は,別の
 6557: 話になります.例えば,@file{foo.h}をビルドするルールがあると仮定します.
 6558: このとき,コンパイラが@file{foo.h}を見つけることができないので,
 6559: @file{file.o}のビルドは失敗します.@command{make}は,依存性の情報が足
 6560: りないため,最初に@file{foo.h}をビルドするルールを開始することができま
 6561: せん.
 6562: 
 6563: @vindex BUILT_SOURCES
 6564: @cindex BUILT_SOURCES, defined
 6565: 
 6566: @c The @code{BUILT_SOURCES} variable is a workaround for this problem.  A
 6567: @c source file listed in @code{BUILT_SOURCES} is made on @code{make all}
 6568: @c or @code{make check} (or even @code{make install}) before other
 6569: @c targets are processed.  However, such a source file is not
 6570: @c @emph{compiled} unless explicitly requested by mentioning it in some
 6571: @c other @samp{_SOURCES} variable.
 6572: @c 
 6573: @code{BUILT_SOURCES}変数でこの問題を回避します.@code{BUILT_SOURCES}で
 6574: リストアップされているファイルは,他のターゲットを処理する前に,
 6575: @code{make all}や@code{make check}(または,@code{make install}でも)作
 6576: 成されます.しかし,そのようなソースファイルは,明示的に他の
 6577: @samp{_SOURCES}で記述し,要求していない限り@emph{コンパイル}されません.
 6578: 
 6579: @c So, to conclude our introductory example, we could use
 6580: @c @code{BUILT_SOURCES = foo.h} to ensure @file{foo.h} gets built before
 6581: @c any other target (including @file{foo.o}) during @code{make all} or
 6582: @c @code{make check}.
 6583: @c 
 6584: このため,導入する例を決定するため,@code{make all}や@code{make check} 
 6585: で(@file{foo.o}を含む)他のターゲットをビルドする前に@file{foo.h}を確実
 6586: に入手できるよう,@code{BUILT_SOURCES = foo.h}を使用します.
 6587: 
 6588: @c @code{BUILT_SOURCES} is actually a bit of a misnomer, as any file which
 6589: @c must be created early in the build process can be listed in this
 6590: @c variable.  Moreover, all built sources do not necessarily have to be
 6591: @c listed in @code{BUILT_SOURCES}.  For instance a generated @file{.c} file
 6592: @c doesn't need to appear in @code{BUILT_SOURCES} (unless it is included by
 6593: @c another source), because it's a known dependency of the associated
 6594: @c object.
 6595: @c 
 6596: ビルドプロセスの初期に作成する必要があるファイルは,この変数でリストアッ
 6597: プすることが可能なので,@code{BUILT_SOURCES}は実際にはちょっと誤った名
 6598: 称です.さらに,ビルドされたすべてのソースを,@code{BUILT_SOURCES}にリ
 6599: ストアップする必要はありません.例えば,生成される@file{.c}ファイルは,
 6600: 関連するオブジェクトへの依存性を知っているので,(他のソースからインク
 6601: ルードされない限り)@code{BUILT_SOURCES}に書く必要はありません.
 6602: 
 6603: @c It might be important to emphasize that @code{BUILT_SOURCES} is
 6604: @c honored only by @code{make all}, @code{make check} and @code{make
 6605: @c install}.  This means you cannot build a specific target (e.g.,
 6606: @c @code{make foo}) in a clean tree if it depends on a built source.
 6607: @c However it will succeed if you have run @code{make all} earlier,
 6608: @c because accurate dependencies are already available.
 6609: @c 
 6610: @code{BUILT_SOURCES}は@code{make all},@code{make check},そして
 6611: @code{make install}だけを尊重するということを強調しておくのが重要かも
 6612: しれません.これは,指定したターゲット(例えば,@code{make foo})が,ビ
 6613: ルドソースで依存されていない場合,クリーンなツリーではビルドできないこ
 6614: とを意味します.しかし,その前に@code{make all}を実行している場合,依
 6615: 存性が既に利用可能なように求まっているので,成功します.
 6616: 
 6617: @c The next section illustrates and discusses the handling of built sources
 6618: @c on a toy example.
 6619: @c 
 6620: 次のセクションでは,ビルドされているソースを処理する簡単な例を説明し,
 6621: 議論していきます.
 6622: 
 6623: @menu
 6624: * Built sources example::       Several ways to handle built sources.
 6625: @end menu
 6626: 
 6627: @node Built sources example
 6628: @c @subsection Built sources example
 6629: @subsection ビルドされているべきソースの例
 6630: 
 6631: @c Suppose that @file{foo.c} includes @file{bindir.h}, which is
 6632: @c installation-dependent and not distributed: it needs to be built.  Here
 6633: @c @file{bindir.h} defines the preprocessor macro @code{bindir} to the
 6634: @c value of the @command{make} variable @code{bindir} (inherited from
 6635: @c @file{configure}).
 6636: @c 
 6637: インストールに依存していて,配布には依存していない@file{bindir.h}をイ
 6638: ンクルードしている@file{foo.c}を仮定します.それはビルドで要求されます.
 6639: ここで,@file{bindir.h}は,(@file{configure}から継承される)
 6640: @command{make}変数@code{bindir}の値をもつプリプロセッサマクロ
 6641: @code{bindir}を定義しています,
 6642: 
 6643: @c We suggest several implementations below.  It's not meant to be an
 6644: @c exhaustive listing of all ways to handle built sources, but it will give
 6645: @c you a few ideas if you encounter this issue.
 6646: @c 
 6647: 我々は以下の実装を提案します.ビルドされているソースを処理するすべての
 6648: 方法のリストを網羅していませんが,この問題に遭遇した場合,ちょっとした
 6649: アイデアにはなるでしょう.
 6650: 
 6651: @c @unnumberedsubsec First try
 6652: @unnumberedsubsec 最初の試み
 6653: 
 6654: @c This first implementation will illustrate the bootstrap issue mentioned
 6655: @c in the previous section (@pxref{Sources}).
 6656: @c 
 6657: 最初の実装は,前のセクションのブートストラップの問題を説明します
 6658: (@pxref{Sources}).
 6659: 
 6660: @c Here is a tentative @file{Makefile.am}.
 6661: @c 
 6662: 以下は,試験的な@file{Makefile.am}です.
 6663: 
 6664: @example
 6665: # This won't work.
 6666: bin_PROGRAMS = foo
 6667: foo_SOURCES = foo.c
 6668: nodist_foo_SOURCES = bindir.h
 6669: CLEANFILES = bindir.h
 6670: bindir.h: Makefile
 6671:         echo '#define bindir "$(bindir)"' >$@@
 6672: @end example
 6673: 
 6674: @c This setup doesn't work, because Automake doesn't know that @file{foo.c}
 6675: @c includes @file{bindir.h}.  Remember, automatic dependency tracking works
 6676: @c as a side-effect of compilation, so the dependencies of @file{foo.o} will
 6677: @c be known only after @file{foo.o} has been compiled (@pxref{Dependencies}).
 6678: @c The symptom is as follows.
 6679: @c 
 6680: Automakeは,@file{foo.c}が@file{bindir.h}をインクルードすることを知ら
 6681: ないので,この設定では動作しません.自動的な依存性の追跡はコンパイルの
 6682: 副作用として動作するので,@file{foo.o}の依存性は,@file{foo.o}がコンパ
 6683: イルされた後になって判明すること(@pxref{Dependencies})を覚えておいて下
 6684: さい.症状は以下のようになります.
 6685: 
 6686: @example
 6687: % make
 6688: source='foo.c' object='foo.o' libtool=no \
 6689: depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
 6690: depmode=gcc /bin/sh ./depcomp \
 6691: gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
 6692: foo.c:2: bindir.h: No such file or directory
 6693: make: *** [foo.o] Error 1
 6694: @end example
 6695: 
 6696: @c @unnumberedsubsec Using @code{BUILT_SOURCES}
 6697: @unnumberedsubsec @code{BUILT_SOURCES}の使用
 6698: 
 6699: @c A solution is to require @file{bindir.h} to be built before anything
 6700: @c else.  This is what @code{BUILT_SOURCES} is meant for (@pxref{Sources}).
 6701: @c 
 6702: 解決方法は,他のものをビルドする前に@file{bindir.h}をビルドすることを
 6703: 要求することです.これこそが,@code{BUILT_SOURCES}が意味することです
 6704: (@pxref{Sources}).
 6705: 
 6706: @example
 6707: bin_PROGRAMS = foo
 6708: foo_SOURCES = foo.c
 6709: BUILT_SOURCES = bindir.h
 6710: CLEANFILES = bindir.h
 6711: bindir.h: Makefile
 6712:         echo '#define bindir "$(bindir)"' >$@@
 6713: @end example
 6714: 
 6715: @c See how @file{bindir.h} get built first:
 6716: @c 
 6717: @file{bindir.h}が最初にビルドされる様子を見て下さい.
 6718: 
 6719: @example
 6720: % make
 6721: echo '#define bindir "/usr/local/bin"' >bindir.h
 6722: make  all-am
 6723: make[1]: Entering directory `/home/adl/tmp'
 6724: source='foo.c' object='foo.o' libtool=no \
 6725: depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
 6726: depmode=gcc /bin/sh ./depcomp \
 6727: gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
 6728: gcc  -g -O2   -o foo  foo.o
 6729: make[1]: Leaving directory `/home/adl/tmp'
 6730: @end example
 6731: 
 6732: @c However, as said earlier, @code{BUILT_SOURCES} applies only to the
 6733: @c @code{all}, @code{check}, and @code{install} targets.  It still fails
 6734: @c if you try to run @code{make foo} explicitly:
 6735: @c 
 6736: しかし,以前にいったように,@code{BUILT_SOURCES}は@code{all},
 6737: @code{check},そして@code{install}ターゲットだけにしか適用されません.
 6738: これでは,@code{make foo}を明示的に実行すると失敗します.
 6739: 
 6740: @example
 6741: % make clean
 6742: test -z "bindir.h" || rm -f bindir.h
 6743: test -z "foo" || rm -f foo
 6744: rm -f *.o
 6745: % : > .deps/foo.Po # Suppress previously recorded dependencies
 6746: % make foo
 6747: source='foo.c' object='foo.o' libtool=no \
 6748: depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
 6749: depmode=gcc /bin/sh ./depcomp \
 6750: gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
 6751: foo.c:2: bindir.h: No such file or directory
 6752: make: *** [foo.o] Error 1
 6753: @end example
 6754: 
 6755: @c @unnumberedsubsec Recording dependencies manually
 6756: @unnumberedsubsec 依存性の手動保存
 6757: 
 6758: @c Usually people are happy enough with @code{BUILT_SOURCES} because they
 6759: @c never build targets such as @code{make foo} before @code{make all}, as
 6760: @c in the previous example.  However if this matters to you, you can
 6761: @c avoid @code{BUILT_SOURCES} and record such dependencies explicitly in
 6762: @c the @file{Makefile.am}.
 6763: @c 
 6764: 通常,@code{make all}の前に@code{make foo}にようにターゲットをビルドす
 6765: ることはないので,前回の例のように@code{BUILT_SOURCES}で十分幸せになれ
 6766: ます.しかし,これで問題がある場合,@code{BUILT_SOURCES}を避け,
 6767: @file{Makefile.am}に明示的にそのような依存性を記録することが可能です.
 6768: 
 6769: @example
 6770: bin_PROGRAMS = foo
 6771: foo_SOURCES = foo.c
 6772: foo.$(OBJEXT): bindir.h
 6773: CLEANFILES = bindir.h
 6774: bindir.h: Makefile
 6775:         echo '#define bindir "$(bindir)"' >$@@
 6776: @end example
 6777: 
 6778: @c You don't have to list @emph{all} the dependencies of @code{foo.o}
 6779: @c explicitly, only those which might need to be built.  If a dependency
 6780: @c already exists, it will not hinder the first compilation and will be
 6781: @c recorded by the normal dependency tracking code.  (Note that after this
 6782: @c first compilation the dependency tracking code will also have recorded
 6783: @c the dependency between @code{foo.o} and @code{bindir.h}; so our explicit
 6784: @c dependency is really useful to the first build only.)
 6785: @c 
 6786: @code{foo.o}の@emph{すべての}依存性をリストアップする必要はなく,ビル
 6787: ドに必要なものだけをリストアップします.依存性が既に存在する場合,最初
 6788: のコンパイルは邪魔をせず,通常の依存性の追跡コードが記録されます.(こ
 6789: の最初のコンパイルの後の依存性の追跡コードも,@code{foo.o}と
 6790: @code{bindir.h}の間に記録されることに注意して下さい.そのため,明示的
 6791: な依存性は最初のビルドだけで実際に役に立ちます.)
 6792: 
 6793: @c Adding explicit dependencies like this can be a bit dangerous if you are
 6794: @c not careful enough.  This is due to the way Automake tries not to
 6795: @c overwrite your rules (it assumes you know better than it).
 6796: @c @code{foo.$(OBJEXT): bindir.h} supersedes any rule Automake may want to
 6797: @c output to build @code{foo.$(OBJEXT)}.  It happens to work in this case
 6798: @c because Automake doesn't have to output any @code{foo.$(OBJEXT):}
 6799: @c target: it relies on a suffix rule instead (i.e., @code{.c.$(OBJEXT):}).
 6800: @c Always check the generated @file{Makefile.in} if you do this.
 6801: @c 
 6802: このような明示的な依存性を追加することで,十分に注意しておかないとちょっ
 6803: と危険なことになります.これはAutomakeがルールを上書きしようとしないこ
 6804: とに由来します(おそらく,より良いものを知っているでしょう).
 6805: @code{foo.$(OBJEXT): bindir.h}で,@code{foo.$(OBJEXT)}をビルドするため
 6806: に出力しようとするAutomakeのルールを置き換えます.この状況では,
 6807: Automakeは@code{foo.$(OBJEXT):}ターゲットを出力する必要がないので偶然
 6808: 動作します.それは,代わりにサフィックスルールに関連します(すなわち
 6809: @code{.c.$(OBJEXT):}).こうする場合は,常に生成される
 6810: @file{Makefile.in}を調査して下さい.
 6811: 
 6812: @c @unnumberedsubsec Build @file{bindir.h} from @file{configure}
 6813: @unnumberedsubsec @file{configure}から@file{bindir.h}をビルド
 6814: 
 6815: @c It's possible to define this preprocessor macro from @file{configure},
 6816: @c either in @file{config.h} (@pxref{Defining Directories, , Defining
 6817: @c Directories, autoconf, The Autoconf Manual}), or by processing a
 6818: @c @file{bindir.h.in} file using @code{AC_CONFIG_FILES}
 6819: @c (@pxref{Configuration Actions, ,Configuration Actions, autoconf, The
 6820: @c Autoconf Manual}).
 6821: @c 
 6822: プリプロセッサマクロを@file{configure}から,
 6823: @file{config.h}(@pxref{Defining Directories, , Defining Directories,
 6824: autoconf, The Autoconf Manual}),または@code{AC_CONFIG_FILES}を使用し
 6825: て@file{bindir.h.in}で(@pxref{Configuration Actions, ,Configuration
 6826: Actions, autoconf, The Autoconf Manual})定義することも可能です.
 6827: 
 6828: @c At this point it should be clear that building @file{bindir.h} from
 6829: @c @file{configure} work well for this example.  @file{bindir.h} will exist
 6830: @c before you build any target, hence will not cause any dependency issue.
 6831: @c 
 6832: この時点で,@file{configure}から@file{bindir.h}がビルドされることが明
 6833: 確になり,この例はうまく動作します.@file{bindir.h}はターゲットをビル
 6834: ドする前に存在しているので,依存性の問題は生じません.
 6835: 
 6836: @c The Makefile can be shrunk as follows.  We do not even have to mention
 6837: @c @file{bindir.h}.
 6838: @c 
 6839: Makefileは以下のように短くなります.@file{bindir.h}を記述する必要さえ
 6840: ありません.
 6841: 
 6842: @example
 6843: bin_PROGRAMS = foo
 6844: foo_SOURCES = foo.c
 6845: @end example
 6846: 
 6847: @c However, it's not always possible to build sources from
 6848: @c @file{configure}, especially when these sources are generated by a tool
 6849: @c that needs to be built first...
 6850: @c 
 6851: しかし,@file{configure}からソースをビルドすることが常に可能だというわ
 6852: けではなく,特に,これらのソースが最初にビルドされるツールから生成され
 6853: るときがそうなります@enddots{}
 6854: 
 6855: @c @unnumberedsubsec Build @file{bindir.c}, not @file{bindir.h}.
 6856: @unnumberedsubsec @file{bindir.h}ではなく@file{bindir.c}をビルド
 6857: 
 6858: @c Another attractive idea is to define @code{bindir} as a variable or
 6859: @c function exported from @file{bindir.o}, and build @file{bindir.c}
 6860: @c instead of @file{bindir.h}.
 6861: @c 
 6862: もう一つの魅力的な考えは,@code{bindir}を@file{bindir.o}からエクスポー
 6863: トする変数や関数として定義し,@file{bindir.h}の代わりに@file{bindir.c} 
 6864: をビルドする方法です.
 6865: 
 6866: @example
 6867: noinst_PROGRAMS = foo
 6868: foo_SOURCES = foo.c bindir.h
 6869: nodist_foo_SOURCES = bindir.c
 6870: CLEANFILES = bindir.c
 6871: bindir.c: Makefile
 6872:         echo 'const char bindir[] = "$(bindir)";' >$@
 6873: @end example
 6874: 
 6875: @c @file{bindir.h} contains just the variable's declaration and doesn't
 6876: @c need to be built, so it won't cause any trouble.  @file{bindir.o} is
 6877: @c always dependent on @file{bindir.c}, so @file{bindir.c} will get built
 6878: @c first.
 6879: @c 
 6880: @file{bindir.h}には,宣言された変数だけが含まれていて,ビルドする必要
 6881: がないため,問題になることはありません.@file{bindir.o}は,常に
 6882: @file{bindir.c}に依存するので,@file{bindir.c}は最初にビルドされます.
 6883: 
 6884: @c @unnumberedsubsec Which is best?
 6885: @unnumberedsubsec 最善の方法は?
 6886: 
 6887: @c There is no panacea, of course.  Each solution has its merits and
 6888: @c drawbacks.
 6889: @c 
 6890: もちろん万能薬はありません.それぞれの解決方法には長所と短所があります.
 6891: 
 6892: @c You cannot use @code{BUILT_SOURCES} if the ability to run @code{make
 6893: @c foo} on a clean tree is important to you.
 6894: @c 
 6895: クリーンなツリーで@code{make foo}を実行する能力が重要な場合,
 6896: @code{BUILT_SOURCES}を使用することは不可能です.
 6897: 
 6898: @c You won't add explicit dependencies if you are leery of overriding
 6899: @c an Automake rule by mistake.
 6900: @c 
 6901: Automakeのルールを間違ってオーバーライドしないように用心している場合,
 6902: 明示的に依存性を追加しないでしょう.
 6903: 
 6904: @c Building files from @file{./configure} is not always possible, neither
 6905: @c is converting @file{.h} files into @file{.c} files.
 6906: @c 
 6907: @file{./configure}からファイルをビルドしたり,@file{.h}ファイルを
 6908: @file{.c}ファイルに変換することは,常に可能だというわけではありません.
 6909: 
 6910: 
 6911: @node Other GNU Tools
 6912: @c @chapter Other GNU Tools
 6913: @chapter その他のGNUツール
 6914: 
 6915: @c Since Automake is primarily intended to generate @file{Makefile.in}s for
 6916: @c use in GNU programs, it tries hard to interoperate with other GNU tools.
 6917: @c 
 6918: Automakeは,GNUプログラムで使用する@file{Makefile.in}を生成することを
 6919: 主目的にしているので,他のGNUツールとの相互作用を試みます.
 6920: 
 6921: @menu
 6922: * Emacs Lisp::                  Emacs Lisp
 6923: * gettext::                     Gettext
 6924: * Libtool::                     Libtool
 6925: * Java::                        Java
 6926: * Python::                      Python
 6927: @end menu
 6928: 
 6929: 
 6930: @node Emacs Lisp
 6931: @section Emacs Lisp
 6932: 
 6933: @cindex _LISP primary, defined
 6934: @cindex LISP primary, defined
 6935: @cindex Primary variable, LISP
 6936: 
 6937: @vindex LISP
 6938: @vindex lisp_LISP
 6939: @vindex noinst_LISP
 6940: 
 6941: @c Automake provides some support for Emacs Lisp.  The @samp{LISP} primary
 6942: @c is used to hold a list of @file{.el} files.  Possible prefixes for this
 6943: @c primary are @samp{lisp_} and @samp{noinst_}.  Note that if
 6944: @c @code{lisp_LISP} is defined, then @file{configure.ac} must run
 6945: @c @code{AM_PATH_LISPDIR} (@pxref{Macros}).
 6946: @c 
 6947: Automakeは,Emacs Lispに対するサポートも供給します.@samp{LISP}プライ
 6948: マリは@file{.el}ファイルのリストを保持するために使用されます.このプラ
 6949: イマリに対して利用可能な接頭辞は@samp{lisp_}と@samp{noinst_}です.
 6950: @code{lisp_LISP}が定義されている場合,@file{configure.ac}で
 6951: @code{AM_PATH_LISPDIR}を実行する必要があります(@pxref{Macros}).
 6952: 
 6953: @c Automake will byte-compile all Emacs Lisp source files using the Emacs
 6954: @c found by @code{AM_PATH_LISPDIR}, if any was found.
 6955: @c 
 6956: AutomakeはすべてのEmacs Lispソースファイルを@code{AM_PATH_LISPDIR}で見
 6957: つかった場合はそのEmacsを使用してバイトコンパイルします.
 6958: 
 6959: @c Byte-compiled Emacs Lisp files are not portable among all versions of
 6960: @c Emacs, so it makes sense to turn this off if you expect sites to have
 6961: @c more than one version of Emacs installed.  Furthermore, many packages
 6962: @c don't actually benefit from byte-compilation.  Still, we recommend
 6963: @c that you byte-compile your Emacs Lisp sources.  It is probably better
 6964: @c for sites with strange setups to cope for themselves than to make the
 6965: @c installation less nice for everybody else.
 6966: @c 
 6967: バイトコンパイルされたEmacs Lispファイルは,すべてのEmacsのバージョン
 6968: の間で移植性があるわけではないので,一種類以上のEmacsバージョンをイン
 6969: ストールしているサイトがあることが予想される場合,これを止めることに意
 6970: 味があります.さらに,実際にはバイトコンパイルの利点がないパッケージも
 6971: 多くあります.しかし,我々はEmacs Lispソースをバイトコンパイルすること
 6972: を推奨します.恐らく,他の全員がインストールしなくてすむことより,それ
 6973: ぞれに対して対処するためにそれぞれ設定した方が良いでしょう.
 6974: 
 6975: @c There are two ways to avoid byte-compiling.  Historically, we have
 6976: @c recommended the following construct.
 6977: @c 
 6978: バイトコンパイルを避ける方法は二つあります.歴史的に,我々は以下の内容
 6979: を推奨していました.
 6980: @example
 6981: lisp_LISP = file1.el file2.el
 6982: ELCFILES =
 6983: @end example
 6984: @noindent
 6985: @c @code{ELCFILES} is an internal Automake variables that normally lists
 6986: @c all @file{.elc} files that must be byte-compiled.  Automake defines
 6987: @c @code{ELCFILES} automatically from @code{lisp_LISP}.  Emptying this
 6988: @c variables explicitly prevents byte-compilation to occur.
 6989: @c 
 6990: @code{ELCFILES}はAutomakeの内部変数で,通常はバイトコンパイルする必要
 6991: があるすべての@file{.elc}ファイルをリストアップしています.Automakeは
 6992: @code{lisp_LISP}から@code{ELCFILES}を自動的に定義します.この変数を明
 6993: 示的に空にしておくことで,バイトコンパイルを妨げます.
 6994: 
 6995: @c Since Automake 1.8, we now recommend using @code{lisp_DATA} instead.  As
 6996: @c in
 6997: @c 
 6998: Automake 1.8からは,我々は代わりに@code{lisp_DATA}を使用することを推奨
 6999: しています.以下のようにします.
 7000: @example
 7001: lisp_DATA = file1.el file2.el
 7002: @end example
 7003: 
 7004: @c Note that these two constructs are not equivalent.  @code{_LISP} will
 7005: @c not install a file if Emacs is not installed, while @code{_DATA} will
 7006: @c always install its files.
 7007: @c 
 7008: これら二つの内容が等価ではないことに注意して下さい.Emacsがインストー
 7009: ルされていない場合,@code{_LISP}ではそのファイルはインストールされませ
 7010: んが,@code{_DATA}ではそのファイルは常にインストールされます.
 7011: 
 7012: @node gettext
 7013: @section Gettext
 7014: 
 7015: @cindex GNU Gettext support
 7016: @cindex Gettext support
 7017: @cindex Support for GNU Gettext
 7018: 
 7019: @c If @code{AM_GNU_GETTEXT} is seen in @file{configure.ac}, then Automake
 7020: @c turns on support for GNU gettext, a message catalog system for
 7021: @c internationalization
 7022: @c (@pxref{GNU Gettext, , , gettext, GNU gettext utilities}).
 7023: @c 
 7024: @code{AM_GNU_GETTEXT}が@file{configure.ac}にある場合,Automakeは,国際
 7025: 化のためのメッセージカタログシステム,GNU gettextに対するサポートを開
 7026: 始します(@pxref{GNU Gettext, , , gettext, GNU gettext utilities}).
 7027: 
 7028: @c The @code{gettext} support in Automake requires the addition of two
 7029: @c subdirectories to the package, @file{intl} and @file{po}.  Automake
 7030: @c insures that these directories exist and are mentioned in
 7031: @c @code{SUBDIRS}.
 7032: @c 
 7033: Automakeでの@code{gettext}サポートには,パッケージに@file{intl}と
 7034: @file{po}の二つのサブディレクトリの追加が必要です.Automakeは,これら
 7035: のディレクトリが存在して@code{SUBDIRS}に書かれていることを保証します.
 7036: 
 7037: @vindex dist_lisp_LISP
 7038: @vindex dist_noinst_LISP
 7039: @c Lisp sources are not distributed by default.  You can prefix the
 7040: @c @code{LISP} primary with @code{dist_}, as in @code{dist_lisp_LISP} or
 7041: @c @code{dist_noinst_LISP}, to indicate that these files should be
 7042: @c distributed.
 7043: @c 
 7044: Lispソースはデフォルトで配布されません.これらのファイルを配布すること
 7045: を示すため,@code{dist_lisp_LISP}や@code{dist_noinst_LISP}のように,
 7046: @code{LISP}プライマリに@code{dist_}を前置することが可能です.
 7047: 
 7048: @node Libtool
 7049: @section Libtool
 7050: 
 7051: @c Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
 7052: @c libtool, The Libtool Manual}) with the @samp{LTLIBRARIES} primary.
 7053: @c @xref{A Shared Library}.
 7054: @c 
 7055: Automakeは,@samp{LTLIBRARIES}プライマリを用いることで,GNU
 7056: Libtool(@pxref{Top, , Introduction, libtool, The Libtool Manual})に対
 7057: するサポートを提供します.@xref{A Shared Library}.
 7058: 
 7059: 
 7060: @node Java
 7061: @section Java
 7062: 
 7063: @cindex _JAVA primary, defined
 7064: @cindex JAVA primary, defined
 7065: @cindex Primary variable, JAVA
 7066: 
 7067: @c Automake provides some minimal support for Java compilation with the
 7068: @c @samp{JAVA} primary.
 7069: @c 
 7070: Automakeは@samp{JAVA}プライマリを用いることで,Javaコンパイルに対する
 7071: 最低限のサポートも提供します.
 7072: 
 7073: @c Any @file{.java} files listed in a @samp{_JAVA} variable will be
 7074: @c compiled with @code{JAVAC} at build time.  By default, @file{.class}
 7075: @c files are not included in the distribution.
 7076: @c 
 7077: @samp{_JAVA}変数でリストアップされているすべての@file{.java}ファイルは,
 7078: ビルド時に@code{JAVAC}でコンパイルされます.デフォルトで,
 7079: @file{.class} ファイルは配布物に含められません.
 7080: 
 7081: @cindex JAVA restrictions
 7082: @cindex Restrictions for JAVA
 7083: 
 7084: @c Currently Automake enforces the restriction that only one @samp{_JAVA}
 7085: @c primary can be used in a given @file{Makefile.am}.  The reason for this
 7086: @c restriction is that, in general, it isn't possible to know which
 7087: @c @file{.class} files were generated from which @file{.java} files -- so
 7088: @c it would be impossible to know which files to install where.  For
 7089: @c instance, a @file{.java} file can define multiple classes; the resulting
 7090: @c @file{.class} file names cannot be predicted without parsing the
 7091: @c @file{.java} file.
 7092: @c 
 7093: 現在のAutomakeには,@samp{_JAVA}プライマリを@file{Makefile.am}で一つだ
 7094: けしか使用できないという制限があります.この制限の理由は,どの
 7095: @file{.java}ファイルからどの@file{.class}ファイルが生成されるのかが通
 7096: 常は分からないためです -- そのため,どこにどのファイルをインストールす
 7097: るのか分かりません.例えば,@file{.java}ファイルで複数のクラスを定義す
 7098: ることが可能です.結果として得られる@file{.class}ファイル名は,
 7099: @file{.java}ファイルをパースしない限り特定不可能です.
 7100: 
 7101: @c There are a few variables which are used when compiling Java sources:
 7102: @c 
 7103: Javaソースをコンパイルする時に使用される変数がいくつかあります.
 7104: 
 7105: @vtable @code
 7106: @item JAVAC
 7107: @c The name of the Java compiler.  This defaults to @samp{javac}.
 7108: @c 
 7109: Javaコンパイラの名前です.デフォルトは,@samp{javac}です.
 7110: 
 7111: @item JAVACFLAGS
 7112: @c The flags to pass to the compiler.  This is considered to be a user
 7113: @c variable (@pxref{User Variables}).
 7114: @c 
 7115: コンパイラに渡すフラグです.これは,ユーザ変数として考慮されます
 7116: (@pxref{User Variables}).
 7117: 
 7118: @item AM_JAVACFLAGS
 7119: @c More flags to pass to the Java compiler.  This, and not
 7120: @c @code{JAVACFLAGS}, should be used when it is necessary to put Java
 7121: @c compiler flags into @file{Makefile.am}.
 7122: @c 
 7123: Javaコンパイラに渡す追加フラグです.@code{JAVACFLAGS}とは異なり,
 7124: @file{Makefile.am}にJavaコンパイラフラグを書く必要があるとき,これを使
 7125: 用すべきではありません.
 7126: 
 7127: @item JAVAROOT
 7128: @c The value of this variable is passed to the @samp{-d} option to
 7129: @c @code{javac}.  It defaults to @samp{$(top_builddir)}.
 7130: @c 
 7131: この変数の値は,@code{javac}に渡す@samp{-d}オプションです.デフォルト
 7132: は,@samp{$(top_builddir)}です.
 7133: 
 7134: @item CLASSPATH_ENV
 7135: @c This variable is an @code{sh} expression which is used to set the
 7136: @c @code{CLASSPATH} environment variable on the @code{javac} command line.
 7137: @c (In the future we will probably handle class path setting differently.)
 7138: @c 
 7139: この変数は,@code{javac}コマンドラインで@code{CLASSPATH}環境変数に設定
 7140: するために使用される@code{sh}式です.(将来,クラスパスの設定を異なる方
 7141: 法で扱うようにする予定です.)
 7142: @end vtable
 7143: 
 7144: 
 7145: @node Python
 7146: @section Python
 7147: 
 7148: @cindex _PYTHON primary, defined
 7149: @cindex PYTHON primary, defined
 7150: @cindex Primary variable, PYTHON
 7151: 
 7152: 
 7153: @c Automake provides support for Python compilation with the @samp{PYTHON}
 7154: @c primary.
 7155: @c 
 7156: Automakeは,@samp{PYTHON}プライマリを用いることで,Pythonのコンパイル
 7157: に対するサポートを提供します.
 7158: 
 7159: @c Any files listed in a @samp{_PYTHON} variable will be byte-compiled with
 7160: @c @code{py-compile} at install time.  @code{py-compile} actually creates
 7161: @c both standard (@file{.pyc}) and byte-compiled (@file{.pyo}) versions of
 7162: @c the source files.  Note that because byte-compilation occurs at install
 7163: @c time, any files listed in @samp{noinst_PYTHON} will not be compiled.
 7164: @c Python source files are included in the distribution by default.
 7165: @c 
 7166: @samp{_PYTHON}変数でリストアップされているすべてのファイルは,インストー
 7167: ル時に@code{py-compile}でバイトコンパイルされます.@code{py-compile}は,
 7168: 実際にはソースファイルの標準的なバージョン(@file{.pyc})とバイトコンパ
 7169: イルされたバージョン(@file{.pyo})の両方を作成します.バイトコンパイル
 7170: はインストール時に行なわれるので,@samp{noinst_PYTHON}にリストアップさ
 7171: れているファイルはコンパイルされないことに注意してください.Pythonのソー
 7172: スファイルは,デフォルトで配布物に含められます.
 7173: 
 7174: @c Automake ships with an Autoconf macro called @code{AM_PATH_PYTHON} which
 7175: @c will determine some Python-related directory variables (see below).  If
 7176: @c you have called @code{AM_PATH_PYTHON} from @file{configure.ac}, then you
 7177: @c may use the following variables to list you Python source files in your
 7178: @c variables: @samp{python_PYTHON}, @samp{pkgpython_PYTHON},
 7179: @c @samp{pyexecdir_PYTHON}, @samp{pkgpyexecdir_PYTHON}, depending where you
 7180: @c want your files installed.
 7181: @c 
 7182: Automakeは,Pythonに関連するディレクトリ変数(以下を参照してください)を
 7183: 決定する@code{AM_PATH_PYTHON}と呼ばれるAutoconfとともに出荷されていま
 7184: す.@file{configure.ac}で@code{AM_PATH_PYTHON}が呼び出す場合,Pythonソー
 7185: スファイルをリストアップするために以下の変数を変数内に使用してもかまい
 7186: ません.@samp{python_PYTHON},@samp{pkgpython_PYTHON},
 7187: @samp{pyexecdir_PYTHON},@samp{pkgpyexecdir_PYTHON}はファイルをインス
 7188: トールしたい場所に依存します.
 7189: 
 7190: @c @code{AM_PATH_PYTHON([@var{VERSION}], [@var{ACTION-IF-FOUND}],
 7191: @c [@var{ACTION-IF-NOT-FOUND}])} takes three optional arguments.  It will
 7192: @c search a Python interpreter on the system.  The first argument, if
 7193: @c present, is the minimum version of Python required for this package:
 7194: @c @code{AM_PATH_PYTHON} will skip any Python interpreter which is older
 7195: @c than @var{VERSION}.  If an interpreter is found and satisfies
 7196: @c @var{VERSION}, then @var{ACTION-IF-FOUND} is run.  Otherwise,
 7197: @c @var{ACTION-IF-NOT-FOUND} is run.
 7198: @c 
 7199: @code{AM_PATH_PYTHON([@var{VERSION}], [@var{ACTION-IF-FOUND}],
 7200: [@var{ACTION-IF-NOT-FOUND}])}は三つのオプション引数を受け取ります.そ
 7201: れはPythonのインタプリタをシステムで探します.最初の引数が存在する場合,
 7202: それはパッケージが要求するPythonの最小バージョンです.
 7203: @code{AM_PATH_PYTHON}は,@var{VERSION}より古いPythonのインタプリタをス
 7204: キップします.インタプリタが見つかり@var{VERSION}を満たしている場合,
 7205: @var{ACTION-IF-FOUND}が実行されます.それ以外では
 7206: @var{ACTION-IF-NOT-FOUND}が実行されます.
 7207: 
 7208: @c If @var{ACTION-IF-NOT-FOUND} is not specified, the default is to abort
 7209: @c configure.  This is fine when Python is an absolute requirement for the
 7210: @c package.  Therefore if Python >= 2.2 is only @emph{optional} to the
 7211: @c package, @code{AM_PATH_PYTHON} could be called as follows.
 7212: @c 
 7213: @var{ACTION-IF-NOT-FOUND}が指定されていない場合,デフォルトはconfigure 
 7214: の中止です.これは,Pythonがパッケージに対する必須条件のときは良いもの
 7215: です.このため,Python >= 2.2がパッケージに対して@emph{オプション}の場
 7216: 合,@code{AM_PATH_PYTHON}を以下のように呼び出すことができます.
 7217: 
 7218: @example
 7219:   AM_PATH_PYTHON(2.2,, :)
 7220: @end example
 7221: 
 7222: @c @code{AM_PATH_PYTHON} creates several output variables based on the
 7223: @c Python installation found during configuration.
 7224: @c 
 7225: @code{AM_PATH_PYTHON}は,configureで分かったPythonのインストール状況を
 7226: 基に,いくつかの出力変数を生成します.
 7227: 
 7228: @vtable @code
 7229: @item PYTHON
 7230: @c The name of the Python executable, or @code{:} if no suitable
 7231: @c interpreter could be found.
 7232: @c 
 7233: Pythonの実行形式の名前,または適切なインタプリタが見つからない場合は
 7234: @code{:}です.
 7235: 
 7236: @c Assuming @var{ACTION-IF-NOT-FOUND} is used (otherwise @file{./configure}
 7237: @c will abort if Python is absent), the value of @code{PYTHON} can be used
 7238: @c to setup a conditional in order to disable the relevant part of a build
 7239: @c as follows.
 7240: @c 
 7241: @var{ACTION-IF-NOT-FOUND}が使用されていると仮定すると(それ以外では
 7242: Pythonが無い場合,@file{./configure}が中止されます),@code{PYTHON}の値
 7243: は,以下のようにビルドに関連する部分を利用不可能にするため,条件設定で
 7244: 使用することが可能です.
 7245: 
 7246: @example
 7247:   AM_PATH_PYTHON(,, :)
 7248:   AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
 7249: @end example
 7250: 
 7251: 
 7252: @c If the @var{ACTION-IF-NOT-FOUND}
 7253: @c is specified
 7254: @c 
 7255: @var{ACTION-IF-NOT-FOUND}が使用されている場合,それが実行されます.
 7256: 
 7257: @item PYTHON_VERSION
 7258: @c The Python version number, in the form @var{major}.@var{minor}
 7259: @c (e.g. @samp{1.5}).  This is currently the value of
 7260: @c @code{sys.version[:3]}.
 7261: @c 
 7262: @var{major}.@var{minor}形式(例えば,@samp{1.5})の,Pythonのバージョン
 7263: ナンバーです.これは,現在@code{sys.version[:3]}の値です.
 7264: 
 7265: @item PYTHON_PREFIX
 7266: @c The string @code{$@{prefix@}}.  This term may be used in future work
 7267: @c which needs the contents of Python's @code{sys.prefix}, but general
 7268: @c consensus is to always use the value from configure.
 7269: @c 
 7270: 文字列@code{$@{prefix@}}です.この単語は,Pythonの@code{sys.prefix}の
 7271: 内容が必要となる将来の動作で使用されるかもしれませんが,一般的な同意事
 7272: 項として@code{configure}からの値が常に使用されます.
 7273: 
 7274: @item PYTHON_EXEC_PREFIX
 7275: @c The string @code{$@{exec_prefix@}}.  This term may be used in future work
 7276: @c which needs the contents of Python's @code{sys.exec_prefix}, but general
 7277: @c consensus is to always use the value from configure.
 7278: @c 
 7279: 文字列@code{$@{exec_prefix@}}です.この単語は,Pythonの
 7280: @code{sys.exec_prefix}の内容が必要となる将来の動作で使用されるかもしれ
 7281: ませんが,一般的な同意事項として@code{configure}からの値が常に使用され
 7282: ます.
 7283: 
 7284: @item PYTHON_PLATFORM
 7285: @c The canonical name used by Python to describe the operating system, as
 7286: @c given by @code{sys.platform}.  This value is sometimes needed when
 7287: @c building Python extensions.
 7288: @c 
 7289: Pythonがオペレーティングシステムを記述するために使用する標準的な名前で,
 7290: @code{sys.platform}で与えられます.この値は,Pythonの拡張をビルドする
 7291: 時,必要となるときもあります.
 7292: 
 7293: @item pythondir
 7294: @c The directory name for the @file{site-packages} subdirectory of the
 7295: @c standard Python install tree.
 7296: @c 
 7297: 標準的にPythonがインストールされるツリーの,@file{site-packages}サブディ
 7298: レクトリのディレクトリの名前です.
 7299: 
 7300: @item pkgpythondir
 7301: @c This is is the directory under @code{pythondir} which is named after the
 7302: @c package.  That is, it is @samp{$(pythondir)/$(PACKAGE)}.  It is provided
 7303: @c as a convenience.
 7304: @c 
 7305: これは,パッケージの後で命名される@code{pythondir}以下のディレクトリで
 7306: す.すなわち,それは@samp{$(pythondir)/$(PACKAGE)}です.それは便宜上提
 7307: 供されます.
 7308: 
 7309: @item pyexecdir
 7310: @c This is the directory where Python extension modules (shared libraries)
 7311: @c should be installed.
 7312: @c 
 7313: これは,Pythonの拡張モジュール(共有ライブラリ)がインストールされるディ
 7314: レクトリです.
 7315: 
 7316: @item pkgpyexecdir
 7317: @c This is a convenience variable which is defined as
 7318: @c @samp{$(pyexecdir)/$(PACKAGE)}.
 7319: @c 
 7320: これは,@samp{$(pyexecdir)/$(PACKAGE)}として定義されている,便宜上の変
 7321: 数です.
 7322: @end vtable
 7323: 
 7324: @c All these directory variables have values that start with either
 7325: @c @code{$@{prefix@}} or @code{$@{exec_prefix@}} unexpanded.  This works
 7326: @c fine in @file{Makefiles}, but it makes these variables hard to use in
 7327: @c @file{configure}.  This is mandated by the GNU coding standards, so
 7328: @c that the user can run @code{make prefix=/foo install}.  The Autoconf
 7329: @c manual has a section with more details on this topic
 7330: @c (@pxref{Installation Directory Variables, , Installation Directory
 7331: @c Variables, autoconf, The Autoconf Manual}).
 7332: @c 
 7333: これらすべてのディレクトリ変数は,展開されていない@code{$@{prefix@}}ま
 7334: たは@code{$@{exec_prefix@}}のいずれかで開始される値になります.これは
 7335: @file{Makefile}でうまく動作しますが,これらの変数を@file{configure}で
 7336: 使用することは難しくなります.これはGNUコーディング標準に従っているの
 7337: で,ユーザは@code{make prefix=/foo install}を実行することが可能です.
 7338: Autoconfのマニュアルには,このトピックの詳細が書かれたセクションがあり
 7339: ます(@pxref{Installation Directory Variables, , Installation Directory
 7340: Variables, autoconf, The Autoconf Manual}).
 7341: 
 7342: 
 7343: @node Documentation
 7344: @c @chapter Building documentation
 7345: @chapter ドキュメントのビルド
 7346: 
 7347: @c Currently Automake provides support for Texinfo and man pages.
 7348: @c 
 7349: 現在Automakeは,Texinfoとman pageに対するサポートを提供します.
 7350: 
 7351: @menu
 7352: * Texinfo::                     Texinfo
 7353: * Man pages::                   Man pages
 7354: @end menu
 7355: 
 7356: 
 7357: @node Texinfo
 7358: @section Texinfo
 7359: 
 7360: @cindex _TEXINFOS primary, defined
 7361: @cindex TEXINFOS primary, defined
 7362: @cindex Primary variable, TEXINFOS
 7363: @cindex HTML output using Texinfo
 7364: @cindex PDF output using Texinfo
 7365: @cindex PS output using Texinfo
 7366: @cindex DVI output using Texinfo
 7367: 
 7368: @c If the current directory contains Texinfo source, you must declare it
 7369: @c with the @samp{TEXINFOS} primary.  Generally Texinfo files are converted
 7370: @c into info, and thus the @code{info_TEXINFOS} variable is most commonly used
 7371: @c here.  Any Texinfo source file must end in the @file{.texi},
 7372: @c @file{.txi}, or @file{.texinfo} extension.  We recommend @file{.texi}
 7373: @c for new manuals.
 7374: @c 
 7375: カレントディレクトリにTexinfoソースを含んでいる場合,@samp{TEXINFOS}プ
 7376: ライマリでそれを宣言する必要があります.通常,Texinfoファイルはinfoに
 7377: 変換されるので,@code{info_TEXINFOS}変数が最も一般的に使用されます.す
 7378: べてのTexinfoソースファイルは,@file{.texi},@file{.txi},または
 7379: @file{.texinfo}の拡張子で終える必要があります.新しいマニュアルには,
 7380: @file{.texi}を推奨します.
 7381: @vindex TEXINFOS
 7382: @vindex info_TEXINFOS
 7383: 
 7384: @c Automake generates rules to build @file{.info}, @file{.dvi}, @file{.ps},
 7385: @c @file{.pdf} and @file{.html} files from your Texinfo sources.
 7386: @c The @file{.info} files are built by @code{make all} and installed
 7387: @c by @code{make install} (unless you use @code{no-installinfo}, see below).
 7388: @c The other files can be built on request by @code{make dvi}, @code{make ps},
 7389: @c @code{make pdf} and @code{make html}.
 7390: @c 
 7391: Automakeは,@file{.info},@file{.dvi},@file{.ps},@file{.pdf},そして
 7392: @file{.html}ファイルを,Texinfoソースからビルドするルールを生成します.
 7393: @file{.info}ファイルは@code{make all}でビルドされ,@code{make install} 
 7394: でインストールされます(@code{no-installinfo}を使用していない場合に限り
 7395: ます.以下を参照してください).それ以外のファイルは,@code{make dvi},
 7396: @code{make ps},@code{make pdf},そして@code{make html}でビルドを要求
 7397: することが可能です.
 7398: 
 7399: @cindex Texinfo flag, VERSION
 7400: @cindex Texinfo flag, UPDATED
 7401: @cindex Texinfo flag, EDITION
 7402: @cindex Texinfo flag, UPDATED-MONTH
 7403: 
 7404: @cindex VERSION Texinfo flag
 7405: @cindex UPDATED Texinfo flag
 7406: @cindex EDITION Texinfo flag
 7407: @cindex UPDATED-MONTH Texinfo flag
 7408: 
 7409: @cindex mdate-sh
 7410: 
 7411: @c If the @file{.texi} file @code{@@include}s @file{version.texi}, then
 7412: @c that file will be automatically generated.  The file @file{version.texi}
 7413: @c defines four Texinfo flag you can reference using
 7414: @c @code{@@value@{EDITION@}}, @code{@@value@{VERSION@}},
 7415: @c @code{@@value@{UPDATED@}}, and @code{@@value@{UPDATED-MONTH@}}.
 7416: @c 
 7417: @file{.texi}ファイルが@file{version.texi}を@code{@@include}している場
 7418: 合,そのファイルが自動的に生成されます.ファイル@file{version.texi}は,
 7419: 四つのTexinfoのフラグを定義し,それは@code{@@value@{EDITION@}},
 7420: @code{@@value@{VERSION@}},@code{@@value@{UPDATED@}},そして
 7421: @code{@@value@{UPDATED-MONTH@}}を使用することで参照可能です.
 7422: 
 7423: @table @code
 7424: @item EDITION
 7425: @itemx VERSION
 7426: @c Both of these flags hold the version number of your program.  They are
 7427: @c kept separate for clarity.
 7428: @c 
 7429: これらのフラグは両方とも,プログラムのバージョンナンバーです.それらは
 7430: 明確さのために別々にしています.
 7431: 
 7432: @item UPDATED
 7433: @c This holds the date the primary @file{.texi} file was last modified.
 7434: @c 
 7435: これは,主要な@file{.texi}ファイルが最後に修正された日付を保持します.
 7436: 
 7437: @item UPDATED-MONTH
 7438: @c This holds the name of the month in which the primary @file{.texi} file
 7439: @c was last modified.
 7440: @c 
 7441: これは,主要な@file{.texi}ファイルが最後に修正された月名を保持します.
 7442: @end table
 7443: 
 7444: @c The @file{version.texi} support requires the @code{mdate-sh} program;
 7445: @c this program is supplied with Automake and automatically included when
 7446: @c @code{automake} is invoked with the @code{--add-missing} option.
 7447: @c 
 7448: @file{version.texi}サポートには,@code{mdate-sh}プログラムが必要です.
 7449: このプログラムはAutomakeと一緒に供給されていて,@code{automake}が
 7450: @code{--add-missing}オプションで呼び出されるとき,自動的に含められます.
 7451: 
 7452: @c If you have multiple Texinfo files, and you want to use the
 7453: @c @file{version.texi} feature, then you have to have a separate version
 7454: @c file for each Texinfo file.  Automake will treat any include in a
 7455: @c Texinfo file that matches @samp{vers*.texi} just as an automatically
 7456: @c generated version file.
 7457: @c 
 7458: 複数のTexinfoファイルがあり,@file{version.texi}の機能を使用したい場合,
 7459: それぞれのTexinfoファイルに対し個別のバージョンファイルを持たせる必要
 7460: があります.Automakeは@samp{vers*.texi}に一致したTexinfoファイル内に含
 7461: まれるものを,単純に自動的に生成されたバージョンファイルとして扱います.
 7462: 
 7463: @c Sometimes an info file actually depends on more than one @file{.texi}
 7464: @c file.  For instance, in GNU Hello, @file{hello.texi} includes the file
 7465: @c @file{gpl.texi}.  You can tell Automake about these dependencies using
 7466: @c the @code{@var{texi}_TEXINFOS} variable.  Here is how GNU Hello does it:
 7467: @c 
 7468: infoファイルが,実際には一つ以上の@file{.texi}ファイルに依存する場合も
 7469: あります.例えば,GNU Helloでは,@file{hello.texi}は@file{gpl.texi}ファ
 7470: イルを含んでいます.@code{@var{texi}_TEXINFOS}変数を使用することでこれ
 7471: らの依存性をAutomakeに伝えることが可能です.GNU Helloで用いた方法は,
 7472: 以下のようになっています.
 7473: @vindex TEXINFOS
 7474: @vindex _TEXINFOS
 7475: 
 7476: @example
 7477: info_TEXINFOS = hello.texi
 7478: hello_TEXINFOS = gpl.texi
 7479: @end example
 7480: 
 7481: @cindex texinfo.tex
 7482: 
 7483: @c By default, Automake requires the file @file{texinfo.tex} to appear in
 7484: @c the same directory as the Texinfo source (this can be changed using the
 7485: @c @code{TEXINFO_TEX} variable, see below).  However, if you used
 7486: @c @code{AC_CONFIG_AUX_DIR} in @file{configure.ac} (@pxref{Input, , Finding
 7487: @c `configure' Input, autoconf, The Autoconf Manual}), then
 7488: @c @file{texinfo.tex} is looked for there.  Automake supplies
 7489: @c @file{texinfo.tex} if @samp{--add-missing} is given.
 7490: @c 
 7491: デフォルトでAutomakeは,ファイル@file{texinfo.tex}がTexinfoソースと同
 7492: じディレクトリに存在することを要求します(これは,@code{TEXINFO_TEX}変
 7493: 数で変更することが可能です.以下を参照して下さい).しかし,
 7494: @file{configure.ac}で@code{AC_CONFIG_AUX_DIR}を使用した場合
 7495: (@pxref{Input, , Finding `configure' Input, autoconf, The Autoconf
 7496: Manual}),@file{texinfo.tex}はそこで探されます.Automakeは,
 7497: @samp{--add-missing}が与えられている場合,@file{texinfo.tex}を供給しま
 7498: す.
 7499: 
 7500: @opindex no-texinfo.tex
 7501: 
 7502: @c The option @samp{no-texinfo.tex} can be used to eliminate the
 7503: @c requirement for @file{texinfo.tex}.  Use of the variable
 7504: @c @code{TEXINFO_TEX} is preferable, however, because that allows the
 7505: @c @code{dvi}, @code{ps}, and @code{pdf} targets to still work.
 7506: @c 
 7507: オプション@samp{no-texinfo.tex}を,@file{texinfo.tex}を要求することを
 7508: 止めるために使用することが可能です.しかし,変数@code{TEXINFO_TEX}の使
 7509: 用は望ましく,それは@code{dvi},@code{ps},そして@code{pdf}ターゲット
 7510: を動作させることが可能だからです.
 7511: 
 7512: @cindex Rule, install-info
 7513: @cindex Rule, noinstall-info
 7514: @cindex Target, install-info
 7515: @cindex Target, noinstall-info
 7516: @cindex install-info target
 7517: @cindex noinstall-info target
 7518: 
 7519: @opindex no-installinfo
 7520: @trindex install-info
 7521: 
 7522: @c Automake generates an @code{install-info} rule; some people apparently
 7523: @c use this.  By default, info pages are installed by @samp{make install}.
 7524: @c This can be prevented via the @code{no-installinfo} option.
 7525: @c 
 7526: Automakeは@code{install-info}ルールを生成します.これを明示的に使用す
 7527: る人もいます.デフォルトで,infoページは@samp{make install}でインストー
 7528: ルされます.これは@code{no-installinfo}オプションによって止めることが
 7529: 可能です.
 7530: 
 7531: @c The following variables are used by the Texinfo build rules.
 7532: @c 
 7533: 以下の変数はTexinfoのビルドルールで使用されます.
 7534: 
 7535: @vtable @code
 7536: @item MAKEINFO
 7537: @c The name of the program invoked to build @file{.info} files.  This
 7538: @c variable is defined by Automake.  If the @code{makeinfo} program is
 7539: @c found on the system then it will be used by default; otherwise
 7540: @c @code{missing} will be used instead.
 7541: @c 
 7542: @file{.info}ファイルをビルドするために呼び出されるプログラム名です.こ
 7543: の変数はAutomakeが定義します.@code{makeinfo}プログラムがシステムで見
 7544: つかった場合,デフォルトで使用されます.それ以外では@code{missing}が代
 7545: わりに使用されます.
 7546: 
 7547: @item MAKEINFOHTML
 7548: @c The command invoked to build @file{.html} files.  Automake
 7549: @c defines this to @code{$(MAKEINFO) --html}.
 7550: @c 
 7551: @file{.html}ファイルをビルドするために呼び出されるコマンドです.
 7552: Automakeはこれを@code{$(MAKEINFO) --html}と定義します.
 7553: 
 7554: @item MAKEINFOFLAGS
 7555: @c User flags passed to each invocation of @code{$(MAKEINFO)} and
 7556: @c @code{$(MAKEINFOHTML)}.  This user variable (@pxref{User Variables}) is
 7557: @c not expected to be defined in any @file{Makefile}; it can be used by
 7558: @c users to pass extra flags to suit their needs.
 7559: @c 
 7560: @code{$(MAKEINFO)}と@code{$(MAKEINFOHTML)}のそれぞれの呼び出しに渡すユー
 7561: ザフラグです.このユーザ変数(@pxref{User Variables})は@file{Makefile} 
 7562: で定義していることを期待していません.それはユーザが必要に応じて追加フ
 7563: ラグを渡すことで使用することが可能です.
 7564: 
 7565: @item AM_MAKEINFOFLAGS
 7566: @itemx AM_MAKEINFOHTMLFLAGS
 7567: @c Maintainer flags passed to each @code{makeinfo} invocation.  These
 7568: @c are maintainer variables that can be overridden in @file{Makefile.am}.
 7569: @c @code{$(AM_MAKEINFOFLAGS)} is passed to @code{makeinfo} when building
 7570: @c @file{.info} files; and @code{$(AM_MAKEINFOHTMLFLAGS)} is used when
 7571: @c building @file{.html} files.
 7572: @c 
 7573: それぞれの@code{makeinfo}の呼び出しで管理者が渡すフラグです.これらは
 7574: @file{Makefile.am}で優先することが可能な管理者用の変数です.
 7575: @code{$(AM_MAKEINFOFLAGS)}は@file{.info}ファイルをビルドするとき
 7576: @code{makeinfo}に渡されます.そして,@code{$(AM_MAKEINFOHTMLFLAGS)}は
 7577: @file{.html}ファイルをビルドするとき@code{makeinfo}に使用されます.
 7578: 
 7579: @c For instance the following setting can be used to obtain one single
 7580: @c @file{.html} file per manual, without node separators.
 7581: @c 
 7582: 例えば以下の設定で,一つのマニュアルに付き,ノードで分離されていない単
 7583: 一の@file{.html}ファイルを入手するために使用することが可能です.
 7584: @example
 7585: AM_MAKEINFOHTMLFLAGS = --no-headers --no-split
 7586: @end example
 7587: 
 7588: @c By default, @code{$(AM_MAKEINFOHTMLFLAGS)} is set to
 7589: @c @code{$(AM_MAKEINFOFLAGS)}.  This means that defining
 7590: @c @code{$(AM_MAKEINFOFLAGS)} without defining
 7591: @c @code{$(AM_MAKEINFOHTMLFLAGS)} will impact builds of both @file{.info}
 7592: @c and @file{.html} files.
 7593: @c 
 7594: デフォルトで,@code{$(AM_MAKEINFOHTMLFLAGS)}は
 7595: @code{$(AM_MAKEINFOFLAGS)}に設定されます.これは,
 7596: @code{$(AM_MAKEINFOHTMLFLAGS)}を定義せずに@code{$(AM_MAKEINFOFLAGS)}を
 7597: 定義すると@file{.info}と@file{.html}の両方のファイルが暗黙にビルドされ
 7598: ることを意味します.
 7599: 
 7600: @item TEXI2DVI
 7601: @c The name of the command that converts a @file{.texi} file into a
 7602: @c @file{.dvi} file.  This defaults to @code{texi2dvi}, a script that ships
 7603: @c with the Texinfo package.
 7604: @c 
 7605: @file{.texi}ファイルを@file{.dvi}ファイルに変換するコマンドの名前です.
 7606: このデフォルトは@code{texi2dvi}で,Texinfoパッケージとともに配布されて
 7607: います.
 7608: 
 7609: @item TEXI2PDF
 7610: @c The name of the command that translates a @file{.texi} file into a
 7611: @c @file{.pdf} file.  This defaults to @code{$(TEXI2DVI) --pdf --batch}.
 7612: @c 
 7613: @file{.texi}ファイルを@file{.pdf}ファイルに変換するコマンドの名前です.
 7614: デフォルトは@code{$(TEXI2DVI) --pdf --batch}です.
 7615: 
 7616: @item DVIPS
 7617: @c The name of the command that build a @file{.ps} file out of a
 7618: @c @file{.dvi} file.  This defaults to @code{dvips}.
 7619: @c 
 7620: @file{.dvi}ファイルから@file{.ps}ファイルをビルドするコマンドの名前で
 7621: す.デフォルトは@code{dvips}です.
 7622: 
 7623: @item TEXINFO_TEX
 7624: 
 7625: @c If your package has Texinfo files in many directories, you can use the
 7626: @c variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
 7627: @c @file{texinfo.tex} for your package.  The value of this variable should
 7628: @c be the relative path from the current @file{Makefile.am} to
 7629: @c @file{texinfo.tex}:
 7630: @c 
 7631: 多くのディレクトリにTexinfoファイルがあるパッケージの場合,Automakeに
 7632: パッケージに対して標準的な@file{texinfo.tex}が見つかる場所を伝える変数
 7633: @code{TEXINFO_TEX}を使用することが可能です.この変数の値は,現在の
 7634: @file{Makefile.am}から@file{texinfo.tex}への相対的なパスにすべきです.
 7635: 
 7636: @example
 7637: TEXINFO_TEX = ../doc/texinfo.tex
 7638: @end example
 7639: @end vtable
 7640: 
 7641: 
 7642: @node Man pages
 7643: @c @section Man pages
 7644: @section manページ
 7645: 
 7646: @cindex _MANS primary, defined
 7647: @cindex MANS primary, defined
 7648: @cindex Primary variable, MANS
 7649: 
 7650: @c A package can also include man pages (but see the GNU standards on this
 7651: @c matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.)  Man
 7652: @c pages are declared using the @samp{MANS} primary.  Generally the
 7653: @c @code{man_MANS} variable is used.  Man pages are automatically installed in
 7654: @c the correct subdirectory of @code{mandir}, based on the file extension.
 7655: @c 
 7656: パッケージにmanページを含めることも可能です(しかし,この件に関しては,
 7657: @ref{Man Pages, , , standards, The GNU Coding Standards}を参照してくだ
 7658: さい).manページは@samp{MANS}プライマリを使用して宣言します.一般に 
 7659: @code{man_MANS}変数を使用します.manページは,@code{mandir}の正しいサ
 7660: ブディレクトリに,ファイル拡張子に基づいて自動的にインストールされます.
 7661: @vindex MANS
 7662: @vindex man_MANS
 7663: 
 7664: @c File extensions such as @samp{.1c} are handled by looking for the valid
 7665: @c part of the extension and using that to determine the correct
 7666: @c subdirectory of @code{mandir}.  Valid section names are the digits
 7667: @c @samp{0} through @samp{9}, and the letters @samp{l} and @samp{n}.
 7668: @c 
 7669: @samp{.1c}のようなファイルの拡張子は,有効な拡張子を探すために処理され,
 7670: @code{mandir}の正しいサブディレクトリを決定するために使用されます.有
 7671: 効なセクション名は,10進数の@samp{0}から@samp{9}と,文字の@samp{l}と
 7672: @samp{n}です.
 7673: 
 7674: @c Sometimes developers prefer to name a man page something like
 7675: @c @file{foo.man} in the source, and then rename it to have the correct
 7676: @c suffix, e.g. @file{foo.1}, when installing the file.  Automake also
 7677: @c supports this mode.  For a valid section named @var{SECTION}, there is a
 7678: @c corresponding directory named @samp{man@var{SECTION}dir}, and a
 7679: @c corresponding @samp{_MANS} variable.  Files listed in such a variable
 7680: @c are installed in the indicated section.  If the file already has a
 7681: @c valid suffix, then it is installed as-is; otherwise the file suffix is
 7682: @c changed to match the section.
 7683: @c 
 7684: 開発者によっては,ソースファイルで@file{foo.man}のようなファイル名で
 7685: manページを命名し,ファイルをインストールするときに,例えば
 7686: @file{foo.1}のような正しい接尾子を持つものに名前を変更したい時もありま
 7687: す.Automakeはこのモードもサポートします.有効なセクションに命名された
 7688: @var{SECTION}に対して,@samp{man@var{SECTION}dir}と命名されている対応
 7689: するディレクトリと,対応する@samp{_MANS}変数があります.そのような変数
 7690: でリストアップされているファイルは,示されているセクションにインストー
 7691: ルされます.ファイルに有効な接尾子が既についている場合,それはそのまま
 7692: インストールされます.それ以外の場合,ファイルの接尾子はセクションに一
 7693: 致するように変更されます.
 7694: 
 7695: @c For instance, consider this example:
 7696: @c 
 7697: 例えば,以下のような例を考えます.
 7698: @example
 7699: man1_MANS = rename.man thesame.1 alsothesame.1c
 7700: @end example
 7701: 
 7702: @c In this case, @file{rename.man} will be renamed to @file{rename.1} when
 7703: @c installed, but the other files will keep their names.
 7704: @c 
 7705: この場合は,@file{rename.man}はインストールする時に@file{rename.1}に名
 7706: 前を変更され,他のファイルはその名前のままになります.
 7707: 
 7708: @cindex Rule, install-man
 7709: @cindex Rule, noinstall-man
 7710: @cindex Target, install-man
 7711: @cindex Target, noinstall-man
 7712: @cindex install-man target
 7713: @cindex noinstall-man target
 7714: 
 7715: @c Use @samp{make install} per documentation: (texi)code.
 7716: @c 
 7717: @c By default, man pages are installed by @samp{make install}.  However,
 7718: @c since the GNU project does not require man pages, many maintainers do
 7719: @c not expend effort to keep the man pages up to date.  In these cases, the
 7720: @c @code{no-installman} option will prevent the man pages from being
 7721: @c installed by default.  The user can still explicitly install them via
 7722: @c @samp{make install-man}.
 7723: @c 
 7724: デフォルトで,manページは@samp{make install}でインストールされます.し
 7725: かし,GNUプロジェクトはmanページを必要としないので,多くの管理者はman
 7726: ページを最新にしておきません.この場合,@code{no-installman}オプション
 7727: でman ページをデフォルトでインストールしないようにします.ユーザは
 7728: @samp{make install-man}によって,明示的にそれらをインストールすること
 7729: ができます.
 7730: @opindex no-installman
 7731: @trindex install-man
 7732: 
 7733: @c Here is how the man pages are handled in GNU @code{cpio} (which includes
 7734: @c both Texinfo documentation and man pages):
 7735: @c 
 7736: (Texinfoドキュメントとmanページの両方を含んでいる)GNU@code{cpio}では,
 7737: ドキュメントを以下のようにして処理しています.
 7738: 
 7739: @example
 7740: man_MANS = cpio.1 mt.1
 7741: EXTRA_DIST = $(man_MANS)
 7742: @end example
 7743: 
 7744: @c Man pages are not currently considered to be source, because it is not
 7745: @c uncommon for man pages to be automatically generated.  Therefore they
 7746: @c are not automatically included in the distribution.  However, this can
 7747: @c be changed by use of the @samp{dist_} prefix.
 7748: @c 
 7749: manページは,現在ソースであると考慮されておらず,そのわけはmanページが
 7750: 自動的に生成されることが珍しくないからです.このため,それらは自動的に
 7751: 配布物に含められません.しかし,これは@samp{dist_}接頭辞を使用すること
 7752: で変更可能です.
 7753: 
 7754: @c The @samp{nobase_} prefix is meaningless for man pages and is
 7755: @c disallowed.
 7756: @c 
 7757: @samp{nobase_}接頭辞はmanページに対しては意味が無く利用できません.
 7758: 
 7759: 
 7760: @node Install
 7761: @c @chapter What Gets Installed
 7762: @chapter インストールされるもの
 7763: 
 7764: @cindex Installation support
 7765: @cindex make install support
 7766: 
 7767: @c @section Basics of installation
 7768: @section 基本的なインストール
 7769: 
 7770: @c Naturally, Automake handles the details of actually installing your
 7771: @c program once it has been built.  All files named by the various
 7772: @c primaries are automatically installed in the appropriate places when the
 7773: @c user runs @code{make install}.
 7774: @c 
 7775: 当然,Automakeは,一旦ビルドされたプログラムを実際のインストールの細部
 7776: までの処理を行ないます.様々なプライマリで指名されているすべてのファイ
 7777: ルは,ユーザが@code{make install}を実行する時に,適切な場所に自動的に
 7778: インストールされます.
 7779: 
 7780: @c A file named in a primary is installed by copying the built file into
 7781: @c the appropriate directory.  The base name of the file is used when
 7782: @c installing.
 7783: @c 
 7784: プライマリで指名されているファイルは,ビルドされたファイルを適切なディ
 7785: レクトリにコピーすることでインストールされます.ファイルのベース名はイ
 7786: ンストール時に使用されます.
 7787: 
 7788: @example
 7789: bin_PROGRAMS = hello subdir/goodbye
 7790: @end example
 7791: 
 7792: @c In this example, both @samp{hello} and @samp{goodbye} will be installed
 7793: @c in @code{$(bindir)}.
 7794: @c 
 7795: この例では,@samp{hello}と@samp{goodbye}の両方が@code{$(bindir)}にイン
 7796: ストールされます.
 7797: 
 7798: @c Sometimes it is useful to avoid the basename step at install time.  For
 7799: @c instance, you might have a number of header files in subdirectories of
 7800: @c the source tree which are laid out precisely how you want to install
 7801: @c them.  In this situation you can use the @samp{nobase_} prefix to
 7802: @c suppress the base name step.  For example:
 7803: @c 
 7804: インストール時にベース名のステップを避けた方が役に立つこともあるでしょ
 7805: う.例えば,ソースツリーのサブディレクトリに,インストール時にインストー
 7806: ルしたい方法で正確に配置したいヘッダファイルがいくつかあるかもしれませ
 7807: ん.この場合,ベース名のステップを停止するために,@samp{nobase_}接頭辞
 7808: を使用することが可能です.例えば以下のようにします.
 7809: 
 7810: @example
 7811: nobase_include_HEADERS = stdio.h sys/types.h
 7812: @end example
 7813: 
 7814: @c Will install @file{stdio.h} in @code{$(includedir)} and @file{types.h}
 7815: @c in @code{$(includedir)/sys}.
 7816: @c 
 7817: これで,@file{stdio.h}は@code{$(includedir)}に,そして@file{types.h}は
 7818: @code{$(includedir)/sys}にインストールされます.
 7819: 
 7820: @c @section The two parts of install
 7821: @section インストールの二つの部分
 7822: 
 7823: @c Automake generates separate @code{install-data} and @code{install-exec}
 7824: @c rules, in case the installer is installing on multiple machines which
 7825: @c share directory structure---these targets allow the machine-independent
 7826: @c parts to be installed only once.  @code{install-exec} installs
 7827: @c platform-dependent files, and @code{install-data} installs
 7828: @c platform-independent files.  The @code{install} target depends on both
 7829: @c of these targets.  While Automake tries to automatically segregate
 7830: @c objects into the correct category, the @file{Makefile.am} author is, in
 7831: @c the end, responsible for making sure this is done correctly.
 7832: @c 
 7833: インストーラーが共有ディレクトリ構造を持っている複数のマシンにインストー
 7834: ルする場合,Automakeは@code{install-data}と@code{install-exec}ルールを
 7835: 分けて生成します --- これらのターゲットで,マシンに依存しない部分を一
 7836: 度にインストールすることが可能になります.@code{install-exec}はプラッ
 7837: トフォームに依存するファイルをインストールし,@code{install-data}はプ
 7838: ラットフォームに依存しないファイルをインストールします.@code{install} 
 7839: ターゲットはこれらのターゲットの両方に依存します.Automakeは,オブジェ
 7840: クトを正しいカテゴリに自動的に区別するよう試みますが,
 7841: @file{Makefile.am}の作者は,これが正しく行なわれていることを確かめる責
 7842: 任があります.
 7843: @trindex install-data
 7844: @trindex install-exec
 7845: @trindex install
 7846: @cindex Install, two parts of
 7847: 
 7848: @c Variables using the standard directory prefixes @samp{data},
 7849: @c @samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
 7850: @c @samp{pkgdata}, or @samp{pkginclude} (e.g. @samp{data_DATA}) are
 7851: @c installed by @samp{install-data}.
 7852: @c 
 7853: @samp{data},@samp{info},@samp{man},@samp{include},
 7854: @samp{oldinclude},@samp{pkgdata},または@samp{pkginclude}(例えば 
 7855: @samp{data_DATA})といった標準ディレクトリの接頭辞を使用している変数は,
 7856: @samp{install-data}でインストールされます.
 7857: 
 7858: @c Variables using the standard directory prefixes @samp{bin}, @samp{sbin},
 7859: @c @samp{libexec}, @samp{sysconf}, @samp{localstate}, @samp{lib}, or
 7860: @c @samp{pkglib} (e.g. @samp{bin_PROGRAMS}) are installed by
 7861: @c @samp{install-exec}.
 7862: @c 
 7863: @samp{bin},@samp{sbin},@samp{libexec},@samp{sysconf},
 7864: @samp{localstate},@samp{lib},または@samp{pkglib}(例えば 
 7865: @samp{bin_PROGRAMS})といった標準ディレクトリの接頭辞を使用している変数
 7866: は, @samp{install-exec}でインストールされます.
 7867: 
 7868: @c Any variable using a user-defined directory prefix with @samp{exec} in
 7869: @c the name (e.g. @samp{myexecbin_PROGRAMS} is installed by
 7870: @c @samp{install-exec}.  All other user-defined prefixes are installed by
 7871: @c @samp{install-data}.
 7872: @c 
 7873: ユーザが定義した名前で,名前に@samp{exec}を含むディレクトリ接頭辞を使
 7874: 用している変数は(例えば@samp{myexecbin_PROGRAMS}),@samp{install-exec}
 7875: でインストールされます.ユーザによって定義されたそれ以外のすべての接頭
 7876: 辞は,@samp{install-data}でインストールされます.
 7877: 
 7878: @c @section Extending installation
 7879: @section インストールの拡張
 7880: 
 7881: @c It is possible to extend this mechanism by defining an
 7882: @c @code{install-exec-local} or @code{install-data-local} rule.  If these
 7883: @c rules exist, they will be run at @samp{make install} time.  These
 7884: @c rules can do almost anything; care is required.
 7885: @c 
 7886: @code{install-exec-local}や@code{install-data-local}ルールを定義するこ
 7887: とで,このメカニズムを拡張することが可能です.これらのルールが存在する
 7888: 場合,それらは@samp{make install}時に実行されます.これらのルールでほ
 7889: とんどすべてのことが可能になります.注意が必要です.
 7890: @trindex install-exec-local
 7891: @trindex install-data-local
 7892: 
 7893: @c Automake also supports two install hooks, @code{install-exec-hook} and
 7894: @c @code{install-data-hook}.  These hooks are run after all other install
 7895: @c rules of the appropriate type, exec or data, have completed.  So, for
 7896: @c instance, it is possible to perform post-installation modifications
 7897: @c using an install hook.
 7898: @c 
 7899: Automakeは,@code{install-exec-hook}と@code{install-data-hook}の,二つ
 7900: のインストールのフックもサポートしています.これらのフックは,適切な形
 7901: 式,execやdataといった,他のすべてのインストールルールが完了した後で実
 7902: 行されます.そのため,例えば,インストールのフックを使用して,インストー
 7903: ル後の変更を実施することが可能です.
 7904: @cindex Install hook
 7905: 
 7906: @c @section Staged installs
 7907: @section インストールの実行
 7908: 
 7909: @vindex DESTDIR
 7910: @c Automake generates support for the @samp{DESTDIR} variable in all
 7911: @c install rules.  @samp{DESTDIR} is used during the @samp{make install}
 7912: @c step to relocate install objects into a staging area.  Each object and
 7913: @c path is prefixed with the value of @samp{DESTDIR} before being copied
 7914: @c into the install area.  Here is an example of typical DESTDIR usage:
 7915: @c 
 7916: Automakeは,すべてのインストールルールで,@samp{DESTDIR}変数に対するサ
 7917: ポートを生成します.@samp{DESTDIR}は,インストールオブジェクトを実行領
 7918: 域に再配置する@samp{make install}の段階で使用されます.それぞれのオブ
 7919: ジェクトとパスは,インストール領域にコピーされる前に,@samp{DESTDIR}の
 7920: 値が前置されます.典型的な@samp{DESTDIR}使用法の例は,以下のようになり
 7921: ます.
 7922: 
 7923: @example
 7924: make DESTDIR=/tmp/staging install
 7925: @end example
 7926: 
 7927: @c This places install objects in a directory tree built under
 7928: @c @file{/tmp/staging}.  If @file{/gnu/bin/foo} and
 7929: @c @file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
 7930: @c would install @file{/tmp/staging/gnu/bin/foo} and
 7931: @c @file{/tmp/staging/gnu/share/aclocal/foo.m4}.
 7932: @c 
 7933: これで,インストールオブジェクトを@file{/tmp/staging}の下に構築されて
 7934: いるディレクトリツリーに配置します.@file{/gnu/bin/foo}と
 7935: @file{/gnu/share/aclocal/foo.m4}がインストールされる場合,上のコマンド
 7936: では,@file{/tmp/staging/gnu/bin/foo}と
 7937: @file{/tmp/staging/gnu/share/aclocal/foo.m4}にインストールされます.
 7938: 
 7939: @c This feature is commonly used to build install images and packages.  For
 7940: @c more information, see @ref{Makefile Conventions, , , standards, The GNU
 7941: @c Coding Standards}.
 7942: @c 
 7943: この機能は,インストールイメージとパッケージをビルドするために,通常使
 7944: 用されます.詳細は,@ref{Makefile Conventions, , , standards, The GNU
 7945: Coding Standards}を参照してください.
 7946: 
 7947: @c Support for @samp{DESTDIR} is implemented by coding it directly into the
 7948: @c install rules.  If your @file{Makefile.am} uses a local install rule
 7949: @c (e.g., @code{install-exec-local}) or an install hook, then you must
 7950: @c write that code to respect @samp{DESTDIR}.
 7951: @c 
 7952: @samp{DESTDIR}に対するサポートは,インストールルールに直接コーディング
 7953: することで実装されています.@file{Makefile.am}でローカルインストール規
 7954: 則(例えば,@code{install-exec-local})やインストールフックを使用してい
 7955: る場合,@samp{DESTDIR}に対応するコードを書く必要があります.
 7956: 
 7957: @c @section Rules for the user
 7958: @section ユーザのためのルール
 7959: 
 7960: @c Automake also generates rules for targets @code{uninstall},
 7961: @c @code{installdirs}, and @code{install-strip}.
 7962: @c 
 7963: Automakeは,ターゲット@code{uninstall},@code{installdirs},そして
 7964: @code{install-strip}に対するルールも生成します.
 7965: @trindex uninstall
 7966: @trindex installdirs
 7967: @trindex install-strip
 7968: 
 7969: @c Automake supports @code{uninstall-local} and @code{uninstall-hook}.
 7970: @c There is no notion of separate uninstalls for ``exec'' and ``data'', as
 7971: @c these features would not provide additional functionality.
 7972: @c 
 7973: Automakeは,@code{uninstall-local}と@code{uninstall-hook}をサポートし
 7974: ています.これらの機能は,機能の追加のために提供されているわけでないの
 7975: で,``exec''と``data''に対してアンインストールを分ける必要はないでしょ
 7976: う.
 7977: 
 7978: @c Note that @code{uninstall} is not meant as a replacement for a real
 7979: @c packaging tool.
 7980: @c 
 7981: @code{uninstall}には,実際のパッケージツールを置換する意味が無いことに
 7982: 注意してください.
 7983: 
 7984: 
 7985: @node Clean
 7986: @c @chapter What Gets Cleaned
 7987: @chapter クリーンされるもの
 7988: 
 7989: @cindex make clean support
 7990: 
 7991: @c The GNU Makefile Standards specify a number of different clean rules.
 7992: @c See @xref{Standard Targets, , Standard Targets for Users, standards,
 7993: @c The GNU Coding Standards}.
 7994: @c 
 7995: GNU Makefile Standardsは多くの異なったクリーンのルールを指定します.
 7996: @xref{Standard Targets, , Standard Targets for Users, standards, The
 7997: GNU Coding Standards}.
 7998: 
 7999: @c Generally the files that can be cleaned are determined automatically by
 8000: @c Automake.  Of course, Automake also recognizes some variables that can
 8001: @c be defined to specify additional files to clean.  These variables are
 8002: @c @code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
 8003: @c @code{MAINTAINERCLEANFILES}.
 8004: @c 
 8005: 一般に,クリーンされるファイルはAutomakeが自動的に決定します.もちろん,
 8006: Automakeはクリーンするファイルを追加で指定するために定義することが可能
 8007: な変数も認識します.これらの変数は@code{MOSTLYCLEANFILES},
 8008: @code{CLEANFILES},@code{DISTCLEANFILES},そして
 8009: @code{MAINTAINERCLEANFILES}です.
 8010: @vindex MOSTLYCLEANFILES
 8011: @vindex CLEANFILES
 8012: @vindex DISTCLEANFILES
 8013: @vindex MAINTAINERCLEANFILES
 8014: 
 8015: @c As the GNU Standards aren't always explicit as to which files should be
 8016: @c removed by which rule, we've adopted a heuristic which we believe was
 8017: @c first formulated by Fran@,{c}ois Pinard:
 8018: @c 
 8019: ルールによって削除されるファイルは,GNU Standardsで常に明示されている
 8020: というわけではないので,我々は,Fran@,{c}ois Pinardが最初に公式化した
 8021: ものを信じて,発見的手法で適用してきました.
 8022: 
 8023: @itemize @bullet
 8024: @item
 8025: @c If @code{make} built it, and it is commonly something that one would
 8026: @c want to rebuild (for instance, a @file{.o} file), then
 8027: @c @code{mostlyclean} should delete it.
 8028: @c 
 8029: @code{make}がビルドするもので,通常それをリビルドしたいときがあるもの
 8030: (例えば,@file{.o}ファイル)は@code{mostlyclean}でそれを削除します.
 8031: 
 8032: @item
 8033: @c Otherwise, if @code{make} built it, then @code{clean} should delete it.
 8034: @c 
 8035: それ以外で,@code{make}でビルドされたものは@code{clean}で削除します.
 8036: 
 8037: @item
 8038: @c If @code{configure} built it, then @code{distclean} should delete it.
 8039: @c 
 8040: @code{configure}でビルドされたものは,@code{distclean}で削除します.
 8041: 
 8042: @item
 8043: @c If the maintainer built it (for instance, a @file{.info} file), then
 8044: @c @code{maintainer-clean} should delete it.  However
 8045: @c @code{maintainer-clean} should not delete anything that needs to exist
 8046: @c in order to run @code{./configure && make}.
 8047: @c 
 8048: 管理者がビルドするもの(例えば@file{.info}ファイル)は,
 8049: @code{maintainer-clean}で削除します.しかし,@code{maintainer-clean}で
 8050: は,@code{./configure && make}を実行するために必要なものを削除すべきで
 8051: はありません.
 8052: @end itemize
 8053: 
 8054: @c We recommend that you follow this same set of heuristics in your
 8055: @c @file{Makefile.am}.
 8056: @c 
 8057: 我々は,皆さんの@file{Makefile.am}で発見的に同じように設定するよう,こ
 8058: のことに従って欲しいと思っています.
 8059: 
 8060: 
 8061: @node Dist
 8062: @c @chapter What Goes in a Distribution
 8063: @chapter 配布物に含まれるもの
 8064: 
 8065: @c @section Basics of distribution
 8066: @section 基本的な配布物
 8067: 
 8068: @cindex make dist
 8069: 
 8070: @c The @code{dist} rule in the generated @file{Makefile.in} can be used
 8071: @c to generate a gzip'd @code{tar} file and other flavors of archive for
 8072: @c distribution.  The files is named based on the @samp{PACKAGE} and
 8073: @c @samp{VERSION} variables defined by @code{AM_INIT_AUTOMAKE}
 8074: @c (@pxref{Macros}); more precisely the gzip'd @code{tar} file is named
 8075: @c @samp{@var{package}-@var{version}.tar.gz}.
 8076: @c 
 8077: @file{Makefile.in}で生成された@code{dist}ルールは,配布物に対してgzip 
 8078: された@code{tar}ファイルやそれ以外の特色を持ったものを生成するために使
 8079: 用することが可能です.ファイルは,@code{AM_INIT_AUTOMAKE}
 8080: (@pxref{Macros})で定義される@samp{PACKAGE}と@samp{VERSION}変数に基づい
 8081: て命名されます.より正確には,gzipされた@code{tar}ファイルは
 8082: @samp{@var{package}-@var{version}.tar.gz}と命名されます.
 8083: @cvindex PACKAGE
 8084: @cvindex VERSION
 8085: @trindex dist
 8086: @c You can use the @code{make} variable @samp{GZIP_ENV} to control how gzip
 8087: @c is run.  The default setting is @samp{--best}.
 8088: @c 
 8089: gzipを実行する方法を制御するために,@code{make}の@samp{GZIP_ENV}変数を
 8090: 使用することが可能です.デフォルト設定は@samp{--best}です.
 8091: 
 8092: @c For the most part, the files to distribute are automatically found by
 8093: @c Automake: all source files are automatically included in a distribution,
 8094: @c as are all @file{Makefile.am}s and @file{Makefile.in}s.  Automake also
 8095: @c has a built-in list of commonly used files which are automatically
 8096: @c included if they are found in the current directory (either physically,
 8097: @c or as the target of a @file{Makefile.am} rule).  This list is printed by
 8098: @c @samp{automake --help}.  Also, files which are read by @code{configure}
 8099: @c (i.e. the source files corresponding to the files specified in various
 8100: @c Autoconf macros such as @code{AC_CONFIG_FILES} and siblings) are
 8101: @c automatically distributed.  Files included in @file{Makefile.am}s (using
 8102: @c @code{include}) or in @file{configure.ac} (using @code{m4_include}), and
 8103: @c helper scripts installed with @samp{automake --add-missing} are also
 8104: @c distributed.
 8105: @c 
 8106: ほとんどの部分で,配布するファイルは自動的にAutomakeが見つけます.ソー
 8107: スファイルはすべて自動的に配布物に含まれ,すべての@file{Makefile.am}と
 8108: @file{Makefile.in}も同様に扱われます.Automakeには,カレントディレクト
 8109: リで(物理的にまたは@file{Makefile.am}ルールのターゲットとして)見つかる
 8110: 場合に自動的にインクルードされる,一般的に使用されるファイルの組み込み
 8111: リストがあります.このリストは@samp{automake --help}で出力されます.
 8112: @code{configure}で読み込まれるファイルも(すなわち,
 8113: @code{AC_CONFIG_FILES}とその仲間のような様々なAutoconfマクロで指定され
 8114: ているファイルに対応しているソースファイル),自動的に配布されます.
 8115: (@code{include}を使用して)@file{Makefile.am}や,(@code{m4_include}を使
 8116: 用して)@file{configure.ac}でインクルードされているファイルと,
 8117: @samp{automake --add-missing}でインストールされるヘルパースクリプトも
 8118: 配布されます.
 8119: @cvindex m4_include, distribution
 8120: 
 8121: @c Still, sometimes there are files which must be distributed, but which
 8122: @c are not covered in the automatic rules.  These files should be listed in
 8123: @c the @code{EXTRA_DIST} variable.  You can mention files from
 8124: @c subdirectories in @code{EXTRA_DIST}.
 8125: @c 
 8126: 配布する必要がありながら自動的なルールでカバーされていないファイルがあ
 8127: ることも,まだあります.これらのファイルは,@code{EXTRA_DIST}変数でリ
 8128: ストアップします.@code{EXTRA_DIST}では,サブディレクトリのファイルを
 8129: 記述することが可能です.
 8130: 
 8131: @c You can also mention a directory in @code{EXTRA_DIST}; in this case the
 8132: @c entire directory will be recursively copied into the distribution.
 8133: @c Please note that this will also copy @emph{everything} in the directory,
 8134: @c including CVS/RCS version control files.  We recommend against using
 8135: @c this feature.
 8136: @c 
 8137: @code{EXTRA_DIST}ではディレクトリを記述することも可能です.この場合は,
 8138: ディレクトリ全体が再帰的に配布物にコピーされます.これはディレクトリの
 8139: @emph{すべてのもの}をコピーし,CVS/RCSのバージョンコントロールファイル
 8140: も含まれることに注意してください.我々は,この機能を使用しないことを推
 8141: 奨します.
 8142: @vindex EXTRA_DIST
 8143: 
 8144: @c If you define @code{SUBDIRS}, Automake will recursively include the
 8145: @c subdirectories in the distribution.  If @code{SUBDIRS} is defined
 8146: @c conditionally (@pxref{Conditionals}), Automake will normally include all
 8147: @c directories that could possibly appear in @code{SUBDIRS} in the
 8148: @c distribution.  If you need to specify the set of directories
 8149: @c conditionally, you can set the variable @code{DIST_SUBDIRS} to the exact
 8150: @c list of subdirectories to include in the distribution (@pxref{Top level}).
 8151: @c 
 8152: @code{SUBDIRS}を定義している場合,Automakeはサブディレクトリを再帰的に
 8153: 配布物に含めます.@code{SUBDIRS}を条件付きで定義している場合
 8154: (@pxref{Conditionals}),Automakeは通常,@code{SUBDIRS}にあるすべてのディ
 8155: レクトリをできる限り配布物に含めます.条件付きでディレクトリの組を指定
 8156: する必要がある場合,配布物に含めるサブディレクトリの正確なリストを変数
 8157: @code{DIST_SUBDIRS}に設定することで可能となります(@pxref{Top level}).
 8158: @vindex DIST_SUBDIRS
 8159: 
 8160: 
 8161: @c @section Fine-grained distribution control
 8162: @section きめ細かな配布物の制御
 8163: 
 8164: @c Sometimes you need tighter control over what does @emph{not} go into the
 8165: @c distribution; for instance you might have source files which are
 8166: @c generated and which you do not want to distribute.  In this case
 8167: @c Automake gives fine-grained control using the @samp{dist} and
 8168: @c @samp{nodist} prefixes.  Any primary or @samp{_SOURCES} variable can be
 8169: @c prefixed with @samp{dist_} to add the listed files to the distribution.
 8170: @c Similarly, @samp{nodist_} can be used to omit the files from the
 8171: @c distribution.
 8172: @c 
 8173: 配布物に含め@emph{ない}ものを細かく制御する必要があるときもあります.
 8174: 例えば,生成されたソースファイルと配布したくないソースファイルがあると
 8175: 仮定します.この場合は,Automakeは@samp{dist}と@samp{nodist}接頭辞を使
 8176: 用したきめ細かな制御を提供します.すべてのプライマリや@samp{_SOURCES}
 8177: 変数は,リストアップされているファイルを配布物に追加するため,
 8178: @samp{dist_}を前置することが可能です.同様に,ファイルを配布物から除去
 8179: するために,@samp{nodist_}を使用することが可能です.
 8180: @vindex dist_
 8181: @vindex nodist_
 8182: 
 8183: @c As an example, here is how you would cause some data to be distributed
 8184: @c while leaving some source code out of the distribution:
 8185: @c 
 8186: 例えば,配布するデータがあり配布しないソースコードもあるようにする方法
 8187: は,以下のようになります.
 8188: 
 8189: @example
 8190: dist_data_DATA = distribute-this
 8191: bin_PROGRAMS = foo
 8192: nodist_foo_SOURCES = do-not-distribute.c
 8193: @end example
 8194: 
 8195: @c @section The dist hook
 8196: @section distフック
 8197: 
 8198: @trindex dist-hook
 8199: 
 8200: @c Occasionally it is useful to be able to change the distribution before
 8201: @c it is packaged up.  If the @code{dist-hook} rule exists, it is run
 8202: @c after the distribution directory is filled, but before the actual tar
 8203: @c (or shar) file is created.  One way to use this is for distributing
 8204: @c files in subdirectories for which a new @file{Makefile.am} is overkill:
 8205: @c 
 8206: パッケージ化する前に,配布物の変更を可能にすことが有効な時もあります.
 8207: @code{dist-hook}ルールが存在する場合,配布ディレクトリが満たされた後で,
 8208: 実際のtar(あるいはshar)ファイルが作成される前に,それが実行されます.
 8209: これを利用する方法の一つには,新しい@file{Makefile.am}を作るまでもない
 8210: サブディレクトリのファイルを配布するためにあります.
 8211: 
 8212: @example
 8213: dist-hook:
 8214:         mkdir $(distdir)/random
 8215:         cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
 8216: @end example
 8217: 
 8218: @c Another way to to use this is for removing unnecessary files that get
 8219: @c recursively included by specifying a directory in EXTRA_DIST:
 8220: @c 
 8221: これを使用するもう一つの方法は,EXTRA_DISTでディレクトリを指定すること
 8222: で,再帰的にインクルードされる不必要なファイルを削除するために存在しま
 8223: す.
 8224: 
 8225: @example
 8226: EXTRA_DIST = doc
 8227: 
 8228: dist-hook:
 8229: 	rm -rf `find $(distdir)/doc -name CVS`
 8230: @end example
 8231: 
 8232: @vindex distdir
 8233: @vindex top_distdir
 8234: @c Two variables that come handy when writing @code{dist-hook} rules are
 8235: @c @code{$(distdir)} and @code{$(top_distdir)}.
 8236: @c 
 8237: @code{dist-hook}ルールを書くとき便利な二つの変数は,@code{$(distdir)} 
 8238: と@code{$(top_distdir)}です.
 8239: 
 8240: @c @code{$(distdir)} points to the directory where the @code{dist} rule
 8241: @c will copy files from the current directory before creating the
 8242: @c tarball.  If you are at the top-level directory, then @code{distdir =
 8243: @c $(PACKAGE)-$(VERSION)}.  When used from subdirectory named
 8244: @c @file{foo/}, then @code{distdir = ../$(PACKAGE)-$(VERSION)/foo}.
 8245: @c 
 8246: @code{$(distdir)}は,@code{dist}ルールがtarballを作成する前に,ファイ
 8247: ルを現在のディレクトリからコピーする場所を示します.最上位のディレクト
 8248: リにいる場合,@code{distdir = $(PACKAGE)-$(VERSION)}になります.
 8249: @file{foo/}と言う名前のサブディレクトリで使用するときは@code{distdir =
 8250: ../$(PACKAGE)-$(VERSION)/foo}になります.
 8251: 
 8252: @c @code{$(top_distdir)} always points to the root directory of the
 8253: @c distributed tree.  At the top-level it's equal to @code{$(distdir)}.
 8254: @c In the @file{foo/} subdirectory
 8255: @c @code{top_distdir = ../$(PACKAGE)-$(VERSION)}.
 8256: @c 
 8257: @code{$(top_distdir)}は,常に配布されるツリーのルートディレクトリを示
 8258: します.最上位では,それは@code{$(distdir)}と同じです.@file{foo/}サブ
 8259: ディレクトリでは,@code{top_distdir = ../$(PACKAGE)-$(VERSION)}になり
 8260: ます.
 8261: 
 8262: @c Note that when packages are nested using @code{AC_CONFIG_SUBDIRS}
 8263: @c (@pxref{Subdirectories, AC_CONFIG_SUBDIRS, Configuring Other Packages
 8264: @c in Subdirectories, autoconf, The Autoconf Manual}), then
 8265: @c @code{$(distdir)} and @code{$(top_distdir)} are relative to the
 8266: @c package where @code{make dist} was run, not to any sub-packages
 8267: @c involved.
 8268: @c 
 8269: パッケージが入れ子状の@code{AC_CONFIG_SUBDIRS}を使用しているとき
 8270: (@pxref{Subdirectories, AC_CONFIG_SUBDIRS, Configuring Other Packages
 8271: in Subdirectories, autoconf, The Autoconf Manual}),@code{$(distdir)} 
 8272: と@code{$(top_distdir)}が,サブパッケージの呼び出しではなく,
 8273: @code{make dist}が実行されているパッケージの場所から相対的なものになる
 8274: ことに注意して下さい.
 8275: 
 8276: @c @section Checking the distribution
 8277: @section 配布物の調査
 8278: 
 8279: @cindex make distcheck
 8280: @cindex make distcleancheck
 8281: @vindex distcleancheck_listfiles
 8282: @cindex make distuninstallcheck
 8283: @vindex distuninstallcheck_listfiles
 8284: 
 8285: @c Automake also generates a @code{distcheck} rule which can be of help
 8286: @c to ensure that a given distribution will actually work.
 8287: @c @code{distcheck} makes a distribution, then tries to do a @code{VPATH}
 8288: @c build, run the test suite, and finally make another tarfile to ensure the
 8289: @c distribution is self-contained.
 8290: @c 
 8291: Automakeは,与えられた配布物が実際に動作することの保証に役立つ
 8292: @code{distcheck}ルールを生成します.@code{distcheck}は実際に配布物を作
 8293: 成し,@code{VPATH}のビルドを試み,テストスイートを実行し,そして配布物
 8294: 自身が含まれることを確認するため,最終的に別のtarファイルを作成します.
 8295: @trindex distcheck
 8296: 
 8297: @c Building the package involves running @code{./configure}.  If you need
 8298: @c to supply additional flags to @code{configure}, define them in the
 8299: @c @code{DISTCHECK_CONFIGURE_FLAGS} variable, either in your top-level
 8300: @c @file{Makefile.am}, or on the command line when invoking @code{make}.
 8301: @c 
 8302: パッケージのビルドには,@code{./configure}の実行も含まれます.
 8303: @code{configure}に追加フラグを供給する必要がある場合は,最上位の
 8304: @file{Makefile.am},または@code{make}の呼出時のコマンドラインで
 8305: @code{DISTCHECK_CONFIGURE_FLAGS}変数で定義する必要があります.
 8306: @vindex DISTCHECK_CONFIGURE_FLAGS
 8307: 
 8308: @c If the @code{distcheck-hook} rule is defined in your
 8309: @c @file{Makefile.am}, then it will be invoked by @code{distcheck} after
 8310: @c the new distribution has been unpacked, but before the unpacked copy
 8311: @c is configured and built.  Your @code{distcheck-hook} can do almost
 8312: @c anything, though as always caution is advised.  Generally this hook is
 8313: @c used to check for potential distribution errors not caught by the
 8314: @c standard mechanism.
 8315: @c 
 8316: @code{distcheck-hook}ルールが@file{Makefile.am}で定義されている場合,
 8317: 新しい配布物が展開された後,展開されたコピーがconfigureされてビルドさ
 8318: れる前に,@code{distcheck}で呼び出されます.いつも通りの注意とアドバイ
 8319: スはありますが,@code{distcheck-hook}でほとんどすべてのことが可能です.
 8320: 通常このフックは,配布物のエラーが標準的なメカニズムで発生する可能性を
 8321: 調査するために使用されます.
 8322: 
 8323: @c Speaking about potential distribution errors, @code{distcheck} will also
 8324: @c ensure that the @code{distclean} rule actually removes all built
 8325: @c files.  This is done by running @code{make distcleancheck} at the end of
 8326: @c the @code{VPATH} build.  By default, @code{distcleancheck} will run
 8327: @c @code{distclean} and then make sure the build tree has been emptied by
 8328: @c running @code{$(distcleancheck_listfiles)}.  Usually this check will
 8329: @c find generated files that you forgot to add to the @code{DISTCLEANFILES}
 8330: @c variable (@pxref{Clean}).
 8331: @c 
 8332: 配布物エラーの可能性について述べると,@code{distcheck}では,
 8333: @code{distclean}ルールが実際に全てのビルドファイルも確実に削除するとい
 8334: うことです.これは,@code{VPATH}のビルドの終りに@code{make
 8335: distcleancheck}を実行することでなされます.デフォルトで,
 8336: @code{distcleancheck}は@code{distclean}を実行し,
 8337: @code{$(distcleancheck_listfiles)}を実行することでビルドツリーが空にな
 8338: ることを確かめます.通常この調査は,@code{DISTCLEANFILES}変数
 8339: (@pxref{Clean})に追加し忘れた,生成されるファイルを検出します.
 8340: @trindex distcleancheck
 8341: 
 8342: @c The @code{distcleancheck} behavior should be OK for most packages,
 8343: @c otherwise you have the possibility to override the definition of
 8344: @c either the @code{distcleancheck} rule, or the
 8345: @c @code{$(distcleancheck_listfiles)} variable.  For instance to disable
 8346: @c @code{distcleancheck} completely, add the following rule to your
 8347: @c top-level @file{Makefile.am}:
 8348: @c 
 8349: @code{distcleancheck}の動作は,ほとんどのパッケージでOKにすべきで,そ
 8350: うでない場合は,@code{distcleancheck}ルールや
 8351: @code{$(distcleancheck_listfiles)}変数の定義を優先している可能性があり
 8352: ます.@code{distcleancheck}が完全にできないものに対して,最上位の
 8353: @file{Makefile.am}に以下のルールを追加してください.
 8354: @vindex distcleancheck_listfiles
 8355: 
 8356: @example
 8357: distcleancheck:
 8358:         @@:
 8359: @end example
 8360: 
 8361: @c If you want @code{distcleancheck} to ignore built files which have not
 8362: @c been cleaned because they are also part of the distribution, add the
 8363: @c following definition instead:
 8364: @c 
 8365: 配布物の一部にもなるためクリーンしたくないビルドされたファイルを
 8366: @code{distcleancheck}で無視したい場合,代わりに以下の定義を追加してく
 8367: ださい.
 8368: 
 8369: @example
 8370: distcleancheck_listfiles = \
 8371:   find -type f -exec sh -c 'test -f $(srcdir)/@{@} || echo @{@}' ';'
 8372: @end example
 8373: 
 8374: @c The above definition is not the default because it's usually an error if
 8375: @c your Makefiles cause some distributed files to be rebuilt when the user
 8376: @c build the package.  (Think about the user missing the tool required to
 8377: @c build the file; or if the required tool is built by your package,
 8378: @c consider the cross-compilation case where it can't be run.)  There is
 8379: @c a FAQ entry about this (@pxref{distcleancheck}), make sure you read it
 8380: @c before playing with @code{distcleancheck_listfiles}.
 8381: @c 
 8382: ユーザがパッケージをビルドするとき,Makefileが配布されたファイルをリビ
 8383: ルドするものがある場合,それは通常エラーとなるので,上記の定義はデフォ
 8384: ルトではありません.(ファイルをビルドするために必要なユーザに足りない
 8385: ツールを考えてみてください.または,要求されたツールがパッケージでビル
 8386: ドされる場合,実行不可能なクロスコンパイルの状況を考慮してください.) 
 8387: これに関するFAQがあり(@pxref{distcleancheck}),
 8388: @code{distcleancheck_listfiles}を実行する前にそれをよく読んで下さい.
 8389: 
 8390: @c @code{distcheck} also checks that the @code{uninstall} rule works
 8391: @c properly, both for ordinary and @samp{DESTDIR} builds.  It does this
 8392: @c by invoking @code{make uninstall}, and then it checks the install tree
 8393: @c to see if any files are left over.  This check will make sure that you
 8394: @c correctly coded your @code{uninstall}-related rules.
 8395: @c 
 8396: @code{distcheck}は,@code{uninstall}ルールが,通常の場合と
 8397: @samp{DESTDIR}でのビルドの両方で適切に動作するかどうかも調査します.そ
 8398: れは@code{make uninstall}の呼び出しで行ない,ファイルが残っていないか
 8399: どうかをインストールツリーを見て調査します.この調査で,
 8400: @code{uninstall}に関連するルールを正しくコーディングしていることを確認
 8401: します.
 8402: 
 8403: @c By default, the checking is done by the @code{distuninstallcheck} rule,
 8404: @c and the list of files in the install tree is generated by
 8405: @c @code{$(distuninstallcheck_listfiles}) (this is a variable whose value is
 8406: @c a shell command to run that prints the list of files to stdout).
 8407: @c 
 8408: デフォルトで,その調査は@code{distuninstallcheck}ルールで行なわれ,イ
 8409: ンストールツリーのファイルリストは,
 8410: @code{$(distuninstallcheck_listfiles)}で生成されます(これは,ファイル
 8411: リストを標準出力に出力するために実行するシェルコマンドを値に持つ変数で
 8412: す).
 8413: 
 8414: @c Either of these can be overridden to modify the behavior of
 8415: @c @code{distcheck}.  For instance, to disable this check completely, you
 8416: @c would write:
 8417: @c 
 8418: これらのいずれかで,@code{distcheck}の動作を変更するために優先させるこ
 8419: とが可能です.例えば,この調査を完全に無効にするため,以下のように書く
 8420: でしょう.
 8421: 
 8422: @example
 8423: distuninstallcheck:
 8424:         @@:
 8425: @end example
 8426: 
 8427: @c @section The types of distributions
 8428: @section 配布物の形式
 8429: 
 8430: @c Automake generates rules to provide archives of the project for
 8431: @c distributions in various formats.  Their targets are:
 8432: @c 
 8433: Automakeは,様々なフォーマットでプロジェクトを配布するアーカイブを提供
 8434: するためのルールを生成します.ターゲットは以下のとおりです.
 8435: 
 8436: @table @asis
 8437: @item @code{dist-bzip2}
 8438: @c Generate a bzip2 tar archive of the distribution.  bzip2 archives are
 8439: @c frequently smaller than gzipped archives.
 8440: @c 
 8441: 配布物のbzip2されたtarアーカイブを生成します.bzip2アーカイブは,gzip 
 8442: されたアーカイブより小さくなることが多くなっています.
 8443: @trindex dist-bzip2
 8444: 
 8445: @item @code{dist-gzip}
 8446: @c Generate a gzip tar archive of the distribution.
 8447: @c 
 8448: gzipされたtarアーカイブを生成します.
 8449: @trindex dist-gzip
 8450: 
 8451: @item @code{dist-shar}
 8452: @c Generate a shar archive of the distribution.
 8453: @c 
 8454: 配布物のsharアーカイブを生成します.
 8455: @trindex dist-shar
 8456: 
 8457: @item @code{dist-zip}
 8458: @c Generate a zip archive of the distribution.
 8459: @c 
 8460: 配布物のzipアーカイブを生成します.
 8461: @trindex dist-zip
 8462: 
 8463: @item @code{dist-tarZ}
 8464: @c Generate a compressed tar archive of
 8465: @c the distribution.
 8466: @c 
 8467: 配布物の圧縮されたtarアーカイブを生成します.
 8468: @trindex dist-tarZ
 8469: @end table
 8470: 
 8471: @c The rule @code{dist} (and its historical synonym @code{dist-all}) will
 8472: @c create archives in all the enabled formats, @ref{Options}.  By
 8473: @c default, only the @code{dist-gzip} target is hooked to @code{dist}.
 8474: @c 
 8475: ルール@code{dist}(とその歴史的な同義語の@code{dist-all})は,利用可能な
 8476: すべてのフォーマットでアーカイブを作成します.@ref{Options}を参照して
 8477: 下さい.デフォルトでは,@code{dist-gzip}ターゲットだけが@code{dist}で
 8478: フックされます.
 8479: 
 8480: 
 8481: @node Tests
 8482: @c @chapter Support for test suites
 8483: @chapter テストスイートのサポート
 8484: 
 8485: @cindex Test suites
 8486: @cindex make check
 8487: 
 8488: @c Automake supports two forms of test suites.
 8489: @c 
 8490: Automakeは二つの形式のテストスイートをサポートします.
 8491: 
 8492: @c @section Simple Tests
 8493: @section 単純なテスト
 8494: 
 8495: @c If the variable @code{TESTS} is defined, its value is taken to be a list
 8496: @c of programs to run in order to do the testing.  The programs can either
 8497: @c be derived objects or source objects; the generated rule will look both
 8498: @c in @code{srcdir} and @file{.}.  Programs needing data files should look
 8499: @c for them in @code{srcdir} (which is both an environment variable and a
 8500: @c make variable) so they work when building in a separate directory
 8501: @c (@pxref{Build Directories, , Build Directories , autoconf, The Autoconf
 8502: @c Manual}), and in particular for the @code{distcheck} rule
 8503: @c (@pxref{Dist}).
 8504: @c 
 8505: 変数@code{TESTS}が定義されている場合,その値はテストを行なうために実行
 8506: するプログラムのリストになります.プログラムは,派生するオブジェクトあ
 8507: るいはソースオブジェクトです.生成されるルールは@code{srcdir}と
 8508: @file{.}の両方で探します.データファイルを必要としているプログラムは,
 8509: (環境変数とmake変数の両方の)@code{srcdir}でそれらを探すので,それらは,
 8510: 別々のディレクトリでビルドするとき(@pxref{Build Directories, , Build
 8511: Directories , autoconf, The Autoconf Manual}),特に@code{distcheck}ルー
 8512: ルに対して動作します(@pxref{Dist}).
 8513: 
 8514: @cindex Exit status 77, special interpretation
 8515: 
 8516: @c The number of failures will be printed at the end of the run.  If a
 8517: @c given test program exits with a status of 77, then its result is ignored
 8518: @c in the final count.  This feature allows non-portable tests to be
 8519: @c ignored in environments where they don't make sense.
 8520: @c 
 8521: 失敗の数は実行後に出力されます.所定のテストプログラムが77のステータス
 8522: で終了する場合,その結果は最終的なカウントで無視されます.この機能で,
 8523: 非移植性のテストが意味をなさない環境で無視することができます.
 8524: 
 8525: @c The variable @code{TESTS_ENVIRONMENT} can be used to set environment
 8526: @c variables for the test run; the environment variable @code{srcdir} is
 8527: @c set in the rule.  If all your test programs are scripts, you can also
 8528: @c set @code{TESTS_ENVIRONMENT} to an invocation of the shell (e.g.
 8529: @c @samp{$(SHELL) -x}); this can be useful for debugging the tests.
 8530: @c 
 8531: 変数@code{TESTS_ENVIRONMENT}は,テストの実行に対して環境変数を設定する
 8532: ために使用することが可能です.環境変数@code{srcdir}は,ルール内に設定
 8533: されます.すべてのテストプログラムがスクリプトの場合,
 8534: @code{TESTS_ENVIRONMENT}をシェルの呼び出しに設定することが可能です(例
 8535: えば@samp{$(SHELL) -x}).これはテストをデバッグするときに役立つはずで
 8536: す.
 8537: @vindex TESTS
 8538: @vindex TESTS_ENVIRONMENT
 8539: 
 8540: @cindex Tests, expected failure
 8541: @cindex Expected test failure
 8542: 
 8543: @c You may define the variable @code{XFAIL_TESTS} to a list of tests
 8544: @c (usually a subset of @code{TESTS}) that are expected to fail.  This will
 8545: @c reverse the result of those tests.
 8546: @c 
 8547: 変数@code{XFAIL_TESTS}を,失敗を期待するテストのリスト(通常は
 8548: @code{TESTS}のサブセット)に定義してもかまいません.これは,それらのテ
 8549: ストの結果を反転します.
 8550: @vindex XFAIL_TESTS
 8551: 
 8552: @c Automake ensures that each program listed in @code{TESTS} is built
 8553: @c before any tests are run; you can list both source and derived programs
 8554: @c in @code{TESTS}.  For instance, you might want to run a C program as a
 8555: @c test.  To do this you would list its name in @code{TESTS} and also in
 8556: @c @code{check_PROGRAMS}, and then specify it as you would any other
 8557: @c program.
 8558: @c 
 8559: Automakeは,@code{TESTS}でリストアップされているそれぞれのプログラムが,
 8560: テストを実行する前にビルドされることを確実にします.ソースと派生するプ
 8561: ログラムを@code{TESTS}にリストアップすることが可能です.例えば,テスト
 8562: としてCプログラムを実行したいかもしれません.こうするためには,その名
 8563: 前を@code{TESTS}と@code{check_PROGRAMS}にもリストアップし,それを他の
 8564: プログラムとして指定します.
 8565: 
 8566: @c @section DejaGnu Tests
 8567: @section DejaGnuのテスト
 8568: 
 8569: @c If @uref{ftp://ftp.gnu.org/gnu/dejagnu/, @samp{dejagnu}} appears in
 8570: @c @code{AUTOMAKE_OPTIONS}, then a @code{dejagnu}-based test suite is
 8571: @c assumed.  The variable @code{DEJATOOL} is a list of names which are
 8572: @c passed, one at a time, as the @code{--tool} argument to @code{runtest}
 8573: @c invocations; it defaults to the name of the package.
 8574: @c 
 8575: @uref{ftp://ftp.gnu.org/gnu/dejagnu/, @samp{dejagnu}}が
 8576: @code{AUTOMAKE_OPTIONS}にある場合,@code{dejagnu}ベースのテストスイー
 8577: トが想定されます.変数@code{DEJATOOL}は,@code{runtest}の呼び出しに
 8578: @code{--tool}引数として,一度に渡される名前のリストです.それはパッケー
 8579: ジの名前をデフォルトとします.
 8580: 
 8581: @c The variable @code{RUNTESTDEFAULTFLAGS} holds the @code{--tool} and
 8582: @c @code{--srcdir} flags that are passed to dejagnu by default; this can be
 8583: @c overridden if necessary.
 8584: @c 
 8585: 変数@code{RUNTESTDEFAULTFLAGS}は,デフォルトでdejagnuに渡される
 8586: @code{--tool}と@code{--srcdir}フラグを保持します.必要な場合は,これで
 8587: 優先することが可能です.
 8588: @vindex RUNTESTDEFAULTFLAGS
 8589: 
 8590: @c The variables @code{EXPECT} and @code{RUNTEST} can
 8591: @c also be overridden to provide project-specific values.  For instance,
 8592: @c you will need to do this if you are testing a compiler toolchain,
 8593: @c because the default values do not take into account host and target
 8594: @c names.
 8595: @c 
 8596: 変数@code{EXPECT}と@code{RUNTEST}で,プロジェクト特有の値を提供するた
 8597: めに優先することが可能です.例えば,コンパイラツールチェインをテストす
 8598: る場合,デフォルト値はホストとターゲットの名前を考慮しないので,こうす
 8599: る必要があります.
 8600: @opindex dejagnu
 8601: @vindex DEJATOOL
 8602: @vindex EXPECT
 8603: @vindex RUNTEST
 8604: 
 8605: @c The contents of the variable @code{RUNTESTFLAGS} are passed to the
 8606: @c @code{runtest} invocation.  This is considered a ``user variable''
 8607: @c (@pxref{User Variables}).  If you need to set @code{runtest} flags in
 8608: @c @file{Makefile.am}, you can use @code{AM_RUNTESTFLAGS} instead.
 8609: @c 
 8610: 変数@code{RUNTESTFLAGS}の内容は,@code{runtest}の呼び出しに渡されます.
 8611: これは,``ユーザ変数''(@pxref{User Variables})として扱われます.
 8612: @file{Makefile.am}に@code{runtest}フラグを設定する必要がある場合,代わ
 8613: りに@code{AM_RUNTESTFLAGS}を使用することが可能です.
 8614: @vindex RUNTESTFLAGS
 8615: @vindex AM_RUNTESTFLAGS
 8616: 
 8617: @cindex @file{site.exp}
 8618: @c Automake will generate rules to create a local @file{site.exp} file,
 8619: @c defining various variables detected by @code{./configure}.  This file
 8620: @c is automatically read by DejaGnu.  It is OK for the user of a package
 8621: @c to edit this file in order to tune the test suite.  However this is
 8622: @c not the place where the test suite author should define new variables:
 8623: @c this should be done elsewhere in the real test suite code.
 8624: @c Especially, @file{site.exp} should not be distributed.
 8625: @c 
 8626: Automakeは,@code{./configure}で検出した様々な変数を定義するローカルな
 8627: @file{site.exp}ファイルを生成するためのルールを生成します.このファイ
 8628: ルは,自動的にDejaGnuで読み込まれます.パッケージユーザがテストスイー
 8629: トを調整するためにこのファイルを編集することは問題ありません.しかし,
 8630: テストスイートの著者が新しい変数を定義する場所ではありません.これは,
 8631: 実際のテストスイートのコードのどこかでなされるべきです.特に,
 8632: @file{site.exp}を配布すべきではありません.
 8633: 
 8634: @c For more information regarding DejaGnu test suites, see @xref{Top, , ,
 8635: @c dejagnu, The DejaGnu Manual}.
 8636: @c 
 8637: DejaGnuのテストスイートに関する詳細は,@xref{Top, , , dejagnu, The
 8638: DejaGnu Manual}.
 8639: 
 8640: @c In either case, the testing is done via @samp{make check}.
 8641: @c 
 8642: どちらの状況でも,テストは@samp{make check}で実行されます.
 8643: 
 8644: @c @section Install Tests
 8645: @section インストールテスト
 8646: 
 8647: @c The @code{installcheck} target is available to the user as a way to
 8648: @c run any tests after the package has been installed.  You can add tests
 8649: @c to this by writing an @code{installcheck-local} rule.
 8650: @c 
 8651: @code{installcheck}ターゲットは,パッケージがインストールされた後でテ
 8652: ストを実行する方法をユーザが利用可能にします.
 8653: @code{installcheck-local}ルールを書くことで,これをテストに追加するこ
 8654: とが可能です.
 8655: 
 8656: 
 8657: @node Rebuilding
 8658: @c @chapter Rebuilding Makefiles
 8659: @chapter Makefileのリビルド
 8660: @cindex rebuild rules
 8661: 
 8662: @c Automake generates rules to automatically rebuild @file{Makefile}s,
 8663: @c @file{configure}, and other derived files like @file{Makefile.in}.
 8664: @c 
 8665: Automakeは,@file{Makefile},@file{configure},そして
 8666: @file{Makefile.in}のようなその他の派生するファイルを,自動的にリビルド
 8667: するルールを生成します.
 8668: 
 8669: @cvindex AM_MAINTAINER_MODE
 8670: @c If you are using @code{AM_MAINTAINER_MODE} in @file{configure.ac}, then
 8671: @c these automatic rebuilding rules are only enabled in maintainer mode.
 8672: @c 
 8673: @file{configure.ac}で@code{AM_MAINTAINER_MODE}を使用している場合,これ
 8674: らの自動的なリビルドのルールは,管理者モードでのみ利用可能になります.
 8675: 
 8676: @vindex ACLOCAL_AMFLAGS
 8677: @c Sometimes you need to run @code{aclocal} with an argument like @code{-I}
 8678: @c to tell it where to find @file{.m4} files.  Since sometimes @code{make}
 8679: @c will automatically run @code{aclocal}, you need a way to specify these
 8680: @c arguments.  You can do this by defining @code{ACLOCAL_AMFLAGS}; this
 8681: @c holds arguments which are passed verbatim to @code{aclocal}.  This variable
 8682: @c is only useful in the top-level @file{Makefile.am}.
 8683: @c 
 8684: @file{.m4}ファイルを探す場所を伝えるために,@code{-I}のような引数を用
 8685: いて@code{aclocal}実行する必要があることもあります.@code{make}が自動
 8686: 的に@code{aclocal}を実行するときもあるので,これらの引数を指定する方法
 8687: が必要になります.@code{ACLOCAL_AMFLAGS}を定義することで,こうすること
 8688: が可能になります.これは,@code{aclocal}に渡す引数をそのまま保持してい
 8689: ます.この変数は,最上位の@file{Makefile.am}でのみ役に立ちます.
 8690: 
 8691: @vindex CONFIG_STATUS_DEPENDENCIES
 8692: @vindex CONFIGURE_DEPENDENCIES
 8693: @cindex @file{version.sh}, example
 8694: @cindex @file{version.m4}, example
 8695: 
 8696: @c Sometimes it is convenient to supplement the rebuild rules for
 8697: @c @file{configure} or @file{config.status} with additional dependencies.
 8698: @c The variables @code{CONFIGURE_DEPENDENCIES} and
 8699: @c @code{CONFIG_STATUS_DEPENDENCIES} can be used to list these extra
 8700: @c dependencies.  These variable should be defined in all
 8701: @c @file{Makefile}s of the tree (because these two rebuild rules are
 8702: @c output in all them), so it is safer and easier to @code{AC_SUBST} them
 8703: @c from @file{configure.ac}.  For instance the following statement will
 8704: @c cause @file{configure} to be rerun each time @file{version.sh} is
 8705: @c changed.
 8706: @c 
 8707: 追加の依存性を用いて@file{configure}や@file{config.status}をリビルドす
 8708: るルールを補足すると便利なときもあります.変数
 8709: @code{CONFIGURE_DEPENDENCIES}と@code{CONFIG_STATUS_DEPENDENCIES}をこれ
 8710: らの追加の依存性をリストアップするために使用することが可能です.これら
 8711: の変数はツリー内のすべての@file{Makefile}で定義されるべきなので(これら
 8712: 二つのリビルドルールはすべてのものに出力されるため),
 8713: @file{configure.ac}で@code{AC_SUBST}するのが安全で簡単です.例えば以下
 8714: の文で,@file{version.sh}が変更されるたび@file{configure}が再実行され
 8715: ます.
 8716: @example
 8717: AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version.sh'])
 8718: @end example
 8719: @noindent
 8720: @c Note the @code{$(top_srcdir)/} in the filename.  Since this variable
 8721: @c is to be used in all @file{Makefile}s, its value must be sensible at
 8722: @c any level in the build hierarchy.
 8723: @c 
 8724: ファイル名に@code{$(top_srcdir)/}があることに注意して下さい.この変数
 8725: はすべての@file{Makefile}で使用されるので,その値はビルドの階層レベル
 8726: を知っておく必要があります.
 8727: 
 8728: @c Beware not to mistake @code{CONFIGURE_DEPENDENCIES} for
 8729: @c @code{CONFIG_STATUS_DEPENDENCIES}.
 8730: @c 
 8731: @code{CONFIG_STATUS_DEPENDENCIES}に対する@code{CONFIGURE_DEPENDENCIES} 
 8732: を誤解しないように注意して下さい.
 8733: 
 8734: @c @code{CONFIGURE_DEPENDENCIES} adds dependencies to the
 8735: @c @file{configure} rule, whose effect is to run @code{autoconf}.  This
 8736: @c variable should be seldom used, because @code{automake} already tracks
 8737: @c @code{m4_include}d files.  However it can be useful when playing
 8738: @c tricky games with @code{m4_esyscmd} or similar non-recommendable
 8739: @c macros with side effects.
 8740: @c 
 8741: @code{CONFIGURE_DEPENDENCIES}は@file{configure}ルールに依存性を追加し,
 8742: それは@code{autoconf}を実行することになります.@code{automake}は既に
 8743: @code{m4_include}されるファイルを追跡しているので,この変数は,滅多に
 8744: 使用すべきではありません.しかし,@code{m4_esyscmd}やそれに似た副作用
 8745: のある推奨されていないマクロを用いたトリッキーなゲームを楽しんでいると
 8746: き役に立つはずです.
 8747: 
 8748: @c @code{CONFIG_STATUS_DEPENDENCIES} adds dependencies to the
 8749: @c @file{config.status} rule, whose effect is to run @file{configure}.
 8750: @c This variable should therefore carry any non-standard source that may
 8751: @c be read as a side effect of running configure, like @file{version.sh}
 8752: @c in the example above.
 8753: @c 
 8754: @code{CONFIG_STATUS_DEPENDENCIES}は@file{config.status}ルールに依存性
 8755: を追加し,それは@file{configure}を実行することになります.このため,こ
 8756: の変数として,configureの実行に副作用として読み込まれる可能性がないよ
 8757: うに,標準的ではないソースを持ち込むべきで,例えば上記の例の
 8758: @file{version.sh}などです.
 8759: 
 8760: @c Speaking of @file{version.sh} scripts, we recommend against them
 8761: @c today.  They are mainly used when the version of a package is updated
 8762: @c automatically by a script (e.g., in daily builds).  Here is what some
 8763: @c old-style @file{configure.ac}s may look like:
 8764: @c 
 8765: @file{version.sh}スクリプトについて言わせてもらうと,我々は今日,それ
 8766: を推奨していません.それらは主に,パッケージのバージョンをスクリプトで
 8767: 自動的に更新するとき使用されていました(例えば,毎日のビルド).古い形式
 8768: の@file{configure.ac}は以下のようになっているものもありました.
 8769: @example
 8770: AC_INIT
 8771: . $srcdir/version.sh
 8772: AM_INIT_AUTOMAKE([name], $VERSION_NUMBER)
 8773: @dots{}
 8774: @end example
 8775: @noindent
 8776: @c Here, @file{version.sh} is a shell fragment that sets
 8777: @c @code{VERSION_NUMBER}.  The problem with this example is that
 8778: @c @code{automake} cannot track dependencies (listing @file{version.sh}
 8779: @c in @code{CONFIG_STATUS_DEPENDENCIES}, and distributing this file is up
 8780: @c to the user), and that it uses the obsolete form of @code{AC_INIT} and
 8781: @c @code{AM_INIT_AUTOMAKE}.  Upgrading to the new syntax is not
 8782: @c straightforward, because shell variables are not allowed in
 8783: @c @code{AC_INIT}'s arguments.  We recommend that @file{version.sh} be
 8784: @c replaced by an M4 file that is included by @file{configure.ac}:
 8785: @c 
 8786: ここで,@file{version.sh}はシェルの断片で,@code{VERSION_NUMBER}を設定
 8787: します.この例の問題は,@code{automake}が依存性を追跡できないことと
 8788: (@file{version.sh}を@code{CONFIG_STATUS_DEPENDENCIES}にリストアップし,
 8789: このファイルをユーザに配布する),古い形式の@code{AC_INIT}と
 8790: @code{AM_INIT_AUTOMAKE}を使用していることです.新しい構文に更新するの
 8791: は,@code{AC_INIT}の引数でシェル変数が利用できないので,素直な方法では
 8792: ありません.我々は@file{version.sh}を@file{configure.ac}でインクルード
 8793: されるM4ファイルで置換することを推奨します.
 8794: @example
 8795: m4_include([version.m4])
 8796: AC_INIT([name], VERSION_NUMBER)
 8797: AM_INIT_AUTOMAKE
 8798: @dots{}
 8799: @end example
 8800: @noindent
 8801: @c Here @file{version.m4} could contain something like
 8802: @c @code{m4_define([VERSION_NUMBER], [1.2])}.  The advantage of this
 8803: @c second form is that @code{automake} will take care of the dependencies
 8804: @c when defining the rebuild rule, and will also distribute the file
 8805: @c automatically.  An inconvenient is that @code{autoconf} will now be
 8806: @c rerun each time the version number is bumped, when only
 8807: @c @file{configure} had to be rerun in the previous setup.
 8808: @c 
 8809: ここで,@file{version.m4}には@code{m4_define([VERSION_NUMBER], [1.2])} 
 8810: のようなものを含めることができます.この二番目の形式の利点は,
 8811: @code{automake}がリビルドルールを定義するとき依存性に注意し,ファイル
 8812: も自動的に配布されることです.不便な点は,バージョンナンバーが上昇する
 8813: たびに@code{autoconf}が再実行されることで,以前の設定では,
 8814: @file{configure}だけが再実行されていました.
 8815: 
 8816: @node Options
 8817: @c @chapter Changing Automake's Behavior
 8818: @chapter Automakeの動作の変更
 8819: 
 8820: @c Various features of Automake can be controlled by options in the
 8821: @c @file{Makefile.am}.  Such options are applied on a per-@file{Makefile}
 8822: @c basis when listed in a special @file{Makefile} variable named
 8823: @c @code{AUTOMAKE_OPTIONS}.  They are applied globally to all processed
 8824: @c @file{Makefiles} when listed in the first argument of
 8825: @c @code{AM_INIT_AUTOMAKE} in @file{configure.ac}.  Currently understood
 8826: @c options are:
 8827: @c 
 8828: Automakeの様々な機能は,@file{Makefile.am}のオプションで制御可能です.
 8829: このようなオプションは,@code{AUTOMAKE_OPTIONS}という名前の特別な
 8830: @file{Makefile}変数にリストアップすることで,@file{Makefile}ごとを基本
 8831: に適用されます.@file{configure.ac}の@code{AM_INIT_AUTOMAKE}の最初の引
 8832: 数にリストアップすることで,処理されるすべての@file{Makefiles}に大域的
 8833: に適用されます.現在理解されるオプションは以下のとおりです.
 8834: @vindex AUTOMAKE_OPTIONS
 8835: 
 8836: @table @asis
 8837: @item @code{gnits}
 8838: @itemx @code{gnu}
 8839: @itemx @code{foreign}
 8840: @itemx @code{cygnus}
 8841: @cindex Option, gnits
 8842: @cindex Option, gnu
 8843: @cindex Option, foreign
 8844: @cindex Option, cygnus
 8845: 
 8846: @c Set the strictness as appropriate.  The @code{gnits} option also implies
 8847: @c @code{readme-alpha} and @code{check-news}.
 8848: @c 
 8849: 適切に厳密さを設定します.@code{gnits}オプションは,
 8850: @code{readme-alpha} と@code{check-news}も暗黙に指定します.
 8851: 
 8852: @item @code{ansi2knr}
 8853: @itemx @code{@var{path}/ansi2knr}
 8854: @cindex Option, ansi2knr
 8855: @c Turn on automatic de-ANSI-fication.  @xref{ANSI}.  If preceded by a
 8856: @c path, the generated @file{Makefile.in} will look in the specified
 8857: @c directory to find the @file{ansi2knr} program.  The path should be a
 8858: @c relative path to another directory in the same distribution (Automake
 8859: @c currently does not check this).
 8860: @c 
 8861: 自動的なde-ANSI-ficationを開始します.@xref{ANSI}.  パスが前置されてい
 8862: る場合,生成される@file{Makefile.in}は,@file{ansi2knr}プログラムを見
 8863: つけるために指定されたディレクトリを探します.パスは(Automakeは現在こ
 8864: れを調査しませんが),同じ配布物内の他のディレクトリへの相対的なパスに
 8865: すべきです.
 8866: 
 8867: @item @code{check-news}
 8868: @cindex Option, check-news
 8869: @c Cause @code{make dist} to fail unless the current version number appears
 8870: @c in the first few lines of the @file{NEWS} file.
 8871: @c 
 8872: 現在のバージョンナンバーが@file{NEWS}ファイルの最初の数行に無い場合,
 8873: @code{make dist}は失敗します.
 8874: 
 8875: @item @code{dejagnu}
 8876: @cindex Option, dejagnu
 8877: @c Cause @code{dejagnu}-specific rules to be generated.  @xref{Tests}.
 8878: @c 
 8879: @code{dejagnu}特有のルールを生成します.@xref{Tests}.
 8880: 
 8881: @item @code{dist-bzip2}
 8882: @cindex Option, dist-bzip2
 8883: @c Hook @code{dist-bzip2} to @code{dist}.
 8884: @c 
 8885: @code{dist-bzip2}を@code{dist}にフックします.
 8886: @trindex dist-bzip2
 8887: 
 8888: @item @code{dist-shar}
 8889: @cindex Option, dist-shar
 8890: @c Hook @code{dist-shar} to @code{dist}.
 8891: @c 
 8892: @code{dist-shar}を@code{dist}にフックします.
 8893: @trindex dist-shar
 8894: 
 8895: @item @code{dist-zip}
 8896: @cindex Option, dist-zip
 8897: @c Hook @code{dist-zip} to @code{dist}.
 8898: @c 
 8899: @code{dist-zip}を@code{dist}にフックします.
 8900: @trindex dist-zip
 8901: 
 8902: @item @code{dist-tarZ}
 8903: @cindex Option, dist-tarZ
 8904: @c Hook @code{dist-tarZ} to @code{dist}.
 8905: @c 
 8906: @code{dist-tarZ}を@code{dist}にフックします.
 8907: @trindex dist-tarZ
 8908: 
 8909: @item @code{no-define}
 8910: @cindex Option, no-define
 8911: @c This options is meaningful only when passed as an argument to
 8912: @c @code{AM_INIT_AUTOMAKE}.  It will prevent the @code{PACKAGE} and
 8913: @c @code{VERSION} variables to be @code{AC_DEFINE}d.
 8914: @c 
 8915: このオプションは,@code{AM_INIT_AUTOMAKE}への引数として渡すときだけ意
 8916: 味があります.それは@code{PACKAGE}と@code{VERSION}変数が
 8917: @code{AC_DEFINE}されることを妨げます.
 8918: 
 8919: @item @code{no-dependencies}
 8920: @cindex Option, no-dependencies
 8921: @c This is similar to using @samp{--include-deps} on the command line, but
 8922: @c is useful for those situations where you don't have the necessary bits
 8923: @c to make automatic dependency tracking work @xref{Dependencies}.  In this
 8924: @c case the effect is to effectively disable automatic dependency tracking.
 8925: @c 
 8926: これは,コマンドラインで@samp{--include-deps}を使用することに似ていま
 8927: すが,自動的な依存追跡の仕事をするために必要なビットが無い状況で役に立
 8928: ちます.@xref{Dependencies}.  この状況では,効率的な自動的な依存追跡に
 8929: 障害を与えます.
 8930: 
 8931: @item @code{no-dist}
 8932: @cindex Option, no-dist
 8933: @c Don't emit any code related to @code{dist} target.  This is useful
 8934: @c when a package has its own method for making distributions.
 8935: @c 
 8936: @code{dist}ターゲットに関連するコードを生成しません.これは,パッケー
 8937: ジに独自の配布物を作成する手法があるとき役に立ちます.
 8938: 
 8939: @item @code{no-dist-gzip}
 8940: @cindex Option, no-dist-gzip
 8941: @c Do not hook @code{dist-gzip} to @code{dist}.
 8942: @c 
 8943: @code{dist-gzip}を@code{dist}にフックしません.
 8944: @trindex no-dist-gzip
 8945: 
 8946: @item @code{no-exeext}
 8947: @cindex Option, no-exeext
 8948: @c If your @file{Makefile.am} defines a rule for target @samp{foo}, it
 8949: @c will override a rule for a target named @samp{foo$(EXEEXT)}.  This is
 8950: @c necessary when @code{EXEEXT} is found to be empty.  However, by
 8951: @c default automake will generate an error for this use.  The
 8952: @c @code{no-exeext} option will disable this error.  This is intended for
 8953: @c use only where it is known in advance that the package will not be
 8954: @c ported to Windows, or any other operating system using extensions on
 8955: @c executables.
 8956: @c 
 8957: @file{Makefile.am}でターゲット@samp{foo}に対するルールを定義している場
 8958: 合,@samp{foo$(EXEEXT)}と指名されているターゲットに対するルールに優先
 8959: します.@code{EXEEXT}が空のとき,これが必要です.しかし,デフォルトで,
 8960: automakeではこれの使用に対してエラーを発生します.@code{no-exeext}オプ
 8961: ションで,このエラーが発生しないようにします.これは,Windowsや実行形
 8962: 式の拡張子を使用しているそれ以外のすべてのオペレーティングシステムに移
 8963: 植する予定の無いパッケージだと分かっている場合のみ使用するものです.
 8964: 
 8965: @item @code{no-installinfo}
 8966: @cindex Option, no-installinfo
 8967: @c The generated @file{Makefile.in} will not cause info pages to be built
 8968: @c or installed by default.  However, @code{info} and @code{install-info}
 8969: @c targets will still be available.  This option is disallowed at
 8970: @c @samp{GNU} strictness and above.
 8971: @c 
 8972: 生成された@file{Makefile.in}はデフォルトで,infoページをビルドしたりイ
 8973: ンストールしたりしません.しかし,@code{info}と@code{install-info}ター
 8974: ゲットは利用可能です.このオプションは@samp{GNU}の厳密さでは拒絶されま
 8975: す.
 8976: @trindex info
 8977: @trindex install-info
 8978: 
 8979: @item @code{no-installman}
 8980: @cindex Option, no-installman
 8981: @c The generated @file{Makefile.in} will not cause man pages to be
 8982: @c installed by default.  However, an @code{install-man} target will still
 8983: @c be available for optional installation.  This option is disallowed at
 8984: @c @samp{GNU} strictness and above.
 8985: @c 
 8986: 生成された@file{Makefile.in}はデフォルトでman pageをインストールしませ
 8987: ん.しかし,@code{install-man}ターゲットはオプショナルインストールで利
 8988: 用可能です.このオプションは@samp{GNU}の厳密さで使用不可能です.
 8989: @trindex install-man
 8990: 
 8991: @item @code{nostdinc}
 8992: @cindex Option, nostdinc
 8993: @c This option can be used to disable the standard @samp{-I} options which
 8994: @c are ordinarily automatically provided by Automake.
 8995: @c 
 8996: このオプションは,通常Automakeが自動的に供給する標準的な@samp{-I}オプ
 8997: ションを利用不可能にするために使用することが可能です.
 8998: 
 8999: @item @code{no-texinfo.tex}
 9000: @cindex Option, no-texinfo
 9001: @c Don't require @file{texinfo.tex}, even if there are texinfo files in
 9002: @c this directory.
 9003: @c 
 9004: このディレクトリにTexinfoファイルがあっても,@file{texinfo.tex}を必要
 9005: としません.
 9006: 
 9007: @item @code{readme-alpha}
 9008: @cindex Option, readme-alpha
 9009: @c If this release is an alpha release, and the file @file{README-alpha}
 9010: @c exists, then it will be added to the distribution.  If this option is
 9011: @c given, version numbers are expected to follow one of two forms.  The
 9012: @c first form is @samp{@var{MAJOR}.@var{MINOR}.@var{ALPHA}}, where each
 9013: @c element is a number; the final period and number should be left off for
 9014: @c non-alpha releases.  The second form is
 9015: @c @samp{@var{MAJOR}.@var{MINOR}@var{ALPHA}}, where @var{ALPHA} is a
 9016: @c letter; it should be omitted for non-alpha releases.
 9017: @c 
 9018: このリリースがアルファリリースで,ファイル@file{README-alpha}が存在す
 9019: る場合,それは配布物に加えられます.このオプションが与えられている場合,
 9020: バージョンナンバーは次の二つの形式のうちの一つだと期待されます.最初の
 9021: 形式は@samp{@var{MAJOR}.@var{MINOR}.@var{ALPHA}}で,それぞれの要素が数
 9022: 字です.最後のピリオドと数字は非アルファのリリースのときに捨てられます.
 9023: 二番目の形式は@samp{@var{MAJOR}.@var{MINOR}@var{ALPHA}}で,@var{ALPHA}
 9024: は文字列です.それは非アルファのリリースのときに取り除かれます.
 9025: 
 9026: @item @code{std-options}
 9027: @cindex Options, std-options
 9028: @cindex make installcheck
 9029: @c Make the @code{installcheck} rule check that installed scripts and
 9030: @c programs support the @code{--help} and @code{--version} options.
 9031: @c This also provides a basic check that the program's
 9032: @c run-time dependencies are satisfied after installation.
 9033: @c 
 9034: @code{installcheck}ルールで,インストールされたスクリプトとプログラム
 9035: が,@code{--help}と@code{--version}オプションをサポートしているかどう
 9036: かを調査するようにします.これは,プログラムの実行時の依存性がインストー
 9037: ル後にも満足しているという基本的な調査も提供します.
 9038: 
 9039: @vindex AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
 9040: @c In a few situations, programs (or scripts) have to be exempted from this
 9041: @c test.  For instance @command{false} (from GNU sh-utils) is never
 9042: @c successful, even for @code{--help} or @code{--version}.  You can list
 9043: @c such programs in the variable @code{AM_INSTALLCHECK_STD_OPTIONS_EXEMPT}.
 9044: @c Programs (not scripts) listed in this variable should be suffixed by
 9045: @c @code{$(EXEEXT)} for the sake of Win32 or OS/2.  For instance suppose we
 9046: @c build @code{false} as a program but @code{true.sh} as a script, and that
 9047: @c neither of them support @code{--help} or @code{--version}:
 9048: @c 
 9049: 状況によって,プログラム(またはスクリプト)でこのテストを免除させる必要
 9050: があるかもしれません.例えば,(GNUのsh-utilsの)@command{false}は,
 9051: @code{--help}や@code{--version}でさえ,決して成功しません.そのような
 9052: プログラムは,変数@code{AM_INSTALLCHECK_STD_OPTIONS_EXEMPT}でリストアッ
 9053: プすることが可能です.この変数にリストアップされているプログラム(スク
 9054: リプトではない)は,Win32やOS/2に対して@code{$(EXEEXT)}で接尾子が付きま
 9055: す.例えば,@code{false}をプログラムとして,@code{true.sh}をスクリプト
 9056: としてビルドしようと仮定し,@code{--help}や@code{--version}をどちらも
 9057: サポートしないものとします.
 9058: 
 9059: @example
 9060: AUTOMAKE_OPTIONS = std-options
 9061: bin_PROGRAMS = false ...
 9062: bin_SCRIPTS = true.sh ...
 9063: AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false$(EXEEXT) true.sh
 9064: @end example
 9065: 
 9066: @item @code{subdir-objects}
 9067: @c If this option is specified, then objects are placed into the
 9068: @c subdirectory of the build directory corresponding to the subdirectory of
 9069: @c the source file.  For instance if the source file is
 9070: @c @file{subdir/file.cxx}, then the output file would be
 9071: @c @file{subdir/file.o}.
 9072: @c 
 9073: このオプションが指定されている場合,オブジェクトはソースファイルのサブ
 9074: ディレクトリに対応する,ビルドディレクトリのサブディレクトリに配置され
 9075: ます.例えば,ソースファイルが@file{subdir/file.cxx}の場合,出力ファイ
 9076: ルは@file{subdir/file.o}になります.
 9077: 
 9078: @item @var{version}
 9079: @cindex Option, version
 9080: @c A version number (e.g. @samp{0.30}) can be specified.  If Automake is not
 9081: @c newer than the version specified, creation of the @file{Makefile.in}
 9082: @c will be suppressed.
 9083: @c 
 9084: バージョンナンバー(例えば@samp{0.30})が指定可能です.Automakeが,指定
 9085: されているバージョンより新しくない場合,@file{Makefile.in}の作成は行な
 9086: われません.
 9087: 
 9088: @item @code{-W@var{category}} or @code{--warnings=@var{category}}
 9089: @cindex Option, warnings
 9090: @c These options behave exactly like their command-line counterpart
 9091: @c (@pxref{Invoking Automake}).  This allows you to enable or disable some
 9092: @c warning categories on a per-file basis.  You can also setup some warnings
 9093: @c for your entire project; for instance try @code{AM_INIT_AUTOMAKE([-Wall])}
 9094: @c in your @file{configure.ac}.
 9095: @c 
 9096: これらのオプションは,コマンドラインに正確に対応するもののように動作し
 9097: ます(@pxref{Invoking Automake}).これでファイルごとを基本に,警告のカ
 9098: テゴリを有効にしたり無効にしたりすることが可能になります.プロジェクト
 9099: 全体に警告の設定を行なうことも可能です.例えば,@file{configure.ac}で
 9100: @code{AM_INIT_AUTOMAKE([-Wall])}を試してください.
 9101: 
 9102: @end table
 9103: 
 9104: @c Unrecognized options are diagnosed by @code{automake}.
 9105: @c 
 9106: 認識できないオプションは@code{automake}が判断します.
 9107: 
 9108: @c If you want an option to apply to all the files in the tree, you can use
 9109: @c the @code{AM_INIT_AUTOMAKE} macro in @file{configure.ac}.
 9110: @c @xref{Macros}.
 9111: @c 
 9112: ツリーの全てのファイルにオプションを適用したい場合,
 9113: @file{configure.ac}の@code{AM_INIT_AUTOMAKE}を使用することが可能です.
 9114: @xref{Macros}.
 9115: 
 9116: 
 9117: @node Miscellaneous
 9118: @c @chapter Miscellaneous Rules
 9119: @chapter 雑多なルール
 9120: 
 9121: @c There are a few rules and variables that didn't fit anywhere else.
 9122: @c 
 9123: 他のどこにも適さない少数のルールと変数があります.
 9124: 
 9125: @menu
 9126: * Tags::                        Interfacing to etags and mkid
 9127: * Suffixes::                    Handling new file extensions
 9128: * Multilibs::                   Support for multilibs.
 9129: @end menu
 9130: 
 9131: 
 9132: @node Tags
 9133: @c @section Interfacing to @code{etags}
 9134: @section @code{etags}のインターフェース
 9135: 
 9136: @cindex TAGS support
 9137: 
 9138: @c Automake will generate rules to generate @file{TAGS} files for use with
 9139: @c GNU Emacs under some circumstances.
 9140: @c 
 9141: Automakeは,GNU Emacsで使用する@file{TAGS}ファイルを生成するためのルー
 9142: ルを生成する場合もあります.
 9143: 
 9144: @c If any C, C++ or Fortran 77 source code or headers are present, then
 9145: @c @code{tags} and @code{TAGS} rules will be generated for the directory.
 9146: @c 
 9147: C,C++,またはFortran 77のソースコードやヘッダが存在している場合,
 9148: @code{tags}と@code{TAGS}ルールがディレクトリに対して生成されます.
 9149: @trindex tags
 9150: 
 9151: @c At the topmost directory of a multi-directory package, a @code{tags}
 9152: @c rule will be output which, when run, will generate a @file{TAGS} file
 9153: @c that includes by reference all @file{TAGS} files from subdirectories.
 9154: @c 
 9155: 複数のディレクトリがあるパッケージのトップディレクトリで,@code{tags} 
 9156: ルールは実行時に出力され,それは実行時に,サブディレクトリにあるすべて
 9157: の@file{TAGS}ファイルの参照を含んでいる@file{TAGS}ファイルを生成します.
 9158: 
 9159: @c The @code{tags} rule will also be generated if the variable
 9160: @c @code{ETAGS_ARGS} is defined.  This variable is intended for use in
 9161: @c directories which contain taggable source that @code{etags} does not
 9162: @c understand.  The user can use the @code{ETAGSFLAGS} to pass additional
 9163: @c flags to @code{etags}; @code{AM_ETAGSFLAGS} is also available for use
 9164: @c in @file{Makefile.am}.
 9165: @c 
 9166: 変数@code{ETAGS_ARGS}が定義されている場合,@code{tags}ルールも生成され
 9167: ます.この変数は,@code{etags}が理解しないタグを使用しているソースを含
 9168: んでいるディレクトリでの使用を考慮しています.ユーザは@code{etags}に追
 9169: 加のフラグを渡すために@code{ETAGSFLAGS}を使用することが可能です.
 9170: @file{Makefile.am}で@code{AM_ETAGSFLAGS}を利用することもできます.
 9171: @vindex ETAGS_ARGS
 9172: @vindex ETAGSFLAGS
 9173: @vindex AM_ETAGSFLAGS
 9174: 
 9175: @c Here is how Automake generates tags for its source, and for nodes in its
 9176: @c Texinfo file:
 9177: @c 
 9178: ソースとTexinfoファイルのノードに対するタグをAutomakeで生成する方法は
 9179: 以下のようになります.
 9180: 
 9181: @example
 9182: ETAGS_ARGS = automake.in --lang=none \
 9183:  --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
 9184: @end example
 9185: 
 9186: @c If you add filenames to @samp{ETAGS_ARGS}, you will probably also
 9187: @c want to set @samp{TAGS_DEPENDENCIES}.  The contents of this variable
 9188: @c are added directly to the dependencies for the @code{tags} rule.
 9189: @c 
 9190: @samp{ETAGS_ARGS}にファイル名を加える場合,おそらく
 9191: @samp{TAGS_DEPENDENCIES}も設定したいでしょう.この変数の中身は
 9192: @code{tags}ルール対する依存性に直接追加されます.
 9193: @vindex TAGS_DEPENDENCIES
 9194: 
 9195: @c Automake also generates a @code{ctags} rule which can be used to
 9196: @c build @command{vi}-style @file{tags} files.  The variable @code{CTAGS}
 9197: @c is the name of the program to invoke (by default @samp{ctags});
 9198: @c @code{CTAGSFLAGS} can be used by the user to pass additional flags,
 9199: @c and @code{AM_CTAGSFLAGS} can be used by the @file{Makefile.am}.
 9200: @c 
 9201: Automakeは,@command{vi}形式の@file{tags}ファイルのビルドで使用される,
 9202: @code{ctags}ルールを生成します.変数@code{CTAGS}は,呼び出されるプログ
 9203: ラムの名前です(デフォルトは@samp{ctags}).@code{CTAGSFLAGS}は,ユーザ
 9204: が追加フラグを渡すために使用され,@code{AM_CTAGSFLAGS}は
 9205: @file{Makefile.am}で使用されます.
 9206: 
 9207: @c Automake will also generate an @code{ID} rule which will run
 9208: @c @code{mkid} on the source.  This is only supported on a
 9209: @c directory-by-directory basis.
 9210: @c 
 9211: Automakeは,@code{mkid}をソース上で実行する@code{ID}ルールも生成します.
 9212: これはディレクトリ単位に基づくサポートだけです.
 9213: @trindex id
 9214: 
 9215: @c Automake also supports the @uref{http://www.gnu.org/software/global/,
 9216: @c GNU Global Tags program}.  The @code{GTAGS} rule runs Global Tags
 9217: @c automatically and puts the result in the top build directory.  The
 9218: @c variable @code{GTAGS_ARGS} holds arguments which are passed to
 9219: @c @code{gtags}.
 9220: @c 
 9221: Automakeは@uref{http://www.gnu.org/software/global/, GNU Global Tags
 9222: program}もサポートします.@code{GTAGS}ルールは,自動的にGlobal Tagを実
 9223: 行し,結果をビルドディレクトリに書き込みます.変数@code{GTAGS_ARGS}は,
 9224: @code{gtags}に渡す引数を保持しています.
 9225: @vindex GTAGS_ARGS
 9226: 
 9227: 
 9228: @node Suffixes
 9229: @c @section Handling new file extensions
 9230: @section 新しいファイル拡張子の取り扱い
 9231: 
 9232: @cindex Adding new SUFFIXES
 9233: @cindex SUFFIXES, adding
 9234: @vindex SUFFIXES
 9235: 
 9236: @c It is sometimes useful to introduce a new implicit rule to handle a file
 9237: @c type that Automake does not know about.
 9238: @c 
 9239: Automakeが知らないファイル形式を処理するために,新しい暗黙のルールを導
 9240: 入することが役に立つこともあります.
 9241: 
 9242: @c For instance, suppose you had a compiler which could compile @samp{.foo}
 9243: @c files to @samp{.o} files.  You would simply define an suffix rule for
 9244: @c your language:
 9245: @c 
 9246: 例えば,@samp{.foo}ファイルを@samp{.o}ファイルにコンパイルするコンパイ
 9247: ラがあると仮定します.その言語に対する接尾子ルールを単純に定義するでしょ
 9248: う.
 9249: 
 9250: @example
 9251: .foo.o:
 9252:         foocc -c -o $@@ $<
 9253: @end example
 9254: 
 9255: @c Then you could directly use a @samp{.foo} file in a @samp{_SOURCES}
 9256: @c variable and expect the correct results:
 9257: @c 
 9258: そして,@samp{_SOURCES}変数で@samp{.foo}ファイルを直接使用し,正しい結
 9259: 果が期待されるでしょう.
 9260: 
 9261: @example
 9262: bin_PROGRAMS = doit
 9263: doit_SOURCES = doit.foo
 9264: @end example
 9265: 
 9266: @c This was the simpler and more common case.  In other cases, you will
 9267: @c have to help Automake to figure which extensions you are defining your
 9268: @c suffix rule for.  This usually happens when your extensions does not
 9269: @c start with a dot.  Then, all you have to do is to put a list of new
 9270: @c suffixes in the @code{SUFFIXES} variable @strong{before} you define your
 9271: @c implicit rule.
 9272: @c 
 9273: これはより簡単で,より一般的な状況です.それ以外の状況では,定義してい
 9274: るサフィックスルールを,Automakeが理解する手助けが必要です.通常これは,
 9275: 拡張子がドットで始まらないときに生じます.そのときにしなければならない
 9276: ことは,暗黙のルールを定義する@strong{前に},新しい接尾子のリストを
 9277: @code{SUFFIXES} 変数に書き込むことです.
 9278: 
 9279: @c For instance the following definition prevents Automake to misinterpret
 9280: @c @samp{.idlC.cpp:} as an attempt to transform @samp{.idlC} into
 9281: @c @samp{.cpp}.
 9282: @c 
 9283: 例えば,以下の定義で,Automakeが誤解して,@samp{.idlC.cpp:}で
 9284: @samp{.idlC}を@samp{.cpp}に変換する試行をしないようにします.
 9285: 
 9286: @example
 9287: SUFFIXES = .idl C.cpp
 9288: .idlC.cpp:
 9289:         # whatever
 9290: @end example
 9291: 
 9292: @c As you may have noted, the @code{SUFFIXES} variable behaves like the
 9293: @c @code{.SUFFIXES} special target of @code{make}.  You should not touch
 9294: @c @code{.SUFFIXES} yourself, but use @code{SUFFIXES} instead and let
 9295: @c Automake generate the suffix list for @code{.SUFFIXES}.  Any given
 9296: @c @code{SUFFIXES} go at the start of the generated suffixes list, followed
 9297: @c by Automake generated suffixes not already in the list.
 9298: @c 
 9299: 注意していると思いますが,@code{SUFFIXES}変数は@code{make}の
 9300: @code{.SUFFIXES}特殊ターゲットのように動作します.@code{.SUFFIXES}を独
 9301: 自にいじくるべきではなく,その代わりに@code{SUFFIXES}を使用しAutomake 
 9302: が@code{.SUFFIXES}に対する接尾子リストを生成するようにすべきです.与え
 9303: られた全ての@code{SUFFIXES}は生成された接尾子リストの最初に書かれ,
 9304: Automakeが生成するまだリストに無い接尾子が続きます.
 9305: 
 9306: @node Multilibs
 9307: @c @section Support for Multilibs
 9308: @section Multilibのサポート
 9309: 
 9310: @c Automake has support for an obscure feature called multilibs.  A
 9311: @c @dfn{multilib} is a library which is built for multiple different ABIs
 9312: @c at a single time; each time the library is built with a different target
 9313: @c flag combination.  This is only useful when the library is intended to
 9314: @c be cross-compiled, and it is almost exclusively used for compiler
 9315: @c support libraries.
 9316: @c 
 9317: Automakeには,multilibと呼ばれているあまり知られていない機能のサポート
 9318: があります.@dfn{multilib}は,一度に複数の異なるABIに対してビルドされ
 9319: るライブラリです.毎回,ライブラリが異なるターゲットフラグの組み合わせ
 9320: でビルドされます.これは,ライブラリがクロスコンパイルを目的としていて,
 9321: コンパイラがサポートしているライブラリに対して,ほとんど排他的に使用さ
 9322: れるときだけ役に立ちます.
 9323: 
 9324: @c The multilib support is still experimental.  Only use it if you are
 9325: @c familiar with multilibs and can debug problems you might encounter.
 9326: @c 
 9327: multilibのサポートはまだ実験中です.multilibを理解していて,遭遇した問
 9328: 題をデバッグすることが可能な場合のみ,それを使用してください.
 9329: 
 9330: 
 9331: @node Include
 9332: @c @chapter Include
 9333: @chapter インクルード
 9334: 
 9335: @cmindex include
 9336: @cindex Including Makefile fragment
 9337: @cindex Makefile fragment, including
 9338: 
 9339: @c Automake supports an @code{include} directive which can be used to
 9340: @c include other @file{Makefile} fragments when @code{automake} is run.
 9341: @c Note that these fragments are read and interpreted by @code{automake},
 9342: @c not by @code{make}.  As with conditionals, @code{make} has no idea that
 9343: @c @code{include} is in use.
 9344: @c 
 9345: Automakeは,@code{automake}が実行されるときに,他の断片的な
 9346: @file{Makefile}をインクルードするために使用可能な,@code{include}指示
 9347: 語をサポートします.これらの断片は,@code{make}ではなく@code{automake}
 9348: で読み込まれ解釈されることに注意してください.条件文同様,@code{make}
 9349: には@code{include}を使用する能力はありません.
 9350: 
 9351: @c There are two forms of @code{include}:
 9352: @c 
 9353: @code{include}には,二つの書式があります.
 9354: 
 9355: @table @code
 9356: @item include $(srcdir)/file
 9357: @c Include a fragment which is found relative to the current source
 9358: @c directory.
 9359: @c 
 9360: 現在のソースディレクトリに相対的なところで見つかった断片をインクルード
 9361: します.
 9362: 
 9363: @item include $(top_srcdir)/file
 9364: @c Include a fragment which is found relative to the top source directory.
 9365: @c 
 9366: トップソースディレクトリに相対的なところで見つかった断片をインクルード
 9367: します.
 9368: @end table
 9369: 
 9370: @c Note that if a fragment is included inside a conditional, then the
 9371: @c condition applies to the entire contents of that fragment.
 9372: @c 
 9373: 断片が条件文を含んでいる場合,条件文は断片の内容全体に適用されることに
 9374: 注意してください.
 9375: 
 9376: @c Makefile fragments included this way are always distributed because
 9377: @c there are needed to rebuild @file{Makefile.in}.
 9378: @c 
 9379: @file{Makefile.in}をリビルドする必要があるので,この方法でインクルード
 9380: されるMakefileの断片は常に配布されます.
 9381: 
 9382: @node Conditionals
 9383: @c @chapter Conditionals
 9384: @chapter 条件文
 9385: 
 9386: @cindex Conditionals
 9387: 
 9388: @c Automake supports a simple type of conditionals.
 9389: @c 
 9390: Automakeは単純な形式の条件文をサポートします.
 9391: 
 9392: @cvindex AM_CONDITIONAL
 9393: @c Before using a conditional, you must define it by using
 9394: @c @code{AM_CONDITIONAL} in the @code{configure.ac} file (@pxref{Macros}).
 9395: @c 
 9396: 条件文を使用する前に,@code{configure.ac}ファイルで
 9397: @code{AM_CONDITIONAL}を使用してそれを定義する必要があります
 9398: (@pxref{Macros}).
 9399: 
 9400: @defmac AM_CONDITIONAL (@var{conditional}, @var{condition})
 9401: @c The conditional name, @var{conditional}, should be a simple string
 9402: @c starting with a letter and containing only letters, digits, and
 9403: @c underscores.  It must be different from @samp{TRUE} and @samp{FALSE}
 9404: @c which are reserved by Automake.
 9405: @c 
 9406: 条件名@var{conditional}は,文字で始まり,文字,数字,そしてアンダース
 9407: コアのみを含む単純な文字列です.Automakeが@samp{TRUE}と@samp{FALSE}の
 9408: どちらを保持しているかで異なっているはずです.
 9409: 
 9410: @c The shell @var{condition} (suitable for use in a shell @code{if}
 9411: @c statement) is evaluated when @code{configure} is run.  Note that you
 9412: @c must arrange for @emph{every} @code{AM_CONDITIONAL} to be invoked every
 9413: @c time @code{configure} is run -- if @code{AM_CONDITIONAL} is run
 9414: @c conditionally (e.g., in a shell @code{if} statement), then the result
 9415: @c will confuse automake.
 9416: @c 
 9417: シェルの@var{condition}(シェルの@code{if}文で使用されるのに適切なもの) 
 9418: は,@code{configure}が実行されるときに評価されます.@emph{すべての}
 9419: @code{AM_CONDITIONAL}が毎回@code{configure}の実行で呼び出されるように
 9420: 調整する必要があります -- @code{AM_CONDITIONAL}が条件付き(例えば,シェ
 9421: ルの@code{if}文)で実行される場合,結果としてautomakeが混乱します.
 9422: @end defmac
 9423: 
 9424: @cindex --enable-debug, example
 9425: @cindex Example conditional --enable-debug
 9426: @cindex Conditional example,  --enable-debug
 9427: 
 9428: @c Conditionals typically depend upon options which the user provides to
 9429: @c the @code{configure} script.  Here is an example of how to write a
 9430: @c conditional which is true if the user uses the @samp{--enable-debug}
 9431: @c option.
 9432: @c 
 9433: 条件文は一般的に,@code{configure}スクリプトでユーザが提供するオプショ
 9434: ンに依存します.ユーザが@samp{--enable-debug}オプションを使用する場合,
 9435: 真の条件を書く方法の例は以下のようになります.
 9436: 
 9437: @example
 9438: AC_ARG_ENABLE(debug,
 9439: [  --enable-debug    Turn on debugging],
 9440: [case "$@{enableval@}" in
 9441:   yes) debug=true ;;
 9442:   no)  debug=false ;;
 9443:   *) AC_MSG_ERROR(bad value $@{enableval@} for --enable-debug) ;;
 9444: esac],[debug=false])
 9445: AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
 9446: @end example
 9447: 
 9448: @c Here is an example of how to use that conditional in @file{Makefile.am}:
 9449: @c 
 9450: @file{Makefile.am}でその条件文を使用する方法の例は以下のようになります.
 9451: 
 9452: @cmindex if
 9453: @cmindex endif
 9454: @cmindex else
 9455: 
 9456: @example
 9457: if DEBUG
 9458: DBG = debug
 9459: else
 9460: DBG =
 9461: endif
 9462: noinst_PROGRAMS = $(DBG)
 9463: @end example
 9464: 
 9465: @c This trivial example could also be handled using EXTRA_PROGRAMS
 9466: @c (@pxref{Conditional Programs}).
 9467: @c 
 9468: この簡単な例で,EXTRA_PROGRAMSを使用しているものを扱うことも可能でしょ
 9469: う(@pxref{Conditional Programs}).
 9470: 
 9471: @c You may only test a single variable in an @code{if} statement, possibly
 9472: @c negated using @samp{!}.  The @code{else} statement may be omitted.
 9473: @c Conditionals may be nested to any depth.  You may specify an argument to
 9474: @c @code{else} in which case it must be the negation of the condition used
 9475: @c for the current @code{if}.  Similarly you may specify the condition
 9476: @c which is closed by an @code{end}:
 9477: @c 
 9478: @code{if}文で,@samp{!}を使用した否定も可能な,単一の変数のみを調査し
 9479: たいかもしれません.@code{else}文は省略可能です.条件文は任意の深さに
 9480: ネスト可能です.@code{else}に引数を指定することも可能ですが,いずれの
 9481: 場合でも,現在の@code{if}に対して使用される条件の否定となっている必要
 9482: があります.同様に,@code{end}で閉じられた条件を指定することも可能です.
 9483: 
 9484: @example
 9485: if DEBUG
 9486: DBG = debug
 9487: else !DEBUG
 9488: DBG =
 9489: endif !DEBUG
 9490: @end example
 9491: 
 9492: @noindent
 9493: @c Unbalanced conditions are errors.
 9494: @c 
 9495: 非対称の条件文はエラーとなります.
 9496: 
 9497: @c Note that conditionals in Automake are not the same as conditionals in
 9498: @c GNU Make.  Automake conditionals are checked at configure time by the
 9499: @c @file{configure} script, and affect the translation from
 9500: @c @file{Makefile.in} to @file{Makefile}.  They are based on options passed
 9501: @c to @file{configure} and on results that @file{configure} has discovered
 9502: @c about the host system.  GNU Make conditionals are checked at @code{make}
 9503: @c time, and are based on variables passed to the make program or defined
 9504: @c in the @file{Makefile}.
 9505: @c 
 9506: Automakeの条件文はGNU Makeの条件文とは同じでないことに注意してください.
 9507: Automakeの条件文は,configure時に@file{configure}スクリプトでチェック
 9508: され,@file{Makefile.in}から@file{Makefile}への変換に影響を与えます.
 9509: それらは,@file{configure}に渡すオプションと,@file{configure}がホスト
 9510: システムについて発見した結果に基づきます.GNU Makeの条件文は,
 9511: @code{make}時に調査され,makeプログラムに渡された,あるいは
 9512: @file{Makefile}で定義された変数に基づいています.
 9513: 
 9514: @c Automake conditionals will work with any make program.
 9515: @c 
 9516: Automakeの条件文は,どんなmakeプログラムでも動作します.
 9517: 
 9518: 
 9519: @node Gnits
 9520: @c @chapter The effect of @code{--gnu} and @code{--gnits}
 9521: @chapter @code{--gnu}と@code{--gnits}の効果
 9522: 
 9523: @cindex --gnu, required files
 9524: @cindex --gnu, complete description
 9525: 
 9526: @c The @samp{--gnu} option (or @samp{gnu} in the @samp{AUTOMAKE_OPTIONS}
 9527: @c variable) causes @code{automake} to check the following:
 9528: @c 
 9529: @samp{--gnu}オプション(あるいは@samp{AUTOMAKE_OPTIONS}変数での
 9530: @samp{gnu})で,@code{automake}は以下のことを調査します.
 9531: 
 9532: @itemize @bullet
 9533: @item
 9534: @c The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{AUTHORS},
 9535: @c and @file{ChangeLog}, plus one of @file{COPYING.LIB}, @file{COPYING.LESSER}
 9536: @c or @file{COPYING}, are required at the topmost directory of the package.
 9537: @c 
 9538: @file{INSTALL},@file{NEWS},@file{README},@file{AUTHORS},そして
 9539: @file{ChangeLog}と,@file{COPYING.LIB},@file{COPYING.LESSER},または
 9540: @file{COPYING}のいずれかもう一つのファイルがパッケージのトップディレク
 9541: トリにあることが必要です.
 9542: 
 9543: @item
 9544: @c The options @samp{no-installman} and @samp{no-installinfo} are
 9545: @c prohibited.
 9546: @c 
 9547: @samp{no-installman}と@samp{no-installinfo}オプションは使用できません.
 9548: @end itemize
 9549: 
 9550: @c Note that this option will be extended in the future to do even more
 9551: @c checking; it is advisable to be familiar with the precise requirements
 9552: @c of the GNU standards.  Also, @samp{--gnu} can require certain
 9553: @c non-standard GNU programs to exist for use by various maintainer-only
 9554: @c rules; for instance in the future @code{pathchk} might be required for
 9555: @c @samp{make dist}.
 9556: @c 
 9557: このオプションは,それ以上の調査を行なうため将来拡張されることでしょう.
 9558: GNU標準の正確な必要条件に精通することを勧めます.また,@samp{--gnu}は,
 9559: 様々な管理者専用のルールで使用するために存在する,特定のGNU非標準のプ
 9560: ログラムを要求するはずです.例えば将来は,@code{pathchk}が@samp{make
 9561: dist}に対して要求されるかもしれません.
 9562: 
 9563: @cindex --gnits, complete description
 9564: 
 9565: @c The @samp{--gnits} option does everything that @samp{--gnu} does, and
 9566: @c checks the following as well:
 9567: @c 
 9568: @samp{--gnits}オプションは,@samp{--gnu}が行なうすべての調査に加え以下
 9569: のことも調査します.
 9570: 
 9571: @itemize @bullet
 9572: @item
 9573: @c @samp{make installcheck} will check to make sure that the @code{--help}
 9574: @c and @code{--version} really print a usage message and a version string,
 9575: @c respectively.  This is the @code{std-options} option (@pxref{Options}).
 9576: @c 
 9577: @samp{make installcheck}は,@code{--help}と@code{--version}が,それぞ
 9578: れ本当に利用方法のメッセージとバージョン文字列を確実に出力することを調
 9579: 査します.これは,@code{std-options}オプションです(@pxref{Options}).
 9580: 
 9581: @item
 9582: @c @samp{make dist} will check to make sure the @file{NEWS} file has been
 9583: @c updated to the current version.
 9584: @c 
 9585: @samp{make dist}を,@file{NEWS}ファイルが現在のバージョンに更新された
 9586: ことを確認するために調査します.
 9587: 
 9588: @item
 9589: @c @samp{VERSION} is checked to make sure its format complies with Gnits
 9590: @c standards.
 9591: @c 
 9592: @samp{VERSION}は,その書式ががGnits standardに従っていることを確認する
 9593: ために調査されます.
 9594: @c FIXME xref when standards are finished
 9595: 
 9596: @item
 9597: @cindex README-alpha
 9598: @c If @samp{VERSION} indicates that this is an alpha release, and the file
 9599: @c @file{README-alpha} appears in the topmost directory of a package, then
 9600: @c it is included in the distribution.  This is done in @samp{--gnits}
 9601: @c mode, and no other, because this mode is the only one where version
 9602: @c number formats are constrained, and hence the only mode where Automake
 9603: @c can automatically determine whether @file{README-alpha} should be
 9604: @c included.
 9605: @c 
 9606: これがアルファリリースだということを@samp{VERSION}が示していて,ファイ
 9607: ル@file{README-alpha}がパッケージのトップディレクトリにある場合,それ
 9608: は配布物に含められます.@samp{--gnits}モードはバージョンナンバーの書式
 9609: に制限がある唯一のものであり,そのためAutomakeが自動的に
 9610: @file{README-alpha}を含めることを決定することが可能な唯一のモードなの
 9611: で,これは@samp{--gnits}モードではなされますが他ではなされません.
 9612: 
 9613: @item
 9614: @c The file @file{THANKS} is required.
 9615: @c 
 9616: ファイル@file{THANKS}が必要です.
 9617: @end itemize
 9618: 
 9619: 
 9620: @node Cygnus
 9621: @c @chapter The effect of @code{--cygnus}
 9622: @chapter @code{--cygnus}の効果
 9623: 
 9624: @cindex Cygnus strictness
 9625: 
 9626: @c Some packages, notably GNU GCC and GNU gdb, have a build environment
 9627: @c originally written at Cygnus Support (subsequently renamed Cygnus
 9628: @c Solutions, and then later purchased by Red Hat).  Packages with this
 9629: @c ancestry are sometimes referred to as ``Cygnus'' trees.
 9630: @c 
 9631: 特にGNU GCCとGNU gdbのようなパッケージには,Cygnus Support(その後,
 9632: Cygnus Solutionsに名前が変更され,その後で Red Hatに買収されました)で
 9633: 通常書かれているビルド環境変数があります.この系統のパッケージは,
 9634: ``Cygnus''ツリーとして述べられるときもあります.
 9635: 
 9636: @c A Cygnus tree has slightly different rules for how a @file{Makefile.in}
 9637: @c is to be constructed.  Passing @samp{--cygnus} to @code{automake} will
 9638: @c cause any generated @file{Makefile.in} to comply with Cygnus rules.
 9639: @c 
 9640: Cygnusツリーには,@file{Makefile.in}を構築する方法に対して,わずかに異
 9641: なったルールがあります.@code{automake}へ@samp{--cygnus}を渡すことで,
 9642: 生成されるすべての@file{Makefile.in}はCygnus規則に従います.
 9643: 
 9644: @c Here are the precise effects of @samp{--cygnus}:
 9645: @c 
 9646: @samp{--cygnus}の正確な効果は以下のようになっています.
 9647: 
 9648: @itemize @bullet
 9649: @item
 9650: @c Info files are always created in the build directory, and not in the
 9651: @c source directory.
 9652: @c 
 9653: Infoファイルは,ソースディレクトリでではなく,常にビルドディレクトリで
 9654: 作成されます.
 9655: 
 9656: @item
 9657: @c @file{texinfo.tex} is not required if a Texinfo source file is
 9658: @c specified.  The assumption is that the file will be supplied, but in a
 9659: @c place that Automake cannot find.  This assumption is an artifact of how
 9660: @c Cygnus packages are typically bundled.
 9661: @c 
 9662: @file{texinfo.tex}は,Texinfoソースファイルが指定されている場合でも,
 9663: 要求されません.ファイルは提供されているのですが,Automakeが見つけられ
 9664: ない場所にあると仮定します.この仮定は,一般的にCygnusパッケージをバン
 9665: ドルする方法として人工的に作られたものです.
 9666: 
 9667: @item
 9668: @c @samp{make dist} is not supported, and the rules for it are not
 9669: @c generated.  Cygnus-style trees use their own distribution mechanism.
 9670: @c 
 9671: @samp{make dist}はサポートされておらず,そのルールは生成されません.
 9672: Cygnus形式のツリーでは独自の配布メカニズムを使用します.
 9673: 
 9674: @item
 9675: @c Certain tools will be searched for in the build tree as well as in the
 9676: @c user's @samp{PATH}.  These tools are @code{runtest}, @code{expect},
 9677: @c @code{makeinfo} and @code{texi2dvi}.
 9678: @c 
 9679: ユーザの@samp{PATH}同様にビルドツリーでも特定のツールを捜します.これ
 9680: らのツールは,@code{runtest},@code{expect},@code{makeinfo},そして
 9681: @code{texi2dvi}です.
 9682: 
 9683: @item
 9684: @c @code{--foreign} is implied.
 9685: @c 
 9686: @code{--foreign}を暗黙に指定します.
 9687: 
 9688: @item
 9689: @c The options @samp{no-installinfo} and @samp{no-dependencies} are
 9690: @c implied.
 9691: @c 
 9692: オプション@samp{no-installinfo}と@samp{no-dependencies}を暗黙に指定し
 9693: ます.
 9694: 
 9695: @item
 9696: @c The macros @samp{AM_MAINTAINER_MODE} and @samp{AM_CYGWIN32} are
 9697: @c required.
 9698: @c 
 9699: マクロ@samp{AM_MAINTAINER_MODE}と@samp{AM_CYGWIN32}が要求されます.
 9700: 
 9701: @item
 9702: @c The @code{check} target doesn't depend on @code{all}.
 9703: @c 
 9704: @code{check}ターゲットは@code{all}に依存しません.
 9705: @end itemize
 9706: 
 9707: @c GNU maintainers are advised to use @samp{gnu} strictness in preference
 9708: @c to the special Cygnus mode.  Some day, perhaps, the differences between
 9709: @c Cygnus trees and GNU trees will disappear (for instance, as GCC is made
 9710: @c more standards compliant).  At that time the special Cygnus mode will be
 9711: @c removed.
 9712: @c 
 9713: GNU管理者は,特別なCygnusモードではなく@samp{gnu}の厳密さを使用してく
 9714: ださい.いつかはおそらく,CygnusツリーとGNUツリーの間の差が(例えば,
 9715: GCCがより標準に準拠するように)なくなることでしょう.そのときは,特殊な
 9716: Cygnus モードは削除されるでしょう.
 9717: 
 9718: 
 9719: @node Extending
 9720: @c @chapter When Automake Isn't Enough
 9721: @chapter Automakeが不十分なとき
 9722: 
 9723: @c With some minor exceptions (like @code{_PROGRAMS} variables being
 9724: @c rewritten to append @code{$(EXEEXT)}), the contents of a
 9725: @c @file{Makefile.am} is copied to @file{Makefile.in} verbatim.
 9726: @c 
 9727: (@code{_PROGRAMS}のような変数は@code{$(EXEEXT)}が追加されて書き直され
 9728: るといった)わずかな例外はありますが,@file{Makefile.am}の内容は
 9729: @file{Makefile.in}にそのままコピーされます.
 9730: 
 9731: @cindex copying semantics
 9732: 
 9733: @c These copying semantics means that many problems can be worked around
 9734: @c by simply adding some @code{make} variables and rules to
 9735: @c @file{Makefile.am}.  Automake will ignore these additions.
 9736: @c 
 9737: これらのコピーの意味は,単純にいくつかの@code{make}変数とルールを
 9738: @file{Makefile.am}に追加することで,多くの問題が解決可能だということを
 9739: 意味します.Automakeはこれらの追加を無視します.
 9740: 
 9741: @cindex conflicting definitions
 9742: @cindex rules, conflicting
 9743: @cindex variables, conflicting
 9744: @cindex definitions, conflicts
 9745: 
 9746: @c Since a @file{Makefile.in} is built from data gathered from three
 9747: @c different places (@file{Makefile.am}, @file{configure.ac}, and
 9748: @c @command{automake} itself), it is possible to have conflicting
 9749: @c definitions of rules or variables.  When building @file{Makefile.in}
 9750: @c the following priorities are respected by @command{automake} to ensure
 9751: @c the user always have the last word.  User defined variables in
 9752: @c @file{Makefile.am} have priority over variables @code{AC_SUBST}ed from
 9753: @c @file{configure.ac}, and @code{AC_SUBST}ed variables have priority
 9754: @c over @command{automake}-defined variables.  As far rules are
 9755: @c concerned, a user-defined rule overrides any
 9756: @c @command{automake}-defined rule for the same target.
 9757: @c 
 9758: @file{Makefile.in}は,三つの異なる場所(@file{Makefile.am},
 9759: @file{configure.ac},そして@command{automake}自身)からデータを集めてビ
 9760: ルドされるので,ルールや変数の定義が衝突する可能性があります.
 9761: @file{Makefile.in}をビルドするとき,ユーザが最後の単語を利用することを
 9762: 保証するために,@command{automake}に関連する優先順位に従います.
 9763: @file{Makefile.am}でユーザが定義した変数は,@file{configure.ac}で
 9764: @code{AC_SUBST}した変数より優先され,@code{AC_SUBST}された変数は
 9765: @command{automake}が定義した変数より優先されます.同様にルールも関連し
 9766: て,ユーザ定義のルールは@command{automake}が定義した同じターゲットに対
 9767: するルールに優先されます.
 9768: 
 9769: @cindex overriding rules
 9770: @cindex overriding semantics
 9771: @cindex rules, overriding
 9772: 
 9773: @c These overriding semantics make it possible to fine tune some default
 9774: @c settings of Automake, or replace some of its rules.  Overriding
 9775: @c Automake rules is often inadvisable, particularly in the topmost
 9776: @c directory of a package with subdirectories.  The @code{-Woverride}
 9777: @c option (@pxref{Invoking Automake}) comes handy to catch overridden
 9778: @c definitions.
 9779: @c 
 9780: これらのオーバーライドの意味は,Automakeのデフォルトの設定をうまく調整
 9781: したり,そのルールを置換することを可能にします.Automakeのルールをオー
 9782: バーライドすることはあまり勧められず,特にサブディレクトリがあるパッケー
 9783: ジの最上位のディレクトリではそうです.@code{-Woverride}オプション
 9784: (@pxref{Invoking Automake})で,オーバーライドしている定義が簡単に捕え
 9785: られます.
 9786: 
 9787: @c Note that Automake does not make any difference between rules with
 9788: @c commands and rules that only specify dependencies.  So it is not
 9789: @c possible to append new dependencies to an @code{automake}-defined
 9790: @c target without redefining the entire rule.
 9791: @c 
 9792: Automakeには,コマンドを用いたルールと依存性を指定するだけのルールに差
 9793: 異がないことに注意して下さい.@code{automake}が定義したターゲットに,
 9794: ルール全体を定義することなく新しい依存性を追加することは不可能です.
 9795: 
 9796: @cindex -local targets
 9797: @cindex local targets
 9798: 
 9799: @c However, various useful targets have a @samp{-local} version you can
 9800: @c specify in your @file{Makefile.in}.  Automake will supplement the
 9801: @c standard target with these user-supplied targets.
 9802: @c 
 9803: しかし,様々な有用なターゲットには,@file{Makefile.in}で指定可能な,
 9804: @samp{-local}バージョンがあります.Automakeはこれらのユーザが提供する
 9805: ターゲットを用いて標準ターゲットを補足します.
 9806: 
 9807: @trindex  all
 9808: @trindex  all-local
 9809: @trindex  info
 9810: @trindex  info-local
 9811: @trindex  dvi
 9812: @trindex  dvi-local
 9813: @trindex  ps
 9814: @trindex  ps-local
 9815: @trindex  pdf
 9816: @trindex  pdf-local
 9817: @trindex  html
 9818: @trindex  html-local
 9819: @trindex  check
 9820: @trindex  check-local
 9821: @trindex  install
 9822: @trindex  install-data-local
 9823: @trindex  install-exec
 9824: @trindex  install-exec-local
 9825: @trindex  uninstall
 9826: @trindex  uninstall-local
 9827: @trindex  mostlyclean
 9828: @trindex  mostlyclean-local
 9829: @trindex  clean
 9830: @trindex  clean-local
 9831: @trindex  distclean
 9832: @trindex  distclean-local
 9833: @trindex  installdirs
 9834: @trindex  installdirs-local
 9835: @trindex  installcheck
 9836: @trindex  installcheck-local
 9837: 
 9838: @c The targets that support a local version are @code{all}, @code{info},
 9839: @c @code{dvi}, @code{ps}, @code{pdf}, @code{html}, @code{check},
 9840: @c @code{install-data}, @code{install-exec}, @code{uninstall},
 9841: @c @code{installdirs}, @code{installcheck} and the various @code{clean} targets
 9842: @c (@code{mostlyclean}, @code{clean}, @code{distclean}, and
 9843: @c @code{maintainer-clean}).  Note that there are no
 9844: @c @code{uninstall-exec-local} or @code{uninstall-data-local} targets; just
 9845: @c use @code{uninstall-local}.  It doesn't make sense to uninstall just
 9846: @c data or just executables.
 9847: @c 
 9848: ローカルバージョンをサポートするターゲットは,@code{all},@code{info},
 9849: @code{dvi},@code{ps},@code{pdf},@code{html},@code{check},
 9850: @code{install-data}, @code{install-exec},@code{uninstall},
 9851: @code{installdirs},@code{installcheck},そして様々な@code{clean}ター
 9852: ゲット(@code{mostlyclean},@code{clean},@code{distclean},そして
 9853: @code{maintainer-clean})です.@code{uninstall-exec-local}や
 9854: @code{uninstall-data-local}ターゲットが無いことに注意してください.
 9855: @code{uninstall-local}だけを使用してください.データだけ,あるいは実行
 9856: 可能プログラムだけをアンインストールすることには意味がありません.
 9857: 
 9858: @c For instance, here is one way to install a file in @file{/etc}:
 9859: @c 
 9860: 例えば,ファイルを@file{/etc}にインストールする一つの方法は,以下のよ
 9861: うになります.
 9862: 
 9863: @example
 9864: install-data-local:
 9865:         $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
 9866: @end example
 9867: 
 9868: @cindex -hook targets
 9869: @cindex hook targets
 9870: 
 9871: @c Some rule also have a way to run another rule, called a @dfn{hook},
 9872: @c after their work is done.  The hook is named after the principal target,
 9873: @c with @samp{-hook} appended.  The targets allowing hooks are
 9874: @c @code{install-data}, @code{install-exec}, @code{uninstall}, @code{dist},
 9875: @c and @code{distcheck}.
 9876: @c 
 9877: ルールには,@dfn{hook}と呼ばれる,その仕事が終った後にもう一つのルール
 9878: を実行する方法もあります.フックは,主要なターゲットに@samp{-hook} を
 9879: 追加して命名します.フックが可能なターゲットは,@code{install-data},
 9880: @code{install-exec},@code{uninstall},@code{dist},そして
 9881: @code{distcheck}です.
 9882: @trindex install-data-hook
 9883: @trindex install-exec-hook
 9884: @trindex uninstall-hook
 9885: @trindex dist-hook
 9886: 
 9887: @c For instance, here is how to create a hard link to an installed program:
 9888: @c 
 9889: 例えば,インストールしたプログラムにハードリンクを作成する方法は,以下
 9890: のようになります.
 9891: 
 9892: @example
 9893: install-exec-hook:
 9894:         ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
 9895:            $(DESTDIR)$(bindir)/proglink$(EXEEXT)
 9896: @end example
 9897: 
 9898: @c Although cheaper and more portable than symbolic links, hard links
 9899: @c will not work everywhere (for instance OS/2 does not have
 9900: @c @command{ln}).  Ideally you should fall back to @code{cp -p} when
 9901: @c @code{ln} does not work.  An easy way, if symbolic links are
 9902: @c acceptable to you, is to add @code{AC_PROG_LN_S} to
 9903: @c @file{configure.ac} (@pxref{Particular Programs, , Particular Program
 9904: @c Checks, autoconf, The Autoconf Manual}) and use @code{$(LN_S)} in
 9905: @c @file{Makefile.am}.
 9906: @c 
 9907: 安っぽいけれど,シンボリックリンクより移植性の高いハードリンクは,どこ
 9908: ででも動作するわけではありません(例えば,OS/2には@command{ln}がありま
 9909: せん).理想としては,@code{ln}が動作しないときは@code{cp -p}に逆戻りす
 9910: べきです.簡単な方法は,シンボリックリンクを受け入れる場合,
 9911: @file{configure.ac}に@code{AC_PROG_LN_S}を追加し(@pxref{Particular
 9912: Programs, , Particular Program Checks, autoconf, The Autoconf Manual}),
 9913: @file{Makefile.am}で@code{$(LN_S)}を使用して下さい.
 9914: 
 9915: @cindex versioned binaries, installing
 9916: @cindex installing versioned binaries
 9917: @cindex LN_S example
 9918: @c For instance, here is how you could install a versioned copy of a
 9919: @c program using @code{$(LN_S)}:
 9920: @c 
 9921: 例えば,以下では,@code{$(LN_S)}を用いてプログラムのコピーバージョンの
 9922: インストールを可能にする方法です.
 9923: 
 9924: @example
 9925: install-exec-hook:
 9926:         cd $(DESTDIR)$(bindir) && \
 9927:           mv -f prog$(EXEEXT) prog-$(VERSION)$(EXEEXT) && \
 9928:           $(LN_S) prog-$(VERSION)$(EXEEXT) prog$(EXEEXT)
 9929: @end example
 9930: 
 9931: @c Note that we rename the program so that a new version will erase the
 9932: @c symbolic link, not the real binary.  Also we @code{cd} into the
 9933: @c destination directory in order to create relative links.
 9934: @c 
 9935: 我々は,新しいバージョンがシンボリックリンクを削除し,本当のバイナリを
 9936: 削除しないように,プログラムの名前を変更していることに注意して下さい.
 9937: また,我々は,相対リンクを作成するため,コピー先のディレクトリに
 9938: @code{cd}しています.
 9939: @c FIXME should include discussion of variables you can use in these
 9940: @c rules
 9941: 
 9942: @node Distributing
 9943: @c @chapter Distributing @file{Makefile.in}s
 9944: @chapter @file{Makefile.in}の配布
 9945: 
 9946: @c Automake places no restrictions on the distribution of the resulting
 9947: @c @file{Makefile.in}s.  We still encourage software authors to distribute
 9948: @c their work under terms like those of the GPL, but doing so is not
 9949: @c required to use Automake.
 9950: @c 
 9951: Automakeは,結果として生じる@file{Makefile.in}の配布に制限を置きません.
 9952: 我々は,ソフトウェアの著者にGPLのような用語の下でその仕事を流通させる
 9953: ことを奨励しますが,そうすることはAutomakeを使用することにで要求されま
 9954: せん.
 9955: 
 9956: @c Some of the files that can be automatically installed via the
 9957: @c @code{--add-missing} switch do fall under the GPL@.  However, these also
 9958: @c have a special exception allowing you to distribute them with your
 9959: @c package, regardless of the licensing you choose.
 9960: @c 
 9961: @code{--add-missing}スイッチによって自動的にインストールすることが可能
 9962: なファイルにはGPLに従うものもあります.しかし,選択したライセンスを気
 9963: にせず,パッケージとともに配布することができるよう,これらにも特別な例
 9964: 外があります.
 9965: 
 9966: 
 9967: @node API versioning
 9968: @c @chapter Automake API versioning
 9969: @chapter AutomakeのAPIのバージョン管理
 9970: 
 9971: @c New Automake releases usually include bug fixes and new features.
 9972: @c Unfortunately they may also introduce new bugs and incompatibilities.
 9973: @c This makes four reasons why a package may require a particular Automake
 9974: @c version.
 9975: @c 
 9976: 通常,新しいAutomakeのリリースにはバグの修正と新しい機能が含まれていま
 9977: す.残念ながら,それらは新しいバグと非互換性ももたらす可能性があります.
 9978: このことは,パッケージがAutomakeの特定のバージョンを要求する可能性とな
 9979: る四つの理由になります.
 9980: 
 9981: @c Things get worse when maintaining a large tree of packages, each one
 9982: @c requiring a different version of Automake.  In the past, this meant that
 9983: @c any developer (and sometime users) had to install several versions of
 9984: @c Automake in different places, and switch @samp{$PATH} appropriately for
 9985: @c each package.
 9986: @c 
 9987: 大きなツリーのパッケージを管理するとき,それぞれが異なるバージョンの
 9988: Automakeを要求することが問題になります.過去には,開発者(と時にはユー
 9989: ザが)異なるバージョンのAutomakeを異なる場所にインストールし,それぞれ
 9990: のパッケージに対して適切な@samp{$PATH}に切替える必要があったという意味
 9991: です.
 9992: 
 9993: @c Starting with version 1.6, Automake installs versioned binaries.  This
 9994: @c means you can install several versions of Automake in the same
 9995: @c @samp{$prefix}, and can select an arbitrary Automake version by running
 9996: @c @samp{automake-1.6} or @samp{automake-1.7} without juggling with
 9997: @c @samp{$PATH}.  Furthermore, @file{Makefile}'s generated by Automake 1.6
 9998: @c will use @samp{automake-1.6} explicitly in their rebuild rules.
 9999: @c 
10000: バージョン1.6で開始していますが,Automakeはバージョン管理されたバイナ
10001: リをインストールします.これは同じ@samp{$prefix}で複数のバージョンの
10002: Automakeをインストールすることが可能で,@samp{$PATH}で誤魔化すこと無く
10003: @samp{automake-1.6}や@samp{automake-1.7}を実行することで任意のバージョ
10004: ンのAutomakeを選択することが可能だということを意味します.さらに,
10005: Automake 1.6で生成された@file{Makefile}は,リビルドのルールで明示的に
10006: @samp{automake-1.6}を使用します.
10007: 
10008: @c Note that @samp{1.6} in @samp{automake-1.6} is Automake's API version,
10009: @c not Automake's version.  If a bug fix release is made, for instance
10010: @c Automake 1.6.1, the API version will remain 1.6.  This means that a
10011: @c package which work with Automake 1.6 should also work with 1.6.1; after
10012: @c all, this is what people expect from bug fix releases.
10013: @c 
10014: @samp{automake-1.6}の@samp{1.6}は,Automakeのバージョンではなく
10015: Automake のAPIのバージョンだということに注意してください.バグの修正版
10016: が作成された場合,例えばAutomake 1.6.1になりますが,APIのバージョンは
10017: 1.6のままです.これは,Automake 1.6で動作するパッケージは1.6.1でも動作
10018: することを意味します.結局,これは人々がバグの修正版に期待するものにな
10019: ります.
10020: 
10021: @c Note that if your package relies on a feature or a bug fix introduced in
10022: @c a release, you can pass this version as an option to Automake to ensure
10023: @c older releases will not be used.  For instance, use this in your
10024: @c @file{configure.ac}:
10025: @c 
10026: パッケージがリリースで導入された機能やバグの修正に依存している場合,古
10027: いリリースを使用しないことを確実にするため,Automakeへのオプションとし
10028: てこのバージョンを渡すことが可能です.例えば,@file{configure.ac}で以
10029: 下の内容を使用してください.
10030: 
10031: @example
10032:   AM_INIT_AUTOMAKE(1.6.1)    dnl Require Automake 1.6.1 or better.
10033: @end example
10034: @noindent
10035: @c or, in a particular @file{Makefile.am}:
10036: @c 
10037: または特定の@file{Makefile.am}で以下の内容を使用してください.
10038: 
10039: @example
10040:   AUTOMAKE_OPTIONS = 1.6.1   # Require Automake 1.6.1 or better.
10041: @end example
10042: @noindent
10043: @c Automake will print an error message if its version is
10044: @c older than the requested version.
10045: @c 
10046: Automakeのバージョンが要求されたバージョンより古い場合,Automakeはエラー
10047: メッセージを出力します.
10048: 
10049: 
10050: @heading What is in the API
10051: @heading APIの中身
10052: 
10053: @c Automake's programming interface is not easy to define.  Basically it
10054: @c should include at least all @strong{documented} variables and targets
10055: @c that a @samp{Makefile.am} author can use, any behavior associated with
10056: @c them (e.g. the places where @samp{-hook}'s are run), the command line
10057: @c interface of @samp{automake} and @samp{aclocal}, @dots{}
10058: @c 
10059: Automakeのプログラミングインターフェースは簡単に定義できません.基本的
10060: に,全ての@strong{ドキュメント化されている}変数と@samp{Makefile.am}の
10061: 著者が利用可能なターゲットを少なくとも含めるべきで,動作はそれらに関連
10062: していて(例えば,@samp{-hook}が実行される場所),@samp{automake}と
10063: @samp{aclocal} のコマンドラインインターフェースがあって,@dots{}
10064: 
10065: @heading What is not in the API
10066: @heading APIには無いもの
10067: 
10068: @c Every undocumented variable, target, or command line option, is not part
10069: @c of the API@.  You should avoid using them, as they could change from one
10070: @c version to the other (even in bug fix releases, if this helps to fix a
10071: @c bug).
10072: @c 
10073: ドキュメント化されていない変数,ターゲット,またはコマンドラインオプショ
10074: ンは全て,APIの一部ではありません.バージョンが変われば(バグの修正に役
10075: 立つ場合は,バグの修正版でも) 変更されるかもしれないので,それらを使用
10076: することは避けるべきです.
10077: 
10078: @c If it turns out you need to use such a undocumented feature, contact
10079: @c @email{automake@@gnu.org} and try to get it documented and exercised by
10080: @c the test-suite.
10081: @c 
10082: そのようなドキュメント化されていない機能を使用する必要があると判明した
10083: 場合,@email{automake@@gnu.org}でコンタクトを取り,ドキュメントを書き
10084: テストスイートで試してみてください.
10085: 
10086: @node FAQ
10087: @c @chapter Frequently Asked Questions about Automake
10088: @chapter Automakeに関するよくある質問と答え
10089: 
10090: @c This chapter covers some questions that often come up on the mailing
10091: @c lists.
10092: @c 
10093: この章では,メーリングリストによく上がる質問をカバーします.
10094: 
10095: @menu
10096: * CVS::                         CVS and generated files
10097: * maintainer-mode::             missing and AM_MAINTAINER_MODE
10098: * wildcards::                   Why doesn't Automake support wildcards?
10099: * distcleancheck::              Files left in build directory after distclean
10100: * renamed objects::             Why are object files sometimes renamed?
10101: @end menu
10102: 
10103: @node CVS
10104: @c @section CVS and generated files
10105: @section CVSと生成されるファイル
10106: 
10107: @c @subsection Background: distributed generated files
10108: @subsection 背景:生成されるファイルの配布
10109: @cindex generated files, distributed
10110: @cindex rebuild rules
10111: 
10112: @c Packages made with Autoconf and Automake ship with some generated
10113: @c files like @file{configure} or @file{Makefile.in}.  These files were
10114: @c generated on the developer's host and are distributed so that
10115: @c end-users do not have to install the maintainer tools required to
10116: @c rebuild them.  Other generated files like Lex scanners, Yacc parsers,
10117: @c or Info documentation, are usually distributed on similar grounds.
10118: @c 
10119: AutoconfとAutomakeを用いて作成したパッケージは,@file{configure}や
10120: @file{Makefile.in}といった生成されるファイルとともに配布されます.これ
10121: らのファイルは開発者のホストで生成され,それらをビルドするためにエンド
10122: ユーザが管理用のツールをインストールする必要が無いように配布されます.
10123: Lexスキャナー,Yaccパーサ,またInfoドキュメントのような,それ以外に生
10124: 成されるファイルは,同じ理由で通常配布されます.
10125: 
10126: @c Automake outputs rules in @file{Makefile}s to rebuild these files.  For
10127: @c instance @command{make} will run @command{autoconf} to rebuild
10128: @c @file{configure} whenever @file{configure.ac} is changed.  This makes
10129: @c development safer by ensuring a @file{configure} is never out-of-date
10130: @c with respect to @file{configure.ac}.
10131: @c 
10132: AutomakeはMakefileにこれらのファイルをリビルドするルールを出力します.
10133: 例えば,@file{configure.ac}が変更されたときは@file{configure}をリビル
10134: ドするために@command{autoconf}を実行します.@file{configure}が対応する
10135: @file{configure.ac}より古くないように,開発者が確実に行なえます.
10136: 
10137: @c As generated files shipped in packages are up-to-date, and because
10138: @c @command{tar} preserves times-tamps, these rebuild rules are not
10139: @c triggered when a user unpacks and builds a package.
10140: @c 
10141: パッケージで配布されている,生成されたファイルは最新で,@command{tar} 
10142: でタイムスタンプを保存しているので,これらのリビルドのルールはユーザが
10143: パッケージを展開しビルドするときも開始されません.
10144: 
10145: @c @subsection Background: CVS and timestamps
10146: @subsection 背景:CVSとタイムスタンプ
10147: @cindex timestamps and CVS
10148: @cindex CVS and timestamps
10149: 
10150: @c Unless you use CVS keywords (in which case files must be updated at
10151: @c commit time), CVS preserves timestamp during @code{cvs commit} and
10152: @c @code{cvs import -d} operations.
10153: @c 
10154: CVSキーワードを使用していない限り(この状況ではコミット時にファイルを更
10155: 新する必要があります),@code{cvs commit}と@code{cvs import -d}の処理中
10156: にCVSが保持しているタイムスタンプは保持されます.
10157: 
10158: @c When you check out a file using @code{cvs checkout} its timestamp is
10159: @c set to that of the revision which is being checked out.
10160: @c 
10161: @code{cvs checkout}を使用してファイルをチェックアウトしたとき,そのタ
10162: イムスタンプは,チェックアウトしたリビジョンで設定されたタイムスタンプ
10163: になります.
10164: 
10165: @c However, during @command{cvs update}, files will have the date of the
10166: @c update, not the original timestamp of this revision.  This is meant to
10167: @c make sure that @command{make} notices sources files have been updated.
10168: @c 
10169: しかし,@command{cvs update}したとき,ファイルの日付が更新されますが,
10170: オリジナルのタイムスタンプはこのリビジョンになります.これは,
10171: @command{make}でソースファイルが更新されたことに確実に気付くことを意味
10172: します.
10173: 
10174: @c This times tamp shift is troublesome when both sources and generated
10175: @c files are kept under CVS.  Because CVS processes files in alphabetical
10176: @c order, @file{configure.ac} will appear older than @file{configure}
10177: @c after a @command{cvs update} that updates both files, even if
10178: @c @file{configure} was newer than @file{configure.ac} when it was
10179: @c checked in.  Calling @code{make} will then trigger a spurious rebuild
10180: @c of @file{configure}.
10181: @c 
10182: このタイムスタンプの変更は,ソースと生成されたファイルの両方をCVSに保
10183: 持しているときは面倒です.CVSはアルファベット順にファイルを処理するの
10184: で,@command{cvs update}で両方のファイルを更新した後は,チェックイン時
10185: に@file{configure.ac}より@file{configure}のほうが新しい場合でも,
10186: @file{configure}より@file{configure.ac}が古いものとして表されます.
10187: @code{make}を呼び出すと,間違って@file{configure}のリビルドが開始され
10188: ます.
10189: 
10190: @c @subsection Living with CVS in Autoconfiscated projects
10191: @subsection Autoconfを利用したプロジェクトにおけるCVSとの共存
10192: @cindex CVS and generated files
10193: @cindex generated files and CVS
10194: 
10195: @c There are basically two clans amongst maintainers: those who keep all
10196: @c distributed files under CVS, including generated files, and those who
10197: @c keep generated files @emph{out} of CVS.
10198: @c 
10199: 基本的に二種類の管理者がいます.生成されるファイルを含め,すべての配布
10200: されるファイルをCVSの元に保持している人,そして,生成されたファイルを
10201: CVSの@emph{外部に}保持している人です.
10202: 
10203: @c @subsubheading All files in CVS
10204: @subsubheading すべてのファイルをCVSに入れる
10205: 
10206: @itemize @bullet
10207: @item
10208: @c The CVS repository contains all distributed files so you know exactly
10209: @c what is distributed, and you can checkout any prior version entirely.
10210: @c 
10211: CVSリポジトリはすべての配布されるファイルを含んでいるので,配布される
10212: ものが何かを正確に知っていて,前のバージョン全体をチェックアウトするこ
10213: とも可能です.
10214: 
10215: @item
10216: @c Maintainers can see how generated files evolve (for instance you can
10217: @c see what happens to your @file{Makefile.in}s when you upgrade Automake
10218: @c and make sure they look OK).
10219: @c 
10220: 管理者は,生成されるファイルを展開する方法を知ることが可能です(例えば,
10221: Automakeを更新したとき,@file{Makefile.in}で生じたことを知り,大丈夫で
10222: あることを確認することが可能です).
10223: 
10224: @item
10225: @c Users do not need the autotools to build a checkout of the project, it
10226: @c works just like a released tarball.
10227: @c 
10228: チェックアウトしたプロジェクトをビルドするために,ユーザはautotoolが不
10229: 要で,リリースされたtarballと同様に動作します.
10230: 
10231: @item
10232: @c If users use @command{cvs update} to update their copy, instead of
10233: @c @command{cvs checkout} to fetch a fresh one, timestamps will be
10234: @c inaccurate.  Some rebuild rules will be triggered and attempt to
10235: @c run developer tools such as @command{autoconf} or @command{automake}.
10236: @c 
10237: ユーザが,新しいものを取得するために@command{cvs checkout}する代わりに,
10238: コピーを更新するために@command{cvs update}を使用する場合,タイムスタン
10239: プは不正確になります.@command{autoconf}や@command{automake}のような管
10240: 理者用のツールを,実行を開始したり試みたりするリビルドルールもあります.
10241: 
10242: @c Actually, calls to such tools are all wrapped into a call to the
10243: @c @command{missing} script discussed later (@pxref{maintainer-mode}).
10244: @c @command{missing} will take care of fixing the timestamps when these
10245: @c tools are not installed, so that the build can continue.
10246: @c 
10247: 実際,そのようなツールの呼び出しは,後で議論する@command{missing}スク
10248: リプトで呼び出しにすべてラップされています(@pxref{maintainer-mode}).
10249: @command{missing}は,これらのツールがインストールされていないとき,ビ
10250: ルドが続けられるように,タイムスタンプを修正します.
10251: 
10252: @item
10253: @c In distributed development, developers are likely to have different
10254: @c version of the maintainer tools installed.  In this case rebuilds
10255: @c triggered by timestamp lossage will lead to spurious changes
10256: @c to generated files.  There are several solutions to this:
10257: @c 
10258: 配布されている開発物では,開発者はバージョンが異なる管理ツールをインス
10259: トールしていることもよくあります.この状況では,失われたタイムスタンプ
10260: によるリビルドの開始が,生成されるファイルを間違って変更します.この問
10261: 題の解決方法はいくつかあります.
10262: 
10263: @itemize
10264: @item
10265: @c All developers should use the same versions, so that the rebuilt files
10266: @c are identical to files in CVS.  (This starts to be difficult when each
10267: @c project you work on uses different versions.)
10268: @c 
10269: リビルドされるファイルがCVSのファイルと同じになるように,すべての開発
10270: 者が同じバージョンを使用する.(作業しているプロジェクトが異なるバージョ
10271: ンを使用しているとき,こうすることは難しくなります.)
10272: @item
10273: @c Or people use a script to fix the timestamp after a checkout (the GCC
10274: @c folks have such a script).
10275: @c 
10276: または,チェックアウト後にタイムスタンプを修正するスクリプトを使用する
10277: (GCCの人々は,そのようなスクリプトを所有しています).
10278: @item
10279: @c Or @file{configure.ac} uses @code{AM_MAINTAINER_MODE}, which will
10280: @c disable all these rebuild rules by default.  This is further discussed
10281: @c in @ref{maintainer-mode}.
10282: @c 
10283: または,これらのリビルドルールすべてをデフォルトで利用不可能にするよう
10284: に,@file{configure.ac}で@code{AM_MAINTAINER_MODE}を使用します.これは,
10285: @ref{maintainer-mode}で更に議論していきます.
10286: @end itemize
10287: 
10288: @item
10289: @c Although we focused on spurious rebuilds, the converse can also
10290: @c happen.  CVS's timestamp handling can also let you think an
10291: @c out-of-date file is up-to-date.
10292: @c 
10293: 我々は間違ったリビルドに注目していますが,反対のことも生じます.CVSの
10294: タイムスタンプの処理で,古いと思われるファイルが最新のものになってしま
10295: うこともあるはずです.
10296: 
10297: @c For instance, suppose a developer has modified @file{Makefile.am} and
10298: @c rebuilt @file{Makefile.in}, and then decide to do a last-minute change
10299: @c to @file{Makefile.am} right before checking in both files (without
10300: @c rebuilding @file{Makefile.in} to account for the change).
10301: @c 
10302: 例えば,開発者が編集された@file{Makefile.am}とリビルドされた
10303: @file{Makefile.in}を所有していて,両方のファイルを調査する直前に
10304: @file{Makefile.am}の変更を決定したと仮定します(変更に対応する
10305: @file{Makefile.in}をリビルドする前です).
10306: 
10307: @c This last change to @file{Makefile.am} make the copy of
10308: @c @file{Makefile.in} out-of-date.  Since CVS processes files
10309: @c alphabetically, when another developer @code{cvs update} his or her
10310: @c tree, @file{Makefile.in} will happen to be newer than
10311: @c @file{Makefile.am}.  This other developer will not see
10312: @c @file{Makefile.in} is out-of-date.
10313: @c 
10314: この最後の@file{Makefile.am}の変更で,@file{Makefile.in}のコピーは古い
10315: ものになっています.CVSはファイルをアルファベット順に処理するので,他
10316: の開発者がツリー上で@code{cvs update}するとき,@file{Makefile.in}が
10317: @file{Makefile.am}より新しくなってしまいます.この開発者は,
10318: @file{Makefile.in}が古いことが分からないでしょう.
10319: @end itemize
10320: 
10321: @c @subsubheading Generated files out of CVS
10322: @subsubheading 生成されるファイルをCVSに入れない
10323: 
10324: @c One way to get CVS and @code{make} working peacefully is to never
10325: @c store generated files in CVS, i.e., do not CVS-control files which
10326: @c are @code{Makefile} targets (also called @emph{derived} files).
10327: @c 
10328: CVSと@code{make}を平和に動作させる一つの方法は,生成されるファイルを
10329: CVSに保存しないことで,すなわち,@code{Makefile}のターゲット(@emph{派
10330: 生}ファイルとも呼ばれます)をCVSの制御下におかないことです.
10331: 
10332: @c This way developers are not annoyed by changes to generated files.  It
10333: @c does not matter if they all have different versions (assuming they are
10334: @c compatible, of course).  And finally, timestamps are not lost, changes
10335: @c to sources files can't be missed as in the
10336: @c @file{Makefile.am}/@file{Makefile.in} example discussed earlier.
10337: @c 
10338: この方法では,開発者は生成されるファイルの変更で悩むことはありません.
10339: 全員が異なるバージョンを所有している場合は問題になります(もちろん互換
10340: 性があると仮定してもです).結局,タイムスタンプは失われ,ソースファイ
10341: ルへの変更は,これまでに議論してきた
10342: @file{Makefile.am}/@file{Makefile.in}の例のように失われてしまうはずで
10343: す.
10344: 
10345: @c The drawback is that the CVS repository is not an exact copy of what
10346: @c is distributed and that users now need to install various development
10347: @c tools (maybe even specific versions) before they can build a checkout.
10348: @c But, after all, CVS's job is versioning, not distribution.
10349: @c 
10350: 欠点は,配布されるものの正確なコピーがCVSリポジトリに無いことと,チェッ
10351: クアウトしたものをビルド可能にする前に,様々な開発ツール(バージョンが
10352: 指定されるかもしれません)をユーザがインストールする必要があるというこ
10353: とです.しかし,結局は,CVSの仕事はバージョン管理であり,配布ではあり
10354: ません.
10355: 
10356: @c Allowing developers to use different versions of their tools can also
10357: @c hide bugs during distributed development.  Indeed, developers will be
10358: @c using (hence testing) their own generated files, instead of the
10359: @c generated files that will be released actually.  The developer who
10360: @c prepares the tarball might be using a version of the tool that
10361: @c produces bogus output (for instance a non-portable C file), something
10362: @c other developers could have noticed if they weren't using their own
10363: @c versions of this tool.
10364: @c 
10365: 開発者が異なるバージョンのツールの使用を可能にすると,配布された開発物
10366: のバグを隠すことにもなります.事実,開発者は,実際のリリースで生成され
10367: るファイルの代わりに,(テストであっても)自分が生成したファイルを使用し
10368: ます.tarballを準備している開発者は,使用しているツールのバージョンが
10369: 間違った出力を生成するものを使用している可能性があり(例えば,移植性の
10370: ないCファイル),他の開発者が,独自のバージョンのこのツールを使用してい
10371: ない場合,注意されることになるでしょう.
10372: 
10373: @c @subsection Third-party files
10374: @subsection サードパーティーのファイル
10375: @cindex CVS and third-party files
10376: @cindex third-party files and CVS
10377: 
10378: @c Another class of files not discussed here (because they do not cause
10379: @c timestamp issues) are files which are shipped with a package, but
10380: @c maintained elsewhere.  For instance tools like @command{gettextize}
10381: @c and @command{autopoint} (from Gettext) or @command{libtoolize} (from
10382: @c Libtool), will install or update files in your package.
10383: @c 
10384: (タイムスタンプの問題が無いので)ここでは議論しませんが,それ以外に分類
10385: されるファイルとして,パッケージとともに配布されるけれども,どこでも管
10386: 理されていないファイルがあります.例えば,@command{gettextize}と
10387: @command{autopoint}(Gettext由来)や,@command{libtoolize}(Libtool由来) 
10388: のようなツールは,パッケージにファイルをインストールしたり更新したりし
10389: ます.
10390: 
10391: @c These files, whether they are kept under CVS or not, raise similar
10392: @c concerns about version mismatch between developers' tools.  The
10393: @c Gettext manual has a section about this, see @ref{CVS Issues, CVS
10394: @c Issues, Integrating with CVS, gettext, GNU gettext tools}.
10395: @c 
10396: これらのファイルは,CVSに保持しようが保持しまいが,開発者のツール間の
10397: バージョンの違いについて,似たようなことが生じます.Gettextのマニュア
10398: ルにはこれに関するセクションがあります.@ref{CVS Issues, CVS Issues,
10399: Integrating with CVS, gettext, GNU gettext tools}を参照して下さい.
10400: 
10401: @node maintainer-mode
10402: @c @section @command{missing} and @code{AM_MAINTAINER_MODE}
10403: @section @command{missing}と@code{AM_MAINTAINER_MODE}
10404: 
10405: @subsection @command{missing}
10406: @cindex missing, purpose
10407: 
10408: @c The @command{missing} script is a wrapper around several maintainer
10409: @c tools, designed to warn users if a maintainer tool is required but
10410: @c missing.  Typical maintainer tools are @command{autoconf},
10411: @c @command{automake}, @command{bison}, etc.  Because file generated by
10412: @c these tools are shipped with the other sources of a package, these
10413: @c tools shouldn't be required during a user build and they are not
10414: @c checked for in @file{configure}.
10415: @c 
10416: @command{missing}スクリプトは,いくつかの管理用ツールのラッパーで,要
10417: 求される管理用ツールを持っていないユーザのために設計されています.通常,
10418: 管理用ツールとは,@command{autoconf},@command{automake},
10419: @command{bison}等です.これらのツールで生成されるファイルは,パッケー
10420: ジのその他のファイルとともに配布されるので,ユーザがビルドしたり,それ
10421: らがconfigureで調査されている間は,これらのツールは要求されません.
10422: 
10423: @c However, if for some reason a rebuild rule is triggered and involves a
10424: @c missing tool, @command{missing} will notice it and warn the user.
10425: @c Besides the warning, when a tool is missing, @command{missing} will
10426: @c attempt to fix timestamps in a way which allow the build to continue.
10427: @c For instance @command{missing} will touch @file{configure} if
10428: @c @command{autoconf} is not installed.  When all distributed files are
10429: @c kept under CVS, this feature of @command{missing} allows user
10430: @c @emph{with no maintainer tools} to build a package off CVS, bypassing
10431: @c any timestamp inconsistency implied by @code{cvs update}.
10432: @c 
10433: しかし,理由があってリビルドのルールが開始され,足りないツールが呼び出
10434: される場合,@command{missing}はユーザに警告します.ツールが無いとき,
10435: 警告はされますが,ビルドの継続を可能にする方向で,@command{missing}は
10436: タイムスタンプを修正を試みます.例えば,@command{autoconf}がインストー
10437: ルされていない場合,@command{missing}は@file{configure}を
10438: @command{touch}します.配布されるすべてのファイルがCVSに保持されている
10439: 場合,@command{missing}のこの機能で,ユーザは@emph{管理用ツールが無く
10440: ても,}@code{cvs update}で暗黙に指定されたタイムスタンプを回避して,
10441: CVSからのパッケージをビルドすることが可能になります.
10442: 
10443: @c If the required tool is installed, @command{missing} will run it and
10444: @c won't attempt to continue after failures.  This is correct during
10445: @c development: developers love fixing failures.  However, users with
10446: @c wrong versions of maintainer tools may get an error when the rebuild
10447: @c rule is spuriously triggered, halting the build.  This failure to let
10448: @c the build continue is one of the arguments of the
10449: @c @code{AM_MAINTAINER_MODE} advocates.
10450: @c 
10451: 要求されるツールがインストールされている場合,@command{missing}はそれ
10452: を実行し,異常終了した後は継続しようとしません.これは開発時には正しい
10453: もので,開発者は異常終了を修正したいものです.しかし,管理用ツールの違
10454: うバージョンを持っているユーザは,リビルドルールが間違って開始されると
10455: き,ビルドが終了しエラーになるかもしれません.ビルドの継続による異常終
10456: 了は,@code{AM_MAINTAINER_MODE}で主張している論点の一つです.
10457: 
10458: @subsection @code{AM_MAINTAINER_MODE}
10459: @cindex AM_MAINTAINER_MODE, purpose
10460: @cvindex AM_MAINTAINER_MODE
10461: 
10462: @c @code{AM_MAINTAINER_MODE} disables the so called "rebuild rules" by
10463: @c default.  If you have @code{AM_MAINTAINER_MODE} in
10464: @c @file{configure.ac}, and run @code{./configure && make}, then
10465: @c @command{make} will *never* attempt to rebuilt @file{configure},
10466: @c @file{Makefile.in}s, Lex or Yacc outputs, etc.  I.e., this disables
10467: @c build rules for files which are usually distributed and that users
10468: @c should normally not have to update.
10469: @c 
10470: @code{AM_MAINTAINER_MODE}は,"リビルドのルール"の呼び出しをデフォルト
10471: で利用不可能にします.@file{configure.ac}に@code{AM_MAINTAINER_MODE}が
10472: あって,@code{./configure && make}を実行する場合,@command{make}は
10473: @file{configure},@file{Makefile.in},LexやYaccの出力などのリビルドを* 
10474: 決して*試みません.すなわち,一般的に配布されるが,通常ユーザが更新す
10475: る必要が無いファイルに対するビルドルールを利用不可能にします.
10476: 
10477: @c If you run @code{./configure --enable-maintainer-mode}, then these
10478: @c rebuild rules will be active.
10479: @c 
10480: @code{./configure --enable-maintainer-mode}を実行する場合,これらのリ
10481: ビルドルールが利用されるようになります.
10482: 
10483: @c People use @code{AM_MAINTAINER_MODE} either because they do want their
10484: @c users (or themselves) annoyed by timestamps lossage (@pxref{CVS}), or
10485: @c because they simply can't stand the rebuild rules and prefer running
10486: @c maintainer tools explicitly.
10487: @c 
10488: ユーザ(や自分自身が)が失われたタイムスタンプ(@pxref{CVS})でうんざりし
10489: たくないからとか,単純に,リビルドルールを使わないようにして管理用ツー
10490: ルを明示的に実行したいから,といった理由で@code{AM_MAINTAINER_MODE}を
10491: 使用します.
10492: 
10493: @c @code{AM_MAINTAINER_MODE} also allows you to disable some custom build
10494: @c rules conditionally.  Some developers use this feature to disable
10495: @c rules that need exotic tools that users may not have available.
10496: @c 
10497: @code{AM_MAINTAINER_MODE}では,条件的なカスタムビルドのルールも利用不
10498: 可能にすることが可能になります.ユーザが利用不可能なおそれのある外部ツー
10499: ルのルールを利用不可能にするため,この機能を使用する管理者もいます.
10500: 
10501: @c Several years ago Fran@,{c}ois Pinard pointed out several arguments
10502: @c against @code{AM_MAINTAINER_MODE}.  Most of them relate to insecurity.
10503: @c By removing dependencies you get non-dependable builds: change to
10504: @c sources files can have no effect on generated files and this can be
10505: @c very confusing when unnoticed.  He adds that security shouldn't be
10506: @c reserved to maintainers (what @code{--enable-maintainer-mode}
10507: @c suggests), on the contrary.  If one user has to modify a
10508: @c @file{Makefile.am}, then either @file{Makefile.in} should be updated
10509: @c or a warning should be output (this is what Automake uses
10510: @c @code{missing} for) but the last thing you want is that nothing
10511: @c happens and the user doesn't notice it (this is what happens when
10512: @c rebuild rules are disabled by @code{AM_MAINTAINER_MODE}).
10513: @c 
10514: 数年前,Fran@,{c}ois Pinardは@code{AM_MAINTAINER_MODE}にいくつかの引数
10515: を付けるよう指示しました.それらのほとんどは不安定になり得ます.依存性
10516: を削除することで,非依存のビルドにすることができます.ソースファイルを
10517: 変更することで,生成されるファイルに影響がなくなり,このことで,注意さ
10518: れないときでも非常に混乱するはずです.彼は,安定は管理者に限定すべきで
10519: はなく(@code{--enable-maintainer-mode}で提案されたもの),反対だと付け
10520: 加えました.ユーザが@file{Makefile.am}を編集すると,@file{Makefile.in} 
10521: を更新する,または警告を出力すべきですが(これがAutomakeで
10522: @code{missing}を使用する理由です),最終的に望むことは,何も起こらず,
10523: ユーザは注意もされないことです(これは,@code{AM_MAINTAINER_MODE}でリビ
10524: ルドのルールを利用不可能にすることです).
10525: 
10526: @c Jim Meyering, the inventor of the @code{AM_MAINTAINER_MODE} macro was
10527: @c swayed by Fran@,{c}ois's arguments, and got rid of
10528: @c @code{AM_MAINTAINER_MODE} in all of his packages.
10529: @c 
10530: @code{AM_MAINTAINER_MODE}マクロを開発したJim Meyeringは,Fran@,{c}ois 
10531: との議論に動揺し,パッケージから@code{AM_MAINTAINER_MODE}を取り除きま
10532: した.
10533: 
10534: @c Still many people continue to use @code{AM_MAINTAINER_MODE}, because
10535: @c it helps them working on projects where all files are kept under CVS,
10536: @c and because @command{missing} isn't enough if you have the wrong
10537: @c version of the tools.
10538: @c 
10539: すべてのファイルをCVSに保持しているプロジェクトで作業する手助けとなり,
10540: 違うバージョンのツールを所有している場合は@command{missing}が十分では
10541: ないので,今でも,@code{AM_MAINTAINER_MODE}を使用し続けている人はたく
10542: さんいます.
10543: 
10544: 
10545: @node wildcards
10546: @c @section Why doesn't Automake support wildcards?
10547: @section なぜAutomakeはワイルドカードをサポートしないのですか?
10548: @cindex wildcards
10549: 
10550: @c Developers are lazy.  They often would like to use wildcards in
10551: @c @file{Makefile.am}s, so they don't need to remember they have to
10552: @c update @file{Makefile.am}s every time they add, delete, or rename a
10553: @c file.
10554: @c 
10555: 開発者は怠けものです.ファイルの追加,削除,または名前の変更のたびに,
10556: @file{Makefile.am}の更新を忘れないようにする必要がないよう,
10557: @file{Makefile.am}でワイルドカードを使用したいときもよくあります.
10558: 
10559: @c There are several objections to this:
10560: @c 
10561: これにはいくつかの欠点があります.
10562: @itemize
10563: @item
10564: @c When using CVS (or similar) developers need to remember they have to
10565: @c run @code{cvs add} or @code{cvs rm} anyway.  Updating
10566: @c @file{Makefile.am} accordingly quickly becomes a reflex.
10567: @c 
10568: CVS(やそれに似たもの)を使用している管理者は,@code{cvs add}や@code{cvs
10569: rm}を実行する必要があることを,とにかく覚えておく必要があります.とい
10570: うわけで,@file{Makefile.am}も反射的にすぐ行なうようになります.
10571: 
10572: @c Conversely, if your application doesn't compile
10573: @c because you forgot to add a file in @file{Makefile.am}, it will help
10574: @c you remember to @code{cvs add} it.
10575: @c 
10576: 逆に,アプリケーションが完全ではない場合,@file{Makefile.am}にファイル
10577: を追加する必要があるので,それを@code{cvs add}することを覚えておく手助
10578: けになります.
10579: 
10580: @item
10581: @c Using wildcards makes easy to distribute files by mistake.  For
10582: @c instance some code a developer is experimenting with (a test case,
10583: @c say) but which should not be part of the distribution.
10584: @c 
10585: ワイルドカードを使用することで,間違ってファイルを配布しやすくなります.
10586: 例えば,開発者が(いわゆるテストケースで)調査するためのコードで,それは
10587: 配布物の一部にすべきではありません.
10588: 
10589: @item
10590: @c Using wildcards it's easy to omit some files by mistake.  For
10591: @c instance one developer creates a new file, uses it at many places,
10592: @c but forget to commit it.  Another developer then checkout the
10593: @c incomplete project and is able to run `make dist' successfully,
10594: @c even though a file is missing.
10595: @c 
10596: ワイルドカードを使用すると,間違ってファイルを削除しやすくなります.例
10597: えば,ある開発者が新しいファイルを作成し,それをたくさんの場所で使用し
10598: ているが,これをコミットするのを忘れているとします.他の開発者は,不完
10599: 全なプロジェクトをチェックアウトしても,ファイルが足りなくても,問題無
10600: く@samp{make dist}を実行することが可能です.
10601: 
10602: @item
10603: @c Listing files, you control *exactly* what you distribute.
10604: @c If some file that should be distributed is missing from your
10605: @c tree, @code{make dist} will complain.  Besides, you don't distribute
10606: @c more than what you listed.
10607: @c 
10608: ファイルをリストアップすると,配布するものを@emph{正確に}制御できます.
10609: 配布されるべきファイルがツリーに無い場合,@code{make dist}で文句を言わ
10610: れます.さらに,リストアップしている以上のファイルを配布することもあり
10611: ません.
10612: 
10613: @item
10614: @c Finally it's really hard to @file{forget} adding a file to
10615: @c @file{Makefile.am}, because if you don't add it, it doesn't get
10616: @c compiled nor installed, so you can't even test it.
10617: @c 
10618: おしまいに,ファイルを@file{Makefile.am}に追加し忘れることは滅多に無く,
10619: それは,追加していない場合,コンパイルもインストールもされず,テストす
10620: らできないでしょう.
10621: @end itemize
10622: 
10623: @c Still, these are philosophical objections, and as such you may disagree,
10624: @c or find enough value in wildcards to dismiss all of them.  Before you
10625: @c start writing a patch against Automake to teach it about wildcards,
10626: @c let's see the main technical issue: portability.
10627: @c 
10628: それらすべてを却下するほとワイルドカードに十分な価値があるという反対意
10629: 見があるかもしれませんが,まだ哲学的な欠点もあります.Automakeにワイル
10630: ドカードを伝えるためのパッチを書き始める前に,主な技術的な問題を見てい
10631: きましょう.それは移植性です.
10632: 
10633: @c Although @code{$(wildcard ...)} works with GNU @command{make}, it is
10634: @c not portable to other @command{make} implementations.
10635: @c 
10636: @code{$(wildcard ...)}はGNU @command{make}で動作しますが,他の
10637: @command{make}の実装では移植性がありません.
10638: 
10639: @c The only way Automake could support @command{$(wildcard ...)} is by
10640: @c expending @command{$(wildcard ...)} when @command{automake} is run.
10641: @c Resulting @file{Makefile.in}s would be portable since they would
10642: @c list all files and not use @code{$(wildcard ...)}.  However that
10643: @c means developers need to remember they must run @code{automake} each
10644: @c time they add, delete, or rename files.
10645: @c 
10646: Automakeで@command{$(wildcard ...)}をサポートする唯一の方法は,
10647: @command{automake}の実行時に@command{$(wildcard ...)}を展開することで
10648: す.結果として得られる@file{Makefile.in}には,@code{$(wildcard ...)}が
10649: 使用されておらず,すべてのファイルをリストアップしているので移植性があ
10650: ります.しかしそれは,ファイルを追加,削除,または名前の変更をするたび
10651: に,開発者が@code{automake}を実行する必要があるということを意味します.
10652: 
10653: @c Compared to editing @file{Makefile.am}, this is really little win.  Sure,
10654: @c it's easier and faster to type @code{automake; make} than to type
10655: @c @code{emacs Makefile.am; make}.  But nobody bothered enough to write a
10656: @c patch add support for this syntax.  Some people use scripts to
10657: @c generated file lists in @file{Makefile.am} or in separate
10658: @c @file{Makefile} fragments.
10659: @c 
10660: @file{Makefile.am}を編集するより,実際は若干勝っています.確かに,
10661: @code{emacs Makefile.am; make}と入力するより@code{automake; make}と入
10662: 力する方が簡単で速いでしょう.しかし,この構文のサポートを追加するのに
10663: 十分なパッチを書くことを邪魔する人はいません.@file{Makefile.am}や個別
10664: の@file{Makefile}の断片にファイルリストを生成するスクリプトを使う人も
10665: います.
10666: 
10667: @c Even if you don't care about portability, and are tempted to use
10668: @c @code{$(wildcard ...)} anyway because you target only GNU Make, you
10669: @c should know there are many places where Automake need to know exactly
10670: @c which files should be processed.  As Automake doesn't know how to
10671: @c expand @code{$(wildcard ...)}, you cannot use it in these places.
10672: @c @code{$(wildcard ...)} is a black box comparable to @code{AC_SUBST}ed
10673: @c variables as far Automake is concerned.
10674: @c 
10675: 移植性に気を付けていなくても,GNU Makeだけをターゲットにしていて,なん
10676: とかして@code{$(wildcard ...)}を使用したい場合でも,処理されるファイル
10677: をAutomakeが正確に知っている必要がある場所がたくさんあることを知ってお
10678: くべきです.Automakeは@code{$(wildcard ...)}を展開する方法を知らないの
10679: で,これらの場所で使用することは不可能です.@code{$(wildcard ...)}は,
10680: Automakeが尊重する@code{AC_SUBST}されている変数と比べてブラックボック
10681: スになります.
10682: 
10683: @c You can get warnings about @code{$(wildcard ...}) constructs using the
10684: @c @code{-Wportability} flag.
10685: @c 
10686: @code{-Wportability}フラグを使用すると,@code{$(wildcard ...)}の構成物
10687: は警告されるはずです.
10688: 
10689: @node distcleancheck
10690: @c @section Files left in build directory after distclean
10691: @section distclean後にビルドディレクトリに残っているファイル
10692: @cindex distclean, diagnostic
10693: @cindex dependencies and distributed files
10694: @trindex distclean
10695: @trindex distcleancheck
10696: 
10697: @c This is a diagnostic you might encounter while running @code{make
10698: @c distcheck}.
10699: @c 
10700: これは(Files left in build directory after distclean),@code{make
10701: distcheck}時に遭遇する可能性がある診断結果です.
10702: 
10703: @c As explained in @ref{Dist}, @code{make distcheck} attempts to build
10704: @c and check your package for errors like this one.
10705: @c 
10706: @ref{Dist}で説明したように,@code{make distcheck}では,このようなエラー
10707: に対し,パッケージのビルドと調査を試みます.
10708: 
10709: @c @code{make distcheck} will perform a @code{VPATH} build of your
10710: @c package, and then call @code{make distclean}.  Files left in the build
10711: @c directory after @code{make distclean} has run are listed after this
10712: @c error.
10713: @c 
10714: @code{make distcheck}は,パッケージの@code{VPATH}のビルドを実行し,
10715: @code{make distclean}を呼び出します.@code{make distclean}が実行された
10716: 後で,ビルドディレクトリに残っているファイルは,このエラーの後でリスト
10717: アップされます.
10718: 
10719: @c This diagnostic really covers two kinds of errors:
10720: @c 
10721: この診断結果は,実際には二種類のエラーをカバーしています.
10722: 
10723: @itemize @bullet
10724: @item
10725: @c files that are forgotten by distclean;
10726: @c 
10727: distcleanで忘れられているファイル.
10728: @item
10729: @c distributed files that are erroneously rebuilt.
10730: @c 
10731: 間違ってリビルドされる配布ファイル.
10732: @end itemize
10733: 
10734: @c The former left-over files are not distributed, so the fix is to mark
10735: @c them for cleaning (@pxref{Clean}), this is obvious and doesn't deserve
10736: @c more explanations.
10737: @c 
10738: 残っている前者のファイルは配布されないので,クリーンするよう
10739: (@pxref{Clean})印が付いているものを修正します.これは明白で,文句を言
10740: われても仕方がありません.
10741: 
10742: @c The latter bug is not always easy to understand and fix, so let's
10743: @c proceed with an example.  Suppose our package contains a program for
10744: @c which we want to build a man page using @command{help2man}.  GNU
10745: @c @command{help2man} produces simple manual pages from the @code{--help}
10746: @c and @code{--version} output of other commands (@pxref{Top, , Overview,
10747: @c help2man, The Help2man Manual}).  Because we don't to force want our
10748: @c users to install @command{help2man}, we decide to distribute the
10749: @c generated man page using the following setup.
10750: @c 
10751: 後者のバグは,理解し修正するのが常に容易だというわけではないので,例を
10752: 用いて説明します.パッケージに@command{help2man}を使用してmanページを
10753: ビルドしたいプログラムが含まれていると仮定します.GNU
10754: @command{help2man}は,コマンドの@code{--help}と@code{--version}の出力
10755: から簡単なマニュアルページを生成します(@pxref{Top, , Overview,
10756: help2man, The Help2man Manual}).@command{help2man}のインストールをユー
10757: ザに強制したくないので,以下のような設定を使用して生成されたmanページ
10758: を配布するように決めました.
10759: 
10760: @example
10761: # This Makefile.am is bogus.
10762: bin_PROGRAMS = foo
10763: foo_SOURCES = foo.c
10764: dist_man_MANS = foo.1
10765: 
10766: foo.1: foo$(EXEEXT)
10767: 	help2man --output=foo.1 ./foo$(EXEEXT)
10768: @end example
10769: 
10770: @c This will effectively distribute the man page.  However,
10771: @c @code{make distcheck} will fail with:
10772: @c 
10773: これで,manページを効果的に配布します.しかし,@code{make distcheck}は
10774: 以下のように異常終了するでしょう.
10775: 
10776: @example
10777: ERROR: files left in build directory after distclean:
10778: ./foo.1
10779: @end example
10780: 
10781: @c Why was @file{foo.1} rebuilt?  Because although distributed,
10782: @c @file{foo.1} depends on a non-distributed built file:
10783: @c @file{foo$(EXEEXT)}.  @file{foo$(EXEEXT)} is built by the user, so it
10784: @c will always appear to be newer than the distributed @file{foo.1}.
10785: @c 
10786: なぜ@file{foo.1}がリビルドされたのでしょうか?その理由は,配布はされな
10787: いものの,@file{foo.1}は配布されないファイル@file{foo$(EXEEXT)}に依存
10788: しているためです.@file{foo$(EXEEXT)}はユーザがビルドするので,それは
10789: 配布されている@file{foo.1}より常に新しいものになります.
10790: 
10791: @c @code{make distcheck} caught an inconsistency in our package.  Our
10792: @c intent was to distribute @file{foo.1} so users do not need installing
10793: @c @command{help2man}, however since this our rule causes this file to be
10794: @c always rebuilt, users @emph{do} need @command{help2man}.  Either we
10795: @c should ensure that @file{foo.1} is not rebuilt by users, or there is
10796: @c no point in distributing @file{foo.1}.
10797: @c 
10798: @code{make distcheck}はパッケージ内の矛盾をとらえます.ユーザが
10799: @command{help2man}をインストールする必要が無いように,@file{foo.1}を配
10800: 布するのが目的でしたが,このルールで今ではファイルが常にリビルドされ,
10801: ユーザは@emph{どうしても}@command{help2man}が必要になります.
10802: @file{foo.1}がユーザにリビルドされないことを確実にする,または
10803: @file{foo.1}の配布を諦めるかのいずれかにすべきです.
10804: 
10805: @c More generally, the rule is that distributed files should never depend
10806: @c on non-distributed built files.  If you distribute something
10807: @c generated, distribute its sources.
10808: @c 
10809: より一般的には,配布されるファイルのルールには,配布されないビルドされ
10810: るファイルに決して依存しないようにすべきです.生成されたものを配布する
10811: 場合,そのソースを配布してください.
10812: 
10813: @c One way to fix the above example, while still distributing
10814: @c @file{foo.1} is to not depend on @file{foo$(EXEEXT)}.  For instance,
10815: @c assuming @command{foo --version} and @command{foo --help} do not
10816: @c change unless @file{foo.c} or @file{configure.ac} change, we could
10817: @c write the following @file{Makefile.am}:
10818: @c 
10819: 上記の例を修正する一つの方法として,配布される@file{foo.1}が
10820: @file{foo$(EXEEXT)}に依存しないようにします.例えば,@command{foo
10821: --version}と@command{foo --help}が,@file{foo.c}や@file{configure.ac} 
10822: が変更されない限り変更されない状況では,以下のような@file{Makefile.am} 
10823: を書くことが可能です.
10824: 
10825: @example
10826: bin_PROGRAMS = foo
10827: foo_SOURCES = foo.c
10828: dist_man_MANS = foo.1
10829: 
10830: foo.1: foo.c $(top_srcdir)/configure.ac
10831:         $(MAKE) $(AM_MAKEFLAGS) foo$(EXEEXT)
10832: 	help2man --output=foo.1 ./foo$(EXEEXT)
10833: @end example
10834: 
10835: @c This way, @file{foo.1} will not get rebuilt every time
10836: @c @file{foo$(EXEEXT)} changes.  The @command{make} call makes sure
10837: @c @file{foo$(EXEEXT)} is up-to-date before @command{help2man}.  Another
10838: @c way to ensure this would be to use separate directories for binaries
10839: @c and man pages, and set @code{SUBDIRS} so that binaries are built
10840: @c before man pages.
10841: @c 
10842: この方法では,@file{foo.1}は@file{foo$(EXEEXT)}が変更されるたびにリビ
10843: ルドされません.@command{make}は@command{help2man}の前に
10844: @file{foo$(EXEEXT)}を確実に更新します.これを確実にするもう一つの方法
10845: は,バイナリとmanページに対して別のディレクトリを使用し,
10846: @code{SUBDIRS}をmanページがビルドされる前にバイナリがビルドされるよう
10847: に設定することです.
10848: 
10849: @c We could also decide not to distribute @file{foo.1}.  In
10850: @c this case it's fine to have @file{foo.1} dependent upon
10851: @c @file{foo$(EXEEXT)}, since both will have to be rebuilt.
10852: @c However it would be impossible to build the package in a
10853: @c cross-compilation, because building @file{foo.1} involves
10854: @c an @emph{execution} of @file{foo$(EXEEXT)}.
10855: @c 
10856: @file{foo.1}を配布しないように決定することも可能です.この状況では,
10857: @file{foo.1}が@file{foo$(EXEEXT)}に依存するようにすると両方ともリビル
10858: ドされるので優れています.しかし,@file{foo.1}のビルドで
10859: @file{foo$(EXEEXT)}を@emph{実行}するので,クロスコンパイルでパッケージ
10860: をリビルドすることは不可能です.
10861: 
10862: @c Another context where such errors are common is when distributed files
10863: @c are built by tools which are built by the package.  The pattern is similar:
10864: @c 
10865: そのようなエラーがあるもう一つの状況は,配布されるファイルがパッケージ
10866: でビル度されるツールを用いてビルドされるときです.パターンは似ています.
10867: 
10868: @example
10869: distributed-file: built-tools distributed-sources
10870:         build-command
10871: @end example
10872: 
10873: @noindent
10874: @c should be changed to
10875: @c 
10876: 以下のように変更すべきです.
10877: 
10878: @example
10879: distributed-file: distributed-sources
10880:         $(MAKE) $(AM_MAKEFLAGS) built-tools
10881:         build-command
10882: @end example
10883: 
10884: @noindent
10885: @c or you could choose not to distribute @file{distributed-file}, if
10886: @c cross-compilation does not matter.
10887: @c 
10888: または,クロスコンパイルで問題になる場合は@file{distributed-file}を配
10889: 布しないように選択することも可能です.
10890: 
10891: @c The points made through these examples are worth a summary:
10892: @c 
10893: これらの例に意味がある状況をまとめます.
10894: 
10895: @cartouche
10896: @itemize
10897: @item
10898: @c Distributed files should never depend upon non-distributed built
10899: @c files.
10900: @c 
10901: 配布されるファイルは,配布されないがビルドはされるファイルに決して依存
10902: すべきではない.
10903: @item
10904: @c Distributed files should be distributed will all their dependencies.
10905: @c 
10906: 配布されるファイルは,その依存性で配布されるべきである.
10907: @item
10908: @c If a file is @emph{intended} be rebuilt by users, there is no point in
10909: @c distributing it.
10910: @c 
10911: ファイルがユーザにリビルドされるよう@emph{意図される}場合,それを配布
10912: する場所はない.
10913: @end itemize
10914: @end cartouche
10915: 
10916: @vrindex distcleancheck_listfiles
10917: @c For desperate cases, it's always possible to disable this check by
10918: @c setting @code{distcleancheck_listfiles} as documented in @ref{Dist}.
10919: @c Make sure you do understand the reason why @code{make distcheck}
10920: @c complains before you do this.  @code{distcleancheck_listfiles} is a
10921: @c way to @emph{hide} errors, not to fix them.  You can always do better.
10922: @c 
10923: 絶望的な状況では,@ref{Dist}で説明したように,
10924: @code{distcleancheck_listfiles}を設定することで,この調査を利用不可能
10925: にすることが可能です.こうする前に,@code{make distcheck}が文句を言う
10926: 理由を必ず理解して下さい.@code{distcleancheck_listfiles}は@emph{エラー} 
10927: を隠す方法で,それを修正するものではありません.良いようにして下さい.
10928: 
10929: 
10930: @node renamed objects
10931: @c @section Why are object files sometimes renamed?
10932: @section なぜオブジェクトファイルの名前を変更することがあるのですか?
10933: 
10934: @c This happens when per-target compilation flags are used.  Object
10935: @c files need to be renamed just in case they would clash with object
10936: @c files compiled from the same sources, but with different flags.
10937: @c Consider the following example.
10938: @c 
10939: これは,ターゲットごとにコンパイルフラグが使用されているとき発生します.
10940: オブジェクトファイルは,同じソースから異なるフラグを用いてコンパイルさ
10941: れるオブジェクトが互いに壊されないように,名前を変更する必要があります.
10942: 以下の例を考えて下さい.
10943: 
10944: @example
10945: bin_PROGRAMS = true false
10946: true_SOURCES = generic.c
10947: true_CPPFLAGS = -DEXIT_CODE=0
10948: false_SOURCES = generic.c
10949: false_CPPFLAGS = -DEXIT_CODE=1
10950: @end example
10951: @noindent
10952: @c Obviously the two programs are built from the same source, but it
10953: @c would be bad if they shared the same object, because @file{generic.o}
10954: @c cannot be built with both @code{-DEXIT_CODE=0} *and*
10955: @c @code{-DEXIT_CODE=1}.  Therefore @command{automake} outputs rules to
10956: @c build two different objects: @file{true-generic.o} and
10957: @c @file{false-generic.o}.
10958: @c 
10959: 二つのプログラムが同じソースからコンパイルされ,同じオブジェクトが共有
10960: される場合は問題になるのは明らかで,それは,@file{generic.o}は
10961: @code{-DEXIT_CODE=0}@emph{と}@code{-DEXIT_CODE=1}の両方を用いてコンパ
10962: イルすることが不可能だからです.このため,@command{automake}は二つの異
10963: なるオブジェクト,@file{true-generic.o}と@file{false-generic.o}をビル
10964: ドするルールを出力します.
10965: 
10966: @c @command{automake} doesn't actually look whether sources files are
10967: @c shared to decide if it must rename objects.  It will just rename all
10968: @c objects of a target as soon as it sees per-target compilation flags
10969: @c are used.
10970: @c 
10971: @command{automake}は,オブジェクトファイルの名前を変更する必要があるか
10972: どうかを決定するため,実際にはソースファイルが共有されているかどうかを
10973: 見ていません.ターゲットごとのコンパイルフラグを使用していることが判明
10974: したときに,すべてのターゲットのオブジェクトの名前を変更するだけです.
10975: 
10976: @c It's OK to share object files when per-target compilation flags are not
10977: @c used.  For instance @file{true} and @file{false} will both use
10978: @c @file{version.o} in the following example.
10979: @c 
10980: ターゲットごとのコンパイルフラグが使用されていないときは,オブジェクト
10981: ファイルを共有しても問題ありません.例えば以下の例のように,
10982: @file{true}と@file{false}が両方とも@file{version.o}を使用しているとき
10983: です.
10984: 
10985: @example
10986: AM_CPPFLAGS = -DVERSION=1.0
10987: bin_PROGRAMS = true false
10988: true_SOURCES = true.c version.c
10989: false_SOURCES = false.c version.c
10990: @end example
10991: 
10992: @c Note that the renaming of objects is also affected by the
10993: @c @code{_SHORTNAME} variable (@pxref{Program and Library Variables}).
10994: @c 
10995: オブジェクトファイルの名前の変更は,@code{_SHORTNAME}変数にも影響され
10996: ることに注意して下さい(@pxref{Program and Library Variables}).
10997: 
10998: @c ========================================================== Appendices
10999: 
11000: @page
11001: @node Copying This Manual
11002: @c @appendix Copying This Manual
11003: @appendix このマニュアルのコピーについて
11004: 
11005: @menu
11006: * GNU Free Documentation License::  License for copying this manual
11007: @end menu
11008: 
11009: @include fdl.texi
11010: 
11011: @page
11012: @node Indices
11013: @c @appendix Indices
11014: @appendix 索引
11015: 
11016: @menu
11017: * Macro and Variable Index::    Index of Autoconf macros and Automake variables
11018: * General Index::               General index
11019: @end menu
11020: 
11021: @node Macro and Variable Index
11022: @c @appendixsec Macro and Variable Index
11023: @appendixsec マクロと変数の索引
11024: 
11025: @printindex vr
11026: 
11027: @node General Index
11028: @c @appendixsec General Index
11029: @appendixsec 一般的な索引
11030: 
11031: @printindex cp
11032: 
11033: 
11034: @page
11035: @contents
11036: @bye
11037: 
11038: @c  LocalWords:  texinfo setfilename settitle setchapternewpage texi direntry
11039: @c  LocalWords:  dircategory in's aclocal ifinfo titlepage Tromey vskip pt sp
11040: @c  LocalWords:  filll defcodeindex ov cv op tr syncodeindex fn cp vr ifnottex
11041: @c  LocalWords:  dir Automake's ac Dist Gnits gnits cygnus dfn Autoconf's pxref
11042: @c  LocalWords:  cindex Autoconf autoconf perl samp cvs dist trindex SUBST foo
11043: @c  LocalWords:  xs emph FIXME ref vindex pkglibdir pkgincludedir pkgdatadir mt
11044: @c  LocalWords:  pkg libdir cvindex cpio bindir sbindir rmt pax sbin zar zardir
11045: @c  LocalWords:  HTML htmldir html noinst TEXINFOS nodist nobase strudel CFLAGS
11046: @c  LocalWords:  libmumble CC YFLAGS ansi knr itemx de fication config url comp
11047: @c  LocalWords:  depcomp elisp sh mdate mkinstalldirs mkdir py tex dvi ps pdf
11048: @c  LocalWords:  ylwrap zardoz INIT gettext acinclude mv FUNCS LIBOBJS LDADD fr
11049: @c  LocalWords:  uref featureful dnl src LINGUAS es ko nl pl sl sv PROG ISC doc
11050: @c  LocalWords:  POSIX STDC fcntl FUNC ALLOCA blksize struct stat intl po chmod
11051: @c  LocalWords:  ChangeLog SUBDIRS gettextize gpl testdata getopt INTLLIBS cpp
11052: @c  LocalWords:  localedir datadir DLOCALEDIR DEXIT CPPFLAGS autoreconf opindex
11053: @c  LocalWords:  AUX var symlink deps Wno Wnone package's aclocal's distclean
11054: @c  LocalWords:  ltmain xref LIBSOURCE LIBSOURCES LIBOBJ MEMCMP vs RANLIB CXX
11055: @c  LocalWords:  LDFLAGS LIBTOOL libtool XTRA LIBS gettext's acdir APIVERSION
11056: @c  LocalWords:  dirlist noindent usr MULTILIB multilib Multilibs TIOCGWINSZ sc
11057: @c  LocalWords:  GWINSZ termios SRCDIR tarball bzip LISPDIR lispdir XEmacs CCAS
11058: @c  LocalWords:  emacsen MicroEmacs CCASFLAGS UX GCJ gcj GCJFLAGS posix DMALLOC
11059: @c  LocalWords:  dmalloc ldmalloc REGEX regex rx DEPDIR DEP DEFUN aclocaldir fi
11060: @c  LocalWords:  mymacro myothermacro AMFLAGS autopoint autogen libtoolize yum
11061: @c  LocalWords:  autoheader README MAKEFLAGS subdir Inetutils sync COND endif
11062: @c  LocalWords:  Miller's installable includedir inc pkgdata EXEEXT libexec bsd
11063: @c  LocalWords:  pkglib libexecdir prog libcpio cpio's dlopen dlpreopen linux
11064: @c  LocalWords:  subsubsection OBJEXT esac lib LTLIBRARIES liblob LIBADD AR ar
11065: @c  LocalWords:  ARFLAGS cru ing maude libgettext lo LTLIBOBJS rpath SGI PRE yy
11066: @c  LocalWords:  libmaude CCLD CXXFLAGS FFLAGS LFLAGS OBJCFLAGS RFLAGS DEFS cc
11067: @c  LocalWords:  SHORTNAME vtable srcdir nostdinc basename yxx cxx ll lxx gdb
11068: @c  LocalWords:  lexers yymaxdepth maxdepth yyparse yylex yyerror yylval lval
11069: @c  LocalWords:  yychar yydebug yypact yyr yydef def yychk chk yypgo pgo yyact
11070: @c  LocalWords:  yyexca exca yyerrflag errflag yynerrs nerrs yyps yypv pv yys
11071: @c  LocalWords:  yystate yytmp tmp yyv yyval val yylloc lloc yyreds yytoks toks
11072: @c  LocalWords:  yylhs yylen yydefred yydgoto yysindex yyrindex yygindex yyname
11073: @c  LocalWords:  yytable yycheck yyrule byacc CXXCOMPILE CXXLINK FLINK cfortran
11074: @c  LocalWords:  Catalogue preprocessable FLIBS libfoo baz JAVACFLAGS java exe
11075: @c  LocalWords:  SunOS fying basenames exeext uninstalled oldinclude kr FSF's
11076: @c  LocalWords:  pkginclude oldincludedir sysconf sharedstate localstate gcc rm
11077: @c  LocalWords:  sysconfdir sharedstatedir localstatedir preexist CLEANFILES gz
11078: @c  LocalWords:  unnumberedsubsec depfile tmpdepfile depmode const interoperate
11079: @c  LocalWords:  JAVAC javac JAVAROOT builddir CLASSPATH ENV pyc pyo pkgpython
11080: @c  LocalWords:  pyexecdir pkgpyexecdir Python's pythondir pkgpythondir txi ois
11081: @c  LocalWords:  installinfo vers MAKEINFO makeinfo MAKEINFOFLAGS noinstall rf
11082: @c  LocalWords:  mandir thesame alsothesame installman myexecbin DESTDIR Pinard
11083: @c  LocalWords:  uninstall installdirs uninstalls MOSTLYCLEANFILES mostlyclean
11084: @c  LocalWords:  DISTCLEANFILES MAINTAINERCLEANFILES gzip'd GZIP gzip shar exp
11085: @c  LocalWords:  distdir distcheck distcleancheck listfiles distuninstallcheck
11086: @c  LocalWords:  VPATH tarfile stdout XFAIL DejaGnu dejagnu DEJATOOL runtest ln
11087: @c  LocalWords:  RUNTESTDEFAULTFLAGS toolchain RUNTESTFLAGS asis readme DVIPS
11088: @c  LocalWords:  installcheck gzipped tarZ std utils etags mkid multilibbing cd
11089: @c  LocalWords:  ARGS taggable ETAGSFLAGS lang ctags CTAGSFLAGS GTAGS gtags idl
11090: @c  LocalWords:  foocc doit idlC multilibs ABIs cmindex defmac ARG enableval
11091: @c  LocalWords:  MSG xtrue DBG pathchk CYGWIN afile proglink versioned CVS's
11092: @c  LocalWords:  wildcards Autoconfiscated subsubheading autotools Meyering API
11093: @c  LocalWords:  ois's wildcard Wportability cartouche vrindex printindex Duret
11094: @c  LocalWords:  DSOMEFLAG DVERSION automake Lutz insertcopying versioning FAQ
11095: @c  LocalWords:  LTLIBOBJ Libtool's libtool's libltdl dlopening itutions libbar
11096: @c  LocalWords:  WANTEDLIBS libhello sublibraries libtop libsub dlopened Ratfor
11097: @c  LocalWords:  mymodule timestamps timestamp underquoted MAKEINFOHTMLFLAGS

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