File:  [Local Repository] / gnujdoc / autoconf-2.54 / autoconf-ja.texi
Revision 1.1: download - view: text, annotated - select for diffs
Sat Sep 21 08:48:42 2002 UTC (18 years ago) by futoshi
Branches: MAIN
CVS tags: HEAD
Add Autoconf-2.54

    1: \input texinfo @c -*-texinfo-*-
    2: @comment ========================================================
    3: @comment %**start of header
    4: @setfilename autoconf-ja.info
    5: @include autoconf-v.texi
    6: @settitle Autoconf
    7: @setchapternewpage odd
    8: @setcontentsaftertitlepage
    9: @finalout
   10: 
   11: @c @documentlanguage ja
   12: 
   13: @c A simple macro for optional variables.
   14: @macro ovar{varname}
   15: @r{[}@var{\varname\}@r{]}
   16: @end macro
   17: 
   18: @c A simple macro for optional variables with a default value.
   19: @macro dvar{varname, default}
   20: @r{[}@var{\varname\} = @samp{\default\}@r{]}
   21: @end macro
   22: 
   23: @c I don't like the way URL are displayed in TeX with @uref.
   24: @ifhtml
   25: @macro href{url, title}
   26: @uref{\url\, \title\}
   27: @end macro
   28: @end ifhtml
   29: @ifnothtml
   30: @macro href{url, title}
   31: \title\@footnote{\title\, @url{\url\}.}
   32: @end macro
   33: @end ifnothtml
   34: 
   35: @c Define an environment variable index.
   36: @defcodeindex ev
   37: @c Define an output variable index.
   38: @defcodeindex ov
   39: @c Define a CPP variable index.
   40: @defcodeindex cv
   41: @c Define an Autoconf macro index that @defmac doesn't write to.
   42: @defcodeindex ac
   43: @c Define an Autotest macro index that @defmac doesn't write to.
   44: @defcodeindex at
   45: @c Define an M4sugar macro index that @defmac doesn't write to.
   46: @defcodeindex ms
   47: @c Define an index for *foreign* programs: `mv' etc.  Used for the
   48: @c portability sections and so on.
   49: @defindex pr
   50: 
   51: @c Define an index for functions: `alloca' etc.  Used for the
   52: @c portability sections and so on.  We can't use `fn' (aka `fnindex),
   53: @c since `@defmac' goes into it => we'd get all the macros too.
   54: 
   55: @c   FIXME: Aaarg!  It seems there are too many indices for TeX :(
   56: @c
   57: @c   ! No room for a new @write .
   58: @c   l.112 @defcodeindex fu
   59: @c
   60: @c   so don't define yet another one :(  Just put some tags before each
   61: @c   @prindex which is actually a @funindex.
   62: @c
   63: @c   @defcodeindex fu
   64: @c
   65: @c
   66: @c   @c Put the programs and functions into their own index.
   67: @c   @syncodeindex fu pr
   68: 
   69: @comment %**end of header
   70: @comment ========================================================
   71: 
   72: @copying
   73: 
   74: This manual is for GNU Autoconf
   75: (version @value{VERSION}, @value{UPDATED}),
   76: a package for creating scripts to configure source code packages using
   77: templates and an @code{m4} macro package.
   78: 
   79: Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
   80: 2001, 2002 Free Software Foundation, Inc.
   81: 
   82: @quotation
   83: Permission is granted to copy, distribute and/or modify this document
   84: under the terms of the GNU Free Documentation License, Version 1.1 or
   85: any later version published by the Free Software Foundation; with no
   86: Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
   87: and with the Back-Cover Texts as in (a) below.  A copy of the
   88: license is included in the section entitled ``GNU Free Documentation
   89: License.''
   90: 
   91: (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
   92: this GNU Manual, like GNU software.  Copies published by the Free
   93: Software Foundation raise funds for GNU development.''
   94: @end quotation
   95: @end copying
   96: 
   97: 
   98: 
   99: @dircategory GNU programming tools
  100: @direntry
  101: * Autoconf(ja): (autoconf-ja).         Create source code configuration scripts
  102: @end direntry
  103: 
  104: @dircategory Individual utilities
  105: @direntry
  106: * autoscan(ja): (autoconf-ja)autoscan Invocation.
  107:                                 Semi-automatic @file{configure.ac} writing
  108: * ifnames(ja): (autoconf-ja)ifnames Invocation.
  109:                                 Listing the conditionals in source code
  110: * autoconf(ja): (autoconf-ja)autoconf Invocation.
  111:                                 How to create configuration scripts
  112: * autoreconf(ja): (autoconf-ja)autoreconf Invocation.
  113:                                 Remaking multiple @command{configure} scripts
  114: * autoheader(ja): (autoconf-ja)autoheader Invocation.
  115:                                 How to create configuration templates
  116: * autom4te(ja): (autoconf-ja)Invoking autom4te.
  117:                                 The Autoconf executables backbone
  118: * configure(ja): (autoconf-ja)configure Invocation.
  119:                                 Configuring a package
  120: * autoupdate(ja): (autoconf-ja)autoupdate Invocation.
  121:                                 Automatic update of @file{configure.ac}
  122: * config.status(ja): (autoconf-ja)config.status Invocation.
  123:                                 Recreating a configuration
  124: * testsuite(ja): (autoconf-ja)testsuite Invocation.
  125:                                 Running an Autotest test suite
  126: @end direntry
  127: 
  128: @titlepage
  129: @title Autoconf
  130: @subtitle Creating Automatic Configuration Scripts
  131: @subtitle for version @value{VERSION}, @value{UPDATED}
  132: @author David MacKenzie
  133: @author Ben Elliston
  134: @author Akim Demaille
  135: @c 翻訳:西尾 太
  136: @page
  137: @vskip 0pt plus 1filll
  138: @insertcopying
  139: @end titlepage
  140: 
  141: @contents
  142: 
  143: 
  144: @ifnottex
  145: @node Top
  146: @top Autoconf
  147: @insertcopying
  148: @end ifnottex
  149: 
  150: @c The master menu, created with texinfo-master-menu, goes here.
  151: 
  152: @menu
  153: * Introduction::                Autoconf's purpose, strengths, and weaknesses
  154: * The GNU Build System::        A set of tools for portable software packages
  155: * Making configure Scripts::    How to organize and produce Autoconf scripts
  156: * Setup::                       Initialization and output
  157: * Existing Tests::              Macros that check for particular features
  158: * Writing Tests::               How to write new feature checks
  159: * Results::                     What to do with results from feature checks
  160: * Programming in M4::           Layers on top of which Autoconf is written
  161: * Writing Autoconf Macros::     Adding new macros to Autoconf
  162: * Portable Shell::              Shell script portability pitfalls
  163: * Manual Configuration::        Selecting features that can't be guessed
  164: * Site Configuration::          Local defaults for @command{configure}
  165: * Running configure Scripts::   How to use the Autoconf output
  166: * config.status Invocation::    Recreating a configuration
  167: * Obsolete Constructs::         Kept for backward compatibility
  168: * Using Autotest::              Creating portable test suites
  169: * FAQ::                         Frequent Autoconf Questions, with answers
  170: * History::                     History of Autoconf
  171: * Copying This Manual::         How to make copies of this manual
  172: * Indices::                     Indices of symbols, concepts, etc.
  173: 
  174: @detailmenu
  175: @c  --- The Detailed Node Listing ---
  176: @c 
  177:  --- 詳細なノードリスト ---
  178: 
  179: @c The GNU Build System
  180: @c 
  181: GNUビルドシステム
  182: 
  183: * Automake::                    Escaping Makefile hell
  184: * Libtool::                     Building libraries portably
  185: * Pointers::                    More info on the GNU build system
  186: 
  187: @c Making @command{configure} Scripts
  188: @c 
  189: @command{configure}スクリプトの作成
  190: 
  191: * Writing configure.ac::        What to put in an Autoconf input file
  192: * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
  193: * ifnames Invocation::          Listing the conditionals in source code
  194: * autoconf Invocation::         How to create configuration scripts
  195: * autoreconf Invocation::       Remaking multiple @command{configure} scripts
  196: 
  197: @c Writing @file{configure.ac}
  198: @c 
  199: @file{configure.ac}を書く
  200: 
  201: * Shell Script Compiler::       Autoconf as solution of a problem
  202: * Autoconf Language::           Programming in Autoconf
  203: * configure.ac Layout::         Standard organization of @file{configure.ac}
  204: 
  205: @c Initialization and Output Files
  206: @c 
  207: 初期化と出力ファイル
  208: 
  209: * Initializing configure::      Option processing etc.
  210: * Notices::                     Copyright, version numbers in @command{configure}
  211: * Input::                       Where Autoconf should find files
  212: * Output::                      Outputting results from the configuration
  213: * Configuration Actions::       Preparing the output based on results
  214: * Configuration Files::         Creating output files
  215: * Makefile Substitutions::      Using output variables in @file{Makefile}s
  216: * Configuration Headers::       Creating a configuration header file
  217: * Configuration Commands::      Running arbitrary instantiation commands
  218: * Configuration Links::         Links depending on the configuration
  219: * Subdirectories::              Configuring independent packages together
  220: * Default Prefix::              Changing the default installation prefix
  221: 
  222: @c Substitutions in Makefiles
  223: @c 
  224: Makefileへの代入
  225: 
  226: * Preset Output Variables::     Output variables that are always set
  227: * Installation Directory Variables::  Other preset output variables
  228: * Build Directories::           Supporting multiple concurrent compiles
  229: * Automatic Remaking::          Makefile rules for configuring
  230: 
  231: @c Configuration Header Files
  232: @c 
  233: ヘッダファイルのコンフィグレーション
  234: 
  235: * Header Templates::            Input for the configuration headers
  236: * autoheader Invocation::       How to create configuration templates
  237: * Autoheader Macros::           How to specify CPP templates
  238: 
  239: @c Existing Tests
  240: @c 
  241: 存在のテスト
  242: 
  243: * Common Behavior::             Macros' standard schemes
  244: * Alternative Programs::        Selecting between alternative programs
  245: * Files::                       Checking for the existence of files
  246: * Libraries::                   Library archives that might be missing
  247: * Library Functions::           C library functions that might be missing
  248: * Header Files::                Header files that might be missing
  249: * Declarations::                Declarations that may be missing
  250: * Structures::                  Structures or members that might be missing
  251: * Types::                       Types that might be missing
  252: * Compilers and Preprocessors::  Checks for compiling programs
  253: * System Services::             Operating system services
  254: * UNIX Variants::               Special kludges for specific UNIX variants
  255: 
  256: @c Common Behavior
  257: @c 
  258: 共通の動作
  259: 
  260: * Standard Symbols::            Symbols defined by the macros
  261: * Default Includes::            Includes used by the generic macros
  262: 
  263: @c Alternative Programs
  264: @c 
  265: 代替プログラム
  266: 
  267: * Particular Programs::         Special handling to find certain programs
  268: * Generic Programs::            How to find other programs
  269: 
  270: @c Library Functions
  271: @c 
  272: ライブラリ関数
  273: 
  274: * Function Portability::        Pitfalls with usual functions
  275: * Particular Functions::        Special handling to find certain functions
  276: * Generic Functions::           How to find other functions
  277: 
  278: @c Header Files
  279: @c 
  280: ヘッダファイル
  281: 
  282: * Header Portability::          Collected knowledge on common headers
  283: * Particular Headers::          Special handling to find certain headers
  284: * Generic Headers::             How to find other headers
  285: 
  286: @c Declarations
  287: @c 
  288: 宣言
  289: 
  290: * Particular Declarations::     Macros to check for certain declarations
  291: * Generic Declarations::        How to find other declarations
  292: 
  293: @c Structures
  294: @c 
  295: 構造体
  296: 
  297: * Particular Structures::       Macros to check for certain structure members
  298: * Generic Structures::          How to find other structure members
  299: 
  300: @c Types
  301: @c 
  302:   303: 
  304: * Particular Types::            Special handling to find certain types
  305: * Generic Types::               How to find other types
  306: 
  307: @c Compilers and Preprocessors
  308: @c 
  309: コンパイラとプリプロセッサ
  310: 
  311: * Specific Compiler Characteristics::  Some portability issues
  312: * Generic Compiler Characteristics::  Language independent tests
  313: * C Compiler::                  Checking its characteristics
  314: * C++ Compiler::                Likewise
  315: * Fortran 77 Compiler::         Likewise
  316: 
  317: @c Writing Tests
  318: @c 
  319: テストを書く
  320: 
  321: * Examining Declarations::      Detecting header files and declarations
  322: * Examining Syntax::            Detecting language syntax features
  323: * Examining Libraries::         Detecting functions and global variables
  324: * Run Time::                    Testing for run-time features
  325: * Systemology::                 A zoology of operating systems
  326: * Multiple Cases::              Tests for several possible values
  327: * Language Choice::             Selecting which language to use for testing
  328: 
  329: @c Checking Run-Time Behavior
  330: @c 
  331: 実行時の動作の調査
  332: 
  333: * Test Programs::               Running test programs
  334: * Guidelines::                  General rules for writing test programs
  335: * Test Functions::              Avoiding pitfalls in test programs
  336: 
  337: @c Results of Tests
  338: @c 
  339: テストの結果
  340: 
  341: * Defining Symbols::            Defining C preprocessor symbols
  342: * Setting Output Variables::    Replacing variables in output files
  343: * Caching Results::             Speeding up subsequent @command{configure} runs
  344: * Printing Messages::           Notifying @command{configure} users
  345: 
  346: @c Caching Results
  347: @c 
  348: 結果のキャッシュ
  349: 
  350: * Cache Variable Names::        Shell variables used in caches
  351: * Cache Files::                 Files @command{configure} uses for caching
  352: * Cache Checkpointing::         Loading and saving the cache file
  353: 
  354: @c Programming in M4
  355: @c 
  356: M4でのプログラム
  357: 
  358: * M4 Quotation::                Protecting macros from unwanted expansion
  359: * Invoking autom4te::           The Autoconf executables backbone
  360: * Programming in M4sugar::      Convenient pure M4 macros
  361: * Programming in M4sh::         Common shell constructs
  362: 
  363: @c M4 Quotation
  364: @c 
  365: M4の引用符
  366: 
  367: * Active Characters::           Characters that change the behavior of m4
  368: * One Macro Call::              Quotation and one macro call
  369: * Quotation and Nested Macros::  Macros calling macros
  370: * Changequote is Evil::         Worse than INTERCAL: M4 + changequote
  371: * Quadrigraphs::                Another way to escape special characters
  372: * Quotation Rule Of Thumb::     One parenthesis, one quote
  373: 
  374: @c Programming in M4sugar
  375: @c 
  376: M4sugarでのプログラム
  377: 
  378: * Redefined M4 Macros::         M4 builtins changed in M4sugar
  379: * Evaluation Macros::           More quotation and evaluation control
  380: * Forbidden Patterns::          Catching unexpanded macros
  381: 
  382: @c Writing Autoconf Macros
  383: @c 
  384: Autoconfマクロを書く
  385: 
  386: * Macro Definitions::           Basic format of an Autoconf macro
  387: * Macro Names::                 What to call your new macros
  388: * Reporting Messages::          Notifying @command{autoconf} users
  389: * Dependencies Between Macros::  What to do when macros depend on other macros
  390: * Obsoleting Macros::           Warning about old ways of doing things
  391: * Coding Style::                Writing Autoconf macros @`a la Autoconf
  392: 
  393: @c Dependencies Between Macros
  394: @c 
  395: マクロ間の依存性
  396: 
  397: * Prerequisite Macros::         Ensuring required information
  398: * Suggested Ordering::          Warning about possible ordering problems
  399: 
  400: @c Portable Shell Programming
  401: @c 
  402: 移植性のあるシェルプログラム
  403: 
  404: * Shellology::                  A zoology of shells
  405: * Here-Documents::              Quirks and tricks
  406: * File Descriptors::            FDs and redirections
  407: * File System Conventions::     File- and pathnames
  408: * Shell Substitutions::         Variable and command expansions
  409: * Assignments::                 Varying side effects of assignments
  410: * Special Shell Variables::     Variables you should not change
  411: * Limitations of Builtins::     Portable use of not so portable /bin/sh
  412: * Limitations of Usual Tools::  Portable use of portable tools
  413: * Limitations of Make::         Portable Makefiles
  414: 
  415: @c Manual Configuration
  416: @c 
  417: 手動のコンフィグレーション
  418: 
  419: * Specifying Names::            Specifying the system type
  420: * Canonicalizing::              Getting the canonical system type
  421: * Using System Type::           What to do with the system type
  422: 
  423: @c Site Configuration
  424: @c 
  425: サイトコンフィグレーション
  426: 
  427: * External Software::           Working with other optional software
  428: * Package Options::             Selecting optional features
  429: * Pretty Help Strings::         Formatting help string
  430: * Site Details::                Configuring site details
  431: * Transforming Names::          Changing program names when installing
  432: * Site Defaults::               Giving @command{configure} local defaults
  433: 
  434: @c Transforming Program Names When Installing
  435: @c 
  436: インストール時のプログラム名の変換
  437: 
  438: * Transformation Options::      @command{configure} options to transform names
  439: * Transformation Examples::     Sample uses of transforming names
  440: * Transformation Rules::        @file{Makefile} uses of transforming names
  441: 
  442: @c Running @command{configure} Scripts
  443: @c 
  444: @command{configure}スクリプトの実行
  445: 
  446: * Basic Installation::          Instructions for typical cases
  447: * Compilers and Options::       Selecting compilers and optimization
  448: * Multiple Architectures::      Compiling for multiple architectures at once
  449: * Installation Names::          Installing in different directories
  450: * Optional Features::           Selecting optional features
  451: * System Type::                 Specifying the system type
  452: * Sharing Defaults::            Setting site-wide defaults for @command{configure}
  453: * Defining Variables::          Specifying the compiler etc.
  454: * configure Invocation::        Changing how @command{configure} runs
  455: 
  456: @c Obsolete Constructs
  457: @c 
  458: 時代遅れの構成物
  459: 
  460: * Obsolete config.status Use::  Different calling convention
  461: * acconfig.h::                  Additional entries in @file{config.h.in}
  462: * autoupdate Invocation::       Automatic update of @file{configure.ac}
  463: * Obsolete Macros::             Backward compatibility macros
  464: * Autoconf 1::                  Tips for upgrading your files
  465: * Autoconf 2.13::               Some fresher tips
  466: 
  467: @c Upgrading From Version 1
  468: @c 
  469: バージョン1からの更新
  470: 
  471: * Changed File Names::          Files you might rename
  472: * Changed Makefiles::           New things to put in @file{Makefile.in}
  473: * Changed Macros::              Macro calls you might replace
  474: * Changed Results::             Changes in how to check test results
  475: * Changed Macro Writing::       Better ways to write your own macros
  476: 
  477: @c Upgrading From Version 2.13
  478: @c 
  479: バージョン2.13からの更新
  480: 
  481: * Changed Quotation::           Broken code which used to work
  482: * New Macros::                  Interaction with foreign macros
  483: * Hosts and Cross-Compilation::  Bugward compatibility kludges
  484: * AC_LIBOBJ vs LIBOBJS::        LIBOBJS is a forbidden token
  485: 
  486: @c Generating Test Suites with Autotest
  487: @c 
  488: Autotestを用いてテストスイートを生成する
  489: 
  490: * Using an Autotest Test Suite::  Autotest and the user
  491: * Writing testsuite.at::        Autotest macros
  492: * testsuite Invocation::        Running @command{testsuite} scripts
  493: * Making testsuite Scripts::    Using autom4te to create @command{testsuite}
  494: 
  495: @c Using an Autotest Test Suite
  496: @c 
  497: Autotestテストスイートの使用
  498: 
  499: * testsuite Scripts::           The concepts of Autotest
  500: * Autotest Logs::               Their contents
  501: 
  502: @c Frequent Autoconf Questions, with answers
  503: @c 
  504: よくある質問とその回答
  505: 
  506: * Distributing::                Distributing @command{configure} scripts
  507: * Why GNU m4::                  Why not use the standard M4?
  508: * Bootstrapping::               Autoconf and GNU M4 require each other?
  509: * Why Not Imake::               Why GNU uses @command{configure} instead of Imake
  510: * Defining Directories::        Passing @code{datadir} to program
  511: 
  512: @c History of Autoconf
  513: @c 
  514: Autoconfの歴史
  515: 
  516: * Genesis::                     Prehistory and naming of @command{configure}
  517: * Exodus::                      The plagues of M4 and Perl
  518: * Leviticus::                   The priestly code of portability arrives
  519: * Numbers::                     Growth and contributors
  520: * Deuteronomy::                 Approaching the promises of easy configuration
  521: 
  522: @c Copying This Manual
  523: @c 
  524: このマニュアルのコピー条件
  525: 
  526: * GNU Free Documentation License::  License for copying this manual
  527: 
  528: @c Indices
  529: @c 
  530: 索引
  531: 
  532: * Environment Variable Index::  Index of environment variables used
  533: * Output Variable Index::       Index of variables set in output files
  534: * Preprocessor Symbol Index::   Index of C preprocessor symbols defined
  535: * Autoconf Macro Index::        Index of Autoconf macros
  536: * M4 Macro Index::              Index of M4, M4sugar, and M4sh macros
  537: * Autotest Macro Index::        Index of Autotest macros
  538: * Program & Function Index::    Index of those with portability problems
  539: * Concept Index::               General index
  540: 
  541: @end detailmenu
  542: @end menu
  543: 
  544: @c ============================================================= Introduction.
  545: 
  546: @node Introduction
  547: @c @chapter Introduction
  548: @chapter はじめに
  549: 
  550: @flushright
  551: @c A physicist, an engineer, and a computer scientist were discussing the
  552: @c nature of God.  ``Surely a Physicist,'' said the physicist, ``because
  553: @c early in the Creation, God made Light; and you know, Maxwell's
  554: @c equations, the dual nature of electromagnetic waves, the relativistic
  555: @c consequences@dots{}'' ``An Engineer!,'' said the engineer, ``because
  556: @c before making Light, God split the Chaos into Land and Water; it takes a
  557: @c hell of an engineer to handle that big amount of mud, and orderly
  558: @c separation of solids from liquids@dots{}'' The computer scientist
  559: @c shouted: ``And the Chaos, where do you think it was coming from, hmm?''
  560: @c 
  561: 物理学者,エンジニア,そしてコンピュータ科学者が神の性質を論じていました.
  562: ``確かに物理学者だ''と物理学者が言いました.``なぜなら,創造の早いうちに,
  563: 神が光を作ったからだ.ご存じのように,マックスウェル方程式,電磁波の二重
  564: の性質,相対論者の結果@dots{}.'' ``エンジニアだ!''とエンジニアは言いま
  565: した.``なぜなら,光を作る前に神はカオスを土地と水に分けたからだ.それに
  566: は大量のエンジニアが必要で,大量の泥を処理し,液体から固体を正しく分離し
  567: @dots{}.''コンピュータ科学者は叫びました.``そしてカオス,それはいった
  568: いどこからきたと思いますか,う〜ん?''
  569: 
  570: @c ---Anonymous
  571: @c 
  572: ---詠み人知らず
  573: @end flushright
  574: @c (via Franc,ois Pinard)
  575: 
  576: @c Autoconf is a tool for producing shell scripts that automatically
  577: @c configure software source code packages to adapt to many kinds of
  578: @c @sc{unix}-like systems.  The configuration scripts produced by Autoconf
  579: @c are independent of Autoconf when they are run, so their users do not
  580: @c need to have Autoconf.
  581: @c 
  582: Autoconfは,何種類もの@sc{unix}ライクのシステムに適合するために,ソフト
  583: ウェアソースコードパッケージを自動的にコンフィグレーションするシェルスク
  584: リプトを生成するツールです.Autoconfで生成されたコンフィギュレーションス
  585: クリプトは,実行時にはAutoconfに依存しないので,ユーザがAutoconfを持って
  586: いる必要がありません.
  587: 
  588: @c The configuration scripts produced by Autoconf require no manual user
  589: @c intervention when run; they do not normally even need an argument
  590: @c specifying the system type.  Instead, they individually test for the
  591: @c presence of each feature that the software package they are for might need.
  592: @c (Before each check, they print a one-line message stating what they are
  593: @c checking for, so the user doesn't get too bored while waiting for the
  594: @c script to finish.)  As a result, they deal well with systems that are
  595: @c hybrids or customized from the more common @sc{unix} variants.  There is
  596: @c no need to maintain files that list the features supported by each
  597: @c release of each variant of @sc{unix}.
  598: @c 
  599: Autoconfで生成されたコンフィギュレーションスクリプトは,実行時にユーザの
  600: 手動の介入を必要としません.通常,システムタイプを指定する引数さえも必要
  601: としません.その代わりに,ソフトウェアパッケージが必要とするそれぞれの機
  602: 能が存在するかどうか,個別に調査します.(それぞれの調査の前に,調査して
  603: いることに関する一行のメッセージを出力し,そのため,ユーザはスクリプトが
  604: 終わるまで待っている間,そんなに退屈しません.) 結果として,それら(のス
  605: クリプト)は,一般的な@sc{unix}の変形から混成されたりカスタマイズされたり
  606: しているシステムを上手に扱います.それぞれの@sc{unix}の変形の,それぞれ
  607: のリリースによってサポートされている特徴をリストアップするファイルを保守
  608: する必要はありません.
  609: 
  610: @c For each software package that Autoconf is used with, it creates a
  611: @c configuration script from a template file that lists the system features
  612: @c that the package needs or can use.  After the shell code to recognize
  613: @c and respond to a system feature has been written, Autoconf allows it to
  614: @c be shared by many software packages that can use (or need) that feature.
  615: @c If it later turns out that the shell code needs adjustment for some
  616: @c reason, it needs to be changed in only one place; all of the
  617: @c configuration scripts can be regenerated automatically to take advantage
  618: @c of the updated code.
  619: @c 
  620: Autoconfが使用されているそれぞれのソフトウェアパッケージに対し,パッケー
  621: ジが必要とする,または使用可能なシステムの特徴をリストアップしているテン
  622: プレートファイルから,コンフィギュレーションスクリプトを作成します.シス
  623: テムの特徴を認識して応答するシェルコードが書かれた後,使用可能な(または
  624: 必要な)機能を多くのパッケージで共有することが,Autoconfで可能になります.
  625: 理由があって,シェルコードの調整の必要性が後になって発覚した場合,ただ1ヵ
  626: 所だけ変更する必要があります.すべてのコンフィギュレーションスクリプトは,
  627: 更新されたコードを利用するため自動的に再生することが可能です.
  628: 
  629: @c The Metaconfig package is similar in purpose to Autoconf, but the
  630: @c scripts it produces require manual user intervention, which is quite
  631: @c inconvenient when configuring large source trees.  Unlike Metaconfig
  632: @c scripts, Autoconf scripts can support cross-compiling, if some care is
  633: @c taken in writing them.
  634: @c 
  635: MetaconfigパッケージはAutoconfの目的に似ていますが,それが生成するスクリ
  636: プトは手動でユーザが介入する必要があり,大きなソースツリーをコンフィグレー
  637: ションするときは全く不便です.Metaconfigスクリプトと異なり,注意して書い
  638: ている場合,Autoconfスクリプトはクロスコンパイルもサポート可能です.
  639: 
  640: @c Autoconf does not solve all problems related to making portable software
  641: @c packages---for a more complete solution, it should be used in concert
  642: @c with other GNU build tools like Automake and Libtool.  These other tools
  643: @c take on jobs like the creation of a portable, recursive @file{Makefile}
  644: @c with all of the standard targets, linking of shared libraries, and so
  645: @c on.  @xref{The GNU Build System}, for more information.
  646: @c 
  647: Autoconfは,移植性のあるソフトウェアパッケージに関連するすべての問題を解
  648: 決しているわけではありません --- より完全に解決するために,Automakeと
  649: Libtoolのような,その他のGNUビルドツールと連係して使用すべきです.これら
  650: の他のツールは,すべての標準ターゲットを含んでいる,移植性のある再帰的な
  651: @file{Makefile}の作成,共有ライブラリのリンクなどの作業を請け負います.
  652: 詳細は@xref{The GNU Build System}.
  653: 
  654: @c Autoconf imposes some restrictions on the names of macros used with
  655: @c @code{#if} in C programs (@pxref{Preprocessor Symbol Index}).
  656: @c 
  657: Autoconfは,Cプログラムの@code{#if}で使用するマクロ名に,多少制限を与え
  658: ます(@pxref{Preprocessor Symbol Index}).
  659: 
  660: @c Autoconf requires @sc{gnu} M4 in order to generate the scripts.  It uses
  661: @c features that some @sc{unix} versions of M4, including @sc{gnu} M4 1.3,
  662: @c do not have.  You must use version 1.4 or later of @sc{gnu} M4.
  663: @c 
  664: Autoconfは,スクリプトを生成するために@sc{gnu} M4が必要です.@sc{unix}バー
  665: ジョンのM4が持っていない機能を使用していて,それには@sc{gnu} M4 1.3も含
  666: まれます.バージョン1.4以降の@sc{gnu} M4を使用する必要があります.
  667: 
  668: @c @xref{Autoconf 1}, for information about upgrading from version 1.
  669: @c @xref{History}, for the story of Autoconf's development.  @xref{FAQ},
  670: @c for answers to some common questions about Autoconf.
  671: @c 
  672: バージョン1からの更新についての情報は,@xref{Autoconf 1}.  Autoconfの開
  673: 発の物語については,@xref{History}.  Autoconfについての一般的な質問へ回
  674: 答は,@xref{FAQ}.
  675: 
  676: @c See the @href{http://www.gnu.org/software/autoconf/autoconf.html,
  677: @c Autoconf web page} for up-to-date information, details on the mailing
  678: @c lists, pointers to a list of known bugs, etc.
  679: @c 
  680: 更新情報,メーリングリストの詳細,既知のバグリストへのポインタなどは,
  681: @href{http://www.gnu.org/software/autoconf/autoconf.html, Autoconf web
  682: page}を参照してください.
  683: 
  684: @c Mail suggestions to @email{autoconf@@gnu.org, the Autoconf mailing
  685: @c list}.
  686: @c 
  687: Autoconfに関する提案は @email{autoconf@@gnu.org, the Autoconf mailing
  688: list}にメールして下さい.
  689: 
  690: @c Bug reports should be preferably submitted to the
  691: @c @href{http://bugs.gnu.org/cgi-bin/gnatsweb.pl?database=autoconf,
  692: @c Autoconf Gnats database}, or sent to @email{bug-autoconf@@gnu.org, the
  693: @c Autoconf Bugs mailing list}.  If possible, first check that your bug is
  694: @c not already solved in current development versions, and that it has not
  695: @c been reported yet.  Be sure to include all the needed information and a
  696: @c short @file{configure.ac} that demonstrates the problem.
  697: @c 
  698: バグの報告は,できれば
  699: @href{http://bugs.gnu.org/cgi-bin/gnatsweb.pl?database=autoconf,
  700: Autoconf Gnats database}へ提出するか,@email{bug-autoconf@@gnu.org, the
  701: Autoconf Bugs mailing list}へ送付してください.できれば最初に,現在の開
  702: 発バージョンでバグが既に解決されていないことと,まだ報告されていないこと
  703: を調査してください.すべての必要な情報と問題を立証する短い
  704: @file{configure.ac}を確実に同封してください.
  705: 
  706: @c Autoconf's development tree is accessible via @sc{cvs}; see the Autoconf
  707: @c web page for details.  There is also a
  708: @c @href{http://subversions.gnu.org/cgi-bin/cvsweb/autoconf/, @sc{cvs}web
  709: @c interface to the Autoconf development tree}.  Patches relative to the
  710: @c current @sc{cvs} version can be sent for review to the
  711: @c @email{autoconf-patches@@gnu.org, Autoconf Patches mailing list}.
  712: @c 
  713: Autoconfの開発ツリーは,@sc{cvs}でアクセス可能です.詳細は,Autoconfのウェ
  714: ブページを参照してください.
  715: @href{http://subversions.gnu.org/cgi-bin/cvsweb/autoconf/, @sc{cvs}web
  716: interface to the Autoconf development tree}もあります.現在の@sc{cvs}バー
  717: ジョンに関連するパッチは,レビューするために
  718: @email{autoconf-patches@@gnu.org, Autoconf Patches mailing list}に送付す
  719: ることが可能です.
  720: 
  721: @c Because of its mission, Autoconf includes only a set of often-used
  722: @c macros that have already demonstrated their usefulness.  Nevertheless,
  723: @c if you wish to share your macros, or find existing ones, see the
  724: @c @href{http://www.gnu.org/software/ac-archive/, Autoconf Macro
  725: @c Archive}, which is kindly run by @email{simons@@computer.org,
  726: @c Peter Simons}.
  727: @c 
  728: その作業のため,Autoconfは既に有用性が立証されている,よく使用されるマク
  729: ロだけを含めています.それでも,マクロを共有したい,または既存のものを探
  730: したい場合,@email{simons@@computer.org, Peter Simons}の好意で作成されて
  731: いる@href{http://www.gnu.org/software/ac-archive/, Autoconf Macro
  732: Archive}を参照してください.
  733: 
  734: 
  735: @c ================================================= The GNU Build System
  736: 
  737: @node The GNU Build System
  738: @c @chapter The GNU Build System
  739: @chapter GNUビルドシステム
  740: 
  741: @c Autoconf solves an important problem---reliable discovery of
  742: @c system-specific build and run-time information---but this is only one
  743: @c piece of the puzzle for the development of portable software.  To this
  744: @c end, the GNU project has developed a suite of integrated utilities to
  745: @c finish the job Autoconf started: the GNU build system, whose most
  746: @c important components are Autoconf, Automake, and Libtool.  In this
  747: @c chapter, we introduce you to those tools, point you to sources of more
  748: @c information, and try to convince you to use the entire GNU build system
  749: @c for your software.
  750: @c 
  751: Autoconfは重要な問題を解決します --- それはシステム特有のビルドと実行時
  752: の情報の信頼できる発見です --- しかし,これは移植性のあるソフトウエアを
  753: 開発するためのパズルの一ピースに過ぎません.このために,GNUプロジェクト
  754: は,Autoconfが開始した仕事を完了するためのユーティリティの,統合された組
  755: み合わせ(スイート)を開発してきました.GNUビルドシステムの最も重要な構成
  756: 要素は,Autoconf,Automake,そしてLibtoolです.この章で,我々はこれらの
  757: ツールを紹介し,より多くの情報源を提示し,そして,ソフトウェアに対して
  758: GNUビルドシステム全体を便利に使用するように説得してみたいと思います.
  759: 
  760: @menu
  761: * Automake::                    Escaping Makefile hell
  762: * Libtool::                     Building libraries portably
  763: * Pointers::                    More info on the GNU build system
  764: @end menu
  765: 
  766: @node Automake
  767: @section Automake
  768: 
  769: @c The ubiquity of @command{make} means that a @file{Makefile} is almost the
  770: @c only viable way to distribute automatic build rules for software, but
  771: @c one quickly runs into @command{make}'s numerous limitations.  Its lack of
  772: @c support for automatic dependency tracking, recursive builds in
  773: @c subdirectories, reliable timestamps (e.g., for network filesystems), and
  774: @c so on, mean that developers must painfully (and often incorrectly)
  775: @c reinvent the wheel for each project.  Portability is non-trivial, thanks
  776: @c to the quirks of @command{make} on many systems.  On top of all this is the
  777: @c manual labor required to implement the many standard targets that users
  778: @c have come to expect (@code{make install}, @code{make distclean},
  779: @c @code{make uninstall}, etc.).  Since you are, of course, using Autoconf,
  780: @c you also have to insert repetitive code in your @code{Makefile.in} to
  781: @c recognize @code{@@CC@@}, @code{@@CFLAGS@@}, and other substitutions
  782: @c provided by @command{configure}.  Into this mess steps @dfn{Automake}.
  783: @c 
  784: @command{make}の偏りとは,@file{Makefile}はソフトウェアの自動的なビルド
  785: 規則を配布するためのほとんど唯一の現実的な方法なのですが,すぐに
  786: @command{make} の多くの限界にぶつかることを示しています.それには,自動
  787: 的な依存性の追跡に対するサポート,サブディレクトリでの再帰的なビルド,
  788: (例えば,ネットワークファイルシステムに対する)信頼できるタイムスタンプな
  789: どが足りないので,開発者はそれぞれのプロジェクトに対し,辛い(そして間違
  790: うことが多い)車輪の再開発が必要になっています.多くのシステムの
  791: @command{make}の癖のために,移植性は些細な問題ではなくなっています.なに
  792: よりも,ユーザが期待する多くの標準的なターゲット(@code{make install},
  793: @code{make distclean},@code{make uninstall}など)を手作業で実装する必要
  794: があることがあげられます.もちろん,Autoconfを使用しているので,
  795: @code{@@CC@@},@code{@@CFLAGS@@},そして@command{configure}で提供される
  796: その他の置換式を認識するように,@code{Makefile.in}に対応するコードを挿入
  797: しているでしょう.この乱雑な状況は@dfn{Automake}で処理しましょう.
  798: @cindex Automake
  799: 
  800: @c Automake allows you to specify your build needs in a @code{Makefile.am}
  801: @c file with a vastly simpler and more powerful syntax than that of a plain
  802: @c @code{Makefile}, and then generates a portable @code{Makefile.in} for
  803: @c use with Autoconf.  For example, the @code{Makefile.am} to build and
  804: @c install a simple ``Hello world'' program might look like:
  805: @c 
  806: Automakeは,プレーンの@code{Makefile}の方法と比較して,非常に簡単でより
  807: 強力な構文で,ビルドが必要とするものを@code{Makefile.am}ファイルで指定す
  808: ることを可能とし,Autoconfで使用するための移植性の高い@code{Makefile.in} 
  809: を生成します.例えば,単純な``Hello world''プログラムをビルドしインストー
  810: ルするための@code{Makefile.am}は以下のようになります.
  811: 
  812: @example
  813: bin_PROGRAMS = hello
  814: hello_SOURCES = hello.c
  815: @end example
  816: 
  817: @noindent
  818: @c The resulting @code{Makefile.in} (~400 lines) automatically supports all
  819: @c the standard targets, the substitutions provided by Autoconf, automatic
  820: @c dependency tracking, @code{VPATH} building, and so on.  @command{make} will
  821: @c build the @code{hello} program, and @code{make install} will install it
  822: @c in @file{/usr/local/bin} (or whatever prefix was given to
  823: @c @command{configure}, if not @file{/usr/local}).
  824: @c 
  825: 結果として得られる@code{Makefile.in}(約400行)は,自動的に,すべての標準
  826: 的なターゲット,Autoconfが提供する置換式,自動的な依存性追跡,
  827: @code{VPATH}のビルドなどをサポートします.@command{make}で@code{hello}プ
  828: ログラムをビルドし,@code{make install}でそれを@file{/usr/local/bin}(ま
  829: たは@file{/usr/local}でないときは@command{configure}で与えた接頭辞)にイ
  830: ンストールします.
  831: 
  832: @c Automake may require that additional tools be present on the
  833: @c @emph{developer's} machine.  For example, the @code{Makefile.in} that
  834: @c the developer works with may not be portable (e.g., it might use special
  835: @c features of your compiler to automatically generate dependency
  836: @c information).  Running @code{make dist}, however, produces a
  837: @c @file{hello-1.0.tar.gz} package (or whatever the program/version is)
  838: @c with a @code{Makefile.in} that will work on any system.
  839: @c 
  840: Automakeは,@emph{開発者の}マシンに追加のツールがあることを要求するかも
  841: しれません.例えば,開発者が作業している@code{Makefile.in}は移植性がない
  842: かもしれません(例えば,自動的に依存情報を生成するために,コンパイラの特
  843: 殊な機能を使用しているかもしれません).しかし,@samp{make dist}を実行す
  844: ることで,あらゆるシステムで動作する@code{Makefile.in}を用いている,
  845: @file{hello-1.0.tar.gz}(やあらゆるプログラムをバージョンを持つ)パッケー
  846: ジを生成します.
  847: 
  848: @c The benefits of Automake increase for larger packages (especially ones
  849: @c with subdirectories), but even for small programs the added convenience
  850: @c and portability can be substantial.  And that's not all@enddots{}
  851: @c 
  852: Automakeの利点は,パッケージが大きければ大きい(特にサブディレクトリがあ
  853: るもの)ほど有利になりますが,小さなプログラムに対しても重要な利便性と移
  854: 植性を追加します.そして,それだけがすべてではありません@enddots{}
  855: 
  856: @node Libtool
  857: @section Libtool
  858: 
  859: @c Very often, one wants to build not only programs, but libraries, so that
  860: @c other programs can benefit from the fruits of your labor.  Ideally, one
  861: @c would like to produce @emph{shared} (dynamically linked) libraries,
  862: @c which can be used by multiple programs without duplication on disk or in
  863: @c memory and can be updated independently of the linked programs.
  864: @c Producing shared libraries portably, however, is the stuff of
  865: @c nightmares---each system has its own incompatible tools, compiler flags,
  866: @c and magic incantations.  Fortunately, GNU provides a solution:
  867: @c @dfn{Libtool}.
  868: @c 
  869: 他のプログラムで,これまでの作業の成果から利益を得ることを可能にするため,
  870: プログラムだけでなくライブラリをビルドしたいことも頻繁にあるでしょう.理
  871: 想的には,@emph{共有}(動的にリンクされる)ライブラリを生成したいと考え,
  872: それは,複数のプログラムからディスクやメモリに同じものを複製せずに使用可
  873: 能で,リンクされているプログラムに依存せずに更新可能だからです.しかし,
  874: 移植性の高い共有ライブラリは悪夢の元です --- それぞれのシステムは,独自
  875: の互換性のないツール,コンパイラフラグ,そして魔法の呪文があります.幸い
  876: にもGNUは解決方法を提供しています.それは,@dfn{Libtool}です.
  877: @cindex Libtool
  878: 
  879: @c Libtool handles all the requirements of building shared libraries for
  880: @c you, and at this time seems to be the @emph{only} way to do so with any
  881: @c portability.  It also handles many other headaches, such as: the
  882: @c interaction of @code{Makefile} rules with the variable suffixes of
  883: @c shared libraries, linking reliably with shared libraries before they are
  884: @c installed by the superuser, and supplying a consistent versioning system
  885: @c (so that different versions of a library can be installed or upgraded
  886: @c without breaking binary compatibility).  Although Libtool, like
  887: @c Autoconf, can be used on its own, it is most simply utilized in
  888: @c conjunction with Automake---there, Libtool is used automatically
  889: @c whenever shared libraries are needed, and you need not know its syntax.
  890: @c 
  891: Libtoolは,共有ライブラリのビルドに関するすべての要求を処理し,現時点で
  892: は,移植性を扱うための@emph{唯一の}方法だと思われます.また,以下のよう
  893: な頭痛の種も扱います.それは,共有ライブラリの様々な接尾子を扱う
  894: @code{Makefile}規則の相互作用,以前にスーパーユーザによってインストール
  895: された共有ライブラリとの信頼できるリンク,そして,整合性の高いバージョン
  896: 管理システムの提供です(それは,ライブラリの異なるバージョンを,バイナリ
  897: 互換性を壊さないようにインストールし更新することを可能にするためのもので
  898: す).しかしLibtoolは,Autoconf同様に,単独で使用することは不可能で,それ
  899: は単純にAutomakeと組み合わせて利用されます --- そこで,Libtoolは共有ライ
  900: ブラリが必要なときに自動的に使用され,そして使用者はその構文を知っている
  901: 必要はありません.
  902: 
  903: @node Pointers
  904: @c @section Pointers
  905: @section 参考文献
  906: 
  907: @c Developers who are used to the simplicity of @command{make} for small
  908: @c projects on a single system might be daunted at the prospect of learning
  909: @c to use Automake and Autoconf.  As your software is distributed to more
  910: @c and more users, however, you will otherwise quickly find yourself
  911: @c putting lots of effort into reinventing the services that the GNU build
  912: @c tools provide, and making the same mistakes that they once made and
  913: @c overcame.  (Besides, since you're already learning Autoconf, Automake
  914: @c will be a piece of cake.)
  915: @c 
  916: 単一のシステムでの小さなプロジェクトに対して,簡単な@command{make}を使用
  917: している開発者は,AutomakeとAutoconfを使用するために学習する見通しを立て
  918: ると圧倒されるかもしれません.しかし,ソフトウェアはより多くのユーザに配
  919: 布されるので,GNUビルドツールが提供するサービスを再発明するために多くの
  920: 努力を費やしていることと,一度犯して解決した過ちを繰り返していることがす
  921: ぐに分かるでしょう.(また,既にAutoconfを学んでいるので,Automakeは朝飯
  922: 前でしょう.)
  923: 
  924: @c There are a number of places that you can go to for more information on
  925: @c the GNU build tools.
  926: @c 
  927: GNUビルドツールの詳細な情報を得るために,訪問する場所はたくさんあります.
  928: 
  929: @itemize @minus
  930: 
  931: @item Web
  932: 
  933: @c The home pages for
  934: @c @href{http://www.gnu.org/software/autoconf/,Autoconf},
  935: @c @href{http://www.gnu.org/software/automake/,Automake}, and
  936: @c @href{http://www.gnu.org/software/libtool/,Libtool}.
  937: @c 
  938: @href{http://www.gnu.org/software/autoconf/,Autoconf},
  939: @href{http://www.gnu.org/software/automake/,Automake},そして
  940: @href{http://www.gnu.org/software/libtool/,Libtool}のホームページ.
  941: 
  942: @c @item Automake Manual
  943: @item Automakeのマニュアル
  944: 
  945: @c @xref{Top,,Automake,automake,GNU Automake}, for more
  946: @c information on Automake.
  947: @c 
  948: Automakeの詳細は,@xref{Top,,Automake,automake,GNU Automake}.
  949: 
  950: @c @item Books
  951: @item 書籍
  952: 
  953: @c The book @cite{GNU Autoconf, Automake and Libtool}@footnote{@cite{GNU
  954: @c Autoconf, Automake and Libtool}, by G. V. Vaughan, B. Elliston,
  955: @c T. Tromey, and I. L. Taylor. New Riders, 2000, ISBN 1578701902.}
  956: @c describes the complete GNU build environment.  You can also find the
  957: @c entire book on-line at @href{http://sources.redhat.com/autobook/,``The
  958: @c Goat Book'' home page}.
  959: @c 
  960: 書籍@cite{GNU Autoconf, Automake and Libtool}@footnote{@cite{GNU
  961: Autoconf, Automake and Libtool}, by G. V. Vaughan, B. Elliston,
  962: T. Tromey, and I. L. Taylor. New Riders, 2000, ISBN 1578701902.}では,完
  963: 全なGNUビルド環境が記述されています.
  964: @href{http://sources.redhat.com/autobook/,``The Goat Book'' home page}で
  965: は,オンラインで本全体を見ることも可能です.
  966: 
  967: @c @item Tutorials and Examples
  968: @item チュートリアルと例
  969: 
  970: @c The @href{http://sources.redhat.com/autoconf/,Autoconf Developer Page}
  971: @c maintains links to a number of Autoconf/Automake tutorials online, and
  972: @c also links to the @href{http://www.gnu.org/software/ac-archive/,
  973: @c Autoconf Macro Archive}.
  974: @c 
  975: @href{http://sources.redhat.com/autoconf/,Autoconf Developer Page}では,
  976: Autoconf/Automakeのオンラインのチュートリアルと,
  977: @href{http://www.gnu.org/software/ac-archive/, Autoconf Macro Archive}の
  978: リンクも管理しています.
  979: 
  980: @end itemize
  981: 
  982: @c ================================================= Making configure Scripts.
  983: 
  984: @node Making configure Scripts
  985: @c @chapter Making @command{configure} Scripts
  986: @chapter @command{configure}スクリプトの作成
  987: @cindex @file{aclocal.m4}
  988: @cindex @command{configure}
  989: 
  990: @c The configuration scripts that Autoconf produces are by convention
  991: @c called @command{configure}.  When run, @command{configure} creates several
  992: @c files, replacing configuration parameters in them with appropriate
  993: @c values.  The files that @command{configure} creates are:
  994: @c 
  995: Autoconfが生成するコンフィギュレーションスクリプトは,慣習的に 
  996: @command{configure}と呼ばれます.実行時に,@command{configure}はいくつか
  997: のファイルを作成し,そこで,コンフィギュレーションパラメータを適切な値に
  998: 置換します.@command{configure}が作成するファイルは以下の通りです.
  999: 
 1000: @itemize @minus
 1001: @item
 1002: @c one or more @file{Makefile} files, usually one in each subdirectory of the
 1003: @c package (@pxref{Makefile Substitutions});
 1004: @c 
 1005: 一つ以上の@file{Makefile}で,通常はパッケージのそれぞれのサブディレクト
 1006: リに一つずつあります(@pxref{Makefile Substitutions}).
 1007: 
 1008: @item
 1009: @c optionally, a C header file, the name of which is configurable,
 1010: @c containing @code{#define} directives (@pxref{Configuration Headers});
 1011: @c 
 1012: オプションのCヘッダファイルで,それはコンフィグレーション可能な名前で, 
 1013: @code{#define}ディレクティブを含んでいます(@pxref{Configuration
 1014: Headers}).
 1015: 
 1016: @item
 1017: @c a shell script called @file{config.status} that, when run, will recreate
 1018: @c the files listed above (@pxref{config.status Invocation});
 1019: @c 
 1020: @file{config.status}という名のシェルスクリプトで,それは実行時に上記でリ
 1021: ストアップされているファイルを再生成します(@pxref{config.status
 1022: Invocation}).
 1023: 
 1024: @item
 1025: @c an optional shell script normally called @file{config.cache}
 1026: @c (created when using @samp{configure --config-cache}) that
 1027: @c saves the results of running many of the tests (@pxref{Cache Files});
 1028: @c 
 1029: (@samp{configure --config-cache}が使用されるときに作成される)
 1030: @file{config.cache}という名のオプションのシェルスクリプトで,それは多く
 1031: のテストの実行結果を保存しています(@pxref{Cache Files}).
 1032: 
 1033: @item
 1034: @c a file called @file{config.log} containing any messages produced by
 1035: @c compilers, to help debugging if @command{configure} makes a mistake.
 1036: @c 
 1037: @file{config.log}という名のコンパイラが生成する全てのメッセージを含んで
 1038: いるファイルで,@command{configure}が失敗した場合はデバッグの助けとなり
 1039: ます.
 1040: @end itemize
 1041: 
 1042: @cindex @file{configure.in}
 1043: @cindex @file{configure.ac}
 1044: @c To create a @command{configure} script with Autoconf, you need to write an
 1045: @c Autoconf input file @file{configure.ac} (or @file{configure.in}) and run
 1046: @c @command{autoconf} on it.  If you write your own feature tests to
 1047: @c supplement those that come with Autoconf, you might also write files
 1048: @c called @file{aclocal.m4} and @file{acsite.m4}.  If you use a C header
 1049: @c file to contain @code{#define} directives, you might also run
 1050: @c @command{autoheader}, and you will distribute the generated file
 1051: @c @file{config.h.in} with the package.
 1052: @c 
 1053: Autoconfを用いて@command{configure}スクリプトを作成するために,Autoconf 
 1054: の入力ファイル@file{configure.ac}(または@file{configure.in})を書き,
 1055: @command{autoconf}をそこで実行する必要があります.Autoconfでもたらされた
 1056: ものを補うために独自の機能テストを書く場合,@file{aclocal.m4}と
 1057: @file{acsite.m4}という名のファイルも書くことになるでしょう.
 1058: @code{#define}ディレクティブを含むCヘッダファイルを使用する場合,
 1059: @command{autoheader}も実行し,パッケージで生成されるファイル
 1060: @file{config.h.in}を配布することになるでしょう.
 1061: 
 1062: @c Here is a diagram showing how the files that can be used in
 1063: @c configuration are produced.  Programs that are executed are suffixed by
 1064: @c @samp{*}.  Optional files are enclosed in square brackets (@samp{[]}).
 1065: @c @command{autoconf} and @command{autoheader} also read the installed Autoconf
 1066: @c macro files (by reading @file{autoconf.m4}).
 1067: @c 
 1068: コンフィギュレーションで使用可能なファイルを生成する方法は,以下で示す図
 1069: の用になります.実行するプログラムには,@samp{*}が付いています.オプショ
 1070: ンのファイルは角カッコ(@samp{[]})で囲っています.@command{autoconf}と 
 1071: @command{autoheader}は,Autoconfでインストールされる(@file{autoconf.m4}
 1072: が読む)マクロファイルも読み込みます.
 1073: 
 1074: @noindent
 1075: @c Files used in preparing a software package for distribution:
 1076: @c 
 1077: ソフトウェアパッケージを配布する準備で使用されるファイルは,以下のように
 1078: なっています.
 1079: @example
 1080: your source files --> [autoscan*] --> [configure.scan] --> configure.ac
 1081: 
 1082: @group
 1083: configure.ac --.
 1084:                |   .------> autoconf* -----> configure
 1085: [aclocal.m4] --+---+
 1086:                |   `-----> [autoheader*] --> [config.h.in]
 1087: [acsite.m4] ---'
 1088: @end group
 1089: 
 1090: Makefile.in -------------------------------> Makefile.in
 1091: @end example
 1092: 
 1093: @noindent
 1094: @c Files used in configuring a software package:
 1095: @c 
 1096: ソフトウェアパッケージのコンフィグレーションで使用されるファイルは,以下
 1097: のようになっています.
 1098: @example
 1099: @group
 1100:                        .-------------> [config.cache]
 1101: configure* ------------+-------------> config.log
 1102:                        |
 1103: [config.h.in] -.       v            .-> [config.h] -.
 1104:                +--> config.status* -+               +--> make*
 1105: Makefile.in ---'                    `-> Makefile ---'
 1106: @end group
 1107: @end example
 1108: 
 1109: @menu
 1110: * Writing configure.ac::        What to put in an Autoconf input file
 1111: * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
 1112: * ifnames Invocation::          Listing the conditionals in source code
 1113: * autoconf Invocation::         How to create configuration scripts
 1114: * autoreconf Invocation::       Remaking multiple @command{configure} scripts
 1115: @end menu
 1116: 
 1117: @node Writing configure.ac
 1118: @c @section Writing @file{configure.ac}
 1119: @section @file{configure.ac}を書く
 1120: 
 1121: @c To produce a @command{configure} script for a software package, create a
 1122: @c file called @file{configure.ac} that contains invocations of the
 1123: @c Autoconf macros that test the system features your package needs or can
 1124: @c use.  Autoconf macros already exist to check for many features; see
 1125: @c @ref{Existing Tests}, for their descriptions.  For most other features,
 1126: @c you can use Autoconf template macros to produce custom checks; see
 1127: @c @ref{Writing Tests}, for information about them.  For especially tricky
 1128: @c or specialized features, @file{configure.ac} might need to contain some
 1129: @c hand-crafted shell commands; see @ref{Portable Shell}.  The
 1130: @c @command{autoscan} program can give you a good start in writing
 1131: @c @file{configure.ac} (@pxref{autoscan Invocation}, for more information).
 1132: @c 
 1133: ソフトウェアパッケージの@command{configure}スクリプトを生成するため,パッ
 1134: ケージが必要とする,または利用可能なシステムの特徴をテストするAutoconfマ
 1135: クロの呼び出しを含んでいる,@file{configure.ac}と呼ばれるファイルを作成
 1136: してください.Autoconfマクロには,多くの特徴を調査するものはすでに存在し
 1137: ています.それら関する記述は,@ref{Existing Tests}を参照してください.ほ
 1138: とんどのその他の特徴に対しては,カスタムチェックを生成するAutoconfのテン
 1139: プレートマクロを使用することが可能です.それらに関する詳細は,
 1140: @ref{Writing Tests}を参照してください.特にトリッキーな,または専門的な
 1141: 特徴に対して,@file{configure.ac}に,若干の手作りのシェルコマンドを含め
 1142: る必要もあるでしょう.@command{autoscan}プログラムは@file{configure.ac}
 1143: を書くための良いきっかけ与えてくれます.(詳細は,@pxref{autoscan
 1144: Invocation}).
 1145: 
 1146: @c Previous versions of Autoconf promoted the name @file{configure.in},
 1147: @c which is somewhat ambiguous (the tool needed to process this file is not
 1148: @c described by its extension), and introduces a slight confusion with
 1149: @c @file{config.h.in} and so on (for which @samp{.in} means ``to be
 1150: @c processed by @command{configure}'').  Using @file{configure.ac} is now
 1151: @c preferred.
 1152: @c 
 1153: Autoconfのこれまでのバージョンでは,名前@file{configure.in}を勧めていま
 1154: したが,それは曖昧で(このファイルを処理するために必要なツールは,拡張子
 1155: では分かりません),@file{config.h.in}などで(@samp{.in}は
 1156: ``@command{configure}で生成される''という意味では)ちょっと混乱していまし
 1157: た.現在では,@file{configure.ac}の使用が好まれます.
 1158: 
 1159: @menu
 1160: * Shell Script Compiler::       Autoconf as solution of a problem
 1161: * Autoconf Language::           Programming in Autoconf
 1162: * configure.ac Layout::         Standard organization of @file{configure.ac}
 1163: @end menu
 1164: 
 1165: @node Shell Script Compiler
 1166: @c @subsection A Shell Script Compiler
 1167: @subsection シェルスクリプトコンパイラ
 1168: 
 1169: @c Just as for any other computer language, in order to properly program
 1170: @c @file{configure.ac} in Autoconf you must understand @emph{what} problem
 1171: @c the language tries to address and @emph{how} it does so.
 1172: @c 
 1173: 他のコンピュータ言語のために,Autoconfで@file{configure.ac}を正しくプロ
 1174: グラムするために,言語が解決しようとする問題が@emph{何}で,そうするため
 1175: に@emph{どうする}のかを理解する必要があります.
 1176: 
 1177: @c The problem Autoconf addresses is that the world is a mess.  After all,
 1178: @c you are using Autoconf in order to have your package compile easily on
 1179: @c all sorts of different systems, some of them being extremely hostile.
 1180: @c Autoconf itself bears the price for these differences: @command{configure}
 1181: @c must run on all those systems, and thus @command{configure} must limit itself
 1182: @c to their lowest common denominator of features.
 1183: @c 
 1184: Autoconfが解決する問題は,世界が混乱しているということです.結局,全ての
 1185: 異なる種類のシステムでパッケージのコンパイルを簡単にするためにAutoconfを
 1186: 使用し,それを極端に嫌う人も中にはいます.Autoconf自身は,これらの差を価
 1187: 値あるものとして扱います.@command{configure}をこれらの全てのシステムで
 1188: 実行する必要があり,そのため,@command{configure}には,機能的にそれらの
 1189: 最小公倍数に制限する必要があります.
 1190: 
 1191: @c Naturally, you might then think of shell scripts; who needs
 1192: @c @command{autoconf}?  A set of properly written shell functions is enough to
 1193: @c make it easy to write @command{configure} scripts by hand.  Sigh!
 1194: @c Unfortunately, shell functions do not belong to the least common
 1195: @c denominator; therefore, where you would like to define a function and
 1196: @c use it ten times, you would instead need to copy its body ten times.
 1197: @c 
 1198: 通常,シェルスクリプトを考えるでしょう.@command{autoconf}が必要でしょう
 1199: か?正しく書かれたシェル関数の組み合わせで,手で@command{configure}スク
 1200: リプトを書くことを十分に簡単にします.ああ!残念ながら,シェル関数は最小
 1201: 公倍数ではありません.そのため,関数を定義しそれを10回使用したいところで,
 1202: その本体を10回コピーする必要があるでしょう.
 1203: 
 1204: @c So, what is really needed is some kind of compiler, @command{autoconf},
 1205: @c that takes an Autoconf program, @file{configure.ac}, and transforms it
 1206: @c into a portable shell script, @command{configure}.
 1207: @c 
 1208: そのため,本当に必要なものは,コンパイラのようなもの,すなわち
 1209: @command{autoconf},Autoconfプログラムが受け入れるもの,すなわち
 1210: @file{configure.ac},そして,それを移植性の高いシェルスクリプト
 1211: @command{configure}に変換するものです.
 1212: 
 1213: @c How does @command{autoconf} perform this task?
 1214: @c 
 1215: どのようにして,@command{autoconf}がこの作業を実行するのでしょう?
 1216: 
 1217: @c There are two obvious possibilities: creating a brand new language or
 1218: @c extending an existing one.  The former option is very attractive: all
 1219: @c sorts of optimizations could easily be implemented in the compiler and
 1220: @c many rigorous checks could be performed on the Autoconf program
 1221: @c (e.g., rejecting any non-portable construct).  Alternatively, you can
 1222: @c extend an existing language, such as the @code{sh} (Bourne shell)
 1223: @c language.
 1224: @c 
 1225: 可能性としては明らかに二つあります.新しい言語を作成すること,または既存
 1226: のものを拡張することです.前者は非常に魅力的です.あらゆる最適化が簡単に
 1227: 実装可能で,厳密なチェックがAutoconfプログラムで実行可能です(例えば,移
 1228: 植性のないあらゆる構成物は除外します).あるいは,@code{sh}(Bourne shell) 
 1229: 言語のように,既存の言語を拡張することが可能です.
 1230: 
 1231: @c Autoconf does the latter: it is a layer on top of @code{sh}.  It was
 1232: @c therefore most convenient to implement @command{autoconf} as a macro
 1233: @c expander: a program that repeatedly performs @dfn{macro expansions} on
 1234: @c text input, replacing macro calls with macro bodies and producing a pure
 1235: @c @code{sh} script in the end.  Instead of implementing a dedicated
 1236: @c Autoconf macro expander, it is natural to use an existing
 1237: @c general-purpose macro language, such as M4, and implement the extensions
 1238: @c as a set of M4 macros.
 1239: @c 
 1240: Autoconfは後者の方法でで行なっています.それは@code{sh}の最上位層です.
 1241: そのため,マクロを展開するものとして@command{autoconf}を実装することが最
 1242: も便利になっています.マクロ呼び出しをマクロの本体で置換し,最終的にピュ
 1243: アな@code{sh}スクリプトを生成しながら,テキスト入力で@dfn{マクロ展開}を
 1244: 繰り返し実行するプログラムです.Autoconfマクロの展開に専念して実装する代
 1245: わりに,M4のような既存の一般的な目的を持つマクロ言語を使用し,M4マクロの
 1246: 組み合わせとして拡張部分を実装する方が自然です.
 1247: 
 1248: 
 1249: @node Autoconf Language
 1250: @c @subsection The Autoconf Language
 1251: @subsection Autoconf言語
 1252: @cindex quotation
 1253: 
 1254: @c The Autoconf language is very different from many other computer
 1255: @c languages because it treats actual code the same as plain text.  Whereas
 1256: @c in C, for instance, data and instructions have very different syntactic
 1257: @c status, in Autoconf their status is rigorously the same.  Therefore, we
 1258: @c need a means to distinguish literal strings from text to be expanded:
 1259: @c quotation.
 1260: @c 
 1261: Autoconf言語は,プレーンテキスト同様に実際のコードを扱うので,多くの他の
 1262: コンピュータ言語と全く異なります.例えばCでは,データと命令は全く異なる
 1263: 構文上のステータスとなりますが,Autoconfでは,それらのステータスは厳密に
 1264: 同じです.このため,我々はリテラル文字列を展開されたテキストと区別する手
 1265: 段が必要です.それは引用符です.
 1266: 
 1267: @c When calling macros that take arguments, there must not be any blank
 1268: @c space between the macro name and the open parenthesis.  Arguments should
 1269: @c be enclosed within the M4 quote characters @samp{[} and @samp{]}, and be
 1270: @c separated by commas.  Any leading spaces in arguments are ignored,
 1271: @c unless they are quoted.  You may safely leave out the quotes when the
 1272: @c argument is simple text, but @emph{always} quote complex arguments such
 1273: @c as other macro calls.  This rule applies recursively for every macro
 1274: @c call, including macros called from other macros.
 1275: @c 
 1276: 引数をとるマクロを呼び出すとき,マクロ名と開いているカッコの間に空白があっ
 1277: てはなりません.引数は,M4の引用符文字@samp{[}と@samp{]}で囲み,カンマで
 1278: 分けるべきです.引数が単純なテキストのときは,引用符がなくても大丈夫かも
 1279: しれませんが,他のマクロの呼び出しのような複雑な引数は,@emph{常に}引用
 1280: 符で囲んでください.この規則は,他のマクロからの呼び出しを含め,全てのマ
 1281: クロ呼び出しで再帰的に適用されます.
 1282: 
 1283: @c For instance:
 1284: @c 
 1285: 例えば,以下のようにします.
 1286: 
 1287: @example
 1288: AC_CHECK_HEADER([stdio.h],
 1289:                 [AC_DEFINE([HAVE_STDIO_H])],
 1290:                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
 1291: @end example
 1292: 
 1293: @noindent
 1294: @c is quoted properly.  You may safely simplify its quotation to:
 1295: @c 
 1296: これは,正しく引用符で囲まれます.その引用を以下のように単純にしても大丈
 1297: 夫かもしれません.
 1298: 
 1299: @example
 1300: AC_CHECK_HEADER(stdio.h,
 1301:                 [AC_DEFINE(HAVE_STDIO_H)],
 1302:                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
 1303: @end example
 1304: 
 1305: @noindent
 1306: @c Notice that the argument of @code{AC_MSG_ERROR} is still quoted;
 1307: @c otherwise, its comma would have been interpreted as an argument separator.
 1308: @c 
 1309: @code{AC_MSG_ERROR}の引数は,引用符で囲まれたままだということに注意して
 1310: ください.そうしない場合は,カンマは引数を分離するものとして解釈されるで
 1311: しょう.
 1312: 
 1313: @c The following example is wrong and dangerous, as it is underquoted:
 1314: @c 
 1315: 以下の例は,引用符で囲まれていないので,間違っていて危険です.
 1316: 
 1317: @example
 1318: AC_CHECK_HEADER(stdio.h,
 1319:                 AC_DEFINE(HAVE_STDIO_H),
 1320:                 AC_MSG_ERROR([Sorry, can't do anything for you]))
 1321: @end example
 1322: 
 1323: @c In other cases, you may have to use text that also resembles a macro
 1324: @c call.  You must quote that text even when it is not passed as a macro
 1325: @c argument:
 1326: @c 
 1327: 他の場合では,マクロ呼び出しのようなテキストを使用する必要があるかもしれ
 1328: ません.マクロ引数として渡されないときでもテキストは引用符で囲む必要があ
 1329: ります.
 1330: 
 1331: @example
 1332: echo "Hard rock was here!  --[AC_DC]"
 1333: @end example
 1334: 
 1335: @noindent
 1336: @c which will result in
 1337: @c 
 1338: 結果として以下のようになります.
 1339: 
 1340: @example
 1341: echo "Hard rock was here!  --AC_DC"
 1342: @end example
 1343: 
 1344: @noindent
 1345: @c When you use the same text in a macro argument, you must therefore have
 1346: @c an extra quotation level (since one is stripped away by the macro
 1347: @c substitution).  In general, then, it is a good idea to @emph{use double
 1348: @c quoting for all literal string arguments}:
 1349: @c 
 1350: 同じテキストをマクロ引数で使用するときは,そのために余分な引用符レベルを
 1351: 追加する必要があります(一つはマクロ置換で削除されるためです).従って一般
 1352: 的に,@emph{全てのリテラル文字列の引数に対して2重で引用符を使用すること}
 1353: は良い考えです.
 1354: 
 1355: @example
 1356: AC_MSG_WARN([[AC_DC stinks  --Iron Maiden]])
 1357: @end example
 1358: 
 1359: @c You are now able to understand one of the constructs of Autoconf that
 1360: @c has been continually misunderstood@dots{}  The rule of thumb is that
 1361: @c @emph{whenever you expect macro expansion, expect quote expansion};
 1362: @c i.e., expect one level of quotes to be lost.  For instance:
 1363: @c 
 1364: 絶えず誤解されていたAutoconfの構成物の一つを,今では理解できるでしょう
 1365: @enddots{}第一の規則は,@emph{マクロ展開が予測されるところでは,引用符の
 1366: 展開を予測してください}ということです.すなわち,引用符のレベルの一つが
 1367: 失われるということです.例えば,以下のようにします.
 1368: 
 1369: @example
 1370: AC_COMPILE_IFELSE([char b[10];],, [AC_MSG_ERROR([you lose])])
 1371: @end example
 1372: 
 1373: @noindent
 1374: @c is incorrect: here, the first argument of @code{AC_COMPILE_IFELSE} is
 1375: @c @samp{char b[10];} and will be expanded once, which results in
 1376: @c @samp{char b10;}.  (There was an idiom common in Autoconf's past to
 1377: @c address this issue via the M4 @code{changequote} primitive, but do not
 1378: @c use it!)  Let's take a closer look: the author meant the first argument
 1379: @c to be understood as a literal, and therefore it must be quoted twice:
 1380: @c 
 1381: これは正しいものです.ここで,@code{AC_COMPILE_IFELSE}最初の引数は,
 1382: @samp{char b[10];}で,一度展開されて,結果として@samp{char b10;}になりま
 1383: す.(M4の@code{changequote}プリミティブを用いてこの問題を解決することが,
 1384: 一般的な慣習として以前のAutoconfにありましたが,それを使用しないでくださ
 1385: い!)さて,より詳しく見てみましょう.もう一方では,第一引数はリテラルと
 1386: して理解され,そのためそれは引用符で2重に囲む必要があります.
 1387: 
 1388: @example
 1389: AC_COMPILE_IFELSE([[char b[10];]],, [AC_MSG_ERROR([you lose])])
 1390: @end example
 1391: 
 1392: @noindent
 1393: @c Voil@`a, you actually produce @samp{char b[10];} this time!
 1394: @c 
 1395: Voil@`a,今回は実際に@samp{char b[10];}を生成しているのです!
 1396: 
 1397: @c The careful reader will notice that, according to these guidelines, the
 1398: @c ``properly'' quoted @code{AC_CHECK_HEADER} example above is actually
 1399: @c lacking three pairs of quotes!  Nevertheless, for the sake of readability,
 1400: @c double quotation of literals is used only where needed in this manual.
 1401: @c 
 1402: 注意深く読んでいると,これらのガイドラインによれば,上記の例の
 1403: @code{AC_CHECK_HEADER}で引用符で``正しく''囲まれているものは,実際には三
 1404: 組の引用符が足りないことに気付くでしょう!それにもかかわらず,可読性のた
 1405: め,リテラルを二重に引用符で囲むことは,このマニュアルでは必要なところで
 1406: のみ使用されます.
 1407: 
 1408: @c Some macros take optional arguments, which this documentation represents
 1409: @c as @ovar{arg} (not to be confused with the quote characters).  You may
 1410: @c just leave them empty, or use @samp{[]} to make the emptiness of the
 1411: @c argument explicit, or you may simply omit the trailing commas.  The
 1412: @c three lines below are equivalent:
 1413: @c 
 1414: オプションの引数を受け入れるマクロもあり,それはこのドキュメントでは(引
 1415: 用符の文字を使用して混乱しないように),@ovar{arg}として表現します.空の
 1416: ままにしたり,明示的に引数を空にするために@samp{[]}を使用したり,単純に
 1417: 後置されるカンマを省略したりすることが可能です.以下の三行は等価となりま
 1418: す.
 1419: 
 1420: @example
 1421: AC_CHECK_HEADERS(stdio.h, [], [], [])
 1422: AC_CHECK_HEADERS(stdio.h,,,)
 1423: AC_CHECK_HEADERS(stdio.h)
 1424: @end example
 1425: 
 1426: @c It is best to put each macro call on its own line in
 1427: @c @file{configure.ac}.  Most of the macros don't add extra newlines; they
 1428: @c rely on the newline after the macro call to terminate the commands.
 1429: @c This approach makes the generated @command{configure} script a little
 1430: @c easier to read by not inserting lots of blank lines.  It is generally
 1431: @c safe to set shell variables on the same line as a macro call, because
 1432: @c the shell allows assignments without intervening newlines.
 1433: @c 
 1434: @file{configure.ac}では,単独行にそれぞれのマクロ呼び出しを書くことが最
 1435: 善です.ほとんどのマクロは,余分な改行を加えません.それらは,コマンドを
 1436: 終端するためのマクロ呼び出しの後の改行に依存しています.このアプローチで
 1437: は,生成された@command{configure}スクリプトを,多くの空白行を挿入するこ
 1438: となく,若干読みやすくします.シェルは,改行に干渉されることなく割り当て
 1439: ることが可能なので,シェル変数をマクロ呼び出しと同じ行で設定すると,通常
 1440: は安全です.
 1441: 
 1442: @c You can include comments in @file{configure.ac} files by starting them
 1443: @c with the @samp{#}.  For example, it is helpful to begin
 1444: @c @file{configure.ac} files with a line like this:
 1445: @c 
 1446: @file{configure.ac}ファイルに@samp{#}で始まるコメントを含めることも可能
 1447: です.例えば,以下のような行を@file{configure.ac}ファイルの最初に書くと
 1448: 役に立つでしょう.
 1449: 
 1450: @example
 1451: # Process this file with autoconf to produce a configure script.
 1452: @end example
 1453: 
 1454: @node configure.ac Layout
 1455: @c @subsection Standard @file{configure.ac} Layout
 1456: @subsection 標準的な@file{configure.ac}のレイアウト
 1457: 
 1458: @c The order in which @file{configure.ac} calls the Autoconf macros is not
 1459: @c important, with a few exceptions.  Every @file{configure.ac} must
 1460: @c contain a call to @code{AC_INIT} before the checks, and a call to
 1461: @c @code{AC_OUTPUT} at the end (@pxref{Output}).  Additionally, some macros
 1462: @c rely on other macros having been called first, because they check
 1463: @c previously set values of some variables to decide what to do.  These
 1464: @c macros are noted in the individual descriptions (@pxref{Existing
 1465: @c Tests}), and they also warn you when @command{configure} is created if they
 1466: @c are called out of order.
 1467: @c 
 1468: @file{configure.ac}でAutoconfマクロを呼び出す順番は,いくつか例外があり
 1469: ますが重要ではありません.すべての@file{configure.ac}では,調査の前の 
 1470: @code{AC_INIT}の呼び出しと,最後の@code{AC_OUTPUT}の呼び出しを含める必要
 1471: があります(@pxref{Output}).さらに,行なうことを決定するために,いくつか
 1472: の変数については前もって設定されている値を調査するために,他のマクロが最
 1473: 初に呼ばれることに依存するマクロもあります.これらのマクロはそれぞれの説
 1474: 明で書かれ(@pxref{Existing Tests})ていて,@command{configure}が作成され
 1475: ているとき,間違った順番で呼び出されている場合は警告されます.
 1476: 
 1477: @c To encourage consistency, here is a suggested order for calling the
 1478: @c Autoconf macros.  Generally speaking, the things near the end of this
 1479: @c list are those that could depend on things earlier in it.  For example,
 1480: @c library functions could be affected by types and libraries.
 1481: @c 
 1482: 整合性を促進するため,Autoconfマクロを呼び出す順番をここで提案します.一
 1483: 般的に言って,このリストの終わり近くのものは,その前のものに依存します.
 1484: 例えば,ライブラリ関数は型とライブラリの影響があります.
 1485: 
 1486: @display
 1487: @group
 1488: @c Autoconf requirements
 1489: @c 
 1490: Autoconfの必要条件
 1491: @code{AC_INIT(@var{package}, @var{version}, @var{bug-report-address})}
 1492: @c information on the package
 1493: @c 
 1494: パッケージの情報
 1495: @c checks for programs
 1496: @c 
 1497: プログラムの調査
 1498: @c checks for libraries
 1499: @c 
 1500: ライブラリの調査
 1501: @c checks for header files
 1502: @c 
 1503: ヘッダファイルの調査
 1504: @c checks for types
 1505: @c 
 1506: 型の調査
 1507: @c checks for structures
 1508: @c 
 1509: 構造体の調査
 1510: @c checks for compiler characteristics
 1511: @c 
 1512: コンパイラの特徴の調査
 1513: @c checks for library functions
 1514: @c 
 1515: ライブラリ関数の調査
 1516: @c checks for system services
 1517: @c 
 1518: システムサービスの調査
 1519: @code{AC_CONFIG_FILES(@r{[}@var{file@dots{}}@r{]})}
 1520: @code{AC_OUTPUT}
 1521: @end group
 1522: @end display
 1523: 
 1524: 
 1525: @node autoscan Invocation
 1526: @c @section Using @command{autoscan} to Create @file{configure.ac}
 1527: @section @file{configure.ac}を作成するために@command{autoscan}を使用する
 1528: @cindex @command{autoscan}
 1529: 
 1530: @c The @command{autoscan} program can help you create and/or maintain a
 1531: @c @file{configure.ac} file for a software package.  @command{autoscan}
 1532: @c examines source files in the directory tree rooted at a directory given
 1533: @c as a command line argument, or the current directory if none is given.
 1534: @c It searches the source files for common portability problems and creates
 1535: @c a file @file{configure.scan} which is a preliminary @file{configure.ac}
 1536: @c for that package, and checks a possibly existing @file{configure.ac} for
 1537: @c completeness.
 1538: @c 
 1539: @command{autoscan}プログラムは,ソフトウェアパッケージに対する 
 1540: @file{configure.ac}ファイルの作成と/または管理に役に立ちます.
 1541: @command{autoscan}は,コマンドライン引数で与えられたディレクトリをルート
 1542: とするディレクトリツリー,または,与えられていない場合はカレントディレク
 1543: トリでソースファイルを調査します.それは,ソースファイルの一般的な移植性
 1544: の問題を検索して,パッケージに対する@file{configure.ac}の準備となるファ
 1545: イル@file{configure.scan}を作成し,おそらく存在している
 1546: @file{configure.ac}の完全性を調査します.
 1547: 
 1548: @c When using @command{autoscan} to create a @file{configure.ac}, you
 1549: @c should manually examine @file{configure.scan} before renaming it to
 1550: @c @file{configure.ac}; it will probably need some adjustments.
 1551: @c Occasionally, @command{autoscan} outputs a macro in the wrong order
 1552: @c relative to another macro, so that @command{autoconf} produces a warning;
 1553: @c you need to move such macros manually.  Also, if you want the package to
 1554: @c use a configuration header file, you must add a call to
 1555: @c @code{AC_CONFIG_HEADERS} (@pxref{Configuration Headers}).  You might
 1556: @c also have to change or add some @code{#if} directives to your program in
 1557: @c order to make it work with Autoconf (@pxref{ifnames Invocation}, for
 1558: @c information about a program that can help with that job).
 1559: @c 
 1560: @file{configure.ac}を作成するために@command{autoscan}を使用するとき,
 1561: @file{configure.scan}を@file{configure.ac}に改名する前に,手作業でそれを
 1562: 調査する必要があります.恐らくなんらかの調整が必要です.時折
 1563: @command{autoscan}は,@command{autoconf}が警告を出すような,関連するマク
 1564: ロに対して間違った順序でマクロを出力する場合もあります.手作業でそのよう
 1565: なマクロを移動する必要があります.また,パッケージでコンフィギュレーショ
 1566: ンヘッダファイルを使用する場合も,@code{AC_CONFIG_HEADER}の呼び出しを加
 1567: える必要があります(@pxref{Configuration Headers}).また,Autoconfで動作
 1568: するように,プログラムの@code{#if}ディレクティブを変更したり加えたりする
 1569: 必要があります(そのような仕事に役に立つプログラムの情報は,
 1570: @pxref{ifnames Invocation}).
 1571: 
 1572: @c When using @command{autoscan} to maintain a @file{configure.ac}, simply
 1573: @c consider adding its suggestions.  The file @file{autoscan.log} will
 1574: @c contain detailed information on why a macro is requested.
 1575: @c 
 1576: @file{configure.ac}を管理するために@command{autoscan}を使用しているとき,
 1577: 単純にそれが追加した提案を考えてください.ファイル@file{autoscan.log}に
 1578: は,マクロが要求される理由に関する詳細な情報が含まれています.
 1579: 
 1580: @c @command{autoscan} uses several data files (installed along with Autoconf)
 1581: @c to determine which macros to output when it finds particular symbols in
 1582: @c a package's source files.  These data files all have the same format:
 1583: @c each line consists of a symbol, whitespace, and the Autoconf macro to
 1584: @c output if that symbol is encountered.  Lines starting with @samp{#} are
 1585: @c comments.
 1586: @c 
 1587: @command{autoscan}は,パッケージのソースファイルで特定のシンボルを見つけ
 1588: たときに出力するマクロを決定するため,(Autoconfと一緒にインストールされ
 1589: ている)データファイルも使用します.これらのデータファイルはすべて同じ書
 1590: 式です.それぞれの行は,シンボル,空白スペース,そしてそのシンボルがある
 1591: 場合に出力するAutoconfマクロから成り立っています.@samp{#}で始まる行はコ
 1592: メントです.
 1593: 
 1594: @c @command{autoscan} accepts the following options:
 1595: @c 
 1596: @command{autoscan}は以下のオプションを受け入れます.
 1597: 
 1598: @table @option
 1599: @item --help
 1600: @itemx -h
 1601: @c Print a summary of the command line options and exit.
 1602: @c 
 1603: コマンドラインオプションの概要を出力して終了します.
 1604: 
 1605: @item --version
 1606: @itemx -V
 1607: @c Print the version number of Autoconf and exit.
 1608: @c 
 1609: Autoconfのバージョンナンバーを出力して終了します.
 1610: 
 1611: @item --verbose
 1612: @itemx -v
 1613: @c Print the names of the files it examines and the potentially interesting
 1614: @c symbols it finds in them.  This output can be voluminous.
 1615: @c 
 1616: 調査しているファイルと,その中で見つかった興味深いものとなる可能性のある
 1617: シンボル名を出力します.この出力は大量になるはずです.
 1618: 
 1619: @item --include=@var{dir}
 1620: @itemx -I @var{dir}
 1621: @c Append @var{dir} to the include path.  Multiple invocations accumulate.
 1622: @c 
 1623: @var{dir}をインクルードパスの後に追加します.複数回の呼び出しで累積されます.
 1624: 
 1625: @item --prepend-include=@var{dir}
 1626: @item -B @var{dir}
 1627: @c Prepend @var{dir} to the include path.  Multiple invocations accumulate.
 1628: @c 
 1629: @var{dir}をインクルードパスの前に追加します.複数回の呼び出しで累積され
 1630: ます.
 1631: @end table
 1632: 
 1633: @node ifnames Invocation
 1634: @c @section Using @command{ifnames} to List Conditionals
 1635: @section 条件をリストアップするため@command{ifnames}を使用する
 1636: @cindex @command{ifnames}
 1637: 
 1638: @c @command{ifnames} can help you write @file{configure.ac} for a software
 1639: @c package.  It prints the identifiers that the package already uses in C
 1640: @c preprocessor conditionals.  If a package has already been set up to have
 1641: @c some portability, @command{ifnames} can thus help you figure out what its
 1642: @c @command{configure} needs to check for.  It may help fill in some gaps in a
 1643: @c @file{configure.ac} generated by @command{autoscan} (@pxref{autoscan
 1644: @c Invocation}).
 1645: @c 
 1646: @command{ifnames}は,ソフトウェアパッケージに対する@file{configure.ac}を
 1647: 書くとき役に立つはずです.それは,Cプリプロセッサの条件式でパッケージが
 1648: 既に使用している識別子を出力します.パッケージが既に移植性に対して準備さ
 1649: れている場合,@command{ifnames}は@command{configure}で調査することが必要
 1650: なものを理解することに役く立つはずです.それは@command{autoscan} が生成
 1651: した@file{configure.ac}とのギャップを埋める役にも立つかもしれません
 1652: (@pxref{autoscan Invocation}).
 1653: 
 1654: @c @command{ifnames} scans all of the C source files named on the command line
 1655: @c (or the standard input, if none are given) and writes to the standard
 1656: @c output a sorted list of all the identifiers that appear in those files
 1657: @c in @code{#if}, @code{#elif}, @code{#ifdef}, or @code{#ifndef}
 1658: @c directives.  It prints each identifier on a line, followed by a
 1659: @c space-separated list of the files in which that identifier occurs.
 1660: @c 
 1661: @command{ifnames}は,コマンドラインで指名されたすべてのCソースファイルを
 1662: (無い場合は標準入力から)走査し,これらのファイルに現れる@code{#if}, 
 1663: @code{#elif},@code{#ifdef},または@code{#ifndef}ディレクティブの,すべ
 1664: ての識別子をソートしたリストを標準出力に書き出します.それは,識別子があ
 1665: るファイルの空白で分離されたリストに続いて,一行にぞれぞれの識別子を出力
 1666: します.
 1667: 
 1668: @noindent
 1669: @c @command{ifnames} accepts the following options:
 1670: @c 
 1671: @command{ifnames}は以下のオプションを受け入れます.
 1672: 
 1673: @table @option
 1674: @item --help
 1675: @itemx -h
 1676: @c Print a summary of the command line options and exit.
 1677: @c 
 1678: コマンドラインオプションの概要を出力して終了します.
 1679: 
 1680: @item --version
 1681: @itemx -V
 1682: @c Print the version number of Autoconf and exit.
 1683: @c 
 1684: Autoconfのバージョンナンバーを出力して終了します.
 1685: @end table
 1686: 
 1687: @node autoconf Invocation
 1688: @c @section Using @command{autoconf} to Create @command{configure}
 1689: @section @command{configure}を作成するため@command{autoconf}を使用する
 1690: @cindex @command{autoconf}
 1691: 
 1692: @c To create @command{configure} from @file{configure.ac}, run the
 1693: @c @command{autoconf} program with no arguments.  @command{autoconf} processes
 1694: @c @file{configure.ac} with the @code{m4} macro processor, using the
 1695: @c Autoconf macros.  If you give @command{autoconf} an argument, it reads that
 1696: @c file instead of @file{configure.ac} and writes the configuration script
 1697: @c to the standard output instead of to @command{configure}.  If you give
 1698: @c @command{autoconf} the argument @option{-}, it reads from the standard
 1699: @c input instead of @file{configure.ac} and writes the configuration script
 1700: @c to the standard output.
 1701: @c 
 1702: @file{configure.ac}から@command{configure}を作成するために,
 1703: @command{autoconf}プログラムを引数無しで実行してください.
 1704: @command{autoconf}は,Autoconfマクロを使用しながら,@code{m4}マクロプロ
 1705: セッサを用いて@file{configure.ac}を処理します.@command{autoconf}に引数
 1706: を与えている場合,@file{configure.ac}の代わりにそのファイルを読み,
 1707: @command{configure}の代わりに,標準出力にコンフィグレーションスクリプト
 1708: を書き出します.@command{autoconf}に引数@option{-}を与えた場合,
 1709: @file{configure.ac}の代わりに標準入力から読み込み,標準出力にコンフィグ
 1710: レーションスクリプトを書き出します.
 1711: 
 1712: @c The Autoconf macros are defined in several files.  Some of the files are
 1713: @c distributed with Autoconf; @command{autoconf} reads them first.  Then it
 1714: @c looks for the optional file @file{acsite.m4} in the directory that
 1715: @c contains the distributed Autoconf macro files, and for the optional file
 1716: @c @file{aclocal.m4} in the current directory.  Those files can contain
 1717: @c your site's or the package's own Autoconf macro definitions
 1718: @c (@pxref{Writing Autoconf Macros}, for more information).  If a macro is
 1719: @c defined in more than one of the files that @command{autoconf} reads, the
 1720: @c last definition it reads overrides the earlier ones.
 1721: @c 
 1722: Autoconfマクロは,複数のファイルで定義されています.ファイルは,Autoconf 
 1723: と一緒に配布される物もあります.@command{autoconf}は最初にそれを読み込み
 1724: ます.オプションのファイル@file{acsite.m4}を,配布されたAutoconfマクロファ
 1725: イルを含むディレクトリで探し,オプションのファイル@file{aclocal.m4}はカ
 1726: レントディレクトリで探します.これらのファイルは,サイトやパッケージの
 1727: Autoconfマクロ定義を含めることが可能です(詳細は,@pxref{Writing Autoconf
 1728: Macros}).一つ以上のファイルで定義されているマクロを@command{autoconf}が
 1729: 読み込む場合,最後の定義がそれ以前の定義に優先します.
 1730: 
 1731: @c @command{autoconf} accepts the following options:
 1732: @c 
 1733: @command{autoconf}は以下のオプションを受け入れます.
 1734: 
 1735: @table @option
 1736: @item --help
 1737: @itemx -h
 1738: @c Print a summary of the command line options and exit.
 1739: @c 
 1740: コマンドラインオプションの概要を出力して終了します.
 1741: 
 1742: @item --version
 1743: @itemx -V
 1744: @c Print the version number of Autoconf and exit.
 1745: @c 
 1746: Autoconfのバージョンナンバーを出力して終了します.
 1747: 
 1748: @item --verbose
 1749: @itemx -v
 1750: @c Report processing steps.
 1751: @c 
 1752: 処理しているステップを報告します.
 1753: 
 1754: @item --debug
 1755: @itemx -d
 1756: @c Don't remove the temporary files.
 1757: @c 
 1758: 一時的なファイルを削除しません.
 1759: 
 1760: @item --force
 1761: @itemx -f
 1762: @c Remake @file{configure} even if newer than its input files.
 1763: @c 
 1764: 入力ファイルより@file{configure}が新しい場合でも,それを再生成します.
 1765: 
 1766: @item --include=@var{dir}
 1767: @itemx -I @var{dir}
 1768: @c Append @var{dir} to the include path.  Multiple invocations accumulate.
 1769: @c 
 1770: @var{dir}をインクルードパスの後に追加します.複数回の呼び出しで累積されます.
 1771: 
 1772: @item --prepend-include=@var{dir}
 1773: @item -B @var{dir}
 1774: @c Prepend @var{dir} to the include path.  Multiple invocations accumulate.
 1775: @c 
 1776: @var{dir}をインクルードパスの前に追加します.複数回の呼び出しで累積され
 1777: ます.
 1778: 
 1779: @item --output=@var{file}
 1780: @itemx -o @var{file}
 1781: @c Save output (script or trace) to @var{file}.  The file @option{-} stands
 1782: @c for the standard output.
 1783: @c 
 1784: (出力や追跡の)出力を@var{file}に保存します.ファイル@option{-}は標準出力
 1785: に対するものです.
 1786: 
 1787: @item --warnings=@var{category}
 1788: @itemx -W @var{category}
 1789: @evindex WARNINGS
 1790: @c Report the warnings related to @var{category} (which can actually be a
 1791: @c comma separated list).  @xref{Reporting Messages}, macro
 1792: @c @code{AC_DIAGNOSE}, for a comprehensive list of categories.  Special
 1793: @c values include:
 1794: @c 
 1795: (実際にはカンマで分けたリストが可能な)@var{category}に関連する警告を報告
 1796: します.カテゴリの総合的なリストは,マクロ@code{AC_DIAGNOSE}と
 1797: @xref{Reporting Messages}.  特別な値には,以下のものが含まれています.
 1798: 
 1799: @table @samp
 1800: @item all
 1801: @c report all the warnings
 1802: @c 
 1803: 全ての警告を報告します.
 1804: 
 1805: @item none
 1806: @c report none
 1807: @c 
 1808: 何も報告しません.
 1809: 
 1810: @item error
 1811: @c treats warnings as errors
 1812: @c 
 1813: 警告をエラーとして扱います.
 1814: 
 1815: @item no-@var{category}
 1816: @c disable warnings falling into @var{category}
 1817: @c 
 1818: 警告を@var{category}に分類不可能にします.
 1819: @end table
 1820: 
 1821: @c Warnings about @samp{syntax} are enabled by default, and the environment
 1822: @c variable @code{WARNINGS}, a comma separated list of categories, is
 1823: @c honored.  @samp{autoconf -W @var{category}} will actually
 1824: @c behave as if you had run:
 1825: @c 
 1826: @samp{syntax}に関する警告はデフォルトで利用可能で,カンマで分けられたカ
 1827: テゴリリストの環境変数@code{WARNINGS}は尊重されます.@samp{autoconf -W
 1828: @var{category}}は,実際には以下のように実行したかのように動作します.
 1829: 
 1830: @example
 1831: autoconf --warnings=syntax,$WARNINGS,@var{category}
 1832: @end example
 1833: 
 1834: @noindent
 1835: @c If you want to disable @command{autoconf}'s defaults and @code{WARNINGS},
 1836: @c but (for example) enable the warnings about obsolete constructs, you
 1837: @c would use @option{-W none,obsolete}.
 1838: @c 
 1839: @command{autoconf}のデフォルトと@code{WARNINGS}を利用不可能にしたいが,
 1840: (例えば)時代遅れの構成物についての警告は利用可能にしたい場合,@option{-W
 1841: none,obsolete}を使用すべきです.
 1842: 
 1843: @cindex Back trace
 1844: @cindex Macro invocation stack
 1845: @c @command{autoconf} displays a back trace for errors, but not for
 1846: @c warnings; if you want them, just pass @option{-W error}.  For instance,
 1847: @c on this @file{configure.ac}:
 1848: @c 
 1849: @command{autoconf}はエラーのバックトレースを表示しますが,警告については
 1850: 行ないません.そうしたい場合,@option{-W error}のみを渡してください.例
 1851: えば,以下のような@file{configure.ac}を考えます.
 1852: 
 1853: @example
 1854: AC_DEFUN([INNER],
 1855: [AC_TRY_RUN([exit (0)])])
 1856: 
 1857: AC_DEFUN([OUTER],
 1858: [INNER])
 1859: 
 1860: AC_INIT
 1861: OUTER
 1862: @end example
 1863: 
 1864: @noindent
 1865: @c you get:
 1866: @c 
 1867: 以下を得ます.
 1868: 
 1869: @example
 1870: $ @kbd{autoconf -Wcross}
 1871: configure.ac:8: warning: AC_TRY_RUN called without default \
 1872: to allow cross compiling
 1873: $ @kbd{autoconf -Wcross,error}
 1874: configure.ac:8: error: AC_TRY_RUN called without default \
 1875: to allow cross compiling
 1876: acgeneral.m4:3044: AC_TRY_RUN is expanded from...
 1877: configure.ac:2: INNER is expanded from...
 1878: configure.ac:5: OUTER is expanded from...
 1879: configure.ac:8: the top level
 1880: @end example
 1881: 
 1882: @item --trace=@var{macro}[:@var{format}]
 1883: @itemx -t @var{macro}[:@var{format}]
 1884: @c Do not create the @command{configure} script, but list the calls to
 1885: @c @var{macro} according to the @var{format}.  Multiple @option{--trace}
 1886: @c arguments can be used to list several macros.  Multiple @option{--trace}
 1887: @c arguments for a single macro are not cumulative; instead, you should
 1888: @c just make @var{format} as long as needed.
 1889: @c 
 1890: @command{configure}スクリプトを作成しませんが,@var{format}でマクロの呼
 1891: び出しをリストアップします.複数の@option{--trace}の引数は,複数のマクロ
 1892: をリストアップするために使用可能です.単一のマクロに対する複数の
 1893: @option{--trace}の引数は,累積的ではありません.その代わりに@var{format}
 1894: を必要なものにすべきです.
 1895: 
 1896: @c The @var{format} is a regular string, with newlines if desired, and
 1897: @c several special escape codes.  It defaults to @samp{$f:$l:$n:$%}; see
 1898: @c below for details on the @var{format}.
 1899: @c 
 1900: @var{format}は,必要な場合は改行をともなう通常の文字列と,いくつかの特殊
 1901: なエスケープコードです.デフォルトは@samp{$f:$l:$n:$%}です.@var{format}
 1902: の詳細は,以下を参照してください.
 1903: 
 1904: @item --initialization
 1905: @itemx -i
 1906: @c By default, @option{--trace} does not trace the initialization of the
 1907: @c Autoconf macros (typically the @code{AC_DEFUN} definitions).  This
 1908: @c results in a noticeable speedup, but can be disabled by this option.
 1909: @c 
 1910: デフォルトで,@option{--trace}はAutoconfマクロ(特に@code{AC_DEFUN}の定義) 
 1911: の初期化を追跡しません.これで顕著に高速化されますが,このオプションで利
 1912: 用不可能にすることができます.
 1913: @end table
 1914: 
 1915: 
 1916: @c It is often necessary to check the content of a @file{configure.ac}
 1917: @c file, but parsing it yourself is extremely fragile and error-prone.  It
 1918: @c is suggested that you rely upon @option{--trace} to scan
 1919: @c @file{configure.ac}.
 1920: @c 
 1921: @file{configure.ac}ファイルの内容を調査する必要があることもよくあります
 1922: が,自分で解析することは,非常に脆くエラーを起こしやすいものです.
 1923: @file{configure.ac}をスキャンするために,@option{--trace}を信頼してみて
 1924: ください.
 1925: 
 1926: @c The @var{format} of @option{--trace} can use the following special
 1927: @c escapes:
 1928: @c 
 1929: @option{--trace}の@var{format}は,以下の特別なエスケープが使用可能です.
 1930: 
 1931: @table @samp
 1932: @item $$
 1933: @c The character @samp{$}.
 1934: @c 
 1935: 文字@samp{$}です.
 1936: 
 1937: @item $f
 1938: @c The filename from which @var{macro} is called.
 1939: @c 
 1940: @var{macro}が呼び出されるファイル名です.
 1941: 
 1942: @item $l
 1943: @c The line number from which @var{macro} is called.
 1944: @c 
 1945: @var{macro}が呼び出される行番号です.
 1946: 
 1947: @item $d
 1948: @c The depth of the @var{macro} call.  This is an M4 technical detail that
 1949: @c you probably don't want to know about.
 1950: @c 
 1951: @var{macro}呼び出しの深さです.これは,おそらく知らなくてもよい,M4テク
 1952: ニックの詳細です.
 1953: 
 1954: @item $n
 1955: @c The name of the @var{macro}.
 1956: @c 
 1957: @var{macro}名です.
 1958: 
 1959: @item $@var{num}
 1960: @c The @var{num}th argument of the call to @var{macro}.
 1961: @c 
 1962: 呼び出された@var{macro}の@var{num}番目の引数です.
 1963: 
 1964: @item $@@
 1965: @itemx $@var{sep}@@
 1966: @itemx $@{@var{separator}@}@@
 1967: @c All the arguments passed to @var{macro}, separated by the character
 1968: @c @var{sep} or the string @var{separator} (@samp{,} by default).  Each
 1969: @c argument is quoted, i.e., enclosed in a pair of square brackets.
 1970: @c 
 1971: 文字@var{sep}または文字列@var{separator}(デフォルトは@samp{,})で分けられ
 1972: た,@var{macro}に渡される全ての引数です.それぞれの引数は引用符で囲まれ
 1973: ていて,すなわち角カッコで囲まれることになります.
 1974: 
 1975: @item $*
 1976: @itemx $@var{sep}*
 1977: @itemx $@{@var{separator}@}*
 1978: @c As above, but the arguments are not quoted.
 1979: @c 
 1980: 上と同じですが,引用符で囲まれていません.
 1981: 
 1982: @item $%
 1983: @itemx $@var{sep}%
 1984: @itemx $@{@var{separator}@}%
 1985: @c As above, but the arguments are not quoted, all new line characters in
 1986: @c the arguments are smashed, and the default separator is @samp{:}.
 1987: @c 
 1988: 上と同じですが,引数を引用符で囲まず,引数の改行文字は取り除かれ,デフォ
 1989: ルトの分離文字は@samp{:}になっています.
 1990: 
 1991: @c The escape @samp{$%} produces single-line trace outputs (unless you put
 1992: @c newlines in the @samp{separator}), while @samp{$@@} and @samp{$*} do
 1993: @c not.
 1994: @c 
 1995: エスケープの@samp{$%}は,(@samp{separator}を改行にしない限り)単一行にト
 1996: レースの出力を生成しますが,@samp{$@@}と@samp{$*}はそうではありません.
 1997: @end table
 1998: 
 1999: @c For instance, to find the list of variables that are substituted, use:
 2000: @c 
 2001: 例えば,置換される変数のリストを探すために,以下のようにしてください.
 2002: 
 2003: @example
 2004: @group
 2005: $ @kbd{autoconf -t AC_SUBST}
 2006: configure.ac:2:AC_SUBST:ECHO_C
 2007: configure.ac:2:AC_SUBST:ECHO_N
 2008: configure.ac:2:AC_SUBST:ECHO_T
 2009: @i{More traces deleted}
 2010: @end group
 2011: @end example
 2012: 
 2013: @noindent
 2014: @c The example below highlights the difference between @samp{$@@},
 2015: @c @samp{$*}, and @strong{$%}.
 2016: @c 
 2017: 以下の例では,@samp{$@@},@samp{$*}と@strong{$%}の違いを強調しています.
 2018: 
 2019: @example
 2020: @group
 2021: $ @kbd{cat configure.ac}
 2022: AC_DEFINE(This, is, [an
 2023: [example]])
 2024: $ @kbd{autoconf -t 'AC_DEFINE:@@: $@@}
 2025: *: $*
 2026: $: $%'
 2027: @@: [This],[is],[an
 2028: [example]]
 2029: *: This,is,an
 2030: [example]
 2031: $: This:is:an [example]
 2032: @end group
 2033: @end example
 2034: 
 2035: @noindent
 2036: @c The @var{format} gives you a lot of freedom:
 2037: @c 
 2038: @var{format}は,柔軟にできます.
 2039: 
 2040: @example
 2041: @group
 2042: $ @kbd{autoconf -t 'AC_SUBST:$$ac_subst@{"$1"@} = "$f:$l";'}
 2043: $ac_subst@{"ECHO_C"@} = "configure.ac:2";
 2044: $ac_subst@{"ECHO_N"@} = "configure.ac:2";
 2045: $ac_subst@{"ECHO_T"@} = "configure.ac:2";
 2046: @i{More traces deleted}
 2047: @end group
 2048: @end example
 2049: 
 2050: @noindent
 2051: @c A long @var{separator} can be used to improve the readability of complex
 2052: @c structures, and to ease their parsing (for instance when no single
 2053: @c character is suitable as a separator):
 2054: @c 
 2055: 長い@var{separator}は,複雑な構想の可読性を改善したり,解析を簡単にする
 2056: ために使用可能です(例えば,分離文字に適した単一文字が無いときです).
 2057: 
 2058: @example
 2059: @group
 2060: $ @kbd{autoconf -t 'AM_MISSING_PROG:$@{|:::::|@}*'}
 2061: ACLOCAL|:::::|aclocal|:::::|$missing_dir
 2062: AUTOCONF|:::::|autoconf|:::::|$missing_dir
 2063: AUTOMAKE|:::::|automake|:::::|$missing_dir
 2064: @i{More traces deleted}
 2065: @end group
 2066: @end example
 2067: 
 2068: @node autoreconf Invocation
 2069: @c @section Using @command{autoreconf} to Update @command{configure} Scripts
 2070: @section @command{configure}スクリプトを更新するため@command{autoreconf}を使用する
 2071: @cindex @command{autoreconf}
 2072: 
 2073: @c Installing the various components of the @sc{gnu} Build System can be
 2074: @c tedious: running @command{autopoint} for Gettext, @command{automake} for
 2075: @c @file{Makefile.in} etc.@: in each directory.  It may be needed either
 2076: @c because some tools such as @command{automake} have been updated on your
 2077: @c system, or because some of the sources such as @file{configure.ac} have
 2078: @c been updated, or finally, simply in order to install the @sc{gnu} Build
 2079: @c System in a fresh tree.
 2080: @c 
 2081: @sc{gnu}ビルドシステムの様々なコンポーネントをインストールすることは退屈
 2082: なものです.それは,Gettextに対する@command{autopoint},
 2083: @file{Makefile.in} や@command{automake}等を,それぞれのディレクトリで実
 2084: 行することを意味します.@command{automake}のようなツールが更新されたり,
 2085: @file{configure.ac}のようなソースが更新されたり,ただ単純に@sc{gnu}
 2086: Build Systemを新しいツリーにインストールするためだけでも,そうすることが
 2087: 必要になるかもしれません.
 2088: 
 2089: @c @command{autoreconf} runs @command{autoconf}, @command{autoheader}, @command{aclocal},
 2090: @c @command{automake}, @command{libtoolize}, and @command{autopoint} (when
 2091: @c appropriate) repeatedly to update the @sc{gnu} Build System in the specified
 2092: @c directories and their subdirectories (@pxref{Subdirectories}).  By
 2093: @c default, it only remakes those files that are older than their sources.
 2094: @c 
 2095: @command{autoreconf}は,指定されたディレクトリとそのサブディレクトリ
 2096: (@pxref{Subdirectories})で,@sc{gnu}ビルドシステムを更新するために,
 2097: @command{autoconf},@command{autoheader},@command{aclocal},
 2098: @command{automake},@command{libtoolize},そして(適切なときは)
 2099: @command{autopoint}を繰り返し実行します.デフォルトで,ソースファイルよ
 2100: り古いファイルだけが再生成されます.
 2101: 
 2102: @c If you install a new version of some tool, you can make
 2103: @c @command{autoreconf} remake @emph{all} of the files by giving it the
 2104: @c @option{--force} option.
 2105: @c 
 2106: 新しいバージョンのツールをインストールした場合,@command{autoreconf}に
 2107: @option{--force}オプションを与えることで,@emph{すべての}ファイルを再生
 2108: 成することが可能です.
 2109: 
 2110: @c @xref{Automatic Remaking}, for @file{Makefile} rules to automatically
 2111: @c remake @command{configure} scripts when their source files change.  That
 2112: @c method handles the timestamps of configuration header templates
 2113: @c properly, but does not pass @option{--autoconf-dir=@var{dir}} or
 2114: @c @option{--localdir=@var{dir}}.
 2115: @c 
 2116: ソースファイルを変更したとき,@command{configure}スクリプトを自動的に再
 2117: 生成する@file{Makefile}規則については,@xref{Automatic Remaking}.  その
 2118: 方法は,コンフィギュレーションヘッダテンプレートのタイムスタンプを正確に
 2119: 処理しますが,@option{--autoconf-dir=@var{dir}}や
 2120: @option{--localdir=@var{dir}}を渡しません.
 2121: 
 2122: @noindent
 2123: @c @command{autoreconf} accepts the following options:
 2124: @c 
 2125: @command{autoreconf}は以下のオプションを受け入れます.
 2126: 
 2127: @table @option
 2128: @item --help
 2129: @itemx -h
 2130: @c Print a summary of the command line options and exit.
 2131: @c 
 2132: コマンドラインオプションの概要を出力して終了します.
 2133: 
 2134: @item --version
 2135: @itemx -V
 2136: @c Print the version number of Autoconf and exit.
 2137: @c 
 2138: Autoconfのバージョンナンバーを出力して終了します.
 2139: 
 2140: @item --verbose
 2141: @c Print the name of each directory where @command{autoreconf} runs
 2142: @c @command{autoconf} (and @command{autoheader}, if appropriate).
 2143: @c 
 2144: @command{autoreconf}が@command{autoconf}(と適切な場合は
 2145: @command{autoheader})を実行している,それぞれのディレクトリ名を出力しま
 2146: す.
 2147: 
 2148: @item --debug
 2149: @itemx -d
 2150: @c Don't remove the temporary files.
 2151: @c 
 2152: 一時ファイルを削除しません.
 2153: 
 2154: @item --force
 2155: @itemx -f
 2156: @c Remake even @file{configure} scripts and configuration headers that are
 2157: @c newer than their input files (@file{configure.ac} and, if present,
 2158: @c @file{aclocal.m4}).
 2159: @c 
 2160: @file{configure}スクリプトとコンフィグレーションヘッダが入力ファイル
 2161: (@file{configure.ac}と,存在する場合は@file{aclocal.m4})より新しくても更
 2162: 新します.
 2163: 
 2164: @item --install
 2165: @itemx -i
 2166: @c Copy missing auxiliary files.  This option is similar to the option
 2167: @c @code{--add-missing} in @command{automake}.
 2168: @c 
 2169: 足りない補助ファイルをコピーします.このオプションは,@command{automake} 
 2170: のオプション@code{--add-missing}に似ています.
 2171: 
 2172: @item --symlink
 2173: @itemx -s
 2174: @c Instead of copying missing auxiliary files, install symbolic links.
 2175: @c 
 2176: 足りない補助ファイルをコピーする代わりに,シンボリックリンクを配置します.
 2177: 
 2178: @item --include=@var{dir}
 2179: @itemx -I @var{dir}
 2180: @c Append @var{dir} to the include path.  Multiple invocations accumulate.
 2181: @c 
 2182: @var{dir}をインクルードパスの後に追加します.複数回の呼び出しで累積されます.
 2183: 
 2184: @item --prepend-include=@var{dir}
 2185: @item -B @var{dir}
 2186: @c Prepend @var{dir} to the include path.  Multiple invocations accumulate.
 2187: @c 
 2188: @var{dir}をインクルードパスの前に追加します.複数回の呼び出しで累積され
 2189: ます.
 2190: @end table
 2191: 
 2192: 
 2193: @c ========================================= Initialization and Output Files.
 2194: 
 2195: @node Setup
 2196: @c @chapter Initialization and Output Files
 2197: @chapter 出力ファイルの初期化
 2198: 
 2199: @c Autoconf-generated @command{configure} scripts need some information about
 2200: @c how to initialize, such as how to find the package's source files and
 2201: @c about the output files to produce.  The following sections describe the
 2202: @c initialization and the creation of output files.
 2203: @c 
 2204: Autoconfが生成した@command{configure}スクリプトは,パッケージのソースファ
 2205: イルの見つけ方,そして,生成する出力ファイルといった,初期化の方法の情報
 2206: を必要とします.以下のセクションで,初期化と出力ファイルの作成について述
 2207: べます.
 2208: 
 2209: @menu
 2210: * Initializing configure::      Option processing etc.
 2211: * Notices::                     Copyright, version numbers in @command{configure}
 2212: * Input::                       Where Autoconf should find files
 2213: * Output::                      Outputting results from the configuration
 2214: * Configuration Actions::       Preparing the output based on results
 2215: * Configuration Files::         Creating output files
 2216: * Makefile Substitutions::      Using output variables in @file{Makefile}s
 2217: * Configuration Headers::       Creating a configuration header file
 2218: * Configuration Commands::      Running arbitrary instantiation commands
 2219: * Configuration Links::         Links depending on the configuration
 2220: * Subdirectories::              Configuring independent packages together
 2221: * Default Prefix::              Changing the default installation prefix
 2222: @end menu
 2223: 
 2224: @node Initializing configure
 2225: @c @section Initializing @command{configure}
 2226: @section @command{configure}の初期化
 2227: 
 2228: @c Every @command{configure} script must call @code{AC_INIT} before doing
 2229: @c anything else.  The only other required macro is @code{AC_OUTPUT}
 2230: @c (@pxref{Output}).
 2231: @c 
 2232: すべての@command{configure}スクリプトファイルでは,他の何よりも前に,
 2233: @code{AC_INIT}を呼び出す必要があります.そのほかに必要なマクロは 
 2234: @code{AC_OUTPUT}だけです(@pxref{Output}).
 2235: 
 2236: @defmac AC_INIT (@var{package}, @var{version}, @ovar{bug-report}, @ovar{tarname})
 2237: @acindex INIT
 2238: @c Process any command-line arguments and perform various initializations
 2239: @c and verifications.
 2240: @c 
 2241: あらゆるコマンドライン引数を処理し,様々な初期化と検証を実行します.
 2242: 
 2243: @c Set the name of the @var{package} and its @var{version}.  These are
 2244: @c typically used in @option{--version} support, including that of
 2245: @c @command{configure}.  The optional argument @var{bug-report} should be
 2246: @c the email to which users should send bug reports.  The package
 2247: @c @var{tarname} differs from @var{package}: the latter designates the full
 2248: @c package name (e.g., @samp{GNU Autoconf}), while the former is meant for
 2249: @c distribution tar ball names (e.g., @samp{autoconf}).  It defaults to
 2250: @c @var{package} with @samp{GNU } stripped, lower-cased, and all characters
 2251: @c other than alphanumerics and underscores are changed to @samp{-}.
 2252: @c 
 2253: @var{package}の名前とその@var{version}を設定します.これらは通常,
 2254: @command{configure}に含まれる@option{--version}のサポートで使用されます.
 2255: オプションの引数@var{bug-report-address}は,ユーザがバグレポートを送る電
 2256: 子メールアドレスにすべきです.パッケージの@var{tarname}は@var{package}と
 2257: は異なります.後者はパッケージの完全な名前を示します(例えば,@samp{GNU
 2258: Autoconf})が,前者は配布物のtar ballの名前(例えば,@samp{autoconf})を意
 2259: 味します.デフォルトは@var{package}から@samp{GNU }を取り除き,小文字にし,
 2260: そして英数文字以外を全て@samp{-}にしたものです.
 2261: 
 2262: @c It is preferable that the arguments of @code{AC_INIT} be static, i.e.,
 2263: @c there should not be any shell computation, but they can be computed by
 2264: @c M4.
 2265: @c 
 2266: @code{AC_INIT}の引数は静的にすることが望ましく,すなわちシェルで演算して
 2267: 求めるべきではありませんが,M4で演算してもかまいません.
 2268: 
 2269: @c The following M4 macros (e.g., @code{AC_PACKAGE_NAME}), output variables
 2270: @c (e.g., @code{PACKAGE_NAME}), and preprocessor symbols (e.g.,
 2271: @c @code{PACKAGE_NAME}) are defined by @code{AC_INIT}:
 2272: @c 
 2273: 以下のM4マクロ(例えば,@code{AC_PACKAGE_NAME})は,@code{AC_INIT}によって,
 2274: 出力変数(例えば,@code{PACKAGE_NAME})を出力し,プリプロセッサシンボル(例
 2275: えば,@code{PACKAGE_NAME})を定義します.
 2276: 
 2277: @table @asis
 2278: @item @code{AC_PACKAGE_NAME}, @code{PACKAGE_NAME}
 2279: @acindex PACKAGE_NAME
 2280: @ovindex PACKAGE_NAME
 2281: @cvindex PACKAGE_NAME
 2282: @c Exactly @var{package}.
 2283: @c 
 2284: そのまま@var{package}になります.
 2285: 
 2286: @item @code{AC_PACKAGE_TARNAME}, @code{PACKAGE_TARNAME}
 2287: @acindex PACKAGE_TARNAME
 2288: @ovindex PACKAGE_TARNAME
 2289: @cvindex PACKAGE_TARNAME
 2290: @c Exactly @var{tarname}.
 2291: @c 
 2292: そのまま@var{tarname}になります.
 2293: 
 2294: @item @code{AC_PACKAGE_VERSION}, @code{PACKAGE_VERSION}
 2295: @acindex PACKAGE_VERSION
 2296: @ovindex PACKAGE_VERSION
 2297: @cvindex PACKAGE_VERSION
 2298: @c Exactly @var{version}.
 2299: @c 
 2300: そのまま@var{version}になります.
 2301: 
 2302: @item @code{AC_PACKAGE_STRING}, @code{PACKAGE_STRING}
 2303: @acindex PACKAGE_STRING
 2304: @ovindex PACKAGE_STRING
 2305: @cvindex PACKAGE_STRING
 2306: @c Exactly @samp{@var{package} @var{version}}.
 2307: @c 
 2308: そのまま@samp{@var{package} @var{version}}になります.
 2309: 
 2310: @item @code{AC_PACKAGE_BUGREPORT}, @code{PACKAGE_BUGREPORT}
 2311: @acindex PACKAGE_BUGREPORT
 2312: @ovindex PACKAGE_BUGREPORT
 2313: @cvindex PACKAGE_BUGREPORT
 2314: @c Exactly @var{bug-report}.
 2315: @c 
 2316: そのまま@var{bug-report}になります.
 2317: @end table
 2318: @end defmac
 2319: 
 2320: 
 2321: @node Notices
 2322: @c @section Notices in @command{configure}
 2323: @section @command{configure}の注意事項
 2324: 
 2325: @c The following macros manage version numbers for @command{configure}
 2326: @c scripts.  Using them is optional.
 2327: @c 
 2328: 以下のマクロは,@command{configure}スクリプトのバージョンナンバーを管理
 2329: します.それはオプションとして使用されます.
 2330: 
 2331: @c FIXME: AC_PREREQ should not be here
 2332: @defmac AC_PREREQ (@var{version})
 2333: @acindex PREREQ
 2334: @cindex Version
 2335: @c Ensure that a recent enough version of Autoconf is being used.  If the
 2336: @c version of Autoconf being used to create @command{configure} is earlier
 2337: @c than @var{version}, print an error message to the standard error output
 2338: @c and do not create @command{configure}.  For example:
 2339: @c 
 2340: 使用しているAutoconfのバージョンが十分新しいことを保証します. 
 2341: @command{configure}の作成に使用されるAutoconfのバージョンが,
 2342: @var{version}以前の場合,標準エラー出力にエラーメッセージを出力し,
 2343: @command{configure}を作成しません.例えば以下のようにします.
 2344: 
 2345: @example
 2346: AC_PREREQ(@value{VERSION})
 2347: @end example
 2348: 
 2349: @c This macro is the only macro that may be used before @code{AC_INIT}, but
 2350: @c for consistency, you are invited not to do so.
 2351: @c 
 2352: このマクロは,@code{AC_INIT}以前に使用可能な唯一のマクロですが,整合性の
 2353: ためにはそうすべきではありません.
 2354: @end defmac
 2355: 
 2356: @defmac AC_COPYRIGHT (@var{copyright-notice})
 2357: @acindex COPYRIGHT
 2358: @cindex Copyright Notice
 2359: @c State that, in addition to the Free Software Foundation's copyright on
 2360: @c the Autoconf macros, parts of your @command{configure} are covered by the
 2361: @c @var{copyright-notice}.
 2362: @c 
 2363: AutoconfマクロへのFree Software Foundationの著作権に加えて,
 2364: @command{configure}について@var{copyright-notice}でカバーしたい部分を宣
 2365: 言してください.
 2366: 
 2367: @c The @var{copyright-notice} will show up in both the head of
 2368: @c @command{configure} and in @samp{configure --version}.
 2369: @c 
 2370: @var{copyright-notice}は,@command{configure}の先頭と,@samp{configure
 2371: --version}の両方で表示されます.
 2372: @end defmac
 2373: 
 2374: 
 2375: @defmac AC_REVISION (@var{revision-info})
 2376: @acindex REVISION
 2377: @cindex Revision
 2378: @c Copy revision stamp @var{revision-info} into the @command{configure}
 2379: @c script, with any dollar signs or double-quotes removed.  This macro lets
 2380: @c you put a revision stamp from @file{configure.ac} into @command{configure}
 2381: @c without @sc{rcs} or @code{cvs} changing it when you check in
 2382: @c @command{configure}.  That way, you can determine easily which revision of
 2383: @c @file{configure.ac} a particular @command{configure} corresponds to.
 2384: @c 
 2385: リビジョンスタンプ@var{revision-info}を,ドル記号やダブルクォートを削除
 2386: して@command{configure}スクリプトにコピーします.このマクロは,
 2387: @command{configure}をチェックインしたときに@sc{rcs}や@code{cvs}がリビジョ
 2388: ンスタンプを変えなくても,@file{configure.ac}から@command{configure}にそ
 2389: れを書き込みます.そうすることで,特定の@command{configure}に対応する
 2390: @file{configure.ac}のリビジョンが簡単に決定可能になります.
 2391: 
 2392: @c For example, this line in @file{configure.ac}:
 2393: @c 
 2394: 例えば,以下の行を@file{configure.ac}に書いたとします.
 2395: 
 2396: @c The asis prevents RCS from changing the example in the manual.
 2397: @example
 2398: AC_REVISION($@asis{Revision: 1.30 }$)
 2399: @end example
 2400: 
 2401: @noindent
 2402: @c produces this in @command{configure}:
 2403: @c 
 2404: これで,@command{configure}は以下のようになります.
 2405: 
 2406: @example
 2407: #! /bin/sh
 2408: # From configure.ac Revision: 1.30
 2409: @end example
 2410: @end defmac
 2411: 
 2412: 
 2413: @node Input
 2414: @c @section Finding @command{configure} Input
 2415: @section @command{configure}の入力を見つける
 2416: 
 2417: 
 2418: @defmac AC_CONFIG_SRCDIR (@var{unique-file-in-source-dir})
 2419: @acindex CONFIG_SRCDIR
 2420: @c @var{unique-file-in-source-dir} is some file that is in the package's
 2421: @c source directory; @command{configure} checks for this file's existence to
 2422: @c make sure that the directory that it is told contains the source code in
 2423: @c fact does.  Occasionally people accidentally specify the wrong directory
 2424: @c with @option{--srcdir}; this is a safety check.  @xref{configure
 2425: @c Invocation}, for more information.
 2426: @c 
 2427: @var{unique-file-in-source-dir}は,パッケージのソースディレクトリにある
 2428: ファイルです.@command{configure}は,伝えられたディレクトリに実際にソー
 2429: スコードが含まれていることを確認するために,このファイルの存在を調査しま
 2430: す.@option{--srcdir}で間違ったディレクトリを指定してしまう人もいます.
 2431: これは安全性の調査です.詳細は,@xref{configure Invocation}.
 2432: @end defmac
 2433: 
 2434: 
 2435: @c FIXME: Remove definitively once --install explained.
 2436: @c
 2437: @c Small packages may store all their macros in @code{aclocal.m4}.  As the
 2438: @c set of macros grows, or for maintenance reasons, a maintainer may prefer
 2439: @c to split the macros in several files.  In this case, Autoconf must be
 2440: @c told which files to load, and in which order.
 2441: @c
 2442: @c @defmac AC_INCLUDE (@var{file}@dots{})
 2443: @c @acindex INCLUDE
 2444: @c @c FIXME: There is no longer shell globbing.
 2445: @c Read the macro definitions that appear in the listed files.  A list of
 2446: @c space-separated filenames or shell globbing patterns is expected.  The
 2447: @c files will be read in the order they're listed.
 2448: @c
 2449: @c Because the order of definition of macros is important (only the last
 2450: @c definition of a macro is used), beware that it is @code{AC_INIT} that
 2451: @c loads @file{acsite.m4} and @file{aclocal.m4}.  Note that
 2452: @c @code{AC_INCLUDE}ing a file before @code{AC_INIT} or within
 2453: @c @file{aclocal.m4} is different from doing so after @code{AC_INIT}: in
 2454: @c the latter case, non-macro lines from included files may end up in the
 2455: @c @file{configure} script, whereas in the former case, they'd be discarded
 2456: @c just like any text that appear before @code{AC_INIT}.
 2457: @c @end defmac
 2458: 
 2459: @c Packages that do manual configuration or use the @code{install} program
 2460: @c might need to tell @command{configure} where to find some other shell
 2461: @c scripts by calling @code{AC_CONFIG_AUX_DIR}, though the default places
 2462: @c it looks are correct for most cases.
 2463: @c 
 2464: 手動でのコンフィグレーションや,@code{install}プログラムを使用するパッケー
 2465: ジは,デフォルトの位置でほとんど正しいのですが,@code{AC_CONFIG_AUX_DIR} 
 2466: を呼び出して,他のシェルスクリプトを探す場所を@command{configure}に教え
 2467: る必要があるかもしれません.
 2468: 
 2469: @defmac AC_CONFIG_AUX_DIR (@var{dir})
 2470: @acindex CONFIG_AUX_DIR
 2471: @c Use the auxiliary build tools (e.g., @file{install-sh},
 2472: @c @file{config.sub}, @file{config.guess}, Cygnus @command{configure},
 2473: @c Automake and Libtool scripts etc.) that are in directory @var{dir}.
 2474: @c These are auxiliary files used in configuration.  @var{dir} can be
 2475: @c either absolute or relative to @file{@var{srcdir}}.  The default is
 2476: @c @file{@var{srcdir}} or @file{@var{srcdir}/..} or
 2477: @c @file{@var{srcdir}/../..}, whichever is the first that contains
 2478: @c @file{install-sh}.  The other files are not checked for, so that using
 2479: @c @code{AC_PROG_INSTALL} does not automatically require distributing the
 2480: @c other auxiliary files.  It checks for @file{install.sh} also, but that
 2481: @c name is obsolete because some @code{make} have a rule that creates
 2482: @c @file{install} from it if there is no @file{Makefile}.
 2483: @c 
 2484: ディレクトリ@var{dir}にある補助的なビルドツール(例えば,
 2485: @file{install-sh},@file{config.sub}, @file{config.guess},そしてCygnus
 2486: @command{configure}スクリプト)を使用します.@var{dir}は,絶対パスまたは
 2487: @file{@var{srcdir}}の相対パスが可能です.デフォルトは 
 2488: @file{@var{srcdir}}または@file{@var{srcdir}/..}または
 2489: @file{@var{srcdir}/../..}で,@file{install-sh}を含んでいる最初にところで
 2490: す.他のファイルは調査しないので,@code{AC_PROG_INSTALL}を使用することで,
 2491: 他の補助ファイルを配布する必要は自動的になくなります.また,それは 
 2492: @file{install.sh}も調査しますが,@code{make}プログラムには, 
 2493: @file{Makefile}が無い場合,それから@file{install}を作る規則を持っている
 2494: ものあるので,その名前は時代遅れです.
 2495: @end defmac
 2496: 
 2497: 
 2498: @node Output
 2499: @c @section Outputting Files
 2500: @section 出力ファイルを生成する
 2501: 
 2502: @c Every Autoconf script, e.g., @file{configure.ac}, should finish by
 2503: @c calling @code{AC_OUTPUT}.  That is the macro that generates
 2504: @c @file{config.status}, which will create the @file{Makefile}s and any
 2505: @c other files resulting from configuration.  This is the only required macro besides
 2506: @c @code{AC_INIT} (@pxref{Input}).
 2507: @c 
 2508: すべてのAutoconfスクリプト,例えば@file{configure.ac}は,
 2509: @code{AC_OUTPUT}の呼び出しで終えるべきです.それは,コンフィグレーション
 2510: の結果生成される@file{Makefile}とその他のファイルを生成する,
 2511: @file{config.status}を生成するマクロです.@code{AC_INIT}以外で唯一必要と
 2512: されるマクロです(@pxref{Input}).
 2513: 
 2514: @defmac AC_OUTPUT
 2515: @acindex OUTPUT
 2516: @cindex Instantiation
 2517: @c Generate @file{config.status} and launch it.  Call this macro once, at
 2518: @c the end of @file{configure.ac}.
 2519: @c 
 2520: @file{config.status}を生成し,その実行を開始します.@file{configure.ac} 
 2521: の最後にこのマクロを一度呼び出してください.
 2522: 
 2523: @c @file{config.status} will perform all the configuration actions: all the
 2524: @c output files (see @ref{Configuration Files}, macro
 2525: @c @code{AC_CONFIG_FILES}), header files (see @ref{Configuration Headers},
 2526: @c macro @code{AC_CONFIG_HEADERS}), commands (see @ref{Configuration
 2527: @c Commands}, macro @code{AC_CONFIG_COMMANDS}), links (see
 2528: @c @ref{Configuration Links}, macro @code{AC_CONFIG_LINKS}), subdirectories
 2529: @c to configure (see @ref{Subdirectories}, macro @code{AC_CONFIG_SUBDIRS})
 2530: @c are honored.
 2531: @c 
 2532: @file{config.status}は,全てのコンフィグレーション作業を実行します.全て
 2533: の出力ファイル(@ref{Configuration Files}とマクロ@code{AC_CONFIG_FILES}を
 2534: 参照してください),ヘッダファイル(@ref{Configuration Commands}とマクロ
 2535: @code{AC_CONFIG_COMMANDS}を参照してください),コマンド
 2536: (@ref{Configuration Commands}とマクロ@code{AC_CONFIG_COMMANDS}を参照して
 2537: ください),リンク(@ref{Configuration Links}とマクロ
 2538: @code{AC_CONFIG_LINKS}を参照してください),サブディレクトリ
 2539: (@ref{Configuration Links}とマクロ@code{AC_CONFIG_LINKS}を参照してくださ
 2540: い)が尊重されます.
 2541: @end defmac
 2542: 
 2543: @c Historically, the usage of @code{AC_OUTPUT} was somewhat different.
 2544: @c @xref{Obsolete Macros}, for a description of the arguments that
 2545: @c @code{AC_OUTPUT} used to support.
 2546: @c 
 2547: 歴史的には,@code{AC_OUTPUT}の使用はいくぶん異なっています.
 2548: @code{AC_OUTPUT}がサポートする引数の記述は,@xref{Obsolete Macros}.
 2549: 
 2550: 
 2551: @c If you run @command{make} in subdirectories, you should run it using the
 2552: @c @code{make} variable @code{MAKE}.  Most versions of @command{make} set
 2553: @c @code{MAKE} to the name of the @command{make} program plus any options it
 2554: @c was given.  (But many do not include in it the values of any variables
 2555: @c set on the command line, so those are not passed on automatically.)
 2556: @c Some old versions of @command{make} do not set this variable.  The
 2557: @c following macro allows you to use it even with those versions.
 2558: @c 
 2559: サブディレクトリで@command{make}を実行する場合,@command{make}を変数 
 2560: @code{MAKE}を使用して実行すべきです.たいていの@command{make}のバージョ
 2561: ンは,@code{MAKE}を@command{make}プログラムと,それに与えるあらゆるオプ
 2562: ションを追加して設定します.(しかし,その中にコマンドラインで設定された
 2563: 値を含まないものも多いので,それらは自動的に渡されません.) 古いバージョ
 2564: ンの@command{make}には,変数を設定しないものもあります.以下のマクロでそ
 2565: れらのバージョンでも使用可能になります.
 2566: 
 2567: @defmac AC_PROG_MAKE_SET
 2568: @acindex PROG_MAKE_SET
 2569: @ovindex SET_MAKE
 2570: @c If @command{make} predefines the variable @code{MAKE}, define output
 2571: @c variable @code{SET_MAKE} to be empty.  Otherwise, define @code{SET_MAKE}
 2572: @c to contain @samp{MAKE=make}.  Calls @code{AC_SUBST} for @code{SET_MAKE}.
 2573: @c 
 2574: @code{make}が変数@code{MAKE}を前もって定義する場合,出力変数 
 2575: @code{SET_MAKE}は空で定義されます.それ以外では,@code{SET_MAKE}は 
 2576: @samp{MAKE=make}を含みます.@code{SET_MAKE}に対して@code{AC_SUBST}を呼び
 2577: 出して下さい.
 2578: @end defmac
 2579: 
 2580: @c If you use this macro, place a line like this in each @file{Makefile.in}
 2581: @c that runs @code{MAKE} on other directories:
 2582: @c 
 2583: このマクロを使用する場合,@code{MAKE}を実行する他のディレクトリのそれぞ
 2584: れの@file{Makefile.in}に以下の行を書き込んで下さい.
 2585: 
 2586: @example
 2587: @@SET_MAKE@@
 2588: @end example
 2589: 
 2590: 
 2591: 
 2592: @node Configuration Actions
 2593: @c @section Performing Configuration Actions
 2594: @section コンフィグレーション作業の実行
 2595: 
 2596: @c @file{configure} is designed so that it appears to do everything itself,
 2597: @c but there is actually a hidden slave: @file{config.status}.
 2598: @c @file{configure} is in charge of examining your system, but it is
 2599: @c @file{config.status} that actually takes the proper actions based on the
 2600: @c results of @file{configure}.  The most typical task of
 2601: @c @file{config.status} is to @emph{instantiate} files.
 2602: @c 
 2603: @file{configure}は,自分が行なっていることが全部分かるように設計されてい
 2604: ますが,隠されている従属物も実際にはあります.それは,
 2605: @file{config.status}です.@file{configure}はシステムの調査を担当していま
 2606: すが,@file{configure}の結果を基に適切な動作を実際に引き受けるのは,
 2607: @file{config.status}です.@file{config.status}のほとんどの典型的な作業は,
 2608: ファイルを@emph{実際に作成する}ことです.
 2609: 
 2610: @c This section describes the common behavior of the four standard
 2611: @c instantiating macros: @code{AC_CONFIG_FILES}, @code{AC_CONFIG_HEADERS},
 2612: @c @code{AC_CONFIG_COMMANDS} and @code{AC_CONFIG_LINKS}.  They all
 2613: @c have this prototype:
 2614: @c 
 2615: このセクションでは,実際に何かを作成する基本的な4つのマクロの一般的な動
 2616: 作を説明します.それらは,@code{AC_CONFIG_FILES},
 2617: @code{AC_CONFIG_HEADERS},@code{AC_CONFIG_COMMANDS},そして
 2618: @code{AC_CONFIG_LINKS}です.それらは全て以下のものが原型となっています.
 2619: 
 2620: @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
 2621: @c awful.
 2622: @example
 2623: AC_CONFIG_FOOS(@var{tag}@dots{}, [@var{commands}], [@var{init-cmds}])
 2624: @end example
 2625: 
 2626: @noindent
 2627: @c where the arguments are:
 2628: @c 
 2629: ここでの引数は,以下のとおりです.
 2630: 
 2631: @table @var
 2632: @item @var{tag}@dots{}
 2633: @c A whitespace-separated list of tags, which are typically the names of
 2634: @c the files to instantiate.
 2635: @c 
 2636: 空白で分けられたタグのリストで,それらは通常,実際に作成されるファイル名
 2637: です.
 2638: 
 2639: @c You are encouraged to use literals as @var{tags}.  In particular, you
 2640: @c should avoid
 2641: @c 
 2642: @var{tags}として,リテラルを使用することを勧めます.特に,以下は避けた方
 2643: が良いでしょう.
 2644: 
 2645: @example
 2646: @dots{} && my_foos="$my_foos fooo"
 2647: @dots{} && my_foos="$my_foos foooo"
 2648: AC_CONFIG_FOOS($my_foos)
 2649: @end example
 2650: 
 2651: @noindent
 2652: @c and use this instead:
 2653: @c 
 2654: この代わりに以下のようにしてください.
 2655: 
 2656: @example
 2657: @dots{} && AC_CONFIG_FOOS(fooo)
 2658: @dots{} && AC_CONFIG_FOOS(foooo)
 2659: @end example
 2660: 
 2661: @c The macros @code{AC_CONFIG_FILES} and @code{AC_CONFIG_HEADERS} use
 2662: @c special @var{tag}s: they may have the form @samp{@var{output}} or
 2663: @c @samp{@var{output}:@var{inputs}}.  The file @var{output} is instantiated
 2664: @c from its templates, @var{inputs} (defaulting to @samp{@var{output}.in}).
 2665: @c 
 2666: マクロ@code{AC_CONFIG_FILES}と@code{AC_CONFIG_HEADERS}は,特別な
 2667: @var{tag}を使用します.それらは,@samp{@var{output}}や
 2668: @samp{@var{output}:@var{inputs}}にすることが可能です.ファイル
 2669: @var{output}は,そのテンプレート@var{inputs}から実際に作成されます(デフォ
 2670: ルトは@samp{@var{output}.in}).
 2671: 
 2672: @c For instance
 2673: @c @samp{AC_CONFIG_FILES(Makefile:boiler/top.mk:boiler/bot.mk)} asks for
 2674: @c the creation of @file{Makefile} that will be the expansion of the
 2675: @c output variables in the concatenation of @file{boiler/top.mk} and
 2676: @c @file{boiler/bot.mk}.
 2677: @c 
 2678: 例えば,@samp{AC_CONFIG_FILES(Makefile:boiler/top.mk:boiler/bot.mk)}は,
 2679: @file{boiler/top.mk}と@file{boiler/bot.mk}を繋げたものに,出力変数を展開
 2680: した@file{Makefile}を作成するよう要求します.
 2681: 
 2682: @c The special value @samp{-} might be used to denote the standard output
 2683: @c when used in @var{output}, or the standard input when used in the
 2684: @c @var{inputs}.  You most probably don't need to use this in
 2685: @c @file{configure.ac}, but it is convenient when using the command line
 2686: @c interface of @file{./config.status}, see @ref{config.status Invocation},
 2687: @c for more details.
 2688: @c 
 2689: 特殊な値@samp{-}は,@var{output}で使用されているときは標準出力を,
 2690: @var{inputs}で使用されているときは標準入力を示すために使用されます.おそ
 2691: らく@file{configure.ac}でこれを使用する必要はほとんど無いと思いますが,
 2692: @file{./config.status}のコマンドラインインターフェースを使用しているとき
 2693: は便利でしょう.詳細は,@ref{config.status Invocation},を参照してくださ
 2694: い.
 2695: 
 2696: @c The @var{inputs} may be absolute or relative filenames.  In the latter
 2697: @c case they are first looked for in the build tree, and then in the source
 2698: @c tree.
 2699: @c 
 2700: @var{inputs}は,絶対パスまたは相対パスを用いたファイル名が可能です.後者
 2701: の場合,それは最初にビルドツリーで探され,その後でソースツリーで探されま
 2702: す.
 2703: 
 2704: @item commands
 2705: @c Shell commands output literally into @file{config.status}, and
 2706: @c associated with a tag that the user can use to tell @file{config.status}
 2707: @c which the commands to run.  The commands are run each time a @var{tag}
 2708: @c request is given to @file{config.status}, typically each time the file
 2709: @c @file{@var{tag}} is created.
 2710: @c 
 2711: @file{config.status}にそのまま出力されるシェルコマンドで,実行するコマン
 2712: ドを@file{config.status}に伝えるためにユーザが使用することが可能な
 2713: @var{tag}に関連付けされています.@var{tag}の要求が@file{config.status}に
 2714: 与えられるたびにコマンドが実行され,通常はファイル@file{@var{tag}}が作成
 2715: されるたびになります.
 2716: 
 2717: @c The variables set during the execution of @command{configure} are
 2718: @c @emph{not} available here: you first need to set them via the
 2719: @c @var{init-cmds}.  Nonetheless the following variables are precomputed:
 2720: @c 
 2721: @command{configure}の実行中に設定される変数は,ここでは利用@emph{不可能} 
 2722: です.それらを最初に@var{init-cmds}で設定する必要があります.それにもか
 2723: かわらず,以下の変数は前もって求められます.
 2724: 
 2725: @table @code
 2726: @item srcdir
 2727: @c The path from the top build directory to the top source directory.  This
 2728: @c is what @command{configure}'s option @option{--srcdir} sets.
 2729: @c 
 2730: ビルドディレクトリのトップからソースディレクトリのトップへのパスです.こ
 2731: れは,@command{configure}のオプション@option{--srcdir}で設定されるもので
 2732: す.
 2733: 
 2734: @item ac_top_srcdir
 2735: @c The path from the current build directory to the top source directory.
 2736: @c 
 2737: 現在のビルドディレクトリからソースディレクトリのトップへのパスです.
 2738: 
 2739: 
 2740: @item ac_top_builddir
 2741: @c The path from the current build directory to the top build directory.
 2742: @c It can be empty, or else ends with a slash, so that you may concatenate
 2743: @c it.
 2744: @c 
 2745: 現在のビルドディレクトリからビルドディレクトリのトップへのパスです.連結
 2746: できるように,それを空にしたり,スラッシュで終えることが可能です.
 2747: 
 2748: @item ac_srcdir
 2749: @c The path from the current build directory to the corresponding source
 2750: @c directory.
 2751: @c 
 2752: 現在のビルドディレクトリから対応するソースディレクトリへのパスです.
 2753: @end table
 2754: 
 2755: @noindent
 2756: @c The @dfn{current} directory refers to the directory (or
 2757: @c pseudo-directory) containing the input part of @var{tags}.  For
 2758: @c instance, running
 2759: @c 
 2760: @dfn{現在の}ディレクトリは,@var{tags}の一部の入力が含まれるディレクトリ
 2761: (または疑似ディレクトリ)を参照します.例えば以下を実行したとします.
 2762: 
 2763: @example
 2764: AC_CONFIG_COMMANDS([deep/dir/out:in/in.in], [@dots{}], [@dots{}])
 2765: @end example
 2766: 
 2767: @noindent
 2768: @c  with @option{--srcdir=../package} produces the following values:
 2769: @c 
 2770: @option{--srcdir=../package}を用いると,以下の値が生成されます.
 2771: 
 2772: @example
 2773: # Argument of --srcdir
 2774: srcdir='../package'
 2775: # Reversing deep/dir
 2776: ac_top_builddir='../../'
 2777: # Concatenation of $ac_top_builddir and srcdir
 2778: ac_top_srcdir='../../../package'
 2779: # Concatenation of $ac_top_srcdir and deep/dir
 2780: ac_srcdir='../../../package/deep/dir'
 2781: @end example
 2782: 
 2783: @noindent
 2784: @c independently of @samp{in/in.in}.
 2785: @c 
 2786: @samp{in/in.in}とは無関係です.
 2787: 
 2788: @item init-cmds
 2789: @c Shell commands output @emph{unquoted} near the beginning of
 2790: @c @file{config.status}, and executed each time @file{config.status} runs
 2791: @c (regardless of the tag).  Because they are unquoted, for example,
 2792: @c @samp{$var} will be output as the value of @code{var}.  @var{init-cmds}
 2793: @c is typically used by @file{configure} to give @file{config.status} some
 2794: @c variables it needs to run the @var{commands}.
 2795: @c 
 2796: @file{config.status}の先頭付近に@emph{引用符で囲まれることなく}出力され
 2797: るシェルコマンドで,@file{config.status}が実行されるたびに(@var{tag}に関
 2798: 係なく)実行されます.引用符で囲まれていないので,例えば,@samp{$var}は
 2799: @code{var}の値として出力されます.@var{init-cmds}は通常,@var{commands} 
 2800: を実行するために必要な同じ変数を@file{config.status}に与えるために,
 2801: @file{configure}で使用されます.
 2802: 
 2803: @c You should be extremely cautious in your variable names: all the
 2804: @c @var{init-cmds} share the same name space and may overwrite each other
 2805: @c in unpredictable ways.  Sorry@enddots{}
 2806: @c 
 2807: 変数名では特に注意すべきです.すべての@var{init-cmds}は同じ名前空間を共
 2808: 有し,それぞれ予測できない方法で上書きされるかもしれません.残念です
 2809: @enddots{}
 2810: @end table
 2811: 
 2812: @c All these macros can be called multiple times, with different
 2813: @c @var{tag}s, of course!
 2814: @c 
 2815: 当然ですが,すべてのこれらのマクロは,異なる@var{tag}を用いると,何回で
 2816: も呼び出すことが可能です!
 2817: 
 2818: 
 2819: @node Configuration Files
 2820: @c @section Creating Configuration Files
 2821: @section コンフィグレーションファイルの作成
 2822: 
 2823: @c Be sure to read the previous section, @ref{Configuration Actions}.
 2824: @c 
 2825: きちんとこの前の章を読んでくださいね,@ref{Configuration Actions}.
 2826: 
 2827: @defmac AC_CONFIG_FILES (@var{file}@dots{}, @ovar{cmds}, @ovar{init-cmds})
 2828: @acindex CONFIG_FILES
 2829: @c Make @code{AC_OUTPUT} create each @file{@var{file}} by copying an input
 2830: @c file (by default @file{@var{file}.in}), substituting the output variable
 2831: @c values.
 2832: @c 
 2833: 出力変数の値を置換しながら入力ファイル(デフォルトは@file{@var{file}.in}) 
 2834: をコピーすることで,@code{AC_OUTPUT}でそれぞれの@file{@var{file}}を作成
 2835: するようにします.
 2836: @c Before we used to have this feature, which was later rejected
 2837: @c because it complicates the write of Makefiles:
 2838: @c If the file would be unchanged, it is left untouched, to preserve
 2839: @c timestamp.
 2840: @c 
 2841: @c This macro is one of the instantiating macros; see @ref{Configuration
 2842: @c Actions}.  @xref{Makefile Substitutions}, for more information on using
 2843: @c output variables.  @xref{Setting Output Variables}, for more information
 2844: @c on creating them.  This macro creates the directory that the file is in
 2845: @c if it doesn't exist.  Usually, @file{Makefile}s are created this way,
 2846: @c but other files, such as @file{.gdbinit}, can be specified as well.
 2847: @c 
 2848: このマクロは,実際に何かを作成するマクロの一つです.@ref{Configuration
 2849: Actions}を参照してください.出力変数を使用することの詳細な情報は,
 2850: @xref{Makefile Substitutions}.  それらを作成するための詳細な情報は,
 2851: @xref{Setting Output Variables}.  これらのマクロは,存在しない場合はファ
 2852: イルを配置するディレクトリを作成します.通常,@file{Makefile}はこの方法
 2853: で作成されますが,@file{.gdbinit}のようなそれ以外のファイルは,指定され
 2854: ていることもあります.
 2855: 
 2856: @c Typical calls to @code{AC_CONFIG_FILES} look like this:
 2857: @c 
 2858: 一般的な@code{AC_CONFIG_FILES}の呼び出しは,以下のようになります.
 2859: 
 2860: @example
 2861: AC_CONFIG_FILES([Makefile src/Makefile man/Makefile X/Imakefile])
 2862: AC_CONFIG_FILES([autoconf], [chmod +x autoconf])
 2863: @end example
 2864: 
 2865: @c You can override an input file name by appending to @var{file} a
 2866: @c colon-separated list of input files.  Examples:
 2867: @c 
 2868: コロンで分けられた入力ファイル@var{file}のリストを入力ファイルに追加する
 2869: ことで,優先可能です.例えば以下のようにします.
 2870: 
 2871: @example
 2872: AC_CONFIG_FILES([Makefile:boiler/top.mk:boiler/bot.mk]
 2873:                 [lib/Makefile:boiler/lib.mk])
 2874: @end example
 2875: 
 2876: @noindent
 2877: @c Doing this allows you to keep your file names acceptable to MS-DOS, or
 2878: @c to prepend and/or append boilerplate to the file.
 2879: @c 
 2880: こうすることで,ファイル名をMS-DOSが受け入れ可能なままにしたり,ファイル
 2881: に常套句を前置したり後置したりすることが可能となります.
 2882: @end defmac
 2883: 
 2884: 
 2885: 
 2886: @node Makefile Substitutions
 2887: @c @section Substitutions in Makefiles
 2888: @section Makefileへの代入
 2889: 
 2890: @c Each subdirectory in a distribution that contains something to be
 2891: @c compiled or installed should come with a file @file{Makefile.in}, from
 2892: @c which @command{configure} will create a @file{Makefile} in that directory.
 2893: @c To create a @file{Makefile}, @command{configure} performs a simple variable
 2894: @c substitution, replacing occurrences of @samp{@@@var{variable}@@} in
 2895: @c @file{Makefile.in} with the value that @command{configure} has determined
 2896: @c for that variable.  Variables that are substituted into output files in
 2897: @c this way are called @dfn{output variables}.  They are ordinary shell
 2898: @c variables that are set in @command{configure}.  To make @command{configure}
 2899: @c substitute a particular variable into the output files, the macro
 2900: @c @code{AC_SUBST} must be called with that variable name as an argument.
 2901: @c Any occurrences of @samp{@@@var{variable}@@} for other variables are
 2902: @c left unchanged.  @xref{Setting Output Variables}, for more information
 2903: @c on creating output variables with @code{AC_SUBST}.
 2904: @c 
 2905: コンパイルされたりインストールされたりするものを含んでいる,配布物のそれ
 2906: ぞれのサブディレクトリには,@command{configure}がそのディレクトリに
 2907: @file{Makefile}を作成するためのファイル@file{Makefile.in}を配置すべきで
 2908: す.@file{Makefile}を作成するために,@file{Makefile.in}の
 2909: @samp{@@@var{variable}@@}を@command{configure}が決定したその変数の値に置
 2910: 換しながら,@command{configure}は単純な変数の代入を行います.このように
 2911: して出力ファイルに代入される変数は,@dfn{出力変数}と呼ばれます.それらは
 2912: @command{configure}で設定される普通のシェル変数です.@command{configure}
 2913: が特定の変数を出力ファイルに代入するように,変数名を引数として
 2914: @code{AC_SUBST}マクロを呼び出す必要があります.他の変数に対する
 2915: @samp{@@@var{variable}@@}が変化することはありません.@code{AC_SUBST}を用
 2916: いた出力変数の作成方法の詳細は,@xref{Setting Output Variables}.
 2917: 
 2918: @c A software package that uses a @command{configure} script should be
 2919: @c distributed with a file @file{Makefile.in}, but no @file{Makefile}; that
 2920: @c way, the user has to properly configure the package for the local system
 2921: @c before compiling it.
 2922: @c 
 2923: @command{configure}スクリプトを使用しているソフトウェアパッケージは,ファ
 2924: イル@file{Makefile.in}と一緒に配布すべきですが,@file{Makefile}は配布す
 2925: べきではありません.つまり,ユーザはコンパイルする前にローカルシステムに
 2926: 対して,正しくパッケージをコンフィグレーションする必要があります.
 2927: 
 2928: @c @xref{Makefile Conventions,, Makefile Conventions, standards, The
 2929: @c GNU Coding Standards}, for more information on what to put in
 2930: @c @file{Makefile}s.
 2931: @c 
 2932: @file{Makefile}に書くものの詳細は@xref{Makefile Conventions,, Makefile
 2933: Conventions, standards, The GNU Coding Standards}.
 2934: 
 2935: @menu
 2936: * Preset Output Variables::     Output variables that are always set
 2937: * Installation Directory Variables::  Other preset output variables
 2938: * Build Directories::           Supporting multiple concurrent compiles
 2939: * Automatic Remaking::          Makefile rules for configuring
 2940: @end menu
 2941: 
 2942: @node Preset Output Variables
 2943: @c @subsection Preset Output Variables
 2944: @subsection 出力変数のプリセット
 2945: 
 2946: @c Some output variables are preset by the Autoconf macros.  Some of the
 2947: @c Autoconf macros set additional output variables, which are mentioned in
 2948: @c the descriptions for those macros.  @xref{Output Variable Index}, for a
 2949: @c complete list of output variables.  @xref{Installation Directory
 2950: @c Variables}, for the list of the preset ones related to installation
 2951: @c directories.  Below are listed the other preset ones.  They all are
 2952: @c precious variables (@pxref{Setting Output Variables},
 2953: @c @code{AC_ARG_VAR}).
 2954: @c 
 2955: Autoconfマクロが前もって設定する出力変数もあります.追加の出力変数を設定
 2956: するAutoconfマクロもあり,それは,それらのマクロの記述で言及されています.
 2957: 出力変数の完全なリストは,@xref{Output Variable Index}.  以下はそれぞれ,
 2958: それ以外のプリセットされたもののリストです.それらは全て大切な値です
 2959: (@pxref{Setting Output Variables}, @code{AC_ARG_VAR}).
 2960: 
 2961: @c Just say no to ASCII sorting!  We're humans, not computers.
 2962: @c These variables are listed as they would be in a dictionary:
 2963: @c actor
 2964: @c Actress
 2965: @c actress
 2966: 
 2967: @defvar CFLAGS
 2968: @ovindex CFLAGS
 2969: @c Debugging and optimization options for the C compiler.  If it is not set
 2970: @c in the environment when @command{configure} runs, the default value is set
 2971: @c when you call @code{AC_PROG_CC} (or empty if you don't).  @command{configure}
 2972: @c uses this variable when compiling programs to test for C features.
 2973: @c 
 2974: Cコンパイラに対する,デバッグと最適化のオプションです.
 2975: @command{configure}を実行するときに環境変数で設定されていない場合,
 2976: @code{AC_PROG_CC}を呼び出すときにデフォルト値が設定されます(そうでない場
 2977: 合は空になります).Cの特徴をテストするためのプログラムをコンパイルすると
 2978: き,@command{configure}はこの変数を使用します.
 2979: @end defvar
 2980: 
 2981: @defvar configure_input
 2982: @ovindex configure_input
 2983: @c A comment saying that the file was generated automatically by
 2984: @c @command{configure} and giving the name of the input file.
 2985: @c @code{AC_OUTPUT} adds a comment line containing this variable to the top
 2986: @c of every @file{Makefile} it creates.  For other files, you should
 2987: @c reference this variable in a comment at the top of each input file.  For
 2988: @c example, an input shell script should begin like this:
 2989: @c 
 2990: @command{configure}によって自動的に生成されるファイルを告げ,入力ファイ
 2991: ル名を与えるコメントです.@code{AC_OUTPUT}は,それが作成するすべての
 2992: @file{Makefile}の最初に,この変数を含むコメント行を加えます.それ以外の
 2993: ファイルは,それぞれの入力ファイルの最初のコメントで,この変数を参照すべ
 2994: きです.例えば,入力シェルスクリプトの最初は以下のようにすべきです.
 2995: 
 2996: @example
 2997: #! /bin/sh
 2998: # @@configure_input@@
 2999: @end example
 3000: 
 3001: @noindent
 3002: @c The presence of that line also reminds people editing the file that it
 3003: @c needs to be processed by @command{configure} in order to be used.
 3004: @c 
 3005: またその行の存在で,ファイルを編集している人は,@command{configure}を使
 3006: 用して処理する必要があることを思い出します.
 3007: @end defvar
 3008: 
 3009: @defvar CPPFLAGS
 3010: @ovindex CPPFLAGS
 3011: @c Header file search directory (@option{-I@var{dir}}) and any other
 3012: @c miscellaneous options for the C and C++ preprocessors and compilers.  If
 3013: @c it is not set in the environment when @command{configure} runs, the default
 3014: @c value is empty.  @command{configure} uses this variable when compiling or
 3015: @c preprocessing programs to test for C and C++ features.
 3016: @c 
 3017: ヘッダファイルを探すディレクトリ(@samp{-I@var{dir}})と,Cプリプロセッサ
 3018: とCコンパイラに対する,その他の雑多なオプションです.@command{configure} 
 3019: を実行するときに環境変数で設定されていない場合,デフォルト値は空になりま
 3020: す. @command{configure}は,Cの特徴をテストするプログラムのコンパイルや
 3021: プリプロセス時にこの変数を使用します.
 3022: @end defvar
 3023: 
 3024: @defvar CXXFLAGS
 3025: @ovindex CXXFLAGS
 3026: @c Debugging and optimization options for the C++ compiler.  If it is not
 3027: @c set in the environment when @command{configure} runs, the default value is
 3028: @c set when you call @code{AC_PROG_CXX} (or empty if you don't).
 3029: @c @command{configure} uses this variable when compiling programs to test for
 3030: @c C++ features.
 3031: @c 
 3032: C++コンパイラの,デバッグと最適化のオプションです.@command{configure}を
 3033: 実行するときに環境変数で設定されていない場合,@code{AC_PROG_CXX}を呼び出
 3034: したときにデフォルト値に設定されます(そうでない場合は空になります).
 3035: @command{configure}は,C++の特徴をテストするプログラムのコンパイル時に,
 3036: この変数を使用します.
 3037: @end defvar
 3038: 
 3039: @defvar DEFS
 3040: @ovindex DEFS
 3041: @c @option{-D} options to pass to the C compiler.  If @code{AC_CONFIG_HEADERS}
 3042: @c is called, @command{configure} replaces @samp{@@DEFS@@} with
 3043: @c @option{-DHAVE_CONFIG_H} instead (@pxref{Configuration Headers}).  This
 3044: @c variable is not defined while @command{configure} is performing its tests,
 3045: @c only when creating the output files.  @xref{Setting Output Variables}, for
 3046: @c how to check the results of previous tests.
 3047: @c 
 3048: Cコンパイラに渡す@samp{-D}オプションです.@code{AC_CONFIG_HEADER}が呼び
 3049: 出されている場合,@command{configure}は@samp{@@DEFS@@}の代わりに 
 3050: @samp{-DHAVE_CONFIG_H}に置換します(@pxref{Configuration Headers}).この
 3051: 変数は,@command{configure}がテストを実行している間は定義されず,出力ファ
 3052: イルを作成するときだけ定義されます.前のテストの結果を調査する方法は,
 3053: @xref{Setting Output Variables}.
 3054: @end defvar
 3055: 
 3056: @defvar ECHO_C
 3057: @defvarx ECHO_N
 3058: @defvarx ECHO_T
 3059: @ovindex ECHO_C
 3060: @ovindex ECHO_N
 3061: @ovindex ECHO_T
 3062: @c How does one suppress the trailing newline from @code{echo} for
 3063: @c question-answer message pairs?  These variables provide a way:
 3064: @c 
 3065: 質問と回答のメッセージの組に対して,@code{echo}に後置される改行を抑制す
 3066: る方法は?これらの変数は,その方法を提供します.
 3067: 
 3068: @example
 3069: echo $ECHO_N "And the winner is... $ECHO_C"
 3070: sleep 100000000000
 3071: echo "$@{ECHO_T@}dead."
 3072: @end example
 3073: 
 3074: @noindent
 3075: @c Some old and uncommon @code{echo} implementations offer no means to
 3076: @c achieve this, in which case @code{ECHO_T} is set to tab.  You might not
 3077: @c want to use it.
 3078: @c 
 3079: 古く一般的でない@code{echo}の実装では,これを達成する意味が無いものもあ
 3080: り,その場合,@code{ECHO_T}はタブをに設定されます.そうしたくないかもし
 3081: れません.
 3082: @end defvar
 3083: 
 3084: @defvar FFLAGS
 3085: @ovindex FFLAGS
 3086: @c Debugging and optimization options for the Fortran 77 compiler.  If it
 3087: @c is not set in the environment when @command{configure} runs, the default
 3088: @c value is set when you call @code{AC_PROG_F77} (or empty if you don't).
 3089: @c @command{configure} uses this variable when compiling programs to test for
 3090: @c Fortran 77 features.
 3091: @c 
 3092: Fortran 77コンパイラの,デバッグと最適化オプションです. 
 3093: @command{configure}を実行するときに環境変数で設定されていない場合, 
 3094: @code{AC_PROG_F77}を呼び出したときデフォルト値に設定されます(そうでない
 3095: 場合は空になります).@command{configure}は,Fortran 77の特徴をテストする
 3096: プログラムのコンパイル時に,この変数を使用します.
 3097: @end defvar
 3098: 
 3099: @defvar LDFLAGS
 3100: @ovindex LDFLAGS
 3101: @c Stripping (@option{-s}), path (@option{-L}), and any other miscellaneous
 3102: @c options for the linker.  Don't use this variable to pass library names
 3103: @c (@option{-l}) to the linker, use @code{LIBS} instead.  If it is not set
 3104: @c in the environment when @command{configure} runs, the default value is empty.
 3105: @c @command{configure} uses this variable when linking programs to test for
 3106: @c C, C++ and Fortran 77 features.
 3107: @c 
 3108: strip(@samp{-s}),パス(@option{-L}),その他のあらゆる雑多なリンカに対す
 3109: るオプションです.@command{configure}を実行するときに環境変数で設定され
 3110: ていない場合,デフォルト値は空になります.@command{configure}は,C,C++,
 3111: そしてFortran 77の特徴をテストするプログラムのリンク時に,この変数を使用
 3112: します.
 3113: @end defvar
 3114: 
 3115: @defvar LIBS
 3116: @ovindex LIBS
 3117: @c @option{-l} options to pass to the linker.  The default value is empty,
 3118: @c but some Autoconf macros may prepend extra libraries to this variable if
 3119: @c those libraries are found and provide necessary functions, see
 3120: @c @ref{Libraries}.  @command{configure} uses this variable when linking
 3121: @c programs to test for C, C++ and Fortran 77 features.
 3122: @c 
 3123: リンカに渡す@samp{-l}オプションです.デフォルト値は空ですが,ライブラリ
 3124: が見つかり,必要な関数を提供する場合,Autoconfマクロはこの変数に追加のラ
 3125: イブラリを前置するかもしれません.@ref{Libraries}を参照してください.
 3126: @command{configure}は,C,C++,そしてFortran 77の特徴をテストするプログ
 3127: ラムのリンク時に,この変数を使用します.
 3128: @end defvar
 3129: 
 3130: @defvar builddir
 3131: @ovindex builddir
 3132: @c Rigorously equal to @samp{.}.  Added for symmetry only.
 3133: @c 
 3134: @samp{.}と厳密に等価です.対称性のために追加されました.
 3135: @end defvar
 3136: 
 3137: @defvar abs_builddir
 3138: @ovindex abs_builddir
 3139: @c Absolute path of @code{builddir}.
 3140: @c 
 3141: @code{builddir}の絶対パスです.
 3142: @end defvar
 3143: 
 3144: @defvar top_builddir
 3145: @ovindex top_builddir
 3146: @c The relative path to the top-level of the current build tree.  In the
 3147: @c top-level directory, this is the same as @code{builddir}.
 3148: @c 
 3149: 現在のビルドツリーのトップレベルへの相対パスです.トップレベルのディレク
 3150: トリは,ここでは@code{builddir}と同じです.
 3151: @end defvar
 3152: 
 3153: @defvar abs_top_builddir
 3154: @ovindex abs_top_builddir
 3155: @c Absolute path of @code{top_builddir}.
 3156: @c 
 3157: @code{top_builddir}の絶対パスです.
 3158: @end defvar
 3159: 
 3160: @defvar srcdir
 3161: @ovindex srcdir
 3162: @c The relative path to the directory that contains the source code for
 3163: @c that @file{Makefile}.
 3164: @c 
 3165: @file{Makefile}に対するソースコードを含んでいるディレクトリへの相対パス
 3166: です.
 3167: @end defvar
 3168: 
 3169: @defvar abs_srcdir
 3170: @ovindex abs_srcdir
 3171: @c Absolute path of @code{srcdir}.
 3172: @c 
 3173: @code{srcdir}の絶対パスです.
 3174: @end defvar
 3175: 
 3176: @defvar top_srcdir
 3177: @ovindex top_srcdir
 3178: @c The relative path to the top-level source code directory for the
 3179: @c package.  In the top-level directory, this is the same as @code{srcdir}.
 3180: @c 
 3181: パッケージのためのソースコードのトップレベルのディレクトリへの相対パスで
 3182: す.トップレベルのディレクトリは,ここでは@code{srcdir}と同じです.
 3183: @end defvar
 3184: 
 3185: @defvar abs_top_srcdir
 3186: @ovindex abs_top_srcdir
 3187: @c Absolute path of @code{top_srcdir}.
 3188: @c 
 3189: @code{top_srcdir}の絶対パスです.
 3190: @end defvar
 3191: 
 3192: @node Installation Directory Variables
 3193: @c @subsection Installation Directory Variables
 3194: @subsection インストールディレクトリの変数
 3195: 
 3196: @c The following variables specify the directories where the package will
 3197: @c be installed, see @ref{Directory Variables,, Variables for Installation
 3198: @c Directories, standards, The GNU Coding Standards}, for more information.
 3199: @c See the end of this section for details on when and how to use these
 3200: @c variables.
 3201: @c 
 3202: 以下の変数は,パッケージがインストールされる場所を指定します.詳細は,
 3203: @ref{Directory Variables,, Variables for Installation Directories,
 3204: standards, The GNU Coding Standards}を参照してください.これらの変数を使
 3205: 用するときとその方法の詳細は,このセクションの終りを参照してください.
 3206: 
 3207: @defvar bindir
 3208: @ovindex bindir
 3209: @c The directory for installing executables that users run.
 3210: @c 
 3211: ユーザが実行する実行形式をインストールするディレクトリです.
 3212: @end defvar
 3213: 
 3214: @defvar datadir
 3215: @ovindex datadir
 3216: @c The directory for installing read-only architecture-independent data.
 3217: @c 
 3218: 読み込み専用のアーキテクチャに依存しないデータをインストールするディレク
 3219: トリです.
 3220: @end defvar
 3221: 
 3222: @defvar exec_prefix
 3223: @ovindex exec_prefix
 3224: @c The installation prefix for architecture-dependent files.  By default
 3225: @c it's the same as @var{prefix}.  You should avoid installing anything
 3226: @c directly to @var{exec_prefix}.  However, the default value for
 3227: @c directories containing architecture-dependent files should be relative
 3228: @c to @var{exec_prefix}.
 3229: @c 
 3230: アーキテクチャに依存するファイルをインストールするプレフィクスです.デフォ
 3231: ルトは@var{prefix}と同じです.@var{exec_prefix}にいろいろなものを直接イ
 3232: ンストールすることは避けた方が良いでしょう.しかし,アーキテクチャに依存
 3233: するファイルを含むディレクトリに対するデフォルト値は,@var{exec_prefix} 
 3234: から相対的なものにすべきです.
 3235: @end defvar
 3236: 
 3237: @defvar includedir
 3238: @ovindex includedir
 3239: @c The directory for installing C header files.
 3240: @c 
 3241: Cヘッダファイルをインストールするディレクトリです.
 3242: @end defvar
 3243: 
 3244: @defvar infodir
 3245: @ovindex infodir
 3246: @c The directory for installing documentation in Info format.
 3247: @c 
 3248: Info形式のドキュメントをインストールするディレクトリです.
 3249: @end defvar
 3250: 
 3251: @defvar libdir
 3252: @ovindex libdir
 3253: @c The directory for installing object code libraries.
 3254: @c 
 3255: オブジェクトコードライブラリをインストールするディレクトリです.
 3256: @end defvar
 3257: 
 3258: @defvar libexecdir
 3259: @ovindex libexecdir
 3260: @c The directory for installing executables that other programs run.
 3261: @c 
 3262: 他のプログラムが実行する,実行可能なプログラムをインストールするディレク
 3263: トリです.
 3264: @end defvar
 3265: 
 3266: @defvar localstatedir
 3267: @ovindex localstatedir
 3268: @c The directory for installing modifiable single-machine data.
 3269: @c 
 3270: 修正可能なシングルマシンのデータをインストールするディレクトリです.
 3271: @end defvar
 3272: 
 3273: @defvar mandir
 3274: @ovindex mandir
 3275: @c The top-level directory for installing documentation in man format.
 3276: @c 
 3277: man形式のドキュメントをインストールするトップレベルのディレクトリです.
 3278: @end defvar
 3279: 
 3280: @defvar oldincludedir
 3281: @ovindex oldincludedir
 3282: @c The directory for installing C header files for non-GCC compilers.
 3283: @c 
 3284: GCCコンパイラ以外のためのCヘッダファイルをインストールするディレクトリで
 3285: す.
 3286: @end defvar
 3287: 
 3288: @defvar prefix
 3289: @ovindex prefix
 3290: @c The common installation prefix for all files.  If @var{exec_prefix}
 3291: @c is defined to a different value, @var{prefix} is used only for
 3292: @c architecture-independent files.
 3293: @c 
 3294: 全てのファイルに対する共通のインストールプレフィクスです.
 3295: @var{exec_prefix}がことなる値で定義されている場合,@var{prefix}はアーキ
 3296: テクチャ非依存ファイルに対してのみ使用されます.
 3297: @end defvar
 3298: 
 3299: @defvar sbindir
 3300: @ovindex sbindir
 3301: @c The directory for installing executables that system
 3302: @c administrators run.
 3303: @c 
 3304: システム管理者が実行する実行形式をインストールするディレクトリです.
 3305: @end defvar
 3306: 
 3307: @defvar sharedstatedir
 3308: @ovindex sharedstatedir
 3309: @c The directory for installing modifiable architecture-independent data.
 3310: @c 
 3311: 修正可能な,アーキテクチャに依存しないデータをインストールするディレクト
 3312: リです.
 3313: @end defvar
 3314: 
 3315: @defvar sysconfdir
 3316: @ovindex sysconfdir
 3317: @c The directory for installing read-only single-machine data.
 3318: @c 
 3319: 読み込み専用の,シングルマシンのデータをインストールするディレクトリです.
 3320: @end defvar
 3321: 
 3322: 
 3323: @c Most of these variables have values that rely on @code{prefix} or
 3324: @c @code{exec_prefix}.  It is deliberate that the directory output
 3325: @c variables keep them unexpanded: typically @samp{@@datadir@@} will be
 3326: @c replaced by @samp{$@{prefix@}/share}, not @samp{/usr/local/share}.
 3327: @c 
 3328: これらの変数のほとんどは,@code{prefix}や@code{exec_prefix}に依存する値
 3329: になります.ディレクトリ変数の出力値が展開されないように考慮されています.
 3330: 典型的な例として,@samp{@@datadir@@}は,@samp{/usr/local/share}ではなく
 3331: @samp{$@{prefix@}/share}に置換されます.
 3332: 
 3333: @c This behavior is mandated by the @sc{gnu} coding standards, so that when
 3334: @c the user runs:
 3335: @c 
 3336: 以下の動作は,@sc{gnu} coding standardsで示されれていて,ユーザが実行時
 3337: にそうなるようになっています.
 3338: 
 3339: @table @samp
 3340: @item make
 3341: @c she can still specify a different prefix from the one specified to
 3342: @c @command{configure}, in which case, if needed, the package shall hard
 3343: @c code dependencies corresponding to the make-specified prefix.
 3344: @c 
 3345: @command{configure}に指定されるものとは異なるプレフィクスを指定すること
 3346: がまだ可能で,その場合に必要があれば,パッケージはmakeで指定されているプ
 3347: レフィクスに対応するように依存性がハードコード化されます.
 3348: 
 3349: @item make install
 3350: @c she can specify a different installation location, in which case the
 3351: @c package @emph{must} still depend on the location which was compiled in
 3352: @c (i.e., never recompile when @samp{make install} is run).  This is an
 3353: @c extremely important feature, as many people may decide to install all
 3354: @c the files of a package grouped together, and then install links from
 3355: @c the final locations to there.
 3356: @c 
 3357: 異なるインストール位置を指定することが可能で,その場合,パッケージはコン
 3358: パイルで指定した場所に,まだ依存している@emph{はず}です(すなわち,
 3359: @samp{make install}を実行するときは再コンパイルされません).お互いにグルー
 3360: プ化された全てのファイルを,インストール時に決定する人も多いので,これは
 3361: 非常に重要な特徴で,そこからインストール後に最終的な場所にリンクが張られ
 3362: ます.
 3363: @end table
 3364: 
 3365: @c In order to support these features, it is essential that @code{datadir}
 3366: @c remains being defined as @samp{$@{prefix@}/share} to depend upon the
 3367: @c current value of @code{prefix}.
 3368: @c 
 3369: これらの機能をサポートするために,@code{datadir}が@code{prefix}の現在の
 3370: 値に依存する@samp{$@{prefix@}/share}として定義されたままになっていること
 3371: が重要です.
 3372: 
 3373: @c A corollary is that you should not use these variables except in
 3374: @c Makefiles.  For instance, instead of trying to evaluate @code{datadir}
 3375: @c in @file{configure} and hard-coding it in Makefiles using
 3376: @c e.g., @samp{AC_DEFINE_UNQUOTED(DATADIR, "$datadir")}, you should add
 3377: @c @samp{-DDATADIR="$(datadir)"} to your @code{CPPFLAGS}.
 3378: @c 
 3379: 当然のことですが,これらの変数を@file{Makefileq}で使用すべきではありませ
 3380: ん.例えば,@file{configure}で@code{datadir}を評価する代わりに,
 3381: @file{Makefile}で,例えば@samp{AC_DEFINE_UNQUOTED(DATADIR, "$datadir")} 
 3382: としてハードコードする場合は,@samp{-DDATADIR="$(datadir)"} を
 3383: @code{CPPFLAGS}に加えるべきです.
 3384: 
 3385: @c Similarly you should not rely on @code{AC_OUTPUT_FILES} to replace
 3386: @c @code{datadir} and friends in your shell scripts and other files, rather
 3387: @c let @command{make} manage their replacement.  For instance Autoconf
 3388: @c ships templates of its shell scripts ending with @samp{.in}, and uses a
 3389: @c Makefile snippet similar to:
 3390: @c 
 3391: 同様に,@code{datadir}とその仲間を,シェルスクリプトやその他のファイルで
 3392: 置換するために,@code{AC_OUTPUT_FILES}に頼るべきではなく,その代わりに
 3393: @command{make}にその置換を行なわせてください.例えば,Autoconfは
 3394: @samp{.in}で終るシェルスクリプトのテンプレートを配布していて,以下のよう
 3395: な@file{Makefile}の一部を使用しています.
 3396: 
 3397: @example
 3398: @group
 3399: edit = sed \
 3400:         -e 's,@@datadir\@@,$(pkgdatadir),g' \
 3401:         -e 's,@@prefix\@@,$(prefix),g'
 3402: @end group
 3403: 
 3404: autoconf autoheader: Makefile
 3405: @group
 3406: .in:
 3407:         rm -f $@@ $@@.tmp
 3408:         $(edit) $< >$@@.tmp
 3409:         chmod +x $@@.tmp
 3410:         mv $@@.tmp $@@
 3411: @end group
 3412: @end example
 3413: 
 3414: @c Five details are noteworthy:
 3415: @c 
 3416: 注目すべきことは五つあります.
 3417: 
 3418: @table @samp
 3419: @item @@datadir\@@
 3420: @c The backslash prevents @command{configure} from replacing
 3421: @c @samp{@@datadir@@} in the sed expression itself.
 3422: @c 
 3423: バックスラッシュで@command{configure}が@samp{@@datadir@@}をsedの式自身に
 3424: 置換することを妨げます.
 3425: 
 3426: @item $(pkgdatadir)
 3427: @c Don't use @samp{@@pkgdatadir@@}!  Use the matching makefile variable
 3428: @c instead.
 3429: @c 
 3430: @samp{@@pkgdatadir@@}を使用しないでください! 代わりに,makefile変数のマッ
 3431: チングを使用してください.
 3432: 
 3433: @item ,
 3434: @c Don't use @samp{/} in the sed expression(s) since most likely the
 3435: @c variables you use, such as @samp{$(pkgdatadir)}, will contain
 3436: @c some.
 3437: @c 
 3438: @samp{$(pkgdatadir)}のように@samp{/}を含んでいる変数を使用することもある
 3439: ので,@command{sed}の式で@samp{/}を使用しないでください.
 3440: 
 3441: @c @item Dependency on @file{Makefile}
 3442: @item @file{Makefile}への依存性
 3443: @c Since @code{edit} uses values that depend on the configuration specific
 3444: @c values (@code{prefix} etc.) and not only on @code{VERSION} and so forth,
 3445: @c the output depends on @file{Makefile}, not @file{configure.ac}.
 3446: @c 
 3447: @code{edit}は,コンフィグレーション特有の値(@code{prefix}等)に依存し,
 3448: @code{VERSION}やそれの以前のものには依存しない値を使用するので,出力は
 3449: @file{configure.ac}ではなく@file{Makefile}に依存します.
 3450: 
 3451: @c @item Separated dependency
 3452: @item 依存性の分割
 3453: @c Don't write
 3454: @c 
 3455: 以下のように書かないでください.
 3456: 
 3457: @example
 3458: .in: Makefile
 3459:         @dots{}
 3460: @end example
 3461: 
 3462: @noindent
 3463: @c unless you really mean to create the file @file{.in} from @file{Makefile}.
 3464: @c 
 3465: @file{Makefile}からファイル@file{.in}を作成することに,本当に意味がある
 3466: のなら別です.
 3467: @end table
 3468: 
 3469: 
 3470: @node Build Directories
 3471: @c @subsection Build Directories
 3472: @subsection ビルドディレクトリ
 3473: 
 3474: @c You can support compiling a software package for several architectures
 3475: @c simultaneously from the same copy of the source code.  The object files
 3476: @c for each architecture are kept in their own directory.
 3477: @c 
 3478: 同じソースコードのコピーから,同時に複数のアーキテクチャに対するソフトウェ
 3479: アパッケージのコンパイルをサポートすることが可能です.それぞれのアーキテ
 3480: クチャに対するオブジェクトファイルは,それ自身のディレクトリに保存されま
 3481: す.
 3482: 
 3483: @c To support doing this, @command{make} uses the @code{VPATH} variable to
 3484: @c find the files that are in the source directory.  @sc{gnu} Make
 3485: @c and most other recent @command{make} programs can do this.  Older
 3486: @c @command{make} programs do not support @code{VPATH}; when using them, the
 3487: @c source code must be in the same directory as the object files.
 3488: @c 
 3489: これをサポートするために,@command{make}は,ソースディレクトリにあるファ
 3490: イルを見つけるため@code{VPATH}変数を使用します.@sc{gnu} Makeとその他の
 3491: ほとんどの最近の@command{make}プログラムはこうすることが可能です.もっと
 3492: 古い@command{make}プログラムは,@code{VPATH}をサポートしていません.それ
 3493: を使用するときは,ソースコードをオブジェクトファイルと同じディレクトリ置
 3494: く必要があります.
 3495: 
 3496: @c To support @code{VPATH}, each @file{Makefile.in} should contain two
 3497: @c lines that look like:
 3498: @c 
 3499: @code{VPATH}をサポートするため,それぞれの@file{Makefile.in}には,以下の
 3500: ような2行が必要です.
 3501: 
 3502: @example
 3503: srcdir = @@srcdir@@
 3504: VPATH = @@srcdir@@
 3505: @end example
 3506: 
 3507: @c Do not set @code{VPATH} to the value of another variable, for example
 3508: @c @samp{VPATH = $(srcdir)}, because some versions of @command{make} do not do
 3509: @c variable substitutions on the value of @code{VPATH}.
 3510: @c 
 3511: @code{VPATH}の値に変数を代入しない@command{make}のバージョンもあるので, 
 3512: @code{VPATH}に他の値,例えば@samp{VPATH = $(srcdir)}を設定しないでくださ
 3513: い.
 3514: 
 3515: @c @command{configure} substitutes the correct value for @code{srcdir} when
 3516: @c it produces @file{Makefile}.
 3517: @c 
 3518: @command{configure}は@file{Makefile}を作成するとき,@code{srcdir}に正し
 3519: い値を代入します.
 3520: 
 3521: @c Do not use the @code{make} variable @code{$<}, which expands to the
 3522: @c file name of the file in the source directory (found with @code{VPATH}),
 3523: @c except in implicit rules.  (An implicit rule is one such as @samp{.c.o},
 3524: @c which tells how to create a @file{.o} file from a @file{.c} file.)  Some
 3525: @c versions of @command{make} do not set @code{$<} in explicit rules; they
 3526: @c expand it to an empty value.
 3527: @c 
 3528: 暗黙の規則を期待して,(@code{VPATH}で見つかる)ソースディレクトリのファイ
 3529: ルのパス名を展開する@command{make}変数の@code{$<}を使用しないでください.
 3530: (暗黙の規則とは,@file{.c}ファイルから@file{.o}ファイルを作成する方法を
 3531: 教える@samp{.c.o}の様なものです.)暗黙の規則で@code{$<}を設定しないバー
 3532: ジョンの@command{make}もあり,それは,空の値で展開します.
 3533: 
 3534: @c Instead, @file{Makefile} command lines should always refer to source
 3535: @c files by prefixing them with @samp{$(srcdir)/}.  For example:
 3536: @c 
 3537: その代わり,@file{Makefile}コマンドラインは,ソースファイルを 
 3538: @samp{$(srcdir)/}を前置して参照します.例えば以下のようにします.
 3539: 
 3540: @example
 3541: time.info: time.texinfo
 3542:         $(MAKEINFO) $(srcdir)/time.texinfo
 3543: @end example
 3544: 
 3545: @node Automatic Remaking
 3546: @c @subsection Automatic Remaking
 3547: @subsection 自動的なリメイク
 3548: 
 3549: @c You can put rules like the following in the top-level @file{Makefile.in}
 3550: @c for a package to automatically update the configuration information when
 3551: @c you change the configuration files.  This example includes all of the
 3552: @c optional files, such as @file{aclocal.m4} and those related to
 3553: @c configuration header files.  Omit from the @file{Makefile.in} rules for
 3554: @c any of these files that your package does not use.
 3555: @c 
 3556: コンフィグレーションファイルを変更したとき自動的にコンフィグレーション情
 3557: 報を更新するため,パッケージに対するトップレベルの@file{Makefile.in}に以
 3558: 下のような規則を書くことが可能でます.以下の例には,@file{aclocal.m4}や
 3559: それらが関連するるコンフィグレーションヘッダファイルのような,全てのオプ
 3560: ションのファイルが含まれています.パッケージで使用しないこれらのファイル
 3561: に対する@file{Makefile.in}規則は削除してください.
 3562: 
 3563: @c The @samp{$(srcdir)/} prefix is included because of limitations in the
 3564: @c @code{VPATH} mechanism.
 3565: @c 
 3566: @samp{$@{srcdir@}/}プレフィクスは@code{VPATH}メカニズムの制限のため含ん
 3567: でいます.
 3568: 
 3569: @c The @file{stamp-} files are necessary because the timestamps of
 3570: @c @file{config.h.in} and @file{config.h} will not be changed if remaking
 3571: @c them does not change their contents.  This feature avoids unnecessary
 3572: @c recompilation.  You should include the file @file{stamp-h.in} your
 3573: @c package's distribution, so @command{make} will consider
 3574: @c @file{config.h.in} up to date.  Don't use @command{touch}
 3575: @c (@pxref{Limitations of Usual Tools}), rather use @command{echo} (using
 3576: @c @command{date} would cause needless differences, hence @sc{cvs}
 3577: @c conflicts etc.).
 3578: @c 
 3579: @file{config.h.in}と@file{config.h}のタイムスタンプは,内容が変化しない
 3580: 場合には変化しないので,@file{stamp-}ファイルが必要です.この機能は不必
 3581: 要な再コンパイルを避けます.パッケージの配布物に@file{stamp-h.in}を含め
 3582: るべきで,そうすることで@code{make}は@file{config.h.in}が最新だというこ
 3583: とを考慮します.@command{touch} (@pxref{Limitations of Usual Tools})を使
 3584: 用せず,代わりに@command{echo}を使用してください(@command{date}を使用す
 3585: ると不必要な差異を生じ,@sc{cvs}で矛盾したりするでしょう).
 3586: 
 3587: @example
 3588: @group
 3589: $(srcdir)/configure: configure.ac aclocal.m4
 3590:         cd $(srcdir) && autoconf
 3591: 
 3592: # autoheader might not change config.h.in, so touch a stamp file.
 3593: $(srcdir)/config.h.in: stamp-h.in
 3594: $(srcdir)/stamp-h.in: configure.ac aclocal.m4
 3595:         cd $(srcdir) && autoheader
 3596:         echo timestamp > $(srcdir)/stamp-h.in
 3597: 
 3598: config.h: stamp-h
 3599: stamp-h: config.h.in config.status
 3600:         ./config.status
 3601: 
 3602: Makefile: Makefile.in config.status
 3603:         ./config.status
 3604: 
 3605: config.status: configure
 3606:         ./config.status --recheck
 3607: @end group
 3608: @end example
 3609: 
 3610: @noindent
 3611: @c (Be careful if you copy these lines directly into your Makefile, as you
 3612: @c will need to convert the indented lines to start with the tab character.)
 3613: @c 
 3614: この行を直接@file{Makefile}にコピーするときは,インデントされた行がタブ
 3615: 文字で始まるように置換する必要があるので注意してください.)
 3616: 
 3617: @c In addition, you should use @samp{AC_CONFIG_FILES([stamp-h], [echo
 3618: @c timestamp > stamp-h])} so @file{config.status} will ensure that
 3619: @c @file{config.h} is considered up to date.  @xref{Output}, for more
 3620: @c information about @code{AC_OUTPUT}.
 3621: @c 
 3622: 更に,@samp{AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])}を使
 3623: 用すべきで,そうすることで@file{config.status}は@file{config.h}が最新で
 3624: あることを確かめます.@code{AC_OUTPUT}の詳細は,@xref{Output}.
 3625: 
 3626: @c @xref{config.status Invocation}, for more examples of handling
 3627: @c configuration-related dependencies.
 3628: @c 
 3629: 依存性に関係するコンフィグレーションの例は,@xref{config.status
 3630: Invocation}.
 3631: 
 3632: @node Configuration Headers
 3633: @c @section Configuration Header Files
 3634: @section コンフィグレーションヘッダファイル
 3635: @cindex Configuration Header
 3636: @cindex @file{config.h}
 3637: 
 3638: @c When a package contains more than a few tests that define C preprocessor symbols, the command
 3639: @c lines to pass @option{-D} options to the compiler can get quite long.
 3640: @c This causes two problems.  One is that the @command{make} output is hard to
 3641: @c visually scan for errors.  More seriously, the command lines can exceed
 3642: @c the length limits of some operating systems.  As an alternative to
 3643: @c passing @option{-D} options to the compiler, @command{configure} scripts can
 3644: @c create a C header file containing @samp{#define} directives.  The
 3645: @c @code{AC_CONFIG_HEADERS} macro selects this kind of output.  It should
 3646: @c be called right after @code{AC_INIT}.
 3647: @c 
 3648: パッケージに2,3個以上のCプリプロセッサのシンボルのテストが含まれている
 3649: とき,コマンドラインでコンパイラに渡す@samp{-D}オプションはかなり長くな
 3650: ります.これは二つの問題があります.一つは,@command{make}の出力のエラー
 3651: を探すとき,見て分からなくなることです.更に深刻な問題は,コマンドライン
 3652: がいくつかのオペレーティングシステムの長さの制限を越えることです.コンパ
 3653: イラに@samp{-D}オプションを渡す代わりに, @command{configure}スクリプト
 3654: で@samp{#define}ディレクティブを含んでいるCヘッダファイルを作成すること
 3655: が可能です.@code{AC_CONFIG_HEADER}マクロで,この出力を選択します.それ
 3656: は,@code{AC_INIT}の直後に呼び出します.
 3657: 
 3658: @c The package should @samp{#include} the configuration header file before
 3659: @c any other header files, to prevent inconsistencies in declarations (for
 3660: @c example, if it redefines @code{const}).  Use @samp{#include <config.h>}
 3661: @c instead of @samp{#include "config.h"}, and pass the C compiler a
 3662: @c @option{-I.} option (or @option{-I..}; whichever directory contains
 3663: @c @file{config.h}).  That way, even if the source directory is configured
 3664: @c itself (perhaps to make a distribution), other build directories can
 3665: @c also be configured without finding the @file{config.h} from the source
 3666: @c directory.
 3667: @c 
 3668: (例えば,@code{const}を再定義する場合)宣言の不一致を防ぐために,パッケー
 3669: ジでは,あらゆる他のヘッダの前で,コンフィグレーションヘッダファイルを 
 3670: @samp{#include}すべきです.@samp{#include "config.h"}の代わりに 
 3671: @samp{#include <config.h>}を使用し,Cコンパイラに@samp{-I.}オプション(ま
 3672: たは@samp{-I..}.@file{config.h}がある方)を渡してください.そうすること
 3673: で,(おそらく配布物を作成するときに)ソースディレクトリがコンフィグレーショ
 3674: ンされても,他のビルドディレクトリは,ソースディレクトリから 
 3675: @file{config.h}を探すことなく,コンフィグレーション可能になります.
 3676: 
 3677: @defmac AC_CONFIG_HEADERS (@var{header} @dots{}, @ovar{cmds}, @ovar{init-cmds})
 3678: @acindex CONFIG_HEADERS
 3679: @cvindex HAVE_CONFIG_H
 3680: @c This macro is one of the instantiating macros; see @ref{Configuration
 3681: @c Actions}.  Make @code{AC_OUTPUT} create the file(s) in the
 3682: @c whitespace-separated list @var{header} containing C preprocessor
 3683: @c @code{#define} statements, and replace @samp{@@DEFS@@} in generated
 3684: @c files with @option{-DHAVE_CONFIG_H} instead of the value of @code{DEFS}.
 3685: @c The usual name for @var{header} is @file{config.h}.
 3686: @c 
 3687: このマクロは,実際にファイルを作成するマクロの一つです.
 3688: @ref{Configuration Actions}を参照してください.@code{AC_OUTPUT}は,
 3689: @code{#define}宣言のCプリプロセッサを含んでいる@var{header}の空白で区切
 3690: られたリストを作成し,生成されたファイルの@samp{@@DEFS@@}を,@code{DEFS} 
 3691: の値の代わりに,@option{-DHAVE_CONFIG_H}で置換します.通常,@var{header} 
 3692: の名前は@file{config.h}です.
 3693: 
 3694: @c If @var{header} already exists and its contents are identical to what
 3695: @c @code{AC_OUTPUT} would put in it, it is left alone.  Doing this allows
 3696: @c making some changes in the configuration without needlessly causing object files
 3697: @c that depend on the header file to be recompiled.
 3698: @c 
 3699: @var{header}がすでに存在していて,その内容が@code{AC_OUTPUT}が書き込むも
 3700: のと同じ場合は,そのまま残ります.こうすることで,ヘッダファイルに依存す
 3701: るオブジェクトファイルを不必要に再コンパイルする必要がなく,コンフィグレー
 3702: ション時に変更を行なうことが可能になります.
 3703: 
 3704: @c Usually the input file is named @file{@var{header}.in}; however, you can
 3705: @c override the input file name by appending to @var{header} a
 3706: @c colon-separated list of input files.  Examples:
 3707: @c 
 3708: 通常,入力ファイルは@file{@var{header}.in}と命名されます.しかし,入力ファ
 3709: イルをコロンで分けた入力ファイルのリストに@var{header}を加えることで優先
 3710: 可能です.例えば,以下のようにします.
 3711: 
 3712: @example
 3713: AC_CONFIG_HEADERS([config.h:config.hin])
 3714: AC_CONFIG_HEADERS([defines.h:defs.pre:defines.h.in:defs.post])
 3715: @end example
 3716: 
 3717: @noindent
 3718: @c Doing this allows you to keep your file names acceptable to MS-DOS, or
 3719: @c to prepend and/or append boilerplate to the file.
 3720: @c 
 3721: こうすることで,MS-DOSでアクセスできるままにしたり,常套句をファイルに前
 3722: 置したり,後置したりすることが可能になります.
 3723: @end defmac
 3724: 
 3725: @c @xref{Configuration Actions}, for more details on @var{header}.
 3726: @c 
 3727: @var{header}の詳細は,@xref{Configuration Actions}.
 3728: 
 3729: @menu
 3730: * Header Templates::            Input for the configuration headers
 3731: * autoheader Invocation::       How to create configuration templates
 3732: * Autoheader Macros::           How to specify CPP templates
 3733: @end menu
 3734: 
 3735: @node Header Templates
 3736: @c @subsection Configuration Header Templates
 3737: @subsection コンフィグレーションヘッダのテンプレート
 3738: @cindex Configuration Header Template
 3739: @cindex @file{config.h.in}
 3740: 
 3741: @c Your distribution should contain a template file that looks as you want
 3742: @c the final header file to look, including comments, with @code{#undef}
 3743: @c statements which are used as hooks.  For example, suppose your
 3744: @c @file{configure.ac} makes these calls:
 3745: @c 
 3746: 最終的なヘッダファイルが見つかるように,コメントとフックとして使用される
 3747: @code{#undef}宣言を含んでいるテンプレートファイルを,配布物に含めるべき
 3748: です.例えば,@file{configure.ac}で以下のように呼び出します.
 3749: 
 3750: @example
 3751: AC_CONFIG_HEADERS([conf.h])
 3752: AC_CHECK_HEADERS([unistd.h])
 3753: @end example
 3754: 
 3755: @noindent
 3756: @c Then you could have code like the following in @file{conf.h.in}.  On
 3757: @c systems that have @file{unistd.h}, @command{configure} will @samp{#define}
 3758: @c @samp{HAVE_UNISTD_H} to 1.  On other systems, the whole line will be
 3759: @c commented out (in case the system predefines that symbol).
 3760: @c 
 3761: @file{conf.h.in}で以下のようなコードを書きます.@file{unistd.h}があるシ
 3762: ステムでは,@command{configure}は@samp{#define} @samp{HAVE_UNISTD_H}を1 
 3763: にします.それ以外のシステムでは,行全体がコメントアウトされます(そのシ
 3764: ステムの場合,シンボルは前もって定義されません).
 3765: 
 3766: @example
 3767: @group
 3768: /* Define as 1 if you have unistd.h.  */
 3769: #undef HAVE_UNISTD_H
 3770: @end group
 3771: @end example
 3772: 
 3773: @c You can then decode the configuration header using the preprocessor
 3774: @c directives:
 3775: @c 
 3776: その後で,プリプロセッサ命令を使用しているコンフィグレーションヘッダをデ
 3777: コードすることが可能です.
 3778: 
 3779: @example
 3780: @group
 3781: #include <conf.h>
 3782: 
 3783: #if HAVE_UNISTD_H
 3784: # include <unistd.h>
 3785: #else
 3786: /* We are in trouble.  */
 3787: #endif
 3788: @end group
 3789: @end example
 3790: 
 3791: @c The use of old form templates, with @samp{#define} instead of
 3792: @c @samp{#undef} is strongly discouraged.
 3793: @c 
 3794: @samp{#undef}の代わりに@samp{#define}を用いている,古い形式のテンプレー
 3795: トの使用は,強く反対します.
 3796: 
 3797: @c Since it is a tedious task to keep a template header up to date, you may
 3798: @c use @command{autoheader} to generate it, see @ref{autoheader Invocation}.
 3799: @c 
 3800: テンプレートヘッダを更新し続けることは退屈な作業なので,それを生成するた
 3801: めに@command{autoheader}してもかまいません.@ref{autoheader Invocation}
 3802: を参照してください.
 3803: 
 3804: 
 3805: @node autoheader Invocation
 3806: @c @subsection Using @command{autoheader} to Create @file{config.h.in}
 3807: @subsection @file{config.h.in}を生成するため@command{autoheader}を使用する
 3808: @cindex @command{autoheader}
 3809: 
 3810: @c The @command{autoheader} program can create a template file of C
 3811: @c @samp{#define} statements for @command{configure} to use.  If
 3812: @c @file{configure.ac} invokes @code{AC_CONFIG_HEADERS(@var{file})},
 3813: @c @command{autoheader} creates @file{@var{file}.in}; if multiple file
 3814: @c arguments are given, the first one is used.  Otherwise,
 3815: @c @command{autoheader} creates @file{config.h.in}.
 3816: @c 
 3817: @command{autoheader}プログラムは,@command{configure}が使用するためのCの
 3818: @samp{#define}宣言のテンプレートファイルを作成することが可能です.
 3819: @file{configure.ac}で@code{AC_CONFIG_HEADERS(@var{file})}を呼び出す場合,
 3820: @command{autoheader}は@file{@var{file}.in}を作成します.複数のファイルが
 3821: 引数で与えられている場合,最初のファイルを使用します.それ以外の場合,
 3822: @command{autoheader}は@file{config.h.in}を作成します.
 3823: 
 3824: @c In order to do its job, @command{autoheader} needs you to document all
 3825: @c of the symbols that you might use; i.e., there must be at least one
 3826: @c @code{AC_DEFINE} or one @code{AC_DEFINE_UNQUOTED} call with a third
 3827: @c argument for each symbol (@pxref{Defining Symbols}).  An additional
 3828: @c constraint is that the first argument of @code{AC_DEFINE} must be a
 3829: @c literal.  Note that all symbols defined by Autoconf's builtin tests are
 3830: @c already documented properly; you only need to document those that you
 3831: @c define yourself.
 3832: @c 
 3833: この作業を行なうために,使用する可能性がある全てのシンボルを記述すること
 3834: を@command{autoheader}は必要とします.すなわち,少なくとも,一つの
 3835: @code{AC_DEFINE}か@code{AC_DEFINE_UNQUOTED}が,それぞれのシンボルに対し
 3836: て三番目の引数を用いて呼び出されている必要があります(@pxref{Defining
 3837: Symbols}).更に,@code{AC_DEFINE}の最初の引数をリテラルにする必要がある
 3838: という制約があります.Autoconfの組み込みテストで定義されている全てのシン
 3839: ボルは,既に適切に記述されているということに注意してください.独自に定義
 3840: したものだけ記述する必要があります.
 3841: 
 3842: @c You might wonder why @command{autoheader} is needed: after all, why
 3843: @c would @command{configure} need to ``patch'' a @file{config.h.in} to
 3844: @c produce a @file{config.h} instead of just creating @file{config.h} from
 3845: @c scratch?  Well, when everything rocks, the answer is just that we are
 3846: @c wasting our time maintaining @command{autoheader}: generating
 3847: @c @file{config.h} directly is all that is needed.  When things go wrong,
 3848: @c however, you'll be thankful for the existence of @command{autoheader}.
 3849: @c 
 3850: @command{autoheader}がなぜ必要か不思議に思うかもしれません.つまり,なぜ
 3851: @command{configure}は,スクラッチから@file{config.h}を作成する代わりに,
 3852: @file{config.h}を生成するために@file{config.h.in}への``patch''を必要とす
 3853: るのでしょうか?さて,全てが固まったとき,@command{autoheader}を管理して
 3854: いる時間が無駄になるというのが答えです.直接@file{config.h}を生成するこ
 3855: とが,必要なことの全てです.しかし,うまくいかないときは,
 3856: @command{autoheader}の存在に感謝することになるでしょう.
 3857: 
 3858: @c The fact that the symbols are documented is important in order to
 3859: @c @emph{check} that @file{config.h} makes sense.  The fact that there is a
 3860: @c well-defined list of symbols that should be @code{#define}'d (or not) is
 3861: @c also important for people who are porting packages to environments where
 3862: @c @command{configure} cannot be run: they just have to @emph{fill in the
 3863: @c blanks}.
 3864: @c 
 3865: シンボルが記述されているという事実は,@file{config.h}に意味があることを
 3866: @emph{調査する}ために重要です.@code{#define}される(またはされない)シン
 3867: ボルがうまく定義されているリストがあるという事実もまた,
 3868: @command{configure}が実行不可能な環境にパッケージを移植している人には重
 3869: 要です.彼らは,@emph{空白で埋め尽くす}必要しかありません.
 3870: 
 3871: @c But let's come back to the point: @command{autoheader}'s invocation@dots{}
 3872: @c 
 3873: では,要点に戻りましょう.@command{autoheader}の呼び出し@dots{}
 3874: 
 3875: @c If you give @command{autoheader} an argument, it uses that file instead
 3876: @c of @file{configure.ac} and writes the header file to the standard output
 3877: @c instead of to @file{config.h.in}.  If you give @command{autoheader} an
 3878: @c argument of @option{-}, it reads the standard input instead of
 3879: @c @file{configure.ac} and writes the header file to the standard output.
 3880: @c 
 3881: 引数を@command{autoheader}に与えた場合,@file{configure.ac}の代わりにそ
 3882: のファイルを使用し,@file{config.h.in}の代わりに標準出力にヘッダファイル
 3883: を書き出します.@samp{-}引数を@command{autoheader}に与えた場合,
 3884: @file{configure.ac}の代わりに標準入力から読み込み,標準出力にヘッダファ
 3885: イルを書き出します.
 3886: 
 3887: @c @command{autoheader} accepts the following options:
 3888: @c 
 3889: @command{autoheader}は以下のオプションを受け入れます.
 3890: 
 3891: @table @option
 3892: @item --help
 3893: @itemx -h
 3894: @c Print a summary of the command line options and exit.
 3895: @c 
 3896: コマンドラインオプションの概要を出力して終了します.
 3897: 
 3898: @item --version
 3899: @itemx -V
 3900: @c Print the version number of Autoconf and exit.
 3901: @c 
 3902: Autoconfのバージョンナンバーを出力して終了します.
 3903: 
 3904: @item --verbose
 3905: @itemx -v
 3906: @c Report processing steps.
 3907: @c 
 3908: 処理しているステップを報告します.
 3909: 
 3910: @item --debug
 3911: @itemx -d
 3912: @c Don't remove the temporary files.
 3913: @c 
 3914: 一時的なファイルを削除しません.
 3915: 
 3916: @item --force
 3917: @itemx -f
 3918: @c Remake the template file even if newer than its input files.
 3919: @c 
 3920: 入力ファイルよりテンプレートファイルが新しい場合でも,それを再生成します.
 3921: 
 3922: @item --include=@var{dir}
 3923: @itemx -I @var{dir}
 3924: @c Append @var{dir} to include path.  Multiple invocations accumulate.
 3925: @c 
 3926: @var{dir}をインクルードパスの後に追加します.複数回の呼び出しで累積されます.
 3927: 
 3928: @item --prepend-include=@var{dir}
 3929: @item -B @var{dir}
 3930: @c Prepend @var{dir} to include path.  Multiple invocations accumulate.
 3931: @c 
 3932: @var{dir}をインクルードパスの前に追加します.複数回の呼び出しで累積され
 3933: ます.
 3934: 
 3935: @item --warnings=@var{category}
 3936: @itemx -W @var{category}
 3937: @evindex WARNINGS
 3938: @c Report the warnings related to @var{category} (which can actually be a
 3939: @c comma separated list).  Current categories include:
 3940: @c 
 3941: @var{category}(実際にはカンマで分けられたリスト)に関連する警告を報告しま
 3942: す.現在のカテゴリには,以下のものが含まれています.
 3943: 
 3944: @table @samp
 3945: @item obsolete
 3946: @c report the uses of obsolete constructs
 3947: @c 
 3948: 時代遅れの構成物の使用を報告します.
 3949: 
 3950: @item all
 3951: @c report all the warnings
 3952: @c 
 3953: 全ての警告を報告します.
 3954: 
 3955: @item none
 3956: @c report none
 3957: @c 
 3958: 何も報告しません.
 3959: 
 3960: @item error
 3961: @c treats warnings as errors
 3962: @c 
 3963: 警告をエラーとして扱います.
 3964: 
 3965: @item no-@var{category}
 3966: @c disable warnings falling into @var{category}
 3967: @c 
 3968: @var{category}に分類されている警告を利用不可能にします.
 3969: @end table
 3970: 
 3971: @end table
 3972: 
 3973: 
 3974: 
 3975: @node Autoheader Macros
 3976: @c @subsection Autoheader Macros
 3977: @subsection autoheaderのマクロ
 3978: 
 3979: @c @command{autoheader} scans @file{configure.ac} and figures out which C
 3980: @c preprocessor symbols it might define.  It knows how to generate
 3981: @c templates for symbols defined by @code{AC_CHECK_HEADERS},
 3982: @c @code{AC_CHECK_FUNCS} etc., but if you @code{AC_DEFINE} any additional
 3983: @c symbol, you must define a template for it.  If there are missing
 3984: @c templates, @command{autoheader} fails with an error message.
 3985: @c 
 3986: @command{autoheader}は@file{configure.ac}を調査し,定義されているCプリプ
 3987: ロセッサシンボルを判定します.それは,@code{AC_CHECK_HEADERS}や
 3988: @code{AC_CHECK_FUNCS}等が定義しているシンボルに対するテンプレートを生成
 3989: する方法は知っていますが,あらゆる追加のシンボルを@code{AC_DEFINE}してい
 3990: る場合,それに対するテンプレートを定義する必要があります.テンプレートが
 3991: 無い場合,@command{autoheader}はエラーメッセージとともに失敗します.
 3992: 
 3993: @c The simplest way to create a template for a @var{symbol} is to supply
 3994: @c the @var{description} argument to an @samp{AC_DEFINE(@var{symbol})}; see
 3995: @c @ref{Defining Symbols}.  You may also use one of the following macros.
 3996: @c 
 3997: @var{symbol}に対するテンプレートを作成する最も簡単な方法は,
 3998: @samp{AC_DEFINE(@var{symbol})}の引数に@var{description}を与えることです.
 3999: @ref{Defining Symbols}を参照してください.以下のマクロの一つを使用するこ
 4000: とも可能です.
 4001: 
 4002: @defmac AH_VERBATIM (@var{key}, @var{template})
 4003: @acindex AH_VERBATIM
 4004: @acindex VERBATIM
 4005: @c Tell @command{autoheader} to include the @var{template} as-is in the header
 4006: @c template file.  This @var{template} is associated with the @var{key},
 4007: @c which is used to sort all the different templates and guarantee their
 4008: @c uniqueness.  It should be a symbol that can be @code{AC_DEFINE}'d.
 4009: @c 
 4010: @command{autoheader}に,@var{template}をそのままヘッダテンプレートファイ
 4011: ルに含めるよう伝えます.この@var{template}は@var{key}に関連付けされてい
 4012: て,それは全ての異なるテンプレートを並べ替えし,それらのユニーク性を保証
 4013: するために使用されます.それは,@code{AC_DEFINE}されることが可能なシンボ
 4014: ルにすべきです.
 4015: 
 4016: @c For example:
 4017: @c 
 4018: 例えば以下のようにします.
 4019: 
 4020: @example
 4021: AH_VERBATIM([_GNU_SOURCE],
 4022: [/* Enable GNU extensions on systems that have them.  */
 4023: #ifndef _GNU_SOURCE
 4024: # define _GNU_SOURCE
 4025: #endif])
 4026: @end example
 4027: @end defmac
 4028: 
 4029: 
 4030: @defmac AH_TEMPLATE (@var{key}, @var{description})
 4031: @acindex AH_TEMPLATE
 4032: @acindex TEMPLATE
 4033: @c Tell @command{autoheader} to generate a template for @var{key}.  This macro
 4034: @c generates standard templates just like @code{AC_DEFINE} when a
 4035: @c @var{description} is given.
 4036: @c 
 4037: @command{autoheader}に,@var{key}に対するテンプレートを生成するように伝
 4038: えます.このマクロは,@var{description}が与えられたときの
 4039: @code{AC_DEFINE} のような,標準的なテンプレートを生成します.
 4040: 
 4041: @c For example:
 4042: @c 
 4043: 例えば,以下のようにします.
 4044: 
 4045: @example
 4046: AH_TEMPLATE([CRAY_STACKSEG_END],
 4047:             [Define to one of _getb67, GETB67, getb67
 4048:              for Cray-2 and Cray-YMP systems.  This
 4049:              function is required for alloca.c support
 4050:              on those systems.])
 4051: @end example
 4052: 
 4053: @noindent
 4054: @c will generate the following template, with the description properly
 4055: @c justified.
 4056: @c 
 4057: これは,適切に正当化された記述を用いて,以下のテンプレートを生成します.
 4058: 
 4059: @example
 4060: /* Define to one of _getb67, GETB67, getb67 for Cray-2 and
 4061:    Cray-YMP systems. This function is required for alloca.c
 4062:    support on those systems. */
 4063: #undef CRAY_STACKSEG_END
 4064: @end example
 4065: @end defmac
 4066: 
 4067: 
 4068: @defmac AH_TOP (@var{text})
 4069: @acindex AH_TOP
 4070: @acindex TOP
 4071: @c Include @var{text} at the top of the header template file.
 4072: @c 
 4073: @var{text}をヘッダテンプレートファイルの最初に含めます.
 4074: @end defmac
 4075: 
 4076: 
 4077: @defmac AH_BOTTOM (@var{text})
 4078: @acindex AH_BOTTOM
 4079: @acindex BOTTOM
 4080: @c Include @var{text} at the bottom of the header template file.
 4081: @c 
 4082: @var{text}をヘッダテンプレートファイルの最後に含めます.
 4083: @end defmac
 4084: 
 4085: 
 4086: @node Configuration Commands
 4087: @c @section Running Arbitrary Configuration Commands
 4088: @section 任意のコンフィグレーションコマンドの実行
 4089: 
 4090: @c You can execute arbitrary commands before, during, and after
 4091: @c @file{config.status} is run.  The three following macros accumulate the
 4092: @c commands to run when they are called multiple times.
 4093: @c @code{AC_CONFIG_COMMANDS} replaces the obsolete macro
 4094: @c @code{AC_OUTPUT_COMMANDS}; see @ref{Obsolete Macros}, for details.
 4095: @c 
 4096: @file{config.status}の実行前,実行中,そして実行後のいずれかに任意のコマ
 4097: ンドを実行することが可能です.以下の三つのマクロは,複数回呼び出されたと
 4098: き,実行するコマンドを累積していきます.@code{AC_CONFIG_COMMANDS}は時代
 4099: 遅れのマクロ@code{AC_OUTPUT_COMMANDS}の置換物です.詳細は,@ref{Obsolete
 4100: Macros}を参照してください.
 4101: 
 4102: @defmac AC_CONFIG_COMMANDS (@var{tag}@dots{}, @ovar{cmds}, @ovar{init-cmds})
 4103: @acindex CONFIG_COMMANDS
 4104: @c Specify additional shell commands to run at the end of
 4105: @c @file{config.status}, and shell commands to initialize any variables
 4106: @c from @command{configure}.  Associate the commands with @var{tag}.  Since
 4107: @c typically the @var{cmds} create a file, @var{tag} should naturally be
 4108: @c the name of that file.  This macro is one of the instantiating macros;
 4109: @c see @ref{Configuration Actions}.
 4110: @c 
 4111: @file{config.status}の終りに実行するシェルコマンドと,
 4112: @command{configure}からのあらゆる変数を初期化するためのシェルコマンドを
 4113: を追加します.コマンドを@var{tag}に関連付けます.通常,@var{cmds}はファ
 4114: イルを作成するので,@var{tag}は自ずからファイル名にすべきでしょう.この
 4115: マクロは,実際にファイルを作成するマクロです.@ref{Configuration
 4116: Actions}を参照してください.
 4117: 
 4118: @c Here is an unrealistic example:
 4119: @c 
 4120: 非現実的な例ですが,以下のようにします.
 4121: @example
 4122: fubar=42
 4123: AC_CONFIG_COMMANDS([fubar],
 4124:                    [echo this is extra $fubar, and so on.],
 4125:                    [fubar=$fubar])
 4126: @end example
 4127: 
 4128: @c Here is a better one:
 4129: @c 
 4130: 以下はましなものです.
 4131: @example
 4132: AC_CONFIG_COMMANDS([time-stamp], [date >time-stamp])
 4133: @end example
 4134: @end defmac
 4135: 
 4136: @defmac AC_CONFIG_COMMANDS_PRE (@var{cmds})
 4137: @acindex OUTPUT_COMMANDS_PRE
 4138: @c Execute the @var{cmds} right before creating @file{config.status}.
 4139: @c 
 4140: @file{config.status}を作成する直前に@var{cmds}を実行します.
 4141: @end defmac
 4142: 
 4143: @defmac AC_CONFIG_COMMANDS_POST (@var{cmds})
 4144: @acindex OUTPUT_COMMANDS_POST
 4145: @c Execute the @var{cmds} right after creating @file{config.status}.
 4146: @c 
 4147: @file{config.status}を作成した直後に@var{cmds}を実行します.
 4148: @end defmac
 4149: 
 4150: 
 4151: 
 4152: 
 4153: @node Configuration Links
 4154: @c @section Creating Configuration Links
 4155: @section コンフィグレーションのリンクを作成する
 4156: 
 4157: @c You may find it convenient to create links whose destinations depend upon
 4158: @c results of tests.  One can use @code{AC_CONFIG_COMMANDS} but the
 4159: @c creation of relative symbolic links can be delicate when the package is
 4160: @c built in a directory different from the source directory.
 4161: @c 
 4162: テストの結果によって,対象物へのリンクを作成することが便利だと分かるでしょ
 4163: う.@code{AC_CONFIG_COMMANDS}を使用することも可能ですが,相対的なシンボ
 4164: リックリンクを作成することで,パッケージがソースディレクトリとは異なるディ
 4165: レクトリでビルドされるときに決定することが可能です.
 4166: 
 4167: @defmac AC_CONFIG_LINKS (@var{dest}:@var{source}@dots{}, @ovar{cmds}, @ovar{init-cmds})
 4168: @acindex CONFIG_LINKS
 4169: @cindex Links
 4170: @c Make @code{AC_OUTPUT} link each of the existing files @var{source} to
 4171: @c the corresponding link name @var{dest}.  Makes a symbolic link if
 4172: @c possible, otherwise a hard link if possible, otherwise a copy.  The
 4173: @c @var{dest} and @var{source} names should be relative to the top level
 4174: @c source or build directory.  This macro is one of the instantiating
 4175: @c macros; see @ref{Configuration Actions}.
 4176: @c 
 4177: @code{AC_OUTPUT}で,それぞれの既存のファイル@var{source}から対応するリン
 4178: ク名@var{dest}にリンクを作成します.可能な場合はシンボリックリンクを作成
 4179: し,それ以外ではハードリンクを作成し,それ以外ではコピーします.
 4180: @var{dest}と@var{source}の名前は,ソースやビルドディレクトリのトップレベ
 4181: ルからの相対的なものにすべきです.このマクロは,実際にファイルを作成する
 4182: マクロの一つです.@ref{Configuration Actions}を参照してください.
 4183: 
 4184: @c For example, this call:
 4185: @c 
 4186: 例えば,以下のように呼び出します.
 4187: 
 4188: @example
 4189: AC_CONFIG_LINKS(host.h:config/$machine.h
 4190:                 object.h:config/$obj_format.h)
 4191: @end example
 4192: 
 4193: @noindent
 4194: @c creates in the current directory @file{host.h} as a link to
 4195: @c @file{@var{srcdir}/config/$machine.h}, and @file{object.h} as a
 4196: @c link to @file{@var{srcdir}/config/$obj_format.h}.
 4197: @c 
 4198: これで,現在のディレクトリに@file{@var{srcdir}/config/$machine.h}へのリ
 4199: ンク@file{host.h}と,@file{@var{srcdir}/config/$obj_format.h}へのリンク
 4200: @file{object.h}を作成します.
 4201: 
 4202: @c The tempting value @samp{.} for @var{dest} is invalid: it makes it
 4203: @c impossible for @samp{config.status} to guess the links to establish.
 4204: @c 
 4205: @var{dest}に対して使用したい値@samp{.}は有効ではありません.そうすると,
 4206: @samp{config.status}で作成するリンクを推定することが不可能になります.
 4207: 
 4208: One can then run:
 4209: @example
 4210: ./config.status host.h object.h
 4211: @end example
 4212: @noindent
 4213: to create the links.
 4214: @end defmac
 4215: 
 4216: 
 4217: 
 4218: @node Subdirectories
 4219: @c @section Configuring Other Packages in Subdirectories
 4220: @section サブディレクトリで他のパッケージをコンフィグレーションする
 4221: 
 4222: @c In most situations, calling @code{AC_OUTPUT} is sufficient to produce
 4223: @c @file{Makefile}s in subdirectories.  However, @command{configure} scripts
 4224: @c that control more than one independent package can use
 4225: @c @code{AC_CONFIG_SUBDIRS} to run @command{configure} scripts for other
 4226: @c packages in subdirectories.
 4227: @c 
 4228: ほとんどの場合,@code{AC_OUTPUT}を呼び出すことで,サブディレクトリの 
 4229: @file{Makefile}を作成するためには十分です.しかし,一つ以上の独立したパッ
 4230: ケージを制御する@command{configure}スクリプトで,サブディレクトリの他の
 4231: パッケージの@command{configure}スクリプトを実行するために
 4232: @code{AC_CONFIG_SUBDIRS}を使用することが可能です.
 4233: 
 4234: @defmac AC_CONFIG_SUBDIRS (@var{dir} @dots{})
 4235: @acindex CONFIG_SUBDIRS
 4236: @ovindex subdirs
 4237: @c Make @code{AC_OUTPUT} run @command{configure} in each subdirectory
 4238: @c @var{dir} in the given whitespace-separated list.  Each @var{dir} should
 4239: @c be a literal, i.e., please do not use:
 4240: @c 
 4241: 空白で区切られたリストで与えられているそれぞれのサブディレクトリ
 4242: @var{dir}で,@code{AC_OUTPUT}に@command{configure}を実行させます.それぞ
 4243: れの@var{dir}はリテラルにすべきです.すなわち,以下のように使用しないで
 4244: ください.
 4245: 
 4246: @example
 4247: if test "$package_foo_enabled" = yes; then
 4248:   $my_subdirs="$my_subdirs foo"
 4249: fi
 4250: AC_CONFIG_SUBDIRS($my_subdirs)
 4251: @end example
 4252: 
 4253: @noindent
 4254: @c because this prevents @samp{./configure --help=recursive} from
 4255: @c displaying the options of the package @code{foo}.  Rather, you should
 4256: @c write:
 4257: @c 
 4258: これは@samp{./configure --help=recursive}でのパッケージ@code{foo}のオプ
 4259: ション表示を妨げるためです.その代わりに以下のように書くべきです.
 4260: 
 4261: @example
 4262: if test "$package_foo_enabled" = yes; then
 4263:   AC_CONFIG_SUBDIRS(foo)
 4264: fi
 4265: @end example
 4266: 
 4267: @c If a given @var{dir} is not found, an error is reported: if the
 4268: @c subdirectory is optional, write:
 4269: @c 
 4270: 該当する@var{dir}が見つからない場合でもエラーを報告しません.サブディレ
 4271: クトリがオプションの場合,以下のように書いてください.
 4272: 
 4273: @example
 4274: if test -d $srcdir/foo; then
 4275:   AC_CONFIG_SUBDIRS(foo)
 4276: fi
 4277: @end example
 4278: 
 4279: @c If a given @var{dir} contains @command{configure.gnu}, it is run instead
 4280: @c of @command{configure}.  This is for packages that might use a
 4281: @c non-Autoconf script @command{Configure}, which can't be called through a
 4282: @c wrapper @command{configure} since it would be the same file on
 4283: @c case-insensitive filesystems.  Likewise, if a @var{dir} contains
 4284: @c @file{configure.ac} but no @command{configure}, the Cygnus
 4285: @c @command{configure} script found by @code{AC_CONFIG_AUX_DIR} is used.
 4286: @c 
 4287: 該当する@var{dir}に@file{configure.gnu}が含まれている場合,
 4288: @command{configure}の代わりにそれを実行します.これは,Autoconfスクリプ
 4289: トではない@command{Configure}を使用しているパッケージに対するもので,大
 4290: 文字小文字を識別しないファイルシステムでは同じファイルになるので,それを
 4291: @command{configure}のラッパーとして呼び出すことは不可能です.同様に,
 4292: @var{dir}が@file{configure.ac}を含んでいて@command{configure}が無い場合,
 4293: @code{AC_CONFIG_AUXDIR}で見つかるCygnusの@command{configure}スクリプトが
 4294: 使用されます.
 4295: 
 4296: @c The subdirectory @command{configure} scripts are given the same command
 4297: @c line options that were given to this @command{configure} script, with minor
 4298: @c changes if needed, which include:
 4299: @c 
 4300: サブディレクトリの@command{configure}スクリプトには,この
 4301: @command{configure}スクリプトに与えられたものと同じコマンドラインオプショ
 4302: ンが渡され,必要場合は少し変更され,変更されるものには以下のものが含まれ
 4303: ます.
 4304: 
 4305: @itemize @minus
 4306: @item
 4307: @c adjusting a relative path for the cache file;
 4308: @c 
 4309: キャッシュファイルへの相対的なパスを調整.
 4310: 
 4311: @item
 4312: @c adjusting a relative path for the source directory;
 4313: @c 
 4314: ソースディレクトリへの相対的なパスを調整.
 4315: 
 4316: @item
 4317: @c propagating the current value of @code{$prefix}, including if it was
 4318: @c defaulted, and if the default values of the top level and of the subdirectory
 4319: @c @file{configure} differ.
 4320: @c 
 4321: デフォルトの場合を含め,現在の@code{$prefix}の値を,トップレベルとサブディ
 4322: レクトリの@file{configure}のデフォルト値が異なっている場合でも伝搬させま
 4323: す.
 4324: @end itemize
 4325: 
 4326: @c This macro also sets the output variable @code{subdirs} to the list of
 4327: @c directories @samp{@var{dir} @dots{}}.  @file{Makefile} rules can use
 4328: @c this variable to determine which subdirectories to recurse into.
 4329: @c 
 4330: このマクロは,出力変数@code{subdirs}も,ディレクトリのリスト
 4331: @samp{@var{dir}@dots{}}に設定します.@file{Makefile}の規則は,この値をサ
 4332: ブディレクトリの定義に再帰的に使用することが可能です.
 4333: 
 4334: @c This macro may be called multiple times.
 4335: @c 
 4336: このマクロは何度でも呼び出し可能です.
 4337: @end defmac
 4338: 
 4339: @node Default Prefix
 4340: @c @section Default Prefix
 4341: @section デフォルトプレフィクス
 4342: 
 4343: @c By default, @command{configure} sets the prefix for files it installs to
 4344: @c @file{/usr/local}.  The user of @command{configure} can select a different
 4345: @c prefix using the @option{--prefix} and @option{--exec-prefix} options.
 4346: @c There are two ways to change the default: when creating
 4347: @c @command{configure}, and when running it.
 4348: @c 
 4349: @command{configure}はデフォルトで,ファイルをインストールするプレフィク
 4350: スを@file{/usr/local}に設定します.@command{configure}のユーザは,異なる
 4351: ディレクトリを,@samp{--prefix}と@samp{--exec-prefix}オプションで選択す
 4352: ることが可能です.デフォルトを変更する方法は2つあります.
 4353: @command{configure}を作成するときと,実行するときです.
 4354: 
 4355: @c Some software packages might want to install in a directory other than
 4356: @c @file{/usr/local} by default.  To accomplish that, use the
 4357: @c @code{AC_PREFIX_DEFAULT} macro.
 4358: @c 
 4359: デフォルトで,@file{/usr/local}以外のディレクトリにインストールしたい,
 4360: ソフトウェアパッケージもあります.そうするために, 
 4361: @code{AC_PREFIX_DEFAULT}マクロを使用してください.
 4362: 
 4363: @defmac AC_PREFIX_DEFAULT (@var{prefix})
 4364: @acindex PREFIX_DEFAULT
 4365: @c Set the default installation prefix to @var{prefix} instead of
 4366: @c @file{/usr/local}.
 4367: @c 
 4368: デフォルトのインストールプレフィクスを,@file{/usr/local}の代わりに 
 4369: @var{prefix}に設定します.
 4370: @end defmac
 4371: 
 4372: @c It may be convenient for users to have @command{configure} guess the
 4373: @c installation prefix from the location of a related program that they
 4374: @c have already installed.  If you wish to do that, you can call
 4375: @c @code{AC_PREFIX_PROGRAM}.
 4376: @c 
 4377: ユーザが既にインストールしている関連するプログラムの場所から, 
 4378: @command{configure}がインストールプレフィクスを推測すると便利かもしれま
 4379: せん.そうしたい場合,@code{AC_PREFIX_PROGRAM}を呼び出します.
 4380: 
 4381: @defmac AC_PREFIX_PROGRAM (@var{program})
 4382: @acindex PREFIX_PROGRAM
 4383: @c If the user did not specify an installation prefix (using the
 4384: @c @option{--prefix} option), guess a value for it by looking for
 4385: @c @var{program} in @code{PATH}, the way the shell does.  If @var{program}
 4386: @c is found, set the prefix to the parent of the directory containing
 4387: @c @var{program}, else default the prefix as described above
 4388: @c (@file{/usr/local} or @code{AC_PREFIX_DEFAULT}).  For example, if
 4389: @c @var{program} is @code{gcc} and the @code{PATH} contains
 4390: @c @file{/usr/local/gnu/bin/gcc}, set the prefix to @file{/usr/local/gnu}.
 4391: @c 
 4392: ユーザが(@samp{--prefix}オプションを使用して)インストールプレフィクスを
 4393: 指定しない場合,シェルが行うように,@code{PATH}で@var{program}を探し,そ
 4394: の値を推測します.@var{program}が見つかった場合,プレフィクスを
 4395: @var{program}を含むディレクトリの親に設定します.そうでない場合,上記の
 4396: もの(@file{/usr/local}や@code{AC_PREFIX_DEFAULT})がデフォルトのプレフィ
 4397: クスになります.例えば,@var{program}が@code{gcc}で,@code{PATH}が
 4398: @file{/usr/local/gnu/bin/gcc} を含んでいる場合,プレフィクスを 
 4399: @file{/usr/local/gnu}に設定します.
 4400: @end defmac
 4401: 
 4402: 
 4403: 
 4404: @c ======================================================== Existing tests
 4405: 
 4406: @node Existing Tests
 4407: @c @chapter Existing Tests
 4408: @chapter 存在の調査
 4409: 
 4410: @c These macros test for particular system features that packages might
 4411: @c need or want to use.  If you need to test for a kind of feature that
 4412: @c none of these macros check for, you can probably do it by calling
 4413: @c primitive test macros with appropriate arguments (@pxref{Writing
 4414: @c Tests}).
 4415: @c 
 4416: 以下のマクロは,パッケージが必要とする,あるいは使用する,特定のシステム
 4417: の特徴をテストします.これらのマクロが調査しない特徴のテストが必要な場合,
 4418: 適切な引数で基本のテストマクロを呼び出すことで,おそらく可能です
 4419: (@pxref{Writing Tests}).
 4420: 
 4421: @c These tests print messages telling the user which feature they're
 4422: @c checking for, and what they find.  They cache their results for future
 4423: @c @command{configure} runs (@pxref{Caching Results}).
 4424: @c 
 4425: これらのテストは,調査している特徴と見つかったものをユーザに伝えるメッセー
 4426: ジを出力します.将来,@command{configure}を実行するため,結果をキャッシュ
 4427: します(@pxref{Caching Results}).
 4428: 
 4429: @c Some of these macros set output variables.  @xref{Makefile
 4430: @c Substitutions}, for how to get their values.  The phrase ``define
 4431: @c @var{name}'' is used below as a shorthand to mean ``define C
 4432: @c preprocessor symbol @var{name} to the value 1''.  @xref{Defining
 4433: @c Symbols}, for how to get those symbol definitions into your program.
 4434: @c 
 4435: これらのマクロには,出力変数を設定するものもあります.変数の取得方法は, 
 4436: @xref{Makefile Substitutions}.  ``@var{name}を定義します''という文章は,
 4437: ``Cプリプロセッサのシンボル@var{name}の値を1に定義します'' という意味を
 4438: 短縮したのもとして,以下で使用します.プログラムでシンボル定義を得る方法
 4439: は, @xref{Defining Symbols}.
 4440: 
 4441: @menu
 4442: * Common Behavior::             Macros' standard schemes
 4443: * Alternative Programs::        Selecting between alternative programs
 4444: * Files::                       Checking for the existence of files
 4445: * Libraries::                   Library archives that might be missing
 4446: * Library Functions::           C library functions that might be missing
 4447: * Header Files::                Header files that might be missing
 4448: * Declarations::                Declarations that may be missing
 4449: * Structures::                  Structures or members that might be missing
 4450: * Types::                       Types that might be missing
 4451: * Compilers and Preprocessors::  Checking for compiling programs
 4452: * System Services::             Operating system services
 4453: * UNIX Variants::               Special kludges for specific UNIX variants
 4454: @end menu
 4455: 
 4456: @node Common Behavior
 4457: @c @section Common Behavior
 4458: @section 一般的な動作
 4459: 
 4460: @c Much effort has been expended to make Autoconf easy to learn.  The most
 4461: @c obvious way to reach this goal is simply to enforce standard interfaces
 4462: @c and behaviors, avoiding exceptions as much as possible.  Because of
 4463: @c history and inertia, unfortunately, there are still too many exceptions
 4464: @c in Autoconf; nevertheless, this section describes some of the common
 4465: @c rules.
 4466: @c 
 4467: Autoconfの学習が簡単になるように努力してきました.このゴールに到達するた
 4468: めの最も明白な方法は,できるだけ例外を避けながら,単純に標準的なインタ
 4469: フェースと動作を実施することです.残念ながら,歴史と慣性のため,多くの例
 4470: 外がAutoconfにはまだ存在しています.それにもかかわらず,このセクションで
 4471: は,一般的な規則を記述します.
 4472: 
 4473: @menu
 4474: * Standard Symbols::            Symbols defined by the macros
 4475: * Default Includes::            Includes used by the generic macros
 4476: @end menu
 4477: 
 4478: @node Standard Symbols
 4479: @c @subsection Standard Symbols
 4480: @subsection 標準的なシンボル
 4481: 
 4482: @c All the generic macros that @code{AC_DEFINE} a symbol as a result of
 4483: @c their test transform their @var{argument}s to a standard alphabet.
 4484: @c First, @var{argument} is converted to upper case and any asterisks
 4485: @c (@samp{*}) are each converted to @samp{P}.  Any remaining characters
 4486: @c that are not alphanumeric are converted to underscores.
 4487: @c 
 4488: テストの結果,シンボルを@code{AC_DEFINE}する全ての一般的なマクロは,その
 4489: 引数を標準的なアルファベットに変換します.最初に,@var{argument}は大文字
 4490: に変換され,あらゆるアスタリスク(@samp{*})は,それぞれ@samp{P}に変換され
 4491: ます.アルファベットではない残りの全ての文字は,アンダースコアに変換され
 4492: ます.
 4493: 
 4494: @c For instance,
 4495: @c 
 4496: 例えば以下のものを考えます.
 4497: 
 4498: @example
 4499: AC_CHECK_TYPES(struct $Expensive*)
 4500: @end example
 4501: 
 4502: @noindent
 4503: @c will define the symbol @samp{HAVE_STRUCT__EXPENSIVEP} if the check
 4504: @c succeeds.
 4505: @c 
 4506: これは,調査が成功した場合,シンボル@samp{HAVE_STRUCT__EXPENSIVEP}を定義
 4507: します.
 4508: 
 4509: 
 4510: @node Default Includes
 4511: @c @subsection Default Includes
 4512: @subsection デフォルトのインクルード
 4513: @cindex Includes, default
 4514: 
 4515: @c Several tests depend upon a set of header files.  Since these headers
 4516: @c are not universally available, tests actually have to provide a set of
 4517: @c protected includes, such as:
 4518: @c 
 4519: ヘッダファイルの設定に依存するテストもあります.これらのヘッダは例外無く
 4520: 利用可能というわけではないので,テストは,以下のようなインクルードを保護
 4521: する(コードの)組を,実際に提供する必要があります.
 4522: 
 4523: @example
 4524: @group
 4525: #if TIME_WITH_SYS_TIME
 4526: # include <sys/time.h>
 4527: # include <time.h>
 4528: #else
 4529: # if HAVE_SYS_TIME_H
 4530: #  include <sys/time.h>
 4531: # else
 4532: #  include <time.h>
 4533: # endif
 4534: #endif
 4535: @end group
 4536: @end example
 4537: 
 4538: @noindent
 4539: @c Unless you know exactly what you are doing, you should avoid using
 4540: @c unconditional includes, and check the existence of the headers you
 4541: @c include beforehand (@pxref{Header Files}).
 4542: @c 
 4543: どうすれば良いか正確に知らない場合,無条件のインクルードの使用は避け,イ
 4544: ンクルードする前にヘッダの存在を調査すべきです(@pxref{Header Files}).
 4545: 
 4546: @c Most generic macros provide the following default set of includes:
 4547: @c 
 4548: 最も一般的なマクロは,以下のようなインクルードのデフォルトの(コードの)組
 4549: を提供しています.
 4550: 
 4551: @example
 4552: @group
 4553: #include <stdio.h>
 4554: #if HAVE_SYS_TYPES_H
 4555: # include <sys/types.h>
 4556: #endif
 4557: #if HAVE_SYS_STAT_H
 4558: # include <sys/stat.h>
 4559: #endif
 4560: #if STDC_HEADERS
 4561: # include <stdlib.h>
 4562: # include <stddef.h>
 4563: #else
 4564: # if HAVE_STDLIB_H
 4565: #  include <stdlib.h>
 4566: # endif
 4567: #endif
 4568: #if HAVE_STRING_H
 4569: # if !STDC_HEADERS && HAVE_MEMORY_H
 4570: #  include <memory.h>
 4571: # endif
 4572: # include <string.h>
 4573: #endif
 4574: #if HAVE_STRINGS_H
 4575: # include <strings.h>
 4576: #endif
 4577: #if HAVE_INTTYPES_H
 4578: # include <inttypes.h>
 4579: #else
 4580: # if HAVE_STDINT_H
 4581: #  include <stdint.h>
 4582: # endif
 4583: #endif
 4584: #if HAVE_UNISTD_H
 4585: # include <unistd.h>
 4586: #endif
 4587: @end group
 4588: @end example
 4589: 
 4590: @c If the default includes are used, then Autoconf will automatically check
 4591: @c for the presence of these headers and their compatibility, i.e., you
 4592: @c don't need to run @code{AC_HEADERS_STDC}, nor check for @file{stdlib.h}
 4593: @c etc.
 4594: @c 
 4595: デフォルトのインクルードが使用される場合,Autoconfはこれらのヘッダの存在
 4596: とその互換性を自動的に調査します.すなわち,@code{AC_HEADERS_STDC}を実行
 4597: する必要も,@file{stdlib.h}などを調査する必要もありません.
 4598: 
 4599: @c These headers are checked for in the same order as they are included.
 4600: @c For instance, on some systems @file{string.h} and @file{strings.h} both
 4601: @c exist, but conflict.  Then @code{HAVE_STRING_H} will be defined, but
 4602: @c @code{HAVE_STRINGS_H} won't.
 4603: @c 
 4604: これらのヘッダは,インクルードされる順番と同じ順番で調査されます.例えば,
 4605: @file{string.h}と@file{strings.h}の両方があるシステムもありますが,競合
 4606: しません.そこでは,@code{HAVE_STRING_H}は定義されますが,
 4607: @code{HAVE_STRINGS_H}は定義されません.
 4608: 
 4609: @node Alternative Programs
 4610: @c @section Alternative Programs
 4611: @section プログラムの選択
 4612: @cindex Programs, checking
 4613: 
 4614: @c These macros check for the presence or behavior of particular programs.
 4615: @c They are used to choose between several alternative programs and to
 4616: @c decide what to do once one has been chosen.  If there is no macro
 4617: @c specifically defined to check for a program you need, and you don't need
 4618: @c to check for any special properties of it, then you can use one of the
 4619: @c general program-check macros.
 4620: @c 
 4621: これらのマクロは,特定のプログラムとその動作を調査します.それらは,いく
 4622: つかのプログラムからどれかを選択し,一旦選ばれると何をするのかを決定する
 4623: ために使用されます.必要なプログラムを調査するために特別に定義されている
 4624: マクロが無い場合,一般的なプログラム調査のマクロの一つを使用することが可
 4625: 能です.
 4626: 
 4627: @menu
 4628: * Particular Programs::         Special handling to find certain programs
 4629: * Generic Programs::            How to find other programs
 4630: @end menu
 4631: 
 4632: @node Particular Programs
 4633: @c @subsection Particular Program Checks
 4634: @subsection 特定のプログラムの調査
 4635: 
 4636: @c These macros check for particular programs---whether they exist, and
 4637: @c in some cases whether they support certain features.
 4638: @c 
 4639: 以下のマクロは,特定のプログラムを調査します --- それは存在するかどうか,
 4640: そして場合によっては特定の機能をサポートするかどうかです.
 4641: 
 4642: @defmac AC_PROG_AWK
 4643: @acindex PROG_AWK
 4644: @ovindex AWK
 4645: @c Check for @code{gawk}, @code{mawk}, @code{nawk}, and @code{awk}, in that
 4646: @c order, and set output variable @code{AWK} to the first one that is found.
 4647: @c It tries @code{gawk} first because that is reported to be the
 4648: @c best implementation.
 4649: @c 
 4650: @code{gawk},@code{mawk},@code{nawk},そして@code{awk}を,この順番で調
 4651: 査し,最初に見つかったものに出力変数@code{AWK}を設定します.最良の実装と
 4652: 報告されているので,最初に@code{gawk}を調査します.
 4653: @end defmac
 4654: 
 4655: @defmac AC_PROG_EGREP
 4656: @acindex PROG_EGREP
 4657: @ovindex EGREP
 4658: @c Check for @code{grep -E} and @code{egrep}, in that order, and set
 4659: @c output variable @code{EGREP} to the first one that is found.
 4660: @c 
 4661: @code{grep -E}と@code{egrep}をこの順番で調査し,最初に見つかったもので出
 4662: 力変数@code{EGREP}を設定します.
 4663: @end defmac
 4664: 
 4665: @defmac AC_PROG_FGREP
 4666: @acindex PROG_FGREP
 4667: @ovindex FGREP
 4668: @c Check for @code{grep -F} and @code{fgrep}, in that order, and set
 4669: @c output variable @code{FGREP} to the first one that is found.
 4670: @c 
 4671: @code{grep -F}と@code{fgrep}をこの順番で調査し,最初に見つかったもので出
 4672: 力変数@code{FGREP}を設定します.
 4673: @end defmac
 4674: 
 4675: @defmac AC_PROG_INSTALL
 4676: @acindex PROG_INSTALL
 4677: @ovindex INSTALL
 4678: @ovindex INSTALL_PROGRAM
 4679: @ovindex INSTALL_DATA
 4680: @ovindex INSTALL_SCRIPT
 4681: @c Set output variable @code{INSTALL} to the path of a @sc{bsd} compatible
 4682: @c @code{install} program, if one is found in the current @code{PATH}.
 4683: @c Otherwise, set @code{INSTALL} to @samp{@var{dir}/install-sh -c},
 4684: @c checking the directories specified to @code{AC_CONFIG_AUX_DIR} (or its
 4685: @c default directories) to determine @var{dir} (@pxref{Output}).  Also set
 4686: @c the variables @code{INSTALL_PROGRAM} and @code{INSTALL_SCRIPT} to
 4687: @c @samp{$@{INSTALL@}} and @code{INSTALL_DATA} to @samp{$@{INSTALL@} -m 644}.
 4688: @c 
 4689: 現在の@code{PATH}で@sc{bsd}互換の@code{install}プログラムが見つかった場
 4690: 合,出力変数@code{INSTALL}をそのパスに設定します.それ以外では, 
 4691: @code{INSTALL}を@samp{@var{dir}/install-sh -c}に設定し, 
 4692: @code{AC_CONFIG_AUX_DIR}で指定されたディレクトリ(またはデフォルトディレ
 4693: クトリ)を,@var{dir}を決定するために調査します(@pxref{Output}).また,変
 4694: 数@code{INSTALL_PROGRAM}と@code{INSTALL_SCRIPT}を@samp{$@{INSTALL@}}に,
 4695: @samp{$@{INSTALL@}}と@code{INSTALL_DATA}を@samp{$@{INSTALL@}-m 644}に設
 4696: 定します.
 4697: 
 4698: @c This macro screens out various instances of @code{install} known not to
 4699: @c work.  It prefers to find a C program rather than a shell script, for
 4700: @c speed.  Instead of @file{install-sh}, it can also use @file{install.sh},
 4701: @c but that name is obsolete because some @command{make} programs have a rule
 4702: @c that creates @file{install} from it if there is no @file{Makefile}.
 4703: @c 
 4704: このマクロは,動作しないことが知られている@code{install}の様々な実例をふ
 4705: るい落とします.それは速度のため,シェルスクリプトよりCプログラムを見付
 4706: けようとします.@file{install-sh}の代わりに,@file{install.sh}を使用する
 4707: ことも可能ですが,@command{make}プログラムには, @file{Makefile}が無い場
 4708: 合,それから@file{install}を作成する規則を持っているものもあるので,その
 4709: 名前は時代遅れです.
 4710: 
 4711: @c Autoconf comes with a copy of @file{install-sh} that you can use.  If
 4712: @c you use @code{AC_PROG_INSTALL}, you must include either
 4713: @c @file{install-sh} or @file{install.sh} in your distribution, or
 4714: @c @command{configure} will produce an error message saying it can't find
 4715: @c them---even if the system you're on has a good @code{install} program.
 4716: @c This check is a safety measure to prevent you from accidentally leaving
 4717: @c that file out, which would prevent your package from installing on
 4718: @c systems that don't have a @sc{bsd}-compatible @code{install} program.
 4719: @c 
 4720: 使用可能な@file{install-sh}のコピーは,Autoconfでインストールされます. 
 4721: @code{AC_PROG_INSTALL}を使用する場合,配布物に@file{install-sh}か 
 4722: @file{install.sh}を含める必要があり,そうしない場合,@command{configure}
 4723: は見つからない旨,エラーメッセージを出力します --- たとえシステムに良い 
 4724: @code{install}があってもそうなります.この調査は,そのファイルをたまたま
 4725: 入れ忘れることを阻止する安全対策で,それは@sc{bsd}互換の@code{install}プ
 4726: ログラムが無いシステムでパッケージをインストールすることを妨げます.
 4727: 
 4728: @c If you need to use your own installation program because it has features
 4729: @c not found in standard @code{install} programs, there is no reason to use
 4730: @c @code{AC_PROG_INSTALL}; just put the file name of your program into your
 4731: @c @file{Makefile.in} files.
 4732: @c 
 4733: 標準的な@code{install}プログラムには見当たらない特徴があるために,独自の
 4734: インストールプログラムを使用する必要がある場合,@code{AC_PROG_INSTALL}を
 4735: 使用する理由はありません.@file{Makefile.in}ファイルにプログラムのファイ
 4736: ル名を書き込んでください.
 4737: @end defmac
 4738: 
 4739: @defmac AC_PROG_LEX
 4740: @acindex PROG_LEX
 4741: @ovindex LEX
 4742: @ovindex LEXLIB
 4743: @cvindex YYTEXT_POINTER
 4744: @ovindex LEX_OUTPUT_ROOT
 4745: @c If @code{flex} is found, set output variable @code{LEX} to @samp{flex}
 4746: @c and @code{LEXLIB} to @option{-lfl}, if that library is in a standard
 4747: @c place.  Otherwise set @code{LEX} to @samp{lex} and @code{LEXLIB} to
 4748: @c @option{-ll}.
 4749: @c 
 4750: @code{flex}が見つかった場合,ライブラリが標準的な場所にあれば,出力変数 
 4751: @code{LEX}を@samp{flex}に,@code{LEXLIB}を@samp{-lfl}に設定します.それ
 4752: 以外の場合,@code{LEX}を@samp{lex}に,@code{LEXLIB}を@samp{-ll}に設定し
 4753: ます.
 4754: 
 4755: @c Define @code{YYTEXT_POINTER} if @code{yytext} is a @samp{char *} instead
 4756: @c of a @samp{char []}.  Also set output variable @code{LEX_OUTPUT_ROOT} to
 4757: @c the base of the file name that the lexer generates; usually
 4758: @c @file{lex.yy}, but sometimes something else.  These results vary
 4759: @c according to whether @code{lex} or @code{flex} is being used.
 4760: @c 
 4761: @code{yytext}が@samp{char []}ではなく@samp{char *}の場合,
 4762: @code{YYTEXT_POINTER}を定義します.また,出力変数@code{LEX_OUTPUT_ROOT} 
 4763: をlexerが生成するファイル名のベースに設定します.通常は@file{lex.yy}です
 4764: が異なることもあります.これらは,結果として@code{lex}と@code{flex}のど
 4765: ちらが使用されているかに依存して変化します.
 4766: 
 4767: @c You are encouraged to use Flex in your sources, since it is both more
 4768: @c pleasant to use than plain Lex and the C source it produces is portable.
 4769: @c In order to ensure portability, however, you must either provide a
 4770: @c function @code{yywrap} or, if you don't use it (e.g., your scanner has
 4771: @c no @samp{#include}-like feature), simply include a @samp{%noyywrap}
 4772: @c statement in the scanner's source.  Once this done, the scanner is
 4773: @c portable (unless @emph{you} felt free to use nonportable constructs) and
 4774: @c does not depend on any library.  In this case, and in this case only, it
 4775: @c is suggested that you use this Autoconf snippet:
 4776: @c 
 4777: 普通のLexとそれが生成するCソースを使用するより,移植性の面でより好ましい
 4778: ので,ソースでFlexを使用することを推奨します.しかし,移植性を確実にする
 4779: ために,関数@code{yywrap}を提供する,または,それを使用しない場合(例えば,
 4780: スキャナに@samp{#include}のような機能が無い場合),単純にスキャナソースで
 4781: @samp{%noyywrap}文を含める必要があります.一旦このようにすることで,スキャ
 4782: ナは(@emph{あなたが}移植性の無い構成物を使用しない限り)移植性があり,ラ
 4783: イブラリに依存しません.この場合,そしてこの場合のみ,以下のような
 4784: Autoconfの断片を使用することを提案します.
 4785: 
 4786: @example
 4787: AC_PROG_LEX
 4788: if test "$LEX" != flex; then
 4789:   LEX="$SHELL $missing_dir/missing flex"
 4790:   AC_SUBST(LEX_OUTPUT_ROOT, lex.yy)
 4791:   AC_SUBST(LEXLIB, '')
 4792: fi
 4793: @end example
 4794: 
 4795: @c The shell script @command{missing} can be found in the Automake
 4796: @c distribution.
 4797: @c 
 4798: シェルスクリプト@command{missing}は,Automakeの配布物で見つかるはずです.
 4799: 
 4800: @c To ensure backward compatibility, Automake's @code{AM_PROG_LEX} invokes
 4801: @c (indirectly) this macro twice, which will cause an annoying but benign
 4802: @c ``@code{AC_PROG_LEX} invoked multiple times'' warning.  Future versions
 4803: @c of Automake will fix this issue; meanwhile, just ignore this message.
 4804: @c 
 4805: 下位互換を確実にするため,Automakeの@code{AM_PROG_LEX}は,(間接的に)この
 4806: マクロを2度呼び出し,不快な``@code{AC_PROG_LEX} invoked multiple times'' 
 4807: で始まる警告を生じます.将来のバージョンのAutomakeではこの症状は修正され
 4808: るでしょう.それまで,このメッセージを無視してください.
 4809: @end defmac
 4810: 
 4811: @defmac AC_PROG_LN_S
 4812: @acindex PROG_LN_S
 4813: @ovindex LN_S
 4814: @c If @samp{ln -s} works on the current file system (the operating system
 4815: @c and file system support symbolic links), set the output variable
 4816: @c @code{LN_S} to @samp{ln -s}; otherwise, if @samp{ln} works, set
 4817: @c @code{LN_S} to @samp{ln}, and otherwise set it to @samp{cp -p}.
 4818: @c 
 4819: 現在のファイルシステムで,@samp{ln -s}が動作する(オペレーティングシステ
 4820: ムとファイルシステムがシンボリックリンクをサポートしている)場合,出力変
 4821: 数@code{LN_S}を@samp{ln -s}に設定します.それ以外の場合は,@samp{ln}が動
 4822: 作する場合は,@code{LN_S}を@samp{ln}に設定し,そうでもなければ@samp{cp
 4823: -p}に設定します.
 4824: 
 4825: @c If you make a link in a directory other than the current directory, its
 4826: @c meaning depends on whether @samp{ln} or @samp{ln -s} is used.  To safely
 4827: @c create links using @samp{$(LN_S)}, either find out which form is used
 4828: @c and adjust the arguments, or always invoke @code{ln} in the directory
 4829: @c where the link is to be created.
 4830: @c 
 4831: リンクをカレントディレクトリ以外のディレクトリに作成する場合,その方法は,
 4832: @samp{ln}と@samp{ln -s}のどちらが使用されるかに依存します. 
 4833: @samp{$(LN_S)}を使用して安全にリンクを作成するため,使用する書式と正しい
 4834: 引数を理解するか,リンクが作成されるディレクトリで@code{ln}を常に呼び出
 4835: すか,どちらかにしてください.
 4836: 
 4837: @c In other words, it does not work to do:
 4838: @c 
 4839: 言い替えると,以下のものは動作しません.
 4840: @example
 4841: $(LN_S) foo /x/bar
 4842: @end example
 4843: 
 4844: @c Instead, do:
 4845: @c 
 4846: その代わりに,以下のようにします.
 4847: 
 4848: @example
 4849: (cd /x && $(LN_S) foo bar)
 4850: @end example
 4851: @end defmac
 4852: 
 4853: @defmac AC_PROG_RANLIB
 4854: @acindex PROG_RANLIB
 4855: @ovindex RANLIB
 4856: @c Set output variable @code{RANLIB} to @samp{ranlib} if @code{ranlib}
 4857: @c is found, and otherwise to @samp{:} (do nothing).
 4858: @c 
 4859: @code{ranlib}が見つかった場合,出力変数@code{RANLIB}を@samp{ranlib}に設
 4860: 定し,それ以外では,@samp{:}(何もしません)に設定します.
 4861: @end defmac
 4862: 
 4863: @defmac AC_PROG_YACC
 4864: @acindex PROG_YACC
 4865: @ovindex YACC
 4866: @c If @code{bison} is found, set output variable @code{YACC} to @samp{bison
 4867: @c -y}.  Otherwise, if @code{byacc} is found, set @code{YACC} to
 4868: @c @samp{byacc}.  Otherwise set @code{YACC} to @samp{yacc}.
 4869: @c 
 4870: @code{bison}が見つかった場合,出力変数@code{YACC}を@samp{bison -y}に設定
 4871: します.それ以外で,@code{byacc}が見つかる場合,@code{YACC}を
 4872: @samp{byacc}に設定します.それ以外では,@code{YACC}を@samp{yacc}に設定し
 4873: ます.
 4874: @end defmac
 4875: 
 4876: @node Generic Programs
 4877: @c @subsection Generic Program and File Checks
 4878: @subsection 一般的なプログラムとファイルの調査
 4879: 
 4880: @c These macros are used to find programs not covered by the ``particular''
 4881: @c test macros.  If you need to check the behavior of a program as well as
 4882: @c find out whether it is present, you have to write your own test for it
 4883: @c (@pxref{Writing Tests}).  By default, these macros use the environment
 4884: @c variable @code{PATH}.  If you need to check for a program that might not
 4885: @c be in the user's @code{PATH}, you can pass a modified path to use
 4886: @c instead, like this:
 4887: @c 
 4888: これらのマクロは,``特定の''テストマクロによってカバーされていないプログ
 4889: ラムを見つけるに使用します.プログラムの存在を確認するだけでなく,その動
 4890: 作を調査する必要がある場合,そうするために独自のテストを書く必要がありま
 4891: す(@pxref{Writing Tests}).デフォルトで,これらのマクロは環境変数
 4892: @code{PATH}を使用します.ユーザの@code{PATH}にない可能性があるプログラム
 4893: を調査する必要がある場合,以下のようにして,パスを編集して渡すことが可能
 4894: です.
 4895: 
 4896: @example
 4897: AC_PATH_PROG([INETD], [inetd], [/usr/libexec/inetd],
 4898:              [$PATH:/usr/libexec:/usr/sbin:/usr/etc:etc])
 4899: @end example
 4900: 
 4901: @c You are strongly encouraged to declare the @var{variable} passed to
 4902: @c @code{AC_CHECK_PROG} etc.@: as precious, @xref{Setting Output Variables},
 4903: @c @code{AC_ARG_VAR}, for more details.
 4904: @c 
 4905: @code{AC_CHECK_PROG}等に渡す@var{variable}を,正確に宣言することを強く推
 4906: 奨します.詳細は,@code{AC_ARG_VAR}と@xref{Setting Output Variables}.
 4907: 
 4908: @defmac AC_CHECK_PROG (@var{variable}, @var{prog-to-check-for}, @var{value-if-found}, @ovar{value-if-not-found}, @ovar{path},  @ovar{reject})
 4909: @acindex CHECK_PROG
 4910: @c Check whether program @var{prog-to-check-for} exists in @code{PATH}.  If
 4911: @c it is found, set @var{variable} to @var{value-if-found}, otherwise to
 4912: @c @var{value-if-not-found}, if given.  Always pass over @var{reject} (an
 4913: @c absolute file name) even if it is the first found in the search path; in
 4914: @c that case, set @var{variable} using the absolute file name of the
 4915: @c @var{prog-to-check-for} found that is not @var{reject}.  If
 4916: @c @var{variable} was already set, do nothing.  Calls @code{AC_SUBST} for
 4917: @c @var{variable}.
 4918: @c 
 4919: @code{PATH}に,プログラム@var{prog-to-check-for}が存在するかどうか調査し
 4920: ます.見つかった場合,@var{variable}を@var{value-if-found}に設定し,それ
 4921: 以外で,@var{value-if-not-found}が与えられている場合は,それに設定します.
 4922: たとえ@var{reject}(絶対パスのファイル名)が最初のサーチパスで見つかった場
 4923: 合でも,それは候補から外します.この場合,@var{prog-to-check-for}が見つ
 4924: かった@var{reject}ではない絶対パスのファイル名を使用し,@var{variable}を
 4925: 設定します.@var{variable}が既に設定されている場合,何もしません.
 4926: @var{variable}に対して@code{AC_SUBST}を呼び出してください.
 4927: @end defmac
 4928: 
 4929: @defmac AC_CHECK_PROGS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
 4930: @acindex CHECK_PROGS
 4931: @c Check for each program in the whitespace-separated list
 4932: @c @var{progs-to-check-for} existing in the @code{PATH}.  If one is found, set
 4933: @c @var{variable} to the name of that program.  Otherwise, continue
 4934: @c checking the next program in the list.  If none of the programs in the
 4935: @c list are found, set @var{variable} to @var{value-if-not-found}; if
 4936: @c @var{value-if-not-found} is not specified, the value of @var{variable}
 4937: @c is not changed.  Calls @code{AC_SUBST} for @var{variable}.
 4938: @c 
 4939: 空白で区切られたリスト@var{progs-to-check-for}のそれぞれのプログラムが
 4940: @code{PATH}に存在するかどうかを調査します.見つかった場合,
 4941: @var{variable}をプログラムの名前に設定します.それ以外の場合は引続き,リ
 4942: ストの次にあるプログラムを調査します.リスト内のプログラムが全く見つから
 4943: ない場合, @var{variable} を@var{value-if-not-found}に設定します. 
 4944: @var{value-if-not-found}が指定されていない場合,@var{variable}は変更され
 4945: ません.@var{variable}に対して@code{AC_SUBST}を呼び出してください.
 4946: @end defmac
 4947: 
 4948: @defmac AC_CHECK_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
 4949: @acindex CHECK_TOOL
 4950: @c Like @code{AC_CHECK_PROG}, but first looks for @var{prog-to-check-for}
 4951: @c with a prefix of the host type as determined by
 4952: @c @code{AC_CANONICAL_HOST}, followed by a dash (@pxref{Canonicalizing}).
 4953: @c For example, if the user runs @samp{configure --host=i386-gnu}, then
 4954: @c this call:
 4955: @c 
 4956: @code{AC_CHECK_PROG}に似ていますが,@code{AC_CANONICAL_HOST}で定義されて
 4957: いるホストタイプにダッシュが続いているプレフィクスを持つ 
 4958: @var{prog-to-check-for}を,最初に探します(@pxref{Canonicalizing}).例え
 4959: ば,ユーザが@samp{configure --host=i386-gnu}を実行している場合,以下のよ
 4960: うに呼び出します.
 4961: @example
 4962: AC_CHECK_TOOL(RANLIB, ranlib, :)
 4963: @end example
 4964: @noindent
 4965: @c sets @code{RANLIB} to @file{i386-gnu-ranlib} if that program exists in
 4966: @c @code{PATH}, or otherwise to @samp{ranlib} if that program exists in
 4967: @c @code{PATH}, or to @samp{:} if neither program exists.
 4968: @c 
 4969: これで,@code{PATH}に@file{i386-gnu-ranlib}というプログラムが存在する場
 4970: 合,@code{RANLIB}を@file{i386-gnu-ranlib}に設定し,それ以外で,
 4971: @code{PATH}に@samp{ranlib}というプログラムがある場合,@code{RANLIB}を
 4972: @samp{ranlib}に設定し,どちらも無い場合は @samp{:}に設定します.
 4973: @end defmac
 4974: 
 4975: @defmac AC_CHECK_TOOLS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
 4976: @acindex CHECK_TOOLS
 4977: @c Like @code{AC_CHECK_TOOL}, each of the tools in the list
 4978: @c @var{progs-to-check-for} are checked with a prefix of the host type as
 4979: @c determined by @code{AC_CANONICAL_HOST}, followed by a dash
 4980: @c (@pxref{Canonicalizing}).  If none of the tools can be found with a
 4981: @c prefix, then the first one without a prefix is used.  If a tool is found,
 4982: @c set @var{variable} to the name of that program.  If none of the tools in
 4983: @c the list are found, set @var{variable} to @var{value-if-not-found}; if
 4984: @c @var{value-if-not-found} is not specified, the value of @var{variable}
 4985: @c is not changed.  Calls @code{AC_SUBST} for @var{variable}.
 4986: @c 
 4987: @code{AC_CHECK_TOOL}に似ていて,@var{progs-to-check-for}でリストアップさ
 4988: れているそれぞれのツールは,@code{AC_CANONICAL_HOST}で決定されたホストタ
 4989: イプを前置し,それにダッシュを続けたものを用いて調査されます
 4990: (@pxref{Canonicalizing}).プレフィクスを用いているツールが見つからない場
 4991: 合,最初にプレフィクス無しのものが使用されます.ツールが見つかった場合,
 4992: @var{variable}をそのプログラム名に設定します.リストのツールが全く見つか
 4993: らない場合,@var{variable}を@var{value-if-not-found}に設定します.
 4994: @var{value-if-not-found}が指定されていない場合,@var{variable}の値は変更
 4995: されません.@var{variable}に対して@code{AC_SUBST}を呼び出してください.
 4996: @end defmac
 4997: 
 4998: @defmac AC_PATH_PROG (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
 4999: @acindex PATH_PROG
 5000: @c Like @code{AC_CHECK_PROG}, but set @var{variable} to the entire
 5001: @c path of @var{prog-to-check-for} if found.
 5002: @c 
 5003: @code{AC_CHECK_PROG}に似ていますが,見つかった場合,@var{variable}を 
 5004: @var{prog-to-check-for}の完全なパスに設定します.
 5005: @end defmac
 5006: 
 5007: @defmac AC_PATH_PROGS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
 5008: @acindex PATH_PROGS
 5009: @c Like @code{AC_CHECK_PROGS}, but if any of @var{progs-to-check-for}
 5010: @c are found, set @var{variable} to the entire path of the program
 5011: @c found.
 5012: @c 
 5013: @code{AC_CHECK_PROGS}に似ていますが,@var{progs-to-check-for}のどれかが
 5014: 見つかった場合,@var{variable}をプログラムが見つかった完全なパスに設定し
 5015: ます.
 5016: @end defmac
 5017: 
 5018: @defmac AC_PATH_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
 5019: @acindex PATH_TOOL
 5020: @c Like @code{AC_CHECK_TOOL}, but set @var{variable} to the entire
 5021: @c path of the program if it is found.
 5022: @c 
 5023: @code{AC_CHECK_TOOL}に似ていますが,見つかった場合,@var{variable}をプロ
 5024: グラムが見つかった完全なパスに設定します.
 5025: @end defmac
 5026: 
 5027: 
 5028: @node Files
 5029: @c @section Files
 5030: @section ファイル
 5031: @cindex File, checking
 5032: 
 5033: @c You might also need to check for the existence of files.  Before using
 5034: @c these macros, ask yourself whether a run-time test might not be a better
 5035: @c solution.  Be aware that, like most Autoconf macros, they test a feature
 5036: @c of the host machine, and therefore, they die when cross-compiling.
 5037: @c 
 5038: ファイルの存在を調査する必要もあるでしょう.以下のマクロを使用する前に,
 5039: 実行時の調査がより良い解決ではないかどうか自問してください.ほとんどの
 5040: Autoconfマクロのように,それらはホストマシンの機能を調査するため,クロス
 5041: コンパイルでは意味が無いことを知っておいてください.
 5042: 
 5043: @defmac AC_CHECK_FILE (@var{file}, @ovar{action-if-found}, @ovar{action-if-not-found})
 5044: @acindex CHECK_FILE
 5045: @c Check whether file @var{file} exists on the native system.  If it is
 5046: @c found, execute @var{action-if-found}, otherwise do
 5047: @c @var{action-if-not-found}, if given.
 5048: @c 
 5049: ネイティブシステムで@var{file}が存在するかどうか調査します.見つかった場
 5050: 合,@var{action-if-found}を実行し,それ以外では,与えられていれば
 5051: @var{action-if-not-found}を実行します.
 5052: @end defmac
 5053: 
 5054: @defmac AC_CHECK_FILES (@var{files}, @ovar{action-if-found}, @ovar{action-if-not-found})
 5055: @acindex CHECK_FILES
 5056: @c Executes @code{AC_CHECK_FILE} once for each file listed in @var{files}.
 5057: @c Additionally, defines @samp{HAVE_@var{file}} (@pxref{Standard Symbols})
 5058: @c for each file found.
 5059: @c 
 5060: @var{files}でリストアップされているそれぞれのファイルに対し,
 5061: @code{AC_CHECK_FILE}を一度実行します.さらに,見つかったそれぞれのファイ
 5062: ルに対して@samp{HAVE@var{file}}を定義します(@pxref{Standard Symbols}).
 5063: @end defmac
 5064: 
 5065: 
 5066: @node Libraries
 5067: @c @section Library Files
 5068: @section ライブラリファイル
 5069: @cindex Library, checking
 5070: 
 5071: @c The following macros check for the presence of certain C, C++, or Fortran
 5072: @c 77 library archive files.
 5073: @c 
 5074: 以下のマクロは,C,C++やFortran 77のライブラリアーカイブファイルの存在を
 5075: 調査します.
 5076: 
 5077: @defmac AC_CHECK_LIB (@var{library}, @var{function}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
 5078: @acindex CHECK_LIB
 5079: @c Depending on the current language(@pxref{Language Choice}), try to
 5080: @c ensure that the C, C++, or Fortran 77 function @var{function} is
 5081: @c available by checking whether a test program can be linked with the
 5082: @c library @var{library} to get the function.  @var{library} is the base
 5083: @c name of the library; e.g., to check for @option{-lmp}, use @samp{mp} as
 5084: @c the @var{library} argument.
 5085: @c 
 5086: 現在の言語に依存して(@pxref{Language Choice}),テストプログラムが関数利
 5087: 用に必要なライブラリ@var{library}とリンク可能かどうかを調査することで,C,
 5088: C++やFortran 77の関数@var{function}が利用可能であることを確認します.
 5089: @var{library}は,ライブラリのベース名です.例えば,@samp{-lmp}を調査する
 5090: ために,@var{library}の引数として@samp{mp}を使用します.
 5091: 
 5092: @c @var{action-if-found} is a list of shell commands to run if the link
 5093: @c with the library succeeds; @var{action-if-not-found} is a list of shell
 5094: @c commands to run if the link fails.  If @var{action-if-found} is not
 5095: @c specified, the default action will prepend @option{-l@var{library}} to
 5096: @c @code{LIBS} and define @samp{HAVE_LIB@var{library}} (in all
 5097: @c capitals). This macro is intended to support building @code{LIBS} in
 5098: @c a right-to-left (least-dependent to most-dependent) fashion such that
 5099: @c library dependencies are satisfied as a natural side-effect of
 5100: @c consecutive tests.  Some linkers are very sensitive to library ordering
 5101: @c so the order in which @code{LIBS} is generated is important to reliable
 5102: @c detection of libraries.
 5103: @c 
 5104: @var{action-if-found}は,ライブラリとのリンクが成功した場合に実行するシェ
 5105: ルコマンドのリストです.@var{action-if-not-found}は,リンクが失敗した場
 5106: 合に実行するシェルコマンドのリストです.@var{action-if-found}が指定され
 5107: ていない場合,デフォルトで@samp{-l@var{library}}を@code{LIBS}に加え, 
 5108: @samp{HAVE_LIB@var{library}}を(全て大文字で)定義します.このマクロは,ラ
 5109: イブラリの依存が連続的なテストの自然な副作用で十分になるように,右から左
 5110: (最小依存から最大依存)の方法で@code{LIBS}のビルドサポートを試みます.ラ
 5111: イブラリの順序に注意が必要なリンカもあるので,@code{LIBS}が生成される順
 5112: 序は,ライブラリの信頼できる検出にとって重要です.
 5113: 
 5114: @c If linking with @var{library} results in unresolved symbols that would
 5115: @c be resolved by linking with additional libraries, give those libraries
 5116: @c as the @var{other-libraries} argument, separated by spaces:
 5117: @c e.g., @option{-lXt -lX11}.  Otherwise, this macro will fail to detect
 5118: @c that @var{library} is present, because linking the test program will
 5119: @c always fail with unresolved symbols.  The @var{other-libraries} argument
 5120: @c should be limited to cases where it is desirable to test for one library
 5121: @c in the presence of another that is not already in @code{LIBS}.
 5122: @c 
 5123: @var{library}とのリンクの結果が,追加のライブラリとのリンクで解決される
 5124: 未解決のシンボルとなる場合,これらのライブラリを,@samp{-lXt -lX11}のよ
 5125: うに,スペースで区切られた@var{other-libraries}引数で与えてください.そ
 5126: うしない場合,テストプログラムとのリンクが未解決のシンボルで常に失敗する
 5127: ので,このマクロは@var{library}の存在の検出に失敗します.
 5128: @var{other-libraries}引数は,まだ@code{LIBS}に無い,その他のライブラリの
 5129: 一つを調査することが望ましい場合は制限があります.
 5130: @end defmac
 5131: 
 5132: 
 5133: @defmac AC_SEARCH_LIBS (@var{function}, @var{search-libs}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
 5134: @acindex SEARCH_LIBS
 5135: @c Search for a library defining @var{function} if it's not already
 5136: @c available.  This equates to calling @code{AC_TRY_LINK_FUNC} first
 5137: @c with no libraries, then for each library listed in @var{search-libs}.
 5138: @c 
 5139: まだ利用可能ではない,@var{function}を定義しているライブラリを探します.
 5140: これは,@var{search-libs}でリストアップされているそれぞれのライブラリに
 5141: 対し,@code{AC_TRY_LINK_FUNC}の最初の引数をライブラリ無しで呼び出しこと
 5142: と同じです.
 5143: 
 5144: @c Add @option{-l@var{library}} to @code{LIBS} for the first library found
 5145: @c to contain @var{function}, and run @var{action-if-found}.  If the
 5146: @c function is not found, run @var{action-if-not-found}.
 5147: @c 
 5148: @var{function}が含まれている最初のライブラリに対して,
 5149: @option{-l@var{library}}を@code{LIBS}に追加し,@var{action-if-found}を実
 5150: 行します.関数が見つからない場合,@var{action-if-not-found}を実行します.
 5151: 
 5152: @c If linking with @var{library} results in unresolved symbols that would
 5153: @c be resolved by linking with additional libraries, give those libraries
 5154: @c as the @var{other-libraries} argument, separated by spaces:
 5155: @c e.g., @option{-lXt -lX11}.  Otherwise, this macro will fail to detect
 5156: @c that @var{function} is present, because linking the test program will
 5157: @c always fail with unresolved symbols.
 5158: @c 
 5159: @var{library}とのリンクの結果が,未解決のシンボルで,追加のライブラリと
 5160: のリンクで解決できる場合,これらのライブラリを,@samp{-lXt -lX11}の様に,
 5161: スペースで区切られた@var{other-libraries}引数で与えてください.そうしな
 5162: ければ,テストプログラムとのリンクが,常に未解決のシンボルで失敗するので,
 5163: このマクロは@var{library}の存在の調査に失敗します.
 5164: @end defmac
 5165: 
 5166: 
 5167: 
 5168: @node Library Functions
 5169: @c @section Library Functions
 5170: @section ライブラリ関数
 5171: 
 5172: @c The following macros check for particular C library functions.
 5173: @c If there is no macro specifically defined to check for a function you need,
 5174: @c and you don't need to check for any special properties of
 5175: @c it, then you can use one of the general function-check macros.
 5176: @c 
 5177: 以下のマクロは,特定のCライブラリ関数を調査します.必要な関数を調査する
 5178: ための特別に定義されたマクロがなく,その特別な特性を調査する必要がない場
 5179: 合,一般的な関数調査のマクロを使用することが可能です.
 5180: 
 5181: @menu
 5182: * Function Portability::        Pitfalls with usual functions
 5183: * Particular Functions::        Special handling to find certain functions
 5184: * Generic Functions::           How to find other functions
 5185: @end menu
 5186: 
 5187: @node Function Portability
 5188: @c @subsection Portability of C Functions
 5189: @subsection C関数の移植性
 5190: 
 5191: @c Most usual functions can either be missing, or be buggy, or be limited
 5192: @c on some architectures.  This section tries to make an inventory of these
 5193: @c portability issues.  By definition, this list will always require
 5194: @c additions.  Please help us keeping it as complete as possible.
 5195: @c 
 5196: ほとんどの通常の関数は,無くなっている,またはバグがある,またはアーキテ
 5197: クチャによって制限があるはずです.このセクションでは,これらの移植性の問
 5198: 題を目録にしようと思います.定義からすると,このリストは常に追加が必要で
 5199: す.できるだけ完全なものを保つために,我々への手助けをお願いします.
 5200: 
 5201: @table @asis
 5202: @item @code{exit}
 5203: @c @fuindex exit
 5204: @c Did you know that, on some older hosts, @code{exit} returns @code{int}?
 5205: @c This is because @code{exit} predates @code{void}, and there was a long
 5206: @c tradition of it returning @code{int}.
 5207: @c 
 5208: 古いホストでは,@code{exit}が@code{int}を返すものがあることを御存知です
 5209: か?これは,@code{exit}のほうが@code{void}より時代が古く,@code{int}を返
 5210: すという伝統が長い間あったためです.
 5211: 
 5212: @item @code{snprintf}
 5213: @c @fuindex snprintf
 5214: @prindex @code{snprintf}
 5215: @c @fuindex vsnprintf
 5216: @prindex @code{vsnprintf}
 5217: @c The ISO C99 standard says that if the output array isn't big enough and
 5218: @c if no other errors occur, @code{snprintf} and @code{vsnprintf} truncate
 5219: @c the output and return the number of bytes that ought to have been
 5220: @c produced.  Some older systems return the truncated length (e.g., GNU C
 5221: @c Library 2.0.x or IRIX 6.5), some a negative value (e.g., earlier GNU C
 5222: @c Library versions), and some the buffer length without truncation (e.g.,
 5223: @c 32-bit Solaris 7).  Also, some buggy older systems ignore the length and
 5224: @c overrun the buffer (e.g., 64-bit Solaris 7).
 5225: @c 
 5226: ISO C99標準では,出力配列があまり大きくなくその他のエラーが無い場合,
 5227: @code{snprintf}と@code{vsnprintf}は出力を切捨て,生成された出力が必要と
 5228: するバイト数を返すことになっています.古いシステムでは切り捨てられた長さ
 5229: を返したり(例えば,GNU Cライブラリ2.0.xやIRIX 6.5),負の値を返したり(例
 5230: えば,より古いバージョンのGNU Cライブラリ),切り捨てられなかったバッファ
 5231: の長さを返したり(例えば32ビットのSolaris 7)します.また,バグの多い古い
 5232: システムにはバッファの長さとオーバーランを無視するもの(例えば64ビットの
 5233: Soraris 7)もあります.
 5234: 
 5235: @item @code{sprintf}
 5236: @c @fuindex sprintf
 5237: @prindex @code{sprintf}
 5238: @c @fuindex vsprintf
 5239: @prindex @code{vsprintf}
 5240: @c The ISO C standard says @code{sprintf} and @code{vsprintf} return the
 5241: @c number of bytes written, but on some old systems (SunOS 4 for
 5242: @c instance) they return the buffer pointer instead.
 5243: @c 
 5244: ISO Cの標準では,@code{sprintf}と@code{vsprintf}は書き込まれたバイト数を
 5245: 返すことになっていますが,古いシステム(例えばSunOS 4)ではその代わりにバッ
 5246: ファへのポインタを返すものもあります.
 5247: 
 5248: @item @code{sscanf}
 5249: @c @fuindex sscanf
 5250: @prindex @code{sscanf}
 5251: @c On various old systems, e.g., HP-UX 9, @code{sscanf} requires that its
 5252: @c input string be writable (though it doesn't actually change it).  This
 5253: @c can be a problem when using @command{gcc} since it normally puts
 5254: @c constant strings in read-only memory
 5255: @c (@pxref{Incompatibilities,Incompatibilities of GCC,,gcc,Using and
 5256: @c Porting the GNU Compiler Collection}).  Apparently in some cases even
 5257: @c having format strings read-only can be a problem.
 5258: @c 
 5259: 様々な古いシステム,例えばHP-UX 9では,@code{sscanf}は入力文字列が(たと
 5260: えそれが実際には変更されなくても)書き込み可能であることを要求します.こ
 5261: れは,@command{gcc}は通常,固定文字列を読み込み専用のメモリに書き込むの
 5262: で(@pxref{Incompatibilities,Incompatibilities of GCC,,gcc,Using and
 5263: Porting the GNU Compiler Collection}),それを使用するとき問題になるはず
 5264: です.場合によっては,フォーマット文字列が明らかに読み込み専用であっても
 5265: 問題になるはずです.
 5266: 
 5267: @item @code{strnlen}
 5268: @c @fuindex strnlen
 5269: @prindex @code{strnlen}
 5270: @c AIX 4.3 provides a broken version which produces the following results:
 5271: @c 
 5272: AIX 4.3は,以下の結果を生成する壊れたバージョンを提供しています.
 5273: 
 5274: @example
 5275: strnlen ("foobar", 0) = 0
 5276: strnlen ("foobar", 1) = 3
 5277: strnlen ("foobar", 2) = 2
 5278: strnlen ("foobar", 3) = 1
 5279: strnlen ("foobar", 4) = 0
 5280: strnlen ("foobar", 5) = 6
 5281: strnlen ("foobar", 6) = 6
 5282: strnlen ("foobar", 7) = 6
 5283: strnlen ("foobar", 8) = 6
 5284: strnlen ("foobar", 9) = 6
 5285: @end example
 5286: 
 5287: @item @code{unlink}
 5288: @c @fuindex unlink
 5289: @prindex @code{unlink}
 5290: @c The @sc{posix} spec says that @code{unlink} causes the given file to be
 5291: @c removed only after there are no more open file handles for it.  Not all
 5292: @c OS's support this behavior though.  So even on systems that provide
 5293: @c @code{unlink}, you cannot portably assume it is OK to call it on files
 5294: @c that are open.  For example, on Windows 9x and ME, such a call would fail;
 5295: @c on DOS it could even lead to file system corruption, as the file might end
 5296: @c up being written to after the OS has removed it.
 5297: @c 
 5298: @sc{posix}の仕様では,@code{unlink}は開かれているファイルへのハンドルが
 5299: なくなった後でファイルを削除するように述べられています.全てのOSがこの動
 5300: 作をサポートしているわけではありません.そのため,システムが
 5301: @code{unlink}を提供している場合でも,開いているファイルに対して呼び出し
 5302: ても大丈夫だと仮定した移植は不可能です.例えば,Windows 9xとMEでは,その
 5303: ような呼び出しは失敗します.DOSは可能ですが,OSが削除した後にファイルへ
 5304: の書き込みが終了するので,ファイルシステムが駄目になります.
 5305: 
 5306: @item @code{va_copy}
 5307: @c @fuindex va_copy
 5308: @prindex @code{va_copy}
 5309: @c The ISO C99 standard provides @code{va_copy} for copying
 5310: @c @code{va_list} variables.  It may be available in older environments
 5311: @c too, though possibly as @code{__va_copy} (e.g., @command{gcc} in strict
 5312: @c C89 mode).  These can be tested with @code{#ifdef}.  A fallback to
 5313: @c @code{memcpy (&dst, &src, sizeof(va_list))} will give maximum
 5314: @c portability.
 5315: @c 
 5316: ISO C99標準では,@code{va_list}をコピーするため@code{va_copy}を提供して
 5317: います.古い環境でも利用可能かもしれませんが,おそらくは
 5318: @code{__va_copy}(例えば厳密なC89モード)でしょう.これらは@code{#ifdef}で
 5319: テスト可能です.@code{memcpy (&dst, &src, sizeof(va_list))}で代替するこ
 5320: とで最大の移植性となるでしょう.
 5321: 
 5322: @item @code{va_list}
 5323: @c @fuindex va_list
 5324: @prindex @code{va_list}
 5325: @c @code{va_list} is not necessarily just a pointer.  It can be a
 5326: @c @code{struct} (e.g., @command{gcc} on Alpha), which means @code{NULL} is
 5327: @c not portable.  Or it can be an array (e.g., @command{gcc} in some
 5328: @c PowerPC configurations), which means as a function parameter it can be
 5329: @c effectively call-by-reference and library routines might modify the
 5330: @c value back in the caller (e.g., @code{vsnprintf} in the GNU C Library
 5331: @c 2.1).
 5332: @c 
 5333: @code{va_list}はポインタである必要はありません.@code{struct}(例えば
 5334: Alphaの@command{gcc})にすることが可能で,それは@code{NULL}では移植性が無
 5335: いことを意味します.配列(例えばPowerPCでコンフィグレーションされた
 5336: @command{gcc})も可能で,それは関数のパラメータとして効果的に参照呼び出し
 5337: が可能であり,ライブラリルーチンで呼び出しが返す値を修正する可能性がある
 5338: (例えばGNU Cライブラリ2.1の@code{vsnprintf})ことを意味します.
 5339: 
 5340: @item Signed @code{>>}
 5341: @c Normally the C @code{>>} right shift of a signed type replicates the
 5342: @c high bit, giving a so-called ``arithmetic'' shift.  But care should be
 5343: @c taken since the ISO C standard doesn't require that behavior.  On those
 5344: @c few processors without a native arithmetic shift (for instance Cray
 5345: @c vector systems) zero bits may be shifted in, the same as a shift of an
 5346: @c unsigned type.
 5347: @c 
 5348: 通常,Cの符号付きの右シフト@code{>>}はハイビットを複製し,いわゆる``算術'' 
 5349: シフトになります.しかし,ISO Cの標準ではその動作を要求していないので,
 5350: 注意すべきです.ネイティブの算術シフトが無いプロセッサ(例えばCrayベクター
 5351: システム)では,符号無しのシフトと同様に,ゼロビットがシフトインされる可
 5352: 能性があります.
 5353: @end table
 5354: 
 5355: 
 5356: @node Particular Functions
 5357: @c @subsection Particular Function Checks
 5358: @subsection 特定の関数の調査
 5359: @cindex Function, checking
 5360: 
 5361: @c These macros check for particular C functions---whether they exist, and
 5362: @c in some cases how they respond when given certain arguments.
 5363: @c 
 5364: これらのマクロは --- その存在にかかわらず --- 特定のC関数を調査し,場合
 5365: によっては,特定の引数が与えられたときの反応を調査します.
 5366: 
 5367: @defmac AC_FUNC_ALLOCA
 5368: @acindex FUNC_ALLOCA
 5369: @cvindex C_ALLOCA
 5370: @cvindex HAVE_ALLOCA_H
 5371: @ovindex ALLOCA
 5372: @c @fuindex alloca
 5373: @prindex @code{alloca}
 5374: @c Check how to get @code{alloca}.  Tries to get a builtin version by
 5375: @c checking for @file{alloca.h} or the predefined C preprocessor macros
 5376: @c @code{__GNUC__} and @code{_AIX}.  If this macro finds @file{alloca.h},
 5377: @c it defines @code{HAVE_ALLOCA_H}.
 5378: @c 
 5379: @code{alloca}を使用する方法を調査します.@file{alloca.h}や,前もって定義
 5380: されているCプリプロセッサマクロの@code{__GNUC__}と@code{_AIX}を調査する
 5381: ことで,組み込みバージョンを取得しようとします.このマクロが 
 5382: @file{alloca.h}を見つけた場合,@code{HAVE_ALLOCA_H}を定義します.
 5383: 
 5384: @c If those attempts fail, it looks for the function in the standard C
 5385: @c library.  If any of those methods succeed, it defines
 5386: @c @code{HAVE_ALLOCA}.  Otherwise, it sets the output variable
 5387: @c @code{ALLOCA} to @samp{alloca.o} and defines @code{C_ALLOCA} (so
 5388: @c programs can periodically call @samp{alloca(0)} to garbage collect).
 5389: @c This variable is separate from @code{LIBOBJS} so multiple programs can
 5390: @c share the value of @code{ALLOCA} without needing to create an actual
 5391: @c library, in case only some of them use the code in @code{LIBOBJS}.
 5392: @c 
 5393: その試みが失敗する場合,標準Cライブラリで関数を探します.それらの手法の
 5394: いずれかが成功した場合,それは@code{HAVE_ALLOCA}を定義します.それ以外の
 5395: 場合は,出力変数の@code{ALLOCA}を@samp{alloca.o}に設定し, 
 5396: @code{C_ALLOCA}を定義します(それで,プログラムがガーベージコレクションの
 5397: ため定期的に@samp{alloca(0)}を呼び出すことが可能になります.この変数は, 
 5398: @code{LIBOBJS}とは別物なので,実際にライブラリを作成しなくても複数のプロ
 5399: グラムで@code{ALLOCA}の値を共有することが可能ですが,@code{LIBOBJS}で使
 5400: 用する場合もわずかにあります.
 5401: 
 5402: @c This macro does not try to get @code{alloca} from the System V R3
 5403: @c @file{libPW} or the System V R4 @file{libucb} because those libraries
 5404: @c contain some incompatible functions that cause trouble.  Some versions
 5405: @c do not even contain @code{alloca} or contain a buggy version.  If you
 5406: @c still want to use their @code{alloca}, use @code{ar} to extract
 5407: @c @file{alloca.o} from them instead of compiling @file{alloca.c}.
 5408: @c 
 5409: このマクロは,System V R3 の@file{libPW}やSystem V R4の@file{libucb}の
 5410: @code{alloca}の使用を試みません.なぜなら,それらのライブラリには互換性
 5411: がない関数があり問題が生じるためです.@code{alloca}を含まないものやバグ
 5412: だらけのバージョンもあります.それでも,その@code{alloca}を使用したい場
 5413: 合,@file{alloca.c}をコンパイルする代わりに,ライブラリから
 5414: @file{alloca.o}を抽出するため,@code{ar}を使用してください.
 5415: 
 5416: @c Source files that use @code{alloca} should start with a piece of code
 5417: @c like the following, to declare it properly.  In some versions of AIX,
 5418: @c the declaration of @code{alloca} must precede everything else except for
 5419: @c comments and preprocessor directives.  The @code{#pragma} directive is
 5420: @c indented so that pre-@sc{ansi} C compilers will ignore it, rather than
 5421: @c choke on it.
 5422: @c 
 5423: @code{alloca}を使用するソースファイルでは,正確に宣言するために,以下の
 5424: ようなコードで始めるべきです.AIXのバージョンによっては,@code{alloca}の
 5425: 宣言を,コメントとプリプロセッサディレクティブ以外の,全ての行の前に書く
 5426: 必要があります.@code{#pragma}ディレクティブは,ANSI C以前のコンパイラが
 5427: 停止するのではなく無視するように,字下げを行います.
 5428: 
 5429: @example
 5430: @group
 5431: /* AIX requires this to be the first thing in the file.  */
 5432: #ifndef __GNUC__
 5433: # if HAVE_ALLOCA_H
 5434: #  include <alloca.h>
 5435: # else
 5436: #  ifdef _AIX
 5437:  #pragma alloca
 5438: #  else
 5439: #   ifndef alloca /* predefined by HP cc +Olibcalls */
 5440: char *alloca ();
 5441: #   endif
 5442: #  endif
 5443: # endif
 5444: #endif
 5445: @end group
 5446: @end example
 5447: @end defmac
 5448: 
 5449: @defmac AC_FUNC_CHOWN
 5450: @acindex FUNC_CHOWN
 5451: @c @fuindex chown
 5452: @prindex @code{chown}
 5453: @c If the @code{chown} function is available and works (in particular, it
 5454: @c should accept @option{-1} for @code{uid} and @code{gid}), define
 5455: @c @code{HAVE_CHOWN}.
 5456: @c 
 5457: @code{chown}関数が利用可能で動作する場合(特に,@code{uid}と@code{gid}に
 5458: 対する@option{-1}を受け入れるべきです),@code{HAVE_CHOWN}を定義します.
 5459: @end defmac
 5460: 
 5461: 
 5462: @defmac AC_FUNC_CLOSEDIR_VOID
 5463: @acindex FUNC_CLOSEDIR_VOID
 5464: @cvindex CLOSEDIR_VOID
 5465: @c @fuindex closedir
 5466: @prindex @code{closedir}
 5467: @c If the @code{closedir} function does not return a meaningful value,
 5468: @c define @code{CLOSEDIR_VOID}.  Otherwise, callers ought to check its
 5469: @c return value for an error indicator.
 5470: @c 
 5471: @code{closedir}関数が意味のある値を返さない場合,@code{CLOSEDIR_VOID}を
 5472: 定義します.それ以外では,呼び出し側で,エラーを示す戻り値を調査する必要
 5473: があります.
 5474: @end defmac
 5475: 
 5476: @defmac AC_FUNC_ERROR_AT_LINE
 5477: @acindex FUNC_ERROR_AT_LINE
 5478: @c @fuindex error_at_line
 5479: @prindex @code{error_at_line}
 5480: @c If the @code{error_at_line} function is not found, require an
 5481: @c @code{AC_LIBOBJ} replacement of @samp{error}.
 5482: @c 
 5483: @code{error_at_line}関数が見つからない場合,@code{AC_LIBOBJ}が
 5484: @samp{error}で置換されることを要求します.
 5485: @end defmac
 5486: 
 5487: @defmac AC_FUNC_FNMATCH
 5488: @acindex FUNC_FNMATCH
 5489: @c @fuindex fnmatch
 5490: @prindex @code{fnmatch}
 5491: @c If the @code{fnmatch} function conforms to @acronym{POSIX}, define
 5492: @c @code{HAVE_FNMATCH}.  Detect common implementation bugs, for example,
 5493: @c the bugs in Solaris 2.4.
 5494: @c 
 5495: @code{fnmatch}関数が@acronym{POSIX}準拠の場合,@code{HAVE_FNMATCH}を定義
 5496: します.例えば,Solaris 2.4のバグのような,一般的な実装上のバグを検出し
 5497: ます.
 5498: 
 5499: @c Note that for historical reasons, contrary to the other specific
 5500: @c @code{AC_FUNC} macros, @code{AC_FUNC_FNMATCH} does not replace a
 5501: @c broken/missing @code{fnmatch}.  See @code{AC_REPLACE_FNMATCH} below.
 5502: @c 
 5503: 歴史的な理由のため,それ以外の@code{AC_FUNC}マクロとは反対に,
 5504: @code{AC_FUNC_FNMATCH}は壊れていたり見つからなかったりする@code{fnmatch} 
 5505: を置換しません.以下の@code{AC_REPLACE_FNMATCH}を参照してください.
 5506: @end defmac
 5507: 
 5508: @defmac AC_FUNC_FNMATCH_GNU
 5509: @acindex FUNC_FNMATCH_GNU
 5510: @c @fuindex fnmatch
 5511: @prindex @code{fnmatch}
 5512: @c Behave like @code{AC_REPLACE_FNMATCH} (@emph{replace}) but also test
 5513: @c whether @code{fnmatch} supports @acronym{GNU} extensions.  Detect common
 5514: @c implementation bugs, for example, the bugs in the @acronym{GNU} C
 5515: @c Library 2.1.
 5516: @c 
 5517: @code{AC_REPLACE_FNMATCH}(@emph{置換})のように動作しますが,
 5518: @code{fnmatch}が@acronym{GNU}の拡張をサポートするかどうかも調査します.
 5519: 例えば,@acronym{GNU} Cライブラリ2.1のバグのような,一般的な実装上のバグ
 5520: を検出します.
 5521: @end defmac
 5522: 
 5523: @defmac AC_FUNC_FORK
 5524: @acindex FUNC_FORK
 5525: @cvindex HAVE_VFORK_H
 5526: @cvindex HAVE_WORKING_FORK
 5527: @cvindex HAVE_WORKING_VFORK
 5528: @cvindex vfork
 5529: @c @fuindex fork
 5530: @prindex @code{fork}
 5531: @c @fuindex vfork
 5532: @prindex @code{vfork}
 5533: @c This macro checks for the @code{fork} and @code{vfork} functions.  If a
 5534: @c working @code{fork} is found, define @code{HAVE_WORKING_FORK}.  This macro
 5535: @c checks whether @code{fork} is just a stub by trying to run it.
 5536: @c 
 5537: このマクロは,@code{fork}と@code{vfork}関数を調査します.動作する
 5538: @code{fork}が見つかった場合,@code{HAVE_WORKING_FORK}を定義します.この
 5539: マクロは,@code{fork}がスタブかどうかを実行してみることで調査します.
 5540: 
 5541: @c If @file{vfork.h} is found, define @code{HAVE_VFORK_H}.  If a working
 5542: @c @code{vfork} is found, define @code{HAVE_WORKING_VFORK}.  Otherwise,
 5543: @c define @code{vfork} to be @code{fork} for backward compatibility with
 5544: @c previous versions of @command{autoconf}.  This macro checks for several known
 5545: @c errors in implementations of @code{vfork} and considers the system to not
 5546: @c have a working @code{vfork} if it detects any of them.  It is not considered
 5547: @c to be an implementation error if a child's invocation of @code{signal}
 5548: @c modifies the parent's signal handler, since child processes rarely change
 5549: @c their signal handlers.
 5550: @c 
 5551: @file{vfork.h}が見つかった場合,@code{HAVE_VFORK_H}を定義します.動作す
 5552: る@code{vfork}が見つかった場合,@code{HAVE_WORKING_VFORK}を定義します.
 5553: それ以外の場合,以前のバージョンの@command{autoconf}に対する下位互換のた
 5554: め,@code{vfork}を@code{fork}と定義します.このマクロは,@code{vfork}の
 5555: 実装のいくつかの既知のエラーを調査し,そのエラーのいずれかを検出した場合,
 5556: システムには動作する@code{vfork}が無いと考えます.子プロセスは,シグナル
 5557: ハンドラを変えることがめったにないので,子プロセスの@code{signal}の呼び
 5558: 出しが,親プロセスのシグナルハンドラを変更する場合,実装エラーだとは考え
 5559: られません.
 5560: 
 5561: @c Since this macro defines @code{vfork} only for backward compatibility with
 5562: @c previous versions of @command{autoconf} you're encouraged to define it
 5563: @c yourself in new code:
 5564: @c 
 5565: このマクロは,以前のバージョンの@command{autoconf}への下位互換性のためだ
 5566: けに@code{vfork}を定義するので,コード内で独自に定義することを推奨します.
 5567: @example
 5568: @group
 5569: #if !HAVE_WORKING_VFORK
 5570: # define vfork fork
 5571: #endif
 5572: @end group
 5573: @end example
 5574: @end defmac
 5575: 
 5576: @defmac AC_FUNC_FSEEKO
 5577: @acindex FUNC_FSEEKO
 5578: @cvindex _LARGEFILE_SOURCE
 5579: @c @fuindex fseeko
 5580: @prindex @code{fseeko}
 5581: @c If the @code{fseeko} function is available, define @code{HAVE_FSEEKO}.
 5582: @c Define @code{_LARGEFILE_SOURCE} if necessary.
 5583: @c 
 5584: @code{fseeko}関数が利用可能な場合,@code{HAVE_FSEEKO}を定義します.必要
 5585: があれば@code{_LARGEFILE_SOURCE}を定義します.
 5586: @end defmac
 5587: 
 5588: @defmac AC_FUNC_GETGROUPS
 5589: @acindex FUNC_GETGROUPS
 5590: @ovindex GETGROUPS_LIBS
 5591: @c @fuindex getgroups
 5592: @prindex @code{getgroups}
 5593: @c If the @code{getgroups} function is available and works (unlike on
 5594: @c Ultrix 4.3, where @samp{getgroups (0, 0)} always fails), define
 5595: @c @code{HAVE_GETGROUPS}.  Set @code{GETGROUPS_LIBS} to any libraries
 5596: @c needed to get that function.  This macro runs @code{AC_TYPE_GETGROUPS}.
 5597: @c 
 5598: @code{getgroups}関数が利用可能で,(@samp{getgroups (0, 0)}が常に失敗する
 5599: Ultrix 4.3とことなり)動作する場合,@code{HAVE_GETGROUPS}を定義します.
 5600: @code{GETGROUPS_LIBS}をその関数の使用に必要な全てのライブラリに定義しま
 5601: す.このマクロは,@code{AC_TYPE_GETGROUPS}を実行します.
 5602: @end defmac
 5603: 
 5604: @defmac AC_FUNC_GETLOADAVG
 5605: @acindex FUNC_GETLOADAVG
 5606: @cvindex SVR4
 5607: @cvindex DGUX
 5608: @cvindex UMAX
 5609: @cvindex UMAX4_3
 5610: @cvindex HAVE_NLIST_H
 5611: @cvindex NLIST_NAME_UNION
 5612: @cvindex GETLODAVG_PRIVILEGED
 5613: @cvindex NEED_SETGID
 5614: @cvindex C_GETLOADAVG
 5615: @ovindex LIBOBJS
 5616: @ovindex NEED_SETGID
 5617: @ovindex KMEM_GROUP
 5618: @ovindex GETLOADAVG_LIBS
 5619: @c @fuindex getloadavg
 5620: @prindex @code{getloadavg}
 5621: @c Check how to get the system load averages.  To perform its tests
 5622: @c properly, this macro needs the file @file{getloadavg.c}; therefore, be
 5623: @c sure to set the @code{AC_LIBOBJ} replacement directory properly (see
 5624: @c @ref{Generic Functions}, @code{AC_CONFIG_LIBOBJ_DIR}).
 5625: @c 
 5626: システムのロードアベレージを取得する方法を調査します.適切に調査を実行す
 5627: るため,このマクロはファイル@file{getloadavg.c}が必要です.このため,適
 5628: 切な置換ディレクトリを@code{AC_LIBOBJ}で確実に設定してください
 5629: (@ref{Generic Functions}と,@code{AC_CONFIG_LIBOBJ_DIR}を参照してくださ
 5630: い).
 5631: 
 5632: @c If the system has the @code{getloadavg} function, define
 5633: @c @code{HAVE_GETLOADAVG}, and set @code{GETLOADAVG_LIBS} to any libraries
 5634: @c needed to get that function.  Also add @code{GETLOADAVG_LIBS} to
 5635: @c @code{LIBS}.  Otherwise, require an @code{AC_LIBOBJ} replacement for
 5636: @c @samp{getloadavg} with source code in @file{@var{dir}/getloadavg.c}, and
 5637: @c possibly define several other C preprocessor macros and output
 5638: @c variables:
 5639: @c 
 5640: システムに@code{getloadavg}関数がある場合,@code{HAVE_GETLOADAVG}を定義
 5641: し,その関数の使用に必要な全てのライブラリを@code{GETLOADAVG_LIBS}に設定
 5642: します.また,@code{GETLOADAVG_LIBS}を@code{LIBS}に加えます.それ以外の
 5643: 場合,@code{AC_LIBOBJ}で@samp{getloadavg}を@file{@var{dir}/getloadavg.c} 
 5644: のソースコードで置換することを要求し,おそらく以下のようないくつかのCプ
 5645: リプロセッサのマクロと出力変数を定義します.
 5646: 
 5647: @enumerate
 5648: @item
 5649: @c Define @code{C_GETLOADAVG}.
 5650: @c 
 5651: @code{C_GETLOADAVG}を定義します.
 5652: 
 5653: @item
 5654: @c Define @code{SVR4}, @code{DGUX}, @code{UMAX}, or @code{UMAX4_3} if on
 5655: @c those systems.
 5656: @c 
 5657: システムが,@code{SVR4},@code{DGUX},@code{UMAX},または@code{UMAX4_3} 
 5658: の場合,それを定義します.
 5659: 
 5660: @item
 5661: @c If @file{nlist.h} is found, define @code{HAVE_NLIST_H}.
 5662: @c 
 5663: @file{nlist.h}が見つかる場合,@code{HAVE_NLIST_H}を定義します.
 5664: 
 5665: @item
 5666: @c If @samp{struct nlist} has an @samp{n_un.n_name} member, define
 5667: @c @code{HAVE_STRUCT_NLIST_N_UN_N_NAME}.  The obsolete symbol
 5668: @c @code{NLIST_NAME_UNION} is still defined, but do not depend upon it.
 5669: @c 
 5670: @samp{struct nlist}が@samp{n_un}メンバーを持つ場合,
 5671: @code{HAVE_STRUCT_NLIST_N_UN_N_NAME}を定義します.時代遅れのシンボル
 5672: @code{NLIST_NAME_UNION}も定義しますが,それに依存しないようにしてくださ
 5673: い.
 5674: 
 5675: @item
 5676: @c Programs may need to be installed setgid (or setuid) for
 5677: @c @code{getloadavg} to work.  In this case, define
 5678: @c @code{GETLOADAVG_PRIVILEGED}, set the output variable @code{NEED_SETGID}
 5679: @c to @samp{true} (and otherwise to @samp{false}), and set
 5680: @c @code{KMEM_GROUP} to the name of the group that should own the installed
 5681: @c program.
 5682: @c 
 5683: プログラムによっては,@code{getloadavg}が動作するために,setgid(または
 5684: setuid)がインストールされていることを必要とするかもしれません.この場合,
 5685: @code{GETLOADAVG_PRIVILEGED}を定義し,出力変数@code{NEED_SETGID}を
 5686: @samp{true}に(それ以外では@samp{false}に)設定し,そして@code{KMEM_GROUP} 
 5687: をインストールされているプログラムを所有するグループの名前に設定します.
 5688: @end enumerate
 5689: @end defmac
 5690: 
 5691: @defmac AC_FUNC_GETMNTENT
 5692: @acindex FUNC_GETMNTENT
 5693: @cvindex HAVE_GETMNTENT
 5694: @c @fuindex getmntent
 5695: @prindex @code{getmntent}
 5696: @c Check for @code{getmntent} in the @file{sun}, @file{seq}, and @file{gen}
 5697: @c libraries, for Irix 4, PTX, and Unixware, respectively.  Then, if
 5698: @c @code{getmntent} is available, define @code{HAVE_GETMNTENT}.
 5699: @c 
 5700: Irix 4,PTXと,Unixwareに対し,@file{sun},@file{seq},そして@file{gen} 
 5701: のライブラリ内の@code{getmntent}をそれぞれ調査します.@code{getmntent}が
 5702: 利用可能な場合,@code{HAVE_GETMNTENT}を定義します.
 5703: @end defmac
 5704: 
 5705: @defmac AC_FUNC_GETPGRP
 5706: @acindex FUNC_GETPGRP
 5707: @cvindex GETPGRP_VOID
 5708: @c @fuindex getpgid
 5709: @c @fuindex getpgrp
 5710: @prindex @code{getpgid}
 5711: @prindex @code{getpgrp}
 5712: @c Define @code{GETPGRP_VOID} if it is an error to pass 0 to
 5713: @c @code{getpgrp}; this is the @sc{posix.1} behavior.  On older BSD
 5714: @c systems, you must pass 0 to @code{getpgrp}, as it takes an argument and
 5715: @c behaves like @sc{posix.1}'s @code{getpgid}.
 5716: @c 
 5717: @code{getpgrp}に0を渡すとエラーになる場合,@code{GETPGRP_VOID}を定義しま
 5718: す.これは@sc{posix.1}の動作です.古いBSDシステムでは,それは引数をとり
 5719: @sc{posix.1}の@code{getpgid}のように動作するので,@code{getpgrp}に0を渡
 5720: す必要があります.
 5721: 
 5722: @example
 5723: #if GETPGRP_VOID
 5724:   pid = getpgrp ();
 5725: #else
 5726:   pid = getpgrp (0);
 5727: #endif
 5728: @end example
 5729: 
 5730: @c This macro does not check whether
 5731: @c @code{getpgrp} exists at all; if you need to work in that situation,
 5732: @c first call @code{AC_CHECK_FUNC} for @code{getpgrp}.
 5733: @c 
 5734: このマクロは@code{getpgrp}が存在するかどうかを全く調査しません.そのよう
 5735: な状況で動作する必要がある場合,@code{getpgrp}に対して最初に
 5736: @code{AC_CHECK_FUNC}を呼び出してください.
 5737: @end defmac
 5738: 
 5739: @defmac AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
 5740: @acindex FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
 5741: @cvindex LSTAT_FOLLOWS_SLASHED_SYMLINK
 5742: @c @fuindex lstat
 5743: @prindex @code{lstat}
 5744: @c If @file{link} is a symbolic link, then @code{lstat} should treat
 5745: @c @file{link/} the same as @file{link/.}.  However, many older
 5746: @c @code{lstat} implementations incorrectly ignore trailing slashes.
 5747: @c 
 5748: @file{link}がシンボリックリンクの場合,@code{lstat}は@file{link/}を
 5749: @file{link/.}と同じものとして扱います.しかし,多くの古い@code{lstat}の
 5750: 実装では,後置されているスラッシュを間違って無視します.
 5751: 
 5752: @c It is safe to assume that if @code{lstat} incorrectly ignores
 5753: @c trailing slashes, then other symbolic-link-aware functions like
 5754: @c @code{unlink} also incorrectly ignore trailing slashes.
 5755: @c 
 5756: @code{lstat}が後置されているスラッシュを間違って無視する場合,それ以外の
 5757: @code{unlink}のようなsymbolic-link-aware関数も後置されているスラッシュを
 5758: 間違って無視すると仮定した方が確実です.
 5759: 
 5760: @c If @code{lstat} behaves properly, define
 5761: @c @code{LSTAT_FOLLOWS_SLASHED_SYMLINK}, otherwise require an
 5762: @c @code{AC_LIBOBJ} replacement of @code{lstat}.
 5763: @c 
 5764: @code{lstat}が正しく動作する場合,@code{LSTAT_FOLLOWS_SLASHED_SYMLINK}を
 5765: 定義し,それ以外の場合は,@code{AC_LIBOBJ}を@code{lstat}で置換するよう要
 5766: 求します.
 5767: @end defmac
 5768: 
 5769: @defmac AC_FUNC_MALLOC
 5770: @acindex FUNC_MALLOC
 5771: @cvindex HAVE_MALLOC
 5772: @cvindex malloc
 5773: @c @fuindex malloc
 5774: @prindex @code{malloc}
 5775: @c If the @code{malloc} function works correctly (@samp{malloc (0)} returns a valid
 5776: @c pointer), define @code{HAVE_MALLOC} to 1.  Otherwise define
 5777: @c @code{HAVE_MALLOC} to 0, ask for an @code{AC_LIBOBJ} replacement for
 5778: @c @samp{malloc}, and define @code{malloc} to @code{rpl_malloc} so that the
 5779: @c native @code{malloc} is not used in the main project.
 5780: @c 
 5781: @code{malloc}関数が正しく動作する(@samp{malloc (0)}が有効なポインタを返
 5782: す)場合,@code{HAVE_MALLOC}を1に定義します.それ以外では,
 5783: @code{HAVE_MALLOC}を0に定義し,@code{AC_LIBOBJ}で@samp{malloc}を置換し,
 5784: ネイティブの@code{malloc}が中心的なプロジェクトで使用されないように
 5785: @code{malloc}を@code{rpl_malloc}で定義するかどうかを尋ねます.
 5786: 
 5787: @c Typically, the replacement file @file{malloc.c} should look like (note
 5788: @c the @samp{#undef malloc}):
 5789: @c 
 5790: 通常,ファイル@file{malloc.c}の置換は以下のようになります(@samp{#undef
 5791: malloc}に注意してください).
 5792: 
 5793: @verbatim
 5794: #if HAVE_CONFIG_H
 5795: # include <config.h>
 5796: #endif
 5797: #undef malloc
 5798: 
 5799: #include <sys/types.h>
 5800: 
 5801: char *malloc ();
 5802: 
 5803: /* Allocate an N-byte block of memory from the heap.
 5804:    If N is zero, allocate a 1-byte block.  */
 5805: 
 5806: char *
 5807: rpl_malloc (size_t n)
 5808: {
 5809:   if (n == 0)
 5810:     n = 1;
 5811:   return malloc (n);
 5812: }
 5813: @end verbatim
 5814: @end defmac
 5815: 
 5816: @defmac AC_FUNC_MEMCMP
 5817: @acindex FUNC_MEMCMP
 5818: @ovindex LIBOBJS
 5819: @c @fuindex memcmp
 5820: @prindex @code{memcmp}
 5821: @c If the @code{memcmp} function is not available, or does not work on
 5822: @c 8-bit data (like the one on SunOS 4.1.3), or fails when comparing 16
 5823: @c bytes or more and with at least one buffer not starting on a 4-byte
 5824: @c boundary (such as the one on NeXT x86 OpenStep), require an
 5825: @c @code{AC_LIBOBJ} replacement for @samp{memcmp}.
 5826: @c 
 5827: @code{memcmp}関数が利用不可能,または(SunOS 4.1.3のように)8ビットデータ
 5828: で動作しない,または(NeXT x86 OpenStepのように)16バイトかそれ以上で少な
 5829: くとも一つのバッファが4バイト境界で始まらないものの比較時に失敗する場合,
 5830: @code{AC_LIBOBJ}で@samp{memcmp}を置換することを要求します.
 5831: @end defmac
 5832: 
 5833: @defmac AC_FUNC_MKTIME
 5834: @acindex FUNC_MKTIME
 5835: @ovindex LIBOBJS
 5836: @c @fuindex mktime
 5837: @prindex @code{mktime}
 5838: @c If the @code{mktime} function is not available, or does not work
 5839: @c correctly, require an @code{AC_LIBOBJ} replacement for @samp{mktime}.
 5840: @c 
 5841: @code{mktime}関数が利用不可能,または正しく動作しない場合,
 5842: @code{AC_LIBOBJ}で@samp{mktime}を置換することを要求します.
 5843: @end defmac
 5844: 
 5845: @defmac AC_FUNC_MMAP
 5846: @acindex FUNC_MMAP
 5847: @cvindex HAVE_MMAP
 5848: @c @fuindex mmap
 5849: @prindex @code{mmap}
 5850: @c If the @code{mmap} function exists and works correctly, define
 5851: @c @code{HAVE_MMAP}.  Only checks private fixed mapping of already-mapped
 5852: @c memory.
 5853: @c 
 5854: @code{mmap}関数が存在して正しく動作する場合,@code{HAVE_MMAP}を定義しま
 5855: す.すでにマップされたメモリの,プライベートな固定したマッピングのみ調査
 5856: します.
 5857: @end defmac
 5858: 
 5859: @defmac AC_FUNC_OBSTACK
 5860: @acindex FUNC_OBSTACK
 5861: @cvindex HAVE_OBSTACK
 5862: @cindex obstack
 5863: @c If the obstacks are found, define @code{HAVE_OBSTACK}, else require an
 5864: @c @code{AC_LIBOBJ} replacement for @samp{obstack}.
 5865: @c 
 5866: obstackが見つかった場合,@code{HAVE_OBSTACK}を定義し,そうでない場合は
 5867: @code{AC_LIBOBJ}で@samp{obstack}を置換することを要求します.
 5868: @end defmac
 5869: 
 5870: @defmac AC_FUNC_REALLOC
 5871: @acindex FUNC_REALLOC
 5872: @cvindex HAVE_REALLOC
 5873: @cvindex realloc
 5874: @c @fuindex realloc
 5875: @prindex @code{realloc}
 5876: @c If the @code{realloc} function works correctly (@samp{realloc (0, 0)} returns a
 5877: @c valid pointer), define @code{HAVE_REALLOC} to 1.  Otherwise define
 5878: @c @code{HAVE_REALLOC} to 0, ask for an @code{AC_LIBOBJ} replacement for
 5879: @c @samp{realloc}, and define @code{realloc} to @code{rpl_realloc} so that
 5880: @c the native @code{realloc} is not used in the main project.  See
 5881: @c @code{AC_FUNC_MALLOC} for details.
 5882: @c 
 5883: @code{realloc}関数が正しく動作する(@samp{realloc (0, 0)}が有効なポインタ
 5884: を返す)場合,@code{HAVE_REALLOC}を1に定義します.それ以外では,
 5885: @code{HAVE_REALLOC}を0に定義し,@code{AC_LIBOBJ}で@samp{realloc}を置換し,
 5886: ネイティブの@code{realloc}が中心的なプロジェクトで使用されないように
 5887: @code{realloc}を@code{rpl_realloc}で定義するかどうかを尋ねます.詳細は
 5888: @code{AC_FUNC_MALLOC}を参照してください.
 5889: @end defmac
 5890: 
 5891: @defmac AC_FUNC_SELECT_ARGTYPES
 5892: @acindex FUNC_SELECT_ARGTYPES
 5893: @cvindex SELECT_TYPE_ARG1
 5894: @cvindex SELECT_TYPE_ARG234
 5895: @cvindex SELECT_TYPE_ARG5
 5896: @c @fuindex select
 5897: @prindex @code{select}
 5898: @c Determines the correct type to be passed for each of the
 5899: @c @code{select} function's arguments, and defines those types
 5900: @c in @code{SELECT_TYPE_ARG1}, @code{SELECT_TYPE_ARG234}, and
 5901: @c @code{SELECT_TYPE_ARG5} respectively.  @code{SELECT_TYPE_ARG1} defaults
 5902: @c to @samp{int}, @code{SELECT_TYPE_ARG234} defaults to @samp{int *},
 5903: @c and @code{SELECT_TYPE_ARG5} defaults to @samp{struct timeval *}.
 5904: @c 
 5905: @code{select}関数の引数それぞれに渡される正しい型を決定し,それらの型を
 5906: @code{SELECT_TYPE_ARG1},@code{SELECT_TYPE_ARG234},そして 
 5907: @code{SELECT_TYPE_ARG5}にそれぞれ定義します.@code{SELECT_TYPE_ARG1}のデ
 5908: フォルトは@samp{int}で,@code{SELECT_TYPE_ARG234}のデフォルトは@samp{int
 5909: *}で,そして@code{SELECT_TYPE_ARG5}のデフォルトは@samp{struct timeval *} 
 5910: です.
 5911: @end defmac
 5912: 
 5913: @defmac AC_FUNC_SETPGRP
 5914: @acindex FUNC_SETPGRP
 5915: @cvindex SETPGRP_VOID
 5916: @c @fuindex setpgrp
 5917: @prindex @code{setpgrp}
 5918: @c If @code{setpgrp} takes no argument (the @sc{posix.1} version), define
 5919: @c @code{SETPGRP_VOID}.  Otherwise, it is the @sc{bsd} version, which takes
 5920: @c two process IDs as arguments.  This macro does not check whether
 5921: @c @code{setpgrp} exists at all; if you need to work in that situation,
 5922: @c first call @code{AC_CHECK_FUNC} for @code{setpgrp}.
 5923: @c 
 5924: @code{setpgrp}が引数を持たない(@sc{posix.1}バージョンの)場合,
 5925: @code{SETPGRP_VOID}を定義します.それ以外では,@sc{bsd}バージョンで,2
 5926: つのプロセスIDを引数とします.このマクロは@code{setpgrp}の存在を全く調査
 5927: しません.その状況で動作する必要がある場合,@code{setpgrp}に対して最初に
 5928: @code{AC_CHECK_FUNC}を呼び出してください.
 5929: @end defmac
 5930: 
 5931: @defmac AC_FUNC_STAT
 5932: @defmacx AC_FUNC_LSTAT
 5933: @acindex FUNC_STAT
 5934: @acindex FUNC_LSTAT
 5935: @cvindex HAVE_STAT_EMPTY_STRING_BUG
 5936: @cvindex HAVE_LSTAT_EMPTY_STRING_BUG
 5937: @c @fuindex stat
 5938: @prindex @code{stat}
 5939: @c @fuindex lstat
 5940: @prindex @code{lstat}
 5941: @c Determine whether @code{stat} or @code{lstat} have the bug that it
 5942: @c succeeds when given the zero-length file name as argument.  The @code{stat}
 5943: @c and @code{lstat} from SunOS 4.1.4 and the Hurd (as of 1998-11-01) do
 5944: @c this.
 5945: @c 
 5946: @code{stat}や@code{lstat}に,長さが0のファイル名を引数で与えたときに成功
 5947: するというバグがあるかどうかを決定します.SunOS 4.1.4とHurd(1998-11-01) 
 5948: の@code{stat}と@code{lstat}ではこうなります.
 5949: 
 5950: @c If it does, then define @code{HAVE_STAT_EMPTY_STRING_BUG} (or
 5951: @c @code{HAVE_LSTAT_EMPTY_STRING_BUG}) and ask for an @code{AC_LIBOBJ}
 5952: @c replacement of it.
 5953: @c 
 5954: その場合,@code{HAVE_STAT_EMPTY_STRING_BUG}(または
 5955: @code{HAVE_LSTAT_EMPTY_STRING_BUG})を定義し,@code{AC_LIBOBJ}でそれを置
 5956: 換することを要求します.
 5957: @end defmac
 5958: 
 5959: @defmac AC_FUNC_SETVBUF_REVERSED
 5960: @acindex FUNC_SETVBUF_REVERSED
 5961: @cvindex SETVBUF_REVERSED
 5962: @c @fuindex setvbuf
 5963: @prindex @code{setvbuf}
 5964: @c If @code{setvbuf} takes the buffering type as its second argument and
 5965: @c the buffer pointer as the third, instead of the other way around, define
 5966: @c @code{SETVBUF_REVERSED}.
 5967: @c 
 5968: @code{setvbuf}が他とは異なり,第2引数でバッファの型,第3引数でバッファポ
 5969: インタをとる場合,@code{SETVBUF_REVERSED}を定義します.
 5970: @end defmac
 5971: 
 5972: @defmac AC_FUNC_STRCOLL
 5973: @acindex FUNC_STRCOLL
 5974: @cvindex HAVE_STRCOLL
 5975: @c @fuindex strcoll
 5976: @prindex @code{strcoll}
 5977: @c If the @code{strcoll} function exists and works correctly, define
 5978: @c @code{HAVE_STRCOLL}.  This does a bit more than
 5979: @c @samp{AC_CHECK_FUNCS(strcoll)}, because some systems have incorrect
 5980: @c definitions of @code{strcoll} that should not be used.
 5981: @c 
 5982: @code{strcoll}関数が存在して,正しく動作する場合,@code{HAVE_STRCOLL}を
 5983: 定義します.使用すべきではない@code{strcoll}の間違った定義を持つシステム
 5984: もあるので,@samp{AC_CHECK_FUNCS(strcoll)}より多少ましです.
 5985: @end defmac
 5986: 
 5987: @defmac AC_FUNC_STRTOD
 5988: @acindex FUNC_STRTOD
 5989: @ovindex POW_LIB
 5990: @c @fuindex strtod
 5991: @prindex @code{strtod}
 5992: @c If the @code{strtod} function does not exist or doesn't work correctly,
 5993: @c ask for an @code{AC_LIBOBJ} replacement of @samp{strtod}.  In this case,
 5994: @c because @file{strtod.c} is likely to need @samp{pow}, set the output
 5995: @c variable @code{POW_LIB} to the extra library needed.
 5996: @c 
 5997: @code{strtod}関数が存在していない,または正しく動作しない場合,
 5998: @code{AC_LIBOBJ}で@samp{strtod}を置換するよう要求します.この場合,
 5999: @file{strtod.c}は@samp{pow}を必要とすることもあり得るので,出力変数
 6000: @code{POW_LIB}を必要な外部ライブラリに設定します.
 6001: @end defmac
 6002: 
 6003: @defmac AC_FUNC_STRERROR_R
 6004: @acindex FUNC_STRERROR_R
 6005: @cvindex HAVE_STRERROR_R
 6006: @cvindex HAVE_DECL_STRERROR_R
 6007: @cvindex STRERROR_R_CHAR_P
 6008: @c @fuindex strerror_r
 6009: @prindex @code{strerror_r}
 6010: @c If @code{strerror_r} is available, define @code{HAVE_STRERROR_R}, and if
 6011: @c it is declared, define @code{HAVE_DECL_STRERROR_R}.  If it returns a
 6012: @c @code{char *} message, define @code{STRERROR_R_CHAR_P}; otherwise it
 6013: @c returns an @code{int} error number.  The Thread-Safe Functions option of
 6014: @c @sc{posix-200x} requires @code{strerror_r} to return @code{int}, but
 6015: @c many systems (including, for example, version 2.2.4 of the GNU C
 6016: @c Library) return a @code{char *} value that is not necessarily equal to
 6017: @c the buffer argument.
 6018: @c 
 6019: @code{strerror_r}が利用可能な場合は@code{HAVE_STRERROR_R}を定義し,それ
 6020: が宣言されている場合,@code{HAVE_DECL_STRERROR_R}を定義します.それが
 6021: @code{char *}のメッセージを返す場合,@code{STRERROR_R_CHAR_P}を定義しま
 6022: す.それ以外では@code{int}のエラーナンバーを返します.多くのシステムのス
 6023: レッドセーフな関数のオプション(例えばGNU Cライブラリのバージョン2.2.4を
 6024: 含め)は,バッファ引数に等しい必要が無い@code{char *}の値を返します.
 6025: @end defmac
 6026: 
 6027: @defmac AC_FUNC_STRFTIME
 6028: @acindex FUNC_STRFTIME
 6029: @cvindex HAVE_STRFTIME
 6030: @c @fuindex strftime
 6031: @prindex @code{strftime}
 6032: @c Check for @code{strftime} in the @file{intl} library, for SCO @sc{unix}.
 6033: @c Then, if @code{strftime} is available, define @code{HAVE_STRFTIME}.
 6034: @c 
 6035: @file{intl}ライブラリ内で,SCO @sc{unix}に対する@code{strftime}を調査し
 6036: ます.@code{strftime}が利用可能な場合,@code{HAVE_STRFTIME}を定義します.
 6037: @end defmac
 6038: 
 6039: @defmac AC_FUNC_STRNLEN
 6040: @acindex FUNC_STRNLEN
 6041: @cvindex HAVE_STRNLEN
 6042: @c @fuindex strnlen
 6043: @prindex @code{strnlen}
 6044: @c If the @code{strnlen} function is not available, or is buggy (like the one
 6045: @c from AIX 4.3), require an @code{AC_LIBOBJ} replacement for it.
 6046: @c 
 6047: @code{strnlen}が利用不可能な場合や(AIX 4.3のように)バグが多い場合,
 6048: @code{AC_LIBOBJ}で置換することを要求します.
 6049: @end defmac
 6050: 
 6051: @defmac AC_FUNC_UTIME_NULL
 6052: @acindex FUNC_UTIME_NULL
 6053: @cvindex HAVE_UTIME_NULL
 6054: @c @fuindex utime
 6055: @prindex @code{utime}
 6056: @c If @samp{utime(@var{file}, NULL)} sets @var{file}'s timestamp to
 6057: @c the present, define @code{HAVE_UTIME_NULL}.
 6058: @c 
 6059: @samp{utime(@var{file}, NULL)}が@var{file}のタイムスタンプを現在のものに
 6060: 設定する場合,@code{HAVE_UTIME_NULL}を定義します.
 6061: @end defmac
 6062: 
 6063: @defmac AC_FUNC_VPRINTF
 6064: @acindex FUNC_VPRINTF
 6065: @cvindex HAVE_VPRINTF
 6066: @cvindex HAVE_DOPRNT
 6067: @c @fuindex vprintf
 6068: @prindex @code{vprintf}
 6069: @c If @code{vprintf} is found, define @code{HAVE_VPRINTF}.  Otherwise, if
 6070: @c @code{_doprnt} is found, define @code{HAVE_DOPRNT}.  (If @code{vprintf}
 6071: @c is available, you may assume that @code{vfprintf} and @code{vsprintf}
 6072: @c are also available.)
 6073: @c 
 6074: @code{vprintf}が見つかった場合,@code{HAVE_VPRINTF}を定義します.それ以
 6075: 外で,@code{_doprnt}が見つかった場合,@code{HAVE_DOPRNT}を定義します.
 6076: (@code{vprintf}が利用可能な場合,@code{vfprintf}と@code{vsprintf}も利用
 6077: 可能だと仮定できるでしょう.)
 6078: @end defmac
 6079: 
 6080: @defmac AC_REPLACE_FNMATCH
 6081: @acindex REPLACE_FNMATCH
 6082: @c @fuindex fnmatch
 6083: @prindex @code{fnmatch}
 6084: @c If the @code{fnmatch} function does not conform to @acronym{POSIX} (see
 6085: @c @code{AC_FUNC_FNMATCH}), ask for its @code{AC_LIBOBJ} replacement.
 6086: @c 
 6087: @code{fnmatch}関数が@acronym{POSIX}準拠でない場合(@code{AC_FUNC_FNMATCH} 
 6088: を参照してください),それを@code{AC_LIBOBJ}で置換するかどうかを尋ねます.
 6089: 
 6090: @c The files @file{fnmatch.c}, @file{fnmatch_loop.c}, and @file{fnmatch_.h}
 6091: @c in the @code{AC_LIBOBJ} replacement directory are assumed to contain a
 6092: @c copy of the source code of @acronym{GNU} @code{fnmatch}.  If necessary,
 6093: @c this source code is compiled as an @code{AC_LIBOBJ} replacement, and the
 6094: @c @file{fnmatch_.h} file is linked to @file{fnmatch.h} so that it can be
 6095: @c included in place of the system @code{<fnmatch.h>}.
 6096: @c 
 6097: @code{AC_LIBOBJ}の置換用ディレクトリのファイル@file{fnmatch.c},
 6098: @file{fnmatch_loop.c},そして@file{fnmatch_.h}が,@acronym{GNU}
 6099: @code{fnmatch}のソースコードをのコピーを含んでいると想定されます.必要な
 6100: 場合,このソースコードは@code{AC_LIBOBJ}での置換物としてコンパイルされ,
 6101: システムの@code{<fnmatch.h>}でインクルードできるように,
 6102: @file{fnmatch_.h}が@file{fnmatch.h}にリンクされます.
 6103: @end defmac
 6104: 
 6105: 
 6106: 
 6107: @node Generic Functions
 6108: @c @subsection Generic Function Checks
 6109: @subsection 一般の関数の調査
 6110: 
 6111: @c These macros are used to find functions not covered by the ``particular''
 6112: @c test macros.  If the functions might be in libraries other than the
 6113: @c default C library, first call @code{AC_CHECK_LIB} for those libraries.
 6114: @c If you need to check the behavior of a function as well as find out
 6115: @c whether it is present, you have to write your own test for
 6116: @c it (@pxref{Writing Tests}).
 6117: @c 
 6118: これらのマクロは,``特定の''テストマクロによってカバーていない関数を見つ
 6119: けるために使用されます.関数が,デフォルトのCライブラリ以外のライブラリ
 6120: にある場合,最初にそれらのライブラリに対して@code{AC_CHECK_LIB}を呼び出
 6121: してください.存在の確認だけでなく動作も調査したい場合,独自のテストを書
 6122: く必要があります(@pxref{Writing Tests}).
 6123: 
 6124: @defmac AC_CHECK_FUNC (@var{function}, @ovar{action-if-found}, @ovar{action-if-not-found})
 6125: @acindex CHECK_FUNC
 6126: @c If C function @var{function} is available, run shell commands
 6127: @c @var{action-if-found}, otherwise @var{action-if-not-found}.  If you just
 6128: @c want to define a symbol if the function is available, consider using
 6129: @c @code{AC_CHECK_FUNCS} instead.  This macro checks for functions with C
 6130: @c linkage even when @code{AC_LANG(C++)} has been called, since C is more
 6131: @c standardized than C++.  (@pxref{Language Choice}, for more information
 6132: @c about selecting the language for checks.)
 6133: @c 
 6134: Cの関数@var{function}が利用可能な場合,シェルコマンド 
 6135: @var{action-if-found}を,それ以外では@var{action-if-not-found}を実行しま
 6136: す.関数が利用可能な場合にシンボルを定義したいだけならば,代わりに 
 6137: @code{AC_CHECK_FUNCS}を使用してください.このマクロは, CのほうがC++より
 6138: 標準化されているので,@code{AC_LANG_CPLUSPLUS}が呼び出された場合でも,C 
 6139: にリンクされる関数を調査します.(言語の選択の調査ついての詳細は, 
 6140: @pxref{Language Choice}.)
 6141: @end defmac
 6142: 
 6143: @defmac AC_CHECK_FUNCS (@var{function}@dots{}, @ovar{action-if-found}, @ovar{action-if-not-found})
 6144: @acindex CHECK_FUNCS
 6145: @cvindex HAVE_@var{function}
 6146: @c For each @var{function} in the whitespace-separated argument list,
 6147: @c define @code{HAVE_@var{function}} (in all capitals) if it is available.
 6148: @c If @var{action-if-found} is given, it is additional shell code to
 6149: @c execute when one of the functions is found.  You can give it a value of
 6150: @c @samp{break} to break out of the loop on the first match.  If
 6151: @c @var{action-if-not-found} is given, it is executed when one of the
 6152: @c functions is not found.
 6153: @c 
 6154: 空白で区切られた引数のリストで与えられているそれぞれの@var{function}に対
 6155: し,利用可能な場合は@code{HAVE_@var{function}}を(全て大文字で)定義します.
 6156: @var{action-if-found}が与えられている場合,関数の1つが見つかったとき実
 6157: 行する,追加のシェルコードになります.最初に一致したループでブレイクする
 6158: ためには,@samp{break}を与えることで可能になります.
 6159: @var{action-if-not-found}が与えられている場合,それは関数が1つでも見つ
 6160: からないときに実行されます.
 6161: @end defmac
 6162: 
 6163: @sp 1
 6164: 
 6165: @c Autoconf follows a philosophy that was formed over the years by those
 6166: @c who have struggled for portability: isolate the portability issues in
 6167: @c specific files, and then program as if you were in a @sc{posix}
 6168: @c environment.  Some functions may be missing or unfixable, and your
 6169: @c package must be ready to replace them.
 6170: @c 
 6171: Autoconfは,移植性について苦心してきた人々によって,何年もかけて形作られ
 6172: てきた哲学に従います.特定のファイルの移植性の問題と,@sc{posix}環境にい
 6173: るかのような問題とは別物です.関数によっては,無いものがあったり修正不可
 6174: 能だったりするものもあり,パッケージではそれらを置き換える準備が必要にな
 6175: ります.
 6176: 
 6177: @defmac AC_LIBOBJ (@var{function})
 6178: @acindex LIBOBJ
 6179: @ovindex LIBOBJS
 6180: @c Specify that @samp{@var{function}.c} must be included in the executables
 6181: @c to replace a missing or broken implementation of @var{function}.
 6182: @c 
 6183: 無かったり壊れたりしている@var{function}の実装を置換するために,実行形式
 6184: に含める必要がある@samp{@var{function}.c}を指定します.
 6185: 
 6186: @c Technically, it adds @samp{@var{function}.$ac_objext} to the output
 6187: @c variable @code{LIBOBJS} and calls @code{AC_LIBSOURCE} for
 6188: @c @samp{@var{function}.c}.  You should not directly change @code{LIBOBJS},
 6189: @c since this is not traceable.
 6190: @c 
 6191: 技術的には,それは@samp{@var{function}.$ac_objext}を出力変数
 6192: @code{LIBOBJS}に追加し,@samp{@var{function}.c}に対し@code{AC_LIBSOURCE} 
 6193: を呼び出します.@code{LIBOBJS}は追跡不可能なので,直接@code{LIBOBJS}を変
 6194: 更すべきではありません.
 6195: @end defmac
 6196: 
 6197: @defmac AC_LIBSOURCE (@var{file})
 6198: @acindex LIBSOURCE
 6199: @c Specify that @var{file} might be needed to compile the project.  If you
 6200: @c need to know what files might be needed by a @file{configure.ac}, you
 6201: @c should trace @code{AC_LIBSOURCE}.  @var{file} must be a literal.
 6202: @c 
 6203: プロジェクトをコンパイルするために必要になる@var{file}を指定します.
 6204: @file{configure.ac}で必要になるファイルを知る必要がある場合,
 6205: @code{AC_LIBSOURCE}を追跡調査してください.@var{file}はリテラルにする必
 6206: 要があります.
 6207: 
 6208: @c This macro is called automatically from @code{AC_LIBOBJ}, but you must
 6209: @c call it explicitly if you pass a shell variable to @code{AC_LIBOBJ}.  In
 6210: @c that case, since shell variables cannot be traced statically, you must
 6211: @c pass to @code{AC_LIBSOURCE} any possible files that the shell variable
 6212: @c might cause @code{AC_LIBOBJ} to need.  For example, if you want to pass
 6213: @c a variable @code{$foo_or_bar} to @code{AC_LIBOBJ} that holds either
 6214: @c @code{"foo"} or @code{"bar"}, you should do:
 6215: @c 
 6216: このマクロは,自動的に@code{AC_LIBOBJ}から呼び出されますが,シェル変数に
 6217: @code{AC_LIBOBJ}を渡す場合,明示的に指定する必要があります.この場合,シェ
 6218: ル変数は静的な追跡調査ができないので,@code{AC_LIBOBJ}を生成するために必
 6219: 要になりそうなあらゆるシェル変数を,@code{AC_LIBSOURCE}に渡す必要があり
 6220: ます.例えば,@code{"foo"}または@code{"bar"}を保持している
 6221: @code{AC_LIBOBJ}に変数@code{$foo_or_bar}を渡したい場合は,以下のようにす
 6222: べきでしょう.
 6223: 
 6224: @example
 6225: AC_LIBSOURCE(foo.c)
 6226: AC_LIBSOURCE(bar.c)
 6227: AC_LIBOBJ($foo_or_bar)
 6228: @end example
 6229: 
 6230: @noindent
 6231: @c There is usually a way to avoid this, however, and you are encouraged to
 6232: @c simply call @code{AC_LIBOBJ} with literal arguments.
 6233: @c 
 6234: しかし,これを避ける一般的な方法もあり,それには単純にリテラルの引数で
 6235: @code{AC_LIBOBJ}を呼び出すことを推奨します.
 6236: 
 6237: @c Note that this macro replaces the obsolete @code{AC_LIBOBJ_DECL}, with
 6238: @c slightly different semantics: the old macro took the function name,
 6239: @c e.g., @code{foo}, as its argument rather than the file name.
 6240: @c 
 6241: このマクロは,時代遅れの@code{AC_LIBOBJ_DECL}を若干異なる意味で置換する
 6242: ことに注意してください.古いマクロは,ファイル名ではなく関数名,例えば
 6243: @code{foo}を引数としてとります.
 6244: @end defmac
 6245: 
 6246: @defmac AC_LIBSOURCES (@var{files})
 6247: @acindex LIBSOURCES
 6248: @c Like @code{AC_LIBSOURCE}, but accepts one or more @var{files} in a
 6249: @c comma-separated M4 list.  Thus, the above example might be rewritten:
 6250: @c 
 6251: @code{AC_LIBSOURCE}に似ていますが,カンマで分けられているM4リストに,一
 6252: つ以上の@var{files}を受け入れます.このため,上記の例は以下のように書き
 6253: 換えられるでしょう.
 6254: 
 6255: @example
 6256: AC_LIBSOURCES([foo.c, bar.c])
 6257: AC_LIBOBJ($foo_or_bar)
 6258: @end example
 6259: @end defmac
 6260: 
 6261: @defmac AC_CONFIG_LIBOBJ_DIR (@var{directory})
 6262: @acindex CONFIG_LIBOBJ_DIR
 6263: @c Specify that @code{AC_LIBOBJ} replacement files are to be found in
 6264: @c @var{directory}, a relative path starting from the top level of the
 6265: @c source tree.  The replacement directory defaults to @file{.}, the top
 6266: @c level directory, and the most typical value is @file{lib}, corresponding
 6267: @c to @samp{AC_CONFIG_LIBOBJ_DIR(lib)}.
 6268: @c 
 6269: @code{AC_LIBOBJ}で置換するファイルが@var{directory}で見つかるように,ソー
 6270: スツリーのトップレベルから始まる相対パスを指定します.置換ディレクトリの
 6271: デフォルトはトップレベルディレクトリの@file{.}で,最も一般的な値は
 6272: @file{lib}で,@samp{AC_CONFIG_LIBOBJ_DIR(lib)}で対応します.
 6273: 
 6274: @c @command{configure} might need to know the replacement directory for the
 6275: @c following reasons: (i) some checks use the replacement files, (ii) some
 6276: @c macros bypass broken system headers by installing links to the
 6277: @c replacement headers, etc.
 6278: @c 
 6279: @command{configure}は以下の理由で,置換ディレクトリを知る必要がないかも
 6280: しれません.(i)置換ファイルを使用する調査もあります.(ii)置換ヘッダのリ
 6281: ンクを導入することで,壊れたシステムヘッダをバイパスするマクロもあります.
 6282: 等々.
 6283: @end defmac
 6284: 
 6285: @sp 1
 6286: 
 6287: @c It is common to merely check for the existence of a function, and ask
 6288: @c for its @code{AC_LIBOBJ} replacement if missing.  The following macro is
 6289: @c a convenient shorthand.
 6290: @c 
 6291: @code{AC_LIBOBJ}が無い場合,単に関数の存在を調査し,置換するかどうか尋ね
 6292: るだけのことは一般的です.以下のマクロは,便利で手短なものです.
 6293: 
 6294: @defmac AC_REPLACE_FUNCS (@var{function}@dots{})
 6295: @acindex REPLACE_FUNCS
 6296: @ovindex LIBOBJS
 6297: @c Like @code{AC_CHECK_FUNCS}, but uses @samp{AC_LIBOBJ(@var{function})} as
 6298: @c @var{action-if-not-found}.  You can declare your replacement function by
 6299: @c enclosing the prototype in @samp{#if !HAVE_@var{function}}.  If the
 6300: @c system has the function, it probably declares it in a header file you
 6301: @c should be including, so you shouldn't redeclare it lest your declaration
 6302: @c conflict.
 6303: @c 
 6304: @code{AC_CHECK_FUNCS}に似ていますが,@var{action-if-not-found} として
 6305: @samp{AC_LIBOBJ(@var{function})}を使用します.@samp{#if
 6306: !HAVE_@var{function}}にプロトタイプを含めることで,置換する関数を宣言す
 6307: ることが可能です.システムに関数が存在する場合,おそらくインクルードして
 6308: いるヘッダファイルで宣言されているので,宣言が衝突しないように,それを再
 6309: 定義すべきではありません.
 6310: @end defmac
 6311: 
 6312: @node Header Files
 6313: @c @section Header Files
 6314: @section ヘッダファイル
 6315: @cindex Header, checking
 6316: 
 6317: @c The following macros check for the presence of certain C header files.
 6318: @c If there is no macro specifically defined to check for a header file you need,
 6319: @c and you don't need to check for any special properties of
 6320: @c it, then you can use one of the general header-file check macros.
 6321: @c 
 6322: 以下のマクロは,ある特定のCヘッダファイルの存在を調査します.必要として
 6323: いるヘッダファイルを調査するために特に定義されたマクロがなく,その特別な
 6324: 特性を調査する必要がない場合,一般的なヘッダファイルチェックマクロの1つ
 6325: を使用することが可能です.
 6326: 
 6327: @menu
 6328: * Header Portability::          Collected knowledge on common headers
 6329: * Particular Headers::          Special handling to find certain headers
 6330: * Generic Headers::             How to find other headers
 6331: @end menu
 6332: 
 6333: @node Header Portability
 6334: @c @subsection Portability of Headers
 6335: @subsection ヘッダの移植性
 6336: 
 6337: @c This section tries to collect knowledge about common headers, and the
 6338: @c problems they cause.  By definition, this list will always require
 6339: @c additions.  Please help us keeping it as complete as possible.
 6340: @c 
 6341: このセクションでは,一般的なヘッダとそれらの問題に関する知識を正しくして
 6342: みたいと思います.定義上,以下のリストは常なる追加を必要とします.可能な
 6343: 限り完全に保つ手助けをお願いします.
 6344: 
 6345: @table @asis
 6346: @item @file{inttypes.h} vs.@: @file{stdint.h}
 6347: @c Paul Eggert notes that: ISO C 1999 says that @file{inttypes.h} includes
 6348: @c @file{stdint.h}, so there's no need to include @file{stdint.h}
 6349: @c separately in a standard environment.  Many implementations have
 6350: @c @file{inttypes.h} but not @file{stdint.h} (e.g., Solaris 7), but I don't
 6351: @c know of any implementation that has @file{stdint.h} but not
 6352: @c @file{inttypes.h}.  Nor do I know of any free software that includes
 6353: @c @file{stdint.h}; @file{stdint.h} seems to be a creation of the committee.
 6354: @c 
 6355: Paul Eggertのメモ:ISO C 1999では,@file{inttypes.h}は@file{stdint.h}を
 6356: インクルードするので,標準的な環境では@file{stdint.h}を個別にインクルー
 6357: ドする必要な無いことになっています.多くの実装では,@file{inttypes.h}は
 6358: ありますが@file{stdint.h}はありませんし(例えば,Solaris 7),
 6359: @file{stdint.h}があって@file{inttypes.h}が無いと言う実装は知りません.ま
 6360: た,@file{stdint.h}をインクルードしているフリーソフトウェアも知りません.
 6361: @file{stdint.h}は,委員会で作成されたようです.
 6362: @end table
 6363: 
 6364: 
 6365: @node Particular Headers
 6366: @c @subsection Particular Header Checks
 6367: @subsection 特定のヘッダの調査
 6368: 
 6369: @c These macros check for particular system header files---whether they
 6370: @c exist, and in some cases whether they declare certain symbols.
 6371: @c 
 6372: これらのマクロは,特定のシステムヘッダファイルを調査します --- それらが
 6373: 存在しているか,そして場合によっては,特定のシンボルを宣言しているかを調
 6374: 査します.
 6375: 
 6376: @defmac AC_HEADER_DIRENT
 6377: @acindex HEADER_DIRENT
 6378: @cvindex HAVE_DIRENT_H
 6379: @cvindex HAVE_NDIR_H
 6380: @cvindex HAVE_SYS_DIR_H
 6381: @cvindex HAVE_SYS_NDIR_H
 6382: @c Check for the following header files.  For the first one that is
 6383: @c found and defines @samp{DIR}, define the listed C preprocessor macro:
 6384: @c 
 6385: 以下のヘッダファイルを調査します.最初に見つかった@samp{DIR}を定義してい
 6386: るものに対して,リストアップされているCプリプロセッサマクロを定義します.
 6387: 
 6388: @multitable {@file{sys/ndir.h}} {@code{HAVE_SYS_NDIR_H}}
 6389: @item @file{dirent.h}   @tab @code{HAVE_DIRENT_H}
 6390: @item @file{sys/ndir.h} @tab @code{HAVE_SYS_NDIR_H}
 6391: @item @file{sys/dir.h}  @tab @code{HAVE_SYS_DIR_H}
 6392: @item @file{ndir.h}     @tab @code{HAVE_NDIR_H}
 6393: @end multitable
 6394: 
 6395: @c The directory-library declarations in your source code should look
 6396: @c something like the following:
 6397: @c 
 6398: ソースコード内のディレクトリライブラリの宣言は,以下のようにすべきでしょ
 6399: う.
 6400: 
 6401: @example
 6402: @group
 6403: #if HAVE_DIRENT_H
 6404: # include <dirent.h>
 6405: # define NAMLEN(dirent) strlen((dirent)->d_name)
 6406: #else
 6407: # define dirent direct
 6408: # define NAMLEN(dirent) (dirent)->d_namlen
 6409: # if HAVE_SYS_NDIR_H
 6410: #  include <sys/ndir.h>
 6411: # endif
 6412: # if HAVE_SYS_DIR_H
 6413: #  include <sys/dir.h>
 6414: # endif
 6415: # if HAVE_NDIR_H
 6416: #  include <ndir.h>
 6417: # endif
 6418: #endif
 6419: @end group
 6420: @end example
 6421: 
 6422: @c Using the above declarations, the program would declare variables to be
 6423: @c of type @code{struct dirent}, not @code{struct direct}, and would access
 6424: @c the length of a directory entry name by passing a pointer to a
 6425: @c @code{struct dirent} to the @code{NAMLEN} macro.
 6426: @c 
 6427: 上記の宣言を使用している場合,プログラムは型を@code{struct direct}ではな
 6428: く@code{struct dirent}として変数を宣言し,@code{struct dirent}へのポイン
 6429: タを渡すことによって,@code{NAMLEN}マクロまでのディレクトリエントリ名の
 6430: 長さにアクセスします.
 6431: 
 6432: @c This macro also checks for the SCO Xenix @file{dir} and @file{x} libraries.
 6433: @c 
 6434: このマクロは,SCO Xenix @file{dir}と@file{x}ライブラリも調査します.
 6435: @end defmac
 6436: 
 6437: @defmac AC_HEADER_MAJOR
 6438: @acindex HEADER_MAJOR
 6439: @cvindex MAJOR_IN_MKDEV
 6440: @cvindex MAJOR_IN_SYSMACROS
 6441: @c If @file{sys/types.h} does not define @code{major}, @code{minor}, and
 6442: @c @code{makedev}, but @file{sys/mkdev.h} does, define
 6443: @c @code{MAJOR_IN_MKDEV}; otherwise, if @file{sys/sysmacros.h} does, define
 6444: @c @code{MAJOR_IN_SYSMACROS}.
 6445: @c 
 6446: @file{sys/types.h}が@code{major},@code{minor},そして@code{makedev}を定
 6447: 義していないが,@file{sys/mkdev.h}が定義している場合,
 6448: @code{MAJOR_IN_MKDEV}を定義します.それ以外の場合で,
 6449: @file{sys/sysmacros.h}が定義している場合は,@code{MAJOR_IN_SYSMACROS}を
 6450: 定義します.
 6451: @end defmac
 6452: 
 6453: 
 6454: @defmac AC_HEADER_STAT
 6455: @acindex HEADER_STAT
 6456: @acindex STAT_MACROS_BROKEN
 6457: @c If the macros @code{S_ISDIR}, @code{S_ISREG}, etc.@: defined in
 6458: @c @file{sys/stat.h} do not work properly (returning false positives),
 6459: @c define @code{STAT_MACROS_BROKEN}.  This is the case on Tektronix UTekV,
 6460: @c Amdahl UTS and Motorola System V/88.
 6461: @c 
 6462: @file{sys/stat.h}で定義されている@code{S_ISDIR},@code{S_ISREG}等のマク
 6463: ロが正確に動作しない(間違った正の値を返す)場合,
 6464: @code{STAT_MACROS_BROKEN} を定義します.Tektronix UTekV,Amdahl UTS,そ
 6465: してMotorola System V/88の場合がそうです.
 6466: @end defmac
 6467: 
 6468: 
 6469: @defmac AC_HEADER_STDC
 6470: @acindex HEADER_STDC
 6471: @cvindex STDC_HEADERS
 6472: @c Define @code{STDC_HEADERS} if the system has @sc{ansi} C header files.
 6473: @c Specifically, this macro checks for @file{stdlib.h}, @file{stdarg.h},
 6474: @c @file{string.h}, and @file{float.h}; if the system has those, it
 6475: @c probably has the rest of the @sc{ansi} C header files.  This macro also
 6476: @c checks whether @file{string.h} declares @code{memchr} (and thus
 6477: @c presumably the other @code{mem} functions), whether @file{stdlib.h}
 6478: @c declare @code{free} (and thus presumably @code{malloc} and other related
 6479: @c functions), and whether the @file{ctype.h} macros work on characters
 6480: @c with the high bit set, as @sc{ansi} C requires.
 6481: @c 
 6482: システムに@sc{ansi} Cヘッダファイルが存在する場合,@code{STDC_HEADERS}を
 6483: 定義します.特にこのマクロは,@file{stdlib.h},@file{stdarg.h},
 6484: @file{string.h},そして@file{float.h}を調査し,システムにそれらが存在し
 6485: ている場合は,おそらく@sc{ansi} Cヘッダーファイルの残りも存在します.同
 6486: 様に,このマクロは@file{string.h}が@code{memchr}を宣言(他の@code{mem}関
 6487: 数もおそらく存在)しているかどうか,@file{stdlib.h}が@code{free}を宣言
 6488: (@code{malloc}や他の関連する関数もおそらく存在)しているかどうか,そして,
 6489: @file{ctype.h}マクロが,@sc{ansi} Cが要求するハイビットセット文字でも動
 6490: 作するかどうかを調査します.
 6491: 
 6492: @c Use @code{STDC_HEADERS} instead of @code{__STDC__} to determine whether
 6493: @c the system has @sc{ansi}-compliant header files (and probably C library
 6494: @c functions) because many systems that have GCC do not have @sc{ansi} C
 6495: @c header files.
 6496: @c 
 6497: GCCがあるシステムの多くは@sc{ansi} Cヘッダファイルが存在していないので,
 6498: システムに@sc{ansi}対応のヘッダファイル(そして,おそらくCライブラリ関数) 
 6499: が存在していることを決定するために,@code{__STDC__}の代わりに
 6500: @code{STDC_HEADERS}を使用してください.
 6501: 
 6502: @c On systems without @sc{ansi} C headers, there is so much variation that
 6503: @c it is probably easier to declare the functions you use than to figure
 6504: @c out exactly what the system header files declare.  Some systems contain
 6505: @c a mix of functions from @sc{ansi} and @sc{bsd}; some are mostly @sc{ansi} but
 6506: @c lack @samp{memmove}; some define the @sc{bsd} functions as macros in
 6507: @c @file{string.h} or @file{strings.h}; some have only the @sc{bsd}
 6508: @c functions but @file{string.h}; some declare the memory functions in
 6509: @c @file{memory.h}, some in @file{string.h}; etc.  It is probably
 6510: @c sufficient to check for one string function and one memory function; if
 6511: @c the library has the @sc{ansi} versions of those then it probably has
 6512: @c most of the others.  If you put the following in @file{configure.ac}:
 6513: @c 
 6514: @sc{ansi} Cヘッダが無いシステムには多くの変種が存在していて,そこでは,
 6515: システムヘッダファイルが宣言しているものを正確に理解するより,使用する関
 6516: 数を宣言する方がより容易でしょう.@sc{ansi}と@sc{bsd}の関数が混在してい
 6517: るシステムもあります.ほとんど@sc{ansi}だが@samp{memmove}が無いものもあ
 6518: ります.@sc{bsd}関数が@file{string.h}や@file{strings.h}でマクロで定義さ
 6519: れているものもあります.@sc{bsd}関数しか持っていないが @file{string.h}が
 6520: 存在するものもあります.メモリ関数が@file{memory.h}で定義されていて,
 6521: @file{string.h}でも定義されているものもあります.等々いろいろなシステム
 6522: があります.一つの文字列関数と一つのメモリ関数を調査すれば恐らく十分です.
 6523: ライブラリに@sc{ansi}バージョンのものが存在する場合,他のものもほとんど
 6524: 存在します.以下を@file{configure.ac}に書き込む場合を考えます.
 6525: 
 6526: @example
 6527: AC_HEADER_STDC
 6528: AC_CHECK_FUNCS(strchr memcpy)
 6529: @end example
 6530: 
 6531: @noindent
 6532: @c then, in your code, you can use declarations like this:
 6533: @c 
 6534: コード内に,以下のような宣言を使用することが可能です.
 6535: 
 6536: @example
 6537: @group
 6538: #if STDC_HEADERS
 6539: # include <string.h>
 6540: #else
 6541: # if !HAVE_STRCHR
 6542: #  define strchr index
 6543: #  define strrchr rindex
 6544: # endif
 6545: char *strchr (), *strrchr ();
 6546: # if !HAVE_MEMCPY
 6547: #  define memcpy(d, s, n) bcopy ((s), (d), (n))
 6548: #  define memmove(d, s, n) bcopy ((s), (d), (n))
 6549: # endif
 6550: #endif
 6551: @end group
 6552: @end example
 6553: 
 6554: @noindent
 6555: @c If you use a function like @code{memchr}, @code{memset}, @code{strtok},
 6556: @c or @code{strspn}, which have no @sc{bsd} equivalent, then macros won't
 6557: @c suffice; you must provide an implementation of each function.  An easy
 6558: @c way to incorporate your implementations only when needed (since the ones
 6559: @c in system C libraries may be hand optimized) is to, taking @code{memchr}
 6560: @c for example, put it in @file{memchr.c} and use
 6561: @c @samp{AC_REPLACE_FUNCS(memchr)}.
 6562: @c 
 6563: @sc{bsd}とは異なる@code{memchr},@code{memset},@code{strtok},または 
 6564: @code{strspn}の様な関数を使用する場合,マクロは不十分でしょう.それぞれ
 6565: の関数を実装する必要があります.(システムのCライブラリのものが,手動で最
 6566: 適化されているかもしれないので)必要なときだけ実装を組み込む簡単な方法と
 6567: して,例えば@code{memchr}を使用する場合は,それを@file{memchr.c}に書き込
 6568: み,@samp{AC_REPLACE_FUNCS(memchr)}を使用することです.
 6569: @end defmac
 6570: 
 6571: @defmac AC_HEADER_SYS_WAIT
 6572: @acindex HEADER_SYS_WAIT
 6573: @cvindex HAVE_SYS_WAIT_H
 6574: @c If @file{sys/wait.h} exists and is compatible with @sc{posix.1}, define
 6575: @c @code{HAVE_SYS_WAIT_H}.  Incompatibility can occur if @file{sys/wait.h}
 6576: @c does not exist, or if it uses the old @sc{bsd} @code{union wait} instead
 6577: @c of @code{int} to store a status value.  If @file{sys/wait.h} is not
 6578: @c @sc{posix.1} compatible, then instead of including it, define the
 6579: @c @sc{posix.1} macros with their usual interpretations.  Here is an
 6580: @c example:
 6581: @c 
 6582: @file{sys/wait.h}が存在して,@sc{posix.1}と互換性がある場合, 
 6583: @code{HAVE_SYS_WAIT_H}を定義します.非互換性は,@file{sys/wait.h}が存在
 6584: しない場合や,ステータスの値を保存するため,@code{int}の代わりに古い
 6585: @sc{bsd}の@code{union wait}使用する場合に生じます.@file{sys/wait.h}が
 6586: @sc{posix.1}と互換性がない場合,それをインクルードする代わりに,それらの
 6587: 通常の解釈を用いて@sc{posix.1}のマクロを定義してください.例えば以下のよ
 6588: うにします.
 6589: 
 6590: @example
 6591: @group
 6592: #include <sys/types.h>
 6593: #if HAVE_SYS_WAIT_H
 6594: # include <sys/wait.h>
 6595: #endif
 6596: #ifndef WEXITSTATUS
 6597: # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
 6598: #endif
 6599: #ifndef WIFEXITED
 6600: # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
 6601: #endif
 6602: @end group
 6603: @end example
 6604: @end defmac
 6605: 
 6606: @cvindex _POSIX_VERSION
 6607: @c @code{_POSIX_VERSION} is defined when @file{unistd.h} is included on
 6608: @c @sc{posix.1} systems.  If there is no @file{unistd.h}, it is definitely
 6609: @c not a @sc{posix.1} system.  However, some non-@sc{posix.1} systems do
 6610: @c have @file{unistd.h}.
 6611: @c 
 6612: @file{unistd.h}が@sc{posix.1}システムに含まれている場合,
 6613: @code{_POSIX_VERSION}が定義されます.@file{unistd.h}が無い場合,明らかに
 6614: @sc{posix.1}システムではありません.しかし,@file{unistd.h}を持つ
 6615: @sc{posix.1}ではないシステムもあります.
 6616: 
 6617: @c The way to check if the system supports @sc{posix.1} is:
 6618: @c 
 6619: システムが@sc{posix.1}をサポートしているかどうか調査する方法は以下のよう
 6620: にします.
 6621: 
 6622: @example
 6623: @group
 6624: #if HAVE_UNISTD_H
 6625: # include <sys/types.h>
 6626: # include <unistd.h>
 6627: #endif
 6628: 
 6629: #ifdef _POSIX_VERSION
 6630: /* Code for POSIX.1 systems.  */
 6631: #endif
 6632: @end group
 6633: @end example
 6634: 
 6635: @defmac AC_HEADER_TIME
 6636: @acindex HEADER_TIME
 6637: @cvindex TIME_WITH_SYS_TIME
 6638: @c If a program may include both @file{time.h} and @file{sys/time.h},
 6639: @c define @code{TIME_WITH_SYS_TIME}.  On some older systems,
 6640: @c @file{sys/time.h} includes @file{time.h}, but @file{time.h} is not
 6641: @c protected against multiple inclusion, so programs should not explicitly
 6642: @c include both files.  This macro is useful in programs that use, for
 6643: @c example, @code{struct timeval} or @code{struct timezone} as well as
 6644: @c @code{struct tm}.  It is best used in conjunction with
 6645: @c @code{HAVE_SYS_TIME_H}, which can be checked for using
 6646: @c @code{AC_CHECK_HEADERS(sys/time.h)}.
 6647: @c 
 6648: プログラムが,@file{time.h}と@file{sys/time.h}の両方をインクルードする可
 6649: 能性がある場合,@code{TIME_WITH_SYS_TIME}を定義します.古いシステムでは,
 6650: @file{sys/time.h}が@file{time.h}をインクルードするものもありますが,
 6651: @file{time.h}は複数回のインクルードに対して保護されていないので,プログ
 6652: ラムで明示的に両方のファイルをインクルードすべきではありません.このマク
 6653: ロは,例えば,@code{struct tm}と同様,@code{struct timeval}や 
 6654: @code{struct timezone}を使用するプログラムで役に立ちます. 
 6655: @code{AC_CHECK_HEADERS(sys/time.h)}を使用していることを調査可能にする
 6656: @code{HAVE_SYS_TIME_H}と一緒に使用するのが最善の方法です.
 6657: 
 6658: @example
 6659: @group
 6660: #if TIME_WITH_SYS_TIME
 6661: # include <sys/time.h>
 6662: # include <time.h>
 6663: #else
 6664: # if HAVE_SYS_TIME_H
 6665: #  include <sys/time.h>
 6666: # else
 6667: #  include <time.h>
 6668: # endif
 6669: #endif
 6670: @end group
 6671: @end example
 6672: @end defmac
 6673: 
 6674: 
 6675: @defmac AC_HEADER_TIOCGWINSZ
 6676: @acindex HEADER_TIOCGWINSZ
 6677: @cvindex GWINSZ_IN_SYS_IOCTL
 6678: @c FIXME: I need clarifications from Jim.
 6679: @c If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
 6680: @c define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
 6681: @c found in @file{<termios.h>}.
 6682: @c 
 6683: @code{TIOCGWINSZ}の使用が@file{<sys/ioctl.h>}を要求する場合,
 6684: @code{GWINSZ_IN_SYS_IOCTL}を定義します.それ以外では,@code{TIOCGWINSZ}
 6685: は@file{<termios.h>}で見つかるはずです.
 6686: 
 6687: @c Use:
 6688: @c 
 6689: 以下のようにして使用します.
 6690: 
 6691: @example
 6692: @group
 6693: #if HAVE_TERMIOS_H
 6694: # include <termios.h>
 6695: #endif
 6696: 
 6697: #if GWINSZ_IN_SYS_IOCTL
 6698: # include <sys/ioctl.h>
 6699: #endif
 6700: @end group
 6701: @end example
 6702: @end defmac
 6703: 
 6704: @node Generic Headers
 6705: @c @subsection Generic Header Checks
 6706: @subsection 一般的なヘッダの調査
 6707: 
 6708: @c These macros are used to find system header files not covered by the
 6709: @c ``particular'' test macros.  If you need to check the contents of a header
 6710: @c as well as find out whether it is present, you have to write your own
 6711: @c test for it (@pxref{Writing Tests}).
 6712: @c 
 6713: これらのマクロは,``特定の''テストマクロでカバーされていない,システムヘッ
 6714: ダファイルを見つけるために使用されます.その存在を見つけるだけでなく,ヘッ
 6715: ダの内容を調査する必要がある場合,そのために独自のテストを書く必要があり
 6716: ます (@pxref{Writing Tests}).
 6717: 
 6718: @defmac AC_CHECK_HEADER (@var{header-file}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
 6719: @acindex CHECK_HEADER
 6720: @c If the system header file @var{header-file} is usable, execute shell
 6721: @c commands @var{action-if-found}, otherwise execute
 6722: @c @var{action-if-not-found}.  If you just want to define a symbol if the
 6723: @c header file is available, consider using @code{AC_CHECK_HEADERS}
 6724: @c instead.
 6725: @c 
 6726: システムヘッダファイル@var{header-file}が存在する場合,シェルコマンド
 6727: @var{action-if-found}を,それ以外では@var{action-if-not-found}を実行しま
 6728: す.ヘッダファイルが利用可能な場合で,シンボルを定義したいだけの場合は,
 6729: 代わりに,@code{AC_CHECK_HEADERS}を使用を考えてみてください.
 6730: 
 6731: @c The meaning of ``usable'' depends upon the content of @var{includes}:
 6732: @c 
 6733: ``利用可能''の意味は,@var{includes}の内容に依存します.
 6734: 
 6735: @table @asis
 6736: @c @item if @var{includes} is empty
 6737: @item @var{includes}が空の場合
 6738: @c check whether
 6739: @c 
 6740: 以下の内容を調査します.
 6741: 
 6742: @example
 6743: @var{header-file}
 6744: @end example
 6745: 
 6746: @noindent
 6747: @c can be @emph{preprocessed} without error.
 6748: @c 
 6749: これがエラー無く処理可能かどうかを調査します.
 6750: 
 6751: @c @item if @var{include} is set
 6752: @item @var{include}が設定されている場合
 6753: @c Check whether
 6754: @c 
 6755: 以下の内容を調査します.
 6756: 
 6757: @example
 6758: @var{includes}
 6759: #include <@var{header-file}>
 6760: @end example
 6761: 
 6762: @noindent
 6763: @c can be @emph{compiled} without error.  You may use
 6764: @c @code{AC_CHECK_HEADER} (and @code{AC_CHECK_HEADERS}) to check whether
 6765: @c two headers are compatible.
 6766: @c 
 6767: これがエラー無くコンパイル可能かどうかを調査します.2つのヘッダに互換性
 6768: があるかどうかを調査するために@code{AC_CHECK_HEADER}(と
 6769: @code{AC_CHECK_HEADERS})を使用することが可能です.
 6770: @end table
 6771: 
 6772: @c You may pass any kind of dummy content for @var{includes}, such as a
 6773: @c single space or a comment, to check whether @var{header-file} compiles
 6774: @c with success.
 6775: @c 
 6776: @var{header-file}のコンパイルが成功するかどうか調査するために,
 6777: @var{includes}に対して単一のスペースやカンマのような,ダミーの内容を渡す
 6778: ことも可能です.
 6779: @end defmac
 6780: 
 6781: @defmac AC_CHECK_HEADERS (@var{header-file}@dots{}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
 6782: @acindex CHECK_HEADERS
 6783: @cvindex HAVE_@var{header}
 6784: @c For each given system header file @var{header-file} in the
 6785: @c whitespace-separated argument list that exists, define
 6786: @c @code{HAVE_@var{header-file}} (in all capitals).  If @var{action-if-found}
 6787: @c is given, it is additional shell code to execute when one of the header
 6788: @c files is found.  You can give it a value of @samp{break} to break out of
 6789: @c the loop on the first match.  If @var{action-if-not-found} is given, it
 6790: @c is executed when one of the header files is not found.
 6791: @c 
 6792: 空白で区切られた引数のリストで与えられているシステムヘッダファイル
 6793: @var{header-file}が存在しているものに対し,@code{HAVE_@var{header-file}} 
 6794: を(全て大文字で)定義します.@var{action-if-found}が与えられている場合,
 6795: それはヘッダファイルの一つが見つかったときに実行する追加のシェルコードに
 6796: なります.最初に一致したループでブレイクするために@samp{break}を与えるこ
 6797: とが可能です. @var{action-if-not-found}が与えられている場合,ヘッダファ
 6798: イルが一つでも見つからないとき実行されます.
 6799: 
 6800: @c Be sure to read the documentation of @code{AC_CHECK_HEADER} to
 6801: @c understand the influence of @var{includes}.
 6802: @c 
 6803: @var{includes}の影響を理解するために,@code{AC_CHECK_HEADER}のドキュメン
 6804: トをしっかり読んでください.
 6805: @end defmac
 6806: 
 6807: @node Declarations
 6808: @c @section Declarations
 6809: @section 宣言
 6810: @cindex Declaration, checking
 6811: 
 6812: @c The following macros check for the declaration of variables and
 6813: @c functions.  If there is no macro specifically defined to check for a
 6814: @c symbol you need, then you can use the general macros (@pxref{Generic
 6815: @c Declarations}) or, for more complex tests, you may use
 6816: @c @code{AC_TRY_COMPILE} (@pxref{Examining Syntax}).
 6817: @c 
 6818: 以下のマクロは,変数と関数の宣言を調査します.必要なシンボルを調査するた
 6819: めに特別なマクロが定義されていない場合,一般的なマクロ(@pxref{Generic
 6820: Declarations}を使用することが可能で,より複雑なテストに対しては,
 6821: @code{AC_TRY_COMPILE}を使用することが可能です(@pxref{Examining Syntax}).
 6822: 
 6823: @menu
 6824: * Particular Declarations::     Macros to check for certain declarations
 6825: * Generic Declarations::        How to find other declarations
 6826: @end menu
 6827: 
 6828: @node Particular Declarations
 6829: @c @subsection Particular Declaration Checks
 6830: @subsection 特定の宣言の調査
 6831: 
 6832: @c The following macros check for certain declarations.
 6833: @c 
 6834: 以下のマクロは特定の宣言を調査します.
 6835: 
 6836: @defmac AC_DECL_SYS_SIGLIST
 6837: @acindex DECL_SYS_SIGLIST
 6838: @cvindex SYS_SIGLIST_DECLARED
 6839: @c Define @code{SYS_SIGLIST_DECLARED} if the variable @code{sys_siglist}
 6840: @c is declared in a system header file, either @file{signal.h} or
 6841: @c @file{unistd.h}.
 6842: @c 
 6843: 変数@code{sys_siglist}が,システムヘッダファイルの@file{signal.h}と
 6844: @file{unistd.h}のいずれかでで宣言されている場合, 
 6845: @code{SYS_SIGLIST_DECLARED}を定義します.
 6846: @end defmac
 6847: 
 6848: @node Generic Declarations
 6849: @c @subsection Generic Declaration Checks
 6850: @subsection 一般的な宣言の調査
 6851: 
 6852: @c These macros are used to find declarations not covered by the ``particular''
 6853: @c test macros.
 6854: @c 
 6855: これらのマクロは,``特定の''テストマクロでカバーされていない宣言を調査す
 6856: るために使用します.
 6857: 
 6858: @defmac AC_CHECK_DECL (@var{symbol}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
 6859: @acindex CHECK_DECL
 6860: @c If @var{symbol} (a function or a variable) is not declared in
 6861: @c @var{includes} and a declaration is needed, run the shell commands
 6862: @c @var{action-if-not-found}, otherwise @var{action-if-found}.  If no
 6863: @c @var{includes} are specified, the default includes are used
 6864: @c (@pxref{Default Includes}).
 6865: @c 
 6866: @var{symbol}(関数や変数)が@var{includes}で定義されていなくて宣言が必要な
 6867: 場合,シェルコマンド@var{action-if-not-found}を実行し,それ以外では
 6868: @var{action-if-found}を実行します.@var{includes}が宣言されていない場合,
 6869: デフォルトのインクルードが使用されます(@pxref{Default Includes}).
 6870: 
 6871: @c This macro actually tests whether it is valid to use @var{symbol} as an
 6872: @c r-value, not if it is really declared, because it is much safer to avoid
 6873: @c introducing extra declarations when they are not needed.
 6874: @c 
 6875: このマクロは,必要でないときに余分な宣言を導入することを避けた方が安全な
 6876: ので,@var{symbol}がr-valueとして有効かどうかを実際にテストし,実際に宣
 6877: 言されているかどうかはテストしません.
 6878: @end defmac
 6879: 
 6880: @defmac AC_CHECK_DECLS (@var{symbols}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
 6881: @acindex CHECK_DECLS
 6882: @cvindex HAVE_DECL_@var{symbol}
 6883: @c For each of the @var{symbols} (@emph{comma}-separated list), define
 6884: @c @code{HAVE_DECL_@var{symbol}} (in all capitals) to @samp{1} if
 6885: @c @var{symbol} is declared, otherwise to @samp{0}.  If
 6886: @c @var{action-if-not-found} is given, it is additional shell code to
 6887: @c execute when one of the function declarations is needed, otherwise
 6888: @c @var{action-if-found} is executed.
 6889: @c 
 6890: それぞれの(@emph{カンマ}で分けられているリスト)@var{symbols}に対し,
 6891: @var{symbol}が宣言されれいる場合は@code{HAVE_DECL_@var{symbol}}を(全て大
 6892: 文字で)@samp{1}に定義し,それ以外では@samp{0}に定義します.
 6893: @var{action-if-not-found}が与えられている場合,関数宣言の一つが必要なと
 6894: き実行するシェルコードを追加し,それ以外では@var{action-if-found}が実行
 6895: されます.
 6896: 
 6897: @c This macro uses an m4 list as first argument:
 6898: @c 
 6899: このマクロは,最初の引数としてM4のリストを使用します.
 6900: @example
 6901: AC_CHECK_DECLS(strdup)
 6902: AC_CHECK_DECLS([strlen])
 6903: AC_CHECK_DECLS([malloc, realloc, calloc, free])
 6904: @end example
 6905: 
 6906: @c Unlike the other @samp{AC_CHECK_*S} macros, when a @var{symbol} is not
 6907: @c declared, @code{HAVE_DECL_@var{symbol}} is defined to @samp{0} instead
 6908: @c of leaving @code{HAVE_DECL_@var{symbol}} undeclared.  When you are
 6909: @c @emph{sure} that the check was performed, use
 6910: @c @code{HAVE_DECL_@var{symbol}} just like any other result of Autoconf:
 6911: @c 
 6912: 他の@samp{AC_CHECK_*S}マクロと異なり,@var{symbol}が宣言されていないとき,
 6913: @code{HAVE_DECL_@var{symbol}}を宣言しないままにする代わりに,
 6914: @code{HAVE_DECL_@var{symbol}}は@samp{0}で定義されます.調査の実行を
 6915: @emph{確かめている}ときは,@code{HAVE_DECL_@var{symbol}}をAutoconfの他の
 6916: 結果と同じように,以下のように使用してください.
 6917: 
 6918: @example
 6919: #if !HAVE_DECL_SYMBOL
 6920: extern char *symbol;
 6921: #endif
 6922: @end example
 6923: 
 6924: @noindent
 6925: @c If the test may have not been performed, however, because it is safer
 6926: @c @emph{not} to declare a symbol than to use a declaration that conflicts
 6927: @c with the system's one, you should use:
 6928: @c 
 6929: しかし,テストが実行されていない場合,システムのものと衝突するような宣言
 6930: を使用するより,シンボルを宣言@emph{しない}方が安全なので,以下のように
 6931: 使用すべきでしょう.
 6932: 
 6933: @example
 6934: #if defined HAVE_DECL_MALLOC && !HAVE_DECL_MALLOC
 6935: char *malloc (size_t *s);
 6936: #endif
 6937: @end example
 6938: 
 6939: @noindent
 6940: @c You fall into the second category only in extreme situations: either
 6941: @c your files may be used without being configured, or they are used during
 6942: @c the configuration.  In most cases the traditional approach is enough.
 6943: @c 
 6944: 究極の状態でのみ2番目のカテゴリに分類されます.ファイルがコンフィグレー
 6945: ションされずに使用されている場合か,コンフィグレーション時に使用されてい
 6946: る場合のいずれかです.ほとんどの場合はこれまでの方法で十分です.
 6947: @end defmac
 6948: 
 6949: 
 6950: @node Structures
 6951: @c @section Structures
 6952: @section 構造体
 6953: @cindex Structure, checking
 6954: 
 6955: @c The following macros check for the presence of certain members in C
 6956: @c structures.  If there is no macro specifically defined to check for a
 6957: @c member you need, then you can use the general structure-member macros
 6958: @c (@pxref{Generic Structures}) or, for more complex tests, you may use
 6959: @c @code{AC_TRY_COMPILE} (@pxref{Examining Syntax}).
 6960: @c 
 6961: 以下のマクロは,特定のCの構造体の存在を調査します.必要なメンバーの調査
 6962: するために定義されている特定のマクロが無い場合,一般的な構造体メンバーの
 6963: マクロを使用したり(@pxref{Generic Structures}),より複雑なテストに対して
 6964: は,@code{AC_TRY_COMPILE}を使用することが可能です(@pxref{Examining
 6965: Syntax}).
 6966: 
 6967: @menu
 6968: * Particular Structures::       Macros to check for certain structure members
 6969: * Generic Structures::          How to find other structure members
 6970: @end menu
 6971: 
 6972: @node Particular Structures
 6973: @c @subsection Particular Structure Checks
 6974: @subsection 特定の構造体の調査
 6975: 
 6976: @c The following macros check for certain structures or structure members.
 6977: @c 
 6978: 以下のマクロは,特定の構造体と構造体のメンバーを調査します.
 6979: 
 6980: @defmac AC_STRUCT_ST_BLKSIZE
 6981: @acindex STRUCT_ST_BLKSIZE
 6982: @cvindex HAVE_STRUCT_STAT_ST_BLKSIZE
 6983: @cvindex HAVE_ST_BLKSIZE
 6984: @c If @code{struct stat} contains an @code{st_blksize} member, define
 6985: @c @code{HAVE_STRUCT_STAT_ST_BLKSIZE}.  The former name,
 6986: @c @code{HAVE_ST_BLKSIZE} is to be avoided, as its support will cease in
 6987: @c the future.  This macro is obsoleted, and should be replaced by
 6988: @c 
 6989: @code{struct stat}が@code{st_blksize}メンバーを含んでいる場合, 
 6990: @code{HAVE_STRUCT_STAT_ST_BLKSIZE}を定義します.これまでの名前
 6991: @code{HAVE_ST_BLKSIZE}は,将来サポートを中止するので避けてください.この
 6992: マクロは時代遅れで,以下のもので置換すべきです.
 6993: 
 6994: @example
 6995: AC_CHECK_MEMBERS([struct stat.st_blksize])
 6996: @end example
 6997: @end defmac
 6998: 
 6999: @defmac AC_STRUCT_ST_BLOCKS
 7000: @acindex STRUCT_ST_BLOCKS
 7001: @cvindex HAVE_STRUCT_STAT_ST_BLOCKS
 7002: @cvindex HAVE_ST_BLOCKS
 7003: @ovindex LIBOBJS
 7004: @c If @code{struct stat} contains an @code{st_blocks} member, define
 7005: @c @code{HAVE_STRUCT STAT_ST_BLOCKS}.  Otherwise, require an
 7006: @c @code{AC_LIBOBJ} replacement of @samp{fileblocks}.  The former name,
 7007: @c @code{HAVE_ST_BLOCKS} is to be avoided, as its support will cease in the
 7008: @c future.
 7009: @c 
 7010: @code{struct stat}が@code{st_blocks}メンバーを含んでいる場合, 
 7011: @code{HAVE_STRUCT STAT_ST_BLOCKS}を定義します.それ以外では,出力変数 
 7012: @code{AC_LIBOBJS}で@samp{fileblocks}の置換を要求します.これまでの名前
 7013: @code{HAVE_ST_BLOCKS}は,将来サポートを中止するので避けてください.
 7014: @end defmac
 7015: 
 7016: @defmac AC_STRUCT_ST_RDEV
 7017: @acindex STRUCT_ST_RDEV
 7018: @cvindex HAVE_ST_RDEV
 7019: @cvindex HAVE_STRUCT_STAT_ST_RDEV
 7020: @c If @code{struct stat} contains an @code{st_rdev} member, define
 7021: @c @code{HAVE_STRUCT_STAT_ST_RDEV}.  The former name for this macro,
 7022: @c @code{HAVE_ST_RDEV}, is to be avoided as it will cease to be supported
 7023: @c in the future.  Actually, even the new macro is obsolete and should be
 7024: @c replaced by:
 7025: @c 
 7026: @code{struct stat}が@code{st_rdev}メンバーを含んでいる場合, 
 7027: @code{HAVE_STRUCT_STAT_ST_RDEV}を定義します.これまでの名前
 7028: @code{HAVE_ST_RDEV}は,将来サポートを中止するので避けてください.実際に
 7029: は新しいマクロでさえ時代遅れで,以下のもので置換すべきです.
 7030: @example
 7031: AC_CHECK_MEMBERS([struct stat.st_rdev])
 7032: @end example
 7033: @end defmac
 7034: 
 7035: @defmac AC_STRUCT_TM
 7036: @acindex STRUCT_TM
 7037: @cvindex TM_IN_SYS_TIME
 7038: @c If @file{time.h} does not define @code{struct tm}, define
 7039: @c @code{TM_IN_SYS_TIME}, which means that including @file{sys/time.h}
 7040: @c had better define @code{struct tm}.
 7041: @c 
 7042: @file{time.h}が@code{struct tm}を定義しない場合,@code{TM_IN_SYS_TIME}を
 7043: 定義し,それは,@file{sys/time.h}をインクルードすることで@code{struct
 7044: tm}を定義した方が良いことを意味します.
 7045: @end defmac
 7046: 
 7047: @defmac AC_STRUCT_TIMEZONE
 7048: @acindex STRUCT_TIMEZONE
 7049: @cvindex HAVE_TM_ZONE
 7050: @cvindex HAVE_TZNAME
 7051: @c Figure out how to get the current timezone.  If @code{struct tm} has a
 7052: @c @code{tm_zone} member, define @code{HAVE_STRUCT_TM_TM_ZONE} (and the
 7053: @c obsoleted @code{HAVE_TM_ZONE}).  Otherwise, if the external array
 7054: @c @code{tzname} is found, define @code{HAVE_TZNAME}.
 7055: @c 
 7056: 現在のタイムゾーンの取得法を判別します.@code{struct tm}に@code{tm_zone} 
 7057: メンバーが存在する場合,@code{HAVE_STRUCT_TM_TM_ZONE}(と時代遅れの
 7058: @code{HAVE_TM_ZONE})を定義します.それ以外では,外部配列の@code{tzname} 
 7059: が見つかる場合,@code{HAVE_TZNAME}を定義します.
 7060: @end defmac
 7061: 
 7062: @node Generic Structures
 7063: @c @subsection Generic Structure Checks
 7064: @subsection 一般的な構造体の調査
 7065: 
 7066: @c These macros are used to find structure members not covered by the
 7067: @c ``particular'' test macros.
 7068: @c 
 7069: これらのマクロは,``特定の''テストマクロでカバーされていない構造体のメン
 7070: バーを検索するために使用します.
 7071: 
 7072: @defmac AC_CHECK_MEMBER (@var{aggregate}.@var{member}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
 7073: @acindex CHECK_MEMBER
 7074: @c Check whether @var{member} is a member of the aggregate @var{aggregate}.
 7075: @c If no @var{includes} are specified, the default includes are used
 7076: @c (@pxref{Default Includes}).
 7077: @c 
 7078: @var{member}が集合体@var{aggregate}のメンバーかどうかを調査します.
 7079: @var{includes}が指定されていない場合,デフォルトのインクルードが使用され
 7080: ます(@pxref{Default Includes}).
 7081: 
 7082: @example
 7083: AC_CHECK_MEMBER(struct passwd.pw_gecos,,
 7084:                 [AC_MSG_ERROR([We need `passwd.pw_gecos'!])],
 7085:                 [#include <pwd.h>])
 7086: @end example
 7087: 
 7088: @c You can use this macro for sub-members:
 7089: @c 
 7090: このマクロはサブメンバーに対して使用可能です.
 7091: 
 7092: @example
 7093: AC_CHECK_MEMBER(struct top.middle.bot)
 7094: @end example
 7095: @end defmac
 7096: 
 7097: @defmac AC_CHECK_MEMBERS (@var{members}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
 7098: @acindex CHECK_MEMBERS
 7099: @c Check for the existence of each @samp{@var{aggregate}.@var{member}} of
 7100: @c @var{members} using the previous macro.  When @var{member} belongs to
 7101: @c @var{aggregate}, define @code{HAVE_@var{aggregate}_@var{member}} (in all
 7102: @c capitals, with spaces and dots replaced by underscores).
 7103: @c 
 7104: 直前のマクロで使用されている@var{members}のそれぞれの
 7105: @samp{@var{aggregate}.@var{member}}の存在を調査します.@var{member}が
 7106: @var{aggregate}に属しているとき,
 7107: @code{HAVE_@var{aggregate}_@var{member}} を(全て大文字で,スペースとドッ
 7108: トをアンダースコアで置換しながら)定義します.
 7109: 
 7110: @c This macro uses m4 lists:
 7111: @c 
 7112: このマクロはM4のリストを使用します.
 7113: @example
 7114: AC_CHECK_MEMBERS([struct stat.st_rdev, struct stat.st_blksize])
 7115: @end example
 7116: @end defmac
 7117: 
 7118: 
 7119: @node Types
 7120: @c @section Types
 7121: @section 型
 7122: 
 7123: @c The following macros check for C types, either builtin or typedefs.  If
 7124: @c there is no macro specifically defined to check for a type you need, and
 7125: @c you don't need to check for any special properties of it, then you can
 7126: @c use a general type-check macro.
 7127: @c 
 7128: 以下のマクロは,組み込みまたはtypedefになっている,Cの型を調査します.必
 7129: 要な型を調査するための特別に定義されたマクロがなく,その特別な特性を調査
 7130: する必要がない場合,一般的な型調査マクロを使用することが可能です.
 7131: 
 7132: @menu
 7133: * Particular Types::            Special handling to find certain types
 7134: * Generic Types::               How to find other types
 7135: @end menu
 7136: 
 7137: @node Particular Types
 7138: @c @subsection Particular Type Checks
 7139: @subsection 特定の型の調査
 7140: 
 7141: @c These macros check for particular C types in @file{sys/types.h},
 7142: @c @file{stdlib.h} and others, if they exist.
 7143: @c 
 7144: これらのマクロは,@file{sys/types.h},@file{stdlib.h},そして存在する場
 7145: 合はその他の,特定のCの型を調査します.
 7146: 
 7147: @defmac AC_TYPE_GETGROUPS
 7148: @acindex TYPE_GETGROUPS
 7149: @cvindex GETGROUPS_T
 7150: @c Define @code{GETGROUPS_T} to be whichever of @code{gid_t} or @code{int}
 7151: @c is the base type of the array argument to @code{getgroups}.
 7152: @c 
 7153: @code{gid_t}と@code{int}のどちらかを,@code{getgroups}への配列引数の基本
 7154: の型にするため,@code{GETGROUPS_T}を定義します.
 7155: @end defmac
 7156: 
 7157: @defmac AC_TYPE_MBSTATE_T
 7158: @acindex TYPE_MBSTATE_T
 7159: @cvindex mbstate_t
 7160: @c Define @code{HAVE_MBSTATE_T} if @code{<wchar.h>} declares the
 7161: @c @code{mbstate_t} type.  Also, define @code{mbstate_t} to be a type if
 7162: @c @code{<wchar.h>} does not declare it.
 7163: @c 
 7164: @code{<wchar.h>}で@code{mbstate_t}型が宣言されている場合,
 7165: @code{HAVE_MBSTATE_T}を定義します.また,@code{<wchar.h>}で宣言されてい
 7166: ない場合,型として@code{mbstate_t}を定義します.
 7167: @end defmac
 7168: 
 7169: @defmac AC_TYPE_MODE_T
 7170: @acindex TYPE_MODE_T
 7171: @cvindex mode_t
 7172: @c Equivalent to @samp{AC_CHECK_TYPE(mode_t, int)}.
 7173: @c 
 7174: @samp{AC_CHECK_TYPE(mode_t, int)}と同じです.
 7175: @end defmac
 7176: 
 7177: @defmac AC_TYPE_OFF_T
 7178: @acindex TYPE_OFF_T
 7179: @cvindex off_t
 7180: @c Equivalent to @samp{AC_CHECK_TYPE(off_t, long)}.
 7181: @c 
 7182: @samp{AC_CHECK_TYPE(off_t, long)}と同じです.
 7183: @end defmac
 7184: 
 7185: @defmac AC_TYPE_PID_T
 7186: @acindex TYPE_PID_T
 7187: @cvindex pid_t
 7188: @c Equivalent to @samp{AC_CHECK_TYPE(pid_t, int)}.
 7189: @c 
 7190: @samp{AC_CHECK_TYPE(pid_t, int)}と同じです.
 7191: @end defmac
 7192: 
 7193: @defmac AC_TYPE_SIGNAL
 7194: @acindex TYPE_SIGNAL
 7195: @cvindex RETSIGTYPE
 7196: @c If @file{signal.h} declares @code{signal} as returning a pointer to a
 7197: @c function returning @code{void}, define @code{RETSIGTYPE} to be
 7198: @c @code{void}; otherwise, define it to be @code{int}.
 7199: @c 
 7200: @file{signal.h}が,@code{signal}を@code{void}返す関数へのポインタを返す
 7201: ものと宣言されている場合,@code{RETSIGTYPE}を@code{void}と定義します.そ
 7202: れ以外では@code{int}と定義します.
 7203: 
 7204: @c Define signal handlers as returning type @code{RETSIGTYPE}:
 7205: @c 
 7206: シグナルハンドラが返す型を@code{RETSIGTYPE}と定義してください.
 7207: 
 7208: @example
 7209: @group
 7210: RETSIGTYPE
 7211: hup_handler ()
 7212: @{
 7213: @dots{}
 7214: @}
 7215: @end group
 7216: @end example
 7217: @end defmac
 7218: 
 7219: @defmac AC_TYPE_SIZE_T
 7220: @acindex TYPE_SIZE_T
 7221: @cvindex size_t
 7222: @c Equivalent to @samp{AC_CHECK_TYPE(size_t, unsigned)}.
 7223: @c 
 7224: @samp{AC_CHECK_TYPE(size_t, unsigned)}と同じです.
 7225: @end defmac
 7226: 
 7227: @defmac AC_TYPE_UID_T
 7228: @acindex TYPE_UID_T
 7229: @cvindex uid_t
 7230: @cvindex gid_t
 7231: @c If @code{uid_t} is not defined, define @code{uid_t} to be @code{int} and
 7232: @c @code{gid_t} to be @code{int}.
 7233: @c 
 7234: @code{uid_t}が定義されていない場合,@code{uid_t}を@code{int}に,そして
 7235: @code{gid_t}を@code{int}に定義します.
 7236: @end defmac
 7237: 
 7238: @node Generic Types
 7239: @c @subsection Generic Type Checks
 7240: @subsection 一般的な型の調査
 7241: 
 7242: @c These macros are used to check for types not covered by the ``particular''
 7243: @c test macros.
 7244: @c 
 7245: これらのマクロは,``特定の''テストマクロがカバーしない型を調査するために
 7246: 使用されます.
 7247: 
 7248: @defmac AC_CHECK_TYPE (@var{type}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
 7249: @acindex CHECK_TYPE
 7250: @c Check whether @var{type} is defined.  It may be a compiler builtin type
 7251: @c or defined by the @var{includes} (@pxref{Default Includes}).
 7252: @c 
 7253: @var{type}が定義されているかどうかを調査します.コンパイラ組み込みの型や,
 7254: @var{includes}(@pxref{Default Includes})で定義されている可能性があります.
 7255: @end defmac
 7256: 
 7257: 
 7258: @defmac AC_CHECK_TYPES (@var{types}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
 7259: @acindex CHECK_TYPES
 7260: @c For each @var{type} of the @var{types} that is defined, define
 7261: @c @code{HAVE_@var{type}} (in all capitals).  If no @var{includes} are
 7262: @c specified, the default includes are used (@pxref{Default Includes}).  If
 7263: @c @var{action-if-found} is given, it is additional shell code to execute
 7264: @c when one of the types is found.  If @var{action-if-not-found} is given,
 7265: @c it is executed when one of the types is not found.
 7266: @c 
 7267: 定義されている@var{types}のそれぞれの@var{type}に対し,
 7268: @code{HAVE_@var{type}}を(全て大文字で)定義します.@var{includes}が定義さ
 7269: れていない場合,デフォルトのインクルードが使用されます(@pxref{Default
 7270: Includes}).@var{action-if-found}が与えられている場合,型の一つが見つかっ
 7271: たときに実行する追加のシェルコードとなります.@var{action-if-not-found} 
 7272: が与えられている場合,型の一つでも見つからないときに実行されます.
 7273: 
 7274: @c This macro uses m4 lists:
 7275: @c 
 7276: このマクロはM4のリストを使用します.
 7277: @example
 7278: AC_CHECK_TYPES(ptrdiff_t)
 7279: AC_CHECK_TYPES([unsigned long long, uintmax_t])
 7280: @end example
 7281: 
 7282: @end defmac
 7283: 
 7284: @c Autoconf, up to 2.13, used to provide to another version of
 7285: @c @code{AC_CHECK_TYPE}, broken by design.  In order to keep backward
 7286: @c compatibility, a simple heuristics, quite safe but not totally, is
 7287: @c implemented.  In case of doubt, read the documentation of the former
 7288: @c @code{AC_CHECK_TYPE}, see @ref{Obsolete Macros}.
 7289: @c 
 7290: 2.13までのAutoconfは,設計に問題がある他のバージョンの
 7291: @code{AC_CHECK_TYPE}を提供するために使用されていました.単純な経験則とし
 7292: て,全体的ではないが全く安全なので,下位互換性のため,実装されました.疑
 7293: うのなら,以前の@code{AC_CHECK_TYPE}のドキュメントを読んでください.
 7294: @ref{Obsolete Macros}を参照してください.
 7295: 
 7296: 
 7297: @node Compilers and Preprocessors
 7298: @c @section Compilers and Preprocessors
 7299: @section コンパイラとプリプロセッサ
 7300: 
 7301: @ovindex EXEEXT
 7302: @c All the tests for compilers (@code{AC_PROG_CC}, @code{AC_PROG_CXX},
 7303: @c @code{AC_PROG_F77}) define the output variable @code{EXEEXT} based on
 7304: @c the output of the compiler, typically to the empty string if Unix and
 7305: @c @samp{.exe} if Win32 or OS/2.
 7306: @c 
 7307: コンパイラ(@code{AC_PROG_CC},@code{AC_PROG_CXX},@code{AC_PROG_F77})に
 7308: 対する全てのテストは,コンパイラの出力のベースとなる出力変数
 7309: @code{EXEEXT}を定義し,通常,Unixでは空の文字列でWin32やOS/2では
 7310: @samp{.exe}に定義されます.
 7311: 
 7312: @ovindex OBJEXT
 7313: @c They also define the output variable @code{OBJEXT} based on the
 7314: @c output of the compiler, after @file{.c} files have been excluded, typically
 7315: @c to @samp{o} if Unix, @samp{obj} if Win32.
 7316: @c 
 7317: それらは,@file{.c}ファイルが除外された後で,コンパイラ出力のベースとな
 7318: る出力変数@code{OBJEXT}も定義し,通常,Unixでは@samp{o}でWin32では
 7319: @samp{obj}に定義されますます.
 7320: 
 7321: @c If the compiler being used does not produce executables, the tests fail.  If
 7322: @c the executables can't be run, and cross-compilation is not enabled, they
 7323: @c fail too.  @xref{Manual Configuration}, for more on support for cross
 7324: @c compiling.
 7325: @c 
 7326: 使用しているコンパイラが実行形式を生成しない場合,テストは失敗します.実
 7327: 行形式が実行不可能な場合で,クロスコンパイルが利用できない場合も失敗しま
 7328: す.クロスコンパイルのサポートの詳細は,@xref{Manual Configuration}.
 7329: 
 7330: @menu
 7331: * Specific Compiler Characteristics::  Some portability issues
 7332: * Generic Compiler Characteristics::  Language independent tests
 7333: * C Compiler::                  Checking its characteristics
 7334: * C++ Compiler::                Likewise
 7335: * Fortran 77 Compiler::         Likewise
 7336: @end menu
 7337: 
 7338: @node Specific Compiler Characteristics
 7339: @c @subsection Specific Compiler Characteristics
 7340: @subsection 特定のコンパイラの特徴
 7341: 
 7342: @c Some compilers exhibit different behaviors.
 7343: @c 
 7344: コンパイラによっては異なる動作を示すものもあります.
 7345: 
 7346: @table @asis
 7347: @item Static/Dynamic Expressions
 7348: @c Autoconf relies on a trick to extract one bit of information from the C
 7349: @c compiler: using negative array sizes.  For instance the following
 7350: @c excerpt of a C source demonstrates how to test whether @samp{int}s are 4
 7351: @c bytes long:
 7352: @c 
 7353: Autoconfは,Cコンパイラからの情報の1ビットを抽出するトリックをあてにしま
 7354: す.負の配列の大きさを使用します.例えば,以下のCソースの引用で,
 7355: @samp{int}が4バイト長かどうかをテストする方法を説明します.
 7356: 
 7357: @example
 7358: int
 7359: main (void)
 7360: @{
 7361:   static int test_array [sizeof (int) == 4 ? 1 : -1];
 7362:   test_array [0] = 0
 7363:   return 0;
 7364: @}
 7365: @end example
 7366: 
 7367: @noindent
 7368: @c To our knowledge, there is a single compiler that does not support this
 7369: @c trick: the HP C compilers (the real one, not only the ``bundled'') on
 7370: @c HP-UX 11.00:
 7371: @c 
 7372: 知っている限りでは,このトリックをサポートしないコンパイラは1つです.そ
 7373: れはHP-UX 11.00のHPのCコンパイラです(``バンドル''されているものだけでは
 7374: なく,実際のものもそうです).
 7375: 
 7376: @example
 7377: $ @kbd{cc -c -Ae +O2 +Onolimit conftest.c}
 7378: cc: "conftest.c": error 1879: Variable-length arrays cannot \
 7379:     have static storage.
 7380: @end example
 7381: 
 7382: @c Autoconf works around this problem by casting @code{sizeof (int)} to
 7383: @c @code{long} before comparing it.
 7384: @c 
 7385: Autoconfは,比較する前に@code{sizeof (int)}を@code{long}にキャストするこ
 7386: とで,この問題を解決します.
 7387: @end table
 7388: 
 7389: @node Generic Compiler Characteristics
 7390: @c @subsection Generic Compiler Characteristics
 7391: @subsection 一般的なコンパイラの特徴
 7392: 
 7393: @defmac AC_CHECK_SIZEOF (@var{type}, @ovar{unused}, @dvar{includes, default-includes})
 7394: @acindex CHECK_SIZEOF
 7395: @c Define @code{SIZEOF_@var{type}} (@pxref{Standard Symbols}) to be the
 7396: @c size in bytes of @var{type}.  If @samp{type} is unknown, it gets a size
 7397: @c of 0.  If no @var{includes} are specified, the default includes are used
 7398: @c (@pxref{Default Includes}).  If you provide @var{include}, be sure to
 7399: @c include @file{stdio.h} which is required for this macro to run.
 7400: @c 
 7401: @code{SIZEOF_@var{type}}(@pxref{Standard Symbols})を@var{type}のバイトサ
 7402: イズに定義します.@samp{type}が分からない場合,そのサイズは0になります.
 7403: @var{includes}が指定されていない場合,デフォルトのインクルードが使用され
 7404: ます(@pxref{Default Includes}).@var{include}を与える場合,このマクロを
 7405: 実行するために必要な@file{stdio.h}を必ずインクルードしてください.
 7406: 
 7407: @c This macro now works even when cross-compiling.  The @var{unused}
 7408: @c argument was used when cross-compiling.
 7409: @c 
 7410: このマクロは,現在クロスコンパイル時にも動作します.@var{unused}引数は,
 7411: クロスコンパイル時に使用します.
 7412: 
 7413: @c For example, the call
 7414: @c 
 7415: 例えば,以下のように呼び出します.
 7416: 
 7417: @example
 7418: AC_CHECK_SIZEOF(int *)
 7419: @end example
 7420: 
 7421: @noindent
 7422: @c defines @code{SIZEOF_INT_P} to be 8 on DEC Alpha AXP systems.
 7423: @c 
 7424: これは,DEC Alpha AXPシステムでは@code{SIZEOF_INT_P}を8に定義します.
 7425: @end defmac
 7426: 
 7427: 
 7428: @node C Compiler
 7429: @c @subsection C Compiler Characteristics
 7430: @subsection Cコンパイラの特徴
 7431: 
 7432: @defmac AC_PROG_CC (@ovar{compiler-search-list})
 7433: @acindex PROG_CC
 7434: @ovindex CC
 7435: @ovindex CFLAGS
 7436: @c Determine a C compiler to use.  If @code{CC} is not already set in the
 7437: @c environment, check for @code{gcc} and @code{cc}, then for other C
 7438: @c compilers.  Set output variable @code{CC} to the name of the compiler
 7439: @c found.
 7440: @c 
 7441: 使用するCコンパイラを決定します.@code{CC}が環境変数で設定されていない場
 7442: 合,@code{gcc}と@code{cc}を調査し,その後で他のCコンパイラを調査します.
 7443: 出力変数@code{CC}を,見つかったコンパイラの名前に設定します.
 7444: 
 7445: @c This macro may, however, be invoked with an optional first argument
 7446: @c which, if specified, must be a space separated list of C compilers to
 7447: @c search for.  This just gives the user an opportunity to specify an
 7448: @c alternative search list for the C compiler.  For example, if you didn't
 7449: @c like the default order, then you could invoke @code{AC_PROG_CC} like
 7450: @c this:
 7451: @c 
 7452: しかし,このマクロはオプションで最初の引数を用いて呼び出すことも可能で,
 7453: それが指定されている場合,それをスペースで区切られている検索するCコンパ
 7454: イラのリストにする必要があります.これは,別のCコンパイラの検索リストを
 7455: 指定する機会をユーザに与えます.例えば,デフォルトの順序が好きではない場
 7456: 合,以下のような@code{AC_PROG_CC}を呼び出すことが可能です.
 7457: 
 7458: @example
 7459: AC_PROG_CC(cl egcs gcc cc)
 7460: @end example
 7461: 
 7462: @c If the C compiler is not in @sc{ansi} C mode by default, try to add an
 7463: @c option to output variable @code{CC} to make it so.  This macro tries
 7464: @c various options that select @sc{ansi} C on some system or another.  It
 7465: @c considers the compiler to be in @sc{ansi} C mode if it handles function
 7466: @c prototypes correctly.
 7467: @c 
 7468: Cコンパイラがデフォルトで@sc{ansi} Cモードでない場合,そうするためのオプ
 7469: ションを出力変数@code{CC}に追加します.このマクロは,様々なシステムで
 7470: @sc{ansi} Cを選択するように,様々なオプションを試します.関数のプロトタ
 7471: イプを正しく処理する場合,コンパイラが@sc{ansi} Cモードだと考えます.
 7472: 
 7473: @c After calling this macro you can check whether the C compiler has been
 7474: @c set to accept @sc{ansi} C; if not, the shell variable
 7475: @c @code{ac_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
 7476: @c code in @sc{ansi} C, you can make an un-@sc{ansi}fied copy of it by
 7477: @c using the program @code{ansi2knr}, which comes with Automake.  See also
 7478: @c under @code{AC_C_PROTOTYPES} below.
 7479: @c 
 7480: このマクロを呼び出した後,Cコンパイラが@sc{ansi} Cを受け入れるように設定
 7481: されているかどうかを調査することが可能です.そうでない場合,シェル変数
 7482: @code{ac_cv_prog_cc_stdc}は@samp{no}に設定されます.ソースコードを
 7483: @sc{ansi} Cで書いている場合,Automake附属のプログラム@code{ansi2knr}を使
 7484: 用して,非@sc{ansi}fiedされたコピーを作成することが可能です.
 7485: @code{AC_C_PROTOTYPES}以下も参照してください.
 7486: 
 7487: @c If using the @sc{gnu} C compiler, set shell variable @code{GCC} to
 7488: @c @samp{yes}.  If output variable @code{CFLAGS} was not already set, set
 7489: @c it to @option{-g -O2} for the @sc{gnu} C compiler (@option{-O2} on systems
 7490: @c where GCC does not accept @option{-g}), or @option{-g} for other compilers.
 7491: @c 
 7492: @sc{gnu} Cコンパイラを使用する場合,シェル変数の@code{GCC}を@samp{yes}に
 7493: 設定します.出力変数@code{CFLAGS}がいまだ設定されていない場合,@sc{gnu}
 7494: Cコンパイラに対しては@option{-g -O2}に設定し(GCCが @samp{-g}を受け入れな
 7495: いシステムは@samp{-O2}),それ以外のコンパイラに対しては@option{-g}に設定
 7496: します.
 7497: @end defmac
 7498: 
 7499: @defmac AC_PROG_CC_C_O
 7500: @acindex PROG_CC_C_O
 7501: @cvindex NO_MINUS_C_MINUS_O
 7502: @c If the C compiler does not accept the @option{-c} and @option{-o} options
 7503: @c simultaneously, define @code{NO_MINUS_C_MINUS_O}.  This macro actually
 7504: @c tests both the compiler found by @code{AC_PROG_CC}, and, if different,
 7505: @c the first @code{cc} in the path.  The test fails if one fails.  This
 7506: @c macro was created for @sc{gnu} Make to choose the default C compilation
 7507: @c rule.
 7508: @c 
 7509: Cコンパイラが@samp{-c}と@samp{-o}オプションを同時に受け入れない場合,
 7510: @code{NO_MINUS_C_MINUS_O}を定義します.このマクロは,@code{AC_PROG_CC}で
 7511: 見つかったコンパイラと,パスの最初の@code{cc}がそれと異なっている場合は
 7512: その両方を,実際にテストします.
 7513: @end defmac
 7514: 
 7515: 
 7516: @defmac AC_PROG_CPP
 7517: @acindex PROG_CPP
 7518: @ovindex CPP
 7519: @c Set output variable @code{CPP} to a command that runs the
 7520: @c C preprocessor.  If @samp{$CC -E} doesn't work, @file{/lib/cpp} is used.
 7521: @c It is only portable to run @code{CPP} on files with a @file{.c}
 7522: @c extension.
 7523: @c 
 7524: 出力変数@code{CPP}を,Cプリプロセッサを実行するコマンドに設定ます.
 7525: @samp{$CC -E}が動作しない場合,@file{/lib/cpp}を使用します.拡張子が
 7526: @file{.c}のファイルで@code{CPP}を実行することは移植性のためだけです.
 7527: 
 7528: @c If the current language is C (@pxref{Language Choice}), many of the
 7529: @c specific test macros use the value of @code{CPP} indirectly by calling
 7530: @c @code{AC_TRY_CPP}, @code{AC_CHECK_HEADER}, @code{AC_EGREP_HEADER}, or
 7531: @c @code{AC_EGREP_CPP}.
 7532: @c 
 7533: 現在の言語がCの場合(@pxref{Language Choice}),特定のテストマクロには,
 7534: @code{AC_TRY_CPP},@code{AC_CHECK_HEADER},@code{AC_EGREP_HEADER},また
 7535: は,@code{AC_EGREP_CPP}の呼び出しで,間接的に@code{CPP}の値を使用するも
 7536: のもたくさんあります.
 7537: 
 7538: @c Some preprocessors don't indicate missing include files by the error
 7539: @c status.  For such preprocessors an internal variable is set that causes
 7540: @c other macros to check the standard error from the preprocessor and
 7541: @c consider the test failed if any warnings have been reported.
 7542: @c 
 7543: プロセッサによっては,足りないインクルードファイルをエラーステータスで示
 7544: さないものもあります.そのようなプロセッサに対する内部変数は,プリプロセッ
 7545: サからの標準エラーを調査するための他のマクロを設定し,警告が報告された場
 7546: 合はテストに失敗したと判断します.
 7547: @end defmac
 7548: 
 7549: 
 7550: @c The following macros check for C compiler or machine architecture
 7551: @c features.  To check for characteristics not listed here, use
 7552: @c @code{AC_TRY_COMPILE} (@pxref{Examining Syntax}) or @code{AC_TRY_RUN}
 7553: @c (@pxref{Run Time})
 7554: @c 
 7555: 以下のマクロは,Cコンパイラやマシンアーキテクチャの特徴を調査します.こ
 7556: こでリストアップされない特徴を調査するために,@code{AC_TRY_COMPILE}
 7557: (@pxref{Examining Syntax})や@code{AC_TRY_RUN}(@pxref{Run Time})を使用し
 7558: てください.
 7559: 
 7560: @defmac AC_C_BACKSLASH_A
 7561: @acindex HAVE_C_BACKSLASH_A
 7562: @c Define @samp{HAVE_C_BACKSLASH_A} to 1 if the C compiler understands
 7563: @c @samp{\a}.
 7564: @c 
 7565: Cコンパイラが@samp{\a}を理解する場合,@samp{HAVE_C_BACKSLASH_A}を1に定義
 7566: します.
 7567: @end defmac
 7568: 
 7569: @defmac AC_C_BIGENDIAN (@ovar{action-if-true}, @ovar{action-if-false}, @ovar{action-if-unknown})
 7570: @acindex C_BIGENDIAN
 7571: @cvindex WORDS_BIGENDIAN
 7572: @cindex Endianness
 7573: @c If words are stored with the most significant byte first (like Motorola
 7574: @c and SPARC CPUs), execute @var{action-if-true}.  If words are stored with
 7575: @c the least significant byte first (like Intel and VAX CPUs), execute
 7576: @c @var{action-if-false}.
 7577: @c 
 7578: (MotorolaとSPARCのCPUのように)wordが最上位バイトに最初に保存される場合,
 7579: @var{action-if-true}を実行します.(IntelとVAXのCPUのように)wordが最下位
 7580: バイトに最初に保存される場合,@var{action-if-false}を実行します.
 7581: 
 7582: @c This macro runs a test-case if endianness cannot be determined from the
 7583: @c system header files.  When cross-compiling, the test-case is not run but
 7584: @c grep'ed for some magic values.  @var{action-if-unknown} is executed if
 7585: @c the latter case fails to determine the byte sex of the host system.
 7586: @c 
 7587: システムヘッダファイルからエンディアンを決定不可能な場合,このマクロはテ
 7588: ストケースを実行します.クロスコンパイル時に,テストケースは実行されませ
 7589: んが,いくつかのマジック変数を検索します.後者の状況でホストシステムのバ
 7590: イト特性の決定に失敗した場合,@var{action-if-unknown}が実行されます.
 7591: 
 7592: @c The default for @var{action-if-true} is to define
 7593: @c @samp{WORDS_BIGENDIAN}.  The default for @var{action-if-false} is to do
 7594: @c nothing.  And finally, the default for @var{action-if-unknown} is to
 7595: @c abort configure and tell the installer which variable he should preset
 7596: @c to bypass this test.
 7597: @c 
 7598: @var{action-if-true}のデフォルトは@samp{WORDS_BIGENDIAN}を定義することで
 7599: す.@var{action-if-false}のデフォルトは何もしないことです.そして最後に,
 7600: @var{action-if-unknown}のデフォルトは,コンフィグレーションを中断し,イ
 7601: ンストールしている人に,このテストをバイパスさせるために変数を前もって定
 7602: 義するよう伝えます.
 7603: @end defmac
 7604: 
 7605: @defmac AC_C_CONST
 7606: @acindex C_CONST
 7607: @cvindex const
 7608: @c If the C compiler does not fully support the @sc{ansi} C qualifier
 7609: @c @code{const}, define @code{const} to be empty.  Some C compilers that do
 7610: @c not define @code{__STDC__} do support @code{const}; some compilers that
 7611: @c define @code{__STDC__} do not completely support @code{const}.  Programs
 7612: @c can simply use @code{const} as if every C compiler supported it; for
 7613: @c those that don't, the @file{Makefile} or configuration header file will
 7614: @c define it as empty.
 7615: @c 
 7616: Cコンパイラが@sc{ansi} Cの修飾子@code{const}を完全にサポートしない場合, 
 7617: @code{const}を空で定義します.@code{__STDC__}を定義しないCコンパイラには,
 7618: @code{const}をサポートするものもあります.@code{__STDC__}を定義するCコン
 7619: パイラには,@code{const}を完全にサポートしないものもあります.全てのCコ
 7620: ンパイラが@code{const}をサポートするかのように,プログラムはそれを使用す
 7621: ることができます.サポートしないもののために@file{Makefile}やコンフィグ
 7622: レーションヘッダファイルは,それを空で定義します.
 7623: 
 7624: @c Occasionally installers use a C++ compiler to compile C code, typically
 7625: @c because they lack a C compiler.  This causes problems with @code{const},
 7626: @c because C and C++ treat @code{const} differently.  For example:
 7627: @c 
 7628: Cコンパイラが無いために,インストールしている人がCコードをコンパイルする
 7629: ためにC++コンパイラを使用することもあります.CとC++は@code{const}を異な
 7630: る方法で処理するので,これは@code{const}の問題が生じます.例えば,以下の
 7631: ようにします.
 7632: 
 7633: @example
 7634: const int foo;
 7635: @end example
 7636: 
 7637: @noindent
 7638: @c is valid in C but not in C++.  These differences unfortunately cannot be
 7639: @c papered over by defining @code{const} to be empty.
 7640: @c 
 7641: Cでは有効ですがC++ではそうではありません.残念ながら,これらの違いを
 7642: @code{const}を空で定義することで誤魔化すことは不可能です.
 7643: 
 7644: @c If @command{autoconf} detects this situation, it leaves @code{const} alone,
 7645: @c as this generally yields better results in practice.  However, using a
 7646: @c C++ compiler to compile C code is not recommended or supported, and
 7647: @c installers who run into trouble in this area should get a C compiler
 7648: @c like GCC to compile their C code.
 7649: @c 
 7650: @command{autoconf}がこの状況を検出した場合,一般的に実際問題としてより良
 7651: い結果になるので,それは@code{const}のままにしておきます.しかし,Cコー
 7652: ドコンパイルするためにC++コンパイラを使用することは推奨されていませんし,
 7653: サポートもしていません.そして,この状況で問題が生じたインストール者は,
 7654: CコードをコンパイルするためにGCCのようなCコンパイラを入手すべきです.
 7655: @end defmac
 7656: 
 7657: @defmac AC_C_VOLATILE
 7658: @acindex C_VOLATILE
 7659: @cvindex volatile
 7660: @c If the C compiler does not understand the keyword @code{volatile},
 7661: @c define @code{volatile} to be empty.  Programs can simply use
 7662: @c @code{volatile} as if every C compiler supported it; for those that do
 7663: @c not, the @file{Makefile} or configuration header will define it as
 7664: @c empty.
 7665: @c 
 7666: Cコンパイラがキーワード@code{volatile}を理解しない場合,@code{volatile} 
 7667: を空で定義します.プログラムでは@code{volatile}をサポートしているコンパ
 7668: イラのように単純に使用することが可能です.サポートしないものに対しては,
 7669: @file{Makefile}やコンフィグレーションヘッダで,それを空として定義されま
 7670: す.
 7671: 
 7672: @c If the correctness of your program depends on the semantics of
 7673: @c @code{volatile}, simply defining it to be empty does, in a sense, break
 7674: @c your code.  However, given that the compiler does not support
 7675: @c @code{volatile}, you are at its mercy anyway.  At least your
 7676: @c program will compile, when it wouldn't before.
 7677: @c 
 7678: プログラムの正当性が@code{volatile}の意味に依存している場合,単純に空で
 7679: 定義するとある意味ではコードが壊れます.しかし,@code{volatile}をサポー
 7680: トしていないコンパイラでは,自分で何とかしてください.少なくともプログラ
 7681: ムはコンパイルされますが,多分駄目でしょう.
 7682: 
 7683: @c In general, the @code{volatile} keyword is a feature of @sc{ansi} C, so
 7684: @c you might expect that @code{volatile} is available only when
 7685: @c @code{__STDC__} is defined.  However, Ultrix 4.3's native compiler does
 7686: @c support volatile, but does not defined @code{__STDC__}.
 7687: @c 
 7688: 一般的に,@code{volatile}キーワードは@sc{ansi} Cの機能なので,
 7689: @code{__STDC__}が定義されているときだけ,@code{volatile}が利用可能だと期
 7690: 待するかもしれません.しかし,Ultrix 4.3のネイティブコンパイラは
 7691: @code{volatile}をサポートとしていますが,@code{__STDC__}を定義しません.
 7692: @end defmac
 7693: 
 7694: @defmac AC_C_INLINE
 7695: @acindex C_INLINE
 7696: @cvindex inline
 7697: @c If the C compiler supports the keyword @code{inline}, do nothing.
 7698: @c Otherwise define @code{inline} to @code{__inline__} or @code{__inline}
 7699: @c if it accepts one of those, otherwise define @code{inline} to be empty.
 7700: @c 
 7701: Cコンパイラがキーワード@code{inline}をサポートする場合,何もしません.そ
 7702: れ以外では,受け入れられるものによって,@code{inline}を@code{__inline__} 
 7703: や@code{__inline}に定義し,それ以外では@code{inline}を空で定義します.
 7704: @end defmac
 7705: 
 7706: @defmac AC_C_CHAR_UNSIGNED
 7707: @acindex C_CHAR_UNSIGNED
 7708: @cvindex __CHAR_UNSIGNED__
 7709: @c If the C type @code{char} is unsigned, define @code{__CHAR_UNSIGNED__},
 7710: @c unless the C compiler predefines it.
 7711: @c 
 7712: Cの型@code{char}がunsignedの場合,Cコンパイラが前もって定義していない限
 7713: り,@code{__CHAR_UNSIGNED__}を定義します.
 7714: @end defmac
 7715: 
 7716: @defmac AC_C_LONG_DOUBLE
 7717: @acindex C_LONG_DOUBLE
 7718: @cvindex HAVE_LONG_DOUBLE
 7719: @c If the C compiler supports a working @code{long double} type with more
 7720: @c range or precision than the @code{double} type, define
 7721: @c @code{HAVE_LONG_DOUBLE}.
 7722: @c 
 7723: Cコンパイラが,@code{double}の型以上の範囲で動作する@code{long double}の
 7724: 型をサポートしている場合,@code{HAVE_LONG_DOUBLE}を定義します.
 7725: @end defmac
 7726: 
 7727: @defmac AC_C_STRINGIZE
 7728: @acindex C_STRINGIZE
 7729: @cvindex HAVE_STRINGIZE
 7730: @c If the C preprocessor supports the stringizing operator, define
 7731: @c @code{HAVE_STRINGIZE}.  The stringizing operator is @samp{#} and is
 7732: @c found in macros such as this:
 7733: @c 
 7734: Cプリプロセッサがstringizingオペレータをサポートする場合,
 7735: @code{HAVE_STRINGIZE}を定義します.stringizingオペレータは@samp{#}と,以
 7736: 下のようなマクロで見つかります.
 7737: 
 7738: @example
 7739: #define x(y) #y
 7740: @end example
 7741: @end defmac
 7742: 
 7743: @defmac AC_C_PROTOTYPES
 7744: @acindex C_PROTOTYPES
 7745: @cvindex PROTOTYPES
 7746: @cvindex __PROTOTYPES
 7747: @cvindex PARAMS
 7748: @c If function prototypes are understood by the compiler (as determined by
 7749: @c @code{AC_PROG_CC}), define @code{PROTOTYPES} and @code{__PROTOTYPES}.
 7750: @c In the case the compiler does not handle
 7751: @c prototypes, you should use @code{ansi2knr}, which comes with the
 7752: @c Automake distribution, to unprotoize function definitions.  For
 7753: @c function prototypes, you should first define @code{PARAMS}:
 7754: @c 
 7755: 関数のプロトタイプをコンパイラが理解する場合(@code{AC_PROG_CC}で決定され
 7756: ます),@samp{PROTOTYPES}と@code{__PROTOTYPES}を定義します.コンパイラが
 7757: プロトタイプを処理しない場合,関数定義のプロトタイプを止めるために,
 7758: Automake配布物でインストールされる@code{ansi2knr}を使用すべきです.関数
 7759: のプロトタイプに対して,最初に@code{PARAMS}を定義すべきです.
 7760: 
 7761: @example
 7762: #ifndef PARAMS
 7763: # if PROTOTYPES
 7764: #  define PARAMS(protos) protos
 7765: # else /* no PROTOTYPES */
 7766: #  define PARAMS(protos) ()
 7767: # endif /* no PROTOTYPES */
 7768: #endif
 7769: @end example
 7770: 
 7771: @noindent
 7772: @c then use it this way:
 7773: @c 
 7774: そして,以下のように使用してください.
 7775: 
 7776: @example
 7777: size_t my_strlen PARAMS ((const char *));
 7778: @end example
 7779: @end defmac
 7780: 
 7781: @c This macro also defines @code{__PROTOTYPES}; this is for the benefit of
 7782: @c header files that cannot use macros that infringe on user name space.
 7783: @c 
 7784: このマクロは,@code{__PROTOTYPES}も定義します.これは,ユーザの名前空間
 7785: を侵害するマクロが使用不可能なヘッダファイルの利便性ためです.
 7786: 
 7787: @defmac AC_PROG_GCC_TRADITIONAL
 7788: @acindex PROG_GCC_TRADITIONAL
 7789: @ovindex CC
 7790: @c Add @option{-traditional} to output variable @code{CC} if using the
 7791: @c @sc{gnu} C compiler and @code{ioctl} does not work properly without
 7792: @c @option{-traditional}.  That usually happens when the fixed header files
 7793: @c have not been installed on an old system.  Since recent versions of the
 7794: @c @sc{gnu} C compiler fix the header files automatically when installed,
 7795: @c this is becoming a less prevalent problem.
 7796: @c 
 7797: 使用している@sc{gnu} Cコンパイラと@code{ioctl}が,@samp{-traditional}無
 7798: しでは正確に動作しない場合,出力変数@code{CC}に@samp{-traditional}を加え
 7799: ます.それは通常,修正されたヘッダファイルが古いシステムにインストールさ
 7800: れていないときに発生します.@sc{gnu} Cコンパイラの最近のバージョンは,イ
 7801: ンストール時に,自動的にヘッダファイルを修正するので,これはほとんど問題
 7802: になりません.
 7803: @end defmac
 7804: 
 7805: 
 7806: @node C++ Compiler
 7807: @c @subsection C++ Compiler Characteristics
 7808: @subsection C++コンパイラの特徴
 7809: 
 7810: 
 7811: @defmac AC_PROG_CXX (@ovar{compiler-search-list})
 7812: @acindex PROG_CXX
 7813: @ovindex CXX
 7814: @ovindex CXXFLAGS
 7815: @c Determine a C++ compiler to use.  Check if the environment variable
 7816: @c @code{CXX} or @code{CCC} (in that order) is set; if so, then set output
 7817: @c variable @code{CXX} to its value.
 7818: @c 
 7819: 使用するC++コンパイラを定義します.環境変数@code{CXX}や@code{CCC}が設定
 7820: されているかどうか(この順番で)調査します.その場合,出力変数をその値に設
 7821: 定します.
 7822: 
 7823: @c Otherwise, if the macro is invoked without an argument, then search for
 7824: @c a C++ compiler under the likely names (first @code{g++} and @code{c++}
 7825: @c then other names).  If none of those checks succeed, then as a last
 7826: @c resort set @code{CXX} to @code{g++}.
 7827: @c 
 7828: それ以外でマクロが引数無しで呼び出されている場合,以下のような名前のC++ 
 7829: コンパイラを探します(最初が@code{g++}と@code{c++}その後でそれ以外の名前
 7830: です).これらの調査がすべて失敗した場合,最後の手段で@code{CXX}を
 7831: @code{g++}に設定します.
 7832: 
 7833: @c This macro may, however, be invoked with an optional first argument
 7834: @c which, if specified, must be a space separated list of C++ compilers to
 7835: @c search for.  This just gives the user an opportunity to specify an
 7836: @c alternative search list for the C++ compiler.  For example, if you
 7837: @c didn't like the default order, then you could invoke @code{AC_PROG_CXX}
 7838: @c like this:
 7839: @c 
 7840: しかし,このマクロはオプション引数を用いて呼び出すことが可能で,指定する
 7841: 場合は,検索するC++コンパイラをスペースで区切ったリストにする必要があり
 7842: ます.これで,ユーザがC++コンパイラに対する代わりの検索リストを指定する
 7843: 機会が与えられます.例えば,デフォルトの順序がいやな場合は,以下のように
 7844: して@code{AC_PROG_CXX}を呼び出すことが可能です.
 7845: 
 7846: @example
 7847: AC_PROG_CXX(cl KCC CC cxx cc++ xlC aCC c++ g++ egcs gcc)
 7848: @end example
 7849: 
 7850: @c If using the @sc{gnu} C++ compiler, set shell variable @code{GXX} to
 7851: @c @samp{yes}.  If output variable @code{CXXFLAGS} was not already set, set
 7852: @c it to @option{-g -O2} for the @sc{gnu} C++ compiler (@option{-O2} on
 7853: @c systems where G++ does not accept @option{-g}), or @option{-g} for other
 7854: @c compilers.
 7855: @c 
 7856: @sc{gnu} C++コンパイラを使用している場合,シェル変数@code{GXX}を
 7857: @samp{yes}に設定します.出力変数@code{CXXFLAGS}がまだ設定されていない場
 7858: 合,@sc{gnu}C++コンパイラに対しては@option{-g -O2}(@samp{-g}を受け入れな
 7859: いG++のシステムでは@samp{-O2})を設定し,他のコンパイラでは@samp{-g}を設
 7860: 定します.
 7861: @end defmac
 7862: 
 7863: @defmac AC_PROG_CXXCPP
 7864: @acindex PROG_CXXCPP
 7865: @ovindex CXXCPP
 7866: @c Set output variable @code{CXXCPP} to a command that runs the C++
 7867: @c preprocessor.  If @samp{$CXX -E} doesn't work, @file{/lib/cpp} is used.
 7868: @c It is only portable to run @code{CXXCPP} on files with a @file{.c},
 7869: @c @file{.C}, or @file{.cc} extension.
 7870: @c 
 7871: 出力変数@code{CXXCPP}を,C++プリプロセッサを実行するコマンドに設定します.
 7872: @samp{$CXX -E}が動作しない場合,@file{/lib/cpp}を使用します.@file{.c},
 7873: @file{.C},または@file{.cc}の拡張子を持つファイルで@code{CXXCPP}を実行す
 7874: るのは移植性のためだけです.
 7875: 
 7876: @c If the current language is C++ (@pxref{Language Choice}), many of the
 7877: @c specific test macros use the value of @code{CXXCPP} indirectly by
 7878: @c calling @code{AC_TRY_CPP}, @code{AC_CHECK_HEADER},
 7879: @c @code{AC_EGREP_HEADER}, or @code{AC_EGREP_CPP}.
 7880: @c 
 7881: 現在の言語がC++の場合(@pxref{Language Choice}),特定のテストマクロの多く
 7882: は,@code{AC_TRY_CPP},@code{AC_CHECK_HEADER},@code{AC_EGREP_HEADER},
 7883: または@code{AC_EGREP_CPP}の呼び出しで,間接的に@code{CXXCPP}の値を使用し
 7884: ます.
 7885: 
 7886: @c Some preprocessors don't indicate missing include files by the error
 7887: @c status.  For such preprocessors an internal variable is set that causes
 7888: @c other macros to check the standard error from the preprocessor and
 7889: @c consider the test failed if any warnings have been reported.  However,
 7890: @c it is not known whether such broken preprocessors exist for C++.
 7891: @c 
 7892: プリプロセッサによっては,足りないインクルードファイルをエラーステータス
 7893: で示さないものもあります.そのようなプリプロセッサに対して,内部変数は,
 7894: プリプロセッサからの標準エラー出力を調査する他のマクロに設定され,警告が
 7895: 報告されない場合はテストに失敗したと考えます.しかし,C++に対してそのよ
 7896: うな壊れ方をしているプリプロセッサがあるかどうかは知りません.
 7897: @end defmac
 7898: 
 7899: 
 7900: 
 7901: @node Fortran 77 Compiler
 7902: @c @subsection Fortran 77 Compiler Characteristics
 7903: @subsection Fortran 77コンパイラの特徴
 7904: 
 7905: @defmac AC_PROG_F77 (@ovar{compiler-search-list})
 7906: @acindex PROG_FORTRAN
 7907: @ovindex F77
 7908: @ovindex FFLAGS
 7909: @c Determine a Fortran 77 compiler to use.  If @code{F77} is not already
 7910: @c set in the environment, then check for @code{g77} and @code{f77}, and
 7911: @c then some other names.  Set the output variable @code{F77} to the name
 7912: @c of the compiler found.
 7913: @c 
 7914: 使用するFortran 77コンパイラを決定します.@code{F77}が環境変数でまだ設定
 7915: されていない場合,@code{g77},@code{f77},そしてその他の名前を調査します.
 7916: 見つかったコンパイラ名を,出力変数@code{F77}に設定します.
 7917: 
 7918: @c This macro may, however, be invoked with an optional first argument
 7919: @c which, if specified, must be a space separated list of Fortran 77
 7920: @c compilers to search for.  This just gives the user an opportunity to
 7921: @c specify an alternative search list for the Fortran 77 compiler.  For
 7922: @c example, if you didn't like the default order, then you could invoke
 7923: @c @code{AC_PROG_F77} like this:
 7924: @c 
 7925: しかし,このマクロはオプション引数を用いて呼び出すことが可能で,指定する
 7926: 場合は,検索するFortran 77コンパイラをスペースで区切ったリストにする必要
 7927: があります.これで,ユーザがFortran 77コンパイラに対する代わりの検索リス
 7928: トを指定する機会が与えられます.例えば,デフォルトの順序がいやな場合は,
 7929: 以下のようにして@code{AC_PROG_F77}を呼び出すことが可能です.
 7930: 
 7931: @example
 7932: AC_PROG_F77(fl32 f77 fort77 xlf g77 f90 xlf90)
 7933: @end example
 7934: 
 7935: @c If using @code{g77} (the @sc{gnu} Fortran 77 compiler), then
 7936: @c @code{AC_PROG_F77} will set the shell variable @code{G77} to @samp{yes}.
 7937: @c If the output variable @code{FFLAGS} was not already set in the
 7938: @c environment, then set it to @option{-g -02} for @code{g77} (or @option{-O2}
 7939: @c where @code{g77} does not accept @option{-g}).  Otherwise, set
 7940: @c @code{FFLAGS} to @option{-g} for all other Fortran 77 compilers.
 7941: @c 
 7942: @code{g77}(@sc{gnu} Fortran 77コンパイラ)を使用している場合,
 7943: @code{AC_PROG_F77}はシェル変数@code{G77}を@samp{yes}に設定します.出力変
 7944: 数@code{FFLAGS}が環境変数で設定されていない場合,@code{g77}に対して
 7945: @samp{-g -O2}(@samp{-g}を受け入れない@code{g77} では@samp{-O2})を設定し,
 7946: 他のFortran 77コンパイラでは@samp{-g}を設定します.
 7947: @end defmac
 7948: 
 7949: @defmac AC_PROG_F77_C_O
 7950: @acindex PROG_F77_C_O
 7951: @cvindex F77_NO_MINUS_C_MINUS_O
 7952: @c Test if the Fortran 77 compiler accepts the options @option{-c} and
 7953: @c @option{-o} simultaneously, and define @code{F77_NO_MINUS_C_MINUS_O} if it
 7954: @c does not.
 7955: @c 
 7956: Fortran 77コンパイラが,オプション@samp{-c}と@samp{-o}を同時にを受け入れ
 7957: るかどうかテストし,そうでない場合は@code{F77_NO_MINUS_C_MINUS_O}を定義
 7958: します.
 7959: @end defmac
 7960: 
 7961: 
 7962: @c The following macros check for Fortran 77 compiler characteristics.  To
 7963: @c check for characteristics not listed here, use @code{AC_TRY_COMPILE}
 7964: @c (@pxref{Examining Syntax}) or @code{AC_TRY_RUN} (@pxref{Run Time}),
 7965: @c making sure to first set the current language to Fortran 77
 7966: @c @code{AC_LANG(Fortran 77)} (@pxref{Language Choice}).
 7967: @c 
 7968: 以下のマクロは,Fortran 77コンパイラの特徴を調査します.ここでリストアッ
 7969: プされていない特徴を調査するために,現在の言語がFortran
 7970: 77@code{AC_LANG_FORTRAN77}(@pxref{Language Choice})に設定されていること
 7971: を最初に確認し,@code{AC_TRY_COMPILE}(@pxref{Examining Syntax})や
 7972: @code{AC_TRY_RUN}(@pxref{Run Time})を使用してください.
 7973: 
 7974: 
 7975: @defmac AC_F77_LIBRARY_LDFLAGS
 7976: @acindex F77_LIBRARY_LDFLAGS
 7977: @ovindex FLIBS
 7978: @c Determine the linker flags (e.g., @option{-L} and @option{-l}) for the
 7979: @c @dfn{Fortran 77 intrinsic and run-time libraries} that are required to
 7980: @c successfully link a Fortran 77 program or shared library.  The output
 7981: @c variable @code{FLIBS} is set to these flags.
 7982: @c 
 7983: Fortran 77プログラムや共有ライブラリをうまくリンクするために必要な
 7984: @dfn{Fortran 77のイントリンシックとランタイムライブラリ}に対して,リンカ
 7985: フラグ(例えば@samp{-L}と@samp{-l})を決定します.出力変数 @code{FLIBS}に
 7986: は,これらのフラグが設定されます.
 7987: 
 7988: @c This macro is intended to be used in those situations when it is
 7989: @c necessary to mix, e.g., C++ and Fortran 77 source code into a single
 7990: @c program or shared library (@pxref{Mixing Fortran 77 With C and C++,,,
 7991: @c automake, GNU Automake}).
 7992: @c 
 7993: このマクロは,単一のプログラムや共有ライブラリに,例えば,C++とFortran
 7994: 77のソースコードを混在させる必要があるとき利用されます(@pxref{Mixing
 7995: Fortran 77 With C and C++, , , automake, GNU Automake}).
 7996: 
 7997: @c For example, if object files from a C++ and Fortran 77 compiler must be
 7998: @c linked together, then the C++ compiler/linker must be used for linking
 7999: @c (since special C++-ish things need to happen at link time like calling
 8000: @c global constructors, instantiating templates, enabling exception
 8001: @c support, etc.).
 8002: @c 
 8003: 例えば,C++とFortran 77コンパイラで生成されるオブジェクトファイルを,お
 8004: 互いにリンクする必要があるとき,リンクにはC++コンパイラ/リンカが使用され
 8005: るはずです(C++特有のものは,リンク時にグローバルコンストラクタ,インスタ
 8006: ンステンプレート,例外処理等を呼び出す必要が生じるためです).
 8007: 
 8008: @c However, the Fortran 77 intrinsic and run-time libraries must be linked
 8009: @c in as well, but the C++ compiler/linker doesn't know by default how to
 8010: @c add these Fortran 77 libraries.  Hence, the macro
 8011: @c @code{AC_F77_LIBRARY_LDFLAGS} was created to determine these Fortran 77
 8012: @c libraries.
 8013: @c 
 8014: しかし,Fortran 77のイントリンシックとランタイムライブラリもリンクする必
 8015: 要がありますが,C++コンパイラ/リンカは,Fortran 77ライブラリを追加する方
 8016: 法をデフォルトでは知っていません.そのため,マクロ 
 8017: @code{AC_F77_LIBRARY_LDFLAGS}は,これらのFortran 77ライブラリを決定する
 8018: ために作成されました.
 8019: 
 8020: @c The macro @code{AC_F77_DUMMY_MAIN} or @code{AC_F77_MAIN} will probably
 8021: @c also be necessary to link C/C++ with Fortran; see below.
 8022: @c 
 8023: このマクロ@code{AC_F77_DUMMY_MAIN}や@code{AC_F77_MAIN}は,FortranでC/C++ 
 8024: にリンクする必要があるときもおそらく必要です.以下を参照してください.
 8025: @end defmac
 8026: 
 8027: 
 8028: @defmac AC_F77_DUMMY_MAIN (@ovar{action-if-found}, @ovar{action-if-not-found})
 8029: @acindex F77_DUMMY_MAIN
 8030: @cvindex F77_DUMMY_MAIN
 8031: @c With many compilers, the Fortran libraries detected by
 8032: @c @code{AC_F77_LIBRARY_LDFLAGS} provide their own @code{main} entry
 8033: @c function that initializes things like Fortran I/O, and which then calls
 8034: @c a user-provided entry function named (say) @code{MAIN__} to run the
 8035: @c user's program.  The @code{AC_F77_DUMMY_MAIN} or @code{AC_F77_MAIN}
 8036: @c macro figures out how to deal with this interaction.
 8037: @c 
 8038: 多くのコンパイラでは,@code{AC_F77_LIBRARY_LDFLAGS}で見つかるFortranライ
 8039: ブラリは,Fortran I/Oのようなものを初期化したり,ユーザプログラムを実行
 8040: するために,(いわゆる)@code{MAIN__}のような名前を持つユーザ提供のエント
 8041: リー関数を呼び出す,独自の@code{main}エントリー関数を提供しています.
 8042: @code{AC_F77_DUMMY_MAIN}や@code{AC_F77_MAIN}マクロは,この相互作用を扱う
 8043: 方法を理解します.
 8044: 
 8045: @c When using Fortran for purely numerical functions (no I/O, etc. often
 8046: @c prefer to provide their own @code{main} and skip the Fortran library
 8047: @c initializations.  In this case, however, one may still need to provide a
 8048: @c dummy @code{MAIN__} routine in order to prevent linking errors on some
 8049: @c systems.  @code{AC_F77_DUMMY_MAIN} detects whether any such routine is
 8050: @c @emph{required} for linking, and what its name is; the shell variable
 8051: @c @code{F77_DUMMY_MAIN} holds this name, @code{unknown} when no solution
 8052: @c was found, and @code{none} when no such dummy main is needed.
 8053: @c 
 8054: (I/Oなどではない)純粋な数値関数に対してFortranを使用しているとき,独自の
 8055: @code{main}を提供し,Fortranライブラリの初期化を停止したいこともよくあり
 8056: ます.しかしこの場合は,いくつかのシステムでのリンクエラーを避けるため,
 8057: ダミーの@code{MAIN__}ルーチンを提供する必要があるかもしれません.シェル
 8058: 変数@code{F77_DUMMY_MAIN}は,解決方法が見つからないときは@code{unknown},
 8059: そのようなダミーの@code{main}が不要なときは@code{none}という値を保持しま
 8060: す.
 8061: 
 8062: @c By default, @var{action-if-found} defines @code{F77_DUMMY_MAIN} to the
 8063: @c name of this routine (e.g., @code{MAIN__}) @emph{if} it is required.
 8064: @c @ovar{action-if-not-found} defaults to exiting with an error.
 8065: @c 
 8066: デフォルトで,必要な@emph{場合}は,@var{action-if-found}は
 8067: @code{F77_DUMMY_MAIN}をこのルーチン名(例えば@code{MAIN__})に定義します.
 8068: @ovar{action-if-not-found}はデフォルトでエラーで終了します.
 8069: 
 8070: @c In order to link with Fortran routines, the user's C/C++ program should
 8071: @c then include the following code to define the dummy main if it is
 8072: @c needed:
 8073: @c 
 8074: Fortranとリンクするために,必要な場合はダミーの@code{main}を定義するため
 8075: に,userのC/C++プログラムで以下のようなコードをインクルードすべきです.
 8076: 
 8077: @example
 8078: #ifdef F77_DUMMY_MAIN
 8079: #  ifdef __cplusplus
 8080:      extern "C"
 8081: #  endif
 8082:    int F77_DUMMY_MAIN() @{ return 1; @}
 8083: #endif
 8084: @end example
 8085: 
 8086: @c Note that @code{AC_F77_DUMMY_MAIN} is called automatically from
 8087: @c @code{AC_F77_WRAPPERS}; there is generally no need to call it explicitly
 8088: @c unless one wants to change the default actions.
 8089: @c 
 8090: @code{AC_F77_DUMMY_MAIN}は@code{AC_F77_WRAPPERS}から自動的に呼び出される
 8091: ことに注意してください.一般的にデフォルトの動作を変更したくない限り,明
 8092: 示的にに呼び出す必要はありません.
 8093: @end defmac
 8094: 
 8095: @defmac AC_F77_MAIN
 8096: @acindex F77_MAIN
 8097: @cvindex F77_MAIN
 8098: @c As discussed above for @code{AC_F77_DUMMY_MAIN}, many Fortran libraries
 8099: @c allow you to provide an entry point called (say) @code{MAIN__} instead of
 8100: @c the usual @code{main}, which is then called by a @code{main} function in
 8101: @c the Fortran libraries that initializes things like Fortran I/O.  The
 8102: @c @code{AC_F77_MAIN} macro detects whether it is @emph{possible} to
 8103: @c utilize such an alternate main function, and defines @code{F77_MAIN} to
 8104: @c the name of the function.  (If no alternate main function name is found,
 8105: @c @code{F77_MAIN} is simply defined to @code{main}.)
 8106: @c 
 8107: 上記の@code{AC_F77_DUMMY_MAIN}で議論したように,Fortranライブラリには,
 8108: 通常の@code{main}の代わりに,(いわゆる)@code{MAIN__}と呼ばれるエントリー
 8109: ポイントを提供することが可能なものも多く,それは,Fortran I/Oのようなも
 8110: のを初期化するために,Fortranライブラリの@code{main}関数で呼び出されます.
 8111: @code{AC_F77_MAIN}は,そのような代理の@code{main}関数の利用が@emph{可能
 8112: か}どうかを検出し,@code{F77_MAIN}を関数の名前に定義します.(代理の
 8113: @code{main}関数の名前が見つからない場合,@code{F77_MAIN}は単純に
 8114: @code{main}に定義します.)
 8115: 
 8116: @c Thus, when calling Fortran routines from C that perform things like I/O,
 8117: @c one should use this macro and name the "main" function @code{F77_MAIN}
 8118: @c instead of @code{main}.
 8119: @c 
 8120: このため,Fortranルーチンが,I/Oのようなものを実行するためにCから呼び出
 8121: されるとき,このマクロを使用し,"main"関数を@code{main}ではなく
 8122: @code{F77_MAIN}の名前にすべきです.
 8123: @end defmac
 8124: 
 8125: @defmac AC_F77_WRAPPERS
 8126: @acindex F77_WRAPPERS
 8127: @cvindex F77_FUNC
 8128: @cvindex F77_FUNC_
 8129: @c Defines C macros @code{F77_FUNC(name,NAME)} and
 8130: @c @code{F77_FUNC_(name,NAME)} to properly mangle the names of C/C++
 8131: @c identifiers, and identifiers with underscores, respectively, so that
 8132: @c they match the name-mangling scheme used by the Fortran 77 compiler.
 8133: @c 
 8134: 名前がmangleされる方法をFortran 77コンパイラで使用されているものに一致さ
 8135: せるため,mangleされているC/C++の識別子とアンダースコアが付いた識別子の
 8136: 名前を正しくするために,Cマクロの@code{F77_FUNC(name,NAME)}と
 8137: @code{F77_FUNC_(name,NAME)}をそれぞれ定義します.
 8138: 
 8139: @c Fortran 77 is case-insensitive, and in order to achieve this the Fortran
 8140: @c 77 compiler converts all identifiers into a canonical case and format.
 8141: @c To call a Fortran 77 subroutine from C or to write a C function that is
 8142: @c callable from Fortran 77, the C program must explicitly use identifiers
 8143: @c in the format expected by the Fortran 77 compiler.  In order to do this,
 8144: @c one simply wraps all C identifiers in one of the macros provided by
 8145: @c @code{AC_F77_WRAPPERS}.  For example, suppose you have the following
 8146: @c Fortran 77 subroutine:
 8147: @c 
 8148: Fortran 77は大文字小文字の区別が無く,このために,Fortran 77コンパイラは
 8149: 全ての識別子を標準的な文字と書式に変換します.CからFortran 77のサブルー
 8150: チンを呼び出したり,Fortran 77から呼び出し可能なC関数を書いたりするため
 8151: に,CプログラムではFortran 77コンパイラが期待する書式で,識別子を明示的
 8152: に使用する必要があります.こうするために,全てのC識別子を
 8153: @code{AC_F77_WRAPPERS}で提供されるマクロの一つで,単純にラッパー関数にし
 8154: ます.例えば,以下のようなFortran 77のサブルーチンがあるとします.
 8155: 
 8156: @example
 8157:       subroutine foobar(x,y)
 8158:       double precision x, y
 8159:       y = 3.14159 * x
 8160:       return
 8161:       end
 8162: @end example
 8163: 
 8164: @c You would then declare its prototype in C or C++ as:
 8165: @c 
 8166: CやC++のプロトタイプで,以下のように宣言します.
 8167: 
 8168: @example
 8169: #define FOOBAR_F77 F77_FUNC(foobar,FOOBAR)
 8170: #ifdef __cplusplus
 8171: extern "C"  /* prevent C++ name mangling */
 8172: #endif
 8173: void FOOBAR_F77(double *x, double *y);
 8174: @end example
 8175: 
 8176: @c Note that we pass both the lowercase and uppercase versions of the
 8177: @c function name to @code{F77_FUNC} so that it can select the right one.
 8178: @c Note also that all parameters to Fortran 77 routines are passed as
 8179: @c pointers (@pxref{Mixing Fortran 77 With C and C++,,, automake, GNU
 8180: @c Automake}).
 8181: @c 
 8182: 正しいものが選択できるように,関数名の大文字と小文字の両方のバージョンを
 8183: @code{F77_FUNC}に渡していることに注意してください.また,Fortran 77のルー
 8184: チンへの全てのパラメータを,ポインタとして渡していることにも注意してくだ
 8185: さい(@pxref{Mixing Fortran 77 With C and C++,,, automake, GNU Automake}).
 8186: 
 8187: @c Although Autoconf tries to be intelligent about detecting the
 8188: @c name-mangling scheme of the Fortran 77 compiler, there may be Fortran 77
 8189: @c compilers that it doesn't support yet.  In this case, the above code
 8190: @c will generate a compile-time error, but some other behavior
 8191: @c (e.g., disabling Fortran-related features) can be induced by checking
 8192: @c whether the @code{F77_FUNC} macro is defined.
 8193: @c 
 8194: AutoconfはFortran 77が名前をmangleする手法を検出するために知的な手法で試
 8195: みていますが,Fortran 77コンパイラはそれをまだサポートしていないかもしれ
 8196: ません.この場合,上記のコードはコンパイル時にエラーとなりますが,それ以
 8197: 外の動作(例えば,Fortranに関連する機能の停止)は,@code{F77_FUNC}マクロが
 8198: 定義されているかどうかを調査することで引き起こされます.
 8199: 
 8200: @c Now, to call that routine from a C program, we would do something like:
 8201: @c 
 8202: さて,そのようなルーチンをCプログラムから呼び出すために,以下のようにし
 8203: てみます.
 8204: 
 8205: @example
 8206: @{
 8207:     double x = 2.7183, y;
 8208:     FOOBAR_F77(&x, &y);
 8209: @}
 8210: @end example
 8211: 
 8212: @c If the Fortran 77 identifier contains an underscore
 8213: @c (e.g., @code{foo_bar}), you should use @code{F77_FUNC_} instead of
 8214: @c @code{F77_FUNC} (with the same arguments).  This is because some Fortran
 8215: @c 77 compilers mangle names differently if they contain an underscore.
 8216: @c 
 8217: Fortran 77の識別子がアンダースコアを含んでいる(例えば@code{foo_bar}の)場
 8218: 合,@code{F77_FUNC}の代わりに@code{F77_FUNC_}を(同じ引数で)使用すべきで
 8219: す.これは,アンダースコアを含んでいる場合,Fortran 77コンパイラによって
 8220: は異なる名前にmangleするものもあるからです.
 8221: @end defmac
 8222: 
 8223: @defmac AC_F77_FUNC (@var{name}, @ovar{shellvar})
 8224: @acindex F77_FUNC
 8225: @c Given an identifier @var{name}, set the shell variable @var{shellvar} to
 8226: @c hold the mangled version @var{name} according to the rules of the
 8227: @c Fortran 77 linker (see also @code{AC_F77_WRAPPERS}).  @var{shellvar} is
 8228: @c optional; if it is not supplied, the shell variable will be simply
 8229: @c @var{name}.  The purpose of this macro is to give the caller a way to
 8230: @c access the name-mangling information other than through the C
 8231: @c preprocessor as above, for example, to call Fortran routines from some
 8232: @c language other than C/C++.
 8233: @c 
 8234: 識別子@var{name}が与えられている場合,シェル変数@var{shellvar}をFortran
 8235: 77リンカの規則(@code{AC_F77_WRAPPERS}も参照してください)によって,mangle 
 8236: されるバージョンの@var{name}を保持するように設定します.@var{shellvar}は
 8237: オプションです.提供されていない場合シェル変数は単純に@var{name}になりま
 8238: す.このマクロの目的は,上記のようにCプリプロセッサを通じてではなく,呼
 8239: び出し側に名前のmangleに関する情報にアクセスする方法を与えることで,例え
 8240: ば,C/C++以外の言語からFortranルーチンを呼び出すためです.
 8241: @end defmac
 8242: 
 8243: @node System Services
 8244: @c @section System Services
 8245: @section システムサービス
 8246: 
 8247: @c The following macros check for operating system services or capabilities.
 8248: @c 
 8249: 以下のマクロはオペレーティングシステムのサービスや機能を調査します.
 8250: 
 8251: @defmac AC_PATH_X
 8252: @acindex PATH_X
 8253: @c Try to locate the X Window System include files and libraries.  If the
 8254: @c user gave the command line options @option{--x-includes=@var{dir}} and
 8255: @c @option{--x-libraries=@var{dir}}, use those directories.  If either or
 8256: @c both were not given, get the missing values by running @code{xmkmf} on a
 8257: @c trivial @file{Imakefile} and examining the @file{Makefile} that it
 8258: @c produces.  If that fails (such as if @code{xmkmf} is not present), look
 8259: @c for the files in several directories where they often reside.  If either
 8260: @c method is successful, set the shell variables @code{x_includes} and
 8261: @c @code{x_libraries} to their locations, unless they are in directories
 8262: @c the compiler searches by default.
 8263: @c 
 8264: X Window Systemのインクルードファイルとライブラリの場所を調査します.ユー
 8265: ザがコマンドラインオプションで,@samp{--x-includes=@var{dir}}と
 8266: @samp{--x-libraries=@var{dir}}を与えている場合,そのディレクトリを使用し
 8267: ます.どちらか一つまたは両方とも与えられない場合,@code{xmkmf}を平凡な
 8268: @file{Imakefile}で実行し,生成された@file{Makefile}を調査し,足りない値
 8269: を取得します.(@code{xmkmf}が存在しない等のように)失敗した場合,配置され
 8270: ることが多いディレクトリ等でファイルを検索します.いずれかの手法で成功し
 8271: た場合,コンパイラがデフォルトで検索するディレクトリに無い限り,シェル変
 8272: 数@code{x_includes}と@code{x_libraries}をその場所に設定します.
 8273: 
 8274: @c If both methods fail, or the user gave the command line option
 8275: @c @option{--without-x}, set the shell variable @code{no_x} to @samp{yes};
 8276: @c otherwise set it to the empty string.
 8277: @c 
 8278: 両方の方法が失敗する,またはユーザがコマンドラインオプションの
 8279: @samp{--without-x}を与えている場合,シェル変数の@code{no_x}を@samp{yes} 
 8280: に設定し,それ以外では空の文字列に設定します.
 8281: @end defmac
 8282: 
 8283: @defmac AC_PATH_XTRA
 8284: @acindex PATH_XTRA
 8285: @ovindex X_CFLAGS
 8286: @ovindex X_LIBS
 8287: @ovindex X_EXTRA_LIBS
 8288: @ovindex X_PRE_LIBS
 8289: @cvindex X_DISPLAY_MISSING
 8290: @c An enhanced version of @code{AC_PATH_X}.  It adds the C compiler flags
 8291: @c that X needs to output variable @code{X_CFLAGS}, and the X linker flags
 8292: @c to @code{X_LIBS}.  Define @code{X_DISPLAY_MISSING} if X is not
 8293: @c available.
 8294: @c 
 8295: @code{AC_PATH_X}の拡張バージョンです.Xが必要とするCコンパイラフラグを出
 8296: 力変数@code{X_CFLAGS}に,Xリンカフラグを@code{X_LIBS}に追加します.Xが利
 8297: 用可能でない場合,@code{X_DISPLAY_MISSING}を定義します.
 8298: 
 8299: @c This macro also checks for special libraries that some systems need in
 8300: @c order to compile X programs.  It adds any that the system needs to
 8301: @c output variable @code{X_EXTRA_LIBS}.  And it checks for special X11R6
 8302: @c libraries that need to be linked with before @option{-lX11}, and adds
 8303: @c any found to the output variable @code{X_PRE_LIBS}.
 8304: @c 
 8305: また,このマクロは,Xプログラムをコンパイルするためにシステムが必要とす
 8306: る特別なライブラリも調査します.それは,システムが必要とするあらゆるもの
 8307: を出力変数@code{X_EXTRA_LIBS}に追加します.そして,@samp{-lX11}の前にリ
 8308: ンクする必要がある特別なX11R6ライブラリを調査し,見つかったものは全て出
 8309: 力変数@code{X_PRE_LIBS}に追加します.
 8310: 
 8311: @c This is an incomplete kludge.  Make a real way to do it.
 8312: @c If you need to check for other X functions or libraries yourself, then
 8313: @c after calling this macro, add the contents of @code{X_EXTRA_LIBS} to
 8314: @c @code{LIBS} temporarily, like this: (FIXME - add example)
 8315: @end defmac
 8316: 
 8317: @defmac AC_SYS_INTERPRETER
 8318: @acindex SYS_INTERPRETER
 8319: @c Check whether the system supports starting scripts with a line of the
 8320: @c form @samp{#! /bin/csh} to select the interpreter to use for the script.
 8321: @c After running this macro, shell code in @file{configure.ac} can check
 8322: @c the shell variable @code{interpval}; it will be set to @samp{yes}
 8323: @c if the system supports @samp{#!}, @samp{no} if not.
 8324: @c 
 8325: スクリプトを使用するためのインタプリタを選択するため,@samp{#! /bin/csh} 
 8326: の形式の行を用いたスクリプトをサポートするかどうかを調査します.このマク
 8327: ロを実行した後で,@file{configure.ac}のシェルコードは,シェル変数の 
 8328: @code{interpval}を調査することが可能になります.システムで@samp{#!}がサ
 8329: ポートされている場合は@samp{yes},そうでなければ@samp{no}を設定します.
 8330: @end defmac
 8331: 
 8332: @defmac AC_SYS_LARGEFILE
 8333: @acindex SYS_LARGEFILE
 8334: @cvindex _FILE_OFFSET_BITS
 8335: @cvindex _LARGE_FILES
 8336: @ovindex CC
 8337: @c Arrange for
 8338: @c @href{http://www.sas.com/standards/large.file/x_open.20Mar96.html,
 8339: @c large-file support}.  On some hosts, one must use special compiler
 8340: @c options to build programs that can access large files.  Append any such
 8341: @c options to the output variable @code{CC}.  Define
 8342: @c @code{_FILE_OFFSET_BITS} and @code{_LARGE_FILES} if necessary.
 8343: @c 
 8344: @href{http://www.sas.com/standards/large.file/x_open.20Mar96.html,
 8345: large-file support}のためにアレンジします.ホストによっては,大きなファ
 8346: イルにアクセスできるプログラムをビルドするため,特別なコンパイラオプショ
 8347: ンが必要になります.そのようなオプションを出力変数@code{CC}に,全て追加
 8348: します.必要な場合は,@code{_FILE_OFFSET_BITS}と@code{_LARGE_FILES}を定
 8349: 義します.
 8350: 
 8351: @c Large-file support can be disabled by configuring with the
 8352: @c @option{--disable-largefile} option.
 8353: @c 
 8354: 大きなファイルのサポートは,@option{--disable-largefile}オプションを用い
 8355: てコンフィグレーションすることで利用不可能にすることが可能です.
 8356: 
 8357: @c If you use this macro, check that your program works even when
 8358: @c @code{off_t} is longer than @code{long}, since this is common when
 8359: @c large-file support is enabled.  For example, it is not correct to print
 8360: @c an arbitrary @code{off_t} value @code{X} with @code{printf ("%ld",
 8361: @c (long) X)}.
 8362: @c 
 8363: このマクロを使用する場合,大きなファイルのサポートが利用可能なときは,
 8364: @code{off_t}が@code{long}より長いときが一般的なので,それでもプログラム
 8365: が動作するかどうかを調査してください.例えば,@code{printf ("%ld",
 8366: (long) X)}で任意の@code{off_t}の値@code{X}を出力しても正しくなくなります.
 8367: @end defmac
 8368: 
 8369: @defmac AC_SYS_LONG_FILE_NAMES
 8370: @acindex SYS_LONG_FILE_NAMES
 8371: @cvindex HAVE_LONG_FILE_NAMES
 8372: @c If the system supports file names longer than 14 characters, define
 8373: @c @code{HAVE_LONG_FILE_NAMES}.
 8374: @c 
 8375: システムが14文字より長いファイル名をサポートする場合,
 8376: @code{HAVE_LONG_FILE_NAMES}を定義します.
 8377: @end defmac
 8378: 
 8379: @defmac AC_SYS_POSIX_TERMIOS
 8380: @acindex SYS_POSIX_TERMIOS
 8381: @cindex POSIX termios headers
 8382: @cindex termios POSIX headers
 8383: @c Check to see if the POSIX termios headers and functions are available on the
 8384: @c system.  If so, set the shell variable @code{ac_cv_sys_posix_termios} to
 8385: @c @samp{yes}.  If not, set the variable to @samp{no}.
 8386: @c 
 8387: POSIX termiosヘッダと関数がシステムで利用可能かどうかを調査します.その
 8388: 場合は,シェル変数@code{ac_cv_sys_posix_termios}を@samp{yes}に設定します.
 8389: それ以外ではその変数を@samp{no}に設定します.
 8390: @end defmac
 8391: 
 8392: @node UNIX Variants
 8393: @c @section UNIX Variants
 8394: @section 様々なUNIX
 8395: 
 8396: @c The following macros check for certain operating systems that need
 8397: @c special treatment for some programs, due to exceptional oddities in
 8398: @c their header files or libraries.  These macros are warts; they will be
 8399: @c replaced by a more systematic approach, based on the functions they make
 8400: @c available or the environments they provide.
 8401: @c 
 8402: 以下のマクロは,ヘッダファイルやライブラリが例外的に特異なため,プログラ
 8403: ムに対して特別な処理が必要なオペレーティングシステムを調査します.これら
 8404: のマクロは不要なものです.利用可能にする関数や,供給する環境に基づき,よ
 8405: り規則正しい手法で置換されるでしょう.
 8406: 
 8407: @defmac AC_AIX
 8408: @acindex AIX
 8409: @cvindex _ALL_SOURCE
 8410: @c If on AIX, define @code{_ALL_SOURCE}.  Allows the use of some @sc{bsd}
 8411: @c functions.  Should be called before any macros that run the C compiler.
 8412: @c 
 8413: AIXの場合,@code{_ALL_SOURCE}を定義します.いくつかの@sc{bsd}関数の使用
 8414: を許可します.Cコンパイラを実行するあらゆるマクロの前に呼び出すべきです.
 8415: @end defmac
 8416: 
 8417: @defmac AC_GNU_SOURCE
 8418: @acindex GNU_SOURCE
 8419: @cvindex _GNU_SOURCE
 8420: @c If using the GNU C library, define @code{_GNU_SOURCE}.  Allows the use
 8421: @c of some @acronym{GNU} functions.  Should be called before any macros
 8422: @c that run the C compiler.
 8423: @c 
 8424: GNU Cライブラリを使用している場合,@code{_GNU_SOURCE}を定義します.いく
 8425: つかの@acronym{GNU}の関数が使用可能になります.Cコンパイラを実行するマク
 8426: ロの前で呼び出すべきです.
 8427: @end defmac
 8428: 
 8429: @defmac AC_ISC_POSIX
 8430: @acindex ISC_POSIX
 8431: @ovindex LIBS
 8432: @c For @sc{interactive unix} (@sc{isc}), add @option{-lcposix} to output
 8433: @c variable @code{LIBS} if necessary for @sc{posix} facilities.  Call this
 8434: @c after @code{AC_PROG_CC} and before any other macros that use @sc{posix}
 8435: @c interfaces.  @sc{interactive unix} is no longer sold, and Sun says that
 8436: @c they will drop support for it on 2006-07-23, so this macro is becoming
 8437: @c obsolescent.
 8438: @c 
 8439: @sc{interactive unix} (@sc{isc})に対して,@sc{posix}の機能が必要な場合,
 8440: 出力変数@code{LIBS}に@option{-lcposix}を追加します.これは
 8441: @code{AC_PROG_CC}の後で,@sc{posix}インターフェースを使用するその他のマ
 8442: クロの前で呼び出してください.@sc{interactive unix}はすでに販売されてお
 8443: らず,Sunは2006-07-23でサポートを終了することを告げているので,このマク
 8444: ロは時代遅れになっています.
 8445: @end defmac
 8446: 
 8447: @defmac AC_MINIX
 8448: @acindex MINIX
 8449: @cvindex _MINIX
 8450: @cvindex _POSIX_SOURCE
 8451: @cvindex _POSIX_1_SOURCE
 8452: @c If on Minix, define @code{_MINIX} and @code{_POSIX_SOURCE} and define
 8453: @c @code{_POSIX_1_SOURCE} to be 2.  This allows the use of @sc{posix}
 8454: @c facilities.  Should be called before any macros that run the C compiler.
 8455: @c 
 8456: Minixの場合,@code{_MINIX}と@code{_POSIX_SOURCE}を定義し, 
 8457: @code{_POSIX_1_SOURCE}を2と定義します.これでPOSIXの機能が使用可能になり
 8458: ます.Cコンパイラを実行するあらゆるマクロの前で呼び出すべきです.
 8459: @end defmac
 8460: 
 8461: 
 8462: 
 8463: 
 8464: @c ========================================================= Writing Tests
 8465: 
 8466: @node Writing Tests
 8467: @c @chapter Writing Tests
 8468: @chapter テストを書く
 8469: 
 8470: @c If the existing feature tests don't do something you need, you have to
 8471: @c write new ones.  These macros are the building blocks.  They provide
 8472: @c ways for other macros to check whether various kinds of features are
 8473: @c available and report the results.
 8474: @c 
 8475: 既存の特徴テストでは必要なことができない場合,新しいものを書く必要があり
 8476: ます.これらのマクロはブロックの組み立てです.他のマクロで様々な特徴が利
 8477: 用可能かどうか調査し結果を報告するための方法を提供します.
 8478: 
 8479: @c This chapter contains some suggestions and some of the reasons why the
 8480: @c existing tests are written the way they are.  You can also learn a lot
 8481: @c about how to write Autoconf tests by looking at the existing ones.  If
 8482: @c something goes wrong in one or more of the Autoconf tests, this
 8483: @c information can help you understand the assumptions behind them, which
 8484: @c might help you figure out how to best solve the problem.
 8485: @c 
 8486: この章には,提案と,既存のテストが書かれている方法の理由も含んでいます.
 8487: また,既存のものを見ることで,Autoconfテストの書き方について知ることが可
 8488: 能です.Autoconfのテストの一つ以上がうまくいかない場合,この情報は背後で
 8489: 行われていることの理解を助けるので,最善の問題解決法が分かるでしょう.
 8490: 
 8491: @c These macros check the output of the C compiler system.  They do
 8492: @c not cache the results of their tests for future use (@pxref{Caching
 8493: @c Results}), because they don't know enough about the information they are
 8494: @c checking for to generate a cache variable name.  They also do not print
 8495: @c any messages, for the same reason.  The checks for particular kinds of C
 8496: @c features call these macros and do cache their results and print messages
 8497: @c about what they're checking for.
 8498: @c 
 8499: 以下のマクロは,Cコンパイラシステムの出力を調査します.それらは,キャッ
 8500: シュ変数名を生成するために調査している情報を十分には知らないので,将来使
 8501: 用するためにテスト結果をキャッシュしません(@pxref{Caching Results}).同
 8502: じ理由でメッセージも出力しません.特定のCの特徴の調査では,これらのマク
 8503: ロを呼び出し,結果をキャッシュし,そして調査していることに関するメッセー
 8504: ジを出力します.
 8505: 
 8506: @c When you write a feature test that could be applicable to more than one
 8507: @c software package, the best thing to do is encapsulate it in a new macro.
 8508: @c @xref{Writing Autoconf Macros}, for how to do that.
 8509: @c 
 8510: 一つ以上のソフトウェアパッケージに適用可能な特徴テストを書いているとき,
 8511: 新しいマクロに要約することがベストです.その方法は,@xref{Writing
 8512: Autoconf Macros}.
 8513: 
 8514: @menu
 8515: * Examining Declarations::      Detecting header files and declarations
 8516: * Examining Syntax::            Detecting language syntax features
 8517: * Examining Libraries::         Detecting functions and global variables
 8518: * Run Time::                    Testing for run-time features
 8519: * Systemology::                 A zoology of operating systems
 8520: * Multiple Cases::              Tests for several possible values
 8521: * Language Choice::             Selecting which language to use for testing
 8522: @end menu
 8523: 
 8524: @node Examining Declarations
 8525: @c @section Examining Declarations
 8526: @section 宣言の調査
 8527: 
 8528: @c The macro @code{AC_TRY_CPP} is used to check whether particular header
 8529: @c files exist.  You can check for one at a time, or more than one if you
 8530: @c need several header files to all exist for some purpose.
 8531: @c 
 8532: マクロ@code{AC_TRY_CPP}は,特定のヘッダファイルが存在するかどうか調査す
 8533: るために使用します.目的があって,複数のヘッダファイルが全て必要な場合で
 8534: も,一度に一つまたはそれ以上調査することが可能です.
 8535: 
 8536: @defmac AC_TRY_CPP (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
 8537: @acindex TRY_CPP
 8538: @c If the preprocessor produces no error messages while processing the
 8539: @c @var{input} (typically includes), run shell commands
 8540: @c @var{action-if-true}.  Otherwise run shell commands
 8541: @c @var{action-if-false}.  Beware that @var{input} is double quoted.  Shell
 8542: @c variable, back quote, and backslash substitutions are performed on
 8543: @c @var{input}.
 8544: @c 
 8545: プリプロセッサが@var{input} (通常はインクルード)を処理している間にエラー
 8546: メッセージを生成しない場合,シェルコマンド@var{action-if-true}を実行しま
 8547: す.それ以外では,シェルコマンド@var{action-if-false}を実行します.
 8548: @var{input}は二重に引用符で囲まれていることに注意してください.シェル変
 8549: 数,バッククオート,そしてバックスラッシュの置換は,@var{input}で実行さ
 8550: れます.
 8551: 
 8552: @c This macro uses @code{CPPFLAGS}, but not @code{CFLAGS}, because
 8553: @c @option{-g}, @option{-O}, etc.@: are not valid options to many C
 8554: @c preprocessors.
 8555: @c 
 8556: @samp{-g},@samp{-O}等は,多くのCプリプロセッサで正当なオプションではな
 8557: いため,このマクロは@code{CPPFLAGS}を使用しますが,@code{CFLAGS}は使用し
 8558: ません.
 8559: @end defmac
 8560: 
 8561: @c Here is how to find out whether a header file contains a particular
 8562: @c declaration, such as a typedef, a structure, a structure member, or a
 8563: @c function.  Use @code{AC_EGREP_HEADER} instead of running @code{grep}
 8564: @c directly on the header file; on some systems the symbol might be defined
 8565: @c in another header file that the file you are checking @samp{#include}s.
 8566: @c 
 8567: ヘッダファイルが,typedef,構造体,構造体メンバー,あるいは関数のような
 8568: 特定の宣言を含んでいるかどうかを調査する方法は以下のようになります.ヘッ
 8569: ダファイルで直接@code{grep}を実行する代わりに,@code{AC_EGREP_HEADER}を
 8570: 使用します.調査した@samp{#include}ファイル以外のヘッダファイルに,シン
 8571: ボルを定義しているシステムもあります.
 8572: 
 8573: @defmac AC_EGREP_HEADER (@var{pattern}, @var{header-file}, @var{action-if-found}, @ovar{action-if-not-found})
 8574: @acindex EGREP_HEADER
 8575: @c If the output of running the preprocessor on the system header file
 8576: @c @var{header-file} matches the extended regular expression
 8577: @c @var{pattern}, execute shell commands @var{action-if-found}, otherwise
 8578: @c execute @var{action-if-not-found}.
 8579: @c 
 8580: システム上のヘッダファイル@var{header-file}で,プリプロセッサの実行の出
 8581: 力が拡張した正規表現@var{pattern}にマッチする場合,シェルコマンドの
 8582: @var{action-if-found}を実行し,それ以外では @var{action-if-not-found} を
 8583: 実行します.
 8584: @end defmac
 8585: 
 8586: @c To check for C preprocessor symbols, either defined by header files or
 8587: @c predefined by the C preprocessor, use @code{AC_EGREP_CPP}.  Here is an
 8588: @c example of the latter:
 8589: @c 
 8590: ヘッダファイルの定義や,Cプリプロセッサの前定義といった,Cプリプロセッサ
 8591: シンボルを調査するために@code{AC_EGREP_CPP}を使用してください.その例は
 8592: 以下のようになります.
 8593: 
 8594: @example
 8595: AC_EGREP_CPP(yes,
 8596: [#ifdef _AIX
 8597:   yes
 8598: #endif
 8599: ], is_aix=yes, is_aix=no)
 8600: @end example
 8601: 
 8602: @defmac AC_EGREP_CPP (@var{pattern}, @var{program}, @ovar{action-if-found}, @ovar{action-if-not-found})
 8603: @acindex EGREP_CPP
 8604: @c @var{program} is the text of a C or C++ program, on which shell
 8605: @c variable, back quote, and backslash substitutions are performed.  If the
 8606: @c output of running the preprocessor on @var{program} matches the
 8607: @c extended regular expression @var{pattern}, execute shell commands
 8608: @c @var{action-if-found}, otherwise execute @var{action-if-not-found}.
 8609: @c 
 8610: @var{program}はCやC++プログラムのテキストで,そこでは,シェル変数,バッ
 8611: ククオートと,バックスラッシュの代入が行われます.@var{program}上でのプ
 8612: リプロセッサの実行の出力が,拡張した正規表現@var{pattern}とマッチする場
 8613: 合,シェルコマンドの@var{action-if-found}を実行し,それ以外では 
 8614: @var{action-if-not-found}を実行します.
 8615: 
 8616: @c This macro calls @code{AC_PROG_CPP} or @code{AC_PROG_CXXCPP} (depending
 8617: @c on which language is current, @pxref{Language Choice}), if it hasn't
 8618: @c been called already.
 8619: @c 
 8620: このマクロは,それまでに呼ばれていなければ,@code{AC_PROG_CPP}や 
 8621: @code{AC_PROG_CXXCPP}を(現在の言語に依存して@pxref{Language Choice})呼び
 8622: 出します.
 8623: @end defmac
 8624: 
 8625: @node Examining Syntax
 8626: @c @section Examining Syntax
 8627: @section 構文の調査
 8628: 
 8629: @c To check for a syntax feature of the C, C++, or Fortran 77 compiler, such
 8630: @c as whether it recognizes a certain keyword, use @code{AC_TRY_COMPILE} to
 8631: @c try to compile a small program that uses that feature.  You can also use
 8632: @c it to check for structures and structure members that are not present on
 8633: @c all systems.
 8634: @c 
 8635: C,C++,またはFortran 77コンパイラが,あるキーワードを理解するかどうかと
 8636: いった構文の特徴を調査するため,@code{AC_TRY_COMPILE}をそれらの特徴を使
 8637: 用している小さなプログラムをコンパイルを試みるために使用してください.全
 8638: てのシステムで,構造体や構造体メンバの存在を調査するために使用することも
 8639: 可能です.
 8640: 
 8641: @defmac AC_TRY_COMPILE (@var{includes}, @var{function-body}, @ovar{action-if-found}, @ovar{action-if-not-found})
 8642: @acindex TRY_COMPILE
 8643: @c Create a test program in the current language (@pxref{Language Choice})
 8644: @c to see whether a function whose body consists of @var{function-body} can
 8645: @c be compiled.  If the file compiles successfully, run shell commands
 8646: @c @var{action-if-found}, otherwise run @var{action-if-not-found}.
 8647: @c 
 8648: @var{function-body}から成り立つ関数がコンパイル可能かどうかを知るために, 
 8649: 現在の言語(@pxref{Language Choice})でテストプログラムを作成します.ファ
 8650: イルが正しくコンパイルされる場合,シェルコマンド@var{action-if-found}を
 8651: 実行し,それ以外の場合は@var{action-if-not-found}を実行します.
 8652: 
 8653: @c This macro double quotes both @var{includes} and @var{function-body}.
 8654: @c 
 8655: このマクロは@var{includes}と@var{function-body}の両方を二重の引用符で囲
 8656: みます.
 8657: 
 8658: @c For C and C++, @var{includes} is any @code{#include} statements needed
 8659: @c by the code in @var{function-body} (@var{includes} will be ignored if
 8660: @c the currently selected language is Fortran 77).  This macro also uses
 8661: @c @code{CFLAGS} or @code{CXXFLAGS} if either C or C++ is the currently
 8662: @c selected language, as well as @code{CPPFLAGS}, when compiling.  If
 8663: @c Fortran 77 is the currently selected language then @code{FFLAGS} will be
 8664: @c used when compiling.
 8665: @c 
 8666: CとC++に対して,@var{includes}は@var{function-body}のコードが必要とする
 8667: @code{#include}文になります(現在選択されている言語がFortran 77の場合は無
 8668: 視されます).このマクロは,現在選択されている言語がCやC++の場合,
 8669: @code{CFLAGS}や@code{CXXFLAGS}も使用し,コンパイル時には @code{CPPFLAGS} 
 8670: も使用します.Fortran 77が現在選択されている言語の場合,コンパイル時に
 8671: @code{FFLAGS}を使用します.
 8672: 
 8673: @c This macro does not try to link; use @code{AC_TRY_LINK} if you need to
 8674: @c do that (@pxref{Examining Libraries}).
 8675: @c 
 8676: このマクロはリンクを試みません. 必要な場合は@code{AC_TRY_LINK}を使用し
 8677: てください(@pxref{Examining Libraries}).
 8678: @end defmac
 8679: 
 8680: @node Examining Libraries
 8681: @c @section Examining Libraries
 8682: @section ライブラリの調査
 8683: 
 8684: @c To check for a library, a function, or a global variable, Autoconf
 8685: @c @command{configure} scripts try to compile and link a small program that
 8686: @c uses it.  This is unlike Metaconfig, which by default uses @code{nm}
 8687: @c or @code{ar} on the C library to try to figure out which functions are
 8688: @c available.  Trying to link with the function is usually a more reliable
 8689: @c approach because it avoids dealing with the variations in the options
 8690: @c and output formats of @code{nm} and @code{ar} and in the location of the
 8691: @c standard libraries.  It also allows configuring for cross-compilation or
 8692: @c checking a function's run-time behavior if needed.  On the other hand, it
 8693: @c can be slower than scanning the libraries once.
 8694: @c 
 8695: ライブラリ,関数,またはグローバル変数を調査するため,Autoconfの
 8696: @command{configure}スクリプトは,それを使用している小さなプログラムのコ
 8697: ンパイルとリンクを試みます.これはMetaconfigとは異なり,デフォルトで,C 
 8698: ライブラリで関数が利用可能かどうか判定するために@code{nm}や@code{ar}を使
 8699: 用します.オプションと@code{nm}と@code{ar}の出力の違いと,標準ライブラリ
 8700: の位置の違いを処理することを避けるので,通常,関数のリンクの試みは信頼性
 8701: が高い方法です.クロスコンパイルや,必要な場合は関数の実行時の動作を調査
 8702: についても,コンフィグレーション時に行なうことが可能です.一方,1度のラ
 8703: イブラリスキャンより遅くなります.
 8704: 
 8705: @c A few systems have linkers that do not return a failure exit status when
 8706: @c there are unresolved functions in the link.  This bug makes the
 8707: @c configuration scripts produced by Autoconf unusable on those systems.
 8708: @c However, some of them can be given options that make the exit status
 8709: @c correct.  This is a problem that Autoconf does not currently handle
 8710: @c automatically.  If users encounter this problem, they might be able to
 8711: @c solve it by setting @code{LDFLAGS} in the environment to pass whatever
 8712: @c options the linker needs (for example, @option{-Wl,-dn} on @sc{mips
 8713: @c risc/os}).
 8714: @c 
 8715: リンクで未解決のシンボルがあるとき,失敗という終了ステータスを戻さないリ
 8716: ンカを持つシステムが無いわけではありません.このバグのため,Autoconfが生
 8717: 成したコンフィグレーションスクリプトは,これらのシステムでは使用不可能で
 8718: す.しかし,終了ステータスを正しくするオプションが与えられているものもあ
 8719: ります.この問題は現在,Autoconfが自動的に正しく処理できません.ユーザが
 8720: この問題に遭遇した場合,リンカが必要なオプション(例えば,MIPS RISC/OSで
 8721: の@samp{-Wl,-dn})を環境変数の@code{LDFLAGS}に渡して設定することで解決可
 8722: 能かもしれません.
 8723: 
 8724: @c @code{AC_TRY_LINK} is used to compile test programs to test for
 8725: @c functions and global variables.  It is also used by @code{AC_CHECK_LIB}
 8726: @c to check for libraries (@pxref{Libraries}), by adding the library being
 8727: @c checked for to @code{LIBS} temporarily and trying to link a small
 8728: @c program.
 8729: @c 
 8730: @code{AC_TRY_LINK}は,関数とグローバル変数に対するテストのため,テストプ
 8731: ログラムをコンパイルするために使用されます.ライブラリを調査する 
 8732: @code{AC_CHECK_LIB}でも,調査しているライブラリを一時的に@code{LIBS}に追
 8733: 加したり,小さなプログラムのリンクを試みたりすることで,使用されています
 8734: (@pxref{Libraries}).
 8735: 
 8736: @defmac AC_TRY_LINK (@var{includes}, @var{function-body}, @ovar{action-if-found}, @ovar{action-if-not-found})
 8737: @acindex TRY_LINK
 8738: @c Depending on the current language (@pxref{Language Choice}), create a
 8739: @c test program to see whether a function whose body consists of
 8740: @c @var{function-body} can be compiled and linked.  If the file compiles
 8741: @c and links successfully, run shell commands @var{action-if-found},
 8742: @c otherwise run @var{action-if-not-found}.
 8743: @c 
 8744: 現在の言語に依存して(@pxref{Language Choice}),@var{function-body}を含ん
 8745: でいる関数をコンパイルとリンクが可能かどうか判定するために,テストプログ
 8746: ラムを作成します.ファイルのコンパイルとリンクが成功する場合,シェルコマ
 8747: ンド@var{action-if-found}を実行し,それ以外の場合は
 8748: @var{action-if-not-found}を実行します.
 8749: 
 8750: @c This macro double quotes both @var{includes} and @var{function-body}.
 8751: @c 
 8752: このマクロは@var{includes}と@var{function-body}の両方を二重の引用符で囲
 8753: みます.
 8754: 
 8755: @c For C and C++, @var{includes} is any @code{#include} statements needed
 8756: @c by the code in @var{function-body} (@var{includes} will be ignored if
 8757: @c the currently selected language is Fortran 77).  This macro also uses
 8758: @c @code{CFLAGS} or @code{CXXFLAGS} if either C or C++ is the currently
 8759: @c selected language, as well as @code{CPPFLAGS}, when compiling.  If
 8760: @c Fortran 77 is the currently selected language then @code{FFLAGS} will be
 8761: @c used when compiling.  However, both @code{LDFLAGS} and @code{LIBS} will
 8762: @c be used during linking in all cases.
 8763: @c 
 8764: CとC++に対しては,@var{includes}は,@var{function-body}のコードが必要と
 8765: する@code{#include}文です(現在選択されている言語がFortran 77の場合は無視
 8766: されます).このマクロは,現在選択されている言語がCやC++の場合,
 8767: @code{CFLAGS}や@code{CXXFLAGS}も使用し,コンパイル時には, 
 8768: @code{CPPFLAGS}も使用します.Fortran 77が現在選択されている言語の場合,
 8769: コンパイル時に@code{FFLAGS}を使用します.しかし,@code{LDFLAGS}と 
 8770: @code{LIBS}は,全ての場合でリンク時に使用します.
 8771: @end defmac
 8772: 
 8773: @defmac AC_TRY_LINK_FUNC (@var{function}, @ovar{action-if-found}, @ovar{action-if-not-found})
 8774: @acindex TRY_LINK_FUNC
 8775: @c Depending on the current language (@pxref{Language Choice}), create a
 8776: @c test program to see whether a program whose body consists of
 8777: @c a prototype of and a call to @var{function} can be compiled and linked.
 8778: @c 
 8779: 現在の言語に依存して(@pxref{Language Choice}),プロトタイプと
 8780: @var{function}の呼び出しを含むプログラムの,コンパイルとリンクが可能かど
 8781: うか判定するために,テストプログラムを作成します.
 8782: 
 8783: @c If the file compiles and links successfully, run shell commands
 8784: @c @var{action-if-found}, otherwise run @var{action-if-not-found}.
 8785: @c 
 8786: ファイルのコンパイルとリンクが成功した場合,シェルコマンドの
 8787: @var{action-if-found}を実行し,それ以外では@var{action-if-not-found}を実
 8788: 行します.
 8789: @end defmac
 8790: 
 8791: 
 8792: 
 8793: @node Run Time
 8794: @c @section Checking Run Time Behavior
 8795: @section 実行時の動作の調査
 8796: 
 8797: @c Sometimes you need to find out how a system performs at run time, such
 8798: @c as whether a given function has a certain capability or bug.  If you
 8799: @c can, make such checks when your program runs instead of when it is
 8800: @c configured.  You can check for things like the machine's endianness when
 8801: @c your program initializes itself.
 8802: @c 
 8803: 関数の能力やバグといった,実行時のシステムの動作を知る必要があるかもしれ
 8804: ません.できれば,コンフィグレーション時ではなくプログラムの実行時に調査
 8805: してください.プログラム自身の初期化時に,マシンのエンディアンの様なもの
 8806: は調査することが可能です.
 8807: 
 8808: @c If you really need to test for a run-time behavior while configuring,
 8809: @c you can write a test program to determine the result, and compile and
 8810: @c run it using @code{AC_TRY_RUN}.  Avoid running test programs if
 8811: @c possible, because this prevents people from configuring your package for
 8812: @c cross-compiling.
 8813: @c 
 8814: コンフィグレーション時に,実行時の動作をテストする必要が本当にある場合,
 8815: 結果を決定し,@code{AC_TRY_RUN}を使用してコンパイルと実行を行なうために,
 8816: テストプログラムを書くことが可能です.クロスコンパイルでパッケージをコン
 8817: フィグレーションする邪魔になるなるので,できれば,テストプログラムの実行
 8818: は避けてください.
 8819: 
 8820: @menu
 8821: * Test Programs::               Running test programs
 8822: * Guidelines::                  General rules for writing test programs
 8823: * Test Functions::              Avoiding pitfalls in test programs
 8824: @end menu
 8825: 
 8826: @node Test Programs
 8827: @c @subsection Running Test Programs
 8828: @subsection テストプログラムの実行
 8829: 
 8830: @c Use the following macro if you need to test run-time behavior of the
 8831: @c system while configuring.
 8832: @c 
 8833: コンフィグレーション時に実行時の動作をテストする必要がある場合,以下のマ
 8834: クロを使用してください.
 8835: 
 8836: @defmac AC_TRY_RUN (@var{program}, @ovar{action-if-true}, @ovar{action-if-false}, @ovar{action-if-cross-compiling})
 8837: @acindex TRY_RUN
 8838: @c If @var{program} compiles and links successfully and returns an exit
 8839: @c status of 0 when executed, run shell commands @var{action-if-true}.
 8840: @c Otherwise, run shell commands @var{action-if-false}.
 8841: @c 
 8842: @var{program}のコンパイルとリンクが成功し,実行時に0の終了ステータスを返
 8843: す場合,シェルコマンド@var{action-if-true}を実行します.それ以外の場合は
 8844: シェルコマンド@var{action-if-false}を実行します.
 8845: 
 8846: @c This macro double quotes @var{program}, the text of a program in the
 8847: @c current language (@pxref{Language Choice}), on which shell variable and
 8848: @c back quote substitutions are performed.  This macro uses @code{CFLAGS}
 8849: @c or @code{CXXFLAGS}, @code{CPPFLAGS}, @code{LDFLAGS}, and @code{LIBS}
 8850: @c when compiling.
 8851: @c 
 8852: このマクロは@var{program}を二重に引用符で囲み,それは現在の言語
 8853: (@pxref{Language Choice})のプログラムのテキストで,シェル変数とバックク
 8854: オートの置換が実行されます.このマクロはコンパイル時に,@code{CFLAGS}や
 8855: @code{CXXFLAGS},@code{CPPFLAGS},@code{LDFLAGS},そして@code{LIBS}を使
 8856: 用します.
 8857: 
 8858: @c If the C compiler being used does not produce executables that run on
 8859: @c the system where @command{configure} is being run, then the test program is
 8860: @c not run.  If the optional shell commands @var{action-if-cross-compiling}
 8861: @c are given, they are run instead.  Otherwise, @command{configure} prints
 8862: @c an error message and exits.
 8863: @c 
 8864: 使用されるCコンパイラが,@command{configure}を実行しているシステムで実行す
 8865: る実行形式を生成しない場合,テストプログラムは実行されません.オプション
 8866: のシェルコマンド@var{action-if-cross-compiling}が与えられる場合,代わり
 8867: に実行されます.それ以外では,@command{configure}はエラーメッセージを出力し
 8868: て終了します.
 8869: 
 8870: @c In the @var{action-if-false} section, the exit status of the program is
 8871: @c available in the shell variable @samp{$?}, but be very careful to limit
 8872: @c yourself to positive values smaller than 127; bigger values should be
 8873: @c saved into a file by the @var{program}.  Note also that you have simply
 8874: @c no guarantee that this exit status is issued by the @var{program}, or by
 8875: @c the failure of its compilation.  In other words, use this feature if
 8876: @c sadist only, it was reestablished because the Autoconf maintainers grew
 8877: @c tired of receiving ``bug reports''.
 8878: @c 
 8879: @var{action-if-false}セクションでは,プログラムの終了ステータスはシェル
 8880: 変数の@samp{$?}で利用可能ですが,127未満の正の値に制限されるように注意し
 8881: てください.より大きい値は@var{program}でファイルに保存すべきです.この
 8882: 終了ステータスが@var{program}やコンパイルの異常終了で発行される保証がな
 8883: いことにも注意してください.言い替えると,苛められるのが好きな人だけこの
 8884: 機能を使用してください.それは,Autoconfの管理者が``バグレポート''の受信
 8885: の増加に飽き飽きしているので元に戻しました.
 8886: @end defmac
 8887: 
 8888: @c Try to provide a pessimistic default value to use when cross-compiling
 8889: @c makes run-time tests impossible.  You do this by passing the optional
 8890: @c last argument to @code{AC_TRY_RUN}.  @command{autoconf} prints a warning
 8891: @c message when creating @command{configure} each time it encounters a call to
 8892: @c @code{AC_TRY_RUN} with no @var{action-if-cross-compiling} argument
 8893: @c given.  You may ignore the warning, though users will not be able to
 8894: @c configure your package for cross-compiling.  A few of the macros
 8895: @c distributed with Autoconf produce this warning message.
 8896: @c 
 8897: クロスコンパイルで実行時のテストが不可能なとき,使用する悲観的なデフォル
 8898: ト値を与えてみてください.@code{AC_TRY_RUN}のオプションの最後の引数で渡
 8899: します.@command{configure}を作成するたびごとに,@code{AC_TRY_RUN}の呼び
 8900: 出しで@var{action-if-cross-compiling}引数が与えられないときは,
 8901: @command{autoconf} は警告メッセージを出力します.警告を無視することもで
 8902: きますが,ユーザは,パッケージのクロスコンパイルのコンフィグレーションが
 8903: できません.Autoconf が配布するマクロには,この警告メッセージを生成する
 8904: ものもあります.
 8905: 
 8906: @c To configure for cross-compiling you can also choose a value for those
 8907: @c parameters based on the canonical system name (@pxref{Manual
 8908: @c Configuration}).  Alternatively, set up a test results cache file with
 8909: @c the correct values for the host system (@pxref{Caching Results}).
 8910: @c 
 8911: クロスコンパイルのコンフィグレーションのため,標準的なシステム名 
 8912: (@pxref{Manual Configuration})に基づくパラメータに対する値を選択すること
 8913: も可能です.代わりに,ホストシステムに対する正しい値で,テスト結果のキャッ
 8914: シュファイルを設定してください(@pxref{Caching Results}).
 8915: 
 8916: @c To provide a default for calls of @code{AC_TRY_RUN} that are embedded in
 8917: @c other macros, including a few of the ones that come with Autoconf, you
 8918: @c can call @code{AC_PROG_CC} before running them.  Then, if the shell
 8919: @c variable @code{cross_compiling} is set to @samp{yes}, use an alternate
 8920: @c method to get the results instead of calling the macros.
 8921: @c 
 8922: Autoconfで提供される2,3のものを含め,@code{AC_TRY_RUN}が埋め込まれて
 8923: いる他のマクロの呼び出しに対してデフォルトを与えるため,実行する前に 
 8924: @code{AC_PROG_CC}を呼び出すことが可能です.シェル変数 
 8925: @code{cross_compiling}が@samp{yes}に設定されている場合,マクロを呼び出す
 8926: 代わりに,結果を得るための代わりの手法を使用します.
 8927: 
 8928: 
 8929: @node Guidelines
 8930: @c @subsection Guidelines for Test Programs
 8931: @subsection テストプログラムのためのガイドライン
 8932: 
 8933: @c Test programs should not write anything to the standard output.  They
 8934: @c should return 0 if the test succeeds, nonzero otherwise, so that success
 8935: @c can be distinguished easily from a core dump or other failure;
 8936: @c segmentation violations and other failures produce a nonzero exit
 8937: @c status.  Test programs should @code{exit}, not @code{return}, from
 8938: @c @code{main}, because on some systems (old Suns, at least) the argument
 8939: @c to @code{return} in @code{main} is ignored.
 8940: @c 
 8941: テストプログラムは,標準出力に何かを書き出すべきではありません.コアダン
 8942: プや他の失敗と簡単に区別できるように,成功した場合は0,それ以外ではゼロ
 8943: 以外を返すべきです.セグメンテーション違反やその他の失敗は,終了ステータ
 8944: スでゼロ以外を生成します.@code{main}内の@code{return}の引数を無視するシ
 8945: ステム(古いSun では少なくとも)もあるので,テストプログラムの@code{main} 
 8946: では@code{return}ではなく@code{exit}を使用するべきです.
 8947: 
 8948: @c Test programs can use @code{#if} or @code{#ifdef} to check the values of
 8949: @c preprocessor macros defined by tests that have already run.  For
 8950: @c example, if you call @code{AC_HEADER_STDC}, then later on in
 8951: @c @file{configure.ac} you can have a test program that includes an
 8952: @c @sc{ansi} C header file conditionally:
 8953: @c 
 8954: 既に実行されたテストで定義されたプリプロセッサの値を調査するため,テスト
 8955: プログラムで@code{#if}や@code{#ifdef}を使用することが可能です.例えば, 
 8956: @code{AC_HEADER_STDC}を呼び出す場合,@file{configure.ac}の後の方で,暫定
 8957: 的にANSI Cヘッダファイルをインクルードするテストプログラムを使用すること
 8958: が可能です.
 8959: 
 8960: @example
 8961: @group
 8962: #if STDC_HEADERS
 8963: # include <stdlib.h>
 8964: #endif
 8965: @end group
 8966: @end example
 8967: 
 8968: @c If a test program needs to use or create a data file, give it a name
 8969: @c that starts with @file{conftest}, such as @file{conftest.data}.  The
 8970: @c @command{configure} script cleans up by running @samp{rm -rf conftest*}
 8971: @c after running test programs and if the script is interrupted.
 8972: @c 
 8973: テストプログラムでデータファイルを使用したり,作成したりする必要がある場
 8974: 合, @file{conftest.data}のような,@file{conftest}で始まる名前を与えてく
 8975: ださい.@command{configure}スクリプトは,テストプログラム終了後やスクリ
 8976: プトが中断された場合,@samp{rm -rf conftest*}を実行しクリーンアップしま
 8977: す.
 8978: 
 8979: @node Test Functions
 8980: @c @subsection Test Functions
 8981: @subsection 関数のテスト
 8982: 
 8983: @c Function declarations in test programs should have a prototype
 8984: @c conditionalized for C++.  In practice, though, test programs rarely need
 8985: @c functions that take arguments.
 8986: @c 
 8987: テストプログラムでの関数宣言には,C++に対する条件付のプロトタイプを持た
 8988: せるべきです.しかし,テストプログラムで引数をとる関数が必要になることは,
 8989: 実際には滅多にありません.
 8990: 
 8991: @example
 8992: #ifdef __cplusplus
 8993: foo (int i)
 8994: #else
 8995: foo (i) int i;
 8996: #endif
 8997: @end example
 8998: 
 8999: @c Functions that test programs declare should also be conditionalized for
 9000: @c C++, which requires @samp{extern "C"} prototypes.  Make sure to not
 9001: @c include any header files containing clashing prototypes.
 9002: @c 
 9003: テストプログラムが宣言する関数には,@samp{extern "C"}プロトタイプを要求
 9004: するC++に対する条件付けも行なうべきです.壊れたプロトタイプを含んでいる
 9005: ヘッダファイルをインクルードしていないことを確かめてください.
 9006: 
 9007: @example
 9008: #ifdef __cplusplus
 9009: extern "C" void *malloc (size_t);
 9010: #else
 9011: char *malloc ();
 9012: #endif
 9013: @end example
 9014: 
 9015: @c If a test program calls a function with invalid parameters (just to see
 9016: @c whether it exists), organize the program to ensure that it never invokes
 9017: @c that function.  You can do this by calling it in another function that is
 9018: @c never invoked.  You can't do it by putting it after a call to
 9019: @c @code{exit}, because GCC version 2 knows that @code{exit} never returns
 9020: @c and optimizes out any code that follows it in the same block.
 9021: @c 
 9022: テストプログラムが(その存在の確認のためにだけ)無効なパラメータで関数を呼
 9023: び出す場合,その関数を決して呼び出さないことを保証するようにプログラムを
 9024: 構成してください.決して呼び出されないそれ以外の他の関数から関数を呼び出
 9025: すことで,こうすることが可能です.GCCバージョン2は,@code{exit}は値を返
 9026: さず,同じブロックにあるそれ以降のコードを最適化で外してしまうことが知ら
 9027: れているので,@code{exit}の呼び出し以降にそれを書き込まないでください.
 9028: 
 9029: @c If you include any header files, be sure to call the functions
 9030: @c relevant to them with the correct number of arguments, even if they are
 9031: @c just 0, to avoid compilation errors due to prototypes.  GCC version 2
 9032: @c has internal prototypes for several functions that it automatically
 9033: @c inlines; for example, @code{memcpy}.  To avoid errors when checking for
 9034: @c them, either pass them the correct number of arguments or redeclare them
 9035: @c with a different return type (such as @code{char}).
 9036: @c 
 9037: ヘッダファイルをインクルードする場合は,たとえ引数が0だけであっても,プ
 9038: ロトタイプで生じるコンパイルエラーを避けるため,正しい数の引数を適切にし
 9039: て関数を呼び出していることを確認してください.GCCのバージョン2は,自動的
 9040: にインライン化される関数プロトタイプ,例えば@code{memcpy}もあります.そ
 9041: れらを調査しているときのエラーを避けるため,正しい数の引数を与えるか,
 9042: (@code{char}のような)異なる戻り値で再定義してください.
 9043: 
 9044: @node Systemology
 9045: @c @section Systemology
 9046: @section システム
 9047: 
 9048: @c This section aims at presenting some systems and pointers to
 9049: @c documentation.  It may help you addressing particular problems reported
 9050: @c by users.
 9051: @c 
 9052: このセクションは,ドキュメントへのシステムとポインタを紹介することを目的
 9053: としています.ユーザが報告する特定の問題を解決するとき役に立つでしょう.
 9054: 
 9055: @c The @href{http://bhami.com/rosetta.html, Rosetta Stone for Unix}
 9056: @c contains a lot of interesting crossed information on various Unices.
 9057: @c 
 9058: @href{http://bhami.com/rosetta.html, Rosetta Stone for Unix}には,様々な
 9059: Unixの興味深い相互的な情報が大量にあります.
 9060: 
 9061: @table @asis
 9062: @item Darwin
 9063: @cindex Darwin
 9064: @c Darwin is also known as Mac OS X.  Beware that the file system @emph{can} be
 9065: @c case-preserving, but case insensitive.  This can cause nasty problems,
 9066: @c since for instance the installation attempt for a package having an
 9067: @c @file{INSTALL} file can result in @samp{make install} report that
 9068: @c nothing was to be done!
 9069: @c 
 9070: DarwinはMac OS Xとしても知られています.ファイルシステムで大文字小文字の
 9071: 違いを保存@emph{可能}ですが,大文字小文字の区別をしないことに注意してく
 9072: ださい.例えば,@file{INSTALL}ファイルがあるパッケージでインストールを試
 9073: みるとき,@samp{make install}で「何もすることが無い!」のような結果が得
 9074: られ,これは厄介な問題になります.
 9075: 
 9076: @c That's all dependent on whether the file system is a UFS (case
 9077: @c sensitive) or HFS+ (case preserving).  By default Apple wants you to
 9078: @c install the OS on HFS+.  Unfortunately, there are some pieces of
 9079: @c software which really need to be built on UFS.  We may want to rebuild
 9080: @c Darwin to have both UFS and HFS+ available (and put the /local/build
 9081: @c tree on the UFS).
 9082: @c 
 9083: それは,ファイルシステムがUFS(大文字小文字を区別する)かHFS+(大文字小文字
 9084: の違いを保存する)かに依存します.デフォルトで,AppleはHFS+にOSをインストー
 9085: ルして欲しがっています.残念ながら,本当にUFSでビルドする必要があるソフ
 9086: トウェアもあります.DarwinをUFSとHFS+の両方で利用可能なように再構築して
 9087: (そして/local/buildのツリーに配置して)欲しいと思います.
 9088: 
 9089: @item @sc{qnx 4.25}
 9090: @cindex @sc{qnx 4.25}
 9091: @c FIXME: Please, if you feel like writing something more precise,
 9092: @c it'd be great.  In particular, I can't understand the difference with
 9093: @c QNX Neutrino.
 9094: @c 
 9095: @c @sc{qnx} is a realtime operating system running on Intel architecture
 9096: @c meant to be scalable from the small embedded systems to the hundred
 9097: @c processor super-computer.  It claims to be @sc{posix} certified.  More
 9098: @c information is available on the @href{www.qnx.com, @sc{qnx} home page},
 9099: @c including the @href{http://support.qnx.com/support/docs/qnx4/, @sc{qnx}
 9100: @c man pages}.
 9101: @c 
 9102: @sc{qnx}は,小さな組み込みシステムから百個のプロセッサを持つスーパーコン
 9103: ピュータまで幅広く利用できる,Intelアーキテクチャまで動作するリアルタイ
 9104: ムオペレーティングシステムです.それは@sc{posix}であることが証明されてい
 9105: ると主張しています.@href{www.qnx.com, @sc{qnx} home page}で,より多くの
 9106: 情報が利用可能で,そこには,
 9107: @href{http://support.qnx.com/support/docs/qnx4/, @sc{qnx} man pages}もあ
 9108: ります.
 9109: 
 9110: @item Tru64
 9111: @cindex Tru64
 9112: @c The @href{http://www.tru64unix.compaq.com/docs/base_doc/DOCUMENTATION/,
 9113: @c documentation of several versions of Tru64} is available in different
 9114: @c formats.
 9115: @c 
 9116: @href{http://www.tru64unix.compaq.com/docs/base_doc/DOCUMENTATION/,
 9117: documentation of several versions of Tru64}では,様々な書式が利用可能で
 9118: す.
 9119: 
 9120: @item Unix version 7
 9121: @cindex Unix version 7
 9122: @cindex V7
 9123: @c Documentation is available in the
 9124: @c @href{http://plan9.bell-labs.com/7thEdMan/index.html, V7 Manual}.
 9125: @c 
 9126: @href{http://plan9.bell-labs.com/7thEdMan/index.html, V7 Manual}でドキュ
 9127: メントは利用可能です.
 9128: @end table
 9129: 
 9130: 
 9131: @node Multiple Cases
 9132: @c @section Multiple Cases
 9133: @section 複数のケース文
 9134: 
 9135: @c Some operations are accomplished in several possible ways, depending on
 9136: @c the @sc{unix} variant.  Checking for them essentially requires a ``case
 9137: @c statement''.  Autoconf does not directly provide one; however, it is
 9138: @c easy to simulate by using a shell variable to keep track of whether a
 9139: @c way to perform the operation has been found yet.
 9140: @c 
 9141: 処理によっては,それぞれ異なる@sc{unix}に依存して,考えられるいくつかの
 9142: 方法で達成されるものもあります.それを本質的に調査するためには,``case 
 9143: 文'' が必要です.Autoconfは直接それを提供していません.しかし,実行する
 9144: 処理が見つかったかどうかの追跡を続けるため,シェル変数を使用することで簡
 9145: 単にシミュレート可能です.
 9146: 
 9147: @c Here is an example that uses the shell variable @code{fstype} to keep
 9148: @c track of whether the remaining cases need to be checked.
 9149: @c 
 9150: 残っているcaseを調査する必要があるかどうかに関係なく追跡を続けるために,
 9151: シェル変数@code{fstype}を使用する例は,以下のようになります.
 9152: 
 9153: @example
 9154: @group
 9155: AC_MSG_CHECKING([how to get file system type])
 9156: fstype=no
 9157: # The order of these tests is important.
 9158: AC_TRY_CPP([#include <sys/statvfs.h>
 9159: #include <sys/fstyp.h>],
 9160:            [AC_DEFINE(FSTYPE_STATVFS) fstype=SVR4])
 9161: if test $fstype = no; then
 9162:   AC_TRY_CPP([#include <sys/statfs.h>
 9163: #include <sys/fstyp.h>],
 9164:              [AC_DEFINE(FSTYPE_USG_STATFS) fstype=SVR3])
 9165: fi
 9166: if test $fstype = no; then
 9167:   AC_TRY_CPP([#include <sys/statfs.h>
 9168: #include <sys/vmount.h>],
 9169:              [AC_DEFINE(FSTYPE_AIX_STATFS) fstype=AIX])
 9170: fi
 9171: # (more cases omitted here)
 9172: AC_MSG_RESULT([$fstype])
 9173: @end group
 9174: @end example
 9175: 
 9176: @node Language Choice
 9177: @c @section Language Choice
 9178: @section 言語の選択
 9179: @cindex Language
 9180: 
 9181: @c Autoconf-generated @command{configure} scripts check for the C compiler and
 9182: @c its features by default.  Packages that use other programming languages
 9183: @c (maybe more than one, e.g., C and C++) need to test features of the
 9184: @c compilers for the respective languages.  The following macros determine
 9185: @c which programming language is used in the subsequent tests in
 9186: @c @file{configure.ac}.
 9187: @c 
 9188: Autoconfが生成した@command{configure}スクリプトは,Cコンパイラとその特徴
 9189: をデフォルトで調査します.他のプログラム言語を使用するパッケージ(一つ以
 9190: 上で,例えば,CとC++)は,それぞれの言語のコンパイラの特徴をテストする必
 9191: 要があります.以下のマクロは@file{configure.ac}内のそれ以降のテストで使
 9192: 用されるプログラミング言語のコンパイラを決定します.
 9193: 
 9194: @defmac AC_LANG (@var{language})
 9195: @c Do compilation tests using the compiler, preprocessor, and file
 9196: @c extensions for the specified @var{language}.
 9197: @c 
 9198: @var{language}で指定されている,コンパイラ,プリプロセッサ,そしてファイ
 9199: ル拡張子をコンパイルテストで使用します.
 9200: 
 9201: @c Supported languages are:
 9202: @c 
 9203: サポートされている言語は以下のとおりです.
 9204: 
 9205: @table @samp
 9206: @item C
 9207: @c Do compilation tests using @code{CC} and @code{CPP} and use extension
 9208: @c @file{.c} for test programs.
 9209: @c 
 9210: @code{CC}と@code{CPP}を使用しコンパイルテストを行ない,テストプログラム
 9211: では@file{.c}の拡張子を使用します.
 9212: 
 9213: @item C++
 9214: @c Do compilation tests using @code{CXX} and @code{CXXCPP} and use
 9215: @c extension @file{.C} for test programs.
 9216: @c 
 9217: @code{CXX}と@code{CXXCPP}を使用しコンパイルテストを行ない,テストプログ
 9218: ラムでは@file{.C}の拡張子を使用します.
 9219: 
 9220: @item Fortran 77
 9221: @c Do compilation tests using @code{F77} and use extension @file{.f} for
 9222: @c test programs.
 9223: @c 
 9224: @code{F77}を使用しコンパイルテストを行ない,テストプログラムでは
 9225: @file{.f}の拡張子を使用します.
 9226: @end table
 9227: @end defmac
 9228: 
 9229: @defmac AC_LANG_PUSH (@var{language})
 9230: @acindex LANG_PUSH
 9231: @c Remember the current language (as set by @code{AC_LANG}) on a stack, and
 9232: @c then select the @var{language}.  Use this macro and @code{AC_LANG_POP}
 9233: @c in macros that need to temporarily switch to a particular language.
 9234: @c 
 9235: 現在の言語を(@code{AC_LANG}に設定するように)スタックに記録し,
 9236: @var{language}を選択します.このマクロと@code{AC_LANG_POP}を,一時的に特
 9237: 定の言語に切替える必要があるマクロで使用してください.
 9238: @end defmac
 9239: 
 9240: @defmac AC_LANG_POP (@ovar{language})
 9241: @acindex LANG_POP
 9242: @c Select the language that is saved on the top of the stack, as set by
 9243: @c @code{AC_LANG_PUSH}, and remove it from the stack.
 9244: @c 
 9245: @code{AC_LANG_PUSH}で設定するように,スタックのトップに保存されている言
 9246: 語に選択し,スタックからそれを削除します.
 9247: 
 9248: @c If given, @var{language} specifies the language we just @emph{quit}.  It
 9249: @c is a good idea to specify it when it's known (which should be the
 9250: @c case@dots{}), since Autoconf will detect inconsistencies.
 9251: @c 
 9252: @var{language}与えられている場合,それは言語を@emph{そのまま}指定します.
 9253: 分かっているときは,Autoconfが間違いを検出するので(case@dots{}にすべきで
 9254: すが),それを指定することは良い考えです.
 9255: 
 9256: @example
 9257: AC_LANG_PUSH(Fortran 77)
 9258: # Perform some tests on Fortran 77.
 9259: # @dots{}
 9260: AC_LANG_POP(Fortran 77)
 9261: @end example
 9262: @end defmac
 9263: 
 9264: @defmac AC_REQUIRE_CPP
 9265: @acindex REQUIRE_CPP
 9266: @c Ensure that whichever preprocessor would currently be used for tests has
 9267: @c been found.  Calls @code{AC_REQUIRE} (@pxref{Prerequisite Macros}) with an
 9268: @c argument of either @code{AC_PROG_CPP} or @code{AC_PROG_CXXCPP},
 9269: @c depending on which language is current.
 9270: @c 
 9271: 現在のテストに使用されるプリプロセッサが見つかることを保証します.現在の
 9272: 言語に依存して,@code{AC_PROG_CPP}や@code{AC_PROG_CXXCPP}のいずれかの引
 9273: 数を用いて,@code{AC_REQUIRE} (@pxref{Prerequisite Macros})を呼び出して
 9274: ください.
 9275: @end defmac
 9276: 
 9277: 
 9278: 
 9279: @c ====================================================== Results of Tests.
 9280: 
 9281: @node Results
 9282: @c @chapter Results of Tests
 9283: @chapter テストの結果
 9284: 
 9285: @c Once @command{configure} has determined whether a feature exists, what can
 9286: @c it do to record that information?  There are four sorts of things it can
 9287: @c do: define a C preprocessor symbol, set a variable in the output files,
 9288: @c save the result in a cache file for future @command{configure} runs, and
 9289: @c print a message letting the user know the result of the test.
 9290: @c 
 9291: 一度@command{configure}で特徴の存在を定義すると,その情報を記録するため
 9292: に何ができるのでしょうか?そうする方法は4種類あります.Cプリプロセッサシ
 9293: ンボルの定義,出力ファイルで変数を設定,@command{configure}実行時のキャッ
 9294: シュファイルに結果を保存,そして,テスト結果をユーザに知らせるメッセージ
 9295: の出力です.
 9296: 
 9297: @menu
 9298: * Defining Symbols::            Defining C preprocessor symbols
 9299: * Setting Output Variables::    Replacing variables in output files
 9300: * Caching Results::             Speeding up subsequent @command{configure} runs
 9301: * Printing Messages::           Notifying @command{configure} users
 9302: @end menu
 9303: 
 9304: @node Defining Symbols
 9305: @c @section Defining C Preprocessor Symbols
 9306: @section Cプリプロセッサシンボルの定義
 9307: 
 9308: @c A common action to take in response to a feature test is to define a C
 9309: @c preprocessor symbol indicating the results of the test.  That is done by
 9310: @c calling @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}.
 9311: @c 
 9312: 特徴テストからの応答を受けとる通常の動作は,テストの結果を示すCプリプロ
 9313: セッサシンボルを定義することです.それは@code{AC_DEFINE}や
 9314: @code{AC_DEFINE_UNQUOTED}と呼ばれるもので行います.
 9315: 
 9316: @c By default, @code{AC_OUTPUT} places the symbols defined by these macros
 9317: @c into the output variable @code{DEFS}, which contains an option
 9318: @c @option{-D@var{symbol}=@var{value}} for each symbol defined.  Unlike in
 9319: @c Autoconf version 1, there is no variable @code{DEFS} defined while
 9320: @c @command{configure} is running.  To check whether Autoconf macros have
 9321: @c already defined a certain C preprocessor symbol, test the value of the
 9322: @c appropriate cache variable, as in this example:
 9323: @c 
 9324: デフォルトで,@code{AC_OUTPUT}はマクロが定義したシンボルを,出力変数 
 9325: @code{DEFS}に配置し,それはそれぞれのシンボルに対する
 9326: @option{-D@var{symbol}=@var{value}}を含んでいます.Autoconfバージョン1と
 9327: 異なり,@command{configure}が実行中に定義する変数@code{DEFS}はありません.
 9328: Autoconfマクロが,あるCプリプロセッサシンボルを既に定義しているかどうか
 9329: 調査するため,以下の例のように,適切なキャッシュ変数の値をテストしてくだ
 9330: さい.
 9331: 
 9332: @example
 9333: AC_CHECK_FUNC(vprintf, [AC_DEFINE(HAVE_VPRINTF)])
 9334: if test "$ac_cv_func_vprintf" != yes; then
 9335:   AC_CHECK_FUNC(_doprnt, [AC_DEFINE(HAVE_DOPRNT)])
 9336: fi
 9337: @end example
 9338: 
 9339: @c If @code{AC_CONFIG_HEADERS} has been called, then instead of creating
 9340: @c @code{DEFS}, @code{AC_OUTPUT} creates a header file by substituting the
 9341: @c correct values into @code{#define} statements in a template file.
 9342: @c @xref{Configuration Headers}, for more information about this kind of
 9343: @c output.
 9344: @c 
 9345: @code{AC_CONFIG_HEADERS}が呼び出された場合,@code{DEFS}を作成する代わり
 9346: に,@code{AC_OUTPUT}でテンプレートファイルに@code{#define}文で正しい値を
 9347: 代入したヘッダファイルを作成します.この種類の出力の詳細は,
 9348: @xref{Configuration Headers}.
 9349: 
 9350: @defmac AC_DEFINE (@var{variable}, @var{value}, @ovar{description})
 9351: @defmacx AC_DEFINE (@var{variable})
 9352: @acindex DEFINE
 9353: @c Define the C preprocessor variable @var{variable} to @var{value} (verbatim).
 9354: @c @var{value} should not contain literal newlines, and if you are not
 9355: @c using @code{AC_CONFIG_HEADERS} it should not contain any @samp{#}
 9356: @c characters, as @command{make} tends to eat them.  To use a shell variable
 9357: @c (which you need to do in order to define a value containing the M4 quote
 9358: @c characters @samp{[} or @samp{]}), use @code{AC_DEFINE_UNQUOTED} instead.
 9359: @c @var{description} is only useful if you are using
 9360: @c @code{AC_CONFIG_HEADERS}.  In this case, @var{description} is put into
 9361: @c the generated @file{config.h.in} as the comment before the macro define.
 9362: @c The following example defines the C preprocessor variable
 9363: @c @code{EQUATION} to be the string constant @samp{"$a > $b"}:
 9364: @c 
 9365: Cプリプロセッサ変数@var{variable}を@var{value}に(そのまま)定義します.
 9366: @var{value}は改行のリテラルを含むべきではなく, @code{AC_CONFIG_HEADERS} 
 9367: を使用しない場合,@command{make}が処理してしまうので,@samp{#}文字を含め
 9368: るべきではありません.シェル変数(M4の引用符文字@samp{[}や@samp{]}を含む
 9369: 定義値が必要なもの)を使用するために,代わりに@code{AC_DEFINE_UNQUOTED}を
 9370: 使用してください.@var{description}は, @code{AC_CONFIG_HEADER}を使用す
 9371: る場合だけ役に立ちます.この場合, @var{description}は,生成された
 9372: @file{config.h.in}に,マクロ定義前のコメントとして書き込まれます.以下の
 9373: 例は,Cプリプロセッサ変数@code{EQUATION} を文字定数@samp{"$a > $b"}と定
 9374: 義します.
 9375: 
 9376: @example
 9377: AC_DEFINE(EQUATION, "$a > $b")
 9378: @end example
 9379: 
 9380: @c If neither @var{value} nor @var{description} are given, then
 9381: @c @var{value} defaults to 1 instead of to the empty string.  This is for
 9382: @c backwards compatibility with older versions of Autoconf, but this usage
 9383: @c is obsolescent and may be withdrawn in future versions of Autoconf.
 9384: @c 
 9385: @var{value}も@var{description}も与えられていない場合,@var{value}のデフォ
 9386: ルトは空の文字列ではなく1になります.これは古いバージョンのAutoconfの下
 9387: 位互換性のためですが,この使用方法は時代遅れで,Autoconfの将来のバージョ
 9388: ンでは無くなるかもしれません.
 9389: @end defmac
 9390: 
 9391: @defmac AC_DEFINE_UNQUOTED (@var{variable}, @var{value}, @ovar{description})
 9392: @defmacx AC_DEFINE_UNQUOTED (@var{variable})
 9393: @acindex DEFINE_UNQUOTED
 9394: @c Like @code{AC_DEFINE}, but three shell expansions are
 9395: @c performed---once---on @var{variable} and @var{value}: variable expansion
 9396: @c (@samp{$}), command substitution (@samp{`}), and backslash escaping
 9397: @c (@samp{\}).  Single and double quote characters in the value have no
 9398: @c special meaning.  Use this macro instead of @code{AC_DEFINE} when
 9399: @c @var{variable} or @var{value} is a shell variable.  Examples:
 9400: @c 
 9401: @code{AC_DEFINE}に似ていますが,@var{variable}と@var{value}で,三つのシェ
 9402: ル展開が --- 一度に --- 実行されます.変数の展開(@samp{$}),コマンドの置
 9403: 換(@samp{`}),そしてバックスラッシュエスケープ(@samp{\})です.値の中のシ
 9404: ングルクオートとダブルクオートの文字列,特別な意味を持ちません.
 9405: @var{variable}や @var{value}がシェル変数のときは,@code{AC_DEFINE}の代わ
 9406: りにこのマクロを使用してください.以下がその例です.
 9407: 
 9408: @example
 9409: AC_DEFINE_UNQUOTED(config_machfile, "$machfile")
 9410: AC_DEFINE_UNQUOTED(GETGROUPS_T, $ac_cv_type_getgroups)
 9411: AC_DEFINE_UNQUOTED($ac_tr_hdr)
 9412: @end example
 9413: @end defmac
 9414: 
 9415: @c Due to a syntactical bizarreness of the Bourne shell, do not use
 9416: @c semicolons to separate @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}
 9417: @c calls from other macro calls or shell code; that can cause syntax errors
 9418: @c in the resulting @command{configure} script.  Use either spaces or
 9419: @c newlines.  That is, do this:
 9420: @c 
 9421: Bourneシェルの構文の特異性のため,他のマクロから呼び出しやシェルコードと
 9422: @code{AC_DEFINE}や@code{AC_DEFINE_UNQUOTED}を分けるため,セミコロンを使
 9423: 用しないでください.そうすると,@command{configure}スクリプトの結果とし
 9424: て構文エラーの原因となります.以下のようにします.
 9425: 
 9426: @example
 9427: AC_CHECK_HEADER(elf.h, [AC_DEFINE(SVR4) LIBS="$LIBS -lelf"])
 9428: @end example
 9429: 
 9430: @noindent
 9431: @c or this:
 9432: @c 
 9433: あるいは以下のようにします.
 9434: 
 9435: @example
 9436: AC_CHECK_HEADER(elf.h,
 9437:  [AC_DEFINE(SVR4)
 9438:   LIBS="$LIBS -lelf"])
 9439: @end example
 9440: 
 9441: @noindent
 9442: @c instead of this:
 9443: @c 
 9444: それらは以下の代わりのものです.
 9445: 
 9446: @example
 9447: AC_CHECK_HEADER(elf.h, [AC_DEFINE(SVR4); LIBS="$LIBS -lelf"])
 9448: @end example
 9449: 
 9450: @node Setting Output Variables
 9451: @c @section Setting Output Variables
 9452: @section 出力変数の設定
 9453: 
 9454: @c Another way to record the results of tests is to set @dfn{output
 9455: @c variables}, which are shell variables whose values are substituted into
 9456: @c files that @command{configure} outputs.  The two macros below create new
 9457: @c output variables.  @xref{Preset Output Variables}, for a list of output
 9458: @c variables that are always available.
 9459: @c 
 9460: テストの結果を記録するもう一つの方法は,@dfn{出力変数}を設定することで,
 9461: それは,@command{configure}が出力したファイルの中に,シェル変数の値を代
 9462: 入することです.以下の2つのマクロで新しい出力変数を作ります.利用可能な
 9463: 出力変数のリストは,@xref{Preset Output Variables}.
 9464: 
 9465: @defmac AC_SUBST (@var{variable}, @ovar{value})
 9466: @acindex SUBST
 9467: @c Create an output variable from a shell variable.  Make @code{AC_OUTPUT}
 9468: @c substitute the variable @var{variable} into output files (typically one
 9469: @c or more @file{Makefile}s).  This means that @code{AC_OUTPUT} will
 9470: @c replace instances of @samp{@@@var{variable}@@} in input files with the
 9471: @c value that the shell variable @var{variable} has when @code{AC_OUTPUT}
 9472: @c is called.  This value of @var{variable} should not contain literal
 9473: @c newlines.
 9474: @c 
 9475: シェル変数から出力変数を作成します.@code{AC_OUTPUT}は,出力ファイルの変
 9476: 数@var{variable}に代入します(通常,一つ以上の@file{Makefile}です).これ
 9477: は,@code{AC_OUTPUT}が呼び出されたとき,入力ファイルの
 9478: @samp{@@@var{variable}@@}のインスタンスをシェル変数@var{variable}が持つ
 9479: 値で@code{AC_OUTPUT}が置換することを意味します.@var{variable}のこの値は
 9480: 改行のリテラルを含むべきではありません.
 9481: 
 9482: @c If @var{value} is given, in addition assign it to @var{variable}.
 9483: @c 
 9484: @var{value}が与えられている場合,さらにそれも@var{variable}に渡されます.
 9485: @end defmac
 9486: 
 9487: @defmac AC_SUBST_FILE (@var{variable})
 9488: @acindex SUBST_FILE
 9489: @c Another way to create an output variable from a shell variable.  Make
 9490: @c @code{AC_OUTPUT} insert (without substitutions) the contents of the file
 9491: @c named by shell variable @var{variable} into output files.  This means
 9492: @c that @code{AC_OUTPUT} will replace instances of
 9493: @c @samp{@@@var{variable}@@} in output files (such as @file{Makefile.in})
 9494: @c with the contents of the file that the shell variable @var{variable}
 9495: @c names when @code{AC_OUTPUT} is called.  Set the variable to
 9496: @c @file{/dev/null} for cases that do not have a file to insert.
 9497: @c 
 9498: シェル変数から出力ファイルを作成するもう一つの方法です.@code{AC_OUTPUT} 
 9499: で,シェル変数@var{variable}で名付けられたファイルの内容を出力ファイルに
 9500: 挿入します(代入ではありません).これは,@code{AC_OUTPUT}が呼び出されたと
 9501: き,シェル変数@var{variable}の名前のファイルの内容で,
 9502: (@file{Makefile.in})のような出力ファイルの@samp{@@@var{variable}@@}のイ
 9503: ンスタンスを,@code{AC_OUTPUT}が置換することを意味します.挿入するファイ
 9504: ルがない場合には,変数@file{/dev/null}に設定します.
 9505: 
 9506: @c This macro is useful for inserting @file{Makefile} fragments containing
 9507: @c special dependencies or other @code{make} directives for particular host
 9508: @c or target types into @file{Makefile}s.  For example, @file{configure.ac}
 9509: @c could contain:
 9510: @c 
 9511: このマクロは,@file{Makefile}に特別な依存を含むフラグを挿入したり,特定
 9512: のホストやターゲットのための@code{make}ディレクティブを@file{Makefile} 
 9513: に挿入するとき役に立ちます.例えば,@file{configure.ac}に以下を含ませま
 9514: す.
 9515: 
 9516: @example
 9517: AC_SUBST_FILE(host_frag)
 9518: host_frag=$srcdir/conf/sun4.mh
 9519: @end example
 9520: 
 9521: @noindent
 9522: @c and then a @file{Makefile.in} could contain:
 9523: @c 
 9524: そして@file{Makefile.in}に以下を含ませます.
 9525: 
 9526: @example
 9527: @@host_frag@@
 9528: @end example
 9529: @end defmac
 9530: 
 9531: @cindex Previous Variable
 9532: @cindex Variable, Precious
 9533: @c Running @command{configure} in varying environments can be extremely
 9534: @c dangerous.  If for instance the user runs @samp{CC=bizarre-cc
 9535: @c ./configure}, then the cache, @file{config.h}, and many other output
 9536: @c files will depend upon @command{bizarre-cc} being the C compiler.  If
 9537: @c for some reason the user runs @command{./configure} again, or if it is
 9538: @c run via @samp{./config.status --recheck}, (@xref{Automatic Remaking},
 9539: @c and @pxref{config.status Invocation}), then the configuration can be
 9540: @c inconsistent, composed of results depending upon two different
 9541: @c compilers.
 9542: @c 
 9543: 異なる環境変数で@command{configure}を実行することは非常に危険です.例え
 9544: ば,ユーザが@samp{CC=bizarre-cc ./configure}を実行した場合,キャッシュ,
 9545: @file{config.h},そして多くの出力ファイルは,Cコンパイラが
 9546: @command{bizarre-cc}だということに依存します.理由があって,ユーザが再び
 9547: @command{./configure}を実行した場合や,@samp{./config.status --recheck} 
 9548: でそれが実行される場合(@xref{Automatic Remaking}.  @pxref{config.status
 9549: Invocation}),コンフィグレーションは矛盾し,二つの異なるコンパイラに依存
 9550: した結果で構成されます.
 9551: 
 9552: @c Environment variables that affect this situation, such as @samp{CC}
 9553: @c above, are called @dfn{precious variables}, and can be declared as such
 9554: @c by @code{AC_ARG_VAR}.
 9555: @c 
 9556: 上記の@samp{CC}のように,この状況に影響する環境変数は@dfn{貴重な変数
 9557: (precious variables)}と命名されていて,@code{AC_ARG_VAR}のようなもので宣
 9558: 言することが可能です.
 9559: 
 9560: @defmac AC_ARG_VAR (@var{variable}, @var{description})
 9561: @acindex ARG_VAR
 9562: @c Declare @var{variable} is a precious variable, and include its
 9563: @c @var{description} in the variable section of @samp{./configure --help}.
 9564: @c 
 9565: @var{variable}を貴重な変数として宣言し,@samp{./configure --help}の可変
 9566: 部分にその@var{description}を含めます.
 9567: 
 9568: @c Being precious means that
 9569: @c 
 9570: 貴重とは,以下のことを意味します.
 9571: @itemize @minus
 9572: @item
 9573: @c @var{variable} is @code{AC_SUBST}'d.
 9574: @c 
 9575: @code{AC_SUBST}される@var{variable}.
 9576: 
 9577: @item
 9578: @c The value of @var{variable} when @command{configure} was launched is
 9579: @c saved in the cache, including if it was not specified on the command
 9580: @c line but via the environment.  Indeed, while @command{configure} can
 9581: @c notice the definition of @code{CC} in @samp{./configure CC=bizarre-cc},
 9582: @c it is impossible to notice it in @samp{CC=bizarre-cc ./configure},
 9583: @c which, unfortunately, is what most users do.
 9584: @c 
 9585: @command{configure}が開始されたとき,@var{variable}の値は,コマンドライ
 9586: ンで指定されておらず環境変数で指定されている場合も含めて,キャッシュに保
 9587: 存されません.実際,@command{configure}は@samp{./configure
 9588: CC=bizarre-cc}の@code{CC}の定義に注目できますが,@samp{CC=bizarre-cc
 9589: ./configure}のものには注意できません.そして,残念ながらほとんどのユーザ
 9590: がそうしています.
 9591: 
 9592: @c We emphasize that it is the @emph{initial} value of @var{variable} which
 9593: @c is saved, not that found during the execution of @command{configure}.
 9594: @c Indeed, specifying @samp{./configure FOO=foo} and letting
 9595: @c @samp{./configure} guess that @code{FOO} is @code{foo} can be two very
 9596: @c different runs.
 9597: @c 
 9598: それは,保存される@var{variable}の@emph{初期}値ですが,
 9599: @command{configure}の実行中は見つからないことを強調しておきます.実際,
 9600: @samp{./configure FOO=foo}と指定することと,@samp{./configure}に
 9601: @code{FOO}が@code{foo}だと分からせることは,かなり違った結果になるはずで
 9602: す.
 9603: 
 9604: @item
 9605: @c @var{variable} is checked for consistency between two
 9606: @c @command{configure} runs.  For instance:
 9607: @c 
 9608: @var{variable}は二回の@command{configure}の実行の間の整合性を調査されま
 9609: す.例えば,以下のようにします.
 9610: 
 9611: @example
 9612: $ @kbd{./configure --silent --config-cache}
 9613: $ @kbd{CC=cc ./configure --silent --config-cache}
 9614: configure: error: `CC' was not set in the previous run
 9615: configure: error: changes in the environment can compromise \
 9616: the build
 9617: configure: error: run `make distclean' and/or \
 9618: `rm config.cache' and start over
 9619: @end example
 9620: 
 9621: @noindent
 9622: @c and similarly if the variable is unset, or if its content is changed.
 9623: @c 
 9624: そして,それは変数を未設定にする場合や,その内容が変更される場合も似たよ
 9625: うなものです.
 9626: 
 9627: @item
 9628: @c @var{variable} is kept during automatic reconfiguration
 9629: @c (@pxref{config.status Invocation}) as if it had been passed as a command
 9630: @c line argument, including when no cache is used:
 9631: @c 
 9632: @var{variable}は,自動的な再コンフィグレーションの間,コマンド引数として
 9633: 渡されているかのように保存され,キャッシュを使用していないときもそうなり
 9634: ます.
 9635: 
 9636: @example
 9637: $ @kbd{CC=/usr/bin/cc ./configure undeclared_var=raboof --silent}
 9638: $ @kbd{./config.status --recheck}
 9639: running /bin/sh ./configure undeclared_var=raboof --silent \
 9640:   CC=/usr/bin/cc  --no-create --no-recursion
 9641: @end example
 9642: @end itemize
 9643: @end defmac
 9644: 
 9645: 
 9646: @node Caching Results
 9647: @c @section Caching Results
 9648: @section 結果のキャッシュ
 9649: @cindex Cache
 9650: 
 9651: @c To avoid checking for the same features repeatedly in various
 9652: @c @command{configure} scripts (or in repeated runs of one script),
 9653: @c @command{configure} can optionally save the results of many checks in a
 9654: @c @dfn{cache file} (@pxref{Cache Files}).  If a @command{configure} script
 9655: @c runs with caching enabled and finds a cache file, it reads the results
 9656: @c of previous runs from the cache and avoids rerunning those checks.  As a
 9657: @c result, @command{configure} can then run much faster than if it had to
 9658: @c perform all of the checks every time.
 9659: @c 
 9660: 様々な@command{configure}スクリプトで,同じ特徴を繰り返し調査する(あるい
 9661: は何度も一つのスクリプトを実行する)ことを避けるため,@command{configure} 
 9662: は,多くの調査結果を@dfn{キャッシュファイル}に保存します(@pxref{Cache
 9663: Files}).キャッシュ可能な状態で@command{configure}スクリプトを実行してい
 9664: てキャッシュファイルが見つかった場合,前回の実行結果をキャッシュから読み
 9665: 込み,これらの調査の再実行を避けます.結果として,@command{configure}は,
 9666: 毎回全ての調査を実行するより早くなります.
 9667: 
 9668: @defmac AC_CACHE_VAL (@var{cache-id}, @var{commands-to-set-it})
 9669: @acindex CACHE_VAL
 9670: @c Ensure that the results of the check identified by @var{cache-id} are
 9671: @c available.  If the results of the check were in the cache file that was
 9672: @c read, and @command{configure} was not given the @option{--quiet} or
 9673: @c @option{--silent} option, print a message saying that the result was
 9674: @c cached; otherwise, run the shell commands @var{commands-to-set-it}.  If
 9675: @c the shell commands are run to determine the value, the value will be
 9676: @c saved in the cache file just before @command{configure} creates its output
 9677: @c files.  @xref{Cache Variable Names}, for how to choose the name of the
 9678: @c @var{cache-id} variable.
 9679: @c 
 9680: @var{cache-id}で識別した調査結果が,利用可能だということを保証します.調
 9681: 査結果が読み込まれたキャッシュファイルにあり,@command{configure}に, 
 9682: @samp{--quiet}や@samp{--silent}オプションが与えられていない場合,結果が
 9683: キャッシュされていることを示すメッセージを出力します.それ以外では,シェ
 9684: ルコマンド@var{commands-to-set-it}を実行します.シェルコマンドを値を決定
 9685: するために実行する場合,@command{configure}が出力ファイルを作成する直前
 9686: に,値をキャッシュファイルに保存します.@var{cache-id}変数の名前を選択す
 9687: る方法は,@xref{Cache Variable Names}.
 9688: 
 9689: @c The @var{commands-to-set-it} @emph{must have no side effects} except for
 9690: @c setting the variable @var{cache-id}, see below.
 9691: @c 
 9692: @var{commands-to-set-it}は,設定された変数@var{cache-id}以外に@emph{副作
 9693: 用がないはずです}.以下を参照してください.
 9694: @end defmac
 9695: 
 9696: @defmac AC_CACHE_CHECK (@var{message}, @var{cache-id}, @var{commands-to-set-it})
 9697: @acindex CACHE_CHECK
 9698: @c A wrapper for @code{AC_CACHE_VAL} that takes care of printing the
 9699: @c messages.  This macro provides a convenient shorthand for the most
 9700: @c common way to use these macros.  It calls @code{AC_MSG_CHECKING} for
 9701: @c @var{message}, then @code{AC_CACHE_VAL} with the @var{cache-id} and
 9702: @c @var{commands} arguments, and @code{AC_MSG_RESULT} with @var{cache-id}.
 9703: @c 
 9704: メッセージ出力に注意が必要な@code{AC_CACHE_VAL}のラッパーです.このマク
 9705: ロは,これらのマクロを使用する最も一般的な方法に対して,便利な略記法を提
 9706: 供します.それは,@var{message}に対して@code{AC_MSG_CHECKING}を呼び出し,
 9707: その後で,@var{cache-id}と@var{commands}引数を伴う@code{AC_CACHE_VAL}と,
 9708: @var{cache-id}を伴う@code{AC_MSG_RESULT}を呼び出します.
 9709: 
 9710: @c The @var{commands-to-set-it} @emph{must have no side effects} except for
 9711: @c setting the variable @var{cache-id}, see below.
 9712: @c 
 9713: @var{commands-to-set-it}は,設定された変数@var{cache-id}以外に@emph{副作
 9714: 用がないはずです}.以下を参照してください.
 9715: @end defmac
 9716: 
 9717: @c It is very common to find buggy macros using @code{AC_CACHE_VAL} or
 9718: @c @code{AC_CACHE_CHECK}, because people are tempted to call
 9719: @c @code{AC_DEFINE} in the @var{commands-to-set-it}.  Instead, the code that
 9720: @c @emph{follows} the call to @code{AC_CACHE_VAL} should call
 9721: @c @code{AC_DEFINE}, by examining the value of the cache variable.  For
 9722: @c instance, the following macro is broken:
 9723: @c 
 9724: @var{commands-to-set-it}で@code{AC_DEFINE}の呼び出しを試みるため,
 9725: @code{AC_CACHE_VAL}や@code{AC_CACHE_CHECK}を使用しているバグの多いマクロ
 9726: を発見することはよくあります.その代わりに,@code{AC_CACHE_VAL}を呼び出
 9727: している@emph{以下の}ようなコードでは,キャッシュ変数の値を調べることで,
 9728: @code{AC_DEFINE}を呼び出すべきです.例えば,以下のマクロは駄目です.
 9729: 
 9730: @example
 9731: @group
 9732: AC_DEFUN([AC_SHELL_TRUE],
 9733: [AC_CACHE_CHECK([whether true(1) works], [ac_cv_shell_true_works],
 9734:                 [ac_cv_shell_true_works=no
 9735:                  true && ac_cv_shell_true_works=yes
 9736:                  if test $ac_cv_shell_true_works = yes; then
 9737:                    AC_DEFINE([TRUE_WORKS], 1
 9738:                              [Define if `true(1)' works properly.])
 9739:                  fi])
 9740: ])
 9741: @end group
 9742: @end example
 9743: 
 9744: @noindent
 9745: @c This fails if the cache is enabled: the second time this macro is run,
 9746: @c @code{TRUE_WORKS} @emph{will not be defined}.  The proper implementation
 9747: @c is:
 9748: @c 
 9749: これは,キャッシュが利用可能な場合,失敗します.このマクロの2回目の実行
 9750: で,@code{TRUE_WORKS}は@emph{定義されていないでしょう}.適切な実装は以下
 9751: のようになります.
 9752: 
 9753: @example
 9754: @group
 9755: AC_DEFUN([AC_SHELL_TRUE],
 9756: [AC_CACHE_CHECK([whether true(1) works], [ac_cv_shell_true_works],
 9757:                 [ac_cv_shell_true_works=no
 9758:                  true && ac_cv_shell_true_works=yes])
 9759:  if test $ac_cv_shell_true_works = yes; then
 9760:    AC_DEFINE([TRUE_WORKS], 1
 9761:              [Define if `true(1)' works properly.])
 9762:  fi
 9763: ])
 9764: @end group
 9765: @end example
 9766: 
 9767: @c Also, @var{commands-to-set-it} should not print any messages, for
 9768: @c example with @code{AC_MSG_CHECKING}; do that before calling
 9769: @c @code{AC_CACHE_VAL}, so the messages are printed regardless of whether
 9770: @c the results of the check are retrieved from the cache or determined by
 9771: @c running the shell commands.
 9772: @c 
 9773: また,@var{commands-to-set-it}では,例えば@code{AC_MSG_CHECKING}を用いて
 9774: メッセージを出力すべきではありません.調査の結果がキャッシュから取り出さ
 9775: れるか,シェルコマンドの実行で決定されるかに依存せずメッセージが出力され
 9776: るので,@code{AC_CACHE_VAL}の呼び出しの前にしてください.
 9777: 
 9778: @menu
 9779: * Cache Variable Names::        Shell variables used in caches
 9780: * Cache Files::                 Files @command{configure} uses for caching
 9781: * Cache Checkpointing::         Loading and saving the cache file
 9782: @end menu
 9783: 
 9784: @node Cache Variable Names
 9785: @c @subsection Cache Variable Names
 9786: @subsection キャッシュ変数名
 9787: @cindex Cache variable
 9788: 
 9789: @c The names of cache variables should have the following format:
 9790: @c 
 9791: キャッシュ変数の名前は以下の書式にすべきです.
 9792: 
 9793: @example
 9794: @var{package-prefix}_cv_@var{value-type}_@var{specific-value}_@ovar{additional-options}
 9795: @end example
 9796: 
 9797: @noindent
 9798: @c for example, @samp{ac_cv_header_stat_broken} or
 9799: @c @samp{ac_cv_prog_gcc_traditional}.  The parts of the variable name are:
 9800: @c 
 9801: 例えば,@samp{ac_cv_header_stat_broken}や
 9802: @samp{ac_cv_prog_gcc_traditional}です.変数名の一部は以下のようにします.
 9803: 
 9804: @table @asis
 9805: @item @var{package-prefix}
 9806: @c An abbreviation for your package or organization; the same prefix you
 9807: @c begin local Autoconf macros with, except lowercase by convention.
 9808: @c For cache values used by the distributed Autoconf macros, this value is
 9809: @c @samp{ac}.
 9810: @c 
 9811: パッケージや組織の省略です.小文字の慣習以外は,ローカルなAutoconfマクロ
 9812: と同じプレフィクスで開始します.配布されているAutoconfマクロで使用される
 9813: キャッシュ値に対して,この値は@samp{ac}になっています.
 9814: 
 9815: @item @code{_cv_}
 9816: @c Indicates that this shell variable is a cache value.  This string
 9817: @c @emph{must} be present in the variable name, including the leading
 9818: @c underscore.
 9819: @c 
 9820: シェル変数がキャッシュ値であることを示します.この文字列は,前置されるア
 9821: ンダースコアを含め,変数名に存在する@emph{必要があります}.
 9822: 
 9823: @item @var{value-type}
 9824: @c A convention for classifying cache values, to produce a rational naming
 9825: @c system.  The values used in Autoconf are listed in @ref{Macro Names}.
 9826: @c 
 9827: 合理的な命名システムを生成するため,キャッシュ値の分類のための慣習です.
 9828: Autoconfで使用する値は,@ref{Macro Names}にリストがあります.
 9829: 
 9830: @item @var{specific-value}
 9831: @c Which member of the class of cache values this test applies to.
 9832: @c For example, which function (@samp{alloca}), program (@samp{gcc}), or
 9833: @c output variable (@samp{INSTALL}).
 9834: @c 
 9835: このテストが適応しているキャッシュ値のクラスのメンバーです.例えば,関数
 9836: (@samp{alloca}),プログラム(@samp{gcc}),または,出力変数
 9837: (@samp{INSTALL})です.
 9838: 
 9839: @item @var{additional-options}
 9840: @c Any particular behavior of the specific member that this test applies to.
 9841: @c For example, @samp{broken} or @samp{set}.  This part of the name may
 9842: @c be omitted if it does not apply.
 9843: @c 
 9844: このテストが適応している特定のメンバーの特定の動作です.例えば,
 9845: @samp{broken}や@samp{set}です.適応されない場合,名前のこの部分は省略さ
 9846: れます.
 9847: @end table
 9848: 
 9849: @c The values assigned to cache variables may not contain newlines.
 9850: @c Usually, their values will be Boolean (@samp{yes} or @samp{no}) or the
 9851: @c names of files or functions; so this is not an important restriction.
 9852: @c 
 9853: キャッシュ変数に割り当てられた値には,改行を含めてはなりません.通常,そ
 9854: れらの値は真偽値(@samp{yes}や@samp{no}),あるいはファイルや関数の名前で
 9855: す.そのため,これは重要な制限ではありません.
 9856: 
 9857: @node Cache Files
 9858: @c @subsection Cache Files
 9859: @subsection キャッシュファイル
 9860: 
 9861: @c A cache file is a shell script that caches the results of configure
 9862: @c tests run on one system so they can be shared between configure scripts
 9863: @c and configure runs.  It is not useful on other systems.  If its contents
 9864: @c are invalid for some reason, the user may delete or edit it.
 9865: @c 
 9866: キャッシュファイルは,コンフィグレーションスクリプトとコンフィグレーショ
 9867: ンの実行の間で結果を共有できるように,一つのシステムでコンフィグレーショ
 9868: ンテストの結果をキャッシュしているシェルスクリプトです.他のシステムでは
 9869: 役に立ちません.その内容が,理由があって無効になる場合,ユーザは削除した
 9870: り編集したりしてもかまいません.
 9871: 
 9872: @c By default, @command{configure} uses no cache file (technically, it uses
 9873: @c @option{--cache-file=/dev/null}), to avoid problems caused by accidental
 9874: @c use of stale cache files.
 9875: @c 
 9876: デフォルトでは,古いキャッシュファイルの使用で偶然生じる問題を避けるため,
 9877: @command{configure}はキャッシュファイルを使用しません(技術的には,
 9878: @option{--cache-file=/dev/null}を使用します).
 9879: 
 9880: @c To enable caching, @command{configure} accepts @option{--config-cache} (or
 9881: @c @option{-C}) to cache results in the file @file{config.cache}.
 9882: @c Alternatively, @option{--cache-file=@var{file}} specifies that
 9883: @c @var{file} be the cache file.  The cache file is created if it does not
 9884: @c exist already.  When @command{configure} calls @command{configure} scripts in
 9885: @c subdirectories, it uses the @option{--cache-file} argument so that they
 9886: @c share the same cache.  @xref{Subdirectories}, for information on
 9887: @c configuring subdirectories with the @code{AC_CONFIG_SUBDIRS} macro.
 9888: @c 
 9889: キャッシュを利用可能にするために,@command{configure}は結果をファイル
 9890: @file{config.cache}にキャッシュする@option{--config-cache}(または,
 9891: @option{-C})を受け入れます.代わり方法として,
 9892: @option{--cache-file=@var{file}}でキャッシュファイルにする@var{file}を指
 9893: 定します.@command{configure}がサブディレクトリの@command{configure}スク
 9894: リプトを呼び出すとき,同じキャッシュファイルを共有するように,
 9895: @option{--cache-file}引数を使用します.@code{AC_CONFIG_SUBDIRS}マクロを
 9896: 用いてサブディレクトリでコンフィグレーションすることの情報は,
 9897: @xref{Subdirectories}.
 9898: 
 9899: @c @file{config.status} only pays attention to the cache file if it is
 9900: @c given the @option{--recheck} option, which makes it rerun
 9901: @c @command{configure}.
 9902: @c 
 9903: @file{config.status}は,@command{configure}を再実行する
 9904: @option{--recheck}オプションが与えられている場合のみ,キャッシュファイル
 9905: に注意を払います.
 9906: 
 9907: @c It is wrong to try to distribute cache files for particular system types.
 9908: @c There is too much room for error in doing that, and too much
 9909: @c administrative overhead in maintaining them.  For any features that
 9910: @c can't be guessed automatically, use the standard method of the canonical
 9911: @c system type and linking files (@pxref{Manual Configuration}).
 9912: @c 
 9913: 特定のシステム形式に対してキャッシュファイルを配布しようとすることは間違
 9914: いです.そうすることによるエラーに対する場所が非常に多くなり,メンテナン
 9915: ス時の管理上のオーバーヘッドが非常に多くなります.自動的に推測できない特
 9916: 徴に対して,標準的なシステムの形式とリンクファイルの標準的な方法を使用し
 9917: てください (@pxref{Manual Configuration}).
 9918: 
 9919: @c The site initialization script can specify a site-wide cache file to
 9920: @c use, instead of the usual per-program cache.  In this case, the cache
 9921: @c file will gradually accumulate information whenever someone runs a new
 9922: @c @command{configure} script.  (Running @command{configure} merges the new cache
 9923: @c results with the existing cache file.)  This may cause problems,
 9924: @c however, if the system configuration (e.g., the installed libraries or
 9925: @c compilers) changes and the stale cache file is not deleted.
 9926: @c 
 9927: サイトの初期化スクリプトは,通常のプログラムごとのキャッシュの代わりに,
 9928: 使用するサイト全体のキャッシュファイルを指定することが可能です.この場合,
 9929: キャッシュファイルは,新しい@command{configure}スクリプトを実行する度に,
 9930: 情報がどんどん蓄積されていきます.(@command{configure}を実行すると,既存
 9931: のキャッシュファイルを用いて新しい結果をマージします.) しかし,システム
 9932: のコンフィグレーションが(例えば,ライブラリやコンパイラをインストールさ
 9933: れて)変化し,古いキャッシュファイルが削除されない場合,これは問題になる
 9934: かもしれません.
 9935: 
 9936: @node Cache Checkpointing
 9937: @c @subsection Cache Checkpointing
 9938: @subsection キャッシュのチェックポイント方法
 9939: 
 9940: @c If your configure script, or a macro called from @file{configure.ac}, happens
 9941: @c to abort the configure process, it may be useful to checkpoint the cache
 9942: @c a few times at key points using @code{AC_CACHE_SAVE}.  Doing so will
 9943: @c reduce the amount of time it takes to re-run the configure script with
 9944: @c (hopefully) the error that caused the previous abort corrected.
 9945: @c 
 9946: @command{configure}スクリプトや@file{configure.ac}から呼び出されるマクロ
 9947: がコンフィグレーション処理を中断する場合,2,3回@code{AC_CACHE_SAVE}を
 9948: 使用して,キーポイントでキャッシュのチェックポイントにすることが役に立ち
 9949: ます.そうすると,(おそらく)前に異常終了を引き起こしたエラーを修正するこ
 9950: とで,@command{configure}スクリプトを再実行する時間が大幅に削減されます.
 9951: 
 9952: @c FIXME: Do we really want to document this guy?
 9953: @defmac AC_CACHE_LOAD
 9954: @acindex CACHE_LOAD
 9955: @c Loads values from existing cache file, or creates a new cache file if a
 9956: @c cache file is not found.  Called automatically from @code{AC_INIT}.
 9957: @c 
 9958: 既存のキャッシュファイルから値をロードしたり,キャッシュファイルがない場
 9959: 合は新しいキャッシュファイルを作成したりします.自動的に@code{AC_INIT} 
 9960: から呼び出されます.
 9961: @end defmac
 9962: 
 9963: @defmac AC_CACHE_SAVE
 9964: @acindex CACHE_SAVE
 9965: @c Flushes all cached values to the cache file.  Called automatically from
 9966: @c @code{AC_OUTPUT}, but it can be quite useful to call
 9967: @c @code{AC_CACHE_SAVE} at key points in @file{configure.ac}.
 9968: @c 
 9969: キャッシュファイルに全てのキャッシュ値を書き込みます.自動的に 
 9970: @code{AC_OUTPUT}から呼び出されますが,@file{configure.ac}のキーポイント
 9971: で@code{AC_CACHE_SAVE}を呼び出すことは,大変役に立つはずです.
 9972: @end defmac
 9973: 
 9974: @c For instance:
 9975: @c 
 9976: 例えば,以下のようにします.
 9977: 
 9978: @example
 9979: @r{ @dots{} AC_INIT, etc. @dots{}}
 9980: @group
 9981: # Checks for programs.
 9982: AC_PROG_CC
 9983: AC_PROG_GCC_TRADITIONAL
 9984: @r{ @dots{} more program checks @dots{}}
 9985: AC_CACHE_SAVE
 9986: @end group
 9987: 
 9988: @group
 9989: # Checks for libraries.
 9990: AC_CHECK_LIB(nsl, gethostbyname)
 9991: AC_CHECK_LIB(socket, connect)
 9992: @r{ @dots{} more lib checks @dots{}}
 9993: AC_CACHE_SAVE
 9994: @end group
 9995: 
 9996: @group
 9997: # Might abort@dots{}
 9998: AM_PATH_GTK(1.0.2,, [AC_MSG_ERROR([GTK not in path])])
 9999: AM_PATH_GTKMM(0.9.5,, [AC_MSG_ERROR([GTK not in path])])
10000: @end group
10001: @r{ @dots{} AC_OUTPUT, etc. @dots{}}
10002: @end example
10003: 
10004: @node Printing Messages
10005: @c @section Printing Messages
10006: @section メッセージの出力
10007: @cindex Messages, from @command{configure}
10008: 
10009: @c @command{configure} scripts need to give users running them several kinds
10010: @c of information.  The following macros print messages in ways appropriate
10011: @c for each kind.  The arguments to all of them get enclosed in shell
10012: @c double quotes, so the shell performs variable and back-quote
10013: @c substitution on them.
10014: @c 
10015: @command{configure}スクリプトは,それらを実行しているユーザに,何種類か
10016: の情報を与える必要があります.以下のマクロは,それぞれの種類に対して適切
10017: な方法でメッセージを出力します.全ての引数は,シェルのダブルクオートで囲
10018: まれているので,シェルは変数とバッククオートの代入を実行します.
10019: 
10020: @c These macros are all wrappers around the @code{echo} shell command.
10021: @c @command{configure} scripts should rarely need to run @code{echo} directly
10022: @c to print messages for the user.  Using these macros makes it easy to
10023: @c change how and when each kind of message is printed; such changes need
10024: @c only be made to the macro definitions and all of the callers will change
10025: @c automatically.
10026: @c 
10027: これらのマクロは,@code{echo}シェルコマンドを全てラップします.
10028: @command{configure}スクリプトは,ユーザに対してメッセージを出力するため,
10029: 直接@code{echo}を実行する必要は滅多にありません.これらのマクロを使用す
10030: ると,出力されるそれぞれのメッセージの種類を,いつでもどのようにでも簡単
10031: に変更できます.そのような変更にはマクロ定義の変更だけが必要で,呼び出し
10032: 側は自動的に変更されます.
10033: 
10034: @c To diagnose static issues, i.e., when @command{autoconf} is run, see
10035: @c @ref{Reporting Messages}.
10036: @c 
10037: 静的な問題を診断するため,例えば@command{autoconf}が実行されるときは,
10038: @ref{Reporting Messages}を参照してください.
10039: 
10040: @defmac AC_MSG_CHECKING (@var{feature-description})
10041: @acindex MSG_CHECKING
10042: @c Notify the user that @command{configure} is checking for a particular
10043: @c feature.  This macro prints a message that starts with @samp{checking }
10044: @c and ends with @samp{...} and no newline.  It must be followed by a call
10045: @c to @code{AC_MSG_RESULT} to print the result of the check and the
10046: @c newline.  The @var{feature-description} should be something like
10047: @c @samp{whether the Fortran compiler accepts C++ comments} or @samp{for
10048: @c c89}.
10049: @c 
10050: @command{configure}が調査している特徴を,ユーザに通知します.このマクロ
10051: は @samp{checking }で始まり@samp{...}で終る,改行無しのメッセージを出力
10052: します.調査の結果と改行のため,@code{AC_MSG_RESULT}を続けて呼び出す必要
10053: があります.@var{feature-description}は@samp{FortranコンパイラがC++のコ
10054: メントを受け入れるかどうか(whether the Fortran compiler accepts C++
10055: comments)}や@samp{c89の調査(for c89)}のようなものです.
10056: 
10057: @c This macro prints nothing if @command{configure} is run with the
10058: @c @option{--quiet} or @option{--silent} option.
10059: @c 
10060: @command{configure}が@samp{--quiet}や@samp{--silent}オプションを用いて実
10061: 行されている場合,このマクロは何も出力しません.
10062: @end defmac
10063: 
10064: @defmac AC_MSG_RESULT (@var{result-description})
10065: @acindex MSG_RESULT
10066: @c Notify the user of the results of a check.  @var{result-description} is
10067: @c almost always the value of the cache variable for the check, typically
10068: @c @samp{yes}, @samp{no}, or a file name.  This macro should follow a call
10069: @c to @code{AC_MSG_CHECKING}, and the @var{result-description} should be
10070: @c the completion of the message printed by the call to
10071: @c @code{AC_MSG_CHECKING}.
10072: @c 
10073: 調査結果をユーザに通知します.@var{result-description}は,ほとんどいつも
10074: 調査に対するキャッシュ変数の値で,普通は@samp{yes},@samp{no},またはファ
10075: イル名になります.このマクロは@code{AC_MSG_CHECKING}の呼び出しに続けるべ
10076: きで,@var{result-description}は,@code{AC_MSG_CHECKING}の呼び出しで出力
10077: されるメッセージを完成するものにするべきです.
10078: 
10079: @c This macro prints nothing if @command{configure} is run with the
10080: @c @option{--quiet} or @option{--silent} option.
10081: @c 
10082: @command{configure}が@samp{--quiet}や@samp{--silent}オプションで実行され
10083: る場合,このマクロは何も出力しません.
10084: @end defmac
10085: 
10086: @defmac AC_MSG_NOTICE (@var{message})
10087: @acindex MSG_NOTICE
10088: @c Deliver the @var{message} to the user.  It is useful mainly to print a
10089: @c general description of the overall purpose of a group of feature checks,
10090: @c e.g.,
10091: @c 
10092: @var{message}をユーザに伝えます.特徴を調査しているグループ全体の特徴に
10093: ついて,例えば以下のような,一般的な記述を出力するときに主に役に立ちます.
10094: 
10095: @example
10096: AC_MSG_NOTICE([checking if stack overflow is detectable])
10097: @end example
10098: 
10099: @c This macro prints nothing if @command{configure} is run with the
10100: @c @option{--quiet} or @option{--silent} option.
10101: @c 
10102: @command{configure}が@samp{--quiet}や@samp{--silent}オプションで実行され
10103: る場合,このマクロは何も出力しません.
10104: @end defmac
10105: 
10106: @defmac AC_MSG_ERROR (@var{error-description}, @ovar{exit-status})
10107: @acindex MSG_ERROR
10108: @c Notify the user of an error that prevents @command{configure} from
10109: @c completing.  This macro prints an error message to the standard error
10110: @c output and exits @command{configure} with @var{exit-status} (1 by default).
10111: @c @var{error-description} should be something like @samp{invalid value
10112: @c $HOME for \$HOME}.
10113: @c 
10114: @command{configure}の完了を妨げるエラーをユーザに通知します.このマクロ
10115: は,エラーメッセージを標準エラー出力に出力し,@command{configure}は
10116: @var{exit-status}(デフォルトは1)で終了します.@var{error-description}は
10117: @samp{\$HOMEに対し$HOMEは無効な値です(invalid value $HOME for \$HOME)}の
10118: ようにすべきです.
10119: 
10120: @c The @var{error-description} should start with a lower-case letter, and
10121: @c ``cannot'' is preferred to ``can't''.
10122: @c 
10123: @var{error-description}は小文字で開始すべきで,``can't''より``cannot''の
10124: ほうが好ましいでしょう.
10125: @end defmac
10126: 
10127: @defmac AC_MSG_WARN (@var{problem-description})
10128: @acindex MSG_WARN
10129: @c Notify the @command{configure} user of a possible problem.  This macro
10130: @c prints the message to the standard error output; @command{configure}
10131: @c continues running afterward, so macros that call @code{AC_MSG_WARN} should
10132: @c provide a default (back-up) behavior for the situations they warn about.
10133: @c @var{problem-description} should be something like @samp{ln -s seems to
10134: @c make hard links}.
10135: @c 
10136: 可能性のある問題を@command{configure}を実行しているユーザに通知します.
10137: このマクロは,標準エラー出力にメッセージを出力します.
10138: @command{configure}はその後も実行を続けるので,@code{AC_MSG_WARN}を呼び
10139: 出すマクロでは,警告するような状態に対してデフォルト(バックアップ)の動作
10140: を提供すべきです. @var{problem-description}は@samp{ln -s はハードリンク
10141: されます(ln -s seems to make hard links)}のようなものにすべきです.
10142: @end defmac
10143: 
10144: 
10145: 
10146: @c ====================================================== Programming in M4.
10147: 
10148: @node Programming in M4
10149: @c @chapter Programming in M4
10150: @chapter M4でのプログラミング
10151: 
10152: @c Autoconf is written on top of two layers: @dfn{M4sugar}, which provides
10153: @c convenient macros for pure M4 programming, and @dfn{M4sh}, which
10154: @c provides macros dedicated to shell script generation.
10155: @c 
10156: Autoconfは,二つのレイヤーのトップに書かれています.それは,純粋なM4プロ
10157: グラムで便利なマクロを提供している@dfn{M4sugar}と,シェルスクリプトの生
10158: 成に専念するマクロを提供する@dfn{M4sh}です.
10159: 
10160: @c As of this version of Autoconf, these two layers are still experimental,
10161: @c and their interface might change in the future.  As a matter of fact,
10162: @c @emph{anything that is not documented must not be used}.
10163: @c 
10164: このバージョンのAutoconfでは,二つのレイヤーはまだ実験段階で,そのインター
10165: フェースは将来変更される可能性があります.実際問題,@emph{文章化されてい
10166: ないものは使用しないでください}.
10167: 
10168: @menu
10169: * M4 Quotation::                Protecting macros from unwanted expansion
10170: * Invoking autom4te::           The Autoconf executables backbone
10171: * Programming in M4sugar::      Convenient pure M4 macros
10172: * Programming in M4sh::         Common shell Constructs
10173: @end menu
10174: 
10175: @node M4 Quotation
10176: @c @section M4 Quotation
10177: @section M4の引用符
10178: @cindex quotation
10179: 
10180: @c FIXME: Grmph, yet another quoting myth: quotation has *never*
10181: @c prevented `expansion' of $1.  Unless it refers to the expansion
10182: @c of the value of $1?  Anyway, we need a rewrite here@enddots{}
10183: @c 
10184: @c The most common problem with existing macros is an improper quotation.
10185: @c This section, which users of Autoconf can skip, but which macro writers
10186: @c @emph{must} read, first justifies the quotation scheme that was chosen
10187: @c for Autoconf and then ends with a rule of thumb.  Understanding the
10188: @c former helps one to follow the latter.
10189: @c 
10190: 既存のマクロの最も一般的な問題は,不適当な引用符です.このセクションでは,
10191: Autoconfのユーザは飛ばすことができますが,マクロを書く人は読む@emph{必要
10192: があり},最初にAutoconfで採択された引用符を利用する方法を正当化し,最後
10193: に経験則を述べます.前者を理解すると後者で役立ちます.
10194: 
10195: @menu
10196: * Active Characters::           Characters that change the behavior of M4
10197: * One Macro Call::              Quotation and one macro call
10198: * Quotation and Nested Macros::  Macros calling macros
10199: * Changequote is Evil::         Worse than INTERCAL: M4 + changequote
10200: * Quadrigraphs::                Another way to escape special characters
10201: * Quotation Rule Of Thumb::     One parenthesis, one quote
10202: @end menu
10203: 
10204: @node Active Characters
10205: @c @subsection Active Characters
10206: @subsection アクティブな文字
10207: 
10208: @c To fully understand where proper quotation is important, you first need
10209: @c to know what the special characters are in Autoconf: @samp{#} introduces
10210: @c a comment inside which no macro expansion is performed, @samp{,}
10211: @c separates arguments, @samp{[} and @samp{]} are the quotes themselves,
10212: @c and finally @samp{(} and @samp{)} (which @code{m4} tries to match by
10213: @c pairs).
10214: @c 
10215: 適切な引用符の重要性を完全に理解するため,最初にAutoconfでの特殊な文字が
10216: 何かを知る必要があります.@samp{#}はマクロ展開が実行されない内部コメント
10217: の導入で,@samp{,}は引数のセパレータ,@samp{[}と@samp{]}はそれらの引用符,
10218: そして最後は,(@code{m4}が対の一致を試みる)@samp{(}と@samp{)}です.
10219: 
10220: @c In order to understand the delicate case of macro calls, we first have
10221: @c to present some obvious failures.  Below they are ``obvious-ified'',
10222: @c btu when you find them in real life, they are usually in disguise.
10223: @c 
10224: マクロ呼び出しの微妙な状況を理解するために,最初に明らかな失敗を紹介しな
10225: ければならないでしょう.以下は``明らかなified''で,実生活でも見つかるで
10226: しょうが,それらは通常ごまかしです.
10227: 
10228: @c Comments, introduced by a hash and running up to the newline, are opaque
10229: @c tokens to the top level: active characters are turned off, and there is
10230: @c no macro expansion:
10231: @c 
10232: ハッシュと改行まで実行することで導入されるコメントは,トップレベルへの不
10233: 明瞭なトークンです.アクティブな文字はそうではなくなり,マクロの展開もあ
10234: りません.
10235: 
10236: @example
10237: # define([def], ine)
10238: @result{}# define([def], ine)
10239: @end example
10240: 
10241: @c Each time there can be a macro expansion, there is a quotation
10242: @c expansion, i.e., one level of quotes is stripped:
10243: @c 
10244: マクロの展開があるごとに,引用符も展開されます.すなわち,第1レベルの引
10245: 用符は削除されます.
10246: 
10247: @example
10248: int tab[10];
10249: @result{}int tab10;
10250: [int tab[10];]
10251: @result{}int tab[10];
10252: @end example
10253: 
10254: @c Without this in mind, the reader will try hopelessly to use her macro
10255: @c @code{array}:
10256: @c 
10257: これを覚えていなければ,読者は絶望しながらもマクロの@code{array}を使用し
10258: てみるでしょう.
10259: 
10260: @example
10261: define([array], [int tab[10];])
10262: array
10263: @result{}int tab10;
10264: [array]
10265: @result{}array
10266: @end example
10267: 
10268: @noindent
10269: @c How can you correctly output the intended results@footnote{Using
10270: @c @code{defn}.}?
10271: @c 
10272: 期待する結果を正しく出力するにはどうすれば良いでしょうか
10273: @footnote{@code{defn}を使用します.}?
10274: 
10275: 
10276: @node One Macro Call
10277: @c @subsection One Macro Call
10278: @subsection 一つのマクロの呼び出し
10279: 
10280: @c Let's proceed on the interaction between active characters and macros
10281: @c with this small macro, which just returns its first argument:
10282: @c 
10283: さて,アクティブな文字と以下の単に最初の引数を返す小さなマクロを用いたマ
10284: クロで,対話的に進めていきましょう.
10285: 
10286: @example
10287: define([car], [$1])
10288: @end example
10289: 
10290: @noindent
10291: @c The two pairs of quotes above are not part of the arguments of
10292: @c @code{define}; rather, they are understood by the top level when it
10293: @c tries to find the arguments of @code{define}.  Therefore, it is
10294: @c equivalent to write:
10295: @c 
10296: 上記の二組の引用符は@code{define}の引数の一部ではありません.そうではな
10297: く,@code{define}の引数の検索が試みられるときに,それらはトップレベルで
10298: 理解されます.そのため,それは以下のように書くことと等価です.
10299: 
10300: @example
10301: define(car, $1)
10302: @end example
10303: 
10304: @noindent
10305: @c But, while it is acceptable for a @file{configure.ac} to avoid unnecessary
10306: @c quotes, it is bad practice for Autoconf macros which must both be more
10307: @c robust and also advocate perfect style.
10308: @c 
10309: しかし,@file{configure.ac}が不必要な引用符を避けることは受け入れてもか
10310: まいませんが,より強固で,完全な形式を提案する必要もあるAutoconfマクロに
10311: とっては悪い慣習です.
10312: 
10313: @c At the top level, there are only two possibilities: either you
10314: @c quote or you don't:
10315: @c 
10316: トップレベルでは,二つの可能性があります.引用符で囲む,または囲まないで
10317: の二つです.
10318: 
10319: @example
10320: car(foo, bar, baz)
10321: @result{}foo
10322: [car(foo, bar, baz)]
10323: @result{}car(foo, bar, baz)
10324: @end example
10325: 
10326: @c Let's pay attention to the special characters:
10327: @c 
10328: 特殊文字に注目してみましょう.
10329: 
10330: @example
10331: car(#)
10332: @error{}EOF in argument list
10333: @end example
10334: 
10335: @c The closing parenthesis is hidden in the comment; with a hypothetical
10336: @c quoting, the top level understood it this way:
10337: @c 
10338: 閉じカッコはコメント内に隠れてしまいます.引用符を推測することで,トップ
10339: レベルでは以下のように理解します.
10340: 
10341: @example
10342: car([#)]
10343: @end example
10344: 
10345: @noindent
10346: @c Proper quotation, of course, fixes the problem:
10347: @c 
10348: 適切な引用符は,もちろんこの問題を修正します.
10349: 
10350: @example
10351: car([#])
10352: @result{}#
10353: @end example
10354: 
10355: @c The reader will easily understand the following examples:
10356: @c 
10357: 読者は,以下の例の方が理解しやすいかもしれません.
10358: 
10359: @example
10360: car(foo, bar)
10361: @result{}foo
10362: car([foo, bar])
10363: @result{}foo, bar
10364: car((foo, bar))
10365: @result{}(foo, bar)
10366: car([(foo], [bar)])
10367: @result{}(foo
10368: car([], [])
10369: @result{}
10370: car([[]], [[]])
10371: @result{}[]
10372: @end example
10373: 
10374: @c With this in mind, we can explore the cases where macros invoke
10375: @c macros@enddots{}
10376: @c 
10377: これを覚えていると,マクロがマクロを呼び出し,マクロがマクロを呼び出し
10378: @dots{}となっているような状況も調査することが可能です.
10379: 
10380: 
10381: @node Quotation and Nested Macros
10382: @c @subsection Quotation and Nested Macros
10383: @subsection 引用符と入れ子状のマクロ
10384: 
10385: @c The examples below use the following macros:
10386: @c 
10387: これ以降の例では,以下のマクロを使用しています.
10388: 
10389: @example
10390: define([car], [$1])
10391: define([active], [ACT, IVE])
10392: define([array], [int tab[10]])
10393: @end example
10394: 
10395: @c Each additional embedded macro call introduces other possible
10396: @c interesting quotations:
10397: @c 
10398: 追加の埋め込まれたマクロ呼び出しは,それぞれ興味深い引用符について,その
10399: 他の可能性を導き出します.
10400: 
10401: @example
10402: car(active)
10403: @result{}ACT
10404: car([active])
10405: @result{}ACT, IVE
10406: car([[active]])
10407: @result{}active
10408: @end example
10409: 
10410: @c In the first case, the top level looks for the arguments of @code{car},
10411: @c and finds @samp{active}.  Because @code{m4} evaluates its arguments
10412: @c before applying the macro, @samp{active} is expanded, which results in:
10413: @c 
10414: 最初の状況では,トップレベルでは@code{car}の引数を探し,@samp{active}が
10415: 見つかります.@code{m4}はマクロを適用する前のその引数と等価なので,
10416: @samp{active}は展開され,結果として以下のようになります.
10417: 
10418: @example
10419: car(ACT, IVE)
10420: @result{}ACT
10421: @end example
10422: 
10423: @noindent
10424: @c In the second case, the top level gives @samp{active} as first and only
10425: @c argument of @code{car}, which results in:
10426: @c 
10427: 二番目の状況では,トップレベルは@code{car}の最初で唯一の引数として
10428: @samp{active}を与えるので,結果として以下のようになります.
10429: 
10430: @example
10431: active
10432: @result{}ACT, IVE
10433: @end example
10434: 
10435: @noindent
10436: @c i.e., the argument is evaluated @emph{after} the macro that invokes it.
10437: @c In the third case, @code{car} receives @samp{[active]}, which results in:
10438: @c 
10439: すなわち,マクロが呼び出された@emph{後で},引数が評価されます.三番目の
10440: 状況では,@code{car}は@samp{[active]}を受けとり,結果として以下のように
10441: なります.
10442: 
10443: @example
10444: [active]
10445: @result{}active
10446: @end example
10447: 
10448: @noindent
10449: @c exactly as we already saw above.
10450: @c 
10451: 上記で見たものと同じですね.
10452: 
10453: @c The example above, applied to a more realistic example, gives:
10454: @c 
10455: より現実的な例を適用して,上記の例に与えてみましょう.
10456: 
10457: @example
10458: car(int tab[10];)
10459: @result{}int tab10;
10460: car([int tab[10];])
10461: @result{}int tab10;
10462: car([[int tab[10];]])
10463: @result{}int tab[10];
10464: @end example
10465: 
10466: @noindent
10467: @c Huh?  The first case is easily understood, but why is the second wrong,
10468: @c and the third right?  To understand that, you must know that after
10469: @c @code{m4} expands a macro, the resulting text is immediately subjected
10470: @c to macro expansion and quote removal.  This means that the quote removal
10471: @c occurs twice---first before the argument is passed to the @code{car}
10472: @c macro, and second after the @code{car} macro expands to the first
10473: @c argument.
10474: @c 
10475: う〜ん? 最初の状況は簡単に理解できますが,なぜ二番目が間違っていて,三
10476: 番目は正しいのでしょうか?それを理解するために,@code{m4}がマクロを展開
10477: した後,結果として生じるテキストがすぐにマクロを展開に従って引用符が取り
10478: 除かれることを知っておく必要があります.これは,引用符の削除が二回行なわ
10479: れることを意味します --- 最初に引数として@code{car}マクロに渡されるとき,
10480: 二回目は@code{car}マクロが最初の引数を展開するときです.
10481: 
10482: @c As the author of the Autoconf macro @code{car}, you then consider it to
10483: @c be incorrect that your users have to double-quote the arguments of
10484: @c @code{car}, so you ``fix'' your macro.  Let's call it @code{qar} for
10485: @c quoted car:
10486: @c 
10487: Autoconfマクロ@code{car}の作者として,ユーザが@code{car}の引数を二重の引
10488: 用符にする必要があることは間違っていると考えるようにし,マクロを@emph{修
10489: 正}してください.引用符で囲まれている@code{car}に対して,それを
10490: @code{qar}と呼ぶことにしましょう.
10491: 
10492: @example
10493: define([qar], [[$1]])
10494: @end example
10495: 
10496: @noindent
10497: @c and check that @code{qar} is properly fixed:
10498: @c 
10499: そして,@code{qar}が適切に修正されていることを調査してみます.
10500: 
10501: @example
10502: qar([int tab[10];])
10503: @result{}int tab[10];
10504: @end example
10505: 
10506: @noindent
10507: @c Ahhh!  That's much better.
10508: @c 
10509: ああ!そうした方が良さそうですね.
10510: 
10511: @c But note what you've done: now that the arguments are literal strings,
10512: @c if the user wants to use the results of expansions as arguments, she has
10513: @c to use an @emph{unquoted} macro call:
10514: @c 
10515: しかし,自分が行なったことに注意してください.現在その引数はリテラル文字
10516: 列ですが,引数を展開した結果をユーザが使用したい場合,@emph{引用符で囲ま
10517: れていない}マクロを使用する必要があります.
10518: 
10519: @example
10520: qar(active)
10521: @result{}ACT
10522: @end example
10523: 
10524: @noindent
10525: @c where she wanted to reproduce what she used to do with @code{car}:
10526: @c 
10527: @code{car}を用いて行なっていたことを再生成したい状況を考えます.
10528: 
10529: @example
10530: car([active])
10531: @result{}ACT, IVE
10532: @end example
10533: 
10534: @noindent
10535: @c Worse yet: she wants to use a macro that produces a set of @code{cpp}
10536: @c macros:
10537: @c 
10538: まだ駄目ですね.@code{cpp}マクロの組を生成するマクロを使用したい状況を考
10539: えてみましょう.
10540: 
10541: @example
10542: define([my_includes], [#include <stdio.h>])
10543: car([my_includes])
10544: @result{}#include <stdio.h>
10545: qar(my_includes)
10546: @error{}EOF in argument list
10547: @end example
10548: 
10549: @c This macro, @code{qar}, because it double quotes its arguments, forces
10550: @c its users to leave their macro calls unquoted, which is dangerous.
10551: @c Commas and other active symbols are interpreted by @code{m4} before
10552: @c they are given to the macro, often not in the way the users expect.
10553: @c Also, because @code{qar} behaves differently from the other macros,
10554: @c it's an exception that should be avoided in Autoconf.
10555: @c 
10556: このマクロ@code{qar}は,引数を二重に引用符で囲むので,ユーザはマクロの呼
10557: び出しを引用符で囲まないままにしておくよう強制されるので,それは危険です.
10558: カンマとその他のアクティブなシンボルは,マクロに渡される前に@code{m4}で
10559: 解釈され,それはユーザが期待している手法ではないことが多いものです.また,
10560: @code{qar}は,他のマクロとは異なる動作をするので,Autoconfでは避けるべき
10561: 例外になります.
10562: 
10563: @node Changequote is Evil
10564: @c @subsection @code{changequote} is Evil
10565: @subsection @code{changequote}の弊害
10566: 
10567: @c The temptation is often high to bypass proper quotation, in particular
10568: @c when it's late at night.  Then, many experienced Autoconf hackers
10569: @c finally surrender to the dark side of the force and use the ultimate
10570: @c weapon: @code{changequote}.
10571: @c 
10572: 特に夜も遅くなると,適切な引用符をバイパスする誘惑が大きくなることも多い
10573: ものです.そして,経験豊富なAutoconfのハッカーの多くは,最終的に暗黒の力
10574: に支配され,最終兵器を持ち出します.それは@code{changequote}です.
10575: 
10576: @c The M4 builtin @code{changequote} belongs to a set of primitives that
10577: @c allow one to adjust the syntax of the language to adjust it to one's
10578: @c needs.  For instance, by default M4 uses @samp{`} and @samp{'} as
10579: @c quotes, but in the context of shell programming (and actually of most
10580: @c programming languages), that's about the worst choice one can make:
10581: @c because of strings and back-quoted expressions in shell code (such as
10582: @c @samp{'this'} and @samp{`that`}), because of literal characters in usual
10583: @c programming languages (as in @samp{'0'}), there are many unbalanced
10584: @c @samp{`} and @samp{'}.  Proper M4 quotation then becomes a nightmare, if
10585: @c not impossible.  In order to make M4 useful in such a context, its
10586: @c designers have equipped it with @code{changequote}, which makes it
10587: @c possible to choose another pair of quotes.  M4sugar, M4sh, Autoconf, and
10588: @c Autotest all have chosen to use @samp{[} and @samp{]}.  Not especially
10589: @c because they are unlikely characters, but @emph{because they are
10590: @c characters unlikely to be unbalanced}.
10591: @c 
10592: M4組み込みの@code{changequote}は,言語の構文を必要に応じて調整することを
10593: 可能にするプリミティブの組に属しています.例えば,M4では引用符としてデフォ
10594: ルトで@samp{`}と@samp{'}を使用しますが,シェルプログラムの文脈(そして,
10595: ほとんどの実際のプログラミング言語)では,それは利用可能なものの中での最
10596: 悪の選択です.シェルコードでの(@samp{'this'}と@samp{`that`}のような)文字
10597: 列とバッククオートされた式と,通常のプログラミング言語で使用される
10598: (@samp{'0'}のような)リテラル文字のため,多くの対にならない@samp{`}と
10599: @samp{'}が存在します.そのような文脈での厳密なM4の引用符が(変更)不可能な
10600: 場合は,悪夢になります.そのような文脈でM4を役立たせるため,それを設計し
10601: た人は別の引用符の組の選択を可能にする@code{changequote}を装備しました.
10602: M4sugar,M4sh,Autoconf,そしてAutotestでは,すべてのものが@samp{[}と
10603: @samp{]}の使用を選択しています.それらが滅多に使用されない文字という理由
10604: だけでなく,@emph{対にならないことも滅多に無い文字という理由もあります}.
10605: 
10606: @c There are other magic primitives, such as @code{changecom} to specify
10607: @c what syntactic forms are comments (it is common to see
10608: @c @samp{changecom(<!--, -->)} when M4 is used to produce HTML pages),
10609: @c @code{changeword} and @code{changesyntax} to change other syntactic
10610: @c details (such as the character to denote the n-th argument, @samp{$} by
10611: @c default, the parenthesis around arguments etc.).
10612: @c 
10613: 構文形式がコメントだということを指定するため(M4がHTMLページを生成するた
10614: めに使用されるとき,@samp{changecom(<!--, -->)}が一般的だと分かるでしょ
10615: う)の@code{changecom}と,それ以外の構文の詳細を変更するための
10616: @code{changeword}と@code{changesyntax}(n番目の引数を示す,デフォルトで
10617: @samp{$}となっている文字や,引数の周りを囲むカッコなど)のような,それ以
10618: 外のマジックプリミティブもあります.
10619: 
10620: @c These primitives are really meant to make M4 more useful for specific
10621: @c domains: they should be considered like command line options:
10622: @c @option{--quotes}, @option{--comments}, @option{--words}, and
10623: @c @code{--syntax}.  Nevertheless, they are implemented as M4 builtins, as
10624: @c it makes M4 libraries self contained (no need for additional options).
10625: @c 
10626: これらのプリミティブは,特定の分野に対してM4がより役に立つようにするため,
10627: 本当に意味があるものです.それらはコマンドラインオプションのように考える
10628: べきです.それらは,@option{--quotes},@option{--comments},
10629: @option{--words},そして@code{--syntax}のようなものです.それにもかかわ
10630: らず,M4ライブラリ自身が含まれる(追加のオプションが必要無い)ように,M4の
10631: 組み込みとして実装されています.
10632: 
10633: @c There lies the problem@enddots{}
10634: @c 
10635: そこに問題があります@enddots{}
10636: 
10637: @sp 1
10638: 
10639: @c The problem is that it is then tempting to use them in the middle of an
10640: @c M4 script, as opposed to its initialization.  This, if not carefully
10641: @c thought out, can lead to disastrous effects: @emph{you are changing the
10642: @c language in the middle of the execution}.  Changing and restoring the
10643: @c syntax is often not enough: if you happened to invoke macros in between,
10644: @c these macros will be lost, as the current syntax will probably not be
10645: @c the one they were implemented with.
10646: @c 
10647: 問題は,M4スクリプトの途中で,その初期化を目的としてそれを使用するときに
10648: 発生します.これは,あまり注意していない場合,甚大な影響があるはずです.
10649: @emph{実行の途中で言語を変更しているようなものです}.構文の変更とそれか
10650: らの復帰が十分でないことが多いものです.その間でマクロの呼び出しを行なっ
10651: た場合,現在の構文はおそらくマクロを実装していないので,これらのマクロは
10652: 失われることになります.
10653: 
10654: @c FIXME: I've been looking for a short, real case example, but I
10655: @c lost them all :(
10656: 
10657: 
10658: @node Quadrigraphs
10659: @c @subsection Quadrigraphs
10660: @subsection 四文字表記
10661: @cindex quadrigraphs
10662: @cindex @samp{@@S|@@}
10663: @cindex @samp{@@&t@@}
10664: @c Info cannot handle `:' in index entries.
10665: @c @cindex @samp{@@<:@@}
10666: @c @cindex @samp{@@:>@@}
10667: @c @cindex @samp{@@%:@@}
10668: 
10669: @c When writing an Autoconf macro you may occasionally need to generate
10670: @c special characters that are difficult to express with the standard
10671: @c Autoconf quoting rules.  For example, you may need to output the regular
10672: @c expression @samp{[^[]}, which matches any character other than @samp{[}.
10673: @c This expression contains unbalanced brackets so it cannot be put easily
10674: @c into an M4 macro.
10675: @c 
10676: Autoconfマクロを書いているとき,標準的なAutoconfの引用符の規則で表現する
10677: ことが難しい,特殊な文字を生成する必要が生じるかもしれません.例えば,
10678: @samp{[}以外の全ての文字に一致する正規表現@samp{[^[]}を出力する必要があ
10679: るかもしれません.この表現は,対称ではないカッコを含んでいるので,M4マク
10680: ロの中に簡単に書き込むことはできません.
10681: 
10682: @c You can work around this problem by using one of the following
10683: @c @dfn{quadrigraphs}:
10684: @c 
10685: 以下の@dfn{四文字表記}の一つを使用することで,この問題を解決することが可
10686: 能です.
10687: 
10688: @table @samp
10689: @item @@<:@@
10690: @samp{[}
10691: @item @@:>@@
10692: @samp{]}
10693: @item @@S|@@
10694: @samp{$}
10695: @item @@%:@@
10696: @samp{#}
10697: @item @@&t@@
10698: @c Expands to nothing.
10699: @c 
10700: 何にも展開されません.
10701: @end table
10702: 
10703: @c Quadrigraphs are replaced at a late stage of the translation process,
10704: @c after @command{m4} is run, so they do not get in the way of M4 quoting.
10705: @c For example, the string @samp{^@@<:@@}, independently of its quotation,
10706: @c will appear as @samp{^[} in the output.
10707: @c 
10708: 四文字表記は,@command{m4}が実行された後,変換処理の終りの段階で置換され
10709: るので,M4の引用符の邪魔になりません.例えば,文字列@samp{[^@@<:@@]}は,
10710: その引用符で囲まれている状態に依存せず,出力では@samp{[^[]}として現れま
10711: す.
10712: 
10713: @c The empty quadrigraph can be used:
10714: @c 
10715: 空の四文字表記を使用することも可能です.
10716: 
10717: @itemize @minus
10718: @c @item to mark trailing spaces explicitly
10719: @item 明示的に後置されるスペースに印を付けるため
10720: 
10721: @c Trailing spaces are smashed by @command{autom4te}.  This is a feature.
10722: @c 
10723: 後置される空白は@command{autom4te}で壊されます.これは仕様です.
10724: 
10725: @c @item to produce other quadrigraphs
10726: @item その他の四文字表記を生成するため
10727: 
10728: @c For instance @samp{@@<@@&t@@:@@} produces @samp{@@<:@@}.
10729: @c 
10730: 例えば,@samp{@@<@@&t@@:@@}は@samp{@@<:@@}を生成します.
10731: 
10732: @c @item to escape @emph{occurrences} of forbidden patterns
10733: @item 禁止されているパターンの@emph{発生}をエスケープするため
10734: 
10735: @c For instance you might want to mention @code{AC_FOO} in a comment, while
10736: @c still being sure that @command{autom4te} will still catch unexpanded
10737: @c @samp{AC_*}.  Then write @samp{AC@@&t@@_FOO}.
10738: @c 
10739: 例えば,@code{AC_FOO}をコメントとして書きたいかもしれませんが,
10740: @command{autom4te}は展開されていない@samp{AC_*}を確実に受けとります.そ
10741: のときは,@samp{AC@@&t@@_FOO}と書いてください.
10742: @end itemize
10743: 
10744: @c The name @samp{@@&t@@} was suggested by Paul Eggert:
10745: @c 
10746: @samp{@@&t@@}の名前はPaul Eggertの提案です.
10747: 
10748: @quotation
10749: @c I should give some credit to the @samp{@@&t@@} pun.  The @samp{&} is my
10750: @c own invention, but the @samp{t} came from the source code of the
10751: @c @sc{algol68c} compiler, written by Steve Bourne (of Bourne shell fame),
10752: @c and which used @samp{mt} to denote the empty string.  In C, it would
10753: @c have looked like something like:
10754: @c 
10755: 私は,@samp{@@&t@@}の語呂合わせに称賛を与えるべきでしょう.@samp{&}は私
10756: 自身の発明ですが,@samp{t}はSteve Bourne(Bourneシェルで有名です)によって
10757: 書かれた@sc{algol68c}コンパイラのソースコードが由来となっていて,そこで
10758: は空の文字列を示すために@samp{mt}を使用しています.Cでは,それは以下のよ
10759: うなものになるでしょう.
10760: 
10761: @example
10762: char const mt[] = "";
10763: @end example
10764: 
10765: @noindent
10766: @c but of course the source code was written in Algol 68.
10767: @c 
10768: しかし,ソースコードは当然Algol 68で書かれています.
10769: 
10770: @c I don't know where he got @samp{mt} from: it could have been his own
10771: @c invention, and I suppose it could have been a common pun around the
10772: @c Cambridge University computer lab at the time.
10773: @c 
10774: 彼が@samp{mt}を得た場所を,私は知りません.それは独自の発明かもしれませ
10775: んし,当時のケンブリッジ大学のコンピュータ研究所で,一般的な語呂合わせだっ
10776: たのかもしれません.
10777: @end quotation
10778: 
10779: @node Quotation Rule Of Thumb
10780: @c @subsection Quotation Rule Of Thumb
10781: @subsection 引用の経験則
10782: 
10783: @c To conclude, the quotation rule of thumb is:
10784: @c 
10785: 終りに引用の経験則を述べます.
10786: 
10787: @c @center @emph{One pair of quotes per pair of parentheses.}
10788: @c 
10789: @center @emph{カッコの組ごとに引用符の組}
10790: 
10791: @c Never over-quote, never under-quote, in particular in the definition of
10792: @c macros.  In the few places where the macros need to use brackets
10793: @c (usually in C program text or regular expressions), properly quote
10794: @c @emph{the arguments}!
10795: @c 
10796: 特にマクロ定義では,多過ぎる引用符もだめ,少な過ぎる引用符も駄目です.カッ
10797: コを使用する必要があるマクロ(通常Cのプログラム文や正規表現の中)では,適
10798: 切に@emph{引数を}引用符で囲んでください!
10799: 
10800: @c It is common to read Autoconf programs with snippets like:
10801: @c 
10802: 以下のような断片を用いたAutoconfプログラムを読むことはよくあります.
10803: 
10804: @example
10805: AC_TRY_LINK(
10806: changequote(<<, >>)dnl
10807: <<#include <time.h>
10808: #ifndef tzname /* For SGI.  */
10809: extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
10810: #endif>>,
10811: changequote([, ])dnl
10812: [atoi (*tzname);], ac_cv_var_tzname=yes, ac_cv_var_tzname=no)
10813: @end example
10814: 
10815: @noindent
10816: @c which is incredibly useless since @code{AC_TRY_LINK} is @emph{already}
10817: @c double quoting, so you just need:
10818: @c 
10819: それは,@code{AC_TRY_LINK}は@emph{すでに}二重に引用符で囲まれているので, 
10820: 全く無駄になり,実際は以下のようにするだけで十分です.
10821: 
10822: @example
10823: AC_TRY_LINK(
10824: [#include <time.h>
10825: #ifndef tzname /* For SGI.  */
10826: extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
10827: #endif],
10828:             [atoi (*tzname);],
10829:             [ac_cv_var_tzname=yes],
10830:             [ac_cv_var_tzname=no])
10831: @end example
10832: 
10833: @noindent
10834: @c The M4-fluent reader will note that these two examples are rigorously
10835: @c equivalent, since @code{m4} swallows both the @samp{changequote(<<, >>)}
10836: @c and @samp{<<} @samp{>>} when it @dfn{collects} the arguments: these
10837: @c quotes are not part of the arguments!
10838: @c 
10839: M4に親しんでいる読者は,@code{m4}が引数を@dfn{まとめる}ときに
10840: @samp{changequote(<<, >>)}と@samp{<<} @samp{>>}の両方を飲み込むので,こ
10841: れら二つの例が厳密に等価であることに注意してください.これらの引用符は引
10842: 数の一部ではありません!
10843: 
10844: @c Simplified, the example above is just doing this:
10845: @c 
10846: 単純にしてみると,上記の例は以下のようになります.
10847: 
10848: @example
10849: changequote(<<, >>)dnl
10850: <<[]>>
10851: changequote([, ])dnl
10852: @end example
10853: 
10854: @noindent
10855: @c instead of simply:
10856: @c 
10857: その代わりに単純に以下のようにします.
10858: 
10859: @example
10860: [[]]
10861: @end example
10862: 
10863: 
10864: @c With macros that do not double quote their arguments (which is the
10865: @c rule), double-quote the (risky) literals:
10866: @c 
10867: 引数を(規則で)二重に引用符で囲まないマクロを用いると,二重の引用は(危険
10868: な)文字列になります.
10869: 
10870: @example
10871: AC_LINK_IFELSE([AC_LANG_PROGRAM(
10872: [[#include <time.h>
10873: #ifndef tzname /* For SGI.  */
10874: extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
10875: #endif]],
10876:                                 [atoi (*tzname);])],
10877:                [ac_cv_var_tzname=yes],
10878:                [ac_cv_var_tzname=no])
10879: @end example
10880: 
10881: @c @xref{Quadrigraphs}, for what to do if you run into a hopeless case
10882: @c where quoting does not suffice.
10883: @c 
10884: 引用符が十分でない状況で望みがなくなった場合どうすればいいかということに
10885: ついては,@xref{Quadrigraphs}.
10886: 
10887: @c When you create a @command{configure} script using newly written macros,
10888: @c examine it carefully to check whether you need to add more quotes in
10889: @c your macros.  If one or more words have disappeared in the @code{m4}
10890: @c output, you need more quotes.  When in doubt, quote.
10891: @c 
10892: 新たに書かれたマクロを用いて@command{configure}スクリプトを作成するとき,
10893: マクロにより多くの引用符を加える必要があるかどうかの調査は,気を付けて吟
10894: 味してください.一つ以上の単語が@code{m4}の出力に現れない場合,より多く
10895: の引用符が必要になります.迷ったときは引用符です.
10896: 
10897: @c However, it's also possible to put on too many layers of quotes.  If
10898: @c this happens, the resulting @command{configure} script will contain
10899: @c unexpanded macros.  The @command{autoconf} program checks for this problem
10900: @c by doing @samp{grep AC_ configure}.
10901: @c 
10902: しかし,引用符のレイヤーが多過ぎる可能性もあります.この場合は,結果とし
10903: て得られる@command{configure}スクリプトは,展開されていないマクロが含ま
10904: れているでしょう.@command{autoconf}プログラムは,@samp{grep AC_
10905: configure}を行なうことでこの問題を調査します.
10906: 
10907: @node Invoking autom4te
10908: @c @section Invoking @command{autom4te}
10909: @section @command{autom4te}の呼び出し
10910: 
10911: @c The Autoconf suite, including M4sugar, M4sh, and Autotest, in addition to
10912: @c Autoconf per se, heavily rely on M4.  All these different uses revealed
10913: @c common needs factored into a layer over @command{m4}:
10914: @c @command{autom4te}@footnote{
10915: @c @c
10916: @c Yet another great name from Lars J. Aas.
10917: @c @c
10918: @c }.
10919: @c 
10920: Autoconf自身のものに加え,M4sugar,M4sh,そしてAutotestを含めたAutoconf 
10921: の一揃えは,M4への依存が重くなっています.使用が異なるこれらのすべては,
10922: @command{m4}の上のレイヤーに集約される一般的な要求を具体化しました.それ
10923: は@command{autom4te}@footnote{
10924: @c
10925: Lars J. Aasのもう一つの偉大な名前です.
10926: @c
10927: }.ケンブリッジです.
10928: 
10929: @c @command{autom4te} should basically considered as a replacement of
10930: @c @command{m4} itself.  In particular, its handling of command line
10931: @c arguments is modeled after M4's:
10932: @c 
10933: @command{autom4te}は,@command{m4}自身に置き換わるものとして,基本的に考
10934: えるべきです.特に,コマンドライン引数の処理は,M4にならって作成されてい
10935: ます.
10936: 
10937: @example
10938: autom4te @var{options} @var{files}
10939: @end example
10940: 
10941: @noindent
10942: @c where the @var{files} are directly passed to @command{m4}.  In addition
10943: @c to the regular expansion, it handles the replacement of the quadrigraphs
10944: @c (@pxref{Quadrigraphs}), and of @samp{__oline__}, the current line in the
10945: @c output.  It supports an extended syntax for the @var{files}:
10946: @c 
10947: ここでの@var{files}は,直接@command{m4}に渡すものです.正規の展開に加え,
10948: それは四文字表記(@pxref{Quadrigraphs})と,出力の現在の行の
10949: @samp{__oline__}の置換を処理します.それは,@var{files}に対して拡張され
10950: た構文もサポートしています.
10951: 
10952: @table @file
10953: @item @var{file}.m4f
10954: @c This file is an M4 frozen file.  Note that @emph{all the previous files
10955: @c are ignored}.  See the option @option{--melt} for the rationale.
10956: @c 
10957: このファイルは,M4を固めたファイルです.@emph{以前のファイルはすべて無視
10958: されることに}注意してください.正当性については,オプション
10959: @option{--melt}を参照してください.
10960: 
10961: @item @var{file}?
10962: @c If found in the library path, the @var{file} is included for expansion,
10963: @c otherwise it is ignored instead of triggering a failure.
10964: @c 
10965: ライブラリパスで見つかった場合,@var{file}は展開に含められ,それ以外では,
10966: 異常終了を発生する代わりに無視されます.
10967: @end table
10968: 
10969: @sp 1
10970: 
10971: @c Of course, it supports the Autoconf common subset of options:
10972: @c 
10973: もちろん,それはAutoconfの一般的のオプションのサブセットをサポートしてい
10974: ます.
10975: 
10976: @table @option
10977: @item --help
10978: @itemx -h
10979: @c Print a summary of the command line options and exit.
10980: @c 
10981: コマンドラインオプションの概要を出力し,終了します.
10982: 
10983: @item --version
10984: @itemx -V
10985: @c Print the version number of Autoconf and exit.
10986: @c 
10987: Autoconfのバージョンナンバーを出力し,終了します.
10988: 
10989: @item --verbose
10990: @itemx -v
10991: @c Report processing steps.
10992: @c 
10993: 処理しているステップを報告します.
10994: 
10995: @item --debug
10996: @itemx -d
10997: @c Don't remove the temporary files and be even more verbose.
10998: @c 
10999: 一時的なファイルを削除せず,さらに冗長になります.
11000: 
11001: @item --include=@var{dir}
11002: @itemx -I @var{dir}
11003: @c Also look for input files in @var{dir}.  Multiple invocations
11004: @c accumulate.
11005: @c 
11006: 入力ファイルを@var{dir}でも探します.複数回の呼び出しは累積されます.
11007: 
11008: @item --output=@var{file}
11009: @itemx -o @var{file}
11010: @c Save output (script or trace) to @var{file}.  The file @option{-} stands
11011: @c for the standard output.
11012: @c 
11013: (スクリプトやトレースの)出力を@var{file}に保存します.ファイル@option{-} 
11014: は標準出力を意味します.
11015: @end table
11016: 
11017: @sp 1
11018: 
11019: @c As an extension of @command{m4}, it includes the following options:
11020: @c 
11021: @command{m4}の拡張として,それらは以下のオプションが含まれます.
11022: 
11023: @table @option
11024: @item --warnings=@var{category}
11025: @itemx -W @var{category}
11026: @evindex WARNINGS
11027: @c FIXME: Point to the M4sugar macros, not Autoconf's.
11028: @c 
11029: @c Report the warnings related to @var{category} (which can actually be a
11030: @c comma separated list).  @xref{Reporting Messages}, macro
11031: @c @code{AC_DIAGNOSE}, for a comprehensive list of categories.  Special
11032: @c values include:
11033: @c 
11034: (実際にはカンマで分けられたリストになっている)@var{category}に関連する警
11035: 告を報告します.カテゴリの包括的なリストは,マクロ@code{AC_DIAGNOSE}の
11036: @xref{Reporting Messages}.  以下の特殊な値が含まれます.
11037: 
11038: @table @samp
11039: @item all
11040: @c report all the warnings
11041: @c 
11042: すべての警告を報告します.
11043: 
11044: @item none
11045: @c report none
11046: @c 
11047: 何も報告しません.
11048: 
11049: @item error
11050: @c treats warnings as errors
11051: @c 
11052: 警告をエラーとして扱います.
11053: 
11054: @item no-@var{category}
11055: @c disable warnings falling into @var{category}
11056: @c 
11057: 警告を@var{category}に分類することを不可能にします.
11058: @end table
11059: 
11060: @c Warnings about @samp{syntax} are enabled by default, and the environment
11061: @c variable @code{WARNINGS}, a comma separated list of categories, is
11062: @c honored.  @command{autom4te -W @var{category}} will actually
11063: @c behave as if you had run:
11064: @c 
11065: @samp{syntax}に関する警告は,デフォルトで利用可能で,カテゴリのカンマで
11066: 分離されたリストの環境変数@code{WARNINGS}は尊重されます.
11067: @command{autom4te -W @var{category}}は,実際に悪いことを実行したかのよう
11068: に動作します.
11069: 
11070: @example
11071: autom4te --warnings=syntax,$WARNINGS,@var{category}
11072: @end example
11073: 
11074: @noindent
11075: @c If you want to disable @command{autom4te}'s defaults and
11076: @c @code{WARNINGS}, but (for example) enable the warnings about obsolete
11077: @c constructs, you would use @option{-W none,obsolete}.
11078: @c 
11079: @command{autom4te}のデフォルトと@code{WARNINGS}を利用不可能にしたいけれ
11080: ども,(例えば)時代遅れの構成物に関する警告は利用可能にしたい場合,
11081: @option{-W none,obsolete}を使用するべきでしょう.
11082: 
11083: @cindex Back trace
11084: @cindex Macro invocation stack
11085: @c @command{autom4te} displays a back trace for errors, but not for
11086: @c warnings; if you want them, just pass @option{-W error}.  For instance,
11087: @c on this @file{configure.ac}:
11088: @c 
11089: @command{autom4te}はエラーのバックトレースを表示しますが,警告は表示しま
11090: せん.警告も表示したい場合,@option{-W error}を渡してください.例えば以
11091: 下のような@file{configure.ac}を考えます.
11092: 
11093: @example
11094: AC_DEFUN([INNER],
11095: [AC_TRY_RUN([exit (0)])])
11096: 
11097: AC_DEFUN([OUTER],
11098: [INNER])
11099: 
11100: AC_INIT
11101: OUTER
11102: @end example
11103: 
11104: @noindent
11105: @c you get:
11106: @c 
11107: 以下を得るでしょう.
11108: 
11109: @example
11110: $ @kbd{autom4te -l autoconf -Wcross}
11111: configure.ac:8: warning: AC_TRY_RUN called without default \
11112: to allow cross compiling
11113: $ @kbd{autom4te -l autoconf -Wcross,error}
11114: configure.ac:8: error: AC_TRY_RUN called without default \
11115: to allow cross compiling
11116: acgeneral.m4:3044: AC_TRY_RUN is expanded from...
11117: configure.ac:2: INNER is expanded from...
11118: configure.ac:5: OUTER is expanded from...
11119: configure.ac:8: the top level
11120: @end example
11121: 
11122: @item --melt
11123: @itemx -m
11124: @c Do not use frozen files.  Any argument @code{@var{file}.m4f} will be
11125: @c replaced with @code{@var{file}.m4}.  This helps tracing the macros which
11126: @c are executed only when the files are frozen, typically
11127: @c @code{m4_define}.  For instance, running:
11128: @c 
11129: 固められたファイルを使用しません.すべての引数@code{@var{file}.m4f}は
11130: @code{@var{file}.m4}で置換されます.これは,ファイルが固められているとき
11131: だけに実行されるマクロ,通常は@code{m4_define}の追跡で役に立ちます.例え
11132: ば以下のように実行します.
11133: 
11134: @example
11135: autom4te --melt 1.m4 2.m4f 3.m4 4.m4f input.m4
11136: @end example
11137: 
11138: @noindent
11139: @c is roughly equivalent to running:
11140: @c 
11141: これは以下を実行したのと等価です.
11142: 
11143: @example
11144: m4 1.m4 2.m4 3.m4 4.m4 input.m4
11145: @end example
11146: 
11147: @noindent
11148: @c while
11149: @c 
11150: 一方,以下を実行した場合を考えます.
11151: 
11152: @example
11153: autom4te 1.m4 2.m4f 3.m4 4.m4f input.m4
11154: @end example
11155: 
11156: @noindent
11157: @c is equivalent to:
11158: @c 
11159: これは以下と等価です.
11160: 
11161: @example
11162: m4 --reload-state=4.m4f input.m4
11163: @end example
11164: 
11165: @item --freeze
11166: @itemx -f
11167: @c Produce a frozen state file.  @command{autom4te} freezing is stricter
11168: @c than M4's: it must produce no warnings, and no output other than empty
11169: @c lines (a line with whitespace is @emph{not} empty) and comments
11170: @c (starting with @samp{#}).  Please, note that contrary to @command{m4},
11171: @c this options takes no argument:
11172: @c 
11173: 固まった状態のファイルを生成します.@command{autom4te}の固め方は,M4より
11174: 厳密です.警告を生成させたり,空の行(空白行は空の行では@emph{ありません}) 
11175: とコメント(@samp{#}で始まります)以外の出力を生成してはいけません.
11176: @command{m4}とは異なり,このオプションは以下のように引数をとらないことに
11177: 注意してください.
11178: 
11179: @example
11180: autom4te 1.m4 2.m4 3.m4 --freeze --output=3.m4f
11181: @end example
11182: 
11183: @noindent
11184: @c corresponds to
11185: @c 
11186: これは以下に対応します.
11187: 
11188: @example
11189: m4 1.m4 2.m4 3.m4 --freeze-state=3.m4f
11190: @end example
11191: 
11192: @item --mode=@var{octal-mode}
11193: @itemx -m @var{octal-mode}
11194: @c Set the mode of the non-traces output to @var{octal-mode}; by default
11195: @c @samp{0666}.
11196: @c 
11197: @var{octal-mode}にトレース出力以外のモードを設定します.デフォルトは
11198: @samp{0666}です.
11199: @end table
11200: 
11201: @sp 1
11202: 
11203: @cindex @file{autom4te.cache}
11204: @c As another additional feature over @command{m4}, @command{autom4te}
11205: @c caches its results.  GNU M4 is able to produce a regular output and
11206: @c traces at the same time.  Traces are heavily used in the GNU Build
11207: @c System: @command{autoheader} uses them to build @file{config.h.in},
11208: @c @command{autoreconf} to determine what GNU Build System components are
11209: @c used, @command{automake} to ``parse'' @file{configure.ac} etc.  To save
11210: @c the long runs of @command{m4}, traces are cached while performing
11211: @c regular expansion, and conversely.  This cache is (actually, the caches
11212: @c are) stored in the directory @file{autom4te.cache}.  @emph{It can safely
11213: @c be removed} at any moment (especially if for some reason
11214: @c @command{autom4te} considers it is trashed).
11215: @c 
11216: それ以外の@command{m4}上の追加機能として,@command{autom4te}がその結果を
11217: キャッシュするというものがあります.GNU M4は,標準出力を生成すると同時に
11218: トレースすることが可能です.トレースはGNU Build Systemで重点的に使用され
11219: ています.@command{autoheader}は,@file{config.h.in}をビルドするために,
11220: @command{autoreconf}は,使用されているGNU Build Systemの構成要素を決定す
11221: るために,@command{automake}は@file{configure.ac}をパースするため等とし
11222: て使用しています.@command{m4}の長い実行結果を保存するために,通常の展開
11223: を実行している間,トレースはキャッシュされます@footnote{訳注:原文にある
11224: ``and conversely''が何を指すのか分かりません.}.このキャッシュ(実際には
11225: 複数ある) は,ディレクトリ@file{autom4te.cache}に保存されます.いつでも
11226: @emph{削除して大丈夫です}(特に,理由があれば@command{autom4te}はそれが捨
11227: てられてしまったと考えます).
11228: 
11229: @table @option
11230: @item --force
11231: @itemx -f
11232: @c Do not consider the cache (but update it anyway).
11233: @c 
11234: キャッシュを考慮しません(しかし,それはいずれにせよ更新されます).
11235: @end table
11236: 
11237: @sp 1
11238: 
11239: @c Because traces are so important to the GNU Build System,
11240: @c @command{autom4te} provides high level tracing features as compared to
11241: @c M4, and helps exploiting the cache:
11242: @c 
11243: トレースはGNU Build Systemに重きをおいて実装されているので,
11244: @command{autom4te}は,M4と比較して高度なトレース機能を提供していて,キャッ
11245: シュを利用する手助けとなります.
11246: 
11247: @table @option
11248: @item --trace=@var{macro}[:@var{format}]
11249: @itemx -t @var{macro}[:@var{format}]
11250: @c Trace the invocations of @var{macro} according to the @var{format}.
11251: @c Multiple @option{--trace} arguments can be used to list several macros.
11252: @c Multiple @option{--trace} arguments for a single macro are not
11253: @c cumulative; instead, you should just make @var{format} as long as
11254: @c needed.
11255: @c 
11256: @var{format}によって,@var{macro}の呼び出しをトレースします.複数の
11257: @option{--trace}引数は,いくつかのマクロリストを使用するために使用可能で
11258: す.単一マクロに対する複数の@option{--trace}引数は累積されません.その代
11259: わりに,必要な長さの@var{format}にすべきです.
11260: 
11261: @c The @var{format} is a regular string, with newlines if desired, and
11262: @c several special escape codes.  It defaults to @samp{$f:$l:$n:$%}.  It can
11263: @c use the following special escapes:
11264: @c 
11265: @var{format}は,必要なときは改行を用いていて,特殊なエスケープコードをも
11266: 用いている通常の文字列です.デフォルトは@samp{$f:$l:$n:$%}です.以下の特
11267: 殊なエスケープ文字が使用可能です.
11268: 
11269: @table @samp
11270: @item $$
11271: @c The character @samp{$}.
11272: @c 
11273: 文字@samp{$}.
11274: 
11275: @item $f
11276: @c The filename from which @var{macro} is called.
11277: @c 
11278: @var{macro}が呼び出されているファイル名.
11279: 
11280: @item $l
11281: @c The line number from which @var{macro} is called.
11282: @c 
11283: @var{macro}が呼び出されている行番号.
11284: 
11285: @item $d
11286: @c The depth of the @var{macro} call.  This is an M4 technical detail that
11287: @c you probably don't want to know about.
11288: @c 
11289: @var{macro}呼び出しの深さ.これはM4の技術的な詳細で,特に知りたいとは思
11290: わないでしょう.
11291: 
11292: @item $n
11293: @c The name of the @var{macro}.
11294: @c 
11295: @var{macro}の名前.
11296: 
11297: @item $@var{num}
11298: @c The @var{num}th argument of the call to @var{macro}.
11299: @c 
11300: @var{macro}呼び出しの@var{num}番目の引数.
11301: 
11302: @item $@@
11303: @itemx $@var{sep}@@
11304: @itemx $@{@var{separator}@}@@
11305: @c All the arguments passed to @var{macro}, separated by the character
11306: @c @var{sep} or the string @var{separator} (@samp{,} by default).  Each
11307: @c argument is quoted, i.e., enclosed in a pair of square brackets.
11308: @c 
11309: 文字@var{sep}または文字列@var{separator}で分離されている,マクロに渡され
11310: ているすべての引数(デフォルトは@samp{,}).それぞれの引数は引用符で囲まれ
11311: ています.すなわち,角カッコの組で囲まれています.
11312: 
11313: @item $*
11314: @itemx $@var{sep}*
11315: @itemx $@{@var{separator}@}*
11316: @c As above, but the arguments are not quoted.
11317: @c 
11318: 上と同じですが,引数は引用符で囲まれていません.
11319: 
11320: @item $%
11321: @itemx $@var{sep}%
11322: @itemx $@{@var{separator}@}%
11323: @c As above, but the arguments are not quoted, all new line characters in
11324: @c the arguments are smashed, and the default separator is @samp{:}.
11325: @c 
11326: 上と同じですが,引数は引用符で囲まれておらず,引数内部のすべての改行文字
11327: は取り除かれていて,そして,デフォルトの分離子は@samp{:}です.
11328: 
11329: @c The escape @samp{$%} produces single-line trace outputs (unless you put
11330: @c newlines in the @samp{separator}), while @samp{$@@} and @samp{$*} do
11331: @c not.
11332: @c 
11333: エスケープの@samp{$%}は,(@samp{separator}に改行を書き込まない限り)一行
11334: のトレース出力を生成しますが,@samp{$@@}と@samp{$*}はそうではありません.
11335: @end table
11336: 
11337: @c @xref{autoconf Invocation}, for examples of trace uses.
11338: @c 
11339: トレースの使用例は@xref{autoconf Invocation}.
11340: 
11341: @item --preselect=@var{macro}
11342: @itemx -p @var{macro}
11343: @c Cache the traces of @var{macro}, but do not enable traces.  This is
11344: @c especially important to save CPU cycles in the future.  For instance,
11345: @c when invoked, @command{autoconf} preselects all the macros that
11346: @c @command{autoheader}, @command{automake}, @command{autoreconf} etc.@: will
11347: @c trace, so that running @command{m4} is not needed to trace them: the
11348: @c cache suffices.  This results in a huge speed-up.
11349: @c 
11350: @var{macro}のトレースをキャッシュしますが,キャッシュを利用可能にしませ
11351: ん.これは特に,将来のCPUサイクルを無駄にしないために重要です.例えば呼
11352: び出し時に,@command{m4}の実行でトレースする必要が無いように,
11353: @command{autoconf}は@command{autoheader},@command{automake},
11354: @command{autoreconf}などがトレースするすべてのマクロを前もって選択します.
11355: キャッシュは十分です.これは結果として非常に高速になります.
11356: @end table
11357: 
11358: @sp 1
11359: 
11360: @cindex Autom4te Library
11361: @c Finally, @command{autom4te} introduces the concept of @dfn{Autom4te
11362: @c libraries}.  They consists in a powerful yet extremely simple feature:
11363: @c sets of combined command line arguments:
11364: @c 
11365: 最後に,@command{autom4te}は@dfn{Autom4teライブラリ}の概念を導入します.
11366: それらは,強力ですが非常にシンプルな機能から成り立っています.コマンドラ
11367: イン引数の組み合わせの組です.
11368: 
11369: @table @option
11370: @item --language=@var{language}
11371: @itemx -l =@var{language}
11372: @c Use the @var{language} Autom4te library.  Current languages include:
11373: @c 
11374: @var{language}をAutom4teライブラリで使用します.現在の言語は以下のものが
11375: 含まれています.
11376: 
11377: @table @code
11378: @item M4sugar
11379: @c create M4sugar output.
11380: @c 
11381: M4sugar出力を作成します.
11382: 
11383: @item M4sh
11384: @c create M4sh executable shell scripts.
11385: @c 
11386: M4shの実行可能なシェルスクリプトを作成します.
11387: 
11388: @item Autotest
11389: @c create Autotest executable test suites.
11390: @c 
11391: Autotestの実行可能なテストスイートを作成します.
11392: 
11393: @item Autoconf
11394: @c create Autoconf executable configure scripts.
11395: @c 
11396: Autoconfの実行可能なコンフィグレーションスクリプトを作成します.
11397: @end table
11398: 
11399: @item --prepend-include=@var{dir}
11400: @item -B @var{dir}
11401: @c Prepend directory @var{dir} to the search path.  This is used to include
11402: @c the language-specific files before any third-party macros.
11403: @c 
11404: 検索パスにディレクトリ@var{dir}を前置します.これは,サードパーティーの
11405: マクロの前に,言語指定ファイルを含めるために使用します.
11406: @end table
11407: 
11408: @cindex @file{autom4te.cfg}
11409: @c As an example, if Autoconf is installed in its default location,
11410: @c @file{/usr/local}, running @samp{autom4te -l m4sugar foo.m4} is
11411: @c strictly equivalent to running @samp{autom4te --prepend-include
11412: @c /usr/local/share/autoconf m4sugar/m4sugar.m4f --warning syntax foo.m4}.
11413: @c Recursive expansion applies: running @samp{autom4te -l m4sh foo.m4}
11414: @c is the same as @samp{autom4te --language M4sugar m4sugar/m4sh.m4f
11415: @c foo.m4}, i.e., @samp{autom4te --prepend-include /usr/local/share/autoconf
11416: @c m4sugar/m4sugar.m4f m4sugar/m4sh.m4f --mode 777 foo.m4}.  The definition
11417: @c of the languages is stored in @file{autom4te.cfg}.
11418: @c 
11419: 例として,Autoconfがデフォルトの場所@file{/usr/local}にインストールされ
11420: ている場合,@samp{autom4te -l m4sugar foo.m4}を実行することは,
11421: @samp{autom4te --prepend-include /usr/local/share/autoconf
11422: m4sugar/m4sugar.m4f --warning syntax foo.m4}を実行することと厳密に等価と
11423: なります.再帰的な展開も適用します.@samp{autom4te --language m4sh
11424: foo.m4}を実行することは,@samp{autom4te --language M4sugar
11425: m4sugar/m4sh.m4f foo.m4}と同じで,すなわち,@samp{autom4te
11426: --prepend-include /usr/local/share/autoconf m4sugar/m4sugar.m4f
11427: m4sugar/m4sh.m4f --mode 777 foo.m4}と同じになります.言語の定義は,
11428: @file{autom4te.cfg}に保存されます.
11429: 
11430: 
11431: @node Programming in M4sugar
11432: @c @section Programming in M4sugar
11433: @section M4sugarでのプログラミング
11434: 
11435: @cindex M4sugar
11436: @c M4 by itself provides only a small, but sufficient, set of all-purpose
11437: @c macros.  M4sugar introduces additional generic macros.  Its name was
11438: @c coined by Lars J. Aas: ``Readability And Greater Understanding Stands 4
11439: @c M4sugar''.
11440: @c 
11441: M4自身は非常に小さいけれど十分な,汎用マクロの組を提供しています.
11442: M4sugarは,追加の一般的なマクロを導入しています.その名前は,Lars J. Aas 
11443: によってつくり出されました:``Readability And Greater Understanding
11444: Stands 4 M4sugar''.
11445: 
11446: @menu
11447: * Redefined M4 Macros::         M4 builtins changed in M4sugar
11448: * Evaluation Macros::           More quotation and evaluation control
11449: * Forbidden Patterns::          Catching unexpanded macros
11450: @end menu
11451: 
11452: @node Redefined M4 Macros
11453: @c @subsection Redefined M4 Macros
11454: @subsection M4マクロの再定義
11455: 
11456: @c With a few exceptions, all the M4 native macros are moved in the
11457: @c @samp{m4_} pseudo-namespace, e.g., M4sugar renames @code{define} as
11458: @c @code{m4_define} etc.
11459: @c 
11460: いくつか例外がありますが,全てのM4ネイティブなマクロは,@samp{m4_}疑似名
11461: 前空間に移動されていて,例えば,M4sugarでは@code{define}を
11462: @code{m4_define}に名前を変えるなどのようになっています.
11463: 
11464: @c Some M4 macros are redefined, and are slightly incompatible with their
11465: @c native equivalent.
11466: @c 
11467: M4マクロには再定義されているものもあり,ネイティブな同義語とわずかに互換
11468: 性がなくなっています.
11469: 
11470: @defmac dnl
11471: @msindex dnl
11472: @c This macro kept its original name: no @code{m4_dnl} is defined.
11473: @c 
11474: このマクロは,もともとの名前を維持しています.@code{m4_dnl}は定義されて
11475: いません.
11476: @end defmac
11477: 
11478: @defmac m4_defn (@var{macro})
11479: @msindex defn
11480: @c Contrary to the M4 builtin, this macro fails if @var{macro} is not
11481: @c defined.  See @code{m4_undefine}.
11482: @c 
11483: M4組み込みのものと比較して,このマクロは,@var{macro}が定義されていない
11484: 場合は失敗します.@code{m4_undefine}を参照してください.
11485: @end defmac
11486: 
11487: @defmac m4_exit (@var{exit-status})
11488: @msindex m4_exit
11489: @c This macro corresponds to @code{m4exit}.
11490: @c 
11491: このマクロは@code{m4exit}に対応します.
11492: @end defmac
11493: 
11494: @defmac m4_if (@var{comment})
11495: @defmacx m4_if (@var{string-1}, @var{string-2}, @var{equal}, @ovar{not-equal})
11496: @defmacx m4_if (@var{string-1}, @var{string-2}, @var{equal}, @dots{})
11497: @msindex m4_if
11498: @c This macro corresponds to @code{ifelse}.
11499: @c 
11500: このマクロは@code{ifelse}に対応します.
11501: @end defmac
11502: 
11503: @defmac m4_undefine (@var{macro})
11504: @msindex undefine
11505: @c Contrary to the M4 builtin, this macro fails if @var{macro} is not
11506: @c defined.  Use
11507: @c 
11508: M4組み込みのものと比較して,このマクロは,@var{macro}が定義されていない
11509: 場合は失敗します.以下のように使用してください.
11510: 
11511: @example
11512: m4_ifdef([@var{macro}], [m4_undefine([@var{macro}])])
11513: @end example
11514: 
11515: @noindent
11516: @c to recover the behavior of the builtin.
11517: @c 
11518: それで,組み込みのものの動作に復旧します.
11519: @end defmac
11520: 
11521: @defmac m4_bpatsubst (@var{string}, @var{regexp}, @ovar{replacement})
11522: @msindex bpatsubst
11523: @c This macro corresponds to @code{patsubst}.  The name @code{m4_patsubst}
11524: @c is kept for future versions of M4sh, on top of @sc{gnu} M4 which will
11525: @c provide extended regular expression syntax via @code{epatsubst}.
11526: @c 
11527: このマクロは@code{patsubst}に対応します.@code{m4_patsubst}の名前は,
11528: @code{epatsubst}で拡張した正規表現の構文を提供する,@sc{gnu} M4の最上位
11529: のM4shの将来のバージョンに対して残されています.
11530: @end defmac
11531: 
11532: @defmac m4_popdef (@var{macro})
11533: @msindex defn
11534: @c Contrary to the M4 builtin, this macro fails if @var{macro} is not
11535: @c defined.  See @code{m4_undefine}.
11536: @c 
11537: M4組み込みのものと比較して,このマクロは,@var{macro}が定義されていない
11538: 場合は失敗します.@code{m4_undefine}を参照してください.
11539: @end defmac
11540: 
11541: @defmac m4_bregexp (@var{string}, @var{regexp}, @ovar{replacement})
11542: @msindex bregexp
11543: @c This macro corresponds to @code{regexp}.  The name @code{m4_regexp}
11544: @c is kept for future versions of M4sh, on top of @sc{gnu} M4 which will
11545: @c provide extended regular expression syntax via @code{eregexp}.
11546: @c 
11547: このマクロは@code{regexp}に対応しています.@code{m4_regexp}の名前は,
11548: @code{eregexp}で拡張した正規表現の構文を提供する,@sc{gnu} M4の最上位の
11549: M4shの将来のバージョンに対して残されています.
11550: @end defmac
11551: 
11552: @defmac m4_wrap (@var{text})
11553: @msindex m4_wrap
11554: @c This macro corresponds to @code{m4wrap}.
11555: @c 
11556: このマクロは@code{m4wrap}に対応しています.
11557: 
11558: @c You are encouraged to end @var{text} with @samp{[]}, so that there are
11559: @c no risks that two consecutive invocations of @code{m4_wrap} result in an
11560: @c unexpected pasting of tokens, as in
11561: @c 
11562: 二つの連続して呼び出される@code{m4_wrap}が,そのままトークンとして渡され
11563: るという予期しない結果となる危険が無いように,@var{text}を@samp{[]}で終
11564: えることが推奨されます.
11565: 
11566: @example
11567: m4_define([foo], [Foo])
11568: m4_define([bar], [Bar])
11569: m4_define([foobar], [FOOBAR])
11570: m4_wrap([bar])
11571: m4_wrap([foo])
11572: @result{}FOOBAR
11573: @end example
11574: @end defmac
11575: 
11576: @node Evaluation Macros
11577: @c @subsection Evaluation Macros
11578: @subsection マクロの評価
11579: 
11580: @c The following macros give some control over the order of the evaluation
11581: @c by adding or removing levels of quotes.  They are meant for hard-core M4
11582: @c programmers.
11583: @c 
11584: 以下のマクロは,引用符のレベルを追加したり削除したりすることで,評価の順
11585: 序全体を制御するものです.それらは,ハードコアなM4プログラマに対して意味
11586: があります.
11587: 
11588: @defmac m4_dquote (@var{arg1}, @dots{})
11589: @msindex dquote
11590: @c Return the arguments as a quoted list of quoted arguments.
11591: @c 
11592: 引用符で囲まれたリストを引用符で囲んだ引数を返します.
11593: @end defmac
11594: 
11595: @defmac m4_quote (@var{arg1}, @dots{})
11596: @msindex quote
11597: @c Return the arguments as a single entity, i.e., wrap them into a pair of
11598: @c quotes.
11599: @c 
11600: 単一の要素として引数を返し,すなわち,一つの引用符の組でそれらを囲みます.
11601: @end defmac
11602: 
11603: @c The following example aims at emphasizing the difference between (i), not
11604: @c using these macros, (ii), using @code{m4_quote}, and (iii), using
11605: @c @code{m4_dquote}.
11606: @c 
11607: 以下の例は,(i)これらの例を使用していない,(ii)@code{m4_quote}を使用して
11608: いる,(iii)@code{m4_dquote}を使用している,といったそれぞれの間の差を強
11609: 調することを目的としています.
11610: 
11611: @example
11612: $ @kbd{cat example.m4}
11613: # Overquote, so that quotes are visible.
11614: m4_define([show], [$[]1 = [$1], $[]@@ = [$@@]])
11615: m4_divert(0)dnl
11616: show(a, b)
11617: show(m4_quote(a, b))
11618: show(m4_dquote(a, b))
11619: $ @kbd{autom4te -l m4sugar example.m4}
11620: $1 = a, $@@ = [a],[b]
11621: $1 = a,b, $@@ = [a,b]
11622: $1 = [a],[b], $@@ = [[a],[b]]
11623: @end example
11624: 
11625: 
11626: 
11627: @node Forbidden Patterns
11628: @c @subsection Forbidden Patterns
11629: @subsection 禁止されているパターン
11630: 
11631: @c M4sugar provides a means to define suspicious patterns, patterns
11632: @c describing tokens which should not be found in the output.  For
11633: @c instance, if an Autoconf @file{configure} script includes tokens such as
11634: @c @samp{AC_DEFINE}, or @samp{dnl}, then most probably something went
11635: @c wrong (typically a macro was not evaluated because of overquotation).
11636: @c 
11637: M4sugar提供の目的は,怪しげはパターン,つまり出力に現れるべきではないトー
11638: クンを記述しているパターンを定義するためです.例えば,Autoconf
11639: @file{configure}スクリプトに@samp{AC_DEFINE}や@samp{dnl}のようなトークン
11640: が含められている場合,おそらく何か問題が発生するでしょう(通常は,余分な
11641: 引用符のためにマクロが評価されていないためです).
11642: 
11643: @c M4sugar forbids all the tokens matching @samp{^m4_} and @samp{^dnl$}.
11644: @c 
11645: M4sugarは,@samp{^m4_}と@samp{^dnl$}に一致する全てのトークンを禁止します.
11646: 
11647: @defmac m4_pattern_forbid (@var{pattern})
11648: @msindex pattern_forbid
11649: @c Declare that no token matching @var{pattern} must be found in the output.
11650: @c Comments are not checked; this can be a problem if, for instance, you
11651: @c have some macro left unexpanded after an @samp{#include}.  No consensus
11652: @c is currently found in the Autoconf community, as some people consider it
11653: @c should be valid to name macros in comments (which doesn't makes sense to
11654: @c the author of this documentation, as @samp{#}-comments should document
11655: @c the output, not the input, documented by @samp{dnl} comments).
11656: @c 
11657: 出力で見つかる必要のある@var{pattern}にマッチするトークンを宣言しません.
11658: コメントは調査されません.これは,例えば,@samp{#include}より後に展開さ
11659: れないまま残っているマクロがある場合に問題になるはずです.現在,Autoconf 
11660: コミュニティでは合意がとおらず,コメント内で指名されているマクロを有効に
11661: すべきだと考えている人もいるからです(@samp{#}のコメントは出力を説明する
11662: べきで,@samp{dnl}コメントのように入力を説明するのではないため,このドキュ
11663: メントの著者には意味がありません).
11664: @end defmac
11665: 
11666: @c Of course, you might encounter exceptions to these generic rules, for
11667: @c instance you might have to refer to @samp{$m4_flags}.
11668: @c 
11669: もちろん,これらの一般的な規則の例外に遭遇する可能性もあり,例えば,
11670: @samp{$m4_flags}を参照する必要があるかもしれません.
11671: 
11672: @defmac m4_pattern_allow (@var{pattern})
11673: @msindex pattern_allow
11674: @c Any token matching @var{pattern} is allowed, including if it matches an
11675: @c @code{m4_pattern_forbid} pattern.
11676: @c 
11677: @var{pattern}に一致している全てのトークンが可能で,それには
11678: @code{m4_pattern_forbid}パターンに一致しているものも含まれます.
11679: @end defmac
11680: 
11681: @node Programming in M4sh
11682: @c @section Programming in M4sh
11683: @section M4shでのプログラミング
11684: 
11685: @c FIXME: Eventually will become a chapter, as it is not related to
11686: @c programming in M4 per se.
11687: 
11688: @c M4sh, pronounced ``mash'', is aiming at producing portable Bourne shell
11689: @c scripts.  This name was coined by Lars J. Aas, who notes that,
11690: @c according to the Webster's Revised Unabridged Dictionary (1913):
11691: @c 
11692: M4shは,``mash''と発音し,移植性の高いBourneシェルスクリプトを生成するこ
11693: とが狙いです.この名前はLars J. Aasが発明し,Webster's Revised
11694: Unabridged Dictionary (1913)にメモがあります@footnote{訳注:これだからア
11695: メリカンジョークは@enddots{}}.
11696: 
11697: @quotation
11698: @c Mash \Mash\, n.  [Akin to G. meisch, maisch, meische, maische, mash,
11699: @c wash, and prob. to AS.@: miscian to mix.  See ``Mix''.]
11700: @c 
11701: Mash \Mash\, 名詞. [Akin to G. meisch, maisch, meische, maische, mash,
11702: wash, and prob. to AS.@: miscian to mix.  参照``Mix''.]
11703: 
11704: @enumerate 1
11705: @item
11706: @c A mass of mixed ingredients reduced to a soft pulpy state by beating or
11707: @c pressure@enddots{}
11708: @c 
11709: 混合成分の塊を,こう解や圧搾でパルプ状に軟らかくして絞った@enddots{}
11710: 
11711: @item
11712: @c A mixture of meal or bran and water fed to animals.
11713: @c 
11714: 動物に与える粉餌やぬかと水を混ぜたもの.
11715: 
11716: @item
11717: @c A mess; trouble.  [Obs.] --Beau.@: & Fl.
11718: @c 
11719: 混乱.トラブル.  [Obs.] --Beau.@: & Fl.
11720: @end enumerate
11721: @end quotation
11722: 
11723: 
11724: @c For the time being, it is not mature enough to be widely used.
11725: @c 
11726: 今しばらくは,広範囲の使用に十分なほど熟していません.
11727: 
11728: @c M4sh provides portable alternatives for some common shell constructs
11729: @c that unfortunately are not portable in practice.
11730: @c 
11731: M4shは,実験してみると残念ながら移植性が無い,一般的なシェルの構成に対す
11732: る移植性の高い代替物を提供しています.
11733: 
11734: @defmac AS_DIRNAME (@var{pathname})
11735: @msindex DIRNAME
11736: @c Return the directory portion of @var{pathname}, using the algorithm
11737: @c required by @sc{posix}.  @xref{Limitations of Usual Tools}, for more
11738: @c details about what this returns and why it is more portable than the
11739: @c @command{dirname} command.
11740: @c 
11741: @sc{posix}で要求されるアルゴリズムを使用しながら,@var{pathname}のディレ
11742: クトリ部分を返します.これが返すものと,それが@command{dirname}コマンド
11743: より移植性が高い理由の詳細は,@xref{Limitations of Usual Tools}.
11744: @end defmac
11745: 
11746: @defmac AS_MKDIR_P (@var{filename})
11747: @msindex MKDIR_P
11748: @c Make the directory @var{filename}, including intervening directories
11749: @c as necessary.  This is equivalent to @samp{mkdir -p @var{filename}},
11750: @c except that it is portable to older versions of @command{mkdir} that
11751: @c lack support for the @option{-p} option.
11752: @c 
11753: 間に入る必要なディレクトリを含め,ディレクトリ@var{filename}を作成します.
11754: これは@samp{mkdir -p @var{filename}}と等価ですが,@option{-p}オプション
11755: が無い古いバージョンの@command{mkdir}に移植性を持たせます.
11756: @end defmac
11757: 
11758: @c=================================================== Writing Autoconf Macros.
11759: 
11760: @node Writing Autoconf Macros
11761: @c @chapter Writing Autoconf Macros
11762: @chapter Autoconfマクロを書く
11763: 
11764: @c When you write a feature test that could be applicable to more than one
11765: @c software package, the best thing to do is encapsulate it in a new macro.
11766: @c Here are some instructions and guidelines for writing Autoconf macros.
11767: @c 
11768: 一つ以上のソフトウェアパッケージに適用する特徴テストを書くとき,新しいマ
11769: クロの中にそれをカプセル化することが最も良い方法です.Autoconfマクロを書
11770: くための説明とガイドラインは以下のようになります.
11771: 
11772: @menu
11773: * Macro Definitions::           Basic format of an Autoconf macro
11774: * Macro Names::                 What to call your new macros
11775: * Reporting Messages::          Notifying @command{autoconf} users
11776: * Dependencies Between Macros::  What to do when macros depend on other macros
11777: * Obsoleting Macros::           Warning about old ways of doing things
11778: * Coding Style::                Writing Autoconf macros @`a la Autoconf
11779: @end menu
11780: 
11781: @node Macro Definitions
11782: @c @section Macro Definitions
11783: @section マクロの定義
11784: 
11785: @acindex DEFUN
11786: @c Autoconf macros are defined using the @code{AC_DEFUN} macro, which is
11787: @c similar to the M4 builtin @code{m4_define} macro.  In addition to
11788: @c defining a macro, @code{AC_DEFUN} adds to it some code that is used to
11789: @c constrain the order in which macros are called (@pxref{Prerequisite
11790: @c Macros}).
11791: @c 
11792: Autoconfマクロは,M4組み込みの@code{m4_define}マクロに似た
11793: @code{AC_DEFUN}マクロを使用して定義されています.マクロ定義に加える際,
11794: @code{AC_DEFUN}は,マクロを呼び出す順番を制限するために使用されるコード
11795: を加えます(@pxref{Prerequisite Macros}).
11796: 
11797: @c An Autoconf macro definition looks like this:
11798: @c 
11799: Autoconfマクロ定義は以下のようになります.
11800: 
11801: @example
11802: AC_DEFUN(@var{macro-name}, @var{macro-body})
11803: @end example
11804: 
11805: @c You can refer to any arguments passed to the macro as @samp{$1},
11806: @c @samp{$2}, etc.  @xref{Definitions,, How to define new macros, m4.info,
11807: @c GNU m4}, for more complete information on writing M4 macros.
11808: @c 
11809: マクロに渡す引数は,@samp{$1},@samp{$2}等のように参照することが可能です.
11810: M4マクロを書く際の完全な情報は,@xref{Definitions, , How to define new
11811: macros, m4.info, GNU m4}.
11812: 
11813: @c Be sure to properly quote both the @var{macro-body} @emph{and} the
11814: @c @var{macro-name} to avoid any problems if the macro happens to have
11815: @c been previously defined.
11816: @c 
11817: マクロが偶然前に定義されている場合の問題を避けるために,
11818: @var{macro-body}@emph{と}@var{macro-name}の両方を,適切に引用符で囲んで
11819: いることを確かめてください.
11820: 
11821: @c Each macro should have a header comment that gives its prototype, and a
11822: @c brief description.  When arguments have default values, display them in
11823: @c the prototype.  For example:
11824: @c 
11825: それぞれのマクロには,そのプロトタイプと短い説明を付与するため,ヘッダの
11826: コメントを書くべきです.引数がデフォルト値の場合,そのプロトタイプを表示
11827: してください.例えば以下のようにします.
11828: 
11829: @example
11830: # AC_MSG_ERROR(ERROR, [EXIT-STATUS = 1])
11831: # --------------------------------------
11832: m4_define([AC_MSG_ERROR],
11833: [@{ _AC_ECHO([configure: error: $1], 2); exit m4_default([$2], 1); @}])
11834: @end example
11835: 
11836: @c Comments about the macro should be left in the header comment.  Most
11837: @c other comments will make their way into @file{configure}, so just keep
11838: @c using @samp{#} to introduce comments.
11839: @c 
11840: マクロに関するコメントは,ヘッダコメントに残すべきです.その他のほとんど
11841: のコメントは,勝手に@file{configure}に入るので,コメントを導入するために
11842: @samp{#}を使用し続けるだけで結構です.
11843: 
11844: @cindex @code{dnl}
11845: @c If you have some very special comments about pure M4 code, comments
11846: @c that make no sense in @file{configure} and in the header comment, then
11847: @c use the builtin @code{dnl}: it causes @code{m4} to discard the text
11848: @c through the next newline.
11849: @c 
11850: ピュアなM4コードに関して,非常に特殊なコメントがある場合は,コメントを
11851: @file{configure}とヘッダコメントに入れる意味がないので,組み込みの
11852: @code{dnl}を使用してください.それで@code{m4}は,次の改行までのテキスト
11853: を廃棄します.
11854: 
11855: @c Keep in mind that @code{dnl} is rarely needed to introduce comments;
11856: @c @code{dnl} is more useful to get rid of the newlines following macros
11857: @c that produce no output, such as @code{AC_REQUIRE}.
11858: @c 
11859: @code{dnl}がコメントの導入に必要になることは滅多にないということを覚えて
11860: おいてください.@code{dnl}は,@code{AC_REQUIRE}のような,出力を生成しな
11861: いマクロに続く改行を除去するときに,より役に立ちます.
11862: 
11863: 
11864: @node Macro Names
11865: @c @section Macro Names
11866: @section マクロ名
11867: 
11868: @c All of the Autoconf macros have all-uppercase names starting with
11869: @c @samp{AC_} to prevent them from accidentally conflicting with other
11870: @c text.  All shell variables that they use for internal purposes have
11871: @c mostly-lowercase names starting with @samp{ac_}.  To ensure that your
11872: @c macros don't conflict with present or future Autoconf macros, you should
11873: @c prefix your own macro names and any shell variables they use with some
11874: @c other sequence.  Possibilities include your initials, or an abbreviation
11875: @c for the name of your organization or software package.
11876: @c 
11877: 全てのAutoconfマクロは,他のテキストと偶然衝突することを避けるため 
11878: @samp{AC_}で始まる全て大文字の名前になっています.内部目的で使用する全て
11879: のシェル変数は,@samp{ac_}で始まるほとんど小文字の名前になっています.マ
11880: クロが,現在または将来のAutoconfマクロと衝突しないことを保証するため,マ
11881: クロ名と他の手続きで使用するシェル変数に,独自の接頭辞を付けてください.
11882: 可能性としては,イニシャルや組織やソフトウェアパッケージの名前の省略を含
11883: めることになるでしょう.
11884: 
11885: @c Most of the Autoconf macros' names follow a structured naming convention
11886: @c that indicates the kind of feature check by the name.  The macro names
11887: @c consist of several words, separated by underscores, going from most
11888: @c general to most specific.  The names of their cache variables use the
11889: @c same convention (@pxref{Cache Variable Names}, for more information on
11890: @c them).
11891: @c 
11892: ほとんどのAutoconfマクロ名は,名前によって調査している特徴の種類を示す,
11893: 構造化された命名則に続きます.複数の単語から成り立つマクロ名は,アンダー
11894: スコアで分けられ,最も一般的なものから最も特殊なものへとなっています.
11895: キャッシュ変数の名前も,同じ規則を使用しています(詳細は@pxref{Cache
11896: Variable Names}).
11897: 
11898: @c The first word of the name after @samp{AC_} usually tells the category
11899: @c of the feature being tested.  Here are the categories used in Autoconf for
11900: @c specific test macros, the kind of macro that you are more likely to
11901: @c write.  They are also used for cache variables, in all-lowercase.  Use
11902: @c them where applicable; where they're not, invent your own categories.
11903: @c 
11904: @samp{AC_}の後の名前の最初の単語は,通常テストしている特徴のカテゴリを伝
11905: えるものです.よく書くマクロの種類のテストマクロを指定するため,Autoconf
11906: が使用するカテゴリは以下のようになっています.それらはキャッシュ変数でも
11907: 全て小文字で使用されます.適用可能なものを使用してください.無ければ独自
11908: のカテゴリを考え出してください.
11909: 
11910: @table @code
11911: @item C
11912: @c C language builtin features.
11913: @c 
11914: C言語組み込み特徴.
11915: @item DECL
11916: @c Declarations of C variables in header files.
11917: @c 
11918: ヘッダファイルでのC変数の宣言.
11919: @item FUNC
11920: @c Functions in libraries.
11921: @c 
11922: ライブラリの関数.
11923: @item GROUP
11924: @c @sc{unix} group owners of files.
11925: @c 
11926: ファイルの@sc{unix}グループオーナー.
11927: @item HEADER
11928: @c Header files.
11929: @c 
11930: ヘッダファイル.
11931: @item LIB
11932: @c C libraries.
11933: @c 
11934: Cライブラリ.
11935: @item PATH
11936: @c The full path names to files, including programs.
11937: @c 
11938: プログラムを含むファイルのフルパス名.
11939: @item PROG
11940: @c The base names of programs.
11941: @c 
11942: プログラムのベース名.
11943: @item MEMBER
11944: @c Members of aggregates.
11945: @c 
11946: 集合体のメンバ.
11947: @item SYS
11948: @c Operating system features.
11949: @c 
11950: オペレーティングシステムの特徴.
11951: @item TYPE
11952: @c C builtin or declared types.
11953: @c 
11954: C組み込みや宣言されている型.
11955: @item VAR
11956: @c C variables in libraries.
11957: @c 
11958: ライブラリのC変数.
11959: @end table
11960: 
11961: @c After the category comes the name of the particular feature being
11962: @c tested.  Any further words in the macro name indicate particular aspects
11963: @c of the feature.  For example, @code{AC_FUNC_UTIME_NULL} checks the
11964: @c behavior of the @code{utime} function when called with a @code{NULL}
11965: @c pointer.
11966: @c 
11967: カテゴリの後には,特定の特徴をテストしている名前が来ます.マクロ名のそれ
11968: 以外の単語は,特徴の特定の側面を示します.例えば,
11969: @code{AC_FUNC_UTIME_NULL}は,@code{NULL}ポインタで呼び出されたときの 
11970: @code{utime}関数の動作を調査します.
11971: 
11972: @c An internal macro should have a name that starts with an underscore;
11973: @c Autoconf internals should therefore start with @samp{_AC_}.
11974: @c Additionally, a macro that is an internal subroutine of another macro
11975: @c should have a name that starts with an underscore and the name of that
11976: @c other macro, followed by one or more words saying what the internal
11977: @c macro does.  For example, @code{AC_PATH_X} has internal macros
11978: @c @code{_AC_PATH_X_XMKMF} and @code{_AC_PATH_X_DIRECT}.
11979: @c 
11980: 内部マクロは,アンダースコアで始まる名前にすべきです.そのため,Autoconf 
11981: 内部のものは@samp{_AC_}で始まります.さらに,他のマクロ内部のサブルーチ
11982: ンとなるマクロは,アンダースコアと他のマクロ名ではじまり,内部マクロが行
11983: うことを伝える一つ以上の単語が続きます.例えば, @code{AC_PATH_X}は,内
11984: 部マクロに@code{_AC_PATH_X_XMKMF}と@code{_AC_PATH_X_DIRECT}があります.
11985: 
11986: @node Reporting Messages
11987: @c @section Reporting Messages
11988: @section メッセージの報告
11989: @cindex Messages, from @command{autoconf}
11990: 
11991: @c When macros statically diagnose abnormal situations, benign or fatal,
11992: @c they should report them using these macros.  For dynamic issues, i.e.,
11993: @c when @command{configure} is run, see @ref{Printing Messages}.
11994: @c 
11995: マクロが良性または悪性の異常な状況を静的に診断しているとき,以下のマクロ
11996: を使用してそれを報告すべきです.動的な発行,すなわち@command{configure}
11997: が実行されているときは,@ref{Printing Messages}を参照してください.
11998: 
11999: @defmac AC_DIAGNOSE (@var{category}, @var{message})
12000: @acindex DIAGNOSE
12001: @c Report @var{message} as a warning (or as an error if requested by the
12002: @c user) if warnings of the @var{category} are turned on.  You are encouraged to use
12003: @c standard categories, which currently include:
12004: @c 
12005: @var{category}の警告をオンにしている場合,@var{message}を警告として(また
12006: はユーザが要求する場合はエラーとして)報告します.以下の現在含められてい
12007: る標準的なカテゴリを使用することを勧めます.
12008: 
12009: @table @samp
12010: @item all
12011: @c messages that don't fall into one of the following categories.  Use of an
12012: @c empty @var{category} is equivalent.
12013: @c 
12014: 以下のカテゴリの一つに分類されないメッセージです.空の@var{category}を使
12015: 用することと等価です.
12016: 
12017: @item cross
12018: @c related to cross compilation issues.
12019: @c 
12020: クロスコンパイルに関連する問題です.
12021: 
12022: @item obsolete
12023: @c use of an obsolete construct.
12024: @c 
12025: 時代遅れの構成の使用です.
12026: 
12027: @item syntax
12028: @c dubious syntactic constructs, incorrectly ordered macro calls.
12029: @c 
12030: 曖昧な構文構成,間違った順序のマクロ呼び出しです.
12031: @end table
12032: @end defmac
12033: 
12034: @defmac AC_WARNING (@var{message})
12035: @acindex WARNING
12036: @c Equivalent to @samp{AC_DIAGNOSE([syntax], @var{message})}, but you are
12037: @c strongly encouraged to use a finer grained category.
12038: @c 
12039: @samp{AC_DIAGNOSE([syntax], @var{message})}と等価ですが,より良く分類さ
12040: れているカテゴリを使用することを推奨します.
12041: @end defmac
12042: 
12043: @defmac AC_FATAL (@var{message})
12044: @acindex FATAL
12045: @c Report a severe error @var{message}, and have @command{autoconf} die.
12046: @c 
12047: サーバエラー@var{message}を報告し,@command{autoconf}は終了します.
12048: @end defmac
12049: 
12050: @c When the user runs @samp{autoconf -W error}, warnings from
12051: @c @code{AC_DIAGNOSE} and @code{AC_WARNING} are reported as error, see
12052: @c @ref{autoconf Invocation}.
12053: @c 
12054: ユーザが@samp{autoconf -W error}を実行しているとき,@code{AC_DIAGNOSE}と
12055: @code{AC_WARNING}からの警告はエラーとして報告されます.@ref{autoconf
12056: Invocation}を参照してください.
12057: 
12058: @node Dependencies Between Macros
12059: @c @section Dependencies Between Macros
12060: @section マクロ間の依存性
12061: 
12062: @c Some Autoconf macros depend on other macros having been called first in
12063: @c order to work correctly.  Autoconf provides a way to ensure that certain
12064: @c macros are called if needed and a way to warn the user if macros are
12065: @c called in an order that might cause incorrect operation.
12066: @c 
12067: 正確に動作するために,最初に他のマクロが呼び出されていることに依存する
12068: Autoconfマクロもあります.Autoconfは,必要な場合はある特定のマクロが呼び
12069: 出されていることを保証する方法と,マクロが間違った処理を引き起こす順序で
12070: 呼び出された場合に警告する方法を供給します.
12071: 
12072: @menu
12073: * Prerequisite Macros::         Ensuring required information
12074: * Suggested Ordering::          Warning about possible ordering problems
12075: @end menu
12076: 
12077: @node Prerequisite Macros
12078: @c @subsection Prerequisite Macros
12079: @subsection マクロの必要条件
12080: 
12081: @c A macro that you write might need to use values that have previously
12082: @c been computed by other macros.  For example, @code{AC_DECL_YYTEXT}
12083: @c examines the output of @code{flex} or @code{lex}, so it depends on
12084: @c @code{AC_PROG_LEX} having been called first to set the shell variable
12085: @c @code{LEX}.
12086: @c 
12087: 書いているマクロが,以前に他のマクロが計算した値を使用する必要があるかも
12088: しれません.例えば,@code{AC_DECL_YYTEXT}は,@code{flex}や@code{lex}の出
12089: 力を調査するので,シェル変数 @code{LEX}を設定するために,
12090: @code{AC_PROG_LEX}が最初に呼び出されていることに依存します.
12091: 
12092: @c Rather than forcing the user of the macros to keep track of the
12093: @c dependencies between them, you can use the @code{AC_REQUIRE} macro to do
12094: @c it automatically.  @code{AC_REQUIRE} can ensure that a macro is only
12095: @c called if it is needed, and only called once.
12096: @c 
12097: マクロのユーザにそれら間の依存性を追跡させるより,自動的にするために 
12098: @code{AC_REQUIRE}を使用することが可能です.@code{AC_REQUIRE}は,必要な場
12099: 合のみマクロが呼び出され,そして一度だけ呼び出されることを保証します.
12100: 
12101: @defmac AC_REQUIRE (@var{macro-name})
12102: @acindex REQUIRE
12103: @c If the M4 macro @var{macro-name} has not already been called, call it
12104: @c (without any arguments).  Make sure to quote @var{macro-name} with
12105: @c square brackets.  @var{macro-name} must have been defined using
12106: @c @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
12107: @c that it has been called.
12108: @c 
12109: M4マクロ@var{macro-name}がまだ呼び出されていない場合,それを(引数無しで) 
12110: 呼び出します.角カッコで@var{macro-name}を囲んでいることを確認してくださ
12111: い.@var{macro-name}は,@code{AC_DEFUN}を使用して定義されている,または
12112: 呼び出されていることを示す@code{AC_PROVIDE}の呼び出しを含んでいる必要が
12113: あります.
12114: 
12115: @c @code{AC_REQUIRE} must be used inside an @code{AC_DEFUN}'d macro; it
12116: @c must not be called from the top level.
12117: @c 
12118: @code{AC_REQUIRE}は@code{AC_DEFUN}マクロの内部で使用する必要があります.
12119: それはトップレベルから呼び出してはなりません.
12120: @end defmac
12121: 
12122: @c @code{AC_REQUIRE} is often misunderstood.  It really implements
12123: @c dependencies between macros in the sense that if one macro depends upon
12124: @c another, the latter will be expanded @emph{before} the body of the
12125: @c former.  In particular, @samp{AC_REQUIRE(FOO)} is not replaced with the
12126: @c body of @code{FOO}.  For instance, this definition of macros:
12127: @c 
12128: @code{AC_REQUIRE}はよく誤解されます.一つのマクロが他のものに依存してい
12129: る場合,後者は前者の本体の@emph{前に}展開されるように,それはマクロ間の
12130: 依存性を実装しています.特に,@samp{AC_REQUIRE(FOO)}は,@code{FOO}の本体
12131: では置換されません.例えば,マクロを以下のように定義したとします.
12132: 
12133: @example
12134: @group
12135: AC_DEFUN([TRAVOLTA],
12136: [test "$body_temperature_in_celsius" -gt "38" &&
12137:   dance_floor=occupied])
12138: AC_DEFUN([NEWTON_JOHN],
12139: [test "$hair_style" = "curly" &&
12140:   dance_floor=occupied])
12141: @end group
12142: 
12143: @group
12144: AC_DEFUN([RESERVE_DANCE_FLOOR],
12145: [if date | grep '^Sat.*pm' >/dev/null 2>&1; then
12146:   AC_REQUIRE([TRAVOLTA])
12147:   AC_REQUIRE([NEWTON_JOHN])
12148: fi])
12149: @end group
12150: @end example
12151: 
12152: @noindent
12153: @c with this @file{configure.ac}
12154: @c 
12155: これを@file{configure.ac}で使用します.
12156: 
12157: @example
12158: AC_INIT
12159: RESERVE_DANCE_FLOOR
12160: if test "$dance_floor" = occupied; then
12161:   AC_MSG_ERROR([cannot pick up here, let's move])
12162: fi
12163: @end example
12164: 
12165: @noindent
12166: @c will not leave you with a better chance to meet a kindred soul at
12167: @c other times than Saturday night since it expands into:
12168: @c 
12169: それは以下のように展開されるので,土曜日の夜以外に仲間に会う機会が残って
12170: いません.
12171: 
12172: @example
12173: @group
12174: test "$body_temperature_in_Celsius" -gt "38" &&
12175:   dance_floor=occupied
12176: test "$hair_style" = "curly" &&
12177:   dance_floor=occupied
12178: fi
12179: if date | grep '^Sat.*pm' >/dev/null 2>&1; then
12180: 
12181: 
12182: fi
12183: @end group
12184: @end example
12185: 
12186: @c This behavior was chosen on purpose: (i) it prevents messages in
12187: @c required macros from interrupting the messages in the requiring macros;
12188: @c (ii) it avoids bad surprises when shell conditionals are used, as in:
12189: @c 
12190: この動作は意図的に選択されました.(i) それは要求されるマクロのメッセージ
12191: が,要求しているマクロのメッセージとして解釈されることを妨げます.(ii) 
12192: それは,シェルの条件文が使用されるときひどく驚くことを妨げます.以下のよ
12193: うになります.
12194: 
12195: @example
12196: @group
12197: if @dots{}; then
12198:   AC_REQUIRE([SOME_CHECK])
12199: fi
12200: @dots{}
12201: SOME_CHECK
12202: @end group
12203: @end example
12204: 
12205: 
12206: @c You are encouraged to put all @code{AC_REQUIRE}s at the beginning of a
12207: @c macro.  You can use @code{dnl} to avoid the empty lines they leave.
12208: @c 
12209: マクロの最初に全ての@code{AC_REQUIRE}を書き込むことを推奨します.空の行
12210: が残ることを避けるため,@code{dnl}を使用することが可能です.
12211: 
12212: @node Suggested Ordering
12213: @c @subsection Suggested Ordering
12214: @subsection 推奨される順序
12215: 
12216: @c Some macros should be run before another macro if both are called, but
12217: @c neither @emph{requires} that the other be called.  For example, a macro
12218: @c that changes the behavior of the C compiler should be called before any
12219: @c macros that run the C compiler.  Many of these dependencies are noted in
12220: @c the documentation.
12221: @c 
12222: 両方が呼び出されても,片方がもう一方が呼び出されることを@emph{要求}しな
12223: い場合,もう一方のマクロの前に実行するすべきマクロもあります.例えば,C 
12224: コンパイラの動作を変更するマクロは,Cコンパイラを実行するあらゆるマクロ
12225: の前に呼び出されるべきです.これらの依存性の多くはドキュメントに記されて
12226: います.
12227: 
12228: @c Autoconf provides the @code{AC_BEFORE} macro to warn users when macros
12229: @c with this kind of dependency appear out of order in a
12230: @c @file{configure.ac} file.  The warning occurs when creating
12231: @c @command{configure} from @file{configure.ac}, not when running
12232: @c @command{configure}.
12233: @c 
12234: Autoconfは,これらの依存性を持つマクロが@file{configure.ac}ファイルで順
12235: 序が間違って現れるとき,ユーザに警告する@code{AC_BEFORE}を提供しています.
12236: 警告は,@file{configure.ac}から@command{configure}を作成するときに発生し
12237: ますが,@command{configure}実行時には発生しません.
12238: 
12239: @c For example, @code{AC_PROG_CPP} checks whether the C compiler
12240: @c can run the C preprocessor when given the @option{-E} option.  It should
12241: @c therefore be called after any macros that change which C compiler is
12242: @c being used, such as @code{AC_PROG_CC}.  So @code{AC_PROG_CC} contains:
12243: @c 
12244: 例えば@code{AC_PROG_CPP}は,Cコンパイラに@samp{-E}オプションが与えられて
12245: いるとき,Cプリプロセッサが実行可能かどうか調査します.従って,使用され
12246: るCコンパイラが変更される@code{AC_PROG_CC}のようなマクロの後で,それは呼
12247: び出すべきです.そのため,@code{AC_PROG_CC}は以下を含んでいます.
12248: 
12249: @example
12250: AC_BEFORE([$0], [AC_PROG_CPP])dnl
12251: @end example
12252: 
12253: @noindent
12254: @c This warns the user if a call to @code{AC_PROG_CPP} has already occurred
12255: @c when @code{AC_PROG_CC} is called.
12256: @c 
12257: これで,@code{AC_PROG_CC}が呼び出されたとき,@code{AC_PROG_CPP}が既に呼
12258: び出されている場合,ユーザに警告します.
12259: 
12260: @defmac AC_BEFORE (@var{this-macro-name}, @var{called-macro-name})
12261: @acindex BEFORE
12262: @c Make @code{m4} print a warning message to the standard error output if
12263: @c @var{called-macro-name} has already been called.  @var{this-macro-name}
12264: @c should be the name of the macro that is calling @code{AC_BEFORE}.  The
12265: @c macro @var{called-macro-name} must have been defined using
12266: @c @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
12267: @c that it has been called.
12268: @c 
12269: @var{called-macro-name}が既に呼び出されている場合,@code{m4}は標準エラー
12270: 出力に警告メッセージを出力します.@var{this-macro-name}は,
12271: @code{AC_BEFORE}を呼び出すマクロの名前にすべきです.マクロ
12272: @var{called-macro-name}は,@code{AC_DEFUN}を使用して定義されている,また
12273: は呼び出されていることを示す@code{AC_PROVIDE}の呼び出しを含んでいる必要
12274: があります.
12275: @end defmac
12276: 
12277: @node Obsoleting Macros
12278: @c @section Obsoleting Macros
12279: @section 時代遅れのマクロ
12280: 
12281: @c Configuration and portability technology has evolved over the years.
12282: @c Often better ways of solving a particular problem are developed, or
12283: @c ad-hoc approaches are systematized.  This process has occurred in many
12284: @c parts of Autoconf.  One result is that some of the macros are now
12285: @c considered @dfn{obsolete}; they still work, but are no longer considered
12286: @c the best thing to do, hence they should be replaced with more modern
12287: @c macros.  Ideally, @command{autoupdate} should replace the old macro calls
12288: @c with their modern implementation.
12289: @c 
12290: コンフィグレーションと移植性の技術は,何年もかかって進展しました.特定の
12291: 問題を解決するより良い方法が開発されたり,特別なアプローチが体系化される
12292: ことはよくあります.この過程はAutoconfの数多くの部分で発生しました.一つ
12293: の結果は,今では@dfn{時代遅れ}と思われるマクロの存在です.まだ動作します
12294: が,すでにそれが最善の方法ではなくなっていて,より近代的なマクロで置換す
12295: べきでしょう.理想的には,@command{autoupdate}が古いマクロの呼び出しを現
12296: 在のマクロに置換すべきでしょう.
12297: 
12298: @c Autoconf provides a simple means to obsolete a macro.
12299: @c 
12300: Autoconfは,マクロが時代遅れだということを意味する単純なものを提供してい
12301: ます.
12302: 
12303: @defmac AU_DEFUN (@var{old-macro}, @var{implementation}, @ovar{message})
12304: @acindex DEFUN
12305: @acindex AU_DEFUN
12306: @c Define @var{old-macro} as @var{implementation}.  The only difference
12307: @c with @code{AC_DEFUN} is that the user will be warned that
12308: @c @var{old-macro} is now obsolete.
12309: @c 
12310: @var{implementation}として@var{old-macro}を定義します.@code{AC_DEFUN}を
12311: 用いたものとは,@var{old-macro}が現在は時代遅れだという警告をユーザが受
12312: けるところだけが異なります.
12313: 
12314: @c If she then uses @command{autoupdate}, the call to @var{old-macro} will be
12315: @c replaced by the modern @var{implementation}.  The additional
12316: @c @var{message} is then printed.
12317: @c 
12318: @command{autoupdate}を使用する場合,@var{old-macro}の呼び出しは現在の
12319: @var{implementation}で置換されます.更に,@var{message}が出力されます.
12320: @end defmac
12321: 
12322: @node Coding Style
12323: @c @section Coding Style
12324: @section コーディングスタイル
12325: 
12326: @c The Autoconf macros follow a strict coding style.  You are encouraged to
12327: @c follow this style, especially if you intend to distribute your macro,
12328: @c either by contributing it to Autoconf itself, or via other means.
12329: @c 
12330: Autoconfマクロはスクリプトコーディングスタイルに従います.以下のスタイル
12331: に従うように推奨し,特に,Autoconf自身に寄稿したり,その他の目的で,マク
12332: ロを配布する目的がある場合はそうしてください.
12333: 
12334: @c The first requirement is to pay great attention to the quotation.  For
12335: @c more details, see @ref{Autoconf Language}, and @ref{M4 Quotation}.
12336: @c 
12337: 最初に必要なことは,引用符に大きく注意を払うことです.詳細は,
12338: @ref{Autoconf Language}と@ref{M4 Quotation}を参照してください.
12339: 
12340: @c Do not try to invent new interfaces.  It is likely that there is a macro
12341: @c in Autoconf that resembles the macro you are defining: try to stick to
12342: @c this existing interface (order of arguments, default values, etc.).  We
12343: @c @emph{are} conscious that some of these interfaces are not perfect;
12344: @c nevertheless, when harmless, homogeneity should be preferred over
12345: @c creativity.
12346: @c 
12347: 新たなインターフェースの発明は試みないでください.定義しているマクロに似
12348: ているAutoconfマクロが存在することはよくあります.この既存のインターフェー
12349: スに従ってみてください(引数の順序,デフォルト値,等々).我々は,これらの
12350: インターフェースに完全でないものがあることは,意識@emph{しています}.そ
12351: れにもかかわらず,無害なときは,創造性より均質性が好まれるでしょう.
12352: 
12353: @c Be careful about clashes both between M4 symbols and between shell
12354: @c variables.
12355: @c 
12356: M4シンボル間とシェル変数間の両方の衝突に注意してください.
12357: 
12358: @c If you stick to the suggested M4 naming scheme (@pxref{Macro Names}),
12359: @c you are unlikely to generate conflicts.  Nevertheless, when you need to
12360: @c set a special value, @emph{avoid using a regular macro name}; rather,
12361: @c use an ``impossible'' name.  For instance, up to version 2.13, the macro
12362: @c @code{AC_SUBST} used to remember what @var{symbol}s were already defined
12363: @c by setting @code{AC_SUBST_@var{symbol}}, which is a regular macro name.
12364: @c But since there is a macro named @code{AC_SUBST_FILE}, it was just
12365: @c impossible to @samp{AC_SUBST(FILE)}!  In this case,
12366: @c @code{AC_SUBST(@var{symbol})} or @code{_AC_SUBST(@var{symbol})} should
12367: @c have been used (yes, with the parentheses)@dots{}or better yet, high-level
12368: @c macros such as @code{AC_EXPAND_ONCE}.
12369: @c 
12370: 推奨されるM4命名規則(@pxref{Macro Names})に従う場合,衝突が生じることは
12371: あまりないでしょう.それにもかかわらず,特殊な値を設定する必要があるとき,
12372: @emph{通常のマクロ名を使用することを避けてください}.``信じられない''名
12373: 前を使用する代わりです.例えば,バージョン2.13までは,通常のマクロ名
12374: @code{AC_SUBST_@var{symbol}}を設定することで既に定義されている
12375: @var{symbol}を記憶するため,マクロ@code{AC_SUBST}を使用していました.し
12376: かし,@code{AC_SUBST_FILE}と命名されているマクロが存在するので,
12377: @samp{AC_SUBST(FILE)}を使用することはできませんでした!この場合,
12378: @code{AC_SUBST(@var{symbol})}や@code{_AC_SUBST(@var{symbol})}が使用され
12379: るべきでした(そうです,カッコは使用します)@dots{}または,より良い方法と
12380: して,@code{AC_EXPAND_ONCE}のようなハイレベルのマクロを使用すべきでした.
12381: 
12382: @c No Autoconf macro should ever enter the user-variable name space; i.e.,
12383: @c except for the variables that are the actual result of running the
12384: @c macro, all shell variables should start with @code{ac_}.  In
12385: @c addition, small macros or any macro that is likely to be embedded in
12386: @c other macros should be careful not to use obvious names.
12387: @c 
12388: Autoconfマクロは,ユーザ変数の名前空間に入るべきではありません.すなわち,
12389: 実際のマクロの実行結果となる変数以外の,全てシェル変数は@code{ac_}で始め
12390: るべきです.さらに,小さなマクロや他のマクロに埋め込まれるようなマクロは,
12391: 明示的な名前を使用しないように注意すべきです.
12392: 
12393: @cindex @code{dnl}
12394: @c Do not use @code{dnl} to introduce comments: most of the comments you
12395: @c are likely to write are either header comments which are not output
12396: @c anyway, or comments that should make their way into @file{configure}.
12397: @c There are exceptional cases where you do want to comment special M4
12398: @c constructs, in which case @code{dnl} is right, but keep in mind that it
12399: @c is unlikely.
12400: @c 
12401: コメントを導入するために,@code{dnl}を使用しないでください.書こうとして
12402: いるコメントのほとんどは,出力されないヘッダコメント,または,
12403: @file{configure}に書かれるべきコメントです.特殊なM4の構成のコメントが欲
12404: しい場合は例外があり,その場合は@code{dnl}が正しいのですが,あまりないこ
12405: とだということを覚えておいてください.
12406: 
12407: @c M4 ignores the leading spaces before each argument, use this feature to
12408: @c indent in such a way that arguments are (more or less) aligned with the
12409: @c opening parenthesis of the macro being called.  For instance, instead of
12410: @c 
12411: M4は,引数に前置されるスペースを無視します.呼び出されているマクロの開カッ
12412: コに,引数が整列するように字下げするために,この特徴を使用してください.
12413: 例えば,以下の代わりを考えます.
12414: 
12415: @example
12416: AC_CACHE_CHECK(for EMX OS/2 environment,
12417: ac_cv_emxos2,
12418: [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, [return __EMX__;])],
12419: [ac_cv_emxos2=yes], [ac_cv_emxos2=no])])
12420: @end example
12421: 
12422: @noindent
12423: @c write
12424: @c 
12425: 以下のように書いてください.
12426: 
12427: @example
12428: AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
12429: [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
12430:                    [ac_cv_emxos2=yes],
12431:                    [ac_cv_emxos2=no])])
12432: @end example
12433: 
12434: @noindent
12435: @c or even
12436: @c 
12437: または,以下のようにしてください.
12438: 
12439: @example
12440: AC_CACHE_CHECK([for EMX OS/2 environment],
12441:                [ac_cv_emxos2],
12442:                [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
12443:                                                    [return __EMX__;])],
12444:                                   [ac_cv_emxos2=yes],
12445:                                   [ac_cv_emxos2=no])])
12446: @end example
12447: 
12448: @c When using @code{AC_TRY_RUN} or any macro that cannot work when
12449: @c cross-compiling, provide a pessimistic value (typically @samp{no}).
12450: @c 
12451: @code{AC_TRY_RUN}や,クロスコンパイルで動作不可能なマクロを使用している
12452: とき,悲観的な値(通常は@samp{no})を提供してください.
12453: 
12454: @c Feel free to use various tricks to prevent auxiliary tools, such as
12455: @c syntax-highlighting editors, from behaving improperly.  For instance,
12456: @c instead of:
12457: @c 
12458: 構文をハイライト表示するエディタのような,補助ツールが不適切に動作するこ
12459: とを避けるため,様々な手段を自由に使用してください.例えば以下を考えます.
12460: 
12461: @example
12462: m4_bpatsubst([$1], [$"])
12463: @end example
12464: 
12465: @noindent
12466: @c use
12467: @c 
12468: 以下を使用してください.
12469: 
12470: @example
12471: m4_bpatsubst([$1], [$""])
12472: @end example
12473: 
12474: @noindent
12475: @c so that Emacsen do not open an endless ``string'' at the first quote.
12476: @c For the same reasons, avoid:
12477: @c 
12478: それは,Emacsenが最初の引用符で終りのない``文字列''を開いたままにしない
12479: ようにするためです.同じ理由から以下のようなことは避けてください.
12480: 
12481: @example
12482: test $[#] != 0
12483: @end example
12484: 
12485: @noindent
12486: @c and use:
12487: @c 
12488: 以下を使用してください.
12489: 
12490: @example
12491: test $[@@%:@@] != 0
12492: @end example
12493: 
12494: @noindent
12495: @c Otherwise, the closing bracket would be hidden inside a @samp{#}-comment,
12496: @c breaking the bracket-matching highlighting from Emacsen.  Note the
12497: @c preferred style to escape from M4: @samp{$[1]}, @samp{$[@@]}, etc.  Do
12498: @c not escape when it is unnecessary.  Common examples of useless quotation
12499: @c are @samp{[$]$1} (write @samp{$$1}), @samp{[$]var} (use @samp{$var}),
12500: @c etc.  If you add portability issues to the picture, you'll prefer
12501: @c @samp{$@{1+"$[@@]"@}} to @samp{"[$]@@"}, and you'll prefer do something
12502: @c better than hacking Autoconf @code{:-)}.
12503: @c 
12504: そうしない場合,閉カッコは@samp{#}コメント内に隠され,Emacsenのカッコ一
12505: 致のハイライト表示を破壊します.好ましいスタイルは,M4からエスケープされ
12506: るように注意してください.@samp{$[1]},@samp{$[@@]},等です.不必要なと
12507: きにエスケープしないようにしてください.意味のない引用符の一般的な例は,
12508: @samp{[$]$1}(@samp{$$1}と書いてください),@samp{[$]var}(@samp{$var}を使
12509: 用してください),等です.移植性の問題をこの状態に加える場合,
12510: @samp{"[$]@@"}より@samp{$@{1+"$[@@]"@}}にした方が良く,Autoconfをハッキ
12511: ングするより何か他のことをした方が良いでしょう@code{:-)}.
12512: 
12513: @c When using @command{sed}, don't use @option{-e} except for indenting
12514: @c purpose.  With the @code{s} command, the preferred separator is @samp{/}
12515: @c unless @samp{/} itself is used in the command, in which case you should
12516: @c use @samp{,}.
12517: @c 
12518: @command{sed}を使用しているとき,字下げの目的以外で@option{-e}を使用しな
12519: いでください.@code{s}コマンドを用いた場合,@samp{/}自身がコマンドで使用
12520: されない限り,優先されるセパレータは@samp{/}にし,コマンドで使用される場
12521: 合は@samp{,}を使用すべきです.
12522: 
12523: @c @xref{Macro Definitions}, for details on how to define a macro.  If a
12524: @c macro doesn't use @code{AC_REQUIRE} and it is expected to never be the
12525: @c object of an @code{AC_REQUIRE} directive, then use @code{m4_define}.  In
12526: @c case of doubt, use @code{AC_DEFUN}.  All the @code{AC_REQUIRE}
12527: @c statements should be at the beginning of the macro, @code{dnl}'ed.
12528: @c 
12529: マクロ定義の方法の詳細は,@xref{Macro Definitions}.  マクロで
12530: @code{AC_REQUIRE}を使用しておらず,@code{AC_REQUIRE}ディレクティブのオブ
12531: ジェクトがないことを期待する場合,@code{m4_define}を使用してください.疑
12532: わしい場合は,@code{AC_DEFUN}を使用してください.全ての@code{AC_REQUIRE}
12533: 文は,@code{dnl}されているマクロの最初に書くべきです.
12534: 
12535: @c You should not rely on the number of arguments: instead of checking
12536: @c whether an argument is missing, test that it is not empty.  It provides
12537: @c both a simpler and a more predictable interface to the user, and saves
12538: @c room for further arguments.
12539: @c 
12540: 引数の数に依存すべきではありません.引数が足りないことを調査する代わりに,
12541: 空でないことをテストしてください.より簡単でより予測可能なインターフェー
12542: スをユーザに提供し,余分な引数に対する余地を節約してください.
12543: 
12544: @c Unless the macro is short, try to leave the closing @samp{])} at the
12545: @c beginning of a line, followed by a comment that repeats the name of the
12546: @c macro being defined.  This introduces an additional newline in
12547: @c @command{configure}; normally, that is not a problem, but if you want to
12548: @c remove it you can use @samp{[]dnl} on the last line.  You can similarly
12549: @c use @samp{[]dnl} after a macro call to remove its newline.  @samp{[]dnl}
12550: @c is recommended instead of @samp{dnl} to ensure that M4 does not
12551: @c interpret the @samp{dnl} as being attached to the preceding text or
12552: @c macro output.  For example, instead of:
12553: @c 
12554: マクロが短くない場合は,行の最初に@samp{])}を残し,定義されているマクロ
12555: の名前を繰り返すコメントを続けてください.これは,@command{configure}に
12556: 余分な改行を導入します.通常は問題ありませんが,削除したい場合は,行の最
12557: 後に@samp{[]dnl}を使用することが可能です.同様に,マクロ呼び出しの後に,
12558: 改行を削除するため,@samp{[]dnl}を使用することも可能です.M4が@samp{dnl}
12559: をテキストやマクロ出力の前に付けられているものとして解釈しないことを確実
12560: にするため,@samp{[]dnl}は@samp{dnl}の代わりとして推奨されています.例え
12561: ば以下の代わりを考えます.
12562: 
12563: @example
12564: AC_DEFUN([AC_PATH_X],
12565: [AC_MSG_CHECKING([for X])
12566: AC_REQUIRE_CPP()
12567: @r{# @dots{}omitted@dots{}}
12568:   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
12569: fi])
12570: @end example
12571: 
12572: @noindent
12573: @c you would write:
12574: @c 
12575: 以下のように書くべきです.
12576: 
12577: @example
12578: AC_DEFUN([AC_PATH_X],
12579: [AC_REQUIRE_CPP()[]dnl
12580: AC_MSG_CHECKING([for X])
12581: @r{# @dots{}omitted@dots{}}
12582:   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
12583: fi[]dnl
12584: ])# AC_PATH_X
12585: @end example
12586: 
12587: @c If the macro is long, try to split it into logical chunks.  Typically,
12588: @c macros that check for a bug in a function and prepare its
12589: @c @code{AC_LIBOBJ} replacement should have an auxiliary macro to perform
12590: @c this setup.  Do not hesitate to introduce auxiliary macros to factor
12591: @c your code.
12592: @c 
12593: マクロが長い場合,論理的な塊に分けてみてください.通常マクロは,関数のバ
12594: グを調査し,このセットアップを実行するための補助マクロがある
12595: @code{AC_LIBOBJ}の置換を準備します.コードの要素に補助マクロを導入するこ
12596: とをためらわないでください.
12597: 
12598: @c In order to highlight the recommended coding style, here is a macro
12599: @c written the old way:
12600: @c 
12601: 推奨されるコーディングスタイルを強調するために,古い手法で書かれているマ
12602: クロを紹介します.
12603: 
12604: @example
12605: dnl Check for EMX on OS/2.
12606: dnl _AC_EMXOS2
12607: AC_DEFUN(_AC_EMXOS2,
12608: [AC_CACHE_CHECK(for EMX OS/2 environment, ac_cv_emxos2,
12609: [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, return __EMX__;)],
12610: ac_cv_emxos2=yes, ac_cv_emxos2=no)])
12611: test "$ac_cv_emxos2" = yes && EMXOS2=yes])
12612: @end example
12613: 
12614: @noindent
12615: @c and the new way:
12616: @c 
12617: 新しい方法は以下のようにします.
12618: 
12619: @example
12620: # _AC_EMXOS2
12621: # ----------
12622: # Check for EMX on OS/2.
12623: m4_define([_AC_EMXOS2],
12624: [AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
12625: [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
12626:                    [ac_cv_emxos2=yes],
12627:                    [ac_cv_emxos2=no])])
12628: test "$ac_cv_emxos2" = yes && EMXOS2=yes[]dnl
12629: ])# _AC_EMXOS2
12630: @end example
12631: 
12632: 
12633: 
12634: 
12635: @c ============================================= Portable Shell Programming
12636: 
12637: @node Portable Shell
12638: @c @chapter Portable Shell Programming
12639: @chapter 移植性のあるシェルプログラミング
12640: 
12641: @c When writing your own checks, there are some shell-script programming
12642: @c techniques you should avoid in order to make your code portable.  The
12643: @c Bourne shell and upward-compatible shells like the Korn shell and Bash
12644: @c have evolved over the years, but to prevent trouble, do not take
12645: @c advantage of features that were added after @sc{unix} version 7, circa
12646: @c 1977 (@pxref{Systemology}).
12647: @c 
12648: 独自の調査を書いているとき,コードを移植性の高いものにするため,使用を避
12649: けるべきシェルスクリプトプログラムのテクニックもあります.Bourneシェルと, 
12650: BashとKornシェルのような上位互換性があるシェルは,何年もかけて進展しまし
12651: たが,問題を避けるために,@sc{unix}バージョン7の以降の1977年頃に加えられ
12652: た機能を利用しないでください(@pxref{Systemology}).
12653: 
12654: @c You should not use shell functions, aliases, negated character
12655: @c classes, or other features that are not found in all Bourne-compatible
12656: @c shells; restrict yourself to the lowest common denominator.  Even
12657: @c @code{unset} is not supported by all shells!  Also, include a space
12658: @c after the exclamation point in interpreter specifications, like this:
12659: @c 
12660: シェル関数,エイリアス,無効な文字クラスや,Bourneシェル互換のものでは見
12661: つからないすべての機能を使用するべきではありません.最小公倍数に制限され
12662: てます.@code{unset}さえ,全てのシェルではサポートしていません!また,以
12663: 下のように,インタプリタ仕様として,感嘆符の後にスペースを含めてください.
12664: 
12665: @example
12666: #! /usr/bin/perl
12667: @end example
12668: 
12669: @noindent
12670: @c If you omit the space before the path, then 4.2@sc{bsd} based systems
12671: @c (such as DYNIX) will ignore the line, because they interpret
12672: @c @samp{#! /} as a 4-byte magic number.  Some old systems have quite
12673: @c small limits on the length of the @samp{#!} line too, for instance 32
12674: @c bytes (not including the newline) on SunOS 4.
12675: @c 
12676: パスの前のスペースを省略する場合,(DYNIXのような)4.2@sc{bsd}を基本とする
12677: システムは,@samp{#! /}は4バイトのマジックナンバーとして解釈されるので,
12678: その行を無視します.古いシステムでは,@samp{#!}行の長さにも小さな制限が
12679: あり,例えばSunOS 4では,(改行を含めず)32バイトになります.
12680: 
12681: @c The set of external programs you should run in a @command{configure} script
12682: @c is fairly small.  @xref{Utilities in Makefiles,, Utilities in
12683: @c Makefiles, standards, GNU Coding Standards}, for the list.  This
12684: @c restriction allows users to start out with a fairly small set of
12685: @c programs and build the rest, avoiding too many interdependencies between
12686: @c packages.
12687: @c 
12688: @command{configure}スクリプトで実行すべき外部プログラムの設定は,かなり
12689: 小さくなっています.リストは,@xref{Utilities in Makefiles, , Utilities
12690: in Makefiles, standards, GNU Coding Standards}.  この制限で,ユーザは,
12691: かなり小さいプログラム設定から残りをビルドすることが可能になっていて,パッ
12692: ケージ間の独立部分を多くし過ぎることを避けることができます.
12693: 
12694: @c Some of these external utilities have a portable subset of features; see
12695: @c @ref{Limitations of Usual Tools}.
12696: @c 
12697: これらの外部ユーティリティには,移植性の高い機能のサブセットがあります.
12698: @ref{Limitations of Usual Tools}を参照してください.
12699: 
12700: @c There are other sources of documentation about shells.  See for instance
12701: @c @href{http://www.faqs.org/faqs/unix-faq/shell/, the Shell FAQs}.
12702: @c 
12703: シェルに関するドキュメントのソースは他にもあります.例えば,
12704: @href{http://www.faqs.org/faqs/unix-faq/shell/, the Shell FAQs}を参照し
12705: てください.
12706: 
12707: @menu
12708: * Shellology::                  A zoology of shells
12709: * Here-Documents::              Quirks and tricks
12710: * File Descriptors::            FDs and redirections
12711: * File System Conventions::     File- and pathnames
12712: * Shell Substitutions::         Variable and command expansions
12713: * Assignments::                 Varying side effects of assignments
12714: * Special Shell Variables::     Variables you should not change
12715: * Limitations of Builtins::     Portable use of not so portable /bin/sh
12716: * Limitations of Usual Tools::  Portable use of portable tools
12717: * Limitations of Make::         Portable Makefiles
12718: @end menu
12719: 
12720: @node Shellology
12721: @c @section Shellology
12722: @section シェル
12723: 
12724: @c There are several families of shells, most prominently the Bourne family
12725: @c and the C shell family which are deeply incompatible.  If you want to
12726: @c write portable shell scripts, avoid members of the C shell family.  The
12727: @c @href{http://www.faqs.org/faqs/unix-faq/shell/shell-differences/, the
12728: @c Shell difference FAQ} includes a small history of Unix shells, and a
12729: @c comparison between several of them.
12730: @c 
12731: いくつかのシェルのファミリーがあり,最も重要なものは,Bourneファミリーと
12732: Cシェルファミリーで,それらは全く互換性がありません.移植性の高いシェル
12733: スクリプトを書きたい場合,Cシェルファミリーのメンバーは避けてください.
12734: @href{http://www.faqs.org/faqs/unix-faq/shell/shell-differences/, the
12735: Shell difference FAQ}には,Unixシェルの小さな歴史と,それらの間の比較が
12736: 書かれています.
12737: 
12738: @c Below we describe some of the members of the Bourne shell family.
12739: @c 
12740: 以下で,Bourneシェルファミリーのメンバーを,いくつか説明していきます.
12741: 
12742: @table @asis
12743: @item Ash
12744: @cindex Ash
12745: @c @command{ash} is often used on @sc{gnu}/Linux and @sc{bsd} systems as a
12746: @c light-weight Bourne-compatible shell.  Ash 0.2 has some bugs that are
12747: @c fixed in the 0.3.x series, but portable shell scripts should work around
12748: @c them, since version 0.2 is still shipped with many @sc{gnu}/Linux
12749: @c distributions.
12750: @c 
12751: @command{ash}は,動作の軽いBourne互換シェルとして@sc{gnu}/Linuxと
12752: @sc{bsd}システムでよく使用されています.Ash 0.2には0.3.xシリーズで修正さ
12753: れているバグがいくつかありますが,バージョン0.2は多くの@sc{gnu}/Linux 配
12754: 布物で配布されているので,移植性の高いシェルスクリプトではそれを回避すべ
12755: きです.
12756: 
12757: @c To be compatible with Ash 0.2:
12758: @c 
12759: Ash 0.2での互換性のため以下のようにしてください.
12760: 
12761: @itemize @minus
12762: @item
12763: @c don't use @samp{$?} after expanding empty or unset variables:
12764: @c 
12765: 空や設定されていない変数を展開した後で,@samp{$?}を使用しないでください.
12766: 
12767: @example
12768: foo=
12769: false
12770: $foo
12771: echo "Don't use it: $?"
12772: @end example
12773: 
12774: @item
12775: @c don't use command substitution within variable expansion:
12776: @c 
12777: 変数の展開でコマンドの代入を使用しないでください.
12778: 
12779: @example
12780: cat $@{FOO=`bar`@}
12781: @end example
12782: 
12783: @item
12784: @c beware that single builtin substitutions are not performed by a
12785: @c subshell, hence their effect applies to the current shell!  @xref{Shell
12786: @c Substitutions}, item ``Command Substitution''.
12787: @c 
12788: 単一の組み込みの代入は,その効果が現在のシェルに適用されるため,サブシェ
12789: ルで実行されないことに注意してください.アイテム``コマンドの代入''につい
12790: ては,@xref{Shell Substitutions}.
12791: @end itemize
12792: 
12793: @item Bash
12794: @cindex Bash
12795: @c To detect whether you are running @command{bash}, test if
12796: @c @code{BASH_VERSION} is set.  To disable its extensions and require
12797: @c @sc{posix} compatibility, run @samp{set -o posix}.  @xref{Bash POSIX
12798: @c Mode,, Bash @sc{posix} Mode, bash, The GNU Bash Reference Manual}, for
12799: @c details.
12800: @c 
12801: @command{bash}を実行しているかどうかを検出するために,
12802: @code{BASH_VERSION}が設定されているかどうかをテストしてください.その拡
12803: 張を利用不可能にし,@sc{posix}互換性を要求するため,@samp{set -o posix} 
12804: を実行してください.詳細は,@xref{Bash POSIX Mode,, Bash @sc{posix}
12805: Mode, bash, The GNU Bash Reference Manual}.
12806: 
12807: @c @item Bash 2.05 and later
12808: @item Bash 2.05とそれ以降
12809: @cindex Bash 2.05 and later
12810: @c Versions 2.05 and later of @command{bash} use a different format for the
12811: @c output of the @command{set} builtin, designed to make evaluating its
12812: @c output easier.  However, this output is not compatible with earlier
12813: @c versions of @command{bash} (or with many other shells, probably).  So if
12814: @c you use @command{bash} 2.05 or higher to execute @command{configure},
12815: @c you'll need to use @command{bash} 2.05 for all other build tasks as well.
12816: @c 
12817: バージョン2.05とそれ以降の@command{bash}は,@command{set}組み込みコマン
12818: ドの出力に対して,その出力をより容易に評価できるように設計されているので,
12819: 異なる書式を使用しています.しかし,この出力はそれ以前のバージョンの
12820: @command{bash}(や,おそらくそれ以外の多くのシェル)と互換性がありません.
12821: そのため,@command{bash} 2.05やそれ以上のものを@command{configure}の実行
12822: に使用している場合,それ以外のすべてのビルドの作業に対しても,同じように
12823: @command{bash} 2.05を使用する必要があるでしょう.
12824: 
12825: @c @item @command{/usr/xpg4/bin/sh} on Solaris
12826: @item Solarisの@command{/usr/xpg4/bin/sh}
12827: @c @prindex @command{/usr/xpg4/bin/sh} on Solaris
12828: @c The @sc{posix}-compliant Bourne shell on a Solaris system is
12829: @c @command{/usr/xpg4/bin/sh} and is part of an extra optional package.
12830: @c There is no extra charge for this package, but it is also not part of a
12831: @c minimal OS install and therefore some folks may not have it.
12832: @c 
12833: Solarisシステム上の@sc{posix}互換のBourneシェルは,
12834: @command{/usr/xpg4/bin/sh}で,それはオプションパッケージの一部です.この
12835: パッケージに対しては追加料金は不要ですが,最小のOSのインストールにはない
12836: ので,持っていない人もいるでしょう.
12837: 
12838: @item Zsh
12839: @cindex Zsh
12840: @c To detect whether you are running @command{zsh}, test if
12841: @c @code{ZSH_VERSION} is set.  By default @command{zsh} is @emph{not}
12842: @c compatible with the Bourne shell: you have to run @samp{emulate sh} and
12843: @c set @code{NULLCMD} to @samp{:}.  @xref{Compatibility,, Compatibility,
12844: @c zsh, The Z Shell Manual}, for details.
12845: @c 
12846: @command{zsh}が実行されているかどうかを検出するために,
12847: @code{ZSH_VERSION}が設定されているかどうかをテストしてください.デフォル
12848: トで,@command{zsh}はBourneと互換性はあり@emph{ません}.@samp{emulate
12849: sh}を実行し,@code{NULLCMD}を@samp{:}に設定する必要があります.詳細は,
12850: @xref{Compatibility,, Compatibility, zsh, The Z Shell Manual}.
12851: 
12852: @c Zsh 3.0.8 is the native @command{/bin/sh} on Mac OS X 10.0.3.
12853: @c 
12854: Zsh 3.0.8は,Mac OS X 10.0.3でのネイティブな@command{/bin/sh}です.
12855: @end table
12856: 
12857: @c The following discussion between Russ Allbery and Robert Lipe is worth
12858: @c reading:
12859: @c 
12860: Russ AllberyとRobert Lipeの間でなされた,以下の議論は読む価値があります.
12861: 
12862: @noindent
12863: Russ Allbery:
12864: 
12865: @quotation
12866: @c The @sc{gnu} assumption that @command{/bin/sh} is the one and only shell
12867: @c leads to a permanent deadlock.  Vendors don't want to break users'
12868: @c existing shell scripts, and there are some corner cases in the Bourne
12869: @c shell that are not completely compatible with a @sc{posix} shell.  Thus,
12870: @c vendors who have taken this route will @emph{never} (OK@dots{}``never say
12871: @c never'') replace the Bourne shell (as @command{/bin/sh}) with a
12872: @c @sc{posix} shell.
12873: @c 
12874: @command{/bin/sh}が唯一のシェルであるという@sc{gnu}仮定では,永久に行き
12875: 詰まってしまいます.ベンダーは,ユーザの既存のシェルスクリプトを壊したく
12876: はありませんし,Bourneシェルには@sc{posix}シェルと完全に互換ではない部分
12877: もあります.このため,この方法を採用するベンダーは,@emph{決して}
12878: (OK@dots{}``決して,決してとは言わないよ'')Bourneシェルを
12879: (@command{/bin/sh}として)@sc{posix}シェルで置き換えないでしょう.
12880: @end quotation
12881: 
12882: @noindent
12883: Robert Lipe:
12884: 
12885: @quotation
12886: @c This is exactly the problem.  While most (at least most System V's) do
12887: @c have a Bourne shell that accepts shell functions most vendor
12888: @c @command{/bin/sh} programs are not the @sc{posix} shell.
12889: @c 
12890: これは本当に問題です.ほとんどのもの(少なくともほとんどのSystem V)はシェ
12891: ル関数を受け入れるBourneシェルがあるのですが,ほとんどのベンダーの
12892: @command{/bin/sh}は@sc{posix}シェルではありません.
12893: 
12894: @c So while most modern systems do have a shell @emph{somewhere} that meets the
12895: @c @sc{posix} standard, the challenge is to find it.
12896: @c 
12897: そのため,ほとんど現在のシステムは@sc{posix}標準に適合しているシェルが
12898: @emph{どこかに}あるのですが,問題はそれを見つけることです.
12899: @end quotation
12900: 
12901: @node Here-Documents
12902: @c @section Here-Documents
12903: @section ヒアドキュメント
12904: 
12905: @c Don't rely on @samp{\} being preserved just because it has no special
12906: @c meaning together with the next symbol.  In the native @command{/bin/sh}
12907: @c on OpenBSD 2.7 @samp{\"} expands to @samp{"} in here-documents with
12908: @c unquoted delimiter.  As a general rule, if @samp{\\} expands to @samp{\}
12909: @c use @samp{\\} to get @samp{\}.
12910: @c 
12911: @samp{\}は,次のシンボルと一緒になって特別の意味を持たないので,保存され
12912: る@samp{\}に依存しないでください.OpenBSD 2.7のネイティブな
12913: @command{/bin/sh}では,@samp{\"}は@samp{"}に展開され,ヒアドキュメントで
12914: は引用符で囲まれていない分離子として用いられます.一般的な規則として,
12915: @samp{\\}が@samp{\}に展開される場合,@samp{\}を得るために@samp{\\}を使用
12916: してください.
12917: 
12918: @c With OpenBSD 2.7's @command{/bin/sh}
12919: @c 
12920: OpenBSD 2.7の@command{/bin/sh}では,以下のようになります.
12921: 
12922: @example
12923: @group
12924: $ @kbd{cat <<EOF
12925: > \" \\
12926: > EOF}
12927: " \
12928: @end group
12929: @end example
12930: 
12931: @noindent
12932: @c and with Bash:
12933: @c 
12934: そして,Bashでは以下のようになります.
12935: 
12936: @example
12937: @group
12938: bash-2.04$ @kbd{cat <<EOF
12939: > \" \\
12940: > EOF}
12941: \" \
12942: @end group
12943: @end example
12944: 
12945: 
12946: @c Many older shells (including the Bourne shell) implement here-documents
12947: @c inefficiently.  And some shells mishandle large here-documents: for
12948: @c example, Solaris 8 @command{dtksh}, which is derived from
12949: @c @command{ksh} M-12/28/93d, mishandles variable expansion that occurs
12950: @c on 1024-byte buffer boundaries within a here-document.  Users can
12951: @c generally fix these problems by using a faster or more reliable
12952: @c shell, e.g., by using the command @samp{bash ./configure} rather than
12953: @c plain @samp{./configure}.
12954: @c 
12955: 多くの古い(Bourneシェルを含む)シェルでは,ヒアドキュメントは非効率に実装
12956: されています.大きなヒアドキュメントを間違って扱うシェルもあります.例え
12957: ば,Solaris 8 @command{dtksh}は@command{ksh} M-12/28/93dで提供されていて,
12958: ヒアドキュメントを1024バイトのバッファの境界で間違った変数の展開を生じま
12959: す.ユーザは一般的に,より速くより信頼性の高いシェルを使用して,これらの
12960: 問題を修正することが可能で,例えば,そのまま@samp{./configure}するのでは
12961: なく,コマンド@samp{bash ./configure}を使用します.
12962: 
12963: @c Some shells can be extremely inefficient when there are a lot of
12964: @c here-documents inside a single statement.  For instance if your
12965: @c @file{configure.ac} includes something like:
12966: @c 
12967: シェルによっては,単一の文の中にヒアドキュメントが多過ぎるとき,非常に非
12968: 効率になるものもあります.例えば,@file{configure.ac}に以下のようなもの
12969: 含めたとします.
12970: 
12971: @example
12972: @group
12973: if <cross_compiling>; then
12974:   assume this and that
12975: else
12976:   check this
12977:   check that
12978:   check something else
12979:   @dots{}
12980:   on and on forever
12981:   @dots{}
12982: fi
12983: @end group
12984: @end example
12985: 
12986: @c A shell parses the whole @code{if}/@code{fi} construct, creating
12987: @c temporary files for each here document in it.  Some shells create links
12988: @c for such here-documents on every @code{fork}, so that the clean-up code
12989: @c they had installed correctly removes them.  It is creating the links
12990: @c that can take the shell forever.
12991: @c 
12992: シェルは,その中のそれぞれのヒアドキュメントに対して一時ファイルを作成し
12993: ながら,@code{if}/@code{fi}の文脈全体をパースします.@code{fork}ごとにそ
12994: のようなヒアドキュメントに対してリンクを作成するシェルもあり,インストー
12995: ルされた後のクリーンアップコードで正しく削除されます.それは,シェルが永
12996: 久に受け入れられるリンクを作成しているのです.
12997: 
12998: @c Moving the tests out of the @code{if}/@code{fi}, or creating multiple
12999: @c @code{if}/@code{fi} constructs, would improve the performance
13000: @c significantly.  Anyway, this kind of construct is not exactly the
13001: @c typical use of Autoconf.  In fact, it's even not recommended, because M4
13002: @c macros can't look into shell conditionals, so we may fail to expand a
13003: @c macro when it was expanded before in a conditional path, and the
13004: @c condition turned out to be false at run-time, and we end up not
13005: @c executing the macro at all.
13006: @c 
13007: @code{if}/@code{fi}の外部のテストを移動したり,複数の@code{if}/@code{fi} 
13008: の文脈を作成したりすることで,かなり動作が改善されるでしょう.とにかく,
13009: こういった構成は,典型的なAutoconfの使用では正しくありません.実際,M4マ
13010: クロは,シェルの条件文を見ることができないので,それは推奨されておらず,
13011: 条件分岐の前にそれが展開され,実行時に条件文が失敗だと分かるとき,マクロ
13012: 展開に失敗するかもしれず,マクロの実行を完全に終了できないでしょう.
13013: 
13014: @node File Descriptors
13015: @c @section File Descriptors
13016: @section ファイルディスクリプタ
13017: 
13018: @c Some file descriptors shall not be used, since some systems, admittedly
13019: @c arcane, use them for special purpose:
13020: @c 
13021: システムによっては,明らかに不可解なのですが,特殊な目的で使用しているた
13022: め,ファイルディスクリプタには使用すべきではないものもあります.
13023: 
13024: @display
13025: @c 3 --- some systems may open it to @samp{/dev/tty}.
13026: @c 
13027: 3 --- それを@samp{/dev/tty}として開くシステムもあります.
13028: @c 4 --- used on the Kubota Titan.
13029: @c 
13030: 4 --- Kubota Titanで使用されています.
13031: @end display
13032: 
13033: @c Don't redirect the same file descriptor several times, as you are doomed
13034: @c to failure under Ultrix.
13035: @c 
13036: Ultrixでは異常終了だと告げられるので,同じファイルディスクリプタに複数回
13037: 同じファイルをリダイレクトしないでください.
13038: 
13039: @example
13040: ULTRIX V4.4 (Rev. 69) System #31: Thu Aug 10 19:42:23 GMT 1995
13041: UWS V4.4 (Rev. 11)
13042: $ @kbd{eval 'echo matter >fullness' >void}
13043: illegal io
13044: $ @kbd{eval '(echo matter >fullness)' >void}
13045: illegal io
13046: $ @kbd{(eval '(echo matter >fullness)') >void}
13047: Ambiguous output redirect.
13048: @end example
13049: 
13050: @noindent
13051: @c In each case the expected result is of course @file{fullness} containing
13052: @c @samp{matter} and @file{void} being empty.
13053: @c 
13054: それぞれの場合で,期待される結果はもちろん,@samp{matter}を含んでいる
13055: @file{fullness}と,空の@file{void}です.
13056: 
13057: @c Don't try to redirect the standard error of a command substitution: it
13058: @c must be done @emph{inside} the command substitution: when running
13059: @c @samp{: `cd /zorglub` 2>/dev/null} expect the error message to
13060: @c escape, while @samp{: `cd /zorglub 2>/dev/null`} works properly.
13061: @c 
13062: コマンドの代入のリダイレクトを標準エラー出力にしないでください.それは,
13063: コマンドの代入の@emph{内部で}行なう必要があります.エラーメッセージを削
13064: 除することを期待して@samp{: `cd /zorglub` 2>/dev/null}を実行しているとき,
13065: @samp{: `cd /zorglub 2>/dev/null`}は正しく動作します.
13066: 
13067: @c It is worth noting that Zsh (but not Ash nor Bash) makes it possible
13068: @c in assignments though: @samp{foo=`cd /zorglub` 2>/dev/null}.
13069: @c 
13070: (AshでもBashでもない)Zshが割当を可能にすることに注意する価値はあります.
13071: @samp{foo=`cd /zorglub` 2>/dev/null}.
13072: 
13073: @c Most shells, if not all (including Bash, Zsh, Ash), output traces on
13074: @c stderr, even for sub-shells.  This might result in undesirable content
13075: @c if you meant to capture the standard-error output of the inner command:
13076: @c 
13077: ほとんどのシェルでは,(Bash,Zsh,Ashを含め)全てではありませんが,標準エ
13078: ラー出力を,サブシェルに対しても追跡しています.内部コマンドの標準エラー
13079: 出力を得る目的がある場合,これでは結果が望まない内容になるかもしれません.
13080: 
13081: @example
13082: $ @kbd{ash -x -c '(eval "echo foo >&2") 2>stderr'}
13083: $ @kbd{cat stderr}
13084: + eval echo foo >&2
13085: + echo foo
13086: foo
13087: $ @kbd{bash -x -c '(eval "echo foo >&2") 2>stderr'}
13088: $ @kbd{cat stderr}
13089: + eval 'echo foo >&2'
13090: ++ echo foo
13091: foo
13092: $ @kbd{zsh -x -c '(eval "echo foo >&2") 2>stderr'}
13093: @i{# Traces on startup files deleted here.}
13094: $ @kbd{cat stderr}
13095: +zsh:1> eval echo foo >&2
13096: +zsh:1> echo foo
13097: foo
13098: @end example
13099: 
13100: @noindent
13101: @c You'll appreciate the various levels of detail@enddots{}
13102: @c 
13103: 様々なレベルの詳細を認めるでしょう@enddots{}
13104: 
13105: @c One workaround is to grep out uninteresting lines, hoping not to remove
13106: @c good ones@enddots{}
13107: @c 
13108: 一つの回避方法は,興味がない行をgrepで削除することで,良い行は削除しない
13109: ことを期待しつつ@enddots{}
13110: 
13111: @c Don't try to move/delete open files, such as in @samp{exec >foo; mv foo
13112: @c bar}; see @ref{Limitations of Builtins}, @command{mv} for more details.
13113: @c 
13114: @samp{exec >foo; mv foo bar}のように,開いているファイルの移動/削除の試
13115: みはしないようにしてください.@command{mv}の詳細は,@ref{Limitations of
13116: Builtins}を参照してください.
13117: 
13118: @node File System Conventions
13119: @c @section File System Conventions
13120: @section ファイルシステムの条件
13121: 
13122: @c While @command{autoconf} and friends will usually be run on some Unix
13123: @c variety, it can and will be used on other systems, most notably @sc{dos}
13124: @c variants.  This impacts several assumptions regarding file and
13125: @c path names.
13126: @c 
13127: @command{autoconf}とその仲間達は,通常様々なUnixで実行されますが,それは
13128: その他のシステムでも使用され,最も顕著なものとしては@sc{dos}の仲間があげ
13129: られます.このことは,ファイルとパス名に関する仮定に衝突します.
13130: 
13131: @noindent
13132: @c For example, the following code:
13133: @c 
13134: 例えば,以下のようなコードを考えます.
13135: 
13136: @example
13137: case $foo_dir in
13138:   /*) # Absolute
13139:      ;;
13140:   *)
13141:      foo_dir=$dots$foo_dir ;;
13142: esac
13143: @end example
13144: 
13145: @noindent
13146: @c will fail to properly detect absolute paths on those systems, because
13147: @c they can use a drivespec, and will usually use a backslash as directory
13148: @c separator.  The canonical way to check for absolute paths is:
13149: @c 
13150: それらのシステムではドライブスペックを使用していて,通常はディレクトリの
13151: 分離子としてバックスラッシュを使用しているため,絶対パスを正しく検出する
13152: ことに失敗するでしょう.絶対パスに対する調査の標準的な方法は以下のとおり
13153: です.
13154: 
13155: @example
13156: case $foo_dir in
13157:   [\\/]* | ?:[\\/]* ) # Absolute
13158:      ;;
13159:   *)
13160:      foo_dir=$dots$foo_dir ;;
13161: esac
13162: @end example
13163: 
13164: @noindent
13165: @c Make sure you quote the brackets if appropriate and keep the backslash as
13166: @c first character (@pxref{Limitations of Builtins}).
13167: @c 
13168: 適切な場合は角カッコの引用符で囲み,最初の文字としてのバックスラッシュを
13169: 保持していることを確認してください(@pxref{Limitations of Builtins}).
13170: 
13171: @c Also, because the colon is used as part of a drivespec, these systems don't
13172: @c use it as path separator.  When creating or accessing paths, use the
13173: @c @code{PATH_SEPARATOR} output variable instead.  @command{configure} sets this
13174: @c to the appropriate value (@samp{:} or @samp{;}) when it starts up.
13175: @c 
13176: また,コロンがデバイス指定の一部として使用されているので,これらのシステ
13177: ムではそれをパスの分離子として使用していません.パスを作成しているときや
13178: パスにアクセスしているときは,代わりに@code{PATH_SEPARATOR}出力変数を使
13179: 用してください.@command{configure}は,開始時にこれを適切な値(@samp{:} 
13180: または@samp{;})に設定します.
13181: 
13182: @c File names need extra care as well.  While @sc{dos}-based environments
13183: @c that are Unixy enough to run @command{autoconf} (such as DJGPP) will
13184: @c usually be able to handle long file names properly, there are still
13185: @c limitations that can seriously break packages.  Several of these issues
13186: @c can be easily detected by the
13187: @c @href{ftp://ftp.gnu.org/gnu/non-gnu/doschk/doschk-1.1.tar.gz, doschk}
13188: @c package.
13189: @c 
13190: ファイル名にも余計な注意が必要になります.(DJGPPのような)
13191: @command{autoconf}を十分に実行できるUnixのような@sc{dos}ベースの環境では,
13192: 通常長いファイル名を適切に扱うことが可能ですが,パッケージを壊してしまう
13193: 深刻な制限も残っています.これらの問題のいくつかは,
13194: @href{ftp://ftp.gnu.org/gnu/non-gnu/doschk/doschk-1.1.tar.gz, doschk}パッ
13195: ケージで用意に検出可能です.
13196: 
13197: @c A short overview follows; problems are marked with @sc{sfn}/@sc{lfn} to
13198: @c indicate where they apply: @sc{sfn} means the issues are only relevant to
13199: @c plain @sc{dos}, not to @sc{dos} boxes under Windows, while @sc{lfn}
13200: @c identifies problems that exist even under Windows.
13201: @c 
13202: 以下は簡単な全体像です.問題には,適用を示すため@sc{sfn}/@sc{lfn}で印が
13203: ついています.@sc{sfn}は,Windows下の@sc{dos}窓ではなく,プレーンな
13204: @sc{dos}にのみ関連する問題を意味し,一方@sc{lfn}は,Windowsでも存在する
13205: 問題を意味しています.
13206: 
13207: @table @asis
13208: @c @item No multiple dots (@sc{sfn})
13209: @item 複数のドットの禁止 (@sc{sfn})
13210: @c @sc{dos} cannot handle multiple dots in filenames.  This is an especially
13211: @c important thing to remember when building a portable configure script,
13212: @c as @command{autoconf} uses a .in suffix for template files.
13213: @c 
13214: @sc{dos}はファイル名に複数のドットがあるものを扱うことが不可能です.これ
13215: は,@command{autoconf}は@file{.in}をテンプレートファイルの接尾子に使用す
13216: るので,移植性の高いconfigureスクリプトを構築しているときに覚えておく必
13217: 要がある,特に重要なことです.
13218: 
13219: @c This is perfectly OK on Unices:
13220: @c 
13221: 以下はUnix上では完全にOKです.
13222: 
13223: @example
13224: AC_CONFIG_HEADER(config.h)
13225: AC_CONFIG_FILES([source.c foo.bar])
13226: AC_OUTPUT
13227: @end example
13228: 
13229: @noindent
13230: @c but it causes problems on @sc{dos}, as it requires @samp{config.h.in},
13231: @c @samp{source.c.in} and @samp{foo.bar.in}.  To make your package more portable
13232: @c to @sc{dos}-based environments, you should use this instead:
13233: @c 
13234: しかし,それは@samp{config.h.in},@samp{source.c.in},そして
13235: @samp{foo.bar.in}が必要になるので,@sc{dos}では問題があります.パッケー
13236: ジを@sc{dos}ベースの環境でより移植性を高くするため,その代わりに以下を使
13237: 用すべきです.
13238: 
13239: @example
13240: AC_CONFIG_HEADER(config.h:config.hin)
13241: AC_CONFIG_FILES([source.c:source.cin foo.bar:foobar.in])
13242: AC_OUTPUT
13243: @end example
13244: 
13245: @c @item No leading dot (@sc{sfn})
13246: @item ドットの前置の禁止 (@sc{sfn})
13247: @c @sc{dos} cannot handle filenames that start with a dot.  This is usually
13248: @c not a very important issue for @command{autoconf}.
13249: @c 
13250: @sc{dos}はドットで始まるファイル名を扱うことが不可能です.これは通常,
13251: @command{autoconf}に対してはあまり重要ではない問題です.
13252: 
13253: @c @item Case insensitivity (@sc{lfn})
13254: @item 大文字小文字を区別しない (@sc{lfn})
13255: @c @sc{dos} is case insensitive, so you cannot, for example, have both a
13256: @c file called @samp{INSTALL} and a directory called @samp{install}.  This
13257: @c also affects @command{make}; if there's a file called @samp{INSTALL} in
13258: @c the directory, @samp{make install} will do nothing (unless the
13259: @c @samp{install} target is marked as PHONY).
13260: @c 
13261: @sc{dos}は大文字小文字を区別しないので,例えば,@samp{INSTALL}という名の
13262: ファイルと@samp{install}という名のディレクトリの両方を持つことができませ
13263: ん.これは,@command{make}にも影響します.ディレクトリに@samp{INSTALL}と
13264: いう名のファイルがある場合,@samp{make install}は(@samp{install}がPHONY
13265: として印がついていないとき)何もしません.
13266: 
13267: @c @item The 8+3 limit (@sc{sfn})
13268: @item 8+3の制限 (@sc{sfn})
13269: @c Because the @sc{dos} file system only stores the first 8 characters of
13270: @c the filename and the first 3 of the extension, those must be unique.
13271: @c That means that @file{foobar-part1.c}, @file{foobar-part2.c} and
13272: @c @file{foobar-prettybird.c} all resolve to the same filename
13273: @c (@file{FOOBAR-P.C}).  The same goes for @file{foo.bar} and
13274: @c @file{foo.bartender}.
13275: @c 
13276: @sc{dos}ファイルシステムでは,ファイル名の最初の8文字と最初の3文字の拡張
13277: 子のみ保存され,それらはユニークである必要があります.それは,
13278: @file{foobar-part1.c},@file{foobar-part2.c},そして
13279: @file{foobar-prettybird.c}の全ては同じ名前(@file{FOOBAR-P.C})になります.
13280: @file{foo.bar}と@file{foo.bartender}も同じものになります.
13281: 
13282: @c Note: This is not usually a problem under Windows, as it uses numeric
13283: @c tails in the short version of filenames to make them unique.  However, a
13284: @c registry setting can turn this behavior off.  While this makes it
13285: @c possible to share file trees containing long file names between @sc{sfn}
13286: @c and @sc{lfn} environments, it also means the above problem applies there
13287: @c as well.
13288: @c 
13289: 注意:これは通常,ファイル名をユニークにするために短いバージョンでは数字
13290: の後置を使用するので,Windowsでは問題になりません.しかし,レジストリの
13291: 設定でこの動作を停止可能です.これで長いファイル名を含むファイルのツリー
13292: を,@sc{sfn}と@sc{lfn}の環境で共有することが可能になりますが,上記の問題
13293: は同様に存在します.
13294: 
13295: @c @item Invalid characters
13296: @item 無効な文字
13297: @c Some characters are invalid in @sc{dos} filenames, and should therefore
13298: @c be avoided.  In a @sc{lfn} environment, these are @samp{/}, @samp{\},
13299: @c @samp{?}, @samp{*}, @samp{:}, @samp{<}, @samp{>}, @samp{|} and @samp{"}.
13300: @c In a @sc{sfn} environment, other characters are also invalid.  These
13301: @c include @samp{+}, @samp{,}, @samp{[} and @samp{]}.
13302: @c 
13303: @sc{dos}ファイル名で無効な文字もあり,そのため避けた方が良いでしょう.
13304: @sc{lfn}の環境では,@samp{/},@samp{\},@samp{?},@samp{*},@samp{:},
13305: @samp{<},@samp{>},@samp{|},そして@samp{"}です.@sc{sfn}環境では,それ
13306: 以外にも無効になります.これには,@samp{+},@samp{,},@samp{[},そして
13307: @samp{]}が含まれます.
13308: @end table
13309: 
13310: @node Shell Substitutions
13311: @c @section Shell Substitutions
13312: @section シェルの代入
13313: 
13314: @c Contrary to a persistent urban legend, the Bourne shell does not
13315: @c systematically split variables and back-quoted expressions, in particular
13316: @c on the right-hand side of assignments and in the argument of @code{case}.
13317: @c For instance, the following code:
13318: @c 
13319: persistent urban legendとは反対に,Bourneシェルは変数とバッククオートさ
13320: れている式が整然と分かれておらず,特に右側の割り当てと@code{case}の引数
13321: がそうです.例えば,以下のコードを考えます.
13322: 
13323: @example
13324: case "$given_srcdir" in
13325: .)  top_srcdir="`echo "$dots" | sed 's,/$,,'`"
13326: *)  top_srcdir="$dots$given_srcdir" ;;
13327: esac
13328: @end example
13329: 
13330: @noindent
13331: @c is more readable when written as:
13332: @c 
13333: 以下のように書かれているとき,より読みやすくなります.
13334: 
13335: @example
13336: case $given_srcdir in
13337: .)  top_srcdir=`echo "$dots" | sed 's,/$,,'`
13338: *)  top_srcdir=$dots$given_srcdir ;;
13339: esac
13340: @end example
13341: 
13342: @noindent
13343: @c and in fact it is even @emph{more} portable: in the first case of the
13344: @c first attempt, the computation of @code{top_srcdir} is not portable,
13345: @c since not all shells properly understand @code{"`@dots{}"@dots{}"@dots{}`"}.
13346: @c Worse yet, not all shells understand @code{"`@dots{}\"@dots{}\"@dots{}`"}
13347: @c the same way.  There is just no portable way to use double-quoted
13348: @c strings inside double-quoted back-quoted expressions (pfew!).
13349: @c 
13350: そして,実際それは@emph{より}移植性が高くなります.最初の試みの最初の
13351: caseで,全てのシェルが@code{"`@dots{}"@dots{}"@dots{}`"}を正しく解釈する
13352: わけではないので,@code{top_srcdir}の計算結果は移植性が高くありません.
13353: 更に悪いことには,同様に@code{"`@dots{}\"@dots{}\"@dots{}`"}を全てのシェ
13354: ルが解釈するわけではありません.二重引用符でバッククオートされている式の
13355: 内部で,二重引用符で囲まれた文字列を使用するための移植性を高める方法は全
13356: くありません(pfew!).
13357: 
13358: @table @code
13359: @item $@@
13360: @cindex @samp{"$@@"}
13361: @c One of the most famous shell-portability issues is related to
13362: @c @samp{"$@@"}.  When there are no positional arguments, @sc{posix} says
13363: @c that @samp{"$@@"} is supposed to be equivalent to nothing, but the
13364: @c original Unix Version 7 Bourne shell treated it as equivalent to
13365: @c @samp{""} instead, and this behavior survives in later implementations
13366: @c like Digital Unix 5.0.
13367: @c 
13368: 最も有名なシェルの移植性の問題の一つは,@samp{"$@@"}との関連です.位置に
13369: 依存する引数が無いとき,@sc{posix}では@samp{"$@@"}を何もないことと等価に
13370: なっていますが,オリジナルのUnixバージョン7のBourneシェルはその代わりに
13371: @samp{""}として扱い,この動作はDigital Unix 5.0のようにそれ以降の実装で
13372: も提供されています.
13373: 
13374: @c The traditional way to work around this portability problem is to use
13375: @c @samp{$@{1+"$@@"@}}.  Unfortunately this method does not work with
13376: @c Zsh (3.x and 4.x), which is used on Mac OS X.  When emulating
13377: @c the Bourne shell, Zsh performs word splitting on @samp{$@{1+"$@@"@}}:
13378: @c 
13379: この移植性の問題を回避する伝統的な方法は,@samp{$@{1+"$@@"@}}を使用する
13380: ことです.残念ながら,この手法はMac OS Xでも使用されている,Zsh (3.xと
13381: 4.x)では動作しません.Bourneシェルをエミュレートしているとき,Zshは
13382: @samp{$@{1+"$@@"@}}で単語の分離を実行します.
13383: 
13384: @example
13385: zsh $ @kbd{emulate sh}
13386: zsh $ @kbd{for i in "$@@"; do echo $i; done}
13387: Hello World
13388: !
13389: zsh $ @kbd{for i in $@{1+"$@@"@}; do echo $i; done}
13390: Hello
13391: World
13392: !
13393: @end example
13394: 
13395: @noindent
13396: @c Zsh handles plain @samp{"$@@"} properly, but we can't use plain
13397: @c @samp{"$@@"} because of the portability problems mentioned above.
13398: @c One workaround relies on Zsh's ``global aliases'' to convert
13399: @c @samp{$@{1+"$@@"@}} into @samp{"$@@"} by itself:
13400: @c 
13401: Zshは,プレーンの@samp{"$@@"}をおそらく処理しますが,上記の移植性の問題
13402: のため,プレーンの@samp{"$@@"}を使用することはできません.回避する方法の
13403: 一つは,@samp{$@{1+"$@@"@}}を@samp{"$@@"}に変換するZshの``global
13404: aliases''に依存します.
13405: 
13406: @example
13407: test "$@{ZSH_VERSION+set@}&