File:  [Local Repository] / gnujdoc / autoconf-2.52 / autoconf-ja.texi
Revision 1.3: download - view: text, annotated - select for diffs
Wed May 25 12:40:45 2005 UTC (15 years, 5 months ago) by futoshi
Branches: MAIN
CVS tags: HEAD
BUGFIX: delete one excess "}".

    1: \input texinfo @c -*-texinfo-*-
    2: @c %**start of header
    3: @setfilename autoconf-ja.info
    4: @settitle Autoconf
    5: 
    6: @c @documentlanguage ja
    7: 
    8: @finalout
    9: @setchapternewpage odd
   10: @setcontentsaftertitlepage
   11: 
   12: @include autoconf-v.texi
   13: 
   14: @c A simple macro for optional variables.
   15: @ignore
   16: マクロ定義の削除
   17: 
   18: @macro ovar{varname}
   19: @r{[}@var{\varname\}@r{]}
   20: @end macro
   21: 
   22: @c I don't like the way URL are displayed in TeX with @uref.
   23: @ifhtml
   24: @macro href{url, title}
   25: @uref{\url\, \title\}
   26: @end macro
   27: @end ifhtml
   28: @ifnothtml
   29: @macro href{url, title}
   30: \title\@footnote{\title\, @url{\url\}.}
   31: @end macro
   32: @end ifnothtml
   33: 
   34: @end ignore
   35: 
   36: @dircategory GNU admin
   37: @direntry
   38: * Autoconf(ja): (autoconf-ja).         Create source code configuration scripts
   39: @end direntry
   40: 
   41: @dircategory Individual utilities
   42: @direntry
   43: * autoscan(ja): (autoconf-ja)autoscan Invocation.
   44:                                 Semi-automatic @file{configure.ac} writing
   45: * ifnames(ja): (autoconf-ja)ifnames Invocation.
   46:                                 Listing the conditionals in source code
   47: * autoconf(ja): (autoconf-ja)autoconf Invocation.
   48:                                 How to create configuration scripts
   49: * autoreconf(ja): (autoconf-ja)autoreconf Invocation.
   50:                                 Remaking multiple @code{configure} scripts
   51: * configure(ja): (autoconf-ja)configure Invocation.
   52:                                 Configuring a package
   53: * config.status(ja): (autoconf-ja)config.status Invocation.
   54:                                 Recreating a configuration
   55: @end direntry
   56: 
   57: @ifinfo
   58: @c Autoconf: Creating Automatic Configuration Scripts, by David MacKenzie.
   59: @c 
   60: Autoconf: 自動的にコンフィグレーションスクリプトを作成する.David
   61: MacKenzie作.
   62: 
   63: @c This file documents the GNU Autoconf package for creating scripts to
   64: @c configure source code packages using templates and an @code{m4} macro
   65: @c package.
   66: @c 
   67: このファイルは,テンプレートと@code{m4}マクロパッケージを使用しながら,
   68: ソースコードパッケージをコンフィグレーションするためのスクリプトを生成す
   69: る,GNU Autoconfパッケージを説明します.
   70: 
   71: Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 Free
   72: Software Foundation, Inc.
   73: 
   74: Permission is granted to make and distribute verbatim copies of this
   75: manual provided the copyright notice and this permission notice are
   76: preserved on all copies.
   77: 
   78: @ignore
   79: Permission is granted to process this file through TeX and print the
   80: results, provided the printed document carries copying permission notice
   81: identical to this one except for the removal of this paragraph (this
   82: paragraph not being relevant to the printed manual).
   83: 
   84: @end ignore
   85: Permission is granted to copy and distribute modified versions of this
   86: manual under the conditions for verbatim copying, provided that the
   87: entire resulting derived work is distributed under the terms of a
   88: permission notice identical to this one.
   89: 
   90: Permission is granted to copy and distribute translations of this manual
   91: into another language, under the above conditions for modified versions,
   92: except that this permission notice may be stated in a translation
   93: approved by the Foundation.
   94: @end ifinfo
   95: 
   96: @titlepage
   97: @title Autoconf
   98: @subtitle Creating Automatic Configuration Scripts
   99: @subtitle Edition @value{EDITION}, for Autoconf version @value{VERSION}
  100: @subtitle @value{UPDATED}
  101: @author David MacKenzie and Ben Elliston
  102: @c I think I've rewritten all of Noah and Roland's contributions by now.
  103: @c 翻訳 西尾 太
  104: 
  105: 
  106: @page
  107: @vskip 0pt plus 1filll
  108: Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
  109: 2001 Free Software Foundation, Inc.
  110: 
  111: Permission is granted to make and distribute verbatim copies of this
  112: manual provided the copyright notice and this permission notice are
  113: preserved on all copies.
  114: 
  115: Permission is granted to copy and distribute modified versions of this
  116: manual under the conditions for verbatim copying, provided that the
  117: entire resulting derived work is distributed under the terms of a
  118: permission notice identical to this one.
  119: 
  120: Permission is granted to copy and distribute translations of this manual
  121: into another language, under the above conditions for modified versions,
  122: except that this permission notice may be stated in a translation
  123: approved by the Foundation.
  124: @end titlepage
  125: 
  126: @c Define an environment variable index.
  127: @defcodeindex ev
  128: @c Define an output variable index.
  129: @defcodeindex ov
  130: @c Define a CPP variable index.
  131: @defcodeindex cv
  132: @c Define an Autoconf macro index that @defmac doesn't write to.
  133: @defcodeindex ma
  134: @c Define an M4sugar macro index that @defmac doesn't write to.
  135: @defcodeindex ms
  136: 
  137: @node Top, Introduction, (dir), (dir)
  138: @comment  node-name,  next,  previous,  up
  139: 
  140: @ifinfo
  141: @c This file documents the GNU Autoconf package for creating scripts to
  142: @c configure source code packages using templates and the GNU M4 macro
  143: @c package.  This is edition @value{EDITION}, for Autoconf version
  144: @c @value{VERSION}.
  145: @c 
  146: このファイルは,テンプレートとGNU M4マクロパッケージを使用しながら,ソー
  147: スコードパッケージをコンフィグレーションするためのスクリプトを生成する,
  148: GNU Autoconfパッケージを説明します.これは,エディション@value{EDITION}
  149: で,Autoconfのバージョン@value{VERSION}に対応するものです.
  150: @end ifinfo
  151: 
  152: @c The master menu, created with texinfo-master-menu, goes here.
  153: 
  154: @menu
  155: * Introduction::                Autoconf's purpose, strengths, and weaknesses
  156: * The GNU build system::        A set of tools for portable software packages
  157: * Making configure Scripts::    How to organize and produce Autoconf scripts
  158: * Setup::                       Initialization and output
  159: * Existing Tests::              Macros that check for particular features
  160: * Writing Tests::               How to write new feature checks
  161: * Results::                     What to do with results from feature checks
  162: * Programming in M4::           Layers on top of which Autoconf is written
  163: * Writing Autoconf Macros::     Adding new macros to Autoconf
  164: * Portable Shell::              Shell script portability pitfalls
  165: * Manual Configuration::        Selecting features that can't be guessed
  166: * Site Configuration::          Local defaults for @code{configure}
  167: * Running configure scripts::   How to use the Autoconf output
  168: * config.status Invocation::    Recreating a configuration
  169: * Obsolete Constructs::         Kept for backward compatibility
  170: * Questions::                   Questions about Autoconf, with answers
  171: * History::                     History of Autoconf
  172: * Environment Variable Index::  Index of environment variables used
  173: * Output Variable Index::       Index of variables set in output files
  174: * Preprocessor Symbol Index::   Index of C preprocessor symbols defined
  175: * Autoconf Macro Index::        Index of Autoconf macros
  176: * M4 Macro Index::              Index of M4, M4sugar, and M4sh macros
  177: * Concept Index::               General index
  178: 
  179: @c @detailmenu --- The Detailed Node Listing ---
  180: @c 
  181: @detailmenu
  182:  --- 詳細なノードリスト ---
  183: 
  184: @c The GNU build system
  185: @c 
  186: GNUビルドシステム
  187: 
  188: * Automake::                    Escaping Makefile hell
  189: * Libtool::                     Building libraries portably
  190: * Pointers::                    More info on the GNU build system
  191: 
  192: @c Making @code{configure} Scripts
  193: @c 
  194: @code{configure}スクリプトの作成
  195: 
  196: * Writing configure.ac::        What to put in an Autoconf input file
  197: * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
  198: * ifnames Invocation::          Listing the conditionals in source code
  199: * autoconf Invocation::         How to create configuration scripts
  200: * autoreconf Invocation::       Remaking multiple @code{configure} scripts
  201: 
  202: @c Writing @file{configure.ac}
  203: @c 
  204: @file{configure.ac}を書く
  205: 
  206: * Shell Script Compiler::       Autoconf as solution of a problem
  207: * Autoconf Language::           Programming in Autoconf
  208: * configure.ac Layout::         Standard organization of configure.ac
  209: 
  210: @c Initialization and Output Files
  211: @c 
  212: 初期化と出力ファイル
  213: 
  214: * Notices::                     Copyright, version numbers in @code{configure}
  215: * Input::                       Where Autoconf should find files
  216: * Output::                      Outputting results from the configuration
  217: * Configuration Actions::       Preparing the output based on results
  218: * Configuration Files::         Creating output files
  219: * Makefile Substitutions::      Using output variables in @file{Makefile}s
  220: * Configuration Headers::       Creating a configuration header file
  221: * Configuration Commands::      Running arbitrary instantiation commands
  222: * Configuration Links::         Links depending from the configuration
  223: * Subdirectories::              Configuring independent packages together
  224: * Default Prefix::              Changing the default installation prefix
  225: 
  226: @c Substitutions in Makefiles
  227: @c 
  228: Makefileの代入
  229: 
  230: * Preset Output Variables::     Output variables that are always set
  231: * Installation Directory Variables::  Other preset output variables
  232: * Build Directories::           Supporting multiple concurrent compiles
  233: * Automatic Remaking::          Makefile rules for configuring
  234: 
  235: @c Configuration Header Files
  236: @c 
  237: ヘッダファイルのコンフィグレーション
  238: 
  239: * Header Templates::            Input for the configuration headers
  240: * autoheader Invocation::       How to create configuration templates
  241: * Autoheader Macros::           How to specify CPP templates
  242: 
  243: @c Existing Tests
  244: @c 
  245: 存在のテスト
  246: 
  247: * Common Behavior::             Macros' standard schemes
  248: * Alternative Programs::        Selecting between alternative programs
  249: * Files::                       Checking for the existence of files
  250: * Libraries::                   Library archives that might be missing
  251: * Library Functions::           C library functions that might be missing
  252: * Header Files::                Header files that might be missing
  253: * Declarations::                Declarations that may be missing
  254: * Structures::                  Structures or members that might be missing
  255: * Types::                       Types that might be missing
  256: * Compilers and Preprocessors::  Checking for compiling programs
  257: * System Services::             Operating system services
  258: * UNIX Variants::               Special kludges for specific UNIX variants
  259: 
  260: @c Common Behavior
  261: @c 
  262: 共通の動作
  263: 
  264: * Standard Symbols::            Symbols defined by the macros
  265: * Default Includes::            Includes used by the generic macros
  266: 
  267: @c Alternative Programs
  268: @c 
  269: 代替プログラム
  270: 
  271: * Particular Programs::         Special handling to find certain programs
  272: * Generic Programs::            How to find other programs
  273: 
  274: @c Library Functions
  275: @c 
  276: ライブラリ関数
  277: 
  278: * Function Portability::        Pitfalls with usual functions
  279: * Particular Functions::        Special handling to find certain functions
  280: * Generic Functions::           How to find other functions
  281: 
  282: @c Header Files
  283: @c 
  284: ヘッダファイル
  285: 
  286: * Particular Headers::          Special handling to find certain headers
  287: * Generic Headers::             How to find other headers
  288: 
  289: @c Declarations
  290: @c 
  291: 宣言
  292: 
  293: * Particular Declarations::     Macros to check for certain declarations
  294: * Generic Declarations::        How to find other declarations
  295: 
  296: @c Structures
  297: @c 
  298: 構造体
  299: 
  300: * Particular Structures::       Macros to check for certain structure members
  301: * Generic Structures::          How to find other structure members
  302: 
  303: @c Types
  304: @c 
  305:   306: 
  307: * Particular Types::            Special handling to find certain types
  308: * Generic Types::               How to find other types
  309: 
  310: @c Compilers and Preprocessors
  311: @c 
  312: コンパイラとプリプロセッサ
  313: 
  314: * Generic Compiler Characteristics::  Language independent tests
  315: * C Compiler::                  Checking its characteristics
  316: * C++ Compiler::                Likewise
  317: * Fortran 77 Compiler::         Likewise
  318: 
  319: @c Writing Tests
  320: @c 
  321: テストを書く
  322: 
  323: * Examining Declarations::      Detecting header files and declarations
  324: * Examining Syntax::            Detecting language syntax features
  325: * Examining Libraries::         Detecting functions and global variables
  326: * Run Time::                    Testing for run-time features
  327: * Systemology::                 A zoology of operating systems
  328: * Multiple Cases::              Tests for several possible values
  329: * Language Choice::             Selecting which language to use for testing
  330: 
  331: @c Checking Run Time Behavior
  332: @c 
  333: 実行時の動作の調査
  334: 
  335: * Test Programs::               Running test programs
  336: * Guidelines::                  General rules for writing test programs
  337: * Test Functions::              Avoiding pitfalls in test programs
  338: 
  339: @c Results of Tests
  340: @c 
  341: テストの結果
  342: 
  343: * Defining Symbols::            Defining C preprocessor symbols
  344: * Setting Output Variables::    Replacing variables in output files
  345: * Caching Results::             Speeding up subsequent @code{configure} runs
  346: * Printing Messages::           Notifying @code{configure} users
  347: 
  348: @c Caching Results
  349: @c 
  350: 結果のキャッシュ
  351: 
  352: * Cache Variable Names::        Shell variables used in caches
  353: * Cache Files::                 Files @code{configure} uses for caching
  354: * Cache Checkpointing::         Loading and saving the cache file
  355: 
  356: @c Programming in M4
  357: @c 
  358: M4でのプログラム
  359: 
  360: * M4 Quotation::                Protecting macros from unwanted expansion
  361: * Programming in M4sugar::      Convenient pure M4 macros
  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: * Quadrigraphs::                Another way to escape special characters
  371: * Quotation Rule Of Thumb::     One parenthesis, one quote
  372: 
  373: @c Programming in M4sugar
  374: @c 
  375: M4sugarでのプログラム
  376: 
  377: * Redefined M4 Macros::         M4 builtins changed in M4sugar
  378: * Forbidden Patterns::          Catching unexpanded macros
  379: 
  380: @c Writing Autoconf Macros
  381: @c 
  382: Autoconfマクロを書く
  383: 
  384: * Macro Definitions::           Basic format of an Autoconf macro
  385: * Macro Names::                 What to call your new macros
  386: * Reporting Messages::          Notifying @code{autoconf} users
  387: * Dependencies Between Macros::  What to do when macros depend on other macros
  388: * Obsoleting Macros::           Warning about old ways of doing things
  389: * Coding Style::                Writing Autoconf macros @`a la Autoconf
  390: 
  391: @c Dependencies Between Macros
  392: @c 
  393: マクロ間の依存性
  394: 
  395: * Prerequisite Macros::         Ensuring required information
  396: * Suggested Ordering::          Warning about possible ordering problems
  397: 
  398: @c Portable Shell Programming
  399: @c 
  400: 移植性のあるシェルプログラム
  401: 
  402: * Shellology::                  A zoology of shells
  403: * Here-Documents::              Quirks and tricks
  404: * File Descriptors::            FDs and redirections
  405: * File System Conventions::     File- and pathnames
  406: * Shell Substitutions::         Variable and command expansions
  407: * Assignments::                 Varying side effects of assignments
  408: * Special Shell Variables::     Variables you should not change
  409: * Limitations of Builtins::     Portable use of not so portable /bin/sh
  410: * Limitations of Usual Tools::  Portable use of portable tools
  411: * Limitations of Make::         Portable Makefiles
  412: 
  413: @c Manual Configuration
  414: @c 
  415: 手動のコンフィグレーション
  416: 
  417: * Specifying Names::            Specifying the system type
  418: * Canonicalizing::              Getting the canonical system type
  419: * Using System Type::           What to do with the system type
  420: 
  421: @c Site Configuration
  422: @c 
  423: サイトコンフィグレーション
  424: 
  425: * External Software::           Working with other optional software
  426: * Package Options::             Selecting optional features
  427: * Pretty Help Strings::         Formating help string
  428: * Site Details::                Configuring site details
  429: * Transforming Names::          Changing program names when installing
  430: * Site Defaults::               Giving @code{configure} local defaults
  431: 
  432: @c Transforming Program Names When Installing
  433: @c 
  434: インストール時のプログラム名の変換
  435: 
  436: * Transformation Options::      @code{configure} options to transform names
  437: * Transformation Examples::     Sample uses of transforming names
  438: * Transformation Rules::        @file{Makefile} uses of transforming names
  439: 
  440: @c Running @code{configure} Scripts
  441: @c 
  442: @code{configure}スクリプトの実行
  443: 
  444: * Basic Installation::          Instructions for typical cases
  445: * Compilers and Options::       Selecting compilers and optimization
  446: * Multiple Architectures::      Compiling for multiple architectures at once
  447: * Installation Names::          Installing in different directories
  448: * Optional Features::           Selecting optional features
  449: * System Type::                 Specifying the system type
  450: * Sharing Defaults::            Setting site-wide defaults for @code{configure}
  451: * Environment Variables::       Defining environment variables.
  452: * configure Invocation::        Changing how @code{configure} runs
  453: 
  454: @c Obsolete Constructs
  455: @c 
  456: 時代遅れの構成物
  457: 
  458: * Obsolete config.status Use::  Different calling convention
  459: * acconfig.h::                  Additional entries in @file{config.h.in}
  460: * autoupdate Invocation::       Automatic update of @file{configure.ac}
  461: * Obsolete Macros::             Backward compatibility macros
  462: * Autoconf 1::                  Tips for upgrading your files
  463: * Autoconf 2.13::               Some fresher tips
  464: 
  465: @c Upgrading From Version 1
  466: @c 
  467: バージョン1からのアップグレード
  468: 
  469: * Changed File Names::          Files you might rename
  470: * Changed Makefiles::           New things to put in @file{Makefile.in}
  471: * Changed Macros::              Macro calls you might replace
  472: * Changed Results::             Changes in how to check test results
  473: * Changed Macro Writing::       Better ways to write your own macros
  474: 
  475: @c Upgrading From Version 2.13
  476: @c 
  477: Version 2.13からのアップグレード
  478: 
  479: * Changed Quotation::           Broken code which used to work
  480: * New Macros::                  Interaction with foreign macros
  481: 
  482: @c Questions About Autoconf
  483: @c 
  484: Autoconfに関する質問
  485: 
  486: * Distributing::                Distributing @code{configure} scripts
  487: * Why GNU m4::                  Why not use the standard M4?
  488: * Bootstrapping::               Autoconf and GNU M4 require each other?
  489: * Why Not Imake::               Why GNU uses @code{configure} instead of Imake
  490: 
  491: @c History of Autoconf
  492: @c 
  493: Autoconfの歴史
  494: 
  495: * Genesis::                     Prehistory and naming of @code{configure}
  496: * Exodus::                      The plagues of M4 and Perl
  497: * Leviticus::                   The priestly code of portability arrives
  498: * Numbers::                     Growth and contributors
  499: * Deuteronomy::                 Approaching the promises of easy configuration
  500: 
  501: @end detailmenu
  502: @end menu
  503: 
  504: @c ============================================================= Introduction.
  505: 
  506: @node Introduction, The GNU build system, Top, Top
  507: @chapter はじめに
  508: 
  509: @c @flushright
  510: @display
  511: @c A physicist, an engineer, and a computer scientist were discussing the
  512: @c nature of God.  ``Surely a Physicist,'' said the physicist, ``because
  513: @c early in the Creation, God made Light; and you know, Maxwell's
  514: @c equations, the dual nature of electromagnetic waves, the relativistic
  515: @c consequences@dots{}'' ``An Engineer!,'' said the engineer, ``because
  516: @c before making Light, God split the Chaos into Land and Water; it takes a
  517: @c hell of an engineer to handle that big amount of mud, and orderly
  518: @c separation of solids from liquids@dots{}'' The computer scientist
  519: @c shouted: ``And the Chaos, where do you think it was coming from, hmm?''
  520: @c 
  521: 物理学者,エンジニア,そしてコンピュータ科学者が神の性質を論じていました.
  522: ``確かに物理学者だ''と物理学者が言いました.``なぜなら,創造の早いうちに,
  523: 神が光を作ったからだ.ご存じのように,マックスウェル方程式,電磁波の二重
  524: の性質,相対論者の結果@dots{}.'' ``エンジニアだ!''とエンジニアは言いま
  525: した.``なぜなら,光を作る前に神はカオスを土地と水に分けたからだ.それに
  526: は大量のエンジニアが必要で,大量の泥を処理し,液体から固体を正しく分離し
  527: @dots{}.''コンピュータ科学者は叫びました.``そしてカオス,それはいった
  528: いどこからきたと思いますか,う〜ん?''
  529: 
  530: @c ---Anonymous
  531: @c 
  532: ---詠み人知らず
  533: @c @end flushright
  534: @end display
  535: @c (via Franc,ois Pinard)
  536: 
  537: @c Autoconf is a tool for producing shell scripts that automatically
  538: @c configure software source code packages to adapt to many kinds of
  539: @c @sc{unix}-like systems.  The configuration scripts produced by Autoconf
  540: @c are independent of Autoconf when they are run, so their users do not
  541: @c need to have Autoconf.
  542: @c 
  543: Autoconfは,何種類もの@sc{unix}ライクのシステムに適合するために,ソフト
  544: ウェアソースコードパッケージを自動的にコンフィグレーションするシェルスク
  545: リプトを生成するツールです.Autoconfで生成されたコンフィギュレーションス
  546: クリプトは,実行時にAutoconfに依存しないので,ユーザはAutoconfを持つ必要
  547: がありません.
  548: 
  549: @c The configuration scripts produced by Autoconf require no manual user
  550: @c intervention when run; they do not normally even need an argument
  551: @c specifying the system type.  Instead, they individually test for the
  552: @c presence of each feature that the software package they are for might need.
  553: @c (Before each check, they print a one-line message stating what they are
  554: @c checking for, so the user doesn't get too bored while waiting for the
  555: @c script to finish.)  As a result, they deal well with systems that are
  556: @c hybrids or customized from the more common @sc{unix} variants.  There is
  557: @c no need to maintain files that list the features supported by each
  558: @c release of each variant of @sc{unix}.
  559: @c 
  560: Autoconfで生成されたコンフィギュレーションスクリプトは,実行時にユーザの
  561: 手動の介入を必要としません.通常,システムタイプを指定する引数さえも必要
  562: としません.その代わりに,ソフトウェアパッケージが必要とするそれぞれの機
  563: 能が存在するかどうか,個別に調査します.(それぞれの調査の前に,調査して
  564: いることに関する一行のメッセージを出力し,そのため,ユーザはスクリプトの
  565: 終わりを待っている間,そんなに退屈しません.) 結果として,それら(スクリ
  566: プト) は一般的な@sc{unix}の変形から混成されたりカスタマイズされたりして
  567: いるシステムを上手に扱います.それぞれの@sc{unix}の変形の,それぞれのリ
  568: リースによってサポートされている特徴を,リストアップするファイルを保守す
  569: る必要はありません.
  570: 
  571: @c For each software package that Autoconf is used with, it creates a
  572: @c configuration script from a template file that lists the system features
  573: @c that the package needs or can use.  After the shell code to recognize
  574: @c and respond to a system feature has been written, Autoconf allows it to
  575: @c be shared by many software packages that can use (or need) that feature.
  576: @c If it later turns out that the shell code needs adjustment for some
  577: @c reason, it needs to be changed in only one place; all of the
  578: @c configuration scripts can be regenerated automatically to take advantage
  579: @c of the updated code.
  580: @c 
  581: Autoconfが使用されているそれぞれのソフトウェアパッケージに対し,パッケー
  582: ジが必要とする,または使用可能なシステムの特徴をリストアップしているテン
  583: プレートファイルから,コンフィギュレーションスクリプトを作ります.システ
  584: ムの特徴を認識して応答するシェルコードが書かれた後,使用可能な(または必
  585: 要な)特徴を多くのパッケージで共有することがAutoconfで可能になります.理
  586: 由があって,シェルコードの調整の必要性が後になって発覚した場合,ただ1ヵ
  587: 所のみ変更する必要があります.すべてのコンフィギュレーションスクリプトは,
  588: 更新されたコードを利用するため自動的に再生することが可能です.
  589: 
  590: @c The Metaconfig package is similar in purpose to Autoconf, but the
  591: @c scripts it produces require manual user intervention, which is quite
  592: @c inconvenient when configuring large source trees.  Unlike Metaconfig
  593: @c scripts, Autoconf scripts can support cross-compiling, if some care is
  594: @c taken in writing them.
  595: @c 
  596: MetaconfigパッケージはAutoconfの目的に似ていますが,それが生成するスクリ
  597: プトは手動でユーザが介入する必要があり,大きなソースツリーをコンフィグレー
  598: ションする時は全く不便です.Metaconfigスクリプトと異なり,注意して書いて
  599: いる場合,Autoconfスクリプトはクロスコンパイルもサポート可能です.
  600: 
  601: @c Autoconf does not solve all problems related to making portable software
  602: @c packages---for a more complete solution, it should be used in concert
  603: @c with other GNU build tools like Automake and Libtool.  These other tools
  604: @c take on jobs like the creation of a portable, recursive @file{Makefile}
  605: @c with all of the standard targets, linking of shared libraries, and so
  606: @c on.  @xref{The GNU build system}, for more information.
  607: @c 
  608: Autoconfは,移植性のあるソフトウェアパッケージに関連するすべての問題を解
  609: 決しているわけではありません --- より完全に解決するために,Automakeと
  610: Libtoolのような,その他のGNUビルドツールと連係して使用すべきです.これら
  611: の他のツールは,すべての標準ターゲットを含む,移植性のある再帰的な
  612: @file{Makefile}の作成,共有ライブラリのリンクなどの作業を請け負います.
  613: 詳細は@xref{The GNU build system}.
  614: 
  615: @c Autoconf imposes some restrictions on the names of macros used with
  616: @c @code{#if} in C programs (@pxref{Preprocessor Symbol Index}).
  617: @c 
  618: Autoconfは,Cプログラムの@code{#if}で使用するマクロ名に,多少制限を与え
  619: ます(@pxref{Preprocessor Symbol Index}).
  620: 
  621: @c Autoconf requires @sc{gnu} M4 in order to generate the scripts.  It uses
  622: @c features that some @sc{unix} versions of M4, including @sc{gnu} M4 1.3,
  623: @c do not have.  You must use version 1.4 or later of @sc{gnu} M4.
  624: @c 
  625: Autoconfは,スクリプトを生成するために@sc{gnu} M4が必要です.@sc{unix}バー
  626: ジョンのM4が持っていない特徴を使用し,それには@sc{gnu} M4 1.3も含
  627: まれます.バージョン1.4以降の@sc{gnu} M4を使用する必要があります.
  628: 
  629: @c @xref{Autoconf 1}, for information about upgrading from version 1.
  630: @c @xref{History}, for the story of Autoconf's development.
  631: @c @xref{Questions}, for answers to some common questions about Autoconf.
  632: @c 
  633: バージョン1からのアップグレードについての情報は,@xref{Autoconf 1}.
  634: Autoconfの開発の物語については,@xref{History}. Autoconfについての一般的
  635: な質問へ回答は,@xref{Questions}.
  636: 
  637: @c See the @href{http://www.gnu.org/software/autoconf/autoconf.html,
  638: @c Autoconf web page} for up-to-date information, details on the mailing
  639: @c lists, pointers to a list of known bugs, etc.
  640: @c 
  641: 更新情報,メーリングリストの詳細,既知のバグリストへのポインタなどは,
  642: Autoconf web page@footnote{Autoconf web page,
  643: @url{http://www.gnu.org/software/autoconf/autoconf.html}}を参照してくださ
  644: い.
  645: 
  646: @c Mail suggestions to @email{autoconf@@gnu.org, the Autoconf mailing
  647: @c list}.
  648: @c 
  649: Autoconfに関する提案は @email{autoconf@@gnu.org, the Autoconf mailing
  650: list}にメールして下さい.
  651: 
  652: @c Bug reports should be preferably submitted to the
  653: @c @href{http://sources.redhat.com/cgi-bin/gnatsweb.pl?database=autoconf,
  654: @c Autoconf Gnats database}, or sent to @email{bug-autoconf@@gnu.org, the
  655: @c Autoconf Bugs mailing list}.  If possible, first check that your bug is
  656: @c not already solved in current development versions, and that it has not
  657: @c been reported yet.  Be sure to include all the needed information and a
  658: @c short @file{configure.ac} that demonstrates the problem.
  659: @c 
  660: バグの報告は,できればAutoconf Gnats database@footnote{Autoconf Gnats
  661: database,@url{http://sources.redhat.com/cgi-bin/gnatsweb.pl?database=autoconf}} 
  662: へ提出するか,@email{bug-autoconf@@gnu.org, the Autoconf Bugs mailing
  663: list}へ送付してください.できれば最初に,現在の開発バージョンでバグが既
  664: に解決されていないことと,まだ報告されていないことを調査してください.す
  665: べての必要な情報と,問題を立証する短い@file{configure.ac}を確実に同封し
  666: てください.
  667: 
  668: @c Autoconf's development tree is accessible via @sc{cvs}; see the Autoconf
  669: @c web page for details.  There is also a
  670: @c @href{http://subversions.gnu.org/cgi-bin/cvsweb/autoconf/, @sc{cvs}web
  671: @c interface to the Autoconf development tree}.  Patches relative to the
  672: @c current @sc{cvs} version can be sent for review to the
  673: @c @email{autoconf-patches@@gnu.org, Autoconf Patches mailing list}.
  674: @c 
  675: Autoconfの開発ツリーは,@sc{cvs}でアクセス可能です.詳細は,Autoconfのウェ
  676: ブページを参照してください.@sc{cvs}web interface to the Autoconf
  677: development tree@footnote{@sc{cvs}web interface to the Autoconf
  678: development
  679: tree,@url{http://subversions.gnu.org/cgi-bin/cvsweb/autoconf/}}もありま
  680: す.現在の@sc{cvs}バージョンに関連するパッチは,レビューするために
  681: @email{autoconf-patches@@gnu.org, Autoconf Patches mailing list}に送付す
  682: ることが可能です.
  683: 
  684: @c Because of its mission, Autoconf includes only a set of often-used
  685: @c macros that have already demonstrated their usefulness.  Nevertheless,
  686: @c if you wish to share your macros, or find existing ones, see the
  687: @c @href{http://www.gnu.org/software/ac-archive/, Autoconf Macro
  688: @c Archive}, which is kindly run by @email{simons@@computer.org,
  689: @c Peter Simons}.
  690: @c 
  691: その作業のため,Autoconfは既に有用性が立証されている,よく使用されるマク
  692: ロのみ含めています.それでも,マクロを共有したい,または既存のものを探し
  693: たい場合,@email{simons@@computer.org, Peter Simons}の好意で作成されてい
  694: るAutoconf Macro Archive@footnote{Autoconf Macro
  695: Archive,@url{http://www.gnu.org/software/ac-archive/}}を参照してください.
  696: 
  697: 
  698: @c ================================================= The GNU build system
  699: 
  700: @node The GNU build system, Making configure Scripts, Introduction, Top
  701: @chapter GNUビルドシステム
  702: 
  703: @c Autoconf solves an important problem---reliable discovery of
  704: @c system-specific build and runtime information---but this is only one
  705: @c piece of the puzzle for the development of portable software.  To this
  706: @c end, the GNU project has developed a suite of integrated utilities to
  707: @c finish the job Autoconf started: the GNU build system, whose most
  708: @c important components are Autoconf, Automake, and Libtool.  In this
  709: @c chapter, we introduce you to those tools, point you to sources of more
  710: @c information, and try to convince you to use the entire GNU build system
  711: @c for your software.
  712: @c 
  713: Autoconfは重要な問題を解決します --- それは信頼できるシステムで指定した
  714: ビルドと実行時の情報の発見です --- しかし,これは移植性のあるソフトウエ
  715: アを開発するためのパズルの一ピースに過ぎません.このために,GNUプロジェ
  716: クトは,Autoconfが開始した仕事を完了するためのユーティリティの,統合され
  717: た組み合わせを開発してきました.GNUビルドシステムの最も重要な構成要素は,
  718: Autoconf,Automake,そしてLibtoolです.この章で,我々はこれらのツールを
  719: 紹介し,より多くの情報源を提示し,そして,ソフトウェアに対してGNUビルド
  720: システム全体を便利に使用するように説得してみたいと思います.
  721: 
  722: @menu
  723: * Automake::                    Escaping Makefile hell
  724: * Libtool::                     Building libraries portably
  725: * Pointers::                    More info on the GNU build system
  726: @end menu
  727: 
  728: @node Automake, Libtool, The GNU build system, The GNU build system
  729: @section Automake
  730: 
  731: @c The ubiquity of @code{make} means that a @code{Makefile} is almost the
  732: @c only viable way to distribute automatic build rules for software, but
  733: @c one quickly runs into @code{make}'s numerous limitations.  Its lack of
  734: @c support for automatic dependency tracking, recursive builds in
  735: @c subdirectories, reliable timestamps (e.g. for network filesystems), and
  736: @c so on, mean that developers must painfully (and often incorrectly)
  737: @c reinvent the wheel for each project.  Portability is non-trivial, thanks
  738: @c to the quirks of @code{make} on many systems.  On top of all this is the
  739: @c manual labor required to implement the many standard targets that users
  740: @c have come to expect (@code{make install}, @code{make distclean},
  741: @c @code{make uninstall}, etc.).  Since you are, of course, using Autoconf,
  742: @c you also have to insert repetitive code in your @code{Makefile.in} to
  743: @c recognize @code{@@CC@@}, @code{@@CFLAGS@@}, and other substitutions
  744: @c provided by @code{configure}.  Into this mess steps @dfn{Automake}.
  745: @c 
  746: @code{make}には神がいないということは,@code{Makefile}はソフトウェアの自
  747: 動的なビルド規則を配布するための,ほとんど唯一の現実的な方法なのですが,
  748: すぐに@code{make}の多くの限界にぶつかることを示しています.それには,自
  749: 動的な依存性の追跡に対するサポート,サブディレクトリでの再帰的なビルド,
  750: (例えば,ネットワークファイルシステムに対する)信頼できるタイムスタンプな
  751: どが足りないので,開発者はそれぞれのプロジェクトに対し,辛い(そして間違
  752: うことが多い)車輪の再開発が必要になっています.多くのシステムの
  753: @code{make}の癖のために,移植性は些細な問題ではなくなっています.なによ
  754: りも,ユーザが期待する多くの標準的なターゲット(@code{make install},
  755: @code{make distclean},@code{make uninstall}など)を手作業で実装する必要
  756: があることがあげられます.もちろん,Autoconfを使用しているので,
  757: @code{@@CC@@},@code{@@CFLAGS@@},そして@code{configure}で提供されるその
  758: 他の置換式を認識するように,@code{Makefile.in}に対応するコードを挿入して
  759: いるでしょう.この乱雑な状況は@dfn{Automake}で処理しましょう.
  760: @cindex Automake
  761: 
  762: @c Automake allows you to specify your build needs in a @code{Makefile.am}
  763: @c file with a vastly simpler and more powerful syntax than that of a plain
  764: @c @code{Makefile}, and then generates a portable @code{Makefile.in} for
  765: @c use with Autoconf.  For example, the @code{Makefile.am} to build and
  766: @c install a simple ``Hello world'' program might look like:
  767: @c 
  768: Automakeは,プレーンの@code{Makefile}の方法と比べ,非常に簡単により強力
  769: な構文で,ビルドが必要とするものを@code{Makefile.am}ファイルで指定するこ
  770: とを可能とし,Autoconfでの使用するための移植性の高い@code{Makefile.in}を
  771: 生成します.例えば,単純な``Hello world''プログラムをビルドしインストー
  772: ルするための@code{Makefile.am}は以下のようになります.
  773: 
  774: @example
  775: bin_PROGRAMS = hello
  776: hello_SOURCES = hello.c
  777: @end example
  778: 
  779: @noindent
  780: @c The resulting @code{Makefile.in} (~400 lines) automatically supports all
  781: @c the standard targets, the substitutions provided by Autoconf, automatic
  782: @c dependency tracking, @code{VPATH} building, and so on.  @code{make} will
  783: @c build the @code{hello} program, and @code{make install} will install it
  784: @c in @file{/usr/local/bin} (or whatever prefix was given to
  785: @c @code{configure}, if not @file{/usr/local}).
  786: @c 
  787: 結果として得られる@code{Makefile.in}(約400行)は,自動的に,すべての標準
  788: 的なターゲット,Autoconfが提供する置換式,自動的な依存性追跡,
  789: @code{VPATH}のビルドなどをサポートします.@code{make}で@code{hello}プロ
  790: グラムをビルドし,@code{make install}で,それを@file{/usr/local/bin}(ま
  791: たは,@file{/usr/local}でなければ,@code{configure}で与えた接頭辞)にイン
  792: ストールします.
  793: 
  794: @c Automake may require that additional tools be present on the
  795: @c @emph{developer's} machine.  For example, the @code{Makefile.in} that
  796: @c the developer works with may not be portable (e.g. it might use special
  797: @c features of your compiler to automatically generate dependency
  798: @c information).  Running @code{make dist}, however, produces a
  799: @c @file{hello-1.0.tar.gz} package (or whatever the program/version is)
  800: @c with a @code{Makefile.in} that will work on any system.
  801: @c 
  802: Automakeは,さらなるツールが@emph{開発者の}マシンにあることを要求するか
  803: もしれません.例えば,開発者が作業している@code{Makefile.in}は移植性がな
  804: いかもしれません(例えば,自動的に依存情報を生成するために,コンパイラの
  805: 特殊な機能を使用しているかもしれません).しかし,@code{make dist}を実行
  806: することで,あらゆるシステムで動作する@code{Makefile.in}を用いている,
  807: @file{hello-1.0.tar.gz}(やあらゆるプログラムをバージョンを持つ)パッケー
  808: ジを生成します.
  809: 
  810: @c The benefits of Automake increase for larger packages (especially ones
  811: @c with subdirectories), but even for small programs the added convenience
  812: @c and portability can be substantial.  And that's not all@dots{}
  813: @c 
  814: Automakeの利点は,パッケージが大きければ大きい(特にサブディレクトリがあ
  815: るもの)ほど有利になりますが,小さなプログラムに対しても重要な利便性と移
  816: 植性を加えます.そして,それだけがすべてではありません@dots{}
  817: 
  818: 
  819: @node Libtool, Pointers, Automake, The GNU build system
  820: @section Libtool
  821: 
  822: @c Very often, one wants to build not only programs, but libraries, so that
  823: @c other programs can benefit from the fruits of your labor.  Ideally, one
  824: @c would like to produce @emph{shared} (dynamically-linked) libraries,
  825: @c which can be used by multiple programs without duplication on disk or in
  826: @c memory and can be updated independently of the linked programs.
  827: @c Producing shared libraries portably, however, is the stuff of
  828: @c nightmares---each system has its own incompatible tools, compiler flags,
  829: @c and magic incantations.  Fortunately, GNU provides a solution:
  830: @c @dfn{Libtool}.
  831: @c 
  832: 他のプログラムで,これまでの作業の成果から利益を得ることを可能にするため,
  833: プログラムだけでなくライブラリをビルドしたいことも頻繁にあるでしょう.理
  834: 想的には,@emph{共有}(動的にリンクされる)ライブラリを生成したいと考え,
  835: それは,複数のプログラムからディスクやメモリに同じものを複製せずに使用可
  836: 能で,リンクされているプログラムに依存せずに更新可能だからです.しかし,
  837: 移植性の高い共有ライブラリは悪夢の元です --- それぞれのシステムは,独自
  838: の互換性のないツール,コンパイラフラグ,そして魔法の呪文があります.幸い
  839: にも,GNUは解決方法を提供しています.それは,@dfn{Libtool}です.
  840: @cindex Libtool
  841: 
  842: @c Libtool handles all the requirements of building shared libraries for
  843: @c you, and at this time seems to be the @emph{only} way to do so with any
  844: @c portability.  It also handles many other headaches, such as: the
  845: @c interaction of @code{Makefile} rules with the variable suffixes of
  846: @c shared libraries, linking reliably to shared libraries before they are
  847: @c installed by the superuser, and supplying a consistent versioning system
  848: @c (so that different versions of a library can be installed or upgraded
  849: @c without breaking binary compatibility).  Although Libtool, like
  850: @c Autoconf, can be used on its own, it is most simply utilized in
  851: @c conjunction with Automake---there, Libtool is used automatically
  852: @c whenever shared libraries are needed, and you need not know its syntax.
  853: @c 
  854: Libtoolは,共有ライブラリのビルドに関するすべての要求を処理し,この時,
  855: あらゆる移植性を扱うための@emph{唯一の}方法だと思われます.また,以下の
  856: ような頭痛の種も扱います.それは,共有ライブラリの様々な接尾子を扱う
  857: @code{Makefile}規則の相互作用,以前にスーパーユーザによってインストール
  858: された共有ライブラリとの信頼できるリンク,そして,整合性の高いバージョン
  859: 管理システムの提供です(それは,ライブラリのことなるバージョンを,バイナ
  860: リ互換性を壊さないようにインストールし更新することを可能にするためのもの
  861: です).しかしLibtoolは,Autoconf同様に,単独で使用することは不可能で,そ
  862: れは単純にAutomakeと組み合わせて利用されます --- そこで,Libtoolは共有ラ
  863: イブラリが必要な時に自動的に使用され,そして使用者はその構文を知っている
  864: 必要はありません.
  865: 
  866: 
  867: @node Pointers,  , Libtool, The GNU build system
  868: @section 参考文献
  869: 
  870: @c Developers who are used to the simplicity of @code{make} for small
  871: @c projects on a single system might be daunted at the prospect of learning
  872: @c to use Automake and Autoconf.  As your software is distributed to more
  873: @c and more users, however, you will otherwise quickly find yourself
  874: @c putting lots of effort into reinventing the services that the GNU build
  875: @c tools provide, and making the same mistakes that they once made and
  876: @c overcame.  (Besides, since you're already learning Autoconf, Automake
  877: @c will be a piece of cake.)
  878: @c 
  879: 単一のシステムで小さなプロジェクトのために,簡単な@code{make}を使用して
  880: いる開発者は,AutomakeとAutoconfを使用するために学習する見通しを立てると
  881: 圧倒されるかもしれません.しかし,ソフトウェアはより多くのユーザに配布さ
  882: れるので,GNUビルドツールが提供するサービスを再発明するために多くの努力
  883: を費やしていることと,一度犯して解決した過ちを繰り返していることがすぐに
  884: 分かるでしょう.(また,既にAutoconfを学んでいるので,Automakeは朝飯前で
  885: しょう.)
  886: 
  887: @c There are a number of places that you can go to for more information on
  888: @c the GNU build tools.
  889: @c 
  890: GNUビルドツールの詳細な情報を得るために,訪問する場所はたくさんあります.
  891: 
  892: @itemize @minus
  893: 
  894: @item Web
  895: 
  896: @c The home pages for
  897: @c @href{http://www.gnu.org/software/autoconf/,Autoconf},
  898: @c @href{http://www.gnu.org/software/automake/,Automake}, and
  899: @c @href{http://www.gnu.org/software/libtool/,Libtool}.
  900: @c 
  901: Autoconf@footnote{Autoconf,@url{http://www.gnu.org/software/autoconf/}},
  902: Automake@footnote{Automake,@url{http://www.gnu.org/software/automake/}},
  903: そして
  904: Libtool@footnote{Libtool,@url{http://www.gnu.org/software/libtool/}}のホー
  905: ムページ.
  906: 
  907: @item Automakeのマニュアル
  908: 
  909: @c @xref{Top,,Automake,automake,GNU Automake}, for more
  910: @c information on Automake.
  911: @c
  912: Automakeの詳細は,@xref{Top,,Automake,automake,GNU Automake}.
  913: 
  914: @item 書籍
  915: 
  916: @c The book @cite{GNU Autoconf, Automake and Libtool}@footnote{@cite{GNU
  917: @c Autoconf, Automake and Libtool}, by G. V. Vaughan, B. Elliston,
  918: @c T. Tromey, and I. L. Taylor. New Riders, 2000, ISBN 1578701902.}
  919: @c describes the complete GNU build environment.  You can also find the
  920: @c entire book on-line at @href{http://sources.redhat.com/autobook/,``The
  921: @c Goat Book'' home page}.
  922: @c 
  923: 書籍@cite{GNU Autoconf, Automake and Libtool}@footnote{@cite{GNU
  924: Autoconf, Automake and Libtool}, by G. V. Vaughan, B. Elliston,
  925: T. Tromey, and I. L. Taylor. New Riders, 2000, ISBN 1578701902.}では,完
  926: 全なGNUビルド環境が記述されています.``The Goat Book'' home
  927: page@footnote{``The Goat Book'' home
  928: page,@url{http://sources.redhat.com/autobook/}}では,オンラインで本全体
  929: を見ることも可能です.
  930: 
  931: @item チュートリアルと例
  932: 
  933: @c The @href{http://sources.redhat.com/autoconf/,Autoconf Developer Page}
  934: @c maintains links to a number of Autoconf/Automake tutorials online, and
  935: @c also links to the @href{http://www.gnu.org/software/ac-archive/,
  936: @c Autoconf Macro Archive}.
  937: @c 
  938: Autoconf Developer Page@footnote{Autoconf Developer
  939: Page,@url{http://sources.redhat.com/autoconf/}}では,Autoconf/Automakeの
  940: オンラインのチュートリアルと,Autoconf Macro Archive@footnote{Autoconf
  941: Macro Archive,@url{http://www.gnu.org/software/ac-archive/}}のリンクも
  942: 管理しています.
  943: 
  944: @end itemize
  945: 
  946: @c ================================================= Making configure Scripts.
  947: 
  948: @node Making configure Scripts, Setup, The GNU build system, Top
  949: @chapter @code{configure}スクリプトの作成
  950: @cindex @file{aclocal.m4}
  951: @cindex @code{configure}
  952: 
  953: @c The configuration scripts that Autoconf produces are by convention
  954: @c called @code{configure}.  When run, @code{configure} creates several
  955: @c files, replacing configuration parameters in them with appropriate
  956: @c values.  The files that @code{configure} creates are:
  957: @c 
  958: Autoconfが生成するコンフィギュレーションスクリプトは,慣習的に 
  959: @code{configure}と呼ばれます.実行時に,@code{configure}はいくつかのファ
  960: イルを作成し,そこで,コンフィギュレーションパラメータを適切な値に置換し
  961: ます.@code{configure}が作成するファイルは以下の通りです.
  962: 
  963: @itemize @minus
  964: @item
  965: @c one or more @file{Makefile} files, one in each subdirectory of the
  966: @c package (@pxref{Makefile Substitutions});
  967: @c 
  968: 1つ以上の@file{Makefile}で,それはパッケージのそれぞれのサブディレクトリ
  969: に1つずつあります(@pxref{Makefile Substitutions}).
  970: 
  971: @item
  972: @c optionally, a C header file, the name of which is configurable,
  973: @c containing @code{#define} directives (@pxref{Configuration Headers});
  974: @c 
  975: オプションのCヘッダファイルで,それはコンフィグレーション可能な名前で, 
  976: @code{#define}ディレクティブを含んでいます(@pxref{Configuration
  977: Headers}).
  978: 
  979: @item
  980: @c a shell script called @file{config.status} that, when run, will recreate
  981: @c the files listed above (@pxref{config.status Invocation});
  982: @c 
  983: @file{config.status}という名のシェルスクリプトで,それは実行時に上記でリ
  984: ストアップされているファイルを再生成します(@pxref{config.status
  985: Invocation}).
  986: 
  987: @item
  988: @c an optional shell script normally called @file{config.cache}
  989: @c (created when using @samp{configure --config-cache}) that
  990: @c saves the results of running many of the tests (@pxref{Cache Files});
  991: @c 
  992: @file{config.cache}という名の(@samp{configure --config-cache}が使用され
  993: る時に作成される)オプションのシェルスクリプトで,それは多くのテストの実
  994: 行結果を保存しています(@pxref{Cache Files}).
  995: 
  996: @item
  997: @c a file called @file{config.log} containing any messages produced by
  998: @c compilers, to help debugging if @code{configure} makes a mistake.
  999: @c 
 1000: @file{config.log}という名のコンパイラが生成する全てのメッセージを含んで
 1001: いるファイルで,@code{configure}が失敗した場合はデバッグの助けとなります.
 1002: @end itemize
 1003: 
 1004: @cindex @file{configure.in}
 1005: @cindex @file{configure.ac}
 1006: @c To create a @code{configure} script with Autoconf, you need to write an
 1007: @c Autoconf input file @file{configure.ac} (or @file{configure.in}) and run
 1008: @c @code{autoconf} on it.  If you write your own feature tests to
 1009: @c supplement those that come with Autoconf, you might also write files
 1010: @c called @file{aclocal.m4} and @file{acsite.m4}.  If you use a C header
 1011: @c file to contain @code{#define} directives, you might also run
 1012: @c @code{autoheader}, and you will distribute the generated file
 1013: @c @file{config.h.in} with the package.
 1014: @c 
 1015: Autoconfを用いて@code{configure}スクリプトを作成するために,Autoconfの入
 1016: 力ファイル@file{configure.ac}(または@file{configure.in})を書き,
 1017: @code{autoconf}をそこで実行する必要があります.Autoconfとともにもたらさ
 1018: れたものを補うために独自の特徴テストを書く場合,@file{aclocal.m4}と
 1019: @file{acsite.m4}という名のファイルも書くことになるでしょう.
 1020: @code{#define}ディレクティブを含むCヘッダファイルを使用する場合,
 1021: @code{autoheader}も実行し,パッケージで生成されるファイル
 1022: @file{config.h.in}を配布することになるでしょう.
 1023: 
 1024: @c Here is a diagram showing how the files that can be used in
 1025: @c configuration are produced.  Programs that are executed are suffixed by
 1026: @c @samp{*}.  Optional files are enclosed in square brackets (@samp{[]}).
 1027: @c @code{autoconf} and @code{autoheader} also read the installed Autoconf
 1028: @c macro files (by reading @file{autoconf.m4}).
 1029: @c 
 1030: コンフィギュレーションで使用可能なファイルを生成する方法は,以下で示す図
 1031: の用になります.実行するプログラムには,@samp{*}が付いています.オプショ
 1032: ンのファイルは角カッコ(@samp{[]})で囲っています.@code{autoconf}と 
 1033: @code{autoheader}は,Autoconfでインストールされる(@file{autoconf.m4}が読
 1034: む)マクロファイルも読み込みます.
 1035: 
 1036: @noindent
 1037: @c Files used in preparing a software package for distribution:
 1038: @c 
 1039: ソフトウェアパッケージを配布する準備で使用されるファイルは,以下のように
 1040: なっています.
 1041: 
 1042: @example
 1043: your source files --> [autoscan*] --> [configure.scan] --> configure.ac
 1044: 
 1045: @group
 1046: configure.ac --.
 1047:                |   .------> autoconf* -----> configure
 1048: [aclocal.m4] --+---+
 1049:                |   `-----> [autoheader*] --> [config.h.in]
 1050: [acsite.m4] ---'
 1051: @end group
 1052: 
 1053: Makefile.in -------------------------------> Makefile.in
 1054: @end example
 1055: 
 1056: @noindent
 1057: @c Files used in configuring a software package:
 1058: @c 
 1059: ソフトウェアパッケージのコンフィグレーションで使用されるファイルは,以下
 1060: のようになっています.
 1061: 
 1062: @example
 1063: @group
 1064:                        .-------------> [config.cache]
 1065: configure* ------------+-------------> config.log
 1066:                        |
 1067: [config.h.in] -.       v            .-> [config.h] -.
 1068:                +--> config.status* -+               +--> make*
 1069: Makefile.in ---'                    `-> Makefile ---'
 1070: @end group
 1071: @end example
 1072: 
 1073: @menu
 1074: * Writing configure.ac::        What to put in an Autoconf input file
 1075: * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
 1076: * ifnames Invocation::          Listing the conditionals in source code
 1077: * autoconf Invocation::         How to create configuration scripts
 1078: * autoreconf Invocation::       Remaking multiple @code{configure} scripts
 1079: @end menu
 1080: 
 1081: 
 1082: @node Writing configure.ac, autoscan Invocation, Making configure Scripts, Making configure Scripts
 1083: @section @file{configure.ac}を書く
 1084: 
 1085: @c To produce a @code{configure} script for a software package, create a
 1086: @c file called @file{configure.ac} that contains invocations of the
 1087: @c Autoconf macros that test the system features your package needs or can
 1088: @c use.  Autoconf macros already exist to check for many features; see
 1089: @c @ref{Existing Tests}, for their descriptions.  For most other features,
 1090: @c you can use Autoconf template macros to produce custom checks; see
 1091: @c @ref{Writing Tests}, for information about them.  For especially tricky
 1092: @c or specialized features, @file{configure.ac} might need to contain some
 1093: @c hand-crafted shell commands; see @ref{Portable Shell}.  The
 1094: @c @code{autoscan} program can give you a good start in writing
 1095: @c @file{configure.ac} (@pxref{autoscan Invocation}, for more information).
 1096: @c 
 1097: ソフトウェアパッケージの@code{configure}スクリプトを生成するため,パッケー
 1098: ジが必要な,または利用可能なシステムの特徴をテストするAutoconfマクロの呼
 1099: び出しを含んでいる,@file{configure.ac}と呼ばれるファイルを作成してくだ
 1100: さい.Autoconfマクロには,多くの特徴を調査するものはすでに多く存在してい
 1101: ます.それら関する記述は,@ref{Existing Tests}.ほとんどのその他の特徴に
 1102: 対しては,カスタムチェックを生成するAutoconfのテンプレートマクロを使用す
 1103: ることが可能です.それらに関する詳細は,@ref{Writing Tests}.特にトリッ
 1104: キーな,または専門的な特徴に対して,@file{configure.ac}に,若干の手作り
 1105: のシェルコマンドを含める必要もあるでしょう.@code{autoscan}プログラムは
 1106: @file{configure.ac}を書くための良いきっかけ与えてくれます.(詳細は,
 1107: @pxref{autoscan Invocation}).
 1108: 
 1109: @c Previous versions of Autoconf promoted the name @file{configure.in},
 1110: @c which is somewhat ambiguous (the tool needed to produce this file is not
 1111: @c described by its extension), and introduces a slight confusion with
 1112: @c @file{config.h.in} and so on (for which @samp{.in} means ``to be
 1113: @c processed by @code{configure}'').  Using @file{configure.ac} is now
 1114: @c preferred.
 1115: @c 
 1116: Autoconfのこれまでのバージョンでは,名前@file{configure.in}を勧めていま
 1117: したが,それは曖昧で(このファイルを生成するために必要なツールは,拡張子
 1118: では分かりません),@file{config.h.in}などで(@samp{.in}は
 1119: ``@code{configure}で生成される''という意味では)ちょっと混乱していました.
 1120: 現在では,@file{configure.ac}の使用が好まれます.
 1121: 
 1122: @menu
 1123: * Shell Script Compiler::       Autoconf as solution of a problem
 1124: * Autoconf Language::           Programming in Autoconf
 1125: * configure.ac Layout::         Standard organization of configure.ac
 1126: @end menu
 1127: 
 1128: @node Shell Script Compiler, Autoconf Language, Writing configure.ac, Writing configure.ac
 1129: @subsection シェルスクリプトコンパイラ
 1130: 
 1131: @c Just as for any other computer language, in order to properly program
 1132: @c @file{configure.ac} in Autoconf you must understand @emph{what} problem
 1133: @c the language tries to address and @emph{how} it does so.
 1134: @c 
 1135: 他のあらゆるコンピュータ言語のために,Autoconfで@file{configure.ac}を正
 1136: しくプログラムするために,言語が解決しようとする問題が@emph{何}で,そう
 1137: するために@emph{どうする}のかを理解する必要があります.
 1138: 
 1139: @c The problem Autoconf addresses is that the world is a mess.  After all,
 1140: @c you are using Autoconf in order to have your package compile easily on
 1141: @c all sorts of different systems, some of them being extremely hostile.
 1142: @c Autoconf itself bears the price for these differences: @code{configure}
 1143: @c must run on all those systems, and thus @code{configure} must limit itself
 1144: @c to their lowest common denominator of features.
 1145: @c 
 1146: Autoconfが解決する問題は,世界が混乱しているということです.結局,全ての
 1147: 異なる種類のシステムでパッケージのコンパイルを簡単にするためにAutoconfを
 1148: 使用し,それを極端に嫌う人も中にはいます.Autoconf自身は,これらの差を価
 1149: 値あるものとして扱います.@code{configure}これらの全てのシステムで実行す
 1150: る必要があり,そのため,@code{configure}には,機能的にそれらの最小公倍数
 1151: に制限する必要があります.
 1152: 
 1153: @c Naturally, you might then think of shell scripts; who needs
 1154: @c @code{autoconf}?  A set of properly written shell functions is enough to
 1155: @c make it easy to write @code{configure} scripts by hand.  Sigh!
 1156: @c Unfortunately, shell functions do not belong to the least common
 1157: @c denominator; therefore, where you would like to define a function and
 1158: @c use it ten times, you would instead need to copy its body ten times.
 1159: @c 
 1160: 通常,シェルスクリプトを考えるでしょう.@code{autoconf}が必要でしょうか?
 1161: 正しく書かれたシェル関数の組み合わせで,手で@code{configure}スクリプトを
 1162: 書くことを十分に簡単にします.ああ!残念ながら,シェル関数は最小公倍数で
 1163: はありません.そのため,関数を定義しそれを10回使用したいところで,その本
 1164: 体を10回コピーする必要があるでしょう.
 1165: 
 1166: @c So, what is really needed is some kind of compiler, @code{autoconf},
 1167: @c that takes an Autoconf program, @file{configure.ac}, and transforms it
 1168: @c into a portable shell script, @code{configure}.
 1169: @c 
 1170: そのため,本当に必要なものは,コンパイラのようなもの,すなわち
 1171: @code{autoconf},Autoconfプログラムが受け入れるもの,すなわち
 1172: @file{configure.ac},そして,それを移植性の高いシェルスクリプト
 1173: @code{configure}に変換するものです.
 1174: 
 1175: @c How does @code{autoconf} perform this task?
 1176: @c 
 1177: どのようにして,@code{autoconf}がこの作業を実行するのでしょう?
 1178: 
 1179: @c There are two obvious possibilities: creating a brand new language or
 1180: @c extending an existing one.  The former option is very attractive: all
 1181: @c sorts of optimizations could easily be implemented in the compiler and
 1182: @c many rigorous checks could be performed on the Autoconf program
 1183: @c (e.g. rejecting any non-portable construct).  Alternatively, you can
 1184: @c extend an existing language, such as the @code{sh} (Bourne shell)
 1185: @c language.
 1186: @c 
 1187: 可能性としては明らかに2つあります.新しい言語を作成すること,または既存
 1188: のものを拡張することです.前者は非常に魅力的です.あらゆる最適化が簡単に
 1189: 実装可能で,厳密なチェックがAutoconfプログラムで実行可能です(例えば,移
 1190: 植性のないあらゆる構成物は除外します).あるいは,@code{sh} (Bourne
 1191: shell)言語のように,既存の言語を拡張することが可能です.
 1192: 
 1193: @c Autoconf does the latter: it is a layer on top of @code{sh}.  It was
 1194: @c therefore most convenient to implement @code{autoconf} as a macro
 1195: @c expander: a program that repeatedly performs @dfn{macro expansions} on
 1196: @c text input, replacing macro calls with macro bodies and producing a pure
 1197: @c @code{sh} script in the end.  Instead of implementing a dedicated
 1198: @c Autoconf macro expander, it is natural to use an existing
 1199: @c general-purpose macro language, such as M4, and implement the extensions
 1200: @c as a set of M4 macros.
 1201: @c 
 1202: Autoconfは,後者で行なっています.それは@code{sh}の最上位層です.そのた
 1203: め,マクロで拡張するものとして@code{autoconf}を実装することが最も便利に
 1204: なっています.マクロ呼び出しをマクロの本体で置換し,最終的にピュアな
 1205: @code{sh}スクリプトを生成しながら,テキスト入力で@dfn{マクロ拡張}を繰り
 1206: 返し実行するプログラムです.Autoconfマクロの拡張に専念して実装する代わり
 1207: に,M4のような既存の一般的な目的を持つマクロ言語を使用し,M4マクロの組み
 1208: 合わせとして拡張部分を実装する方が自然です.
 1209: 
 1210: 
 1211: @node Autoconf Language, configure.ac Layout, Shell Script Compiler, Writing configure.ac
 1212: @subsection Autoconf言語
 1213: @cindex quotation
 1214: 
 1215: @c The Autoconf language is very different from many other computer
 1216: @c languages because it treats actual code the same as plain text.  Whereas
 1217: @c in C, for instance, data and instructions have very different syntactic
 1218: @c status, in Autoconf their status is rigorously the same.  Therefore, we
 1219: @c need a means to distinguish literal strings from text to be expanded:
 1220: @c quotation.
 1221: @c 
 1222: Autoconf言語は,プレーンテキスト同様に実際のコードを扱うので,多くの他の
 1223: コンピュータ言語と全く異なります.例えばCでは,データと命令は全く異なる
 1224: 構文上のステータスとなりますが,Autoconfでは,それらのステータスは厳密に
 1225: 同じです.このため,我々はリテラル文字列を展開されたテキストと区別する手
 1226: 段が必要です.それは引用符です.
 1227: 
 1228: @c When calling macros that take arguments, there must not be any blank
 1229: @c space between the macro name and the open parenthesis.  Arguments should
 1230: @c be enclosed within the M4 quote characters @samp{[} and @samp{]}, and be
 1231: @c separated by commas.  Any leading spaces in arguments are ignored,
 1232: @c unless they are quoted.  You may safely leave out the quotes when the
 1233: @c argument is simple text, but @emph{always} quote complex arguments such
 1234: @c as other macro calls.  This rule applies recursively for every macro
 1235: @c call, including macros called from other macros.
 1236: @c 
 1237: 引数をとるマクロを呼び出す時,マクロ名と開いているカッコの間に空白があっ
 1238: てはなりません.引数は,M4の引用符文字@samp{[}と@samp{]}で囲み,カンマで
 1239: 分けるべきです.引数が単純なテキストのときは,引用符がなくても大丈夫かも
 1240: しれませんが,他のマクロの呼び出しのような複雑な引数は,@emph{常に}引用
 1241: 符で囲んでください.この規則は,他のマクロからの呼び出しを含め,全てのマ
 1242: クロ呼び出しで再帰的に適用されます.
 1243: 
 1244: @c For instance:
 1245: @c 
 1246: 例えば,以下のようにします.
 1247: 
 1248: @example
 1249: AC_CHECK_HEADER([stdio.h],
 1250:                 [AC_DEFINE([HAVE_STDIO_H])],
 1251:                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
 1252: @end example
 1253: 
 1254: @noindent
 1255: @c is quoted properly.  You may safely simplify its quotation to:
 1256: @c 
 1257: これは,正しく引用符で囲まれます.その引用を以下のように単純にしても大丈
 1258: 夫かもしれません.
 1259: 
 1260: @example
 1261: AC_CHECK_HEADER(stdio.h,
 1262:                 [AC_DEFINE(HAVE_STDIO_H)],
 1263:                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
 1264: @end example
 1265: 
 1266: @noindent
 1267: @c Notice that the argument of @code{AC_MSG_ERROR} is still quoted;
 1268: @c otherwise, its comma would have been interpreted as an argument separator.
 1269: @c 
 1270: @code{AC_MSG_ERROR}の引数は,引用符で囲まれたままだということに注意して
 1271: ください.そうしない場合は,カンマは引数を分離するものとして解釈されるで
 1272: しょう.
 1273: 
 1274: @c The following example is wrong and dangerous, as it is underquoted:
 1275: @c 
 1276: 以下の例は,引用符で囲まれていないので,間違っていて危険です.
 1277: 
 1278: @example
 1279: AC_CHECK_HEADER(stdio.h,
 1280:                 AC_DEFINE(HAVE_STDIO_H),
 1281:                 AC_MSG_ERROR([Sorry, can't do anything for you]))
 1282: @end example
 1283: 
 1284: @c In other cases, you may have to use text that also resembles a macro
 1285: @c call.  You must quote that text even when it is not passed as a macro
 1286: @c argument:
 1287: @c 
 1288: 他の場合では,マクロ呼び出しのようなテキストを使用する必要があるかもしれ
 1289: ません.マクロ引数として渡されない時でもテキストは引用符で囲む必要があり
 1290: ます.
 1291: 
 1292: @example
 1293: echo "Hard rock was here!  --[AC_DC]"
 1294: @end example
 1295: 
 1296: @noindent
 1297: @c which will result in
 1298: @c 
 1299: 結果として以下のようになります.
 1300: 
 1301: @example
 1302: echo "Hard rock was here!  --AC_DC"
 1303: @end example
 1304: 
 1305: @noindent
 1306: @c When you use the same text in a macro argument, you must therefore have
 1307: @c an extra quotation level (since one is stripped away by the macro
 1308: @c substitution).  In general, then, it is a good idea to @emph{use double
 1309: @c quoting for all literal string arguments}:
 1310: @c 
 1311: 同じテキストをマクロ引数で使用する時は,そのために余分な引用符レベルを加
 1312: える必要があります(一つはマクロ置換で削除されるためです).従って一般的に,
 1313: @emph{全てのリテラル文字列の引数に対して2重で引用符を使用すること}は良い
 1314: 考えです.
 1315: 
 1316: @example
 1317: AC_MSG_WARN([[AC_DC stinks  --Iron Maiden]])
 1318: @end example
 1319: 
 1320: @c You are now able to understand one of the constructs of Autoconf that
 1321: @c has been continually misunderstood@dots{}  The rule of thumb is that
 1322: @c @emph{whenever you expect macro expansion, expect quote expansion};
 1323: @c i.e., expect one level of quotes to be lost.  For instance:
 1324: @c 
 1325: 絶えず誤解されていたAutoconfの構成物の一つを,今では理解できるでしょう
 1326: @dots{} 第一の規則は,@emph{マクロ展開が予測されるところでは,引用符の展
 1327: 開を予測してください}ということです.すなわち,引用符のレベルの一つが失
 1328: われるということです.例えば,以下のようにします.
 1329: 
 1330: @example
 1331: AC_COMPILE_IFELSE([char b[10];],, [AC_MSG_ERROR([you lose])])
 1332: @end example
 1333: 
 1334: @noindent
 1335: @c is incorrect: here, the first argument of @code{AC_COMPILE_IFELSE} is
 1336: @c @samp{char b[10];} and will be expanded once, which results in
 1337: @c @samp{char b10;}.  (There was an idiom common in Autoconf's past to
 1338: @c address this issue via the M4 @code{changequote} primitive, but do not
 1339: @c use it!)  Let's take a closer look: the author meant the first argument
 1340: @c to be understood as a literal, and therefore it must be quoted twice:
 1341: @c 
 1342: これは正しいものです.ここで,@code{AC_COMPILE_IFELSE}最初の引数は,
 1343: @samp{char b[10];}で,一度展開されて,結果として@samp{char b10;}になりま
 1344: す.(M4の@code{changequote}プリミティブを用いてこの問題を解決することが,
 1345: 一般的な慣習として以前のAutoconfにありましたが,それを使用しないでくださ
 1346: い!)さて,より詳しく見てみましょう.もう一方では,第一引数はリテラルと
 1347: して理解され,そのためそれは引用符で2重に囲む必要があります.
 1348: 
 1349: @example
 1350: AC_COMPILE_IFELSE([[char b[10];]],, [AC_MSG_ERROR([you lose])])
 1351: @end example
 1352: 
 1353: @noindent
 1354: @c Voil@`a, you actually produce @samp{char b[10];} this time!
 1355: @c 
 1356: Voil@`a,今回は実際に@samp{char b[10];}を生成しているのです!
 1357: 
 1358: @c The careful reader will notice that, according to these guidelines, the
 1359: @c ``properly'' quoted @code{AC_CHECK_HEADER} example above is actually
 1360: @c lacking three pairs of quotes!  Nevertheless, for the sake of readability,
 1361: @c double quotation of literals is used only where needed in this manual.
 1362: @c 
 1363: 注意深く読んでいると,これらのガイドラインによれば,上記の例の
 1364: @code{AC_CHECK_HEADER}で引用符で``正しく''囲まれているものは,実際には3 
 1365: 組の引用符が足りないことに気付くでしょう!それにもかかわらず,可読性のた
 1366: め,リテラルを2重に引用符で囲むことは,このマニュアルでは必要なところで
 1367: のみ使用されます.
 1368: 
 1369: @c Some macros take optional arguments, which this documentation represents
 1370: @c as @ovar{arg} (not to be confused with the quote characters).  You may
 1371: @c just leave them empty, or use @samp{[]} to make the emptiness of the
 1372: @c argument explicit, or you may simply omit the trailing commas.  The
 1373: @c three lines below are equivalent:
 1374: @c 
 1375: オプションの引数を受け入れるマクロもあり,それはこのドキュメントでは(引
 1376: 用符の文字を使用して混乱しないように),@r{[}@var{arg}@r{]}として表現しま
 1377: す.空のままにしたり,明示的に引数を空にするために@samp{[]}を使用したり,
 1378: 単純に後置されるカンマを省略したりすることが可能です.以下の3 行は等価と
 1379: なります.
 1380: 
 1381: @example
 1382: AC_CHECK_HEADERS(stdio.h, [], [], [])
 1383: AC_CHECK_HEADERS(stdio.h,,,)
 1384: AC_CHECK_HEADERS(stdio.h)
 1385: @end example
 1386: 
 1387: @c It is best to put each macro call on its own line in
 1388: @c @file{configure.ac}.  Most of the macros don't add extra newlines; they
 1389: @c rely on the newline after the macro call to terminate the commands.
 1390: @c This approach makes the generated @code{configure} script a little
 1391: @c easier to read by not inserting lots of blank lines.  It is generally
 1392: @c safe to set shell variables on the same line as a macro call, because
 1393: @c the shell allows assignments without intervening newlines.
 1394: @c 
 1395: @file{configure.ac}では,単独行にそれぞれのマクロ呼び出しを書くことが最
 1396: 善です.ほとんどのマクロは,余分な改行を加えません.それらはコマンドを終
 1397: 端するための,マクロ呼び出しの後の改行に依存しています.このアプローチで
 1398: は,生成された@code{configure}スクリプトを,多くの空白行を挿入することな
 1399: く,若干読みやすくします.シェルは,改行に干渉されることなく割当が可能な
 1400: ので,シェル変数をマクロ呼び出しと同じ行で設定すると,通常は安全です.
 1401: 
 1402: @c You can include comments in @file{configure.ac} files by starting them
 1403: @c with the @samp{#}.  For example, it is helpful to begin
 1404: @c @file{configure.ac} files with a line like this:
 1405: @c 
 1406: @file{configure.ac}ファイルに@samp{#}で始まるコメントを含めることも可能
 1407: です.例えば,以下のような行を@file{configure.ac}ファイルの最初に書くと
 1408: 役に立つでしょう.
 1409: 
 1410: @example
 1411: # Process this file with autoconf to produce a configure script.
 1412: @end example
 1413: 
 1414: 
 1415: @node configure.ac Layout,  , Autoconf Language, Writing configure.ac
 1416: @subsection 標準的な@file{configure.ac}のレイアウト
 1417: 
 1418: @c The order in which @file{configure.ac} calls the Autoconf macros is not
 1419: @c important, with a few exceptions.  Every @file{configure.ac} must
 1420: @c contain a call to @code{AC_INIT} before the checks, and a call to
 1421: @c @code{AC_OUTPUT} at the end (@pxref{Output}).  Additionally, some macros
 1422: @c rely on other macros having been called first, because they check
 1423: @c previously set values of some variables to decide what to do.  These
 1424: @c macros are noted in the individual descriptions (@pxref{Existing
 1425: @c Tests}), and they also warn you when @code{configure} is created if they
 1426: @c are called out of order.
 1427: @c 
 1428: @file{configure.ac}でAutoconfマクロを呼び出す順番は,いくつか例外があり
 1429: ますが重要ではありません.すべての@file{configure.ac}には,調査の前の 
 1430: @code{AC_INIT}の呼び出しと,最後の@code{AC_OUTPUT}の呼び出しを含める必要
 1431: があります(@pxref{Output}).さらに,行なうことを決定するために,いくつか
 1432: の変数については前もって設定されている値を調査するために,他のマクロが最
 1433: 初に呼ばれることに依存するマクロもあります.これらのマクロはそれぞれの説
 1434: 明で書かれ(@pxref{Existing Tests})ていて,@code{configure}が作成されてい
 1435: る時,間違った順番で呼び出されている場合は警告されます.
 1436: 
 1437: @c To encourage consistency, here is a suggested order for calling the
 1438: @c Autoconf macros.  Generally speaking, the things near the end of this
 1439: @c list are those that could depend on things earlier in it.  For example,
 1440: @c library functions could be affected by types and libraries.
 1441: @c 
 1442: 整合性を促進するため,Autoconfマクロを呼び出す順番をここで提案します.一
 1443: 般的に言って,このリストの終わり近くのものは,その前のものに依存します.
 1444: 例えば,ライブラリ関数は型とライブラリの影響があります.
 1445: 
 1446: @display
 1447: @group
 1448: Autoconf requirements
 1449: @code{AC_INIT(@var{package}, @var{version}, @var{bug-report-address})}
 1450: information on the package
 1451: checks for programs
 1452: checks for libraries
 1453: checks for header files
 1454: checks for types
 1455: checks for structures
 1456: checks for compiler characteristics
 1457: checks for library functions
 1458: checks for system services
 1459: @code{AC_CONFIG_FILES(@r{[}@var{file@dots{}}@r{]})}
 1460: @code{AC_OUTPUT}
 1461: @end group
 1462: @end display
 1463: 
 1464: 
 1465: @node autoscan Invocation, ifnames Invocation, Writing configure.ac, Making configure Scripts
 1466: @section @file{configure.ac}を作成するために@code{autoscan}を使用する
 1467: @cindex @code{autoscan}
 1468: 
 1469: @c The @code{autoscan} program can help you create and/or maintain a
 1470: @c @file{configure.ac} file for a software package.  @code{autoscan}
 1471: @c examines source files in the directory tree rooted at a directory given
 1472: @c as a command line argument, or the current directory if none is given.
 1473: @c It searches the source files for common portability problems and creates
 1474: @c a file @file{configure.scan} which is a preliminary @file{configure.ac}
 1475: @c for that package, and checks a possibly existing @file{configure.ac} for
 1476: @c completeness.
 1477: @c 
 1478: @code{autoscan}プログラムは,ソフトウェアパッケージに対する 
 1479: @file{configure.ac}ファイルの作成と/や管理に役に立ちます.
 1480: @code{autoscan}は,コマンドライン引数で与えられたディレクトリをルートと
 1481: するディレクトリツリー,または,与えられない場合はカレントディレクトリで
 1482: ソースファイルを調査します.それは,ソースファイルの一般的な移植性の問題
 1483: を検索して,パッケージのための@file{configure.ac}の準備となるファイル
 1484: @file{configure.scan}を作成し,おそらく存在している@file{configure.ac}の
 1485: 完全性を調査します.
 1486: 
 1487: @c When using @command{autoscan} to create a @file{configure.ac}, you
 1488: @c should manually examine @file{configure.scan} before renaming it to
 1489: @c @file{configure.ac}; it will probably need some adjustments.
 1490: @c Occasionally, @code{autoscan} outputs a macro in the wrong order
 1491: @c relative to another macro, so that @code{autoconf} produces a warning;
 1492: @c you need to move such macros manually.  Also, if you want the package to
 1493: @c use a configuration header file, you must add a call to
 1494: @c @code{AC_CONFIG_HEADERS} (@pxref{Configuration Headers}).  You might
 1495: @c also have to change or add some @code{#if} directives to your program in
 1496: @c order to make it work with Autoconf (@pxref{ifnames Invocation}, for
 1497: @c information about a program that can help with that job).
 1498: @c 
 1499: @file{configure.ac}を作成するために@command{autoscan}を使用する時,
 1500: @file{configure.scan}を@file{configure.ac}に改名する前に,手作業でそれを
 1501: 調査する必要があります.恐らくなんらかの調整が必要です.時折
 1502: @code{autoscan}は,@code{autoconf}が警告を出すような,関連するマクロに対
 1503: して間違った順序でマクロを出力する場合もあります.手作業でそのようなマク
 1504: ロを移動する必要があります.また,パッケージでコンフィギュレーションヘッ
 1505: ダーファイルを使用する場合も,@code{AC_CONFIG_HEADER}の呼び出しを加える
 1506: 必要があります(@pxref{Configuration Headers}).また,Autoconfで動作する
 1507: ように,プログラムの@code{#if}ディレクティブを変更したり加えたりする必要
 1508: があります(そのような仕事に役に立つプログラムの情報は,@pxref{ifnames
 1509: Invocation}).
 1510: 
 1511: @c When using @command{autoscan} to maintain a @file{configure.ac}, simply
 1512: @c consider adding its suggestions.  The file @file{autoscan.log} will
 1513: @c contain detailed information on why a macro is requested.
 1514: @c 
 1515: @file{configure.ac}を管理するために@command{autoscan}を使用している時,
 1516: 単純にそれが追加した提案を考えてください.ファイル@file{autoscan.log}に
 1517: は,マクロが要求される理由に関する詳細な情報が含まれています.
 1518: 
 1519: @c @code{autoscan} uses several data files (installed along with Autoconf)
 1520: @c to determine which macros to output when it finds particular symbols in
 1521: @c a package's source files.  These data files all have the same format:
 1522: @c each line consists of a symbol, whitespace, and the Autoconf macro to
 1523: @c output if that symbol is encountered.  Lines starting with @samp{#} are
 1524: @c comments.
 1525: @c 
 1526: @code{autoscan}は,パッケージのソースファイルで特定のシンボルを見つけた
 1527: とき,出力するマクロを決定するために,(Autoconfと一緒にインストールされ
 1528: ている)データファイルも使用します.これらのデータファイルはすべて同じ書
 1529: 式です.それぞれの行は,シンボル,空白スペース,そしてそのシンボルがある
 1530: 場合に出力するAutoconfマクロから成り立っています.@samp{#}で始まる行はコ
 1531: メントです.
 1532: 
 1533: @c @code{autoscan} is only installed if you already have Perl installed.
 1534: @c @code{autoscan} accepts the following options:
 1535: @c 
 1536: @code{autoscan}は,既にPerlがインストールされている場合のみインストール
 1537: されます.@code{autoscan}は以下のオプションを受け入れます.
 1538: 
 1539: @table @option
 1540: @item --help
 1541: @itemx -h
 1542: @c Print a summary of the command line options and exit.
 1543: @c 
 1544: コマンドラインオプションの概要を出力して終了します.
 1545: 
 1546: @item --version
 1547: @itemx -V
 1548: @c Print the version number of Autoconf and exit.
 1549: @c 
 1550: Autoconfのバージョンナンバーを出力して終了します.
 1551: 
 1552: @item --verbose
 1553: @itemx -v
 1554: @c Print the names of the files it examines and the potentially interesting
 1555: @c symbols it finds in them.  This output can be voluminous.
 1556: @c 
 1557: 調査しているファイルと,その中で見つかった可能性のある興味深いシンボル名
 1558: を出力します.この出力は大量になるはずです.
 1559: 
 1560: @item --autoconf-dir=@var{dir}
 1561: @itemx -A @var{dir}
 1562: @evindex AC_MACRODIR
 1563: @c Override the location where the installed Autoconf data files are looked
 1564: @c for.  You can also set the @code{AC_MACRODIR} environment variable to a
 1565: @c directory; this option overrides the environment variable.
 1566: @c 
 1567: デフォルトのインストールディレクトリの代わりに,ディレクトリ@var{dir}で
 1568: データファイルを探します.また,@code{AC_MACRODIR}環境変数でもディレクト
 1569: リを設定可能です.このオプションは環境変数に優先します.
 1570: 
 1571: @c This option is rarely needed and dangerous; it is only used when one
 1572: @c plays with different versions of Autoconf simultaneously.
 1573: @c 
 1574: このオプションが必要なことは滅多になく危険なものです.一人の人が,異なる
 1575: バージョンのAutoconfを同時に使用している時のみ使用されます.
 1576: @end table
 1577: 
 1578: @node ifnames Invocation, autoconf Invocation, autoscan Invocation, Making configure Scripts
 1579: @section 条件をリストアップするため@code{ifnames}を使用する
 1580: @cindex @code{ifnames}
 1581: 
 1582: @c @code{ifnames} can help you write @file{configure.ac} for a software
 1583: @c package.  It prints the identifiers that the package already uses in C
 1584: @c preprocessor conditionals.  If a package has already been set up to have
 1585: @c some portability, @code{ifnames} can thus help you figure out what its
 1586: @c @code{configure} needs to check for.  It may help fill in some gaps in a
 1587: @c @file{configure.ac} generated by @code{autoscan} (@pxref{autoscan
 1588: @c Invocation}).
 1589: @c 
 1590: @code{ifnames}は,ソフトウェアパッケージに対する@file{configure.ac}を書
 1591: くとき役に立つはずです.それは,Cプリプロセッサの条件式でパッケージが既
 1592: に使用している識別子を出力します.パッケージが既に移植性のためにセットアッ
 1593: プされている場合,@code{ifnames}は@code{configure}で調査することが必要な
 1594: ものを理解することに役く立つはずです.それは@code{autoscan}が生成した
 1595: @file{configure.ac}とのギャップを埋める役にも立つかもしれません
 1596: (@pxref{autoscan Invocation}).
 1597: 
 1598: @c @code{ifnames} scans all of the C source files named on the command line
 1599: @c (or the standard input, if none are given) and writes to the standard
 1600: @c output a sorted list of all the identifiers that appear in those files
 1601: @c in @code{#if}, @code{#elif}, @code{#ifdef}, or @code{#ifndef}
 1602: @c directives.  It prints each identifier on a line, followed by a
 1603: @c space-separated list of the files in which that identifier occurs.
 1604: @c 
 1605: @code{ifnames}は,コマンドラインで指名されたすべてのCソースファイルを(無
 1606: い場合は標準入力から)走査し,これらのファイルに現れる@code{#if}, 
 1607: @code{#elif},@code{#ifdef},または@code{#ifndef}ディレクティブの,すべ
 1608: ての識別子をソートしたリストを,標準出力に書き出します.それは識別子があ
 1609: るファイルの空白で分離されたリストに続いて,一行にぞれぞれの識別子を出力
 1610: します.
 1611: 
 1612: @noindent
 1613: @c @code{ifnames} accepts the following options:
 1614: @c 
 1615: @code{ifnames}は以下のオプションを受け入れます.
 1616: 
 1617: @table @option
 1618: @item --help
 1619: @itemx -h
 1620: @c Print a summary of the command line options and exit.
 1621: @c 
 1622: コマンドラインオプションの概要を出力して終了します.
 1623: 
 1624: @item --version
 1625: @itemx -V
 1626: @c Print the version number of Autoconf and exit.
 1627: @c 
 1628: Autoconfのバージョンナンバーを出力して終了します.
 1629: @end table
 1630: 
 1631: 
 1632: @node autoconf Invocation, autoreconf Invocation, ifnames Invocation, Making configure Scripts
 1633: @section @code{configure}を作成するため@code{autoconf}を使用する
 1634: @cindex @code{autoconf}
 1635: 
 1636: @c To create @code{configure} from @file{configure.ac}, run the
 1637: @c @code{autoconf} program with no arguments.  @code{autoconf} processes
 1638: @c @file{configure.ac} with the @code{m4} macro processor, using the
 1639: @c Autoconf macros.  If you give @code{autoconf} an argument, it reads that
 1640: @c file instead of @file{configure.ac} and writes the configuration script
 1641: @c to the standard output instead of to @code{configure}.  If you give
 1642: @c @code{autoconf} the argument @option{-}, it reads from the standard
 1643: @c input instead of @file{configure.ac} and writes the configuration script
 1644: @c to the standard output.
 1645: @c 
 1646: @file{configure.ac}から@code{configure}を作成するために,@code{autoconf} 
 1647: プログラムを引数なしで実行してください.@code{autoconf}は,Autoconfマク
 1648: ロを使用しながら,@code{m4}マクロプロセッサを用いて@file{configure.ac}を
 1649: 処理します.@code{autoconf}に引数を与える場合,@file{configure.ac}の代わ
 1650: りにそのファイルを読み,@code{configure}の代わりに,標準出力にコンフィグ
 1651: レーションスクリプトを書き出します.@code{autoconf}に引数@option{-}を与
 1652: えた場合,@file{configure.ac}の代わりに標準入力から読み込み,標準出力に
 1653: コンフィグレーションスクリプトを書き出します.
 1654: 
 1655: @c The Autoconf macros are defined in several files.  Some of the files are
 1656: @c distributed with Autoconf; @code{autoconf} reads them first.  Then it
 1657: @c looks for the optional file @file{acsite.m4} in the directory that
 1658: @c contains the distributed Autoconf macro files, and for the optional file
 1659: @c @file{aclocal.m4} in the current directory.  Those files can contain
 1660: @c your site's or the package's own Autoconf macro definitions
 1661: @c (@pxref{Writing Autoconf Macros}, for more information).  If a macro is defined
 1662: @c in more than one of the files that @code{autoconf} reads, the last
 1663: @c definition it reads overrides the earlier ones.
 1664: @c 
 1665: Autoconfマクロは,複数のファイルで定義されています.ファイルは,Autoconf 
 1666: と一緒に配布される物もあります.@code{autoconf}は最初にそれを読み込みま
 1667: す.オプションのファイル@file{acsite.m4}を,配布されたAutoconfマクロファ
 1668: イルを含むディレクトリで探し,オプションのファイル@file{aclocal.m4}はカ
 1669: レントディレクトリで探します.これらのファイルは,サイトやパッケージの
 1670: Autoconfマクロ定義を含めることが可能です(詳細は,@pxref{Writing Autoconf
 1671: Macros}).一つ以上のファイルで定義されているマクロを@code{autoconf}が読
 1672: み込む場合,最後の定義がそれ以前の定義に優先します.
 1673: 
 1674: @c @code{autoconf} accepts the following options:
 1675: @c 
 1676: @code{autoconf}は以下のオプションを受け入れます.
 1677: 
 1678: @table @option
 1679: @item --help
 1680: @itemx -h
 1681: @c Print a summary of the command line options and exit.
 1682: @c 
 1683: コマンドラインオプションの概要を出力して終了します.
 1684: 
 1685: @item --version
 1686: @itemx -V
 1687: @c Print the version number of Autoconf and exit.
 1688: @c 
 1689: Autoconfのバージョンナンバーを出力して終了します.
 1690: 
 1691: @item --verbose
 1692: @itemx -v
 1693: @c Report processing steps.
 1694: @c 
 1695: 処理しているステップを報告します.
 1696: 
 1697: @item --debug
 1698: @itemx -d
 1699: @c Don't remove the temporary files.
 1700: @c 
 1701: 一時的なファイルを削除しません.
 1702: 
 1703: @item --autoconf-dir=@var{dir}
 1704: @itemx -A @var{dir}
 1705: @evindex AC_MACRODIR
 1706: @c Override the location where the installed Autoconf data files are looked
 1707: @c for.  You can also set the @code{AC_MACRODIR} environment variable to a
 1708: @c directory; this option overrides the environment variable.
 1709: @c 
 1710: インストールされているAutoconfのデータファイルを探す場所に優先させます.
 1711: また,@code{AC_MACRODIR}環境変数でディレクトリを設定することも可能です.
 1712: このオプションは,環境変数に優先します.
 1713: 
 1714: @c This option is rarely needed and dangerous; it is only used when one
 1715: @c plays with different versions of Autoconf simultaneously.
 1716: @c 
 1717: このオプションが必要なことは滅多になく危険なものです.一人の人が,異なる
 1718: バージョンのAutoconfを同時に使用している時のみ使用されます.
 1719: 
 1720: @item --localdir=@var{dir}
 1721: @itemx -l @var{dir}
 1722: @c Look for the package file @file{aclocal.m4} in directory @var{dir}
 1723: @c instead of in the current directory.
 1724: @c 
 1725: パッケージファイル@file{aclocal.m4}をカレントディレクトリの代わりにディ
 1726: レクトリ@var{dir}で探します.
 1727: 
 1728: @item --output=@var{file}
 1729: @itemx -o @var{file}
 1730: @c Save output (script or trace) to @var{file}.  The file @option{-} stands
 1731: @c for the standard output.
 1732: @c 
 1733: (出力や追跡の)出力を@var{file}に保存します.ファイル@option{-}は標準出力
 1734: に対するものです.
 1735: 
 1736: @item --warnings=@var{category}
 1737: @itemx -W @var{category}
 1738: @evindex WARNINGS
 1739: @c Report the warnings related to @var{category} (which can actually be a
 1740: @c comma separated list).  @xref{Reporting Messages}, macro
 1741: @c @code{AC_DIAGNOSE}, for a comprehensive list of categories.  Special
 1742: @c values include:
 1743: @c 
 1744: (実際にはカンマで分けたリストが可能な) @var{category}に関連する警告を報
 1745: 告します.カテゴリの総合リストは,マクロ@code{AC_DIAGNOSE}と
 1746: @xref{Reporting Messages}. 特別な値には,以下のものが含まれています.
 1747: 
 1748: @table @samp
 1749: @item all
 1750: @c report all the warnings
 1751: @c 
 1752: 全ての警告を報告します.
 1753: 
 1754: @item none
 1755: @c report none
 1756: @c 
 1757: 何も報告しません.
 1758: 
 1759: @item error
 1760: @c treats warnings as errors
 1761: @c 
 1762: 警告をエラーとして扱います.
 1763: 
 1764: @item no-@var{category}
 1765: @c disable warnings falling into @var{category}
 1766: @c 
 1767: 警告を@var{category}に分類不可能にします.
 1768: @end table
 1769: 
 1770: @c Warnings about @samp{syntax} are enabled by default, and the environment
 1771: @c variable @code{WARNINGS}, a comma separated list of categories, is
 1772: @c honored. @command{autoconf -W @var{category}} will actually
 1773: @c behave as if you had run:
 1774: @c 
 1775: @samp{syntax}に関する警告は,デフォルトで利用可能で,カンマで分けられた
 1776: カテゴリリストの環境変数@code{WARNINGS}は尊重されます.@command{autoconf
 1777: -W @var{category}}は,実際には以下のように実行した場合のように動作します.
 1778: 
 1779: @example
 1780: autoconf --warnings=syntax,$WARNINGS,@var{category}
 1781: @end example
 1782: 
 1783: @noindent
 1784: @c If you want to disable @command{autoconf}'s defaults and @code{WARNINGS},
 1785: @c but (for example) enable the warnings about obsolete constructs, you
 1786: @c would use @option{-W none,obsolete}.
 1787: @c 
 1788: @command{autoconf}のデフォルトと@code{WARNINGS}を利用不可能にしたいが,
 1789: (例えば)時代遅れの構成物についての警告は利用可能にしたい場合,@option{-W
 1790: none,obsolete}を使用すべきです.
 1791: 
 1792: @cindex Back trace
 1793: @cindex Macro invocation stack
 1794: @c @command{autoconf} displays a back trace for errors, but not for
 1795: @c warnings; if you want them, just pass @option{-W error}.  For instance,
 1796: @c on this @file{configure.ac}:
 1797: @c 
 1798: @command{autoconf}はエラーのバックトレースを表示しますが,警告については
 1799: 行ないません.そうしたい場合,@option{-W error}のみを渡してください.例
 1800: えば,以下のような@file{configure.ac}を考えます.
 1801: 
 1802: @example
 1803: AC_DEFUN([INNER],
 1804: [AC_TRY_RUN([true])])
 1805: 
 1806: AC_DEFUN([OUTER],
 1807: [INNER])
 1808: 
 1809: AC_INIT
 1810: OUTER
 1811: @end example
 1812: 
 1813: @noindent
 1814: @c you get:
 1815: @c 
 1816: 以下を得ます.
 1817: 
 1818: @example
 1819: $ autoconf -Wcross
 1820: configure.ac:8: warning: AC_TRY_RUN called without default \
 1821: to allow cross compiling
 1822: $ autoconf -Wcross,error
 1823: configure.ac:8: error: AC_TRY_RUN called without default \
 1824: to allow cross compiling
 1825: acgeneral.m4:3044: AC_TRY_RUN is expanded from...
 1826: configure.ac:2: INNER is expanded from...
 1827: configure.ac:5: OUTER is expanded from...
 1828: configure.ac:8: the top level
 1829: @end example
 1830: 
 1831: @item --trace=@var{macro}[:@var{format}]
 1832: @itemx -t @var{macro}[:@var{format}]
 1833: @c Do not create the @code{configure} script, but list the calls to
 1834: @c @var{macro} according to the @var{format}.  Multiple @option{--trace}
 1835: @c arguments can be used to list several macros.  Multiple @option{--trace}
 1836: @c arguments for a single macro are not cumulative; instead, you should
 1837: @c just make @var{format} as long as needed.
 1838: @c 
 1839: @code{configure}スクリプトを作成しませんが,@var{format}でマクロの呼び出
 1840: しをリストアップします.複数の@option{--trace}の引数は,複数のマクロをリ
 1841: ストアップ煤ために使用可能です.単一のマクロに対する複数の
 1842: @option{--trace}の引数は,累積的ではありません.代わりに,@var{format}を
 1843: 必要なものにすべきです.
 1844: 
 1845: @c The @var{format} is a regular string, with newlines if desired, and
 1846: @c several special escape codes.  It defaults to @samp{$f:$l:$n:$%}; see
 1847: @c below for details on the @var{format}.
 1848: @c 
 1849: @var{format}は,必要な場合は改行をともなう通常の文字列と,いくつかの特殊
 1850: なエスケープコードです.デフォルトは@samp{$f:$l:$n:$%}です.@var{format}
 1851: の詳細は,以下を参照してください.
 1852: 
 1853: @item --initialization
 1854: @itemx -i
 1855: @c By default, @option{--trace} does not trace the initialization of the
 1856: @c Autoconf macros (typically the @code{AC_DEFUN} definitions).  This
 1857: @c results in a noticeable speedup, but can be disabled by this option.
 1858: @c 
 1859: デフォルトで,@option{--trace}はAutoconfマクロ(特に@code{AC_DEFUN}の定義) 
 1860: の初期化を追跡しません.これで顕著に高速化されますが,このオプションで利
 1861: 用不可能にすることができます.
 1862: @end table
 1863: 
 1864: @c It is often necessary to check the content of a @file{configure.ac}
 1865: @c file, but parsing it yourself is extremely fragile and error-prone.  It
 1866: @c is suggested that you rely upon @option{--trace} to scan
 1867: @c @file{configure.ac}.
 1868: @c 
 1869: @file{configure.ac}ファイルの内容をチェックする必要があることもよくあり
 1870: ますが,自分で解析することは,非常に脆くエラーを起こしやすいものです.
 1871: @file{configure.ac}をスキャンするために,@option{--trace}を信頼してみて
 1872: ください.
 1873: 
 1874: @c The @var{format} of @option{--trace} can use the following special
 1875: @c escapes:
 1876: @c 
 1877: @option{--trace}の@var{format}は,以下の特別なエスケープが使用可能です.
 1878: 
 1879: @table @samp
 1880: @item $$
 1881: @c The character @samp{$}.
 1882: @c 
 1883: 文字@samp{$}です.
 1884: 
 1885: @item $f
 1886: @c The filename from which @var{macro} is called.
 1887: @c 
 1888: @var{macro}が呼び出されるファイル名です.
 1889: 
 1890: @item $l
 1891: @c The line number from which @var{macro} is called.
 1892: @c 
 1893: @var{macro}が呼び出される行番号です.
 1894: 
 1895: @item $d
 1896: @c The depth of the @var{macro} call.  This is an M4 technical detail that
 1897: @c you probably don't want to know about.
 1898: @c 
 1899: @var{macro}呼び出しの深さです.これは,おそらく知らなくてもよい,M4テク
 1900: ニックの詳細です.
 1901: 
 1902: @item $n
 1903: @c The name of the @var{macro}.
 1904: @c 
 1905: @var{macro}名です.
 1906: 
 1907: @item $@var{num}
 1908: @c The @var{num}th argument of the call to @var{macro}.
 1909: @c 
 1910: 呼び出された@var{macro}の@var{num}番目の引数です.
 1911: 
 1912: @item $@@
 1913: @itemx $@var{sep}@@
 1914: @itemx $@{@var{separator}@}@@
 1915: @c All the arguments passed to @var{macro}, separated by the character
 1916: @c @var{sep} or the string @var{separator} (@samp{,} by default).  Each
 1917: @c argument is quoted, i.e. enclosed in a pair of square brackets.
 1918: @c 
 1919: 文字@var{sep}または文字列@var{separator}(デフォルトは@samp{,})で分けられ
 1920: た,@var{macro}に渡される全ての引数です.それぞれの引数は引用符で囲まれ
 1921: ていて,すなわち角カッコで囲まれることになります.
 1922: 
 1923: @item $*
 1924: @itemx $@var{sep}*
 1925: @itemx $@{@var{separator}@}*
 1926: @c As above, but the arguments are not quoted.
 1927: @c 
 1928: 上と同じですが,引用符で囲まれていません.
 1929: 
 1930: @item $%
 1931: @itemx $@var{sep}%
 1932: @itemx $@{@var{separator}@}%
 1933: @c As above, but the arguments are not quoted, all new line characters in
 1934: @c the arguments are smashed, and the default separator is @samp{:}.
 1935: @c 
 1936: 上と同じですが,引数を引用符で囲まず,引数の改行文字は取り除かれ,デフォ
 1937: ルトの分離文字は@samp{:}になっています.
 1938: 
 1939: @c The escape @samp{$%} produces single-line trace outputs (unless you put
 1940: @c newlines in the @samp{separator}), while @samp{$@@} and @samp{$*} do
 1941: @c not.
 1942: @c 
 1943: エスケープの@samp{$%}は,(@samp{separator}を改行にしない限り)単一行に追
 1944: 跡出力を生成しますが,@samp{$@@}と@samp{$*}はそうではありません.
 1945: @end table
 1946: 
 1947: @c For instance, to find the list of variables that are substituted, use:
 1948: @c 
 1949: 例えば,置換される変数のリストを探すために,以下のようにしてください.
 1950: 
 1951: @example
 1952: @group
 1953: $ autoconf -t AC_SUBST
 1954: configure.ac:2:AC_SUBST:ECHO_C
 1955: configure.ac:2:AC_SUBST:ECHO_N
 1956: configure.ac:2:AC_SUBST:ECHO_T
 1957: @i{More traces deleted}
 1958: @end group
 1959: @end example
 1960: 
 1961: @noindent
 1962: @c The example below highlights the difference between @samp{$@@},
 1963: @c @samp{$*}, and @strong{$%}.
 1964: @c 
 1965: 以下の例では,@samp{$@@},@samp{$*}と@strong{$%}の違いを強調しています.
 1966: 
 1967: @example
 1968: @group
 1969: $ cat configure.ac
 1970: AC_DEFINE(This, is, [an
 1971: [example]])
 1972: $ autoconf -t 'AC_DEFINE:@@: $@@
 1973: *: $*
 1974: $: $%'
 1975: @@: [This],[is],[an
 1976: [example]]
 1977: *: This,is,an
 1978: [example]
 1979: $: This:is:an [example]
 1980: @end group
 1981: @end example
 1982: 
 1983: @noindent
 1984: @c The @var{format} gives you a lot of freedom:
 1985: @c 
 1986: @var{format}は,柔軟にできます.
 1987: 
 1988: @example
 1989: @group
 1990: $ autoconf -t 'AC_SUBST:$$ac_subst@{"$1"@} = "$f:$l";'
 1991: $ac_subst@{"ECHO_C"@} = "configure.ac:2";
 1992: $ac_subst@{"ECHO_N"@} = "configure.ac:2";
 1993: $ac_subst@{"ECHO_T"@} = "configure.ac:2";
 1994: @i{More traces deleted}
 1995: @end group
 1996: @end example
 1997: 
 1998: @noindent
 1999: @c A long @var{separator} can be used to improve the readability of complex
 2000: @c structures, and to ease its parsing (for instance when no single
 2001: @c character is suitable as a separator)):
 2002: @c 
 2003: 長い@var{separator}は,複雑な構想の可読性を改善したり,解析を簡単にする
 2004: ために使用可能です(例えば,分離文字に適した単一文字が無いときです).
 2005: 
 2006: @example
 2007: @group
 2008: $ autoconf -t 'AM_MISSING_PROG:$@{|:::::|@}*'
 2009: ACLOCAL|:::::|aclocal|:::::|$missing_dir
 2010: AUTOCONF|:::::|autoconf|:::::|$missing_dir
 2011: AUTOMAKE|:::::|automake|:::::|$missing_dir
 2012: @i{More traces deleted}
 2013: @end group
 2014: @end example
 2015: 
 2016: 
 2017: @node autoreconf Invocation,  , autoconf Invocation, Making configure Scripts
 2018: @section @code{configure}スクリプトを更新するため@code{autoreconf}を使用する
 2019: @cindex @code{autoreconf}
 2020: 
 2021: @c If you have a lot of Autoconf-generated @code{configure} scripts, the
 2022: @c @code{autoreconf} program can save you some work.  It runs
 2023: @c @code{autoconf} (and @code{autoheader}, where appropriate) repeatedly to
 2024: @c remake the Autoconf @code{configure} scripts and configuration header
 2025: @c templates in the directory tree rooted at the current directory.  By
 2026: @c default, it only remakes those files that are older than their
 2027: @c @file{configure.ac} or (if present) @file{aclocal.m4}.  Since
 2028: @c @code{autoheader} does not change the timestamp of its output file if
 2029: @c the file wouldn't be changing, this is not necessarily the minimum
 2030: @c amount of work.  If you install a new version of Autoconf, you can make
 2031: @c @code{autoreconf} remake @emph{all} of the files by giving it the
 2032: @c @option{--force} option.
 2033: @c 
 2034: Autoconfが生成した@code{configure}スクリプトがたくさんある場合, 
 2035: @code{autoreconf}プログラムは仕事の手助けとなるはずです.それは,
 2036: Autoconfの@code{configure}スクリプトとコンフィグレーションヘッダテンプレー
 2037: トを再生成するため, @code{autoconf}(と適切なところでは
 2038: @code{autoheader}) を,ディレクトリツリーのカレントディレクトリのルート
 2039: で実行します.デフォルトで,@file{configure.ac}や(存在する場合)
 2040: @file{aclocal.m4}の古い物だけを更新します.変更されない出力ファイルは
 2041: @code{autoheader}でタイムスタンプが変更されないので,わずかに不必要な仕
 2042: 事が減ります.新しいバージョンのAutoconfをインストールした場合,
 2043: @option{--force}オプションを与えることで,@code{autoreconf}で@emph{すべ
 2044: て}のファイルを再生成することが可能です.
 2045: 
 2046: @c If you give @code{autoreconf} the @option{--autoconf-dir=@var{dir}} or
 2047: @c @option{--localdir=@var{dir}} options, it passes them down to
 2048: @c @code{autoconf} and @code{autoheader} (with relative paths adjusted
 2049: @c properly).
 2050: @c 
 2051: @code{autoreconf}に@option{--autoconf-dir=@var{dir}}や
 2052: @option{--localdir=@var{dir}}オプションを@code{autoconf}と 
 2053: @code{autoheader}に(正確に調整された相対的なパスと共に)そのまま渡されま
 2054: す.
 2055: 
 2056: @c @code{autoreconf} does not support having, in the same directory tree,
 2057: @c both directories that are parts of a larger package (sharing
 2058: @c @file{aclocal.m4} and @file{acconfig.h}) and directories that are
 2059: @c independent packages (each with their own @file{aclocal.m4} and
 2060: @c @file{acconfig.h}).  It assumes that they are all part of the same
 2061: @c package if you use @option{--localdir}, or that each directory is a
 2062: @c separate package if you don't use it.  This restriction may be removed
 2063: @c in the future.
 2064: @c 
 2065: @code{autoreconf}は,同じディレクトリツリーに,(@file{aclocal.m4}と
 2066: @file{acconfig.h}を共有している)より大きなパッケージの一部となっているディ
 2067: レクトリと,(独自の@file{aclocal.m4}と@file{acconfig.h}をそれぞれ持って
 2068: いる)他に依存しないパッケージのディレクトリの,両方ともサポートしていま
 2069: せん.@option{--localdir}を使用する場合は,それらすべてが同じパッケージ
 2070: の一部であり,使用しない場合は,それぞれのディレクトリが別のパッケージだ
 2071: と想定します.この制限は将来取り除かれるでしょう.
 2072: 
 2073: @c @xref{Automatic Remaking}, for @file{Makefile} rules to automatically
 2074: @c remake @code{configure} scripts when their source files change.  That
 2075: @c method handles the timestamps of configuration header templates
 2076: @c properly, but does not pass @option{--autoconf-dir=@var{dir}} or
 2077: @c @option{--localdir=@var{dir}}.
 2078: @c 
 2079: ソースファイルが変更したとき,@code{configure}スクリプトを自動的に再生成
 2080: する@file{Makefile}規則については,@xref{Automatic Remaking}. その方法は,
 2081: コンフィギュレーションヘッダテンプレートのタイムスタンプを正確に処理しま
 2082: すが,@option{--autoconf-dir=@var{dir}}や@option{--localdir=@var{dir}}を
 2083: 渡しません.
 2084: 
 2085: @noindent
 2086: @c @code{autoreconf} accepts the following options:
 2087: @c 
 2088: @code{autoreconf}は以下のオプションを受け入れます.
 2089: 
 2090: @table @option
 2091: @item --help
 2092: @itemx -h
 2093: @c Print a summary of the command line options and exit.
 2094: @c 
 2095: コマンドラインオプションの概要を出力して終了します.
 2096: 
 2097: @item --version
 2098: @itemx -V
 2099: @c Print the version number of Autoconf and exit.
 2100: @c 
 2101: Autoconfのバージョンナンバーを出力して終了します.
 2102: 
 2103: @item --verbose
 2104: @c Print the name of each directory where @code{autoreconf} runs
 2105: @c @code{autoconf} (and @code{autoheader}, if appropriate).
 2106: @c 
 2107: @code{autoreconf}が@code{autoconf}(と適切な場合@code{autoheader})を実行
 2108: している,それぞれのディレクトリ名を出力します.
 2109: 
 2110: @item --debug
 2111: @itemx -d
 2112: @c Don't remove the temporary files.
 2113: @c 
 2114: 一時ファイルを削除しません.
 2115: 
 2116: @item --force
 2117: @itemx -f
 2118: @c Remake even @file{configure} scripts and configuration headers that are
 2119: @c newer than their input files (@file{configure.ac} and, if present,
 2120: @c @file{aclocal.m4}).
 2121: @c 
 2122: @file{configure}スクリプトとコンフィグレーションヘッダが入力ファイル
 2123: (@file{configure.ac}と,存在する場合は@file{aclocal.m4})より新しくても更
 2124: 新します.
 2125: 
 2126: @item --install
 2127: @itemx -i
 2128: @c Copy missing auxiliary files.  This option is similar to the option
 2129: @c @code{--add-missing} in @code{automake}.
 2130: @c 
 2131: 足りない補助ファイルをコピーします.このオプションは,@code{automake}の
 2132: オプション@code{--add-missing}に似ています.
 2133: 
 2134: @item --symlink
 2135: @itemx -s
 2136: @c Instead of copying missing auxiliary files, install symbolic links.
 2137: @c 
 2138: 足りない補助ファイルをコピーする代わりに,シンボリックリンクを導入します.
 2139: 
 2140: @item --localdir=@var{dir}
 2141: @itemx -l @var{dir}
 2142: @c Have @code{autoconf} and @code{autoheader} look for the package files
 2143: @c @file{aclocal.m4} and (@code{autoheader} only) @file{acconfig.h} (but
 2144: @c not @file{@var{file}.top} and @file{@var{file}.bot}) in directory
 2145: @c @var{dir} instead of in the directory containing each @file{configure.ac}.
 2146: @c 
 2147: @code{autoconf}と@code{autoheader}は,パッケージファイル
 2148: @file{aclocal.m4}と(@code{autoheader}のみ)
 2149: @file{acconfig.h}(@file{@var{file}.top}と @file{@var{file}.bot}以外)を,
 2150: それぞれの@file{configure.ac}が含まれるディレクトリの代わりに,ディレク
 2151: トリ@var{dir}で探します.
 2152: 
 2153: @item --autoconf-dir=@var{dir}
 2154: @itemx -A @var{dir}
 2155: @evindex AC_MACRODIR
 2156: @c Override the location where the installed Autoconf data files are looked
 2157: @c for.  You can also set the @code{AC_MACRODIR} environment variable to a
 2158: @c directory; this option overrides the environment variable.
 2159: @c 
 2160: Autoconfデータファイルがインストールディレクトリの場所に優先させます.ま
 2161: た,@code{AC_MACRODIR}環境変数でディレクトリを設定することも可能です.こ
 2162: のオプションは環境変数に優先します.
 2163: 
 2164: @c This option is rarely needed and dangerous; it is only used when one
 2165: @c plays with different versions of Autoconf simultaneously.
 2166: @c 
 2167: このオプションが必要なことは滅多になく危険なものです.一人の人が,異なる
 2168: バージョンのAutoconfを同時に使用している時のみ使用されます.
 2169: 
 2170: @item --m4dir=@var{dir}
 2171: @itemx -M @var{dir}
 2172: @c Specify location of additional macro files (@file{m4} by default).
 2173: @c 
 2174: 追加のマクロファイルの一を指定します(デフォルトは@file{m4}です).
 2175: @end table
 2176: 
 2177: @c Additionally, the following options are recognized and passed to
 2178: @c @code{automake}:
 2179: @c 
 2180: さらに,以下のオプションが認識され,@code{automake}に渡されます.
 2181: 
 2182: @table @option
 2183: @item --cygnus
 2184: @c Assume program is part of Cygnus-style tree.
 2185: @c 
 2186: プログラムがCygnusスタイルのツリーの一部だと仮定します.
 2187: 
 2188: @item --foreign
 2189: @c Set strictness to foreign.
 2190: @c 
 2191: 厳密さをforeignに設定します.
 2192: 
 2193: @item --gnits
 2194: @c Set strictness to gnits.
 2195: @c 
 2196: 厳密さをgnitsに設定します.
 2197: 
 2198: @item --gnu
 2199: @c Set strictness to gnu.
 2200: @c 
 2201: 厳密さをgnuに設定します
 2202: 
 2203: @item --include-deps
 2204: @c Include generated dependencies in @file{Makefile.in}.
 2205: @c 
 2206: 生成される依存性を@file{Makefile.in}に含めます.
 2207: @end table
 2208: 
 2209: 
 2210: @c ========================================= Initialization and Output Files.
 2211: 
 2212: @node Setup, Existing Tests, Making configure Scripts, Top
 2213: @chapter 出力ファイルの初期化
 2214: 
 2215: @c Autoconf-generated @code{configure} scripts need some information about
 2216: @c how to initialize, such as how to find the package's source files; and
 2217: @c about the output files to produce.  The following sections describe
 2218: @c initialization and the creation of output files.
 2219: @c 
 2220: Autoconfが生成した@code{configure}スクリプトは,パッケージのソースファイ
 2221: ルの見つけ方のような,初期化の方法の情報を必要とします.そして,生成する
 2222: 出力ファイルの情報も必要です.次のセクションで,初期化と出力ファイルの作
 2223: 成について述べます.
 2224: 
 2225: @menu
 2226: * Notices::                     Copyright, version numbers in @code{configure}
 2227: * Input::                       Where Autoconf should find files
 2228: * Output::                      Outputting results from the configuration
 2229: * Configuration Actions::       Preparing the output based on results
 2230: * Configuration Files::         Creating output files
 2231: * Makefile Substitutions::      Using output variables in @file{Makefile}s
 2232: * Configuration Headers::       Creating a configuration header file
 2233: * Configuration Commands::      Running arbitrary instantiation commands
 2234: * Configuration Links::         Links depending from the configuration
 2235: * Subdirectories::              Configuring independent packages together
 2236: * Default Prefix::              Changing the default installation prefix
 2237: @end menu
 2238: 
 2239: @node Notices, Input, Setup, Setup
 2240: @section @code{configure}の注意事項
 2241: 
 2242: @c The following macros manage version numbers for @code{configure}
 2243: @c scripts.  Using them is optional.
 2244: @c 
 2245: 以下のマクロは,@code{configure}スクリプトのバージョンナンバーを管理しま
 2246: す.それはオプションです.
 2247: 
 2248: @c FIXME: AC_PREREQ should not be here, but where should it go?
 2249: @defmac AC_PREREQ (@var{version})
 2250: @maindex PREREQ
 2251: @cindex Version
 2252: @c Ensure that a recent enough version of Autoconf is being used.  If the
 2253: @c version of Autoconf being used to create @code{configure} is earlier
 2254: @c than @var{version}, print an error message to the standard error output
 2255: @c and do not create @code{configure}.  For example:
 2256: @c 
 2257: 使用しているAutoconfのバージョンが十分新しいことを保証します. 
 2258: @code{configure}の作成に使用されるAutoconfのバージョンが,@var{version} 
 2259: 以前の場合,標準エラー出力にエラーメッセージを出力し,@code{configure} 
 2260: を作成しません.例えば以下のようにします.
 2261: 
 2262: @example
 2263: AC_PREREQ(@value{VERSION})
 2264: @end example
 2265: 
 2266: @c This macro is the only macro that may be used before @code{AC_INIT}, but
 2267: @c for consistency, you are invited not to do so.
 2268: @c 
 2269: このマクロは,@code{AC_INIT}以前に使用可能な唯一のマクロですが,整合性の
 2270: ためにはそうすべきではありません.
 2271: @end defmac
 2272: 
 2273: @defmac AC_COPYRIGHT (@var{copyright-notice})
 2274: @maindex COPYRIGHT
 2275: @cindex Copyright Notice
 2276: @c State that, in addition to the Free Software Foundation's copyright on
 2277: @c the Autoconf macros, parts of your @code{configure} are covered by the
 2278: @c @var{copyright-notice}.
 2279: @c 
 2280: AutoconfマクロへのFree Software Foundationの著作権に加えて,
 2281: @code{configure}について@var{copyright-notice}でカバーしたい部分を宣言し
 2282: てください.
 2283: 
 2284: @c The @var{copyright-notice} will show up in both the head of
 2285: @c @code{configure} and in @samp{configure --version}.
 2286: @c 
 2287: @var{copyright-notice}は,@code{configure}の先頭と,@samp{configure
 2288: --version}の両方で表示されます.
 2289: @end defmac
 2290: 
 2291: 
 2292: @defmac AC_REVISION (@var{revision-info})
 2293: @maindex REVISION
 2294: @cindex Revision
 2295: @c Copy revision stamp @var{revision-info} into the @code{configure}
 2296: @c script, with any dollar signs or double-quotes removed.  This macro lets
 2297: @c you put a revision stamp from @file{configure.ac} into @code{configure}
 2298: @c without @sc{rcs} or @code{cvs} changing it when you check in
 2299: @c @code{configure}.  That way, you can determine easily which revision of
 2300: @c @file{configure.ac} a particular @code{configure} corresponds to.
 2301: @c 
 2302: リビジョンスタンプ@var{revision-info}を@code{configure}スクリプトに,ド
 2303: ル記号やダブルクォートを削除してコピーします.このマクロは,
 2304: @code{configure}をチェックインしたときに@sc{rcs}や@code{cvs}がリビジョン
 2305: スタンプを変えなくても,@file{configure.ac}から@code{configure}にそれを
 2306: 書き込みます.そうすることで,特定の @code{configure}に対応する
 2307: @file{configure.ac}のリビジョンが簡単に決定可能になります.
 2308: 
 2309: @c For example, this line in @file{configure.ac}:
 2310: @c 
 2311: 例えば,以下の行を@file{configure.ac}に書いたとします.
 2312: 
 2313: @c The asis prevents RCS from changing the example in the manual.
 2314: @example
 2315: AC_REVISION($@asis{Revision: 1.30 }$)
 2316: @end example
 2317: 
 2318: @noindent
 2319: @c produces this in @code{configure}:
 2320: @c 
 2321: これで,@code{configure}を以下のようになります.
 2322: 
 2323: @example
 2324: #! /bin/sh
 2325: # From configure.ac Revision: 1.30
 2326: @end example
 2327: @end defmac
 2328: 
 2329: 
 2330: @node Input, Output, Notices, Setup
 2331: @section @code{configure}の入力を見つける
 2332: 
 2333: @c Every @code{configure} script must call @code{AC_INIT} before doing
 2334: @c anything else.  The only other required macro is @code{AC_OUTPUT}
 2335: @c (@pxref{Output}).
 2336: @c 
 2337: すべての@code{configure}スクリプトファイルは,他の何よりも前に,
 2338: @code{AC_INIT}を呼び出す必要があります.そのほかに必要なマクロは 
 2339: @code{AC_OUTPUT}だけです(@pxref{Output}).
 2340: 
 2341: @defmac AC_INIT (@var{package}, @var{version}, @r{[}@var{bug-report-address}@r{]})
 2342: @maindex INIT
 2343: @c Process any command-line arguments and perform various initializations
 2344: @c and verifications.  Set the name of the @var{package} and its
 2345: @c @var{version}.  The optional argument @var{bug-report-address} should be
 2346: @c the email to which users should send bug reports.
 2347: @c 
 2348: あらゆるコマンドライン引数を処理し,様々な初期化と照合を実行します.
 2349: @var{package}の名前とその@var{version}を設定します.オプションの引数
 2350: @var{bug-report-address}は ,ユーザがバグレポートを送る電子メールアドレ
 2351: スにすべきです.
 2352: @end defmac
 2353: 
 2354: @defmac AC_CONFIG_SRCDIR (@var{unique-file-in-source-dir})
 2355: @maindex CONFIG_SRCDIR
 2356: @c @var{unique-file-in-source-dir} is some file that is in the package's
 2357: @c source directory; @code{configure} checks for this file's existence to
 2358: @c make sure that the directory that it is told contains the source code in
 2359: @c fact does.  Occasionally people accidentally specify the wrong directory
 2360: @c with @option{--srcdir}; this is a safety check.  @xref{configure
 2361: @c Invocation}, for more information.
 2362: @c 
 2363: @var{unique-file-in-source-dir}は,パッケージのソースディレクトリにある
 2364: ファイルです.@code{configure}は,伝えられたディレクトリに実際にソースコー
 2365: ドが含まれていることを確認するために,このファイルの存在を調査します.
 2366: @option{--srcdir}で間違ったディレクトリを指定してしまう人もいます.これ
 2367: は安全性の調査です.詳細は,@xref{configure Invocation}.
 2368: @end defmac
 2369: 
 2370: 
 2371: @c FIXME: Remove definitively once --install explained.
 2372: @c
 2373: @c Small packages may store all their macros in @code{aclocal.m4}.  As the
 2374: @c set of macros grows, or for maintenance reasons, a maintainer may prefer
 2375: @c to split the macros in several files.  In this case, Autoconf must be
 2376: @c told which files to load, and in which order.
 2377: @c
 2378: @c @defmac AC_INCLUDE (@var{file}@dots{})
 2379: @c @maindex INCLUDE
 2380: @c @c FIXME: There is no longer shell globbing.
 2381: @c Read the macro definitions that appear in the listed files.  A list of
 2382: @c space-separated filenames or shell globbing patterns is expected.  The
 2383: @c files will be read in the order they're listed.
 2384: @c
 2385: @c Because the order of definition of macros is important (only the last
 2386: @c definition of a macro is used), beware that it is @code{AC_INIT} that
 2387: @c loads @file{acsite.m4} and @file{aclocal.m4}.  Note that
 2388: @c @code{AC_INCLUDE}ing a file before @code{AC_INIT} or within
 2389: @c @file{aclocal.m4} is different from doing so after @code{AC_INIT}: in
 2390: @c the latter case, non-macro lines from included files may end up in the
 2391: @c @file{configure} script, whereas in the former case, they'd be discarded
 2392: @c just like any text that appear before @code{AC_INIT}.
 2393: @c @end defmac
 2394: 
 2395: @c Packages that do manual configuration or use the @code{install} program
 2396: @c might need to tell @code{configure} where to find some other shell
 2397: @c scripts by calling @code{AC_CONFIG_AUX_DIR}, though the default places
 2398: @c it looks are correct for most cases.
 2399: @c 
 2400: 手動でのコンフィグレーションや,@code{install}プログラムを使用するパッケー
 2401: ジは,デフォルトの位置でほとんど正しいのですが,@code{AC_CONFIG_AUX_DIR} 
 2402: を呼び出して,他のシェルスクリプトを探す場所を@code{configure}に教える必
 2403: 要があるかもしれません.
 2404: 
 2405: @defmac AC_CONFIG_AUX_DIR (@var{dir})
 2406: @maindex CONFIG_AUX_DIR
 2407: @c Use the auxiliary build tools (e.g., @file{install-sh},
 2408: @c @file{config.sub}, @file{config.guess}, Cygnus @code{configure},
 2409: @c Automake and Libtool scripts etc.) that are in directory @var{dir}.
 2410: @c These are auxiliary files used in configuration.  @var{dir} can be
 2411: @c either absolute or relative to @file{@var{srcdir}}.  The default is
 2412: @c @file{@var{srcdir}} or @file{@var{srcdir}/..} or
 2413: @c @file{@var{srcdir}/../..}, whichever is the first that contains
 2414: @c @file{install-sh}.  The other files are not checked for, so that using
 2415: @c @code{AC_PROG_INSTALL} does not automatically require distributing the
 2416: @c other auxiliary files.  It checks for @file{install.sh} also, but that
 2417: @c name is obsolete because some @command{make} have a rule that creates
 2418: @c @file{install} from it if there is no @file{Makefile}.
 2419: @c 
 2420: ディレクトリ@var{dir}にある補助的なビルドツール(例えば,
 2421: @file{install-sh},@file{config.sub}, @file{config.guess},そしてCygnus
 2422: @code{configure}スクリプト)を使用します.@var{dir}は,絶対パスまたは
 2423: @file{@var{srcdir}}の相対パスが可能です.デフォルトは 
 2424: @file{@var{srcdir}}または@file{@var{srcdir}/..}または
 2425: @file{@var{srcdir}/../..}で,@file{install-sh}を含んでいる最初にところで
 2426: す.他のファイルは調査しないので,@code{AC_PROG_INSTALL}を使用することで,
 2427: 他の補助ファイルを配布する必要は自動的になくなります.また,それは 
 2428: @file{install.sh}も照査しますが,@code{make}プログラムには, 
 2429: @file{Makefile}が無い場合,それから@file{install}を作る規則を持っている
 2430: ものあるので,その名前は時代遅れです.
 2431: @end defmac
 2432: 
 2433: 
 2434: @node Output, Configuration Actions, Input, Setup
 2435: @section 出力ファイルを生成する
 2436: 
 2437: @c Every Autoconf-generated @code{configure} script must finish by calling
 2438: @c @code{AC_OUTPUT}.  It is the macro that generates @file{config.status},
 2439: @c which will create the @file{Makefile}s and any other files resulting
 2440: @c from configuration.  The only other required macro is @code{AC_INIT}
 2441: @c (@pxref{Input}).
 2442: @c 
 2443: Autoconfが生成したすべての@code{configure}スクリプトは,@code{AC_OUTPUT} 
 2444: の呼び出しで終える必要があります.それは,コンフィグレーションの結果生成
 2445: される@file{Makefile}とその他のファイルを生成する,@file{config.status}
 2446: を生成するマクロです.その他のもので,唯一必要なマクロは@code{AC_INIT}で
 2447: す(@pxref{Input}).
 2448: 
 2449: @defmac AC_OUTPUT
 2450: @maindex OUTPUT
 2451: @cindex Instantiation
 2452: @c Generate @file{config.status} and launch it.  Call this macro once, at
 2453: @c the end of @file{configure.ac}.
 2454: @c 
 2455: @file{config.status}を生成し,それを実行開始します.@file{configure.ac}
 2456: の最後にこのマクロを一度呼び出してください.
 2457: 
 2458: @c @file{config.status} will take all the configuration actions: all the
 2459: @c output files (see @ref{Configuration Files}, macro
 2460: @c @code{AC_CONFIG_FILES}), header files (see @ref{Configuration Headers},
 2461: @c macro @code{AC_CONFIG_HEADERS}), commands (see @ref{Configuration
 2462: @c Commands}, macro @code{AC_CONFIG_COMMANDS}), links (see
 2463: @c @ref{Configuration Links}, macro @code{AC_CONFIG_LINKS}), subdirectories
 2464: @c to configure (see @ref{Subdirectories}, macro @code{AC_CONFIG_SUBDIRS})
 2465: @c are honored.
 2466: @c 
 2467: @file{config.status}は,全てのコンフィグレーションの実行を受け入れます.
 2468: 全ての出力ファイル(@ref{Configuration Files},そしてマクロ
 2469: @code{AC_CONFIG_FILES}を参照してください),ヘッダファイル
 2470: (@ref{Configuration Commands},そしてマクロ@code{AC_CONFIG_COMMANDS}を参
 2471: 照してください),コマンド(@ref{Configuration Commands},そしてマクロ
 2472: @code{AC_CONFIG_COMMANDS}を参照してください),リンク(@ref{Configuration
 2473: Links},そしてマクロ@code{AC_CONFIG_LINKS}を参照してください),サブディレ
 2474: クトリ(@ref{Configuration Links}, そしてマクロ@code{AC_CONFIG_LINKS}を参
 2475: 照してください)が尊重されます.
 2476: @end defmac
 2477: 
 2478: @c Historically, the usage of @code{AC_OUTPUT} was somewhat different.
 2479: @c @xref{Obsolete Macros}, for a description of the arguments that
 2480: @c @code{AC_OUTPUT} used to support.
 2481: @c 
 2482: 歴史的には,@code{AC_OUTPUT}の使用はいくぶん異なっています.
 2483: @code{AC_OUTPUT}がサポートする引数の記述は,@xref{Obsolete Macros}.
 2484: 
 2485: @c If you run @code{make} on subdirectories, you should run it using the
 2486: @c @code{make} variable @code{MAKE}.  Most versions of @code{make} set
 2487: @c @code{MAKE} to the name of the @code{make} program plus any options it
 2488: @c was given.  (But many do not include in it the values of any variables
 2489: @c set on the command line, so those are not passed on automatically.)
 2490: @c Some old versions of @code{make} do not set this variable.  The
 2491: @c following macro allows you to use it even with those versions.
 2492: @c 
 2493: サブディレクトリで@code{make}を実行する場合,@code{make}を変数 
 2494: @code{MAKE}を使用して実行すべきです.たいていの@code{make}のバージョンは,
 2495: @code{MAKE}を@code{make}プログラムと,それに与えるあらゆるオプションを追
 2496: 加して設定します.(しかし,その中にコマンドラインで設定された値を含まな
 2497: いものも多いので,それらは自動的に渡されません.) 古いバージョンの
 2498: @code{make}には,変数を設定しないものもあります.以下のマクロでそれらの
 2499: バージョンでも使用可能になります.
 2500: 
 2501: @defmac AC_PROG_MAKE_SET
 2502: @maindex PROG_MAKE_SET
 2503: @ovindex SET_MAKE
 2504: @c If @code{make} predefines the variable @code{MAKE}, define output
 2505: @c variable @code{SET_MAKE} to be empty.  Otherwise, define @code{SET_MAKE}
 2506: @c to contain @samp{MAKE=make}.  Calls @code{AC_SUBST} for @code{SET_MAKE}.
 2507: @c 
 2508: @code{make}が変数@code{MAKE}を前もって定義する場合,出力変数 
 2509: @code{SET_MAKE}は空で定義されます.それ以外では,@code{SET_MAKE}は 
 2510: @samp{MAKE=make}を含みます.@code{SET_MAKE}に対して@code{AC_SUBST}を呼び
 2511: 出して下さい.
 2512: @end defmac
 2513: 
 2514: @c To use this macro, place a line like this in each @file{Makefile.in}
 2515: @c that runs @code{MAKE} on other directories:
 2516: @c 
 2517: このマクロを使用するために,@code{MAKE}を実行する他のディレクトリのそれ
 2518: ぞれの@file{Makefile.in}に以下の行を書き込んで下さい.
 2519: 
 2520: @example
 2521: @@SET_MAKE@@
 2522: @end example
 2523: 
 2524: 
 2525: @node Configuration Actions, Configuration Files, Output, Setup
 2526: @section コンフィグレーションの動作の取得
 2527: 
 2528: @c @file{configure} is designed so that it appears to do everything itself,
 2529: @c but there is actually a hidden slave: @file{config.status}.
 2530: @c @file{configure} is in charge of examining your system, but it is
 2531: @c @file{config.status} that actually takes the proper actions based on the
 2532: @c results of @file{configure}.  The most typical task of
 2533: @c @file{config.status} is to @emph{instantiate} files.
 2534: @c 
 2535: @file{configure}は,自分が行なっていることが全部分かるように設計されてい
 2536: ますが,隠されている従属物も実際にはあります.それは,
 2537: @file{config.status}です.@file{configure}はシステムの調査を担当していま
 2538: すが,@file{configure}の結果を基に適切な動作を実際に引き受けるのは,
 2539: @file{config.status}です.@file{config.status}のほとんどの典型的な作業は,
 2540: ファイルを@emph{実際に作成する}ことです.
 2541: 
 2542: @c This section describes the common behavior of the four standard
 2543: @c instantiating macros: @code{AC_CONFIG_FILES}, @code{AC_CONFIG_HEADERS},
 2544: @c @code{AC_CONFIG_COMMANDS} and @code{AC_CONFIG_LINKS}.  They all
 2545: @c have this prototype:
 2546: @c 
 2547: このセクションでは,4つの基本的な実際に何かを作成するマクロの一般的な動
 2548: 作を説明します.それらは,@code{AC_CONFIG_FILES},
 2549: @code{AC_CONFIG_HEADERS},@code{AC_CONFIG_COMMANDS},そして
 2550: @code{AC_CONFIG_LINKS}です.それらは全て以下のものが原型となっています.
 2551: 
 2552: @c Can't use @ovar{} here, Texinfo 4.0 goes lunatic and emits something
 2553: @c awful.
 2554: @example
 2555: AC_CONFIG_FOOS(@var{tag}@dots{}, [@var{commands}], [@var{init-cmds}])
 2556: @end example
 2557: 
 2558: @noindent
 2559: @c where the arguments are:
 2560: @c 
 2561: ここでの引数は,以下のとおりです.
 2562: 
 2563: @table @var
 2564: @item @var{tag}@dots{}
 2565: @c A whitespace-separated list of tags, which are typically the names of
 2566: @c the files to instantiate.
 2567: @c 
 2568: 空白で分けられたタグのリストで,それらは通常,実際に作成されるファイル名
 2569: です.
 2570: 
 2571: @item commands
 2572: @c Shell commands output literally into @file{config.status}, and
 2573: @c associated with a tag that the user can use to tell @file{config.status}
 2574: @c which the commands to run.  The commands are run each time a @var{tag}
 2575: @c request is given to @file{config.status}; typically, each time the file
 2576: @c @file{@var{tag}} is created.
 2577: @c 
 2578: @file{config.status}に,そのまま出力されるシェルコマンドで,
 2579: @file{config.status}に実行するコマンドを伝えるためにユーザが使用すること
 2580: が可能な@var{tag}に関連付けされています.@var{tag}の要求が
 2581: @file{config.status}に与えられるたびに,コマンドが実行されます.通常は,
 2582: ファイル@file{@var{tag}}が作成されるたびになります.
 2583: 
 2584: @item init-cmds
 2585: @c Shell commands output @emph{unquoted} near the beginning of
 2586: @c @file{config.status}, and executed each time @file{config.status} runs
 2587: @c (regardless of the tag).  Because they are unquoted, for example,
 2588: @c @samp{$var} will be output as the value of @code{var}.  @var{init-cmds}
 2589: @c is typically used by @file{configure} to give @file{config.status} some
 2590: @c variables it needs to run the @var{commands}.
 2591: @c 
 2592: @file{config.status}の先頭付近に,引用符で囲まれることなく出力されるシェ
 2593: ルコマンドで,@file{config.status}が実行されるたびに(@var{tag}に関係なく) 
 2594: 実行されます.引用符で囲まれていないので,例えば,@samp{$var}は
 2595: @code{var}の値として出力されます.@var{init-cmds}は通常,@var{commands}
 2596: を実行するために必要な同じ変数を@file{config.status}に与えるために,
 2597: @file{configure}で使用されます.
 2598: @end table
 2599: 
 2600: @c All these macros can be called multiple times, with different
 2601: @c @var{tag}s, of course!
 2602: @c 
 2603: すべてのこれらのマクロは,もちろん異なる@var{tag}を用いると,何回でも呼
 2604: び出せます!
 2605: 
 2606: @c You are encouraged to use literals as @var{tags}.  In particular, you
 2607: @c should avoid
 2608: @c 
 2609: @var{tags}として,リテラルを使用することを勧めます.特に,以下は避けた方
 2610: が良いでしょう.
 2611: 
 2612: @example
 2613: @dots{} && my_foos="$my_foos fooo"
 2614: @dots{} && my_foos="$my_foos foooo"
 2615: AC_CONFIG_FOOS($my_foos)
 2616: @end example
 2617: 
 2618: @noindent
 2619: @c and use this instead:
 2620: @c 
 2621: この代わりに以下のようにしてください.
 2622: 
 2623: @example
 2624: @dots{} && AC_CONFIG_FOOS(fooo)
 2625: @dots{} && AC_CONFIG_FOOS(foooo)
 2626: @end example
 2627: 
 2628: @c The macro @code{AC_CONFIG_FILES} and @code{AC_CONFIG_HEADERS} use
 2629: @c specials @var{tag}s: they may have the form @samp{@var{output}} or
 2630: @c @samp{@var{output}:@var{inputs}}. The file @var{output} is instantiated
 2631: @c from its templates, @var{inputs} if specified, defaulting to
 2632: @c @samp{@var{output}.in}.
 2633: @c 
 2634: マクロ@code{AC_CONFIG_FILES}と@code{AC_CONFIG_HEADERS}は,特別な
 2635: @var{tag}を使用します.それらは,@samp{@var{output}}や
 2636: @samp{@var{output}:@var{inputs}}にすることが可能です.ファイル
 2637: @var{output}は,指定されている場合は@var{inputs}をテンプレートとして,デ
 2638: フォルトは@samp{@var{output}.in}から実際に作成されます.
 2639: 
 2640: @c For instance
 2641: @c @samp{AC_CONFIG_FILES(Makefile:boiler/top.mk:boiler/bot.mk)} asks for
 2642: @c the creation of @file{Makefile} that will be the expansion of the
 2643: @c output variables in the concatenation of @file{boiler/top.mk} and
 2644: @c @file{boiler/bot.mk}.
 2645: @c 
 2646: 例えば,@samp{AC_CONFIG_FILES(Makefile:boiler/top.mk:boiler/bot.mk)}は,
 2647: @file{boiler/top.mk}と@file{boiler/bot.mk}を繋げたものに,出力変数を展開
 2648: した@file{Makefile}を作成するよう要求します.
 2649: 
 2650: @c The special value @samp{-} might be used to denote the standard output
 2651: @c when used in @var{output}, or the standard input when used in the
 2652: @c @var{inputs}.  You most probably don't need to use this in
 2653: @c @file{configure.ac}, but it is convenient when using the command line
 2654: @c interface of @file{./config.status}, see @ref{config.status Invocation},
 2655: @c for more details.
 2656: @c 
 2657: 特殊な値@samp{-}は,@var{output}で使用されているときは標準出力を,
 2658: @var{inputs}で使用されているときは標準入力を示すために使用されます.おそ
 2659: らく@file{configure.ac}でこれを使用する必要はほとんど無いと思いますが,
 2660: @file{./config.status}のコマンドラインインターフェースを使用している時は
 2661: 便利でしょう.詳細は,@ref{config.status Invocation},を参照してください.
 2662: 
 2663: @c The @var{inputs} may be absolute or relative filenames.  In the latter
 2664: @c case they are first looked for in the build tree, and then in the source
 2665: @c tree.
 2666: @c 
 2667: @var{inputs}は,絶対パスまたは相対パスを用いたファイル名が可能です.後者
 2668: の場合,それは最初にビルドツリーで探され,その後でソースツリーで探されま
 2669: す.
 2670: 
 2671: 
 2672: @node Configuration Files, Makefile Substitutions, Configuration Actions, Setup
 2673: @section コンフィグレーションファイルの作成
 2674: 
 2675: @c Be sure to read the previous section, @ref{Configuration Actions}.
 2676: @c 
 2677: きちんとこの前の章を読んでくださいね,@ref{Configuration Actions}.
 2678: 
 2679: @defmac AC_CONFIG_FILES (@var{file}@dots{}, @r{[}@var{cmds}@r{]}, @r{[}@var{init-cmds}@r{]})
 2680: @maindex CONFIG_FILES
 2681: @c Make @code{AC_OUTPUT} create each @file{@var{file}} by copying an input
 2682: @c file (by default @file{@var{file}.in}), substituting the output variable
 2683: @c values.
 2684: @c 
 2685: 出力変数の値を置換しながら入力ファイル(デフォルトは@file{@var{file}.in}) 
 2686: をコピーすることで,@code{AC_OUTPUT}でそれぞれの@file{@var{file}}を作成
 2687: するようにします.
 2688: @c Before we used to have this feature, which was later rejected
 2689: @c because it complicates the write of Makefiles:
 2690: @c If the file would be unchanged, it is left untouched, to preserve
 2691: @c timestamp.
 2692: 
 2693: @c This macro is one of the instantiating macros, see @ref{Configuration
 2694: @c Actions}.  @xref{Makefile Substitutions}, for more information on using
 2695: @c output variables.  @xref{Setting Output Variables}, for more information
 2696: @c on creating them.  This macro creates the directory that the file is in
 2697: @c if it doesn't exist.  Usually, @file{Makefile}s are created this way,
 2698: @c but other files, such as @file{.gdbinit}, can be specified as well.
 2699: @c 
 2700: このマクロは,実際に何かを作成するマクロの一つで,@ref{Configuration
 2701: Actions} を参照してください.出力変数を使用することへのより多くの情報は,
 2702: @xref{Makefile Substitutions}.それらを作成するためのより多くの情報は,
 2703: @xref{Setting Output Variables}.これらのマクロは,存在しない場合はファイ
 2704: ルを配置するディレクトリを作成します.通常,@file{Makefile}はこの方法で
 2705: 作成されますが,@file{.gdbinit}のようなそれ以外のファイルは,指定されて
 2706: いることもあります.
 2707: 
 2708: @c Typical calls to @code{AC_CONFIG_FILES} look like this:
 2709: @c 
 2710: 典型的な@code{AC_CONFIG_FILES}の呼び出しは,以下のようになります.
 2711: 
 2712: @example
 2713: AC_CONFIG_FILES(Makefile src/Makefile man/Makefile X/Imakefile)
 2714: AC_CONFIG_FILES(autoconf, chmod +x autoconf)
 2715: @end example
 2716: 
 2717: @c You can override an input file name by appending to @var{file} a
 2718: @c colon-separated list of input files.  Examples:
 2719: @c 
 2720: コロンで分けられた入力ファイル@var{file}のリストを入力ファイルに追加する
 2721: ことで,優先可能です.例えば以下のようにします.
 2722: 
 2723: @example
 2724: AC_CONFIG_FILES(Makefile:boiler/top.mk:boiler/bot.mk
 2725:                 lib/Makefile:boiler/lib.mk)
 2726: @end example
 2727: 
 2728: @noindent
 2729: @c Doing this allows you to keep your file names acceptable to MS-DOS, or
 2730: @c to prepend and/or append boilerplate to the file.
 2731: @c 
 2732: こうすることで,ファイル名をMS-DOSが受け入れ可能なままにしたり,ファイル
 2733: に常套句を前置したり後置したりすることが可能となります.
 2734: @end defmac
 2735: 
 2736: 
 2737: @node Makefile Substitutions, Configuration Headers, Configuration Files, Setup
 2738: @section Makefileへの代入
 2739: 
 2740: @c Each subdirectory in a distribution that contains something to be
 2741: @c compiled or installed should come with a file @file{Makefile.in}, from
 2742: @c which @code{configure} will create a @file{Makefile} in that directory.
 2743: @c To create a @file{Makefile}, @code{configure} performs a simple variable
 2744: @c substitution, replacing occurrences of @samp{@@@var{variable}@@} in
 2745: @c @file{Makefile.in} with the value that @code{configure} has determined
 2746: @c for that variable.  Variables that are substituted into output files in
 2747: @c this way are called @dfn{output variables}.  They are ordinary shell
 2748: @c variables that are set in @code{configure}.  To make @code{configure}
 2749: @c substitute a particular variable into the output files, the macro
 2750: @c @code{AC_SUBST} must be called with that variable name as an argument.
 2751: @c Any occurrences of @samp{@@@var{variable}@@} for other variables are
 2752: @c left unchanged.  @xref{Setting Output Variables}, for more information
 2753: @c on creating output variables with @code{AC_SUBST}.
 2754: @c 
 2755: コンパイルされたりインストールされたりするものを含んでいる,配布物のそれ
 2756: ぞれのサブディレクトリには,@code{configure}がそのディレクトリに
 2757: @file{Makefile}を作成するためのファイル@file{Makefile.in}を配置すべきで
 2758: す.@file{Makefile}を作成するために,@file{Makefile.in}の
 2759: @samp{@@@var{variable}@@}を@code{configure}が決定したその変数の値に置換
 2760: しながら,@code{configure}は単純な変数の代入を行います.このようにして出
 2761: 力ファイルに代入される変数は,@dfn{output variables}と呼ばれます.それら
 2762: は@code{configure}で設定される普通のシェル変数です.@code{configure}が特
 2763: 定の変数を出力ファイルに代入するように,変数名を引数として
 2764: @code{AC_SUBST}マクロを呼び出す必要があります.他の変数に対する
 2765: @samp{@@@var{variable}@@}が変化することはありません.@code{AC_SUBST}を用
 2766: いた出力変数の作成方法の詳細は,@xref{Setting Output Variables}.
 2767: 
 2768: @c A software package that uses a @code{configure} script should be
 2769: @c distributed with a file @file{Makefile.in}, but no @file{Makefile}; that
 2770: @c way, the user has to properly configure the package for the local system
 2771: @c before compiling it.
 2772: @c 
 2773: @code{configure}スクリプトを使用するソフトウェアパッケージは,ファイル 
 2774: @file{Makefile.in}と一緒に配布すべきですが,@file{Makefile}は配布すべき
 2775: ではありません.つまり,ユーザはコンパイルする前にローカルシステムに対し
 2776: て,正しくパッケージをコンフィグレーションする必要があります.
 2777: 
 2778: @c @xref{Makefile Conventions,, Makefile Conventions, standards, The
 2779: @c GNU Coding Standards}, for more information on what to put in
 2780: @c @file{Makefile}s.
 2781: @c 
 2782: @file{Makefile}に書くものの詳細は@xref{Makefile Conventions,, Makefile
 2783: Conventions, standards, The GNU Coding Standards}.
 2784: 
 2785: @menu
 2786: * Preset Output Variables::     Output variables that are always set
 2787: * Installation Directory Variables::  Other preset output variables
 2788: * Build Directories::           Supporting multiple concurrent compiles
 2789: * Automatic Remaking::          Makefile rules for configuring
 2790: @end menu
 2791: 
 2792: @node Preset Output Variables, Installation Directory Variables, Makefile Substitutions, Makefile Substitutions
 2793: @subsection 出力変数のプリセット
 2794: 
 2795: @c Some output variables are preset by the Autoconf macros.  Some of the
 2796: @c Autoconf macros set additional output variables, which are mentioned in
 2797: @c the descriptions for those macros.  @xref{Output Variable Index}, for a
 2798: @c complete list of output variables.  @xref{Installation Directory
 2799: @c Variables}, for the list of the preset ones related to installation
 2800: @c directories.  Below are listed the other preset ones.  They all are
 2801: @c precious variables (@pxref{Setting Output Variables},
 2802: @c @code{AC_ARG_VAR}).
 2803: @c 
 2804: Autoconfマクロがプリセットする出力変数もあります.追加の出力変数を設定す
 2805: るAutoconfマクロもあり,それは,それらのマクロの記述で述べています.出力
 2806: 変数の完全なリストは,@xref{Output Variable Index}. 以下は,それぞれそれ
 2807: 以外のプリセットされたもののリストです.それらは全て大切な値です
 2808: (@pxref{Setting Output Variables}, @code{AC_ARG_VAR}).
 2809: 
 2810: @c Just say no to ASCII sorting!  We're humans, not computers.
 2811: @c These variables are listed as they would be in a dictionary:
 2812: @c actor
 2813: @c Actress
 2814: @c actress
 2815: 
 2816: @defvar CFLAGS
 2817: @ovindex CFLAGS
 2818: @c Debugging and optimization options for the C compiler.  If it is not set
 2819: @c in the environment when @code{configure} runs, the default value is set
 2820: @c when you call @code{AC_PROG_CC} (or empty if you don't).  @code{configure}
 2821: @c uses this variable when compiling programs to test for C features.
 2822: @c 
 2823: Cコンパイラに対する,デバッグと最適化のオプションです.@code{configure} 
 2824: を実行する時に環境(変数)で設定されていない場合,@code{AC_PROG_CC}を呼び
 2825: 出す時にデフォルト値が設定されます(そうでない場合は空になります).Cの特
 2826: 徴をテストするためのプログラムをコンパイルする時,@code{configure}はこの
 2827: 変数を使用します.
 2828: @end defvar
 2829: 
 2830: @defvar configure_input
 2831: @ovindex configure_input
 2832: @c A comment saying that the file was generated automatically by
 2833: @c @code{configure} and giving the name of the input file.
 2834: @c @code{AC_OUTPUT} adds a comment line containing this variable to the top
 2835: @c of every @file{Makefile} it creates.  For other files, you should
 2836: @c reference this variable in a comment at the top of each input file.  For
 2837: @c example, an input shell script should begin like this:
 2838: @c 
 2839: @code{configure}によって自動的に生成されるファイルを告げ,入力ファイル名
 2840: を与えるコメントです.@code{AC_OUTPUT}は,それが作成するすべての
 2841: @file{Makefile}の最初に,この変数を含むコメント行を加えます.それ以外の
 2842: ファイルは,それぞれの入力ファイルの最初のコメントで,この変数を参照すべ
 2843: きです.例えば,入力シェルスクリプトの最初は以下のようにすべきです.
 2844: 
 2845: @example
 2846: #! /bin/sh
 2847: # @@configure_input@@
 2848: @end example
 2849: 
 2850: @noindent
 2851: @c The presence of that line also reminds people editing the file that it
 2852: @c needs to be processed by @code{configure} in order to be used.
 2853: @c 
 2854: またその行の存在で,ファイルを編集している人は,@code{configure}を使用し
 2855: て処理する必要があることを思い出します.
 2856: @end defvar
 2857: 
 2858: @defvar CPPFLAGS
 2859: @ovindex CPPFLAGS
 2860: @c Header file search directory (@option{-I@var{dir}}) and any other
 2861: @c miscellaneous options for the C and C++ preprocessors and compilers.  If
 2862: @c it is not set in the environment when @code{configure} runs, the default
 2863: @c value is empty.  @code{configure} uses this variable when compiling or
 2864: @c preprocessing programs to test for C and C++ features.
 2865: @c 
 2866: ヘッダファイルを探すディレクトリ(@samp{-I@var{dir}})と,Cプリプロセッサ
 2867: とCコンパイラに対する,その他の雑多なオプションです.@code{configure}を
 2868: 実行する時に環境(変数)に設定されていない場合,デフォルト値は空になります. 
 2869: @code{configure}は,Cの特徴をテストするプログラムのコンパイルやプリプロ
 2870: セス時にこの変数を使用します.
 2871: @end defvar
 2872: 
 2873: @defvar CXXFLAGS
 2874: @ovindex CXXFLAGS
 2875: @c Debugging and optimization options for the C++ compiler.  If it is not
 2876: @c set in the environment when @code{configure} runs, the default value is
 2877: @c set when you call @code{AC_PROG_CXX} (or empty if you don't).
 2878: @c @code{configure} uses this variable when compiling programs to test for
 2879: @c C++ features.
 2880: @c 
 2881: C++コンパイラの,デバッグと最適化オプションです.@code{configure}を実行
 2882: する時に環境(変数)に設定されていない場合,@code{AC_PROG_CXX}を呼び出した
 2883: 時にデフォルト値に設定されます(そうでない場合は空になります).
 2884: @code{configure}は,C++の特徴をテストするプログラムのコンパイル時に,こ
 2885: の変数を使用します.
 2886: @end defvar
 2887: 
 2888: @defvar DEFS
 2889: @ovindex DEFS
 2890: @c @option{-D} options to pass to the C compiler.  If @code{AC_CONFIG_HEADERS}
 2891: @c is called, @code{configure} replaces @samp{@@DEFS@@} with
 2892: @c @option{-DHAVE_CONFIG_H} instead (@pxref{Configuration Headers}).  This
 2893: @c variable is not defined while @code{configure} is performing its tests,
 2894: @c only when creating the output files.  @xref{Setting Output Variables}, for
 2895: @c how to check the results of previous tests.
 2896: @c 
 2897: Cコンパイラに渡す@samp{-D}オプションです.@code{AC_CONFIG_HEADER}が呼び
 2898: 出された場合,@code{configure}は@samp{@@DEFS@@}の代わりに 
 2899: @samp{-DHAVE_CONFIG_H}に置換します(@pxref{Configuration Headers}).この
 2900: 変数は,@code{configure}がテストを実行している間は定義されず,出力ファイ
 2901: ルを作成するときのみ定義されます.前のテストの結果を調査する方法は,
 2902: @xref{Setting Output Variables}.
 2903: @end defvar
 2904: 
 2905: @defvar ECHO_C
 2906: @defvarx ECHO_N
 2907: @defvarx ECHO_T
 2908: @ovindex ECHO_C
 2909: @ovindex ECHO_N
 2910: @ovindex ECHO_T
 2911: @c How does one suppress the trailing newline from @code{echo} for
 2912: @c question-answer message pairs?  These variables provide a way:
 2913: @c 
 2914: 質問と回答のメッセージの組に対して,@code{echo}に後置される改行を抑制す
 2915: る方法は?これらの変数は,その方法を提供します.
 2916: 
 2917: @example
 2918: echo $ECHO_N "And the winner is... $ECHO_C"
 2919: sleep 100000000000
 2920: echo "$@{ECHO_T@}dead."
 2921: @end example
 2922: 
 2923: @noindent
 2924: @c Some old and uncommon @code{echo} implementations offer no means to
 2925: @c achieve this, in which case @code{ECHO_T} is set to tab.  You might not
 2926: @c want to use it.
 2927: @c 
 2928: 古く一般的でない@code{echo}の実装では,これを達成する意味が無いものもあ
 2929: り,その場合,@code{ECHO_T}はタブをに設定されます.そうしたくないかもし
 2930: れませんね.
 2931: @end defvar
 2932: 
 2933: @defvar FFLAGS
 2934: @ovindex FFLAGS
 2935: @c Debugging and optimization options for the Fortran 77 compiler.  If it
 2936: @c is not set in the environment when @code{configure} runs, the default
 2937: @c value is set when you call @code{AC_PROG_F77} (or empty if you don't).
 2938: @c @code{configure} uses this variable when compiling programs to test for
 2939: @c Fortran 77 features.
 2940: @c 
 2941: Fortran 77コンパイラの,デバッグと最適化オプションです. 
 2942: @code{configure}を実行する時に環境(変数)に設定されていない場合, 
 2943: @code{AC_PROG_F77}を呼び出したときデフォルト値に設定されます(そうでない
 2944: 場合は空になります).@code{configure}は,Fortran 77の特徴をテストするプ
 2945: ログラムのコンパイル時に,この変数を使用します.
 2946: @end defvar
 2947: 
 2948: @defvar LDFLAGS
 2949: @ovindex LDFLAGS
 2950: @c Stripping (@option{-s}), path (@option{-L}), and any other miscellaneous
 2951: @c options for the linker.  Don't use this variable to pass library names
 2952: @c (@option{-l}) to the linker, use @code{LIBS} instead.  If it is not set
 2953: @c in the environment when @code{configure} runs, the default value is empty.
 2954: @c @code{configure} uses this variable when linking programs to test for
 2955: @c C, C++ and Fortran 77 features.
 2956: @c 
 2957: strip(@samp{-s}),パス(@option{-L}),その他のあらゆる雑多なリンカに対す
 2958: るオプションです.@code{configure}を実行する時に環境(変数)に設定されてい
 2959: ない場合,デフォルト値は空になります.@code{configure}は,C,C++,そして
 2960: Fortran 77の特徴をテストするプログラムのリンク時に,この変数を使用します.
 2961: @end defvar
 2962: 
 2963: @defvar LIBS
 2964: @ovindex LIBS
 2965: @c @option{-l} options to pass to the linker.  The default value is empty,
 2966: @c but some Autoconf macros may prepend extra libraries to this variable if
 2967: @c those libraries are found and provide necessary functions, see
 2968: @c @ref{Libraries}.  @code{configure} uses this variable when linking
 2969: @c programs to test for C, C++ and Fortran 77 features.
 2970: @c 
 2971: リンカに渡す@samp{-l}オプションです.デフォルト値は空ですが,ライブラリ
 2972: が見つかり,必要な関数を提供する場合,Autoconfマクロはこの変数に追加のラ
 2973: イブラリを前置するかもしれません.@ref{Libraries}を参照してください.
 2974: @code{configure}は,C,C++,そしてFortran 77の特徴をテストするプログラム
 2975: のリンク時に,この変数を使用します.
 2976: @end defvar
 2977: 
 2978: @defvar srcdir
 2979: @ovindex srcdir
 2980: @c The directory that contains the source code for that @file{Makefile}.
 2981: @c 
 2982: @file{Makefile}に対するソースコードを含んでいるディレクトリです.
 2983: @end defvar
 2984: 
 2985: @defvar top_srcdir
 2986: @ovindex top_srcdir
 2987: @c The top-level source code directory for the package.  In the top-level
 2988: @c directory, this is the same as @code{srcdir}.
 2989: @c 
 2990: パッケージのソースコードのトップレベルのディレクトリです.トップレベルの
 2991: ディレクトリでは,これは@code{srcdir}と同じになります.
 2992: @end defvar
 2993: 
 2994: 
 2995: @node Installation Directory Variables, Build Directories, Preset Output Variables, Makefile Substitutions
 2996: @subsection インストールディレクトリの変数
 2997: 
 2998: @c The following variables specify the directories where the package will
 2999: @c be installed, see @ref{Directory Variables,, Variables for Installation
 3000: @c Directories, standards, The GNU Coding Standards}, for more information.
 3001: @c See the end of this section for details on when and how to use these
 3002: @c variables.
 3003: @c 
 3004: 以下の変数は,パッケージがインストールされる場所を指定します.詳細は,
 3005: @ref{Directory Variables,, Variables for Installation Directories,
 3006: standards, The GNU Coding Standards},を参照してください.これらの変数を
 3007: 使用する時とその方法の詳細は,このセクションの終りを参照してください.
 3008: 
 3009: @defvar bindir
 3010: @ovindex bindir
 3011: @c The directory for installing executables that users run.
 3012: @c 
 3013: ユーザが実行する実行可能なプログラムをインストールするディレクトリです.
 3014: @end defvar
 3015: 
 3016: @defvar datadir
 3017: @ovindex datadir
 3018: @c The directory for installing read-only architecture-independent data.
 3019: @c 
 3020: 読み込み専用のアーキテクチャに依存しないデータをインストールするディレク
 3021: トリです.
 3022: @end defvar
 3023: 
 3024: @defvar exec_prefix
 3025: @ovindex exec_prefix
 3026: @c The installation prefix for architecture-dependent files.  By default
 3027: @c it's the same as @var{prefix}.  You should avoid installing anything
 3028: @c directly to @var{exec_prefix}.  However, the default value for
 3029: @c directories containing architecture-dependent files should be relative
 3030: @c to @var{exec_prefix}.
 3031: @c 
 3032: アーキテクチャに依存するファイルをインストールするプレフィックスです.デ
 3033: フォルトは,@var{prefix}と同じです.@var{exec_prefix}にいろんなものを直
 3034: 接インストールすることは避けた方が良いでしょう.しかし,アーキテクチャに
 3035: 依存するファイルを含むディレクトリに対するデフォルト値は,
 3036: @var{exec_prefix}から相対的なものにすべきです.
 3037: @end defvar
 3038: 
 3039: @defvar includedir
 3040: @ovindex includedir
 3041: @c The directory for installing C header files.
 3042: @c 
 3043: Cヘッダファイルをインストールするディレクトリです.
 3044: @end defvar
 3045: 
 3046: @defvar infodir
 3047: @ovindex infodir
 3048: @c The directory for installing documentation in Info format.
 3049: @c 
 3050: Info形式のドキュメントをインストールするディレクトリです.
 3051: @end defvar
 3052: 
 3053: @defvar libdir
 3054: @ovindex libdir
 3055: @c The directory for installing object code libraries.
 3056: @c 
 3057: オブジェクトコードライブラリをインストールするディレクトリです.
 3058: @end defvar
 3059: 
 3060: @defvar libexecdir
 3061: @ovindex libexecdir
 3062: @c The directory for installing executables that other programs run.
 3063: @c 
 3064: 他のプログラムが実行する,実行可能なプログラムをインストールするディレク
 3065: トリです.
 3066: @end defvar
 3067: 
 3068: @defvar localstatedir
 3069: @ovindex localstatedir
 3070: @c The directory for installing modifiable single-machine data.
 3071: @c 
 3072: 修正可能なシングルマシンのデータをインストールするディレクトリです.
 3073: @end defvar
 3074: 
 3075: @defvar mandir
 3076: @ovindex mandir
 3077: @c The top-level directory for installing documentation in man format.
 3078: @c 
 3079: man形式のドキュメントをインストールするトップレベルのディレクトリです.
 3080: @end defvar
 3081: 
 3082: @defvar oldincludedir
 3083: @ovindex oldincludedir
 3084: @c The directory for installing C header files for non-gcc compilers.
 3085: @c 
 3086: gccコンパイラ以外のためのCヘッダファイルをインストールするディレクトリで
 3087: す.
 3088: @end defvar
 3089: 
 3090: @defvar prefix
 3091: @ovindex prefix
 3092: @c The common installation prefix for all files. If @var{exec_prefix}
 3093: @c is defined to a different value, @var{prefix} is used only for
 3094: @c architecture-independent files.
 3095: @c
 3096: 全てのファイルに対する共通のインストールプレフィクスです.
 3097: @var{exec_prefix}がことなる値で定義されている場合,@var{prefix}はアーキ
 3098: テクチャ非依存ファイルに対してのみ使用されます.
 3099: @end defvar
 3100: 
 3101: @defvar sbindir
 3102: @ovindex sbindir
 3103: @c The directory for installing executables that system
 3104: @c administrators run.
 3105: @c 
 3106: システム管理者が実行する実行可能なプログラムをインストールするディレクト
 3107: リです.
 3108: @end defvar
 3109: 
 3110: @defvar sharedstatedir
 3111: @ovindex sharedstatedir
 3112: @c The directory for installing modifiable architecture-independent data.
 3113: @c 
 3114: 修正可能な,アーキテクチャに依存しないデータをインストールするディレクト
 3115: リです.
 3116: @end defvar
 3117: 
 3118: @defvar sysconfdir
 3119: @ovindex sysconfdir
 3120: @c The directory for installing read-only single-machine data.
 3121: @c 
 3122: 読み込み専用の,シングルマシンのデータをインストールするディレクトリです.
 3123: @end defvar
 3124: 
 3125: 
 3126: @c Most of these variables have values that rely on @code{prefix} or
 3127: @c @code{exec_prefix}.  It is on purpose that the directory output
 3128: @c variables keep them unexpanded: typically @samp{@@datadir@@} will be
 3129: @c replaced by @samp{$@{prefix@}/share}, not @samp{/usr/local/share}.
 3130: @c 
 3131: これらの変数のほとんどは,@code{prefix}や@code{exec_prefix}に依存する値
 3132: を持ちます.ディレクトリ変数の出力値が展開されないように故意に行なってい
 3133: ます.典型的な例として,@samp{@@datadir@@}は,@samp{/usr/local/share}で
 3134: はなく@samp{$@{prefix@}/share}に置換されます.
 3135: 
 3136: @c This behavior is mandated by the @sc{gnu} coding standards, so that when
 3137: @c the user runs:
 3138: @c 
 3139: 以下の動作は,@sc{gnu} coding standardsで示されれていて,ユーザが実行時
 3140: にそうなるようになっています.
 3141: 
 3142: @table @samp
 3143: @item make
 3144: @c she can still specify a different prefix from the one specified to
 3145: @c @command{configure}, in which case, if needed, the package shall hard
 3146: @c code dependencies to her late desires.
 3147: @c 
 3148: @command{configure}に指定されるものとは異なるプレフィクスを指定すること
 3149: がまだ可能で,その場合,必要があれば,遅れてなされた要求に依存するようパッ
 3150: ケージをハードコード化します。
 3151: 
 3152: @item make install
 3153: @c she can specify a different installation location, in which case the
 3154: @c package @emph{must} still depend on the location which was compiled in
 3155: @c (i.e., never recompile when @samp{make install} is run).  This is an
 3156: @c extremely important feature, as many people may decide to install all
 3157: @c the files of a package grouped together, and then install links from
 3158: @c the final locations to there.
 3159: @c 
 3160: 異なるインストール位置を指定することが可能で,その場合,パッケージはコン
 3161: パイルで指定した場所に,まだ依存している@emph{はず}です(すなわち,
 3162: @samp{make install}を実行する時は再コンパイルされません).お互いにグルー
 3163: プ化された全てのファイルを,インストール時に決定する人も多いので,これは
 3164: 非常に重要な特徴で,そこからインストール後に最終的な場所にリンクが張られ
 3165: ます.
 3166: @end table
 3167: 
 3168: @c In order to support these features, it is essential that @code{datadir}
 3169: @c remains being defined as @samp{$@{prefix@}/share} to depend upon the
 3170: @c current value of @code{prefix}.
 3171: @c 
 3172: これらの特徴をサポートするために,@code{datadir}が@code{prefix}の現在の
 3173: 値に依存する@samp{$@{prefix@}/share}として定義されたままになっていること
 3174: が重要です.
 3175: 
 3176: @c A corollary is that you should not use these variables but in Makefiles.
 3177: @c For instance, instead of trying to evaluate @code{datadir} in
 3178: @c @file{configure} and hardcoding it in Makefiles using
 3179: @c e.g. @samp{AC_DEFINE_UNQUOTED(DATADIR, "$datadir")}, you should add
 3180: @c @samp{-DDATADIR="$(datadir)"} to your @code{CPPFLAGS}.
 3181: @c 
 3182: 当然のことですが,これらの変数をMakefileで使用すべきではありません.例え
 3183: ば,@file{configure}で@code{datadir}を評価する代わりに,Makefileで,例え
 3184: ば@samp{AC_DEFINE_UNQUOTED(DATADIR, "$datadir")}としてハードコードする場
 3185: 合は,@samp{-DDATADIR="$(datadir)"}を@code{CPPFLAGS}に加えるべきです.
 3186: 
 3187: @c Similarly you should not rely on @code{AC_OUTPUT_FILES} to replace
 3188: @c @code{datadir} and friends in your shell scripts and other files, rather
 3189: @c let @command{make} manage their replacement.  For instance Autoconf
 3190: @c ships templates of its shell scripts ending with @samp{.sh}, and uses
 3191: @c this Makefile snippet:
 3192: @c 
 3193: 同様に,@code{datadir}とその仲間を,シェルスクリプトやその他のファイルで
 3194: 置換するために,@code{AC_OUTPUT_FILES}に頼るべきではなく,その代わりに
 3195: @command{make}にその置換を行なわせてください.@samp{.sh}で終るシェルスク
 3196: リプトのAutoconf的なテンプレートの例として,以下のようなMakefileの一部を
 3197: 使用してください.
 3198: 
 3199: @example
 3200: .sh:
 3201:         rm -f $@@ $@@.tmp
 3202:         sed 's,@@datadir\@@,$(pkgdatadir),g' $< >$@@.tmp
 3203:         chmod +x $@@.tmp
 3204:         mv $@@.tmp $@@
 3205: @end example
 3206: 
 3207: @c Three things are noteworthy:
 3208: @c 
 3209: 注目すべきことは3つあります.
 3210: 
 3211: @table @samp
 3212: @item @@datadir\@@
 3213: @c The backslash prevents @command{configure} from replacing
 3214: @c @samp{@@datadir@@} in the sed expression itself.
 3215: @c 
 3216: バックスラッシュで@command{configure}が@samp{@@datadir@@}をsedの式自身に
 3217: 置換することを妨げます.
 3218: 
 3219: @item $(pkgdatadir)
 3220: @c Don't use @samp{@@pkgdatadir@@}!  Use the matching makefile variable
 3221: @c instead.
 3222: @c 
 3223: @samp{@@pkgdatadir@@}を使用しないでください!代わりに,makefile変数の一
 3224: 致を使用してください.
 3225: 
 3226: @item ,
 3227: @c Don't use @samp{/} in the sed expression(s) since most probably the
 3228: @c variables you use, such as @samp{$(pkgdatadir)}, will contain
 3229: @c some.
 3230: @c 
 3231: @samp{$(pkgdatadir)}のように@samp{/}を含んでいる変数を使用する可能性があ
 3232: るので,sedの式で@samp{/}を使用しないでください.
 3233: @end table
 3234: 
 3235: 
 3236: @node Build Directories, Automatic Remaking, Installation Directory Variables, Makefile Substitutions
 3237: @subsection ビルドディレクトリ
 3238: 
 3239: @c You can support compiling a software package for several architectures
 3240: @c simultaneously from the same copy of the source code.  The object files
 3241: @c for each architecture are kept in their own directory.
 3242: @c 
 3243: 同じソースコードのコピーから,同時に複数のアーキテクチャに対するソフトウェ
 3244: アパッケージのコンパイルをサポートすることが可能です.それぞれのアーキテ
 3245: クチャに対するオブジェクトファイルは,それ自身のディレクトリに保存されま
 3246: す.
 3247: 
 3248: @c To support doing this, @code{make} uses the @code{VPATH} variable to
 3249: @c find the files that are in the source directory.  @sc{gnu} @code{make}
 3250: @c and most other recent @code{make} programs can do this.  Older
 3251: @c @code{make} programs do not support @code{VPATH}; when using them, the
 3252: @c source code must be in the same directory as the object files.
 3253: @c 
 3254: これをサポートするために,@code{make}は,ソースディレクトリにあるファイ
 3255: ルを見つけるため@code{VPATH}変数を使用します.@sc{gnu} @code{make}とその
 3256: 他のほとんどの最近の@code{make}プログラムはこうすることが可能です.もっ
 3257: と古い@code{make}プログラムは,@code{VPATH}をサポートしていません.それ
 3258: を使用する時は,ソースコードをオブジェクトファイルと同じディレクトリ置く
 3259: 必要があります.
 3260: 
 3261: @c To support @code{VPATH}, each @file{Makefile.in} should contain two
 3262: @c lines that look like:
 3263: @c 
 3264: @code{VPATH}をサポートするため,それぞれの@file{Makefile.in}には,以下の
 3265: ような2行が必要です.
 3266: 
 3267: @example
 3268: srcdir = @@srcdir@@
 3269: VPATH = @@srcdir@@
 3270: @end example
 3271: 
 3272: @c Do not set @code{VPATH} to the value of another variable, for example
 3273: @c @samp{VPATH = $(srcdir)}, because some versions of @code{make} do not do
 3274: @c variable substitutions on the value of @code{VPATH}.
 3275: @c 
 3276: @code{VPATH}の値に変数を代入しない@code{make}のバージョンもあるので, 
 3277: @code{VPATH}に他の値,例えば@samp{VPATH = $(srcdir)}を設定しないでくださ
 3278: い.
 3279: 
 3280: @c @code{configure} substitutes in the correct value for @code{srcdir} when
 3281: @c it produces @file{Makefile}.
 3282: @c 
 3283: @code{configure}は@file{Makefile}を作成するとき,@code{srcdir}に正しい値
 3284: を代入します.
 3285: 
 3286: @c Do not use the @code{make} variable @code{$<}, which expands to the
 3287: @c file name of the file in the source directory (found with @code{VPATH}),
 3288: @c except in implicit rules.  (An implicit rule is one such as @samp{.c.o},
 3289: @c which tells how to create a @file{.o} file from a @file{.c} file.)  Some
 3290: @c versions of @code{make} do not set @code{$<} in explicit rules; they
 3291: @c expand it to an empty value.
 3292: @c 
 3293: 暗黙の規則を期待して,(@code{VPATH}で見つかる)ソースディレクトリのファイ
 3294: ルのパス名を展開する@code{make}変数の@code{$<}を使用しないでください.
 3295: (暗黙の規則とは,@file{.c}ファイルから@file{.o}ファイルを作成する方法を
 3296: 教える@samp{.c.o}の様なものです.)暗黙の規則で@code{$<}を設定しないバー
 3297: ジョンの@code{make}もあり,それは,空の値で展開します.
 3298: 
 3299: @c Instead, @file{Makefile} command lines should always refer to source
 3300: @c files by prefixing them with @samp{$(srcdir)/}.  For example:
 3301: @c 
 3302: その代わり,@file{Makefile}コマンドラインは,ソースファイルを 
 3303: @samp{$(srcdir)/}を前置して参照します.例えば以下のようにします.
 3304: 
 3305: @example
 3306: time.info: time.texinfo
 3307:         $(MAKEINFO) $(srcdir)/time.texinfo
 3308: @end example
 3309: 
 3310: 
 3311: @node Automatic Remaking,  , Build Directories, Makefile Substitutions
 3312: @subsection 自動的なリメイク
 3313: 
 3314: @c You can put rules like the following in the top-level @file{Makefile.in}
 3315: @c for a package to automatically update the configuration information when
 3316: @c you change the configuration files.  This example includes all of the
 3317: @c optional files, such as @file{aclocal.m4} and those related to
 3318: @c configuration header files.  Omit from the @file{Makefile.in} rules for
 3319: @c any of these files that your package does not use.
 3320: @c 
 3321: コンフィグレーションファイルを変更したとき自動的にコンフィグレーション情
 3322: 報を更新するため,パッケージに対するトップレベルの@file{Makefile.in}に以
 3323: 下のような規則を書くことが可能でます.以下の例には,@file{aclocal.m4}や
 3324: それらが関連するるコンフィグレーションヘッダファイルのような,全てのオプ
 3325: ションのファイルを含まれています.パッケージで使用しないこれらのファイル
 3326: に対する@file{Makefile.in}規則は削除してください.
 3327: 
 3328: @c The @samp{$(srcdir)/} prefix is included because of limitations in the
 3329: @c @code{VPATH} mechanism.
 3330: @c 
 3331: @samp{$@{srcdir@}/}プレフィクスは@code{VPATH}メカニズムの制限のため含ん
 3332: でいます.
 3333: 
 3334: @c The @file{stamp-} files are necessary because the timestamps of
 3335: @c @file{config.h.in} and @file{config.h} will not be changed if remaking
 3336: @c them does not change their contents.  This feature avoids unnecessary
 3337: @c recompilation.  You should include the file @file{stamp-h.in} your
 3338: @c package's distribution, so @command{make} will consider
 3339: @c @file{config.h.in} up to date.  Don't use @command{touch}
 3340: @c (@pxref{Limitations of Usual Tools}), rather use @command{echo} (using
 3341: @c @command{date} would cause needless differences, hence @sc{cvs}
 3342: @c conflicts etc.).
 3343: @c 
 3344: @file{config.h.in}と@file{config.h}のタイムスタンプは,内容が変化しない
 3345: 場合には変化しないので,@file{stamp-}ファイルが必要です.この機能は不必
 3346: 要な再コンパイルを避けます.パッケージの配布物に@file{stamp-h.in}を含め
 3347: るべきで,そうすることで@code{make}は@file{config.h.in}が最新だというこ
 3348: とを考慮します.@command{touch} (@pxref{Limitations of Usual Tools})を使
 3349: 用せず,代わりに@command{echo}を使用してください(@command{date}を使用す
 3350: ると不必要な差異を生じ,@sc{cvs}で矛盾したりするでしょう).
 3351: 
 3352: @example
 3353: @group
 3354: $(srcdir)/configure: configure.ac aclocal.m4
 3355:         cd $(srcdir) && autoconf
 3356: 
 3357: # autoheader might not change config.h.in, so touch a stamp file.
 3358: $(srcdir)/config.h.in: stamp-h.in
 3359: $(srcdir)/stamp-h.in: configure.ac aclocal.m4
 3360:         cd $(srcdir) && autoheader
 3361:         echo timestamp > $(srcdir)/stamp-h.in
 3362: 
 3363: config.h: stamp-h
 3364: stamp-h: config.h.in config.status
 3365:         ./config.status
 3366: 
 3367: Makefile: Makefile.in config.status
 3368:         ./config.status
 3369: 
 3370: config.status: configure
 3371:         ./config.status --recheck
 3372: @end group
 3373: @end example
 3374: 
 3375: @noindent
 3376: @c (Be careful if you copy these lines directly into your Makefile, as you
 3377: @c will need to convert the indented lines to start with the tab character.)
 3378: @c 
 3379: この行を直接Makefileにコピーする時は,インデントされた行がタブ文字で始ま
 3380: るように置換する必要があるので注意してください.)
 3381: 
 3382: @c In addition, you should use @samp{AC_CONFIG_FILES(stamp-h, echo
 3383: @c timestamp > stamp-h)} so @file{config.status} will ensure that
 3384: @c @file{config.h} is considered up to date.  @xref{Output}, for more
 3385: @c information about @code{AC_OUTPUT}.
 3386: @c 
 3387: 更に,@samp{AC_CONFIG_FILES(stamp-h, echo timestamp > stamp-h)}を使用す
 3388: べきで,そうすることで@file{config.status}は@file{config.h}が最新である
 3389: ことを確かめます.@code{AC_OUTPUT}の詳細は,@xref{Output}.
 3390: 
 3391: @c @xref{config.status Invocation}, for more examples of handling
 3392: @c configuration-related dependencies.
 3393: @c 
 3394: 依存性に関係するコンフィグレーションの例は,@xref{config.status
 3395: Invocation}.
 3396: 
 3397: 
 3398: @node Configuration Headers, Configuration Commands, Makefile Substitutions, Setup
 3399: @section コンフィグレーションヘッダファイル
 3400: @cindex Configuration Header
 3401: @cindex @file{config.h}
 3402: 
 3403: @c When a package tests more than a few C preprocessor symbols, the command
 3404: @c lines to pass @option{-D} options to the compiler can get quite long.
 3405: @c This causes two problems.  One is that the @code{make} output is hard to
 3406: @c visually scan for errors.  More seriously, the command lines can exceed
 3407: @c the length limits of some operating systems.  As an alternative to
 3408: @c passing @option{-D} options to the compiler, @code{configure} scripts can
 3409: @c create a C header file containing @samp{#define} directives.  The
 3410: @c @code{AC_CONFIG_HEADERS} macro selects this kind of output.  It should
 3411: @c be called right after @code{AC_INIT}.
 3412: @c 
 3413: 2,3個以上のCプリプロセッサのシンボルをパッケージでテストするとき,コマ
 3414: ンドラインでコンパイラに渡す@samp{-D}オプションはかなり長くなります.こ
 3415: れは2つの問題があります.一つは,@code{make}の出力のエラーを探すとき,見
 3416: て分からなくなることですす.更に深刻な問題は,コマンドラインがいくつかの
 3417: オペレーティングシステムの長さの制限を越えることです.コンパイラに
 3418: @samp{-D}オプションを渡す代わりに, @code{configure}スクリプトは
 3419: @samp{#define}ディレクティブを含んでいるCヘッダファイルを作成することが
 3420: 可能です.@code{AC_CONFIG_HEADER}マクロで,この出力を選択します.それは,
 3421: @code{AC_INIT}の直後に呼び出します.
 3422: 
 3423: @c The package should @samp{#include} the configuration header file before
 3424: @c any other header files, to prevent inconsistencies in declarations (for
 3425: @c example, if it redefines @code{const}).  Use @samp{#include <config.h>}
 3426: @c instead of @samp{#include "config.h"}, and pass the C compiler a
 3427: @c @option{-I.} option (or @option{-I..}; whichever directory contains
 3428: @c @file{config.h}).  That way, even if the source directory is configured
 3429: @c itself (perhaps to make a distribution), other build directories can
 3430: @c also be configured without finding the @file{config.h} from the source
 3431: @c directory.
 3432: @c 
 3433: (例えば,@code{const}を再定義する場合)宣言の不一致を防ぐために,パッケー
 3434: ジでは,あらゆる他のヘッダの前で,コンフィグレーションヘッダファイルを 
 3435: @samp{#include}すべきです.@samp{#include "config.h"}の代わりに 
 3436: @samp{#include <config.h>}を使用し,Cコンパイラに@samp{-I.}オプション(ま
 3437: たは@samp{-I..}.@file{config.h}がある方)を渡してください.そうすること
 3438: で,(おそらく配布物を作成するときに)ソースディレクトリがコンフィグレーショ
 3439: ンされても,他のビルドディレクトリは,ソースディレクトリから 
 3440: @file{config.h}を探すことなく,コンフィグレーション可能になります.
 3441: 
 3442: @defmac AC_CONFIG_HEADERS (@var{header} @dots{}, @r{[}@var{cmds}@r{]}, @r{[}@var{init-cmds}@r{]})
 3443: @maindex CONFIG_HEADERS
 3444: @cvindex HAVE_CONFIG_H
 3445: @c This macro is one of the instantiating macros, see @ref{Configuration
 3446: @c Actions}.  Make @code{AC_OUTPUT} create the file(s) in the
 3447: @c whitespace-separated list @var{header} containing C preprocessor
 3448: @c @code{#define} statements, and replace @samp{@@DEFS@@} in generated
 3449: @c files with @option{-DHAVE_CONFIG_H} instead of the value of @code{DEFS}.
 3450: @c The usual name for @var{header} is @file{config.h}.
 3451: @c 
 3452: このマクロは,実際にファイルを作成するマクロの一つです.
 3453: @ref{Configuration Actions}を参照してください.@code{AC_OUTPUT}が,
 3454: @code{#define}宣言のCプリプロセッサを含んでいる@var{header}の空白で区切
 3455: られたリストを作成し,生成されたファイルの@samp{@@DEFS@@}を,@code{DEFS} 
 3456: の値の代わりに,@option{-DHAVE_CONFIG_H}で置換します.通常,@var{header} 
 3457: の名前は @file{config.h}です.
 3458: 
 3459: @c If @var{header} already exists and its contents are identical to what
 3460: @c @code{AC_OUTPUT} would put in it, it is left alone.  Doing this allows
 3461: @c some changes in configuration without needlessly causing object files
 3462: @c that depend on the header file to be recompiled.
 3463: @c 
 3464: @var{header}がすでに存在し,内容が@code{AC_OUTPUT}が書き込むものと同じ場
 3465: 合は,そのまま残ります.こうすることで,ヘッダファイルに依存するオブジェ
 3466: クトファイルを不必要に再コンパイルする必要がなく,コンフィグレーション時
 3467: に変更が可能になります.
 3468: 
 3469: @c Usually the input file is named @file{@var{header}.in}; however, you can
 3470: @c override the input file name by appending to @var{header}, a
 3471: @c colon-separated list of input files.  Examples:
 3472: @c 
 3473: 通常,入力ファイルは@file{@var{header}.in}と命名されます.しかし,入力ファ
 3474: イルをコロンで分けた入力ファイルのリストを@var{header}を加えることで優先可能です.例えば,以下のようにします.
 3475: 
 3476: @example
 3477: AC_CONFIG_HEADERS(config.h:config.hin)
 3478: AC_CONFIG_HEADERS(defines.h:defs.pre:defines.h.in:defs.post)
 3479: @end example
 3480: 
 3481: @noindent
 3482: @c Doing this allows you to keep your file names acceptable to MS-DOS, or
 3483: @c to prepend and/or append boilerplate to the file.
 3484: @c 
 3485: こうすることで,MS-DOSでアクセスできるままにしたり,常套句をファイルに前
 3486: 置すること,そして/または,後置することが可能になります.
 3487: @end defmac
 3488: 
 3489: @c @xref{Configuration Actions}, for more details on @var{header}.
 3490: @c 
 3491: @var{header}の詳細は,@xref{Configuration Actions}.
 3492: 
 3493: @menu
 3494: * Header Templates::            Input for the configuration headers
 3495: * autoheader Invocation::       How to create configuration templates
 3496: * Autoheader Macros::           How to specify CPP templates
 3497: @end menu
 3498: 
 3499: @node Header Templates, autoheader Invocation, Configuration Headers, Configuration Headers
 3500: @subsection ヘッダテンプレートのコンフィグレーション
 3501: @cindex Configuration Header Template
 3502: @cindex @file{config.h.in}
 3503: 
 3504: @c Your distribution should contain a template file that looks as you want
 3505: @c the final header file to look, including comments, with @code{#undef}
 3506: @c statements which are used as hooks.  For example, suppose your
 3507: @c @file{configure.ac} makes these calls:
 3508: @c 
 3509: 最終的なヘッダファイルが見つかるように,コメントとフックとして使用される
 3510: @code{#undef}宣言を含んでいるテンプレートファイルを,配布物に含めるべき
 3511: です.例えば,@file{configure.ac}で以下のように呼び出します.
 3512: 
 3513: @example
 3514: AC_CONFIG_HEADERS(conf.h)
 3515: AC_CHECK_HEADERS(unistd.h)
 3516: @end example
 3517: 
 3518: @noindent
 3519: @c Then you could have code like the following in @file{conf.h.in}.  On
 3520: @c systems that have @file{unistd.h}, @code{configure} will @samp{#define}
 3521: @c @samp{HAVE_UNISTD_H} to 1.  On other systems, the whole line will be
 3522: @c commented out (in case the system predefines that symbol).
 3523: @c 
 3524: @file{conf.h.in}で次のようなコードを書きます.@file{unistd.h}があるシス
 3525: テムでは,@code{configure}は@samp{#define} @samp{HAVE_UNISTD_H}を1にしま
 3526: す.それ以外のシステムでは,行全体がコメントアウトされます(このシステム
 3527: の場合,シンボルは前もって定義されません).
 3528: 
 3529: @example
 3530: @group
 3531: /* Define as 1 if you have unistd.h.  */
 3532: #undef HAVE_UNISTD_H
 3533: @end group
 3534: @end example
 3535: 
 3536: @c You can then decode the configuration header using the preprocessor
 3537: @c directives:
 3538: @c 
 3539: その後で,プリプロセッサ命令を使用しているコンフィグレーションヘッダをデ
 3540: コードすることが可能です.
 3541: 
 3542: @example
 3543: @group
 3544: #include <conf.h>
 3545: 
 3546: #if HAVE_UNISTD_H
 3547: # include <unistd.h>
 3548: #else
 3549: /* We are in trouble. */
 3550: #endif
 3551: @end group
 3552: @end example
 3553: 
 3554: @c The use of old form templates, with @samp{#define} instead of
 3555: @c @samp{#undef} is strongly discouraged.
 3556: @c 
 3557: @samp{#undef}の代わりに@samp{#define}を用いている,古い形式のテンプレー
 3558: トの使用は,強く反対します.
 3559: 
 3560: @c Since it is a tedious task to keep a template header up to date, you may
 3561: @c use @code{autoheader} to generate it, see @ref{autoheader Invocation}.
 3562: @c 
 3563: テンプレートヘッダを更新し続けることは退屈な作業なので,それを生成するた
 3564: めに@code{autoheader}してもかまいません.@ref{autoheader Invocation}を参
 3565: 照してください.
 3566: 
 3567: 
 3568: @node autoheader Invocation, Autoheader Macros, Header Templates, Configuration Headers
 3569: @subsection @file{config.h.in}を生成するため@code{autoheader}を使用する
 3570: @cindex @code{autoheader}
 3571: 
 3572: @c The @command{autoheader} program can create a template file of C
 3573: @c @samp{#define} statements for @code{configure} to use.  If
 3574: @c @file{configure.ac} invokes @code{AC_CONFIG_HEADERS(@var{file})},
 3575: @c @command{autoheader} creates @file{@var{file}.in}; if multiple file
 3576: @c arguments are given, the first one is used.  Otherwise,
 3577: @c @command{autoheader} creates @file{config.h.in}.
 3578: @c 
 3579: @code{autoheader}プログラムは,@code{configure}が使用するためのCの
 3580: @samp{#define}宣言のテンプレートファイルを作成可能です.
 3581: @file{configure.ac}で@code{AC_CONFIG_HEADERS(@var{file})}を呼び出す場合,
 3582: @code{autoheader}は@file{@var{file}.in}を作成します.複数のファイルが引
 3583: 数で与えられている場合,最初のファイルを使用します.それ以外の場合,
 3584: @code{autoheader}は@file{config.h.in}を作成します.
 3585: 
 3586: @c In order to do its job, @command{autoheader} needs you to document all
 3587: @c of the symbols that you might use; i.e., there must be at least one
 3588: @c @code{AC_DEFINE} or one @code{AC_DEFINE_UNQUOTED} using its third
 3589: @c argument for each symbol (@pxref{Defining Symbols}).  An additional
 3590: @c constraint is that the first argument of @code{AC_DEFINE} must be a
 3591: @c literal.  Note that all symbols defined by Autoconf's built-in tests are
 3592: @c already documented properly; you only need to document those that you
 3593: @c define yourself.
 3594: @c 
 3595: この作業を行なうために,使用する可能性がある全てのシンボルを記述すること
 3596: を@command{autoheader}は必要とします.すなわち,少なくとも,一つの
 3597: @code{AC_DEFINE}か@code{AC_DEFINE_UNQUOTED}が,3番目の引数を使用している
 3598: 必要があります(@pxref{Defining Symbols}).更に,@code{AC_DEFINE}の最初に
 3599: 引数をリテラルにする必要があるという制約があります.Autoconfの組み込みテ
 3600: ストで定義されている全てのシンボルは,既に適切に記述されているということ
 3601: に注意してください.独自に定義したものだけ記述する必要があります.
 3602: 
 3603: @c You might wonder why @command{autoheader} is needed: after all, why
 3604: @c would @command{configure} need to ``patch'' a @file{config.h.in} to
 3605: @c produce a @file{config.h} instead of just creating @file{config.h} from
 3606: @c scratch?  Well, when everything rocks, the answer is just that we are
 3607: @c wasting our time maintaining @command{autoheader}: generating
 3608: @c @file{config.h} directly is all that is needed.  When things go wrong,
 3609: @c however, you'll be thankful for the existence of @command{autoheader}.
 3610: @c 
 3611: @command{autoheader}がなぜ必要か不思議に思うかもしれません.結局,なぜ
 3612: @command{configure}は,スクラッチから@file{config.h}を作成する代わりに,
 3613: @file{config.h}を生成するために@file{config.h.in}への``patch''を必要とす
 3614: るのでしょうか?さて,全てが淘汰された時,@command{autoheader}を管理して
 3615: いる時間を無駄にしているというのが答えです.直接@file{config.h}を生成す
 3616: ることが,必要なことの全てです.しかし,うまくいかない時,
 3617: @command{autoheader}の存在に感謝することになるでしょう.
 3618: 
 3619: @c The fact that the symbols are documented is important in order to
 3620: @c @emph{check} that @file{config.h} makes sense.  The fact that there is a
 3621: @c well defined list of symbols that should be @code{#define}'d (or not) is
 3622: @c also important for people who are porting packages to environments where
 3623: @c @command{configure} cannot be run: they just have to @emph{fill in the
 3624: @c blanks}.
 3625: @c 
 3626: シンボルが記述されているという事実は,@file{config.h}に意味があることを
 3627: @emph{調査する}ために重要です.@code{#define}される(またはされない)シン
 3628: ボルがうまく定義されているリストがあるという事実もまた,
 3629: @command{configure}が実行不可能な環境にパッケージを移植している人には重
 3630: 要です.彼らは,@emph{空白で埋め尽くす}必要がしかありません.
 3631: 
 3632: @c But let's come back to the point: @command{autoheader}'s invocation@dots{}
 3633: @c 
 3634: では,要点に戻りましょう.@command{autoheader}の呼び出し@dots{}
 3635: 
 3636: @c If you give @command{autoheader} an argument, it uses that file instead
 3637: @c of @file{configure.ac} and writes the header file to the standard output
 3638: @c instead of to @file{config.h.in}.  If you give @command{autoheader} an
 3639: @c argument of @option{-}, it reads the standard input instead of
 3640: @c @file{configure.ac} and writes the header file to the standard output.
 3641: @c 
 3642: 引数を@code{autoheader}に与えた場合,@file{configure.ac}の代わりにそのファ
 3643: イルを使用し,@file{config.h.in}の代わりに標準出力にヘッダファイルを書き
 3644: 出します.@samp{-}引数を@code{autoheader}に与えた場合,
 3645: @file{configure.ac}の代わりに標準入力から読み込み,標準出力にヘッダファ
 3646: イルを書き出します.
 3647: 
 3648: @c @code{autoheader} accepts the following options:
 3649: @c 
 3650: @code{autoheader}は以下のオプションを受け入れます.
 3651: 
 3652: @table @option
 3653: @item --help
 3654: @itemx -h
 3655: @c Print a summary of the command line options and exit.
 3656: @c 
 3657: コマンドラインオプションの概要を出力して終了します.
 3658: 
 3659: @item --version
 3660: @itemx -V
 3661: @c Print the version number of Autoconf and exit.
 3662: @c 
 3663: Autoconfのバージョンナンバーを出力して終了します.
 3664: 
 3665: @item --debug
 3666: @itemx -d
 3667: @c Don't remove the temporary files.
 3668: @c 
 3669: 一時的なファイルを削除しません.
 3670: 
 3671: @item --verbose
 3672: @itemx -v
 3673: @c Report processing steps.
 3674: @c 
 3675: 処理しているステップを報告します.
 3676: 
 3677: @item --autoconf-dir=@var{dir}
 3678: @itemx -A @var{dir}
 3679: @evindex AC_MACRODIR
 3680: @c Override the location where the installed Autoconf data files are looked
 3681: @c for.  You can also set the @code{AC_MACRODIR} environment variable to a
 3682: @c directory; this option overrides the environment variable.
 3683: @c 
 3684: インストールされているマクロと@file{acconfig.h}を,ディレクトリ 
 3685: @var{dir}で探します.@code{AC_MACRODIR}環境変数でディレクトリを設定する
 3686: こともできます.これは環境変数に優先します.
 3687: 
 3688: @c This option is rarely needed and dangerous; it is only used when one
 3689: @c plays with different versions of Autoconf simultaneously.
 3690: @c 
 3691: このオプションが必要なことは滅多になく危険なものです.一人の人が,異なる
 3692: バージョンのAutoconfを同時に使用している時のみ使用されます.
 3693: 
 3694: @item --localdir=@var{dir}
 3695: @itemx -l @var{dir}
 3696: @c Look for the package files @file{aclocal.m4} and @file{acconfig.h} (but
 3697: @c not @file{@var{file}.top} and @file{@var{file}.bot}) in directory
 3698: @c @var{dir} instead of in the current directory.
 3699: @c 
 3700: (@file{@var{file}.top}と@file{@var{file}.bot}以外の)パッケージファイル
 3701: @file{aclocal.m4}と@file{acconfig.h}を,カレントディレクトリの代わりにディ
 3702: レクトリ@var{dir}で探します.
 3703: 
 3704: @item --warnings=@var{category}
 3705: @itemx -W @var{category}
 3706: @evindex WARNINGS
 3707: @c Report the warnings related to @var{category} (which can actually be a
 3708: @c comma separated list). Current categories include:
 3709: @c 
 3710: @var{category}(実際にはカンマで分けられたリスト)に関連する警告を報告しま
 3711: す.現在のカテゴリには,以下のものが含まれています.
 3712: 
 3713: @table @samp
 3714: @item obsolete
 3715: @c report the uses of obsolete constructs
 3716: @c 
 3717: 時代遅れの構成物の使用を報告します.
 3718: 
 3719: @item all
 3720: @c report all the warnings
 3721: @c 
 3722: 全ての警告を報告します.
 3723: 
 3724: @item none
 3725: @c report none
 3726: @c 
 3727: 何も報告しません.
 3728: 
 3729: @item error
 3730: @c treats warnings as errors
 3731: @c 
 3732: 警告をエラーとして扱います.
 3733: 
 3734: @item no-@var{category}
 3735: @c disable warnings falling into @var{category}
 3736: @c 
 3737: @var{category}に分類されている警告を利用不可能にします.
 3738: @end table
 3739: 
 3740: @end table
 3741: 
 3742: 
 3743: @node Autoheader Macros,  , autoheader Invocation, Configuration Headers
 3744: @subsection autoheaderのマクロ
 3745: 
 3746: @c @code{autoheader} scans @file{configure.ac} and figures out which C
 3747: @c preprocessor symbols it might define.  It knows how to generate
 3748: @c templates for symbols defined by @code{AC_CHECK_HEADERS},
 3749: @c @code{AC_CHECK_FUNCS} etc., but if you @code{AC_DEFINE} any additional
 3750: @c symbol, you must define a template for it.  If there are missing
 3751: @c templates, @code{autoheader} fails with an error message.
 3752: @c 
 3753: @code{autoheader}は@file{configure.ac}を調査し,定義されているCプリプロ
 3754: セッサシンボルを判定します.それは,@code{AC_CHECK_HEADERS}や
 3755: @code{AC_CHECK_FUNCS}等が定義しているシンボルに対するテンプレートを生成
 3756: する方法は知っていますが,あらゆる追加のシンボルを@code{AC_DEFINE}してい
 3757: る場合,それに対するテンプレートを定義する必要があります.テンプレートが
 3758: 無い場合,@code{autoheader}はエラーメッセージとともに失敗します.
 3759: 
 3760: @c The simplest way to create a template for a @var{symbol} is to supply
 3761: @c the @var{description} argument to an @samp{AC_DEFINE(@var{symbol})}; see
 3762: @c @ref{Defining Symbols}.  You may also use one of the following macros.
 3763: @c 
 3764: @var{symbol}に対するテンプレートを作成する最も簡単な方法は,
 3765: @samp{AC_DEFINE(@var{symbol})}の引数に@var{description}を与えることです.
 3766: @ref{Defining Symbols}を参照してください.以下のマクロの一つを使用するこ
 3767: とも可能です.
 3768: 
 3769: @defmac AH_VERBATIM (@var{key}, @var{template})
 3770: @maindex AH_VERBATIM
 3771: @maindex VERBATIM
 3772: @c Tell @code{autoheader} to include the @var{template} as-is in the header
 3773: @c template file.  This @var{template} is associated with the @var{key},
 3774: @c which is used to sort all the different templates and guarantee their
 3775: @c uniqueness.  It should be the symbol that can be @code{AC_DEFINE}'d.
 3776: @c 
 3777: @code{autoheader}に,@var{template}をそのままヘッダテンプレートファイル
 3778: に含めるよう伝えます.この@var{template}は@var{key}に関連付けされていて,
 3779: それは全てのことなるテンプレートを並べ替えし,それらのユニーク性を保証す
 3780: るために使用されます.それは,@code{AC_DEFINE}されることが可能なシンボル
 3781: です.
 3782: 
 3783: @c For example:
 3784: @c 
 3785: 例えば以下のようにします.
 3786: 
 3787: @example
 3788: AH_VERBATIM([_GNU_SOURCE],
 3789: [/* Enable GNU extensions on systems that have them.  */
 3790: #ifndef _GNU_SOURCE
 3791: # define _GNU_SOURCE
 3792: #endif])
 3793: @end example
 3794: @end defmac
 3795: 
 3796: @defmac AH_TEMPLATE (@var{key}, @var{description})
 3797: @maindex AH_TEMPLATE
 3798: @maindex TEMPLATE
 3799: @c Tell @code{autoheader} to generate a template for @var{key}.  This macro
 3800: @c generates standard templates just like @code{AC_DEFINE} when a
 3801: @c @var{description} is given.
 3802: @c 
 3803: @code{autoheader}に,@var{key}に対するテンプレートを生成するように伝えま
 3804: す.このマクロは,@var{description}が与えられた時の@code{AC_DEFINE}のよ
 3805: うな,標準的なテンプレートを生成します.
 3806: 
 3807: @c For example:
 3808: @c 
 3809: 例えば,以下のようにします.
 3810: 
 3811: @example
 3812: AH_TEMPLATE([CRAY_STACKSEG_END],
 3813:             [Define to one of _getb67, GETB67, getb67
 3814:              for Cray-2 and Cray-YMP systems.  This
 3815:              function is required for alloca.c support
 3816:              on those systems.])
 3817: @end example
 3818: 
 3819: @noindent
 3820: @c will generate the following template, with the description properly
 3821: @c justified.
 3822: @c 
 3823: これは,適切に正当化された記述を用いて,以下のテンプレートを生成します.
 3824: 
 3825: @example
 3826: /* Define to one of _getb67, GETB67, getb67 for Cray-2 and
 3827:    Cray-YMP systems. This function is required for alloca.c
 3828:    support on those systems. */
 3829: #undef CRAY_STACKSEG_END
 3830: @end example
 3831: @end defmac
 3832: 
 3833: @defmac AH_TOP (@var{text})
 3834: @maindex AH_TOP
 3835: @maindex TOP
 3836: @c Include @var{text} at the top of the header template file.
 3837: @c 
 3838: @var{text}をヘッダテンプレートファイルの最初に含めます.
 3839: @end defmac
 3840: 
 3841: @defmac AH_BOTTOM (@var{text})
 3842: @maindex AH_BOTTOM
 3843: @maindex BOTTOM
 3844: @c Include @var{text} at the bottom of the header template file.
 3845: @c 
 3846: @var{text}をヘッダテンプレートファイルの最後に含めます.
 3847: @end defmac
 3848: 
 3849: 
 3850: @node Configuration Commands, Configuration Links, Configuration Headers, Setup
 3851: @section 任意のコンフィグレーションコマンドの実行
 3852: 
 3853: @c You execute arbitrary commands either before, during and after
 3854: @c @file{config.status} is run.  The three following macros accumulate the
 3855: @c commands to run when they are called multiple times.
 3856: @c @code{AC_CONFIG_COMMANDS} replaces the obsolete macro
 3857: @c @code{AC_OUTPUT_COMMANDS}, see @ref{Obsolete Macros}, for details.
 3858: @c 
 3859: @file{config.status}の実行前,実行中,そして実行後のいずれかに任意のコマ
 3860: ンドを実行可能です.以下の3つのマクロは,複数かい呼び出された時,実行す
 3861: るコマンドを累積していきます.@code{AC_CONFIG_COMMANDS}は時代遅れのマク
 3862: ロ@code{AC_OUTPUT_COMMANDS}の置換物です.詳細は,@ref{Obsolete Macros}を
 3863: 参照してください.
 3864: 
 3865: @defmac AC_CONFIG_COMMANDS (@var{tag}@dots{}, @r{[}@var{cmds}@r{]}, @r{[}@var{init-cmds}@r{]})
 3866: @maindex CONFIG_COMMANDS
 3867: @c Specify additional shell commands to run at the end of
 3868: @c @file{config.status}, and shell commands to initialize any variables
 3869: @c from @code{configure}.  Associate the commands to the @var{tag}.  Since
 3870: @c typically the @var{cmds} create a file, @var{tag} should naturally be
 3871: @c the name of that file.  This macro is one of the instantiating macros,
 3872: @c see @ref{Configuration Actions}.
 3873: @c 
 3874: @file{config.status}の終りに実行するシェルコマンドと,@code{configure}か
 3875: らのあらゆる変数を初期化するためのシェルコマンドをを追加します.通常,
 3876: @var{cmds}はファイルを作成するので,@var{tag}は自ずからファイル名にすべ
 3877: きでしょう.このマクロは,実際にファイルを作成するマクロです.
 3878: @ref{Configuration Actions}を参照してください.
 3879: 
 3880: @c Here is an unrealistic example:
 3881: @c 
 3882: 非現実的な例ですが,以下のようにします.
 3883: @example
 3884: fubar=42
 3885: AC_CONFIG_COMMANDS(fubar,
 3886:                    [echo this is extra $fubar, and so on.],
 3887:                    [fubar=$fubar])
 3888: @end example
 3889: 
 3890: @c Here is a better one:
 3891: @c 
 3892: 以下はましなものです.
 3893: @example
 3894: AC_CONFIG_COMMANDS(time-stamp, [date >time-stamp])
 3895: @end example
 3896: @end defmac
 3897: 
 3898: @defmac AC_CONFIG_COMMANDS_PRE (@var{cmds})
 3899: @maindex OUTPUT_COMMANDS_PRE
 3900: @c Execute the @var{cmds} right before creating @file{config.status}.  A
 3901: @c typical use is computing values derived from variables built during the
 3902: @c execution of @code{configure}:
 3903: @c 
 3904: @file{config.status}を作成する直前に@var{cmds}を実行します.典型的な使用
 3905: 方法は,@code{configure}の実行時にビルドされる変数から,導き出される値を
 3906: 計算することです.
 3907: 
 3908: @example
 3909: AC_CONFIG_COMMANDS_PRE(
 3910: [LTLIBOBJS=`echo $LIBOBJS | sed 's/\.o/\.lo/g'`
 3911: AC_SUBST(LTLIBOBJS)])
 3912: @end example
 3913: @end defmac
 3914: 
 3915: @defmac AC_CONFIG_COMMANDS_POST (@var{cmds})
 3916: @maindex OUTPUT_COMMANDS_POST
 3917: @c Execute the @var{cmds} right after creating @file{config.status}.
 3918: @c 
 3919: @file{config.status}の作成直後に@var{cmds}を実行します.
 3920: @end defmac
 3921: 
 3922: 
 3923: @node Configuration Links, Subdirectories, Configuration Commands, Setup
 3924: @section コンフィグレーションのリンクを作成する
 3925: 
 3926: @c You may find it convenient to create links whose destinations depend upon
 3927: @c results of tests.  One can use @code{AC_CONFIG_COMMANDS} but the
 3928: @c creation of relative symbolic links can be delicate when the package is
 3929: @c built in another directory than its sources.
 3930: @c 
 3931: テストの結果によって,対象物へのリンクを作成することが便利だと分かるでしょ
 3932: う.@code{AC_CONFIG_COMMANDS}を使用することも可能ですが,相対的なシンボ
 3933: リックリンクを作成することは,パッケージがソース以外の他のディレクトリで
 3934: ビルドされる時に決定可能です.
 3935: 
 3936: @defmac AC_CONFIG_LINKS (@var{dest}:@var{source}@dots{}, @r{[}@var{cmds}@r{]}, @r{[}@var{init-cmds}@r{]})
 3937: @maindex CONFIG_LINKS
 3938: @cindex Links
 3939: @c Make @code{AC_OUTPUT} link each of the existing files @var{source} to
 3940: @c the corresponding link name @var{dest}.  Makes a symbolic link if
 3941: @c possible, otherwise a hard link.  The @var{dest} and @var{source} names
 3942: @c should be relative to the top level source or build directory.  This
 3943: @c macro is one of the instantiating macros, see @ref{Configuration
 3944: @c Actions}.
 3945: @c 
 3946: @code{AC_OUTPUT}で,それぞれの既存のファイル@var{source}から対応するリン
 3947: ク名@var{dest}にリンクを作成します.可能な場合はシンボリックリンクを作成
 3948: し,それ以外ではハードリンクを作成します.@var{dest}と@var{source}の名前
 3949: は,ソースやビルドディレクトリのトップレベルからの相対的なものにすべきで
 3950: す.このマクロは,実際にファイルを作成するマクロの一つです.
 3951: @ref{Configuration Actions}を参照してください.
 3952: 
 3953: @c For example, this call:
 3954: @c 
 3955: 例えば,以下のように呼び出します.
 3956: 
 3957: @example
 3958: AC_CONFIG_LINKS(host.h:config/$machine.h
 3959:                 object.h:config/$obj_format.h)
 3960: @end example
 3961: 
 3962: @noindent
 3963: @c creates in the current directory @file{host.h} as a link to
 3964: @c @file{@var{srcdir}/config/$machine.h}, and @file{object.h} as a
 3965: @c link to @file{@var{srcdir}/config/$obj_format.h}.
 3966: @c 
 3967: これで,現在のディレクトリに@file{@var{srcdir}/config/$machine.h}へのリ
 3968: ンク@file{host.h}と,@file{@var{srcdir}/config/$obj_format.h}へのリンク
 3969: @file{object.h}を作成します.
 3970: 
 3971: @c The tempting value @samp{.} for @var{dest} is invalid: it makes it
 3972: @c impossible for @samp{config.status} to guess the links to establish.
 3973: @c 
 3974: @var{dest}に対して使用したい値@samp{.}は有効ではありません.そうすると,
 3975: @samp{config.status}で作成するリンクを推定することが不可能になります.
 3976: 
 3977: @c One can then run:
 3978: @c 
 3979: 以下のように実行可能です.
 3980: @example
 3981: ./config.status host.h object.h
 3982: @end example
 3983: @noindent
 3984: @c to create the links.
 3985: @c 
 3986: これでリンクを作成します.
 3987: @end defmac
 3988: 
 3989: 
 3990: @node Subdirectories, Default Prefix, Configuration Links, Setup
 3991: @section サブディレクトリで他のパッケージをコンフィグレーションする
 3992: 
 3993: @c In most situations, calling @code{AC_OUTPUT} is sufficient to produce
 3994: @c @file{Makefile}s in subdirectories.  However, @code{configure} scripts
 3995: @c that control more than one independent package can use
 3996: @c @code{AC_CONFIG_SUBDIRS} to run @code{configure} scripts for other
 3997: @c packages in subdirectories.
 3998: @c 
 3999: ほとんどの場合,@code{AC_OUTPUT}を呼び出しで,サブディレクトリの 
 4000: @file{Makefile}を十分作成可能です.しかし,一つ以上の独立したパッケージ
 4001: を制御する@code{configure}スクリプトで,サブディレクトリの他のパッケージ
 4002: の@code{configure}スクリプトを実行するために@code{AC_CONFIG_SUBDIRS}を使
 4003: 用することが可能です.
 4004: 
 4005: @defmac AC_CONFIG_SUBDIRS (@var{dir} @dots{})
 4006: @maindex CONFIG_SUBDIRS
 4007: @ovindex subdirs
 4008: @c Make @code{AC_OUTPUT} run @code{configure} in each subdirectory
 4009: @c @var{dir} in the given whitespace-separated list.  Each @var{dir} should
 4010: @c be a literal, i.e., please do not use:
 4011: @c 
 4012: 空白で区切られたリストで与えられるそれぞれのサブディレクトリ@var{dir}で,
 4013: @code{AC_OUTPUT}に@code{configure}を実行させます.それぞれの@var{dir}は,
 4014: リテラルにすべきです.すなわち,以下のように使用しないでください.
 4015: 
 4016: @example
 4017: if test "$package_foo_enabled" = yes; then
 4018:   $my_subdirs="$my_subdirs foo"
 4019: fi
 4020: AC_CONFIG_SUBDIRS($my_subdirs)
 4021: @end example
 4022: 
 4023: @noindent
 4024: @c because this prevents @samp{./configure --help=recursive} from
 4025: @c displaying the options of the package @code{foo}.  Rather, you should
 4026: @c write:
 4027: @c 
 4028: これは@samp{./configure --help=recursive}でのパッケージ@code{foo}のオプ
 4029: ション表示を妨げるためです.その代わりに以下のように書くべきです.
 4030: 
 4031: @example
 4032: if test "$package_foo_enabled" = yes then;
 4033:   AC_CONFIG_SUBDIRS(foo)
 4034: fi
 4035: @end example
 4036: 
 4037: @c If a given @var{dir} is not found, no error is reported, so a
 4038: @c @code{configure} script can configure whichever parts of a large source
 4039: @c tree are present.  If a given @var{dir} contains @code{configure.gnu},
 4040: @c it is run instead of @code{configure}. This is for packages that might
 4041: @c use a non-autoconf script @code{Configure}, which can't be called
 4042: @c through a wrapper @code{configure} since it would be the same file on
 4043: @c case-insensitive filesystems. Likewise, if a @var{dir} contains
 4044: @c @file{configure.ac} but no @code{configure}, the Cygnus @code{configure}
 4045: @c script found by @code{AC_CONFIG_AUX_DIR} is used.
 4046: @c 
 4047: 与えられた@var{dir}が見つからない場合でもエラーを報告しないので,
 4048: @code{configure}スクリプトは,大きなソースツリーの一部が存在すればコンフィ
 4049: グレーション可能です.与えられた@var{dir}に@file{configure.gnu}がある場
 4050: 合,@code{configure}の代わりにそれを実行します.これは,Autoconfスクリプ
 4051: トではない@code{Configure}を使用しているパッケージのためのもので,大文字
 4052: 小文字を識別しないファイルシステムでは同じファイルになるので,それを
 4053: @code{configure}のラッパーとして呼び出すことは不可能です.同様に,
 4054: @var{dir}が@file{configure.ac}を含んでいて@code{configure}が無い場合,
 4055: @code{AC_CONFIG_AUXDIR}で見つかるCygnus @code{configure}スクリプトが使用
 4056: されます.
 4057: 
 4058: @c The subdirectory @code{configure} scripts are given the same command
 4059: @c line options that were given to this @code{configure} script, with minor
 4060: @c changes if needed (e.g., to adjust a relative path for the cache file or
 4061: @c source directory).  This macro also sets the output variable
 4062: @c @code{subdirs} to the list of directories @samp{@var{dir} @dots{}}.
 4063: @c @file{Makefile} rules can use this variable to determine which
 4064: @c subdirectories to recurse into.  This macro may be called multiple
 4065: @c times.
 4066: @c 
 4067: サブディレクトリの@code{configure}スクリプトには,この@code{configure}ス
 4068: クリプトに与えられたものと同じ,コマンドラインオプションが渡され,必要な
 4069: ら(例えば,キャッシュファイルやソースディレクトリへの相対的なパスを調整
 4070: するために)少し変更されます.このマクロは,出力変数@code{subdirs}も,ディ
 4071: レクトリのリスト@samp{@var{dir}@dots{}}に設定します.@file{Makefile}の規
 4072: 則は,この値をサブディレクトリの定義に再帰的に使用することが可能です.こ
 4073: のマクロは何度でも呼び出し可能です.
 4074: @end defmac
 4075: 
 4076: 
 4077: @node Default Prefix,  , Subdirectories, Setup
 4078: @section デフォルトプレフィクス
 4079: 
 4080: @c By default, @code{configure} sets the prefix for files it installs to
 4081: @c @file{/usr/local}.  The user of @code{configure} can select a different
 4082: @c prefix using the @option{--prefix} and @option{--exec-prefix} options.
 4083: @c There are two ways to change the default: when creating
 4084: @c @code{configure}, and when running it.
 4085: @c 
 4086: @code{configure}はデフォルトで,ファイルをインストールするプレフィクスを,
 4087: @file{/usr/local}に設定します.@code{configure}のユーザは,異なるディレ
 4088: クトリを,@samp{--prefix}と@samp{--exec-prefix}オプションで,選択するこ
 4089: とが可能です.デフォルトを変更する方法は2つあります.@code{configure} を
 4090: 作成するときと,実行するときです.
 4091: 
 4092: @c Some software packages might want to install in a directory besides
 4093: @c @file{/usr/local} by default.  To accomplish that, use the
 4094: @c @code{AC_PREFIX_DEFAULT} macro.
 4095: @c 
 4096: デフォルトで,@file{/usr/local}以外のディレクトリにインストールしたい,
 4097: ソフトウェアパッケージもあります.そうするために, 
 4098: @code{AC_PREFIX_DEFAULT}マクロを使用してください.
 4099: 
 4100: @defmac AC_PREFIX_DEFAULT (@var{prefix})
 4101: @maindex PREFIX_DEFAULT
 4102: @c Set the default installation prefix to @var{prefix} instead of
 4103: @c @file{/usr/local}.
 4104: @c 
 4105: デフォルトのインストールプレフィクスを,@file{/usr/local}の代わりに 
 4106: @var{prefix}に設定します.
 4107: @end defmac
 4108: 
 4109: @c It may be convenient for users to have @code{configure} guess the
 4110: @c installation prefix from the location of a related program that they
 4111: @c have already installed.  If you wish to do that, you can call
 4112: @c @code{AC_PREFIX_PROGRAM}.
 4113: @c 
 4114: ユーザが既にインストールしている関連するプログラムの場所から, 
 4115: @code{configure}がインストールプレフィクスを推測すると便利かもしれません.
 4116: そうしたい場合,@code{AC_PREFIX_PROGRAM}を呼び出します.
 4117: 
 4118: @defmac AC_PREFIX_PROGRAM (@var{program})
 4119: @maindex PREFIX_PROGRAM
 4120: @c If the user did not specify an installation prefix (using the
 4121: @c @option{--prefix} option), guess a value for it by looking for
 4122: @c @var{program} in @code{PATH}, the way the shell does.  If @var{program}
 4123: @c is found, set the prefix to the parent of the directory containing
 4124: @c @var{program}; otherwise leave the prefix specified in
 4125: @c @file{Makefile.in} unchanged.  For example, if @var{program} is
 4126: @c @code{gcc} and the @code{PATH} contains @file{/usr/local/gnu/bin/gcc},
 4127: @c set the prefix to @file{/usr/local/gnu}.
 4128: @c 
 4129: ユーザが(@samp{--prefix}オプションを使用して)インストールプレフィクスを
 4130: 指定しない場合,シェルが行うように,@code{PATH}で@var{program}を探し,そ
 4131: の値を推測します.@var{program}が見つかった場合,プレフィクスを
 4132: @var{program}を含むディレクトリの親に設定します.そうでない場合,
 4133: @file{Makefile.in}でのプレフィクスの指定はそのままです.例えば,
 4134: @var{program}が@code{gcc}で,@code{PATH}が@file{/usr/local/gnu/bin/gcc} 
 4135: を含んでいる場合,プレフィクスを @file{/usr/local/gnu}に設定します.
 4136: @end defmac
 4137: 
 4138: 
 4139: @c ======================================================== Existing tests
 4140: 
 4141: @node Existing Tests, Writing Tests, Setup, Top
 4142: @chapter 存在の調査
 4143: 
 4144: @c These macros test for particular system features that packages might
 4145: @c need or want to use.  If you need to test for a kind of feature that
 4146: @c none of these macros check for, you can probably do it by calling
 4147: @c primitive test macros with appropriate arguments (@pxref{Writing
 4148: @c Tests}).
 4149: @c 
 4150: 以下のマクロは,パッケージが必要とする,あるいは使用する,特定のシステム
 4151: の特徴をテストします.これらのマクロが調査しない特徴のテストが必要な場合,
 4152: 適切な引数で基本のテストマクロを呼び出すことで,おそらく可能です
 4153: (@pxref{Writing Tests}).
 4154: 
 4155: @c These tests print messages telling the user which feature they're
 4156: @c checking for, and what they find.  They cache their results for future
 4157: @c @code{configure} runs (@pxref{Caching Results}).
 4158: @c 
 4159: これらのテストは,調査している特徴と,見つかったものをユーザに伝えるメッ
 4160: セージを出力します.将来,@code{configure}を実行するため,結果をキャッシュ
 4161: します(@pxref{Caching Results}).
 4162: 
 4163: @c Some of these macros set output variables.  @xref{Makefile
 4164: @c Substitutions}, for how to get their values.  The phrase ``define
 4165: @c @var{name}'' is used below as a shorthand to mean ``define C
 4166: @c preprocessor symbol @var{name} to the value 1''.  @xref{Defining
 4167: @c Symbols}, for how to get those symbol definitions into your program.
 4168: @c 
 4169: これらのマクロには,出力変数を設定するものもあります.変数の取得方法は, 
 4170: @xref{Makefile Substitutions}. ``@var{name}の定義'' という文章は,``Cプ
 4171: リプロセッサのシンボル@var{name}の値を1に定義する'' という意味を短縮した
 4172: のもとして,以下で使用します.プログラムでシンボル定義を得る方法は, 
 4173: @xref{Defining Symbols}.
 4174: 
 4175: @menu
 4176: * Common Behavior::             Macros' standard schemes
 4177: * Alternative Programs::        Selecting between alternative programs
 4178: * Files::                       Checking for the existence of files
 4179: * Libraries::                   Library archives that might be missing
 4180: * Library Functions::           C library functions that might be missing
 4181: * Header Files::                Header files that might be missing
 4182: * Declarations::                Declarations that may be missing
 4183: * Structures::                  Structures or members that might be missing
 4184: * Types::                       Types that might be missing
 4185: * Compilers and Preprocessors::  Checking for compiling programs
 4186: * System Services::             Operating system services
 4187: * UNIX Variants::               Special kludges for specific UNIX variants
 4188: @end menu
 4189: 
 4190: @node Common Behavior, Alternative Programs, Existing Tests, Existing Tests
 4191: @section 一般的な動作
 4192: 
 4193: @c Much effort has been expended to make Autoconf easy to learn.  The most
 4194: @c obvious way to reach this goal is simply to enforce standard interfaces
 4195: @c and behaviors, avoiding exceptions as much as possible.  Because of
 4196: @c history and inertia, unfortunately, there are still too many exceptions
 4197: @c in Autoconf; nevertheless, this section describes some of the common
 4198: @c rules.
 4199: @c 
 4200: Autoconfの学習が簡単になるように努力してきました.このゴールに到達するた
 4201: めの最も明白な方法は,できるだけ例外を避けながら,単純に標準的なインタ
 4202: フェースと動作を実施することです.残念ながら,歴史と慣性のため,多くの例
 4203: 外がAutoconfにはまだ存在しています.それにもかかわらず,このセクションで
 4204: は,一般的な規則を記述します.
 4205: 
 4206: @menu
 4207: * Standard Symbols::            Symbols defined by the macros
 4208: * Default Includes::            Includes used by the generic macros
 4209: @end menu
 4210: 
 4211: @node Standard Symbols, Default Includes, Common Behavior, Common Behavior
 4212: @subsection 標準的なシンボル
 4213: 
 4214: @c All the generic macros that @code{AC_DEFINE} a symbol as a result of
 4215: @c their test transform their @var{argument}s to a standard alphabet.
 4216: @c First, @var{argument} is converted to upper case and any asterisks
 4217: @c (@samp{*}) are each converted to @samp{P}.  Any remaining characters
 4218: @c that are not alphanumeric are converted to underscores.
 4219: @c 
 4220: テストの結果,シンボルを@code{AC_DEFINE}する全ての一般的なマクロは,その
 4221: 引数を標準的なアルファベットに変換します.最初に,@var{argument}は大文字
 4222: に変換され,あらゆるアスタリスク(@samp{*})は,それぞれ@samp{P}に変換され
 4223: ます.アルファベットではない残りの全ての文字は,アンダースコアに変換され
 4224: ます.
 4225: 
 4226: @c For instance,
 4227: @c 
 4228: 例えば以下のものを考えます.
 4229: 
 4230: @example
 4231: AC_CHECK_TYPES(struct $Expensive*)
 4232: @end example
 4233: 
 4234: @noindent
 4235: @c will define the symbol @samp{HAVE_STRUCT__EXPENSIVEP} if the check succeeds.
 4236: @c 
 4237: これは,調査が成功した場合,シンボル@samp{HAVE_STRUCT__EXPENSIVEP}を定義
 4238: します.
 4239: 
 4240: 
 4241: @node Default Includes,  , Standard Symbols, Common Behavior
 4242: @subsection デフォルトのインクルード
 4243: @cindex Includes, default
 4244: 
 4245: @c Several tests depend upon a set of header files.  Since these headers
 4246: @c are not universally available, tests actually have to provide a set of
 4247: @c protected includes, such as:
 4248: @c 
 4249: ヘッダファイルの設定に依存するテストもあります.これらのヘッダは例外無く
 4250: 利用可能ではないので,テストは,以下のようなインクルードを保護する(コー
 4251: ドの)組を,実際に提供する必要があります.
 4252: 
 4253: @example
 4254: @group
 4255: #if TIME_WITH_SYS_TIME
 4256: # include <sys/time.h>
 4257: # include <time.h>
 4258: #else
 4259: # if HAVE_SYS_TIME_H
 4260: #  include <sys/time.h>
 4261: # else
 4262: #  include <time.h>
 4263: # endif
 4264: #endif
 4265: @end group
 4266: @end example
 4267: 
 4268: @noindent
 4269: @c Unless you know exactly what you are doing, you should avoid using
 4270: @c unconditional includes, and check the existence of the headers you
 4271: @c include beforehand (@pxref{Header Files}).
 4272: @c 
 4273: どうすれば良いか正確に知らない場合,無条件のインクルードの使用は避け,イ
 4274: ンクルードする前にヘッダの存在を調査すべきです(@pxref{Header Files}).
 4275: 
 4276: @c Most generic macros provide the following default set of includes:
 4277: @c 
 4278: 最も一般的なマクロは,以下のようなデフォルトの(コードの)組をインクルード
 4279: します.
 4280: 
 4281: @example
 4282: @group
 4283: #include <stdio.h>
 4284: #if HAVE_SYS_TYPES_H
 4285: # include <sys/types.h>
 4286: #endif
 4287: #if HAVE_SYS_STAT_H
 4288: # include <sys/stat.h>
 4289: #endif
 4290: #if STDC_HEADERS
 4291: # include <stdlib.h>
 4292: # include <stddef.h>
 4293: #else
 4294: # if HAVE_STDLIB_H
 4295: #  include <stdlib.h>
 4296: # endif
 4297: #endif
 4298: #if HAVE_STRING_H
 4299: # if !STDC_HEADERS && HAVE_MEMORY_H
 4300: #  include <memory.h>
 4301: # endif
 4302: # include <string.h>
 4303: #endif
 4304: #if HAVE_STRINGS_H
 4305: # include <strings.h>
 4306: #endif
 4307: #if HAVE_INTTYPES_H
 4308: # include <inttypes.h>
 4309: #else
 4310: # if HAVE_STDINT_H
 4311: #  include <stdint.h>
 4312: # endif
 4313: #endif
 4314: #if HAVE_UNISTD_H
 4315: # include <unistd.h>
 4316: #endif
 4317: @end group
 4318: @end example
 4319: 
 4320: @c If the default includes are used, then Autoconf will automatically check
 4321: @c for the presence of these headers and their compatibility, i.e., you
 4322: @c don't need to run @code{AC_HEADERS_STDC}, nor check for @file{stdlib.h}
 4323: @c etc.
 4324: @c 
 4325: デフォルトのインクルードが使用される場合,Autoconfはこれらのヘッダの存在
 4326: とその互換性を自動的に調査します.すなわち,@code{AC_HEADERS_STDC}を実行
 4327: する必要も,@file{stdlib.h}などを調査する必要もありません.
 4328: 
 4329: @c These headers are checked for in the same order as they are included.
 4330: @c For instance, on some systems @file{string.h} and @file{strings.h} both
 4331: @c exist, but conflict.  Then @code{HAVE_STRING_H} will be defined, but
 4332: @c @code{HAVE_STRINGS_H} won't.
 4333: @c 
 4334: これらのヘッダは,インクルードされる順番と同じ順番で調査されます.例えば,
 4335: @file{string.h}と@file{strings.h}の両方があるシステムもありますが,競合
 4336: しません.そこでは,@code{HAVE_STRING_H}は定義されますが,
 4337: @code{HAVE_STRINGS_H}は定義されません.
 4338: 
 4339: 
 4340: @node Alternative Programs, Files, Common Behavior, Existing Tests
 4341: @section プログラムの選択
 4342: @cindex Programs, checking
 4343: 
 4344: @c These macros check for the presence or behavior of particular programs.
 4345: @c They are used to choose between several alternative programs and to
 4346: @c decide what to do once one has been chosen.  If there is no macro
 4347: @c specifically defined to check for a program you need, and you don't need
 4348: @c to check for any special properties of it, then you can use one of the
 4349: @c general program-check macros.
 4350: @c 
 4351: これらのマクロは,特定のプログラムとその動作を調査します.それらは,いく
 4352: つかのプログラムからどれかを選択し,一旦選ばれると何をするのかを決定する
 4353: ために使用されます.必要なプログラムを調査するために特別に定義されている
 4354: マクロが無い場合,一般的なプログラム調査のマクロの一つを使用することが可
 4355: 能です.
 4356: 
 4357: @menu
 4358: * Particular Programs::         Special handling to find certain programs
 4359: * Generic Programs::            How to find other programs
 4360: @end menu
 4361: 
 4362: @node Particular Programs, Generic Programs, Alternative Programs, Alternative Programs
 4363: @subsection 特定のプログラムの調査
 4364: 
 4365: @c These macros check for particular programs---whether they exist, and
 4366: @c in some cases whether they support certain features.
 4367: @c 
 4368: これらのマクロは,特定のプログラムを調査します --- それは存在するかどう
 4369: か,そして場合によっては特定の機能をサポートするかどうかです.
 4370: 
 4371: @defmac AC_PROG_AWK
 4372: @maindex PROG_AWK
 4373: @ovindex AWK
 4374: @c Check for @code{mawk}, @code{gawk}, @code{nawk}, and @code{awk}, in that
 4375: @c order, and set output variable @code{AWK} to the first one that is found.
 4376: @c It tries @code{mawk} first because that is reported to be the
 4377: @c fastest implementation.
 4378: @c 
 4379: @code{mawk},@code{gawk},@code{nawk},そして@code{awk}を,この順番で調
 4380: 査し,最初に見つかったものに出力変数@code{AWK}を設定します.最速の実装と
 4381: 報告されているので,最初に@code{mawk}を調査します.
 4382: @end defmac
 4383: 
 4384: @defmac AC_PROG_INSTALL
 4385: @maindex PROG_INSTALL
 4386: @ovindex INSTALL
 4387: @ovindex INSTALL_PROGRAM
 4388: @ovindex INSTALL_DATA
 4389: @ovindex INSTALL_SCRIPT
 4390: @c Set output variable @code{INSTALL} to the path of a @sc{bsd} compatible
 4391: @c @code{install} program, if one is found in the current @code{PATH}.
 4392: @c Otherwise, set @code{INSTALL} to @samp{@var{dir}/install-sh -c},
 4393: @c checking the directories specified to @code{AC_CONFIG_AUX_DIR} (or its
 4394: @c default directories) to determine @var{dir} (@pxref{Output}).  Also set
 4395: @c the variables @code{INSTALL_PROGRAM} and @code{INSTALL_SCRIPT} to
 4396: @c @samp{$@{INSTALL@}} and @code{INSTALL_DATA} to @samp{$@{INSTALL@} -m 644}.
 4397: @c 
 4398: 現在の@code{PATH}で@sc{bsd}互換の@code{install}プログラムが見つかった場
 4399: 合,出力変数@code{INSTALL}をそのパスに設定します.それ以外では, 
 4400: @code{INSTALL}を@samp{@var{dir}/install-sh -c}に設定し, 
 4401: @code{AC_CONFIG_AUX_DIR}で指定されたディレクトリ(またはデフォルトディレ
 4402: クトリ)を,@var{dir}を決定するために調査します(@pxref{Output}).また,変
 4403: 数@code{INSTALL_PROGRAM}と@code{INSTALL_SCRIPT}を@samp{$@{INSTALL@}}に,
 4404: @samp{$@{INSTALL@}}と@code{INSTALL_DATA}を@samp{$@{INSTALL@}-m 644}に設
 4405: 定します.
 4406: 
 4407: @c This macro screens out various instances of @code{install} known not to
 4408: @c work.  It prefers to find a C program rather than a shell script, for
 4409: @c speed.  Instead of @file{install-sh}, it can also use @file{install.sh},
 4410: @c but that name is obsolete because some @code{make} programs have a rule
 4411: @c that creates @file{install} from it if there is no @file{Makefile}.
 4412: @c 
 4413: このマクロは,動作しないことが知られている@code{install}の様々な実例をふ
 4414: るい落とします.それは速度のため,シェルスクリプトよりCプログラムを見付
 4415: けようとします.@file{install-sh}の代わりに,@file{install.sh}を使用する
 4416: ことも可能ですが,@code{make}プログラムには, @file{Makefile}が無い場合,
 4417: それから@file{install}を作成する規則を持っているものもあるので,その名前
 4418: は時代遅れです.
 4419: 
 4420: @c Autoconf comes with a copy of @file{install-sh} that you can use.  If
 4421: @c you use @code{AC_PROG_INSTALL}, you must include either
 4422: @c @file{install-sh} or @file{install.sh} in your distribution, or
 4423: @c @code{configure} will produce an error message saying it can't find
 4424: @c them---even if the system you're on has a good @code{install} program.
 4425: @c This check is a safety measure to prevent you from accidentally leaving
 4426: @c that file out, which would prevent your package from installing on
 4427: @c systems that don't have a @sc{bsd}-compatible @code{install} program.
 4428: @c 
 4429: 使用可能な@file{install-sh}のコピーは,Autoconfでインストールされます. 
 4430: @code{AC_PROG_INSTALL}を使用する場合,配布物に@file{install-sh}か 
 4431: @file{install.sh}を含める必要があり,そうしない場合,@code{configure}は
 4432: 見つからない旨,エラーメッセージを出力します --- たとえシステムに良い 
 4433: @code{install}があってもそうなります.この調査は,そのファイルをたまたま
 4434: 入れ忘れることを阻止する安全対策で,それは@sc{bsd}互換の@code{install}プ
 4435: ログラムが無いシステムでパッケージをインストールすることを妨げます.
 4436: 
 4437: @c If you need to use your own installation program because it has features
 4438: @c not found in standard @code{install} programs, there is no reason to use
 4439: @c @code{AC_PROG_INSTALL}; just put the file name of your program into your
 4440: @c @file{Makefile.in} files.
 4441: @c 
 4442: 標準的な@code{install}プログラムには見当たらない特徴があるために,独自の
 4443: インストールプログラムを使用する必要がある場合,@code{AC_PROG_INSTALL}を
 4444: 使用する理由はありません.@file{Makefile.in}ファイルにプログラムのファイ
 4445: ル名を書き込んでください.
 4446: @end defmac
 4447: 
 4448: @defmac AC_PROG_LEX
 4449: @maindex PROG_LEX
 4450: @ovindex LEX
 4451: @ovindex LEXLIB
 4452: @cvindex YYTEXT_POINTER
 4453: @ovindex LEX_OUTPUT_ROOT
 4454: @c If @code{flex} is found, set output variable @code{LEX} to @samp{flex}
 4455: @c and @code{LEXLIB} to @option{-lfl}, if that library is in a standard
 4456: @c place.  Otherwise set @code{LEX} to @samp{lex} and @code{LEXLIB} to
 4457: @c @option{-ll}.
 4458: @c 
 4459: @code{flex}が見つかった場合,ライブラリが標準的な場所にあれば,出力変数 
 4460: @code{LEX}を@samp{flex}に,@code{LEXLIB}を@samp{-lfl}に設定します.それ
 4461: 以外の場合,@code{LEX}を@samp{lex}に,@code{LEXLIB}を@samp{-ll}に設定し
 4462: ます.
 4463: 
 4464: @c Define @code{YYTEXT_POINTER} if @code{yytext} is a @samp{char *} instead
 4465: @c of a @samp{char []}.  Also set output variable @code{LEX_OUTPUT_ROOT} to
 4466: @c the base of the file name that the lexer generates; usually
 4467: @c @file{lex.yy}, but sometimes something else.  These results vary
 4468: @c according to whether @code{lex} or @code{flex} is being used.
 4469: @c 
 4470: @code{yytext}が@samp{char []}ではなく@samp{char *}の場合,
 4471: @code{YYTEXT_POINTER}を定義します.また,出力変数@code{LEX_OUTPUT_ROOT} 
 4472: をlexerが生成するファイル名のベースに設定します.通常は@file{lex.yy}です
 4473: が異なることもあります.これらは,結果として@code{lex}と@code{flex}のど
 4474: ちらが使用されているかに依存して変化します.
 4475: 
 4476: @c You are encouraged to use Flex in your sources, since it is both more
 4477: @c pleasant to use than plain Lex and the C source it produces is portable.
 4478: @c In order to ensure portability, however, you must either provide a
 4479: @c function @code{yywrap} or, if you don't use it (e.g., your scanner has
 4480: @c no @samp{#include}-like feature), simply include a @samp{%noyywrap}
 4481: @c statement in the scanner's source.  Once this done, the scanner is
 4482: @c portable (unless @emph{you} felt free to use nonportable constructs) and
 4483: @c does not depend on any library.  In this case, and in this case only, it
 4484: @c is suggested that you use this Autoconf snippet:
 4485: @c 
 4486: 普通のLexとそれが生成するCソースを使用するより,移植性の面でより好ましい
 4487: ので,ソースでFlexを使用することを推奨します.しかし,移植性を確実にする
 4488: ために,関数@code{yywrap}を提供する,または,それを使用しない場合(例えば,
 4489: スキャナに@samp{#include}のような機能が無い場合),単純にスキャナソースで
 4490: @samp{%noyywrap}文を含める必要があります.一旦このようにすることで,スキャ
 4491: ナは(@emph{あなたが}移植性の無い構成物を使用しない限り)移植性があり,ラ
 4492: イブラリに依存しません.この場合,そしてこの場合のみ,以下のような
 4493: Autoconfの断片を使用することを提案します.
 4494: 
 4495: @example
 4496: AC_PROG_LEX
 4497: if test "$LEX" != flex; then
 4498:   LEX="$SHELL $missing_dir/missing flex"
 4499:   AC_SUBST(LEX_OUTPUT_ROOT, lex.yy)
 4500:   AC_SUBST(LEXLIB, '')
 4501: fi
 4502: @end example
 4503: 
 4504: @c The shell script @command{missing} can be found in the Automake
 4505: @c distribution.
 4506: @c 
 4507: シェルスクリプト@command{missing}は,Automakeの配布物で見つかるはずです.
 4508: 
 4509: @c To ensure backward compatibility, Automake's @code{AM_PROG_LEX} invokes
 4510: @c (indirectly) this macro twice, which will cause an annoying but benign
 4511: @c ``@code{AC_PROG_LEX} invoked multiple times'' warning.  Future versions
 4512: @c of Automake will fix this issue, meanwhile, just ignore this message.
 4513: @c 
 4514: 下位互換を確実にするため,Automakeの@code{AM_PROG_LEX}は,(間接的に)この
 4515: マクロを2度呼び出し,不快な``@code{AC_PROG_LEX} invoked multiple times'' 
 4516: で始まる警告を生じます.将来のバージョンのAutomakeではこの症状は修正され
 4517: ますので,その間はこのメッセージを無視してください.
 4518: @end defmac
 4519: 
 4520: @defmac AC_PROG_LN_S
 4521: @maindex PROG_LN_S
 4522: @ovindex LN_S
 4523: @c If @samp{ln -s} works on the current file system (the operating system
 4524: @c and file system support symbolic links), set the output variable
 4525: @c @code{LN_S} to @samp{ln -s}; otherwise, if @samp{ln} works, set
 4526: @c @code{LN_S} to @samp{ln} and otherwise set it to @samp{cp -p}.
 4527: @c 
 4528: 現在のファイルシステムで,@samp{ln -s}が動作する(オペレーティングシステ
 4529: ムとファイルシステムがシンボリックリンクをサポートしている)場合,出力変
 4530: 数@code{LN_S}を@samp{ln -s}に設定します.それ以外の場合は,@samp{ln}が動
 4531: 作する場合は,@code{LN_S}を@samp{ln}に設定し,そうでもなければ@samp{cp
 4532: -p}に設定します.
 4533: 
 4534: @c If you make a link a directory other than the current directory, its
 4535: @c meaning depends on whether @samp{ln} or @samp{ln -s} is used.  To safely
 4536: @c create links using @samp{$(LN_S)}, either find out which form is used
 4537: @c and adjust the arguments, or always invoke @code{ln} in the directory
 4538: @c where the link is to be created.
 4539: @c 
 4540: リンクをカレントディレクトリ以外のディレクトリに作成する場合,その方法は,
 4541: @samp{ln}と@samp{ln -s}のどちらが使用されるかに依存します. 
 4542: @samp{$(LN_S)}を使用して安全にリンクを作成するため,使用する書式と正しい
 4543: 引数を理解するか,リンクが作成されるディレクトリで@code{ln}を常に呼び出
 4544: すか,どちらかにしてください.
 4545: 
 4546: @c In other words, it does not work to do:
 4547: @c 
 4548: 言い替えると,以下のものは動作しません.
 4549: @example
 4550: $(LN_S) foo /x/bar
 4551: @end example
 4552: 
 4553: @c Instead, do:
 4554: @c 
 4555: その代わりに,以下のようにします.
 4556: @example
 4557: (cd /x && $(LN_S) foo bar)
 4558: @end example
 4559: @end defmac
 4560: 
 4561: @defmac AC_PROG_RANLIB
 4562: @maindex PROG_RANLIB
 4563: @ovindex RANLIB
 4564: @c Set output variable @code{RANLIB} to @samp{ranlib} if @code{ranlib}
 4565: @c is found, and otherwise to @samp{:} (do nothing).
 4566: @c 
 4567: @code{ranlib}が見つかって場合,出力変数@code{RANLIB}を@samp{ranlib}に設
 4568: 定し,それ以外では,@samp{:}(何もしません)に設定します.
 4569: @end defmac
 4570: 
 4571: @defmac AC_PROG_YACC
 4572: @maindex PROG_YACC
 4573: @ovindex YACC
 4574: @c If @code{bison} is found, set output variable @code{YACC} to @samp{bison
 4575: @c -y}.  Otherwise, if @code{byacc} is found, set @code{YACC} to
 4576: @c @samp{byacc}.  Otherwise set @code{YACC} to @samp{yacc}.
 4577: @c 
 4578: @code{bison}が見つかった場合,出力変数@code{YACC}を@samp{bison -y}に設定
 4579: します.それ以外で,@code{byacc}が見つかる場合,@code{YACC}を
 4580: @samp{byacc}に設定します.それ以外では,@code{YACC}を@samp{yacc}に設定し
 4581: ます.
 4582: @end defmac
 4583: 
 4584: 
 4585: @node Generic Programs,  , Particular Programs, Alternative Programs
 4586: @subsection 一般的なプログラムとファイルの調査
 4587: 
 4588: @c These macros are used to find programs not covered by the ``particular''
 4589: @c test macros.  If you need to check the behavior of a program as well as
 4590: @c find out whether it is present, you have to write your own test for it
 4591: @c (@pxref{Writing Tests}).  By default, these macros use the environment
 4592: @c variable @code{PATH}.  If you need to check for a program that might not
 4593: @c be in the user's @code{PATH}, you can pass a modified path to use
 4594: @c instead, like this:
 4595: @c 
 4596: これらのマクロは,``特定の''テストマクロによってカバーされていないプログ
 4597: ラムを見つけるに使用します.プログラムの存在を確認するだけでなく,その動
 4598: 作を調査する必要がある場合,そうするために独自のテストを書く必要がありま
 4599: す(@pxref{Writing Tests}).デフォルトで,これらのマクロは環境変数
 4600: @code{PATH}を使用します.ユーザの@code{PATH}にない可能性があるプログラム
 4601: を調査する必要がある場合,以下のようにして,パスを編集して渡すことが可能
 4602: です.
 4603: 
 4604: @example
 4605: AC_PATH_PROG(INETD, inetd, /usr/libexec/inetd,
 4606:   $PATH:/usr/libexec:/usr/sbin:/usr/etc:etc)
 4607: @end example
 4608: 
 4609: @c You are strongly encouraged to declare the @var{variable} passed to
 4610: @c @code{AC_CHECK_PROG} etc. as precious, @xref{Setting Output Variables},
 4611: @c @code{AC_ARG_VAR}, for more details.
 4612: @c 
 4613: @code{AC_CHECK_PROG}等に渡す@var{variable}を,正確に宣言することを強く推
 4614: 奨します.詳細は,@code{AC_ARG_VAR}と@xref{Setting Output Variables}.
 4615: 
 4616: @defmac AC_CHECK_PROG (@var{variable}, @var{prog-to-check-for}, @var{value-if-found}, @r{[}@var{value-if-not-found}@r{]}, @r{[}@var{path}@r{]},  @r{[}@var{reject}@r{]})
 4617: @maindex CHECK_PROG
 4618: @c Check whether program @var{prog-to-check-for} exists in @code{PATH}.  If
 4619: @c it is found, set @var{variable} to @var{value-if-found}, otherwise to
 4620: @c @var{value-if-not-found}, if given.  Always pass over @var{reject} (an
 4621: @c absolute file name) even if it is the first found in the search path; in
 4622: @c that case, set @var{variable} using the absolute file name of the
 4623: @c @var{prog-to-check-for} found that is not @var{reject}.  If
 4624: @c @var{variable} was already set, do nothing.  Calls @code{AC_SUBST} for
 4625: @c @var{variable}.
 4626: 
 4627: @code{PATH}に,プログラム@var{prog-to-check-for}が存在するかどうか調査し
 4628: ます.見つかった場合,@var{variable}を@var{value-if-found}に設定し,それ
 4629: 以外で,@var{value-if-not-found}が与えられている場合は,それに設定します.
 4630: たとえ@var{reject}(絶対パスのファイル名)が最初のサーチパスで見つかった場
 4631: 合でも,それは候補から外します.この場合,@var{prog-to-check-for}が見つ
 4632: かった@var{reject}ではない絶対パスのファイル名を使用し,@var{variable}を
 4633: 設定します.@var{variable}が既に設定されている場合,何もしません.
 4634: @var{variable}に対して@code{AC_SUBST}を呼び出してください.
 4635: @end defmac
 4636: 
 4637: @defmac AC_CHECK_PROGS (@var{variable}, @var{progs-to-check-for}, @r{[}@var{value-if-not-found}@r{]}, @r{[}@var{path}@r{]})
 4638: @maindex CHECK_PROGS
 4639: @c Check for each program in the whitespace-separated list
 4640: @c @var{progs-to-check-for} exists on the @code{PATH}.  If it is found, set
 4641: @c @var{variable} to the name of that program.  Otherwise, continue
 4642: @c checking the next program in the list.  If none of the programs in the
 4643: @c list are found, set @var{variable} to @var{value-if-not-found}; if
 4644: @c @var{value-if-not-found} is not specified, the value of @var{variable}
 4645: @c is not changed.  Calls @code{AC_SUBST} for @var{variable}.
 4646: @c 
 4647: @code{PATH}に,空白で区切られたリスト@var{progs-to-check-for}にあるそれ
 4648: ぞれのプログラムの存在を調査します.見つかった場合,@var{variable}をプロ
 4649: グラムの名前に設定します.それ以外の場合は引続き,リストの次にあるプログ
 4650: ラムを調査します.リスト内のプログラムが全く見つからない場合, 
 4651: @var{variable}を@var{value-if-not-found}に設定します. 
 4652: @var{value-if-not-found}が指定されていない場合,@var{variable}は変更され
 4653: ません.@var{variable}に対して@code{AC_SUBST}を呼び出してください.
 4654: @end defmac
 4655: 
 4656: @defmac AC_CHECK_TOOL (@var{variable}, @var{prog-to-check-for}, @r{[}@var{value-if-not-found}@r{]}, @r{[}@var{path}@r{]})
 4657: @maindex CHECK_TOOL
 4658: @c Like @code{AC_CHECK_PROG}, but first looks for @var{prog-to-check-for}
 4659: @c with a prefix of the host type as determined by
 4660: @c @code{AC_CANONICAL_HOST}, followed by a dash (@pxref{Canonicalizing}).
 4661: @c For example, if the user runs @samp{configure --host=i386-gnu}, then
 4662: @c this call:
 4663: @c 
 4664: @code{AC_CHECK_PROG}に似ていますが,@code{AC_CANONICAL_HOST}で定義されて
 4665: いるホストタイプにダッシュが続いているプレフィクスを持つ 
 4666: @var{prog-to-check-for}を,最初に探します(@pxref{Canonicalizing}).例え
 4667: ば,ユーザが@samp{configure --host=i386-gnu}を実行している場合,以下のよ
 4668: うに呼び出します.
 4669: @example
 4670: AC_CHECK_TOOL(RANLIB, ranlib, :)
 4671: @end example
 4672: @noindent
 4673: @c sets @code{RANLIB} to @file{i386-gnu-ranlib} if that program exists in
 4674: @c @code{PATH}, or otherwise to @samp{ranlib} if that program exists in
 4675: @c @code{PATH}, or to @samp{:} if neither program exists.
 4676: @c 
 4677: これで,@code{PATH}に@file{i386-gnu-ranlib}というプログラムが存在する場
 4678: 合,@code{RANLIB}を@file{i386-gnu-ranlib}に設定し,それ以外で,
 4679: @code{PATH}に@samp{ranlib}というプログラムがある場合,@code{RANLIB}を
 4680: @samp{ranlib}に設定し,どちらも無い場合は @samp{:}に設定します.
 4681: @end defmac
 4682: 
 4683: @defmac AC_CHECK_TOOLS (@var{variable}, @var{progs-to-check-for}, @r{[}@var{value-if-not-found}@r{]}, @r{[}@var{path}@r{]})
 4684: @maindex CHECK_TOOLS
 4685: @c Like @code{AC_CHECK_TOOL}, each of the tools in the list @var{progs-to-check-for} are
 4686: @c checked with a prefix of the host type as determined by @code{AC_CANONICAL_HOST},
 4687: @c followed by a dash (@pxref{Canonicalizing}). If none of the tools can be found with a
 4688: @c prefix, then the first one without a prefix is used. If a tool is found, set
 4689: @c @var{variable} to the name of that program. If none of the tools in the
 4690: @c list are found, set @var{variable} to @var{value-if-not-found}; if
 4691: @c @var{value-if-not-found} is not specified, the value of @var{variable}
 4692: @c is not changed.  Calls @code{AC_SUBST} for @var{variable}.
 4693: @c 
 4694: @code{AC_CHECK_TOOL}に似ていて,@var{progs-to-check-for}でリストアップさ
 4695: れているそれぞれのツールは,@code{AC_CANONICAL_HOST}で決定されたホストタ
 4696: イプを前置し,それにダッシュを続けたものを用いて調査されます
 4697: (@pxref{Canonicalizing}).プレフィクスを用いているツールが見つからない場
 4698: 合,最初にプレフィクス無しのものが使用されます.ツールが見つかった場合,
 4699: @var{variable}をそのプログラム名贋停止マス.リストのツールが全く見つから
 4700: ない場合,@var{variable}を@var{value-if-not-found}に設定します.
 4701: @var{value-if-not-found}が指定されていない場合,@var{variable}の値は変更
 4702: されません.@var{variable}に対して@code{AC_SUBST}を呼び出してください.
 4703: @end defmac
 4704: 
 4705: @defmac AC_PATH_PROG (@var{variable}, @var{prog-to-check-for}, @r{[}@var{value-if-not-found}@r{]}, @r{[}@var{path}@r{]})
 4706: @maindex PATH_PROG
 4707: @c Like @code{AC_CHECK_PROG}, but set @var{variable} to the entire
 4708: @c path of @var{prog-to-check-for} if found.
 4709: @c 
 4710: @code{AC_CHECK_PROG}に似ていますが,見つかった場合,@var{variable}を 
 4711: @var{prog-to-check-for}の完全なパスに設定します.
 4712: @end defmac
 4713: 
 4714: @defmac AC_PATH_PROGS (@var{variable}, @var{progs-to-check-for}, @r{[}@var{value-if-not-found}@r{]}, @r{[}@var{path}@r{]})
 4715: @maindex PATH_PROGS
 4716: @c Like @code{AC_CHECK_PROGS}, but if any of @var{progs-to-check-for}
 4717: @c are found, set @var{variable} to the entire path of the program
 4718: @c found.
 4719: @c 
 4720: @code{AC_CHECK_PROGS}に似ていますが,@var{progs-to-check-for}のどれかが
 4721: 見つかった場合,@var{variable}をプログラムが見つかった完全なパスに設定し
 4722: ます.
 4723: @end defmac
 4724: 
 4725: @defmac AC_PATH_TOOL (@var{variable}, @var{prog-to-check-for}, @r{[}@var{value-if-not-found}@r{]}, @r{[}@var{path}@r{]})
 4726: @maindex PATH_TOOL
 4727: @c Like @code{AC_CHECK_TOOL}, but set @var{variable} to the entire
 4728: @c path of the program if it is found.
 4729: @c 
 4730: @code{AC_CHECK_TOOL}に似ていますが,見つかった場合,@var{variable}をプロ
 4731: グラムが見つかった完全なパスに設定します.
 4732: @end defmac
 4733: 
 4734: @node Files, Libraries, Alternative Programs, Existing Tests
 4735: @section ファイル
 4736: @cindex File, checking
 4737: 
 4738: @c You might also need to check for the existence of files.  Before using
 4739: @c these macros, ask yourself whether a run time test might not be a better
 4740: @c solution.  Be aware that, like most Autoconf macros, they test a feature
 4741: @c of the host machine, and therefore, they die when cross-compiling.
 4742: @c 
 4743: ファイルの存在を調査する必要もあるでしょう.以下のマクロを使用する前に,
 4744: 実行時の調査がより良い解決ではないかどうか自問してください.ほとんどの
 4745: Autoconfマクロのように,それらはホストマシンの機能を調査するため,クロス
 4746: コンパイルでは意味が無いことを知っておいてください.
 4747: 
 4748: @defmac AC_CHECK_FILE (@var{file}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]})
 4749: @maindex CHECK_FILE
 4750: @c Check whether file @var{file} exists on the native system.  If it is
 4751: @c found, execute @var{action-if-found}, otherwise do
 4752: @c @var{action-if-not-found}, if given.
 4753: @c 
 4754: ネイティブシステムで@var{file}が存在するかどうか調査します.見つかった場
 4755: 合,@var{action-if-found}を実行し,それ以外では,与えられていれば
 4756: @var{action-if-not-found}を実行します.
 4757: @end defmac
 4758: 
 4759: @defmac AC_CHECK_FILES (@var{files}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]})
 4760: @maindex CHECK_FILES
 4761: @c Executes @code{AC_CHECK_FILE} once for each file listed in @var{files}.
 4762: @c Additionally, defines @samp{HAVE_@var{file}} (@pxref{Standard Symbols})
 4763: @c for each file found.
 4764: @c 
 4765: @var{files}でリストアップされた,それぞれのファイルに対し 
 4766: @code{AC_CHECK_FILE}を一度実行します.さらに,見つかったそれぞれのファイ
 4767: ルに対して@samp{HAVE@var{file}}を定義します(@pxref{Standard Symbols}).
 4768: @end defmac
 4769: 
 4770: 
 4771: @node Libraries, Library Functions, Files, Existing Tests
 4772: @section ライブラリファイル
 4773: @cindex Library, checking
 4774: 
 4775: @c The following macros check for the presence of certain C, C++ or Fortran
 4776: @c 77 library archive files.
 4777: @c 
 4778: 以下のマクロは,C,C++やFortran 77のライブラリアーカイブファイルの存在を
 4779: 調査します.
 4780: 
 4781: @defmac AC_CHECK_LIB (@var{library}, @var{function}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]}, @r{[}@var{other-libraries}@r{]})
 4782: @maindex CHECK_LIB
 4783: @c Depending on the current language(@pxref{Language Choice}), try to
 4784: @c ensure that the C, C++, or Fortran 77 function @var{function} is
 4785: @c available by checking whether a test program can be linked with the
 4786: @c library @var{library} to get the function.  @var{library} is the base
 4787: @c name of the library; e.g., to check for @option{-lmp}, use @samp{mp} as
 4788: @c the @var{library} argument.
 4789: @c 
 4790: 現在の言語に依存して(@pxref{Language Choice}),テストプログラムが関数利
 4791: 用に必要なライブラリ@var{library}とリンク可能かどうかを調査することで,C,
 4792: C++やFortran 77の関数@var{function}が利用可能であることを確認します.
 4793: @var{library}は,ライブラリのベース名です.例えば,@samp{-lmp}を調査する
 4794: ために,@var{library}の引数として@samp{mp}を使用します.
 4795: 
 4796: @c @var{action-if-found} is a list of shell commands to run if the link
 4797: @c with the library succeeds; @var{action-if-not-found} is a list of shell
 4798: @c commands to run if the link fails.  If @var{action-if-found} is not
 4799: @c specified, the default action will prepend @option{-l@var{library}} to
 4800: @c @code{LIBS} and define @samp{HAVE_LIB@var{library}} (in all
 4801: @c capitals). This macro is intended to support building of @code{LIBS} in
 4802: @c a right-to-left (least-dependent to most-dependent) fashion such that
 4803: @c library dependencies are satisfied as a natural side-effect of
 4804: @c consecutive tests. Some linkers are very sensitive to library ordering
 4805: @c so the order in which @code{LIBS} is generated is important to reliable
 4806: @c detection of libraries.
 4807: @c 
 4808: @var{action-if-found}は,ライブラリとのリンクが成功した場合に実行するシェ
 4809: ルコマンドのリストです.@var{action-if-not-found}は,リンクが失敗した場
 4810: 合に実行するシェルコマンドのリストです.@var{action-if-found}が指定され
 4811: ていない場合,デフォルトで@samp{-l@var{library}}を@code{LIBS}に加え, 
 4812: @samp{HAVE_LIB@var{library}}を(全て大文字で)定義します.このマクロは,ラ
 4813: イブラリの依存が連続的なテストの自然な副作用として満たされているように,
 4814: 右から左(最小依存から最大依存)の方法で@code{LIBS}のビルドサポートを試み
 4815: ます.ライブラリの順序に注意が必要なリンカもあるので,@code{LIBS}が生成
 4816: される順序は,ライブラリの信頼できる検出にとって重要です.
 4817: 
 4818: @c If linking with @var{library} results in unresolved symbols that would
 4819: @c be resolved by linking with additional libraries, give those libraries
 4820: @c as the @var{other-libraries} argument, separated by spaces:
 4821: @c e.g. @option{-lXt -lX11}.  Otherwise, this macro will fail to detect
 4822: @c that @var{library} is present, because linking the test program will
 4823: @c always fail with unresolved symbols. The @var{other-libraries} argument
 4824: @c should be limited to cases where it is desirable to test for one library
 4825: @c in the presence of another that is not already in @code{LIBS}.
 4826: @c 
 4827: @var{library}とのリンクの結果が,追加のライブラリとのリンクで解決される
 4828: 未解決のシンボルとなる場合,これらのライブラリを,@samp{-lXt -lX11}のよ
 4829: うに,スペースで区切られた@var{other-libraries}引数で与えてください.そ
 4830: うしない場合,テストプログラムとのリンクが未解決のシンボルで常に失敗する
 4831: ので,このマクロは@var{library}の存在の検出に失敗します.
 4832: @var{other-libraries}引数は,まだ@code{LIBS}に無い,その他のライブラリの
 4833: 一つを調査することが望ましい場合は制限があります.
 4834: @end defmac
 4835: 
 4836: @defmac AC_SEARCH_LIBS (@var{function}, @var{search-libs}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]}, @r{[}@var{other-libraries}@r{]})
 4837: @maindex SEARCH_LIBS
 4838: @c Search for a library defining @var{function} if it's not already
 4839: @c available.  This equates to calling @code{AC_TRY_LINK_FUNC} first
 4840: @c with no libraries, then for each library listed in @var{search-libs}.
 4841: @c 
 4842: まだ利用可能ではない,@var{function}を定義しているライブラリを探します.
 4843: これは,@var{search-libs}でリストアップされているそれぞれのライブラリに
 4844: 対し,@code{AC_TRY_LINK_FUNC}の最初の引数をライブラリ無しで呼び出しこと
 4845: と同じです.
 4846: 
 4847: @c Add @option{-l@var{library}} to @code{LIBS} for the first library found
 4848: @c to contain @var{function}, and run @var{action-if-found}.  If the
 4849: @c function is not found, run @var{action-if-not-found}.
 4850: @c 
 4851: @var{function}が含まれている最初のライブラリに対して,
 4852: @option{-l@var{library}}を@code{LIBS}に追加し,@var{action-if-found}を実
 4853: 行します.関数が見つからない場合,@var{action-if-not-found}を実行します.
 4854: 
 4855: @c If linking with @var{library} results in unresolved symbols that would
 4856: @c be resolved by linking with additional libraries, give those libraries
 4857: @c as the @var{other-libraries} argument, separated by spaces:
 4858: @c e.g. @option{-lXt -lX11}.  Otherwise, this macro will fail to detect
 4859: @c that @var{function} is present, because linking the test program will
 4860: @c always fail with unresolved symbols.
 4861: @c 
 4862: @var{library}とのリンクの結果が,未解決のシンボルで,追加のライブラリと
 4863: のリンクで解決できる場合,これらのライブラリを,@samp{-lXt -lX11}の様に,
 4864: スペースで区切られた@var{other-libraries}引数で与えてください.そうしな
 4865: ければ,テストプログラムとのリンクが,常に未解決のシンボルで失敗するので,
 4866: このマクロは@var{library}の存在の調査に失敗します.
 4867: @end defmac
 4868: 
 4869: 
 4870: @node Library Functions, Header Files, Libraries, Existing Tests
 4871: @section ライブラリ関数
 4872: 
 4873: @c The following macros check for particular C library functions.
 4874: @c If there is no macro specifically defined to check for a function you need,
 4875: @c and you don't need to check for any special properties of
 4876: @c it, then you can use one of the general function-check macros.
 4877: @c 
 4878: 以下のマクロは,特定のCライブラリ関数を調査します.必要な関数を調査する
 4879: ための特別に定義されたマクロがなく,その特別な特性を調査する必要がない場
 4880: 合,一般的な関数調査のマクロを使用することが可能です.
 4881: 
 4882: @menu
 4883: * Function Portability::        Pitfalls with usual functions
 4884: * Particular Functions::        Special handling to find certain functions
 4885: * Generic Functions::           How to find other functions
 4886: @end menu
 4887: 
 4888: @node Function Portability, Particular Functions, Library Functions, Library Functions
 4889: @subsection 古い関数の移植性
 4890: 
 4891: @c Most usual functions can either be missing, or be buggy, or be limited
 4892: @c on some architectures.  This section tries to make an inventory of these
 4893: @c portability issues.  By definition, this list will always require
 4894: @c additions, please help us keeping it as complete as possible
 4895: @c 
 4896: ほとんどの通常の関数は,無くなっている,またはバグがある,またはアーキテ
 4897: クチャによって制限があるはずです.このセクションでは,これらの移植性の問
 4898: 題を目録にしようと思います.定義では,このリストは常に追加が要求されます.
 4899: できるだけ完全なものを保つために,我々への手助けをお願いします.
 4900: 
 4901: @table @code
 4902: 
 4903: @item unlink
 4904: @c The @sc{posix} spec says that @code{unlink} causes the given files to be
 4905: @c removed only after there are no more open file handles for it.  Not all
 4906: @c OS's support this behaviour though.  So even on systems that provide
 4907: @c @code{unlink}, you cannot portably assume it is OK to call it on files
 4908: @c that are open.  For example, on Windows 9x and ME, such a call would fail;
 4909: @c on DOS it could even lead to file system corruption, as the file might end
 4910: @c up being written to after the OS has removed it.
 4911: @c 
 4912: @sc{posix}の仕様では,@code{unlink}は開かれているファイルへのハンドルが
 4913: なくなった後でファイルを削除するように述べられています.全てのOSがこの動
 4914: 作をサポートしているわけではありません.そのため,システムが
 4915: @code{unlink}を提供している場合でも,開いているファイルに対して呼び出し
 4916: ても大丈夫だと仮定した移植は不可能です.例えば,Windows 9xとMEでは,その
 4917: ような呼び出しは失敗します.DOSは可能ですが,OSが削除した後にファイルへ
 4918: の書き込みが終了するので,ファイルシステムが駄目になります.
 4919: 
 4920: @end table
 4921: 
 4922: 
 4923: @node Particular Functions, Generic Functions, Function Portability, Library Functions
 4924: @subsection 特定の関数の調査
 4925: @cindex Function, checking
 4926: 
 4927: @c These macros check for particular C functions---whether they exist, and
 4928: @c in some cases how they respond when given certain arguments.
 4929: @c 
 4930: これらのマクロは --- その存在にかかわらず --- 特定のC関数を調査し,場合
 4931: によっては,特定の引数が与えられた時の反応を調査します.
 4932: 
 4933: @defmac AC_FUNC_ALLOCA
 4934: @maindex FUNC_ALLOCA
 4935: @cvindex C_ALLOCA
 4936: @cvindex HAVE_ALLOCA_H
 4937: @ovindex ALLOCA
 4938: @c Check how to get @code{alloca}.  Tries to get a builtin version by
 4939: @c checking for @file{alloca.h} or the predefined C preprocessor macros
 4940: @c @code{__GNUC__} and @code{_AIX}.  If this macro finds @file{alloca.h},
 4941: @c it defines @code{HAVE_ALLOCA_H}.
 4942: @c 
 4943: @code{alloca}を使用する方法を調査します.@file{alloca.h}や,前もって定義
 4944: されているCプリプロセッサマクロの@code{__GNUC__}と@code{_AIX}を調査する
 4945: ことで,組み込みバージョンを取得しようとします.このマクロが 
 4946: @file{alloca.h}を見つけた場合,@code{HAVE_ALLOCA_H}を定義します.
 4947: 
 4948: @c If those attempts fail, it looks for the function in the standard C
 4949: @c library.  If any of those methods succeed, it defines
 4950: @c @code{HAVE_ALLOCA}.  Otherwise, it sets the output variable
 4951: @c @code{ALLOCA} to @samp{alloca.o} and defines @code{C_ALLOCA} (so
 4952: @c programs can periodically call @samp{alloca(0)} to garbage collect).
 4953: @c This variable is separate from @code{LIBOBJS} so multiple programs can
 4954: @c share the value of @code{ALLOCA} without needing to create an actual
 4955: @c library, in case only some of them use the code in @code{LIBOBJS}.
 4956: @c 
 4957: その試みが失敗する場合,標準Cライブラリで関数を探します.それらの手法の
 4958: いずれかが成功した場合,それは@code{HAVE_ALLOCA}を定義します.それ以外の
 4959: 場合は,出力変数の@code{ALLOCA}を@samp{alloca.o}に設定し, 
 4960: @code{C_ALLOCA}を定義します(それで,プログラムがガーベージコレクションの
 4961: ため定期的に@samp{alloca(0)}を呼び出すことが可能になります.この変数は, 
 4962: @code{LIBOBJS}とは別物なので,実際にライブラリを作成しなくても複数のプロ
 4963: グラムで@code{ALLOCA}の値を共有することが可能ですが,@code{LIBOBJS}で使
 4964: 用する場合もわずかにあります.
 4965: 
 4966: @c This macro does not try to get @code{alloca} from the System V R3
 4967: @c @file{libPW} or the System V R4 @file{libucb} because those libraries
 4968: @c contain some incompatible functions that cause trouble.  Some versions
 4969: @c do not even contain @code{alloca} or contain a buggy version.  If you
 4970: @c still want to use their @code{alloca}, use @code{ar} to extract
 4971: @c @file{alloca.o} from them instead of compiling @file{alloca.c}.
 4972: @c 
 4973: このマクロは,System V R3 の@file{libPW}やSystem V R4の@file{libucb}の
 4974: @code{alloca}の使用を試みません.なぜなら,それらのライブラリには互換性
 4975: がない関数があり問題が生じるためです.@code{alloca}を含まないものやバグ
 4976: だらけのバージョンもあります.それでも,その@code{alloca}を使用したい場
 4977: 合,@file{alloca.c}をコンパイルする代わりに,ライブラリから
 4978: @file{alloca.o}を抽出するため,@code{ar}を使用してください.
 4979: 
 4980: @c Source files that use @code{alloca} should start with a piece of code
 4981: @c like the following, to declare it properly.  In some versions of AIX,
 4982: @c the declaration of @code{alloca} must precede everything else except for
 4983: @c comments and preprocessor directives.  The @code{#pragma} directive is
 4984: @c indented so that pre-@sc{ansi} C compilers will ignore it, rather than
 4985: @c choke on it.
 4986: @c 
 4987: @code{alloca}を使用するソースファイルでは,正確に宣言するために,以下の
 4988: ようなコードで始めるべきです.AIXのバージョンによっては,@code{alloca}の
 4989: 宣言を,コメントとプリプロセッサディレクティブ以外の,全ての行の前に書く
 4990: 必要があります.@code{#pragma}ディレクティブは,ANSI C以前のコンパイラが
 4991: 停止するのではなく無視するように,字下げを行います.
 4992: 
 4993: @example
 4994: @group
 4995: /* AIX requires this to be the first thing in the file.  */
 4996: #ifndef __GNUC__
 4997: # if HAVE_ALLOCA_H
 4998: #  include <alloca.h>
 4999: # else
 5000: #  ifdef _AIX
 5001:  #pragma alloca
 5002: #  else
 5003: #   ifndef alloca /* predefined by HP cc +Olibcalls */
 5004: char *alloca ();
 5005: #   endif
 5006: #  endif
 5007: # endif
 5008: #endif
 5009: @end group
 5010: @end example
 5011: @end defmac
 5012: 
 5013: @defmac AC_FUNC_CHOWN
 5014: @maindex FUNC_CHOWN
 5015: @c If the @code{chown} function is available and works (in particular, it
 5016: @c should accept @option{-1} for @code{uid} and @code{gid}), define
 5017: @c @code{HAVE_CHOWN}.
 5018: @c 
 5019: @code{chown}関数が利用可能で動作する場合(特に,@code{uid}と@code{gid}に
 5020: 対する@option{-1}を受け入れるべきです),@code{HAVE_CHOWN}を定義します.
 5021: @end defmac
 5022: 
 5023: @defmac AC_FUNC_CLOSEDIR_VOID
 5024: @maindex FUNC_CLOSEDIR_VOID
 5025: @cvindex CLOSEDIR_VOID
 5026: @c If the @code{closedir} function does not return a meaningful value,
 5027: @c define @code{CLOSEDIR_VOID}.  Otherwise, callers ought to check its
 5028: @c return value for an error indicator.
 5029: @c 
 5030: @code{closedir}関数が意味のある値を返さない場合,@code{CLOSEDIR_VOID}を
 5031: 定義します.それ以外では,呼び出し側で,エラーを示す戻り値を調査する必要
 5032: があります.
 5033: @end defmac
 5034: 
 5035: @defmac AC_FUNC_ERROR_AT_LINE
 5036: @maindex FUNC_ERROR_AT_LINE
 5037: @c If the @code{error_at_line} function is not found, require an
 5038: @c @code{AC_LIBOBJ} replacement of @samp{error}.
 5039: @c 
 5040: @code{error_at_line}関数が見つからない場合,@code{AC_LIBOBJ}が
 5041: @samp{error}で置換されることを要求します.
 5042: @end defmac
 5043: 
 5044: @defmac AC_FUNC_FNMATCH
 5045: @maindex FUNC_FNMATCH
 5046: @c If the @code{fnmatch} function is available and works (unlike the one on
 5047: @c Solaris 2.4), define @code{HAVE_FNMATCH}.
 5048: @c 
 5049: @code{fnmatch}関数が利用可能で,(SunOS 5.4と異なり)動作する場合, 
 5050: @code{HAVE_FNMATCH}を定義します.
 5051: @end defmac
 5052: 
 5053: @defmac AC_FUNC_FORK
 5054: @maindex FUNC_FORK
 5055: @cvindex HAVE_VFORK_H
 5056: @cvindex HAVE_WORKING_FORK
 5057: @cvindex HAVE_WORKING_VFORK
 5058: @cvindex vfork
 5059: @c This macro checks for the @code{fork} and @code{vfork} functions. If a
 5060: @c working @code{fork} is found, define @code{HAVE_WORKING_FORK}. This macro
 5061: @c checks whether @code{fork} is just a stub by trying to run it.
 5062: @c 
 5063: このマクロは,@code{fork}と@code{vfork}関数を調査します.動作する
 5064: @code{fork}が見つかった場合,@code{HAVE_WORKING_FORK}を定義します.この
 5065: マクロは,@code{fork}がスタブかどうかを実行してみることで調査します.
 5066: 
 5067: @c If @file{vfork.h} is found, define @code{HAVE_VFORK_H}. If a working
 5068: @c @code{vfork} is found, define @code{HAVE_WORKING_VFORK}. Otherwise,
 5069: @c define @code{vfork} to be @code{fork} for backward compatibility with
 5070: @c previous versions of @command{autoconf}. This macro checks for several known
 5071: @c errors in implementations of @code{vfork} and considers the system to not
 5072: @c have a working @code{vfork} if it detects any of them. It is not considered
 5073: @c to be an implementation error if a child's invocation of @code{signal}
 5074: @c modifies the parent's signal handler, since child processes rarely change
 5075: @c their signal handlers.
 5076: @c 
 5077: @file{vfork.h}が見つかった場合,@code{HAVE_VFORK_H}を定義します.動作す
 5078: る@code{vfork}が見つかった場合,@code{HAVE_WORKING_VFORK}を定義します.
 5079: それ以外の場合,以前のバージョンの@command{autoconf}に対する下位互換のた
 5080: め,@code{vfork}を@code{fork}と定義します.このマクロは,@code{vfork}の
 5081: 実装のいくつかの既知のエラーを調査し,そのエラーのいずれかを検出した場合,
 5082: システムには動作する@code{vfork}が無いと考えます.子プロセスは,シグナル
 5083: ハンドラを変えることがめったにないので,子プロセスの@code{signal}の呼び
 5084: 出しが,親プロセスのシグナルハンドラを変更する場合,実装エラーだとは考え
 5085: られません.
 5086: 
 5087: @c Since this macro defines @code{vfork} only for backward compatibility with
 5088: @c previous versions of @command{autoconf} you're encouraged to define it
 5089: @c yourself in new code:
 5090: @c 
 5091: このマクロは,以前のバージョンの@command{autoconf}への下位互換性のためだ
 5092: けに@code{vfork}を定義するので,コード内で独自に定義することを推奨します.
 5093: @example
 5094: @group
 5095: #if !HAVE_WORKING_VFORK
 5096: # define vfork fork
 5097: #endif
 5098: @end group
 5099: @end example
 5100: @end defmac
 5101: 
 5102: @defmac AC_FUNC_FSEEKO
 5103: @maindex FUNC_FSEEKO
 5104: @cvindex _LARGEFILE_SOURCE
 5105: @c If the @code{fseeko} function is available, define @code{HAVE_FSEEKO}.
 5106: @c Define @code{_LARGEFILE_SOURCE} if necessary.
 5107: @c 
 5108: @code{fseeko}関数が利用可能な場合,@code{HAVE_FSEEKO}を定義します.必要
 5109: があれば@code{_LARGEFILE_SOURCE}を定義します.
 5110: @end defmac
 5111: 
 5112: @defmac AC_FUNC_GETGROUPS
 5113: @maindex FUNC_GETGROUPS
 5114: @ovindex GETGROUPS_LIBS
 5115: @c If the @code{getgroups} function is available and works (unlike on
 5116: @c Ultrix 4.3, where @samp{getgroups (0, 0)} always fails), define
 5117: @c @code{HAVE_GETGROUPS}.  Set @code{GETGROUPS_LIBS} to any libraries
 5118: @c needed to get that function.  This macro runs @code{AC_TYPE_GETGROUPS}.
 5119: @c 
 5120: @code{getgroups}関数が利用可能で,(@samp{getgroups (0, 0)}が常に失敗する
 5121: Ultrix 4.3とことなり)動作する場合,@code{HAVE_GETGROUPS}を定義します.
 5122: @code{GETGROUPS_LIBS}をその関数の使用に必要な全てのライブラリに定義しま
 5123: す.このマクロは,@code{AC_TYPE_GETGROUPS}を実行します.
 5124: @end defmac
 5125: 
 5126: @defmac AC_FUNC_GETLOADAVG
 5127: @maindex FUNC_GETLOADAVG
 5128: @cvindex SVR4
 5129: @cvindex DGUX
 5130: @cvindex UMAX
 5131: @cvindex UMAX4_3
 5132: @cvindex NLIST_STRUCT
 5133: @cvindex NLIST_NAME_UNION
 5134: @cvindex GETLODAVG_PRIVILEGED
 5135: @cvindex NEED_SETGID
 5136: @cvindex C_GETLOADAVG
 5137: @ovindex LIBOBJS
 5138: @ovindex NEED_SETGID
 5139: @ovindex KMEM_GROUP
 5140: @ovindex GETLOADAVG_LIBS
 5141: @c Check how to get the system load averages.  If the system has the
 5142: @c @code{getloadavg} function, define @code{HAVE_GETLOADAVG}, and set
 5143: @c @code{GETLOADAVG_LIBS} to any libraries needed to get that function.
 5144: @c Also add @code{GETLOADAVG_LIBS} to @code{LIBS}.
 5145: @c 
 5146: システムのロードアベレージを取得する方法を調査します.システムに
 5147: @code{getloadavg}関数がある場合,@code{HAVE_GETLOADAVG}を定義し,その関
 5148: 数の使用に必要な全てのライブラリを@code{GETLOADAVG_LIBS}に設定します.ま
 5149: た,@code{GETLOADAVG_LIBS}を@code{LIBS}に加えます.
 5150: 
 5151: @c Otherwise, require an @code{AC_LIBOBJ} replacement (@file{getloadavg.c})
 5152: @c of @samp{getloadavg}, and possibly define several other C preprocessor
 5153: @c macros and output variables:
 5154: @c 
 5155: それ以外の場合,@code{AC_LIBOBJ}を@samp{getloadavg}(@file{getloadavg.c}) 
 5156: で置換することを要求し,可能な限り以下のようないくつかのCプリプロセッサ
 5157: のマクロと出力変数を定義します.
 5158: 
 5159: @enumerate
 5160: @item
 5161: @c Define @code{C_GETLOADAVG}.
 5162: @c 
 5163: @code{C_GETLOADAVG}を定義します.
 5164: 
 5165: @item
 5166: @c Define @code{SVR4}, @code{DGUX}, @code{UMAX}, or @code{UMAX4_3} if on
 5167: @c those systems.
 5168: @c 
 5169: システムが,@code{SVR4},@code{DGUX},@code{UMAX},または@code{UMAX4_3} 
 5170: の場合,それを定義します.
 5171: 
 5172: @item
 5173: @c If @file{nlist.h} is found, define @code{NLIST_STRUCT}.
 5174: @c 
 5175: @file{nlist.h}が見つかる場合,@code{NLIST_STRUCT}を定義します.
 5176: 
 5177: @item
 5178: @c If @samp{struct nlist} has an @samp{n_un.n_name} member, define
 5179: @c @code{HAVE_STRUCT_NLIST_N_UN_N_NAME}.  The obsolete symbol
 5180: @c @code{NLIST_NAME_UNION} is still defined, but do not depend upon it.
 5181: @c 
 5182: @samp{struct nlist}が@samp{n_un}メンバーを持つ場合,
 5183: @code{HAVE_STRUCT_NLIST_N_UN_N_NAME}を定義します.時代遅れのシンボル
 5184: @code{NLIST_NAME_UNION}も定義しますが,それに依存しないようにしてくださ
 5185: い.
 5186: 
 5187: @item
 5188: @c Programs may need to be installed setgid (or setuid) for
 5189: @c @code{getloadavg} to work.  In this case, define
 5190: @c @code{GETLOADAVG_PRIVILEGED}, set the output variable @code{NEED_SETGID}
 5191: @c to @samp{true} (and otherwise to @samp{false}), and set
 5192: @c @code{KMEM_GROUP} to the name of the group that should own the installed
 5193: @c program.
 5194: @c 
 5195: プログラムによっては,@code{getloadavg}が動作するために,setgid(または
 5196: setuid)がインストールされていることを必要とするかもしれません.この場合,
 5197: @code{GETLOADAVG_PRIVILEGED}を定義し,出力変数@code{NEED_SETGID}を
 5198: @samp{true}に(それ以外では@samp{false}に)設定し,そして@code{KMEM_GROUP} 
 5199: をインストールされているプログラムを所有するグループの名前に設定します.
 5200: @end enumerate
 5201: @end defmac
 5202: 
 5203: @defmac AC_FUNC_GETMNTENT
 5204: @maindex FUNC_GETMNTENT
 5205: @cvindex HAVE_GETMNTENT
 5206: @c Check for @code{getmntent} in the @file{sun}, @file{seq}, and @file{gen}
 5207: @c libraries, for Irix 4, PTX, and Unixware, respectively.  Then, if
 5208: @c @code{getmntent} is available, define @code{HAVE_GETMNTENT}.
 5209: @c 
 5210: Irix 4,PTXと,Unixwareに対し,@file{sun},@file{seq},そして@file{gen} 
 5211: のライブラリ内の@code{getmntent}をそれぞれ調査します.@code{getmntent}が
 5212: 利用可能な場合,@code{HAVE_GETMNTENT}を定義します.
 5213: @end defmac
 5214: 
 5215: @defmac AC_FUNC_GETPGRP
 5216: @maindex FUNC_GETPGRP
 5217: @cvindex GETPGRP_VOID
 5218: @c If @code{getpgrp} takes no argument (the @sc{posix.1} version), define
 5219: @c @code{GETPGRP_VOID}.  Otherwise, it is the @sc{bsd} version, which takes
 5220: @c a process ID as an argument.  This macro does not check whether
 5221: @c @code{getpgrp} exists at all; if you need to work in that situation,
 5222: @c first call @code{AC_CHECK_FUNC} for @code{getpgrp}.
 5223: @c 
 5224: @code{getpgrp}が引数を取らない場合(POSIX.1 バージョン),
 5225: @code{GETPGRP_VOID}を定義します.それ以外では,@sc{bsd}バージョンで,プ
 5226: ロセスIDを引数とします.このマクロは@code{getpgrp}が存在するかどうかを全
 5227: く調査しません.動作する必要がある場合,@code{getpgrp}に対して最初に
 5228: @code{AC_CHECK_FUNC}を呼び出してください.
 5229: @end defmac
 5230: 
 5231: @defmac AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
 5232: @maindex FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
 5233: @cvindex LSTAT_FOLLOWS_SLASHED_SYMLINK
 5234: @c If @file{link} is a symbolic link, then @code{lstat} should treat
 5235: @c @file{link/} the same as @file{link/.}.  However, many older
 5236: @c @code{lstat} implementations incorrectly ignore trailing slashes.
 5237: @c 
 5238: @file{link}がシンボリックリンクの場合,@code{lstat}は@file{link/}を
 5239: @file{link/.}と同じものとして扱います.しかし,多くの古い@code{lstat}の
 5240: 実装では,後置されているスラッシュを間違って無視します.
 5241: 
 5242: @c It is safe to assume that if @code{lstat} incorrectly ignores
 5243: @c trailing slashes, then other symbolic-link-aware functions like
 5244: @c @code{unlink} and @code{unlink} also incorrectly ignore trailing slashes.
 5245: @c 
 5246: @code{lstat}が後置されているスラッシュを間違って無視する場合,それ以外の
 5247: @code{unlink}のようなsymbolic-link-aware関数と,@code{unlink}も後置され
 5248: ているスラッシュを間違って無視すると仮定した方が確実です.
 5249: 
 5250: @c If @code{lstat} behaves properly, define
 5251: @c @code{LSTAT_FOLLOWS_SLASHED_SYMLINK}, otherwise require an
 5252: @c @code{AC_LIBOBJ} replacement of @code{lstat}.
 5253: @c 
 5254: @code{lstat}が正しく動作する場合,@code{LSTAT_FOLLOWS_SLASHED_SYMLINK}を
 5255: 定義し,それ以外の場合は,@code{AC_LIBOBJ}を@code{lstat}で置換するよう要
 5256: 求します.
 5257: @end defmac
 5258: 
 5259: @defmac AC_FUNC_MALLOC
 5260: @maindex FUNC_MALLOC
 5261: @c If the @code{malloc} works correctly (@samp{malloc (0)} returns a valid
 5262: @c pointer), define @code{HAVE_MALLOC}.
 5263: @c 
 5264: @code{malloc}が正しく動作する(@samp{malloc (0)}が有効なポインタを返す)場
 5265: 合,@code{HAVE_MALLOC}を定義します.
 5266: @end defmac
 5267: 
 5268: @defmac AC_FUNC_MEMCMP
 5269: @maindex FUNC_MEMCMP
 5270: @ovindex LIBOBJS
 5271: @c If the @code{memcmp} function is not available, or does not work on
 5272: @c 8-bit data (like the one on SunOS 4.1.3), or fails when comparing 16
 5273: @c bytes or more and with at least one buffer not starting on a 4-byte
 5274: @c boundary (such as the one on NeXT x86 OpenStep), require an
 5275: @c @code{AC_LIBOBJ} replacement for @samp{memcmp}.
 5276: @c 
 5277: @code{memcmp}関数が利用不可能,または(SunOS 4.1.3のように)8ビットデータ
 5278: で動作しない,または(NeXT x86 OpenStepのように)16バイトかそれ以上で少な
 5279: くとも一つのバッファが4バイト境界で始まらないものの比較時に失敗する場合,
 5280: @code{AC_LIBOBJ}で@samp{memcmp}を置換することを要求します.
 5281: @end defmac
 5282: 
 5283: @defmac AC_FUNC_MKTIME
 5284: @maindex FUNC_MKTIME
 5285: @ovindex LIBOBJS
 5286: @c If the @code{mktime} function is not available, or does not work
 5287: @c correctly, require an @code{AC_LIBOBJ} replacement for @samp{mktime}.
 5288: @c 
 5289: @code{mktime}関数が利用不可能,または正しく動作しない場合,
 5290: @code{AC_LIBOBJ}で@samp{mktime}を置換することを要求します.
 5291: @end defmac
 5292: 
 5293: @defmac AC_FUNC_MMAP
 5294: @maindex FUNC_MMAP
 5295: @cvindex HAVE_MMAP
 5296: @c If the @code{mmap} function exists and works correctly, define
 5297: @c @code{HAVE_MMAP}.  Only checks private fixed mapping of already-mapped
 5298: @c memory.
 5299: @c 
 5300: @code{mmap}関数が存在して正しく動作する場合,@code{HAVE_MMAP}を定義しま
 5301: す.すでにマップされたメモリの,プライベートな固定したマッピングのみ調査
 5302: します.
 5303: @end defmac
 5304: 
 5305: @defmac AC_FUNC_OBSTACK
 5306: @maindex FUNC_OBSTACK
 5307: @cvindex HAVE_OBSTACK
 5308: @cindex obstack
 5309: @c If the obstacks are found, define @code{HAVE_OBSTACK}, else require an
 5310: @c @code{AC_LIBOBJ} replacement for @samp{obstack}.
 5311: @c 
 5312: obstackが見つかった場合,@code{HAVE_OBSTACK}を定義し,そうでない場合は
 5313: @code{AC_LIBOBJ}で@samp{obstack}を置換することを要求します.
 5314: @end defmac
 5315: 
 5316: @defmac AC_FUNC_SELECT_ARGTYPES
 5317: @maindex FUNC_SELECT_ARGTYPES
 5318: @cvindex SELECT_TYPE_ARG1
 5319: @cvindex SELECT_TYPE_ARG234
 5320: @cvindex SELECT_TYPE_ARG5
 5321: @c Determines the correct type to be passed for each of the
 5322: @c @code{select} function's arguments, and defines those types
 5323: @c in @code{SELECT_TYPE_ARG1}, @code{SELECT_TYPE_ARG234}, and
 5324: @c @code{SELECT_TYPE_ARG5} respectively.  @code{SELECT_TYPE_ARG1} defaults
 5325: @c to @samp{int}, @code{SELECT_TYPE_ARG234} defaults to @samp{int *},
 5326: @c and @code{SELECT_TYPE_ARG5} defaults to @samp{struct timeval *}.
 5327: @c 
 5328: @code{select}関数の引数それぞれに渡される正しい型を決定し,それらの型を
 5329: @code{SELECT_TYPE_ARG1},@code{SELECT_TYPE_ARG234},そして 
 5330: @code{SELECT_TYPE_ARG5}にそれぞれ定義します.@code{SELECT_TYPE_ARG1}のデ
 5331: フォルトは@samp{int}で,@code{SELECT_TYPE_ARG234}のデフォルトは@samp{int
 5332: *}で,そして@code{SELECT_TYPE_ARG5}のデフォルトは@samp{struct timeval *}
 5333: です.
 5334: @end defmac
 5335: 
 5336: @defmac AC_FUNC_SETPGRP
 5337: @maindex FUNC_SETPGRP
 5338: @cvindex SETPGRP_VOID
 5339: @c If @code{setpgrp} takes no argument (the @sc{posix.1} version), define
 5340: @c @code{SETPGRP_VOID}.  Otherwise, it is the @sc{bsd} version, which takes
 5341: @c two process IDs as arguments.  This macro does not check whether
 5342: @c @code{setpgrp} exists at all; if you need to work in that situation,
 5343: @c first call @code{AC_CHECK_FUNC} for @code{setpgrp}.
 5344: @c 
 5345: @code{setpgrp}が引数を持たない(@sc{posix.1}バージョンの)場合,
 5346: @code{SETPGRP_VOID}を定義します.それ以外では,@sc{bsd}バージョンで,2
 5347: つのプロセスIDを引数とします.このマクロは@code{setpgrp}の存在を全く調査
 5348: しません.その状況で動作する必要がある場合,@code{setpgrp}に対して最初に
 5349: @code{AC_CHECK_FUNC}を呼び出してください.
 5350: @end defmac
 5351: 
 5352: @defmac AC_FUNC_STAT
 5353: @defmacx AC_FUNC_LSTAT
 5354: @maindex FUNC_STAT
 5355: @maindex FUNC_LSTAT
 5356: @cvindex HAVE_STAT_EMPTY_STRING_BUG
 5357: @cvindex HAVE_LSTAT_EMPTY_STRING_BUG
 5358: @c Determine whether @code{stat} or @code{lstat} have the bug that it
 5359: @c succeeds when given the zero-length file name argument.  The @code{stat}
 5360: @c and @code{lstat} from SunOS 4.1.4 and the Hurd (as of 1998-11-01) do
 5361: @c this.
 5362: @c 
 5363: @code{stat}や@code{lstat}に,長さが0のファイル名を引数で与えた時に成功す
 5364: るというバグがあるかどうかを決定します.SunOS 4.1.4とHurd(1998-11-01)の
 5365: @code{stat}と@code{lstat}ではこうなります.
 5366: 
 5367: @c If it does, then define @code{HAVE_STAT_EMPTY_STRING_BUG} (or
 5368: @c @code{HAVE_LSTAT_EMPTY_STRING_BUG}) and ask for an @code{AC_LIBOBJ}
 5369: @c replacement of it.
 5370: @c 
 5371: その場合,@code{HAVE_STAT_EMPTY_STRING_BUG}(または
 5372: @code{HAVE_LSTAT_EMPTY_STRING_BUG})を定義し,@code{AC_LIBOBJ}でそれを置
 5373: 換することを要求します.
 5374: @end defmac
 5375: 
 5376: @defmac AC_FUNC_SETVBUF_REVERSED
 5377: @maindex FUNC_SETVBUF_REVERSED
 5378: @cvindex SETVBUF_REVERSED
 5379: @c If @code{setvbuf} takes the buffering type as its second argument and
 5380: @c the buffer pointer as the third, instead of the other way around, define
 5381: @c @code{SETVBUF_REVERSED}.
 5382: @c 
 5383: @code{setvbuf}が他とは異なり,第2引数でバッファの型,第3引数でバッファポ
 5384: インタをとる場合,@code{SETVBUF_REVERSED}を定義します.
 5385: @end defmac
 5386: 
 5387: @defmac AC_FUNC_STRCOLL
 5388: @maindex FUNC_STRCOLL
 5389: @cvindex HAVE_STRCOLL
 5390: @c If the @code{strcoll} function exists and works correctly, define
 5391: @c @code{HAVE_STRCOLL}.  This does a bit more than
 5392: @c @samp{AC_CHECK_FUNCS(strcoll)}, because some systems have incorrect
 5393: @c definitions of @code{strcoll} that should not be used.
 5394: @c 
 5395: @code{strcoll}関数が存在して,正しく動作する場合,@code{HAVE_STRCOLL}を
 5396: 定義します.使用すべきではない@code{strcoll}の間違った定義を持つシステム
 5397: もあるので,@samp{AC_CHECK_FUNCS(strcoll)}より多少ましです.
 5398: @end defmac
 5399: 
 5400: @defmac AC_FUNC_STRTOD
 5401: @maindex FUNC_STRTOD
 5402: @ovindex POW_LIB
 5403: @c If the @code{strtod} function does not exist or doesn't work correctly,
 5404: @c ask for an @code{AC_LIBOBJ} replacement of @samp{strtod}.  In this case,
 5405: @c because @file{strtod.c} is likely to need @samp{pow}, set the output
 5406: @c variable @code{POW_LIB} to the extra library needed.
 5407: @c 
 5408: @code{strtod}関数が存在していない,または正しく動作しない場合,
 5409: @code{AC_LIBOBJ}で@samp{strtod}を置換するよう要求します.この場合,
 5410: @file{strtod.c}は@samp{pow}を必要とすることもあり得るので,出力変数
 5411: @code{POW_LIB}を必要な外部ライブラリに設定します.
 5412: @end defmac
 5413: 
 5414: @defmac AC_FUNC_STRERROR_R
 5415: @maindex FUNC_STRERROR_R
 5416: @cvindex HAVE_STRERROR_R
 5417: @cvindex HAVE_WORKING_STRERROR_R
 5418: @c If @code{strerror_r} is available, define @code{HAVE_STRERROR_R}.  If
 5419: @c its implementation correctly returns a @code{char *}, define
 5420: @c @code{HAVE_WORKING_STRERROR_R}.  On at least DEC UNIX 4.0[A-D] and HP-UX
 5421: @c B.10.20, @code{strerror_r} returns @code{int}.  Actually, this tests
 5422: @c only whether it returns a scalar or an array, but that should be enough.
 5423: @c This is used by the common @file{error.c}.
 5424: @c 
 5425: @code{strerror_r}が利用可能な場合は,@code{HAVE_STRERROR_R}を定義します.
 5426: その実装が正しく@code{char *}を返す場合,@code{HAVE_WORKING_STRERROR_R} 
 5427: を定義します.少なくともDEC UNIX 4.0[A-D]とHP-UX B.10.20では,
 5428: @code{strerror_r}は@code{int}を返します.実際には,これはスカラーと配列
 5429: のどちらを返すかの調査のみで,十分ではないでしょう.これは一般的な
 5430: @file{error.c}で使用されます.
 5431: @end defmac
 5432: 
 5433: @defmac AC_FUNC_STRFTIME
 5434: @maindex FUNC_STRFTIME
 5435: @cvindex HAVE_STRFTIME
 5436: @c Check for @code{strftime} in the @file{intl} library, for SCO @sc{unix}.
 5437: @c Then, if @code{strftime} is available, define @code{HAVE_STRFTIME}.
 5438: @c 
 5439: @file{intl}ライブラリ内で,SCO @sc{unix}に対する@code{strftime}を調査し
 5440: ます. @code{strftime}が利用可能な場合,@code{HAVE_STRFTIME}を定義します.
 5441: @end defmac
 5442: 
 5443: @defmac AC_FUNC_UTIME_NULL
 5444: @maindex FUNC_UTIME_NULL
 5445: @cvindex HAVE_UTIME_NULL
 5446: @c If @samp{utime(@var{file}, NULL)} sets @var{file}'s timestamp to
 5447: @c the present, define @code{HAVE_UTIME_NULL}.
 5448: @c 
 5449: @samp{utime(@var{file}, NULL)}が@var{file}のタイムスタンプを現在のものに
 5450: 設定する場合,@code{HAVE_UTIME_NULL}を定義します.
 5451: @end defmac
 5452: 
 5453: @defmac AC_FUNC_VPRINTF
 5454: @maindex FUNC_VPRINTF
 5455: @cvindex HAVE_VPRINTF
 5456: @cvindex HAVE_DOPRNT
 5457: @c If @code{vprintf} is found, define @code{HAVE_VPRINTF}.  Otherwise, if
 5458: @c @code{_doprnt} is found, define @code{HAVE_DOPRNT}.  (If @code{vprintf}
 5459: @c is available, you may assume that @code{vfprintf} and @code{vsprintf}
 5460: @c are also available.)
 5461: @c 
 5462: @code{vprintf}が見つかった場合,@code{HAVE_VPRINTF}を定義します.それ以
 5463: 外で,@code{_doprnt}が見つかった場合,@code{HAVE_DOPRNT}を定義します.
 5464: (@code{vprintf}が利用可能な場合,@code{vfprintf}と@code{vsprintf}も利用
 5465: 可能だと仮定できるでしょう.)
 5466: @end defmac
 5467: 
 5468: 
 5469: @node Generic Functions,  , Particular Functions, Library Functions
 5470: @subsection 一般の関数の調査
 5471: 
 5472: @c These macros are used to find functions not covered by the ``particular''
 5473: @c test macros.  If the functions might be in libraries other than the
 5474: @c default C library, first call @code{AC_CHECK_LIB} for those libraries.
 5475: @c If you need to check the behavior of a function as well as find out
 5476: @c whether it is present, you have to write your own test for
 5477: @c it (@pxref{Writing Tests}).
 5478: @c 
 5479: これらのマクロは,``特定の''テストマクロによってカバーていない関数を見つ
 5480: けるために使用されます.関数が,デフォルトのCライブラリ以外のライブラリ
 5481: にある場合,最初にそれらのライブラリに対して@code{AC_CHECK_LIB}を呼び出
 5482: してください.存在の確認だけでなく動作も調査したい場合,独自のテストを書
 5483: く必要があります(@pxref{Writing Tests}).
 5484: 
 5485: @defmac AC_CHECK_FUNC (@var{function}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]})
 5486: @maindex CHECK_FUNC
 5487: @c If C function @var{function} is available, run shell commands
 5488: @c @var{action-if-found}, otherwise @var{action-if-not-found}.  If you just
 5489: @c want to define a symbol if the function is available, consider using
 5490: @c @code{AC_CHECK_FUNCS} instead.  This macro checks for functions with C
 5491: @c linkage even when @code{AC_LANG(C++)} has been called, since C is more
 5492: @c standardized than C++.  (@pxref{Language Choice}, for more information
 5493: @c about selecting the language for checks.)
 5494: @c 
 5495: Cの関数@var{function}が利用可能な場合,シェルコマンド 
 5496: @var{action-if-found}を,それ以外では@var{action-if-not-found}を実行しま
 5497: す.関数が利用可能な場合にシンボルを定義したいだけならば,代わりに 
 5498: @code{AC_CHECK_FUNCS}を使用してください.このマクロは, CのほうがC++より
 5499: 標準化されているので,@code{AC_LANG_CPLUSPLUS}が呼び出された場合でも,C 
 5500: にリンクされる関数を調査します.(言語の選択の調査ついての詳細は, 
 5501: @pxref{Language Choice}.)
 5502: @end defmac
 5503: 
 5504: @defmac AC_CHECK_FUNCS (@var{function}@dots{}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]})
 5505: @maindex CHECK_FUNCS
 5506: @cvindex HAVE_@var{function}
 5507: @c For each @var{function} in the whitespace-separated argument list,
 5508: @c define @code{HAVE_@var{function}} (in all capitals) if it is available.
 5509: @c If @var{action-if-found} is given, it is additional shell code to
 5510: @c execute when one of the functions is found.  You can give it a value of
 5511: @c @samp{break} to break out of the loop on the first match.  If
 5512: @c @var{action-if-not-found} is given, it is executed when one of the
 5513: @c functions is not found.
 5514: @c 
 5515: 空白で区切られた引数のリストで与えられているそれぞれの@var{function}に対
 5516: し,利用可能な場合は@code{HAVE_@var{function}}を(全て大文字で)定義します.
 5517: @var{action-if-found}が与えられている場合,関数の1つが見つかったとき実
 5518: 行する,追加のシェルコードになります.最初に一致したループでブレイクする
 5519: ためには,@samp{break}を与えることで可能になります.
 5520: @var{action-if-not-found}が与えられている場合,それは関数が1つでも見つ
 5521: からないときに実行されます.
 5522: @end defmac
 5523: 
 5524: @c Autoconf follows a philosophy that was formed over the years by those
 5525: @c who have struggled for portability: isolate the portability issues in
 5526: @c specific files, and then program as if you were in a @sc{posix}
 5527: @c environment.  Some functions may be missing or unfixable, and your
 5528: @c package must be ready to replace them.
 5529: @c 
 5530: Autoconfは,移植性のため苦心してきた人々によって,何年もかけて形作られて
 5531: きた哲学に従います.特定のファイルの移植性の問題と,@sc{posix}環境にいる
 5532: かのような問題とは別物です.関数によっては,無いものがあったり修正不可能
 5533: だったりするものもあり,パッケージではそれらを置き換える準備が必要になり
 5534: ます.
 5535: 
 5536: @c Use the first three of the following macros to specify a function to be
 5537: @c replaced, and the last one (@code{AC_REPLACE_FUNCS}) to check for and
 5538: @c replace the function if needed.
 5539: @c 
 5540: 置換される関数を指定するための以下のマクロの最初の3つを使用し,最後のも
 5541: の(@code{AC_REPLACE_FUNCS})は関数を調査するためと,必要な場合はそれを置
 5542: 換するために使用してください.
 5543: 
 5544: @defmac AC_LIBOBJ (@var{function})
 5545: @maindex LIBOBJ
 5546: @ovindex LIBOBJS
 5547: @c Specify that @samp{@var{function}.c} must be included in the executables
 5548: @c to replace a missing or broken implementation of @var{function}.
 5549: @c 
 5550: 無かったり壊れたりしている@var{function}の実装を置換するために,実行形式
 5551: に含める必要がある@samp{@var{function}.c}を指定します.
 5552: 
 5553: @c Technically, it adds @samp{@var{function}.$ac_objext} to the output
 5554: @c variable @code{LIBOBJS} and calls @code{AC_LIBSOURCE} for
 5555: @c @samp{@var{function}.c}.  You should not directly change @code{LIBOBJS},
 5556: @c since this is not traceable.
 5557: @c 
 5558: 技術的には,それは@samp{@var{function}.$ac_objext}を出力変数
 5559: @code{LIBOBJS}に追加し,@samp{@var{function}.c}に対し@code{AC_LIBSOURCE} 
 5560: を呼び出します.これは追跡不可能なので,直接@code{LIBOBJS}を変更すべきで
 5561: はありません.
 5562: @end defmac
 5563: 
 5564: @defmac AC_LIBSOURCE (@var{file})
 5565: @maindex LIBSOURCE
 5566: @c Specify that @var{file} might be needed to compile the project.  If you
 5567: @c need to know what files might be needed by a @file{configure.ac}, you
 5568: @c should trace @code{AC_LIBSOURCE}.  @var{file} must be a literal.
 5569: @c 
 5570: プロジェクトをコンパイルするために必要になる@var{file}を指定します.
 5571: @file{configure.ac}で必要になるファイルを知る必要がある場合,
 5572: @code{AC_LIBSOURCE}を追跡調査してください.@var{file}はリテラルにする必
 5573: 要があります.
 5574: 
 5575: @c This macro is called automatically from @code{AC_LIBOBJ}, but you must
 5576: @c call it explicitly if you pass a shell variable to @code{AC_LIBOBJ}.  In
 5577: @c that case, since shell variables cannot be traced statically, you must
 5578: @c pass to @code{AC_LIBSOURCE} any possible files that the shell variable
 5579: @c might cause @code{AC_LIBOBJ} to need.  For example, if you want to pass
 5580: @c a variable @code{$foo_or_bar} to @code{AC_LIBOBJ} that holds either
 5581: @c @code{"foo"} or @code{"bar"}, you should do:
 5582: @c 
 5583: このマクロは,自動的に@code{AC_LIBOBJ}から呼び出されますが,シェル変数に
 5584: @code{AC_LIBOBJ}を渡す場合,明示的に指定する必要があります.この場合,シェ
 5585: ル変数は静的な追跡調査ができないので,@code{AC_LIBOBJ}を生成するために必
 5586: 要となりそうなあらゆるシェル変数を,@code{AC_LIBSOURCE}に渡す必要があり
 5587: ます.例えば,@code{"foo"}または@code{"bar"}を保持している
 5588: @code{AC_LIBOBJ}に変数@code{$foo_or_bar}を渡したい場合は,以下のようにす
 5589: べきでしょう.
 5590: 
 5591: @example
 5592: AC_LIBSOURCE(foo.c)
 5593: AC_LIBSOURCE(bar.c)
 5594: AC_LIBOBJ($foo_or_bar)
 5595: @end example
 5596: 
 5597: @noindent
 5598: @c There is usually a way to avoid this, however, and you are encouraged to
 5599: @c simply call @code{AC_LIBOBJ} with literal arguments.
 5600: @c 
 5601: しかし,これを避ける一般的な方法もあり,それには単純にリテラルの引数で
 5602: @code{AC_LIBOBJ}を呼び出すことを推奨します.
 5603: 
 5604: @c Note that this macro replaces the obsolete @code{AC_LIBOBJ_DECL}, with
 5605: @c slightly different semantics: the old macro took the function name,
 5606: @c e.g. @code{foo}, as its argument rather than the file name.
 5607: @c 
 5608: このマクロは,時代遅れの@code{AC_LIBOBJ_DECL}を若干異なる意味で置換する
 5609: ことに注意してください.古いマクロは,ファイル名ではなく関数名,例えば
 5610: @code{foo}を引数としてとります.
 5611: @end defmac
 5612: 
 5613: @defmac AC_LIBSOURCES (@var{files})
 5614: @maindex LIBSOURCES
 5615: @c Like @code{AC_LIBSOURCE}, but accepts one or more @var{files} in a
 5616: @c comma-separated M4 list.  Thus, the above example might be rewritten:
 5617: @c 
 5618: @code{AC_LIBSOURCE}に似ていますが,カンマで分けられているM4リストに,一
 5619: つ以上の@var{files}を受け入れます.このため,上記の例は以下のように書き
 5620: 換えられるでしょう.
 5621: 
 5622: @example
 5623: AC_LIBSOURCES([foo.c, bar.c])
 5624: AC_LIBOBJ($foo_or_bar)
 5625: @end example
 5626: @end defmac
 5627: 
 5628: @defmac AC_REPLACE_FUNCS (@var{function}@dots{})
 5629: @maindex REPLACE_FUNCS
 5630: @ovindex LIBOBJS
 5631: @c Like @code{AC_CHECK_FUNCS}, but uses @samp{AC_LIBOBJ(@var{function})} as
 5632: @c @var{action-if-not-found}.  You can declare your replacement function by
 5633: @c enclosing the prototype in @samp{#if !HAVE_@var{function}}.  If the
 5634: @c system has the function, it probably declares it in a header file you
 5635: @c should be including, so you shouldn't redeclare it lest your declaration
 5636: @c conflict.
 5637: @c 
 5638: @code{AC_CHECK_FUNCS}に似ていますが,@var{action-if-not-found} として
 5639: @samp{AC_LIBOBJ(@var{function})}を使用します.@samp{#if
 5640: !HAVE_@var{function}}にプロトタイプを含めることで,置換する関数を宣言す
 5641: ることが可能です.システムに関数が存在する場合,おそらくインクルードして
 5642: いるヘッダファイルで宣言されているので,宣言が衝突しないように,それを再
 5643: 定義すべきではありません.
 5644: @end defmac
 5645: 
 5646: 
 5647: @node Header Files, Declarations, Library Functions, Existing Tests
 5648: @section ヘッダファイル
 5649: @cindex Header, checking
 5650: 
 5651: @c The following macros check for the presence of certain C header files.
 5652: @c If there is no macro specifically defined to check for a header file you need,
 5653: @c and you don't need to check for any special properties of
 5654: @c it, then you can use one of the general header-file check macros.
 5655: @c 
 5656: 以下のマクロは,ある特定のCヘッダファイルの存在を調査します.必要とする
 5657: ヘッダファイルを調査するために特に定義されたマクロがなく,その特別な特性
 5658: を調査する必要がない場合,一般的なヘッダファイルチェックマクロの1つを使
 5659: 用することが可能です.
 5660: 
 5661: @menu
 5662: * Particular Headers::          Special handling to find certain headers
 5663: * Generic Headers::             How to find other headers
 5664: @end menu
 5665: 
 5666: @node Particular Headers, Generic Headers, Header Files, Header Files
 5667: @subsection 特定のヘッダの調査
 5668: 
 5669: @c These macros check for particular system header files---whether they
 5670: @c exist, and in some cases whether they declare certain symbols.
 5671: @c 
 5672: これらのマクロは,特定のシステムヘッダファイルを調査します --- それらの
 5673: 存在しているか,そして場合によっては,特定のシンボルを宣言しているかを調
 5674: 査します.
 5675: 
 5676: @defmac AC_HEADER_DIRENT
 5677: @maindex HEADER_DIRENT
 5678: @cvindex HAVE_DIRENT_H
 5679: @cvindex HAVE_NDIR_H
 5680: @cvindex HAVE_SYS_DIR_H
 5681: @cvindex HAVE_SYS_NDIR_H
 5682: @c Check for the following header files.  For the first one that is
 5683: @c found and defines @samp{DIR}, define the listed C preprocessor macro:
 5684: @c 
 5685: 以下のヘッダファイルを調査します.最初に見つかった@samp{DIR}を定義してい
 5686: るものに対して,リストアップされているCプリプロセッサマクロを定義します.
 5687: 
 5688: @multitable {@file{sys/ndir.h}} {@code{HAVE_SYS_NDIR_H}}
 5689: @item @file{dirent.h}   @tab @code{HAVE_DIRENT_H}
 5690: @item @file{sys/ndir.h} @tab @code{HAVE_SYS_NDIR_H}
 5691: @item @file{sys/dir.h}  @tab @code{HAVE_SYS_DIR_H}
 5692: @item @file{ndir.h}     @tab @code{HAVE_NDIR_H}
 5693: @end multitable
 5694: 
 5695: @c The directory-library declarations in your source code should look
 5696: @c something like the following:
 5697: @c 
 5698: ソースコード内のディレクトリライブラリの宣言は,以下のようにすべきでしょ
 5699: う.
 5700: 
 5701: @example
 5702: @group
 5703: #if HAVE_DIRENT_H
 5704: # include <dirent.h>
 5705: # define NAMLEN(dirent) strlen((dirent)->d_name)
 5706: #else
 5707: # define dirent direct
 5708: # define NAMLEN(dirent) (dirent)->d_namlen
 5709: # if HAVE_SYS_NDIR_H
 5710: #  include <sys/ndir.h>
 5711: # endif
 5712: # if HAVE_SYS_DIR_H
 5713: #  include <sys/dir.h>
 5714: # endif
 5715: # if HAVE_NDIR_H
 5716: #  include <ndir.h>
 5717: # endif
 5718: #endif
 5719: @end group
 5720: @end example
 5721: 
 5722: @c Using the above declarations, the program would declare variables to be
 5723: @c of type @code{struct dirent}, not @code{struct direct}, and would access
 5724: @c the length of a directory entry name by passing a pointer to a
 5725: @c @code{struct dirent} to the @code{NAMLEN} macro.
 5726: @c 
 5727: 上記の宣言を使用している場合,プログラムは型を@code{struct direct}ではな
 5728: く@code{struct dirent}として変数を宣言し,@code{struct dirent}へのポイン
 5729: タを渡すことによって,@code{NAMLEN}マクロまでのディレクトリエントリ名の
 5730: 長さにアクセスします.
 5731: 
 5732: @c This macro also checks for the SCO Xenix @file{dir} and @file{x} libraries.
 5733: @c 
 5734: このマクロは,SCO Xenix @file{dir}と@file{x}ライブラリも調査します.
 5735: @end defmac
 5736: 
 5737: @defmac AC_HEADER_MAJOR
 5738: @maindex HEADER_MAJOR
 5739: @cvindex MAJOR_IN_MKDEV
 5740: @cvindex MAJOR_IN_SYSMACROS
 5741: @c If @file{sys/types.h} does not define @code{major}, @code{minor}, and
 5742: @c @code{makedev}, but @file{sys/mkdev.h} does, define
 5743: @c @code{MAJOR_IN_MKDEV}; otherwise, if @file{sys/sysmacros.h} does, define
 5744: @c @code{MAJOR_IN_SYSMACROS}.
 5745: @c 
 5746: @file{sys/types.h}が@code{major},@code{minor},そして@code{makedev}を定
 5747: 義していないが,@file{sys/mkdev.h}が定義している場合,
 5748: @code{MAJOR_IN_MKDEV}を定義します.それ以外の場合で,
 5749: @file{sys/sysmacros.h}が定義している場合は,@code{MAJOR_IN_SYSMACROS}を
 5750: 定義します.
 5751: @end defmac
 5752: 
 5753: @defmac AC_HEADER_STAT
 5754: @maindex HEADER_STAT
 5755: @maindex STAT_MACROS_BROKEN
 5756: @c If the macros @code{S_ISDIR}, @code{S_ISREG} et al. defined in
 5757: @c @file{sys/stat.h} do not work properly (returning false positives),
 5758: @c define @code{STAT_MACROS_BROKEN}.  This is the case on Tektronix UTekV,
 5759: @c Amdahl UTS and Motorola System V/88.
 5760: @c 
 5761: @file{sys/stat.h}で定義されている@code{S_ISDIR},@code{S_ISREG}等のマク
 5762: ロが正確に働かない(間違った正の値を返す)場合,@code{STAT_MACROS_BROKEN} 
 5763: を定義します.Tektronix UTekV,Amdahl UTS,そしてMotorola System V/88の
 5764: 場合がそうです.
 5765: @end defmac
 5766: 
 5767: @defmac AC_HEADER_STDC
 5768: @maindex HEADER_STDC
 5769: @cvindex STDC_HEADERS
 5770: @c Define @code{STDC_HEADERS} if the system has @sc{ansi} C header files.
 5771: @c Specifically, this macro checks for @file{stdlib.h}, @file{stdarg.h},
 5772: @c @file{string.h}, and @file{float.h}; if the system has those, it
 5773: @c probably has the rest of the @sc{ansi} C header files.  This macro also
 5774: @c checks whether @file{string.h} declares @code{memchr} (and thus
 5775: @c presumably the other @code{mem} functions), whether @file{stdlib.h}
 5776: @c declare @code{free} (and thus presumably @code{malloc} and other related
 5777: @c functions), and whether the @file{ctype.h} macros work on characters
 5778: @c with the high bit set, as @sc{ansi} C requires.
 5779: @c 
 5780: システムに@sc{ansi} Cヘッダファイルが存在する場合,@code{STDC_HEADERS}を
 5781: 定義します.特にこのマクロは,@file{stdlib.h},@file{stdarg.h},
 5782: @file{string.h},そして@file{float.h}を調査し,システムにそれらが存在し
 5783: ている場合は,たいてい@sc{ansi} Cヘッダーファイルの残りも存在します.同
 5784: 様に,このマクロは@file{string.h}が@code{memchr}を宣言(他の@code{mem}関
 5785: 数もおそらく存在)しているかどうか,@file{stdlib.h}が@code{free}を宣言
 5786: (@code{malloc}や他の関連する関数もおそらく存在)しているかどうか,そして,
 5787: @file{ctype.h}マクロが,@sc{ansi} Cが要求するハイビットセット文字でも動
 5788: 作するかどうかを調査します.
 5789: 
 5790: @c Use @code{STDC_HEADERS} instead of @code{__STDC__} to determine whether
 5791: @c the system has @sc{ansi}-compliant header files (and probably C library
 5792: @c functions) because many systems that have GCC do not have @sc{ansi} C
 5793: @c header files.
 5794: @c 
 5795: GCCがあるシステムの多くは@sc{ansi} Cヘッダファイルが存在していないので,
 5796: システムに@sc{ansi}対応のヘッダファイル(そして,おそらくCライブラリ関数) 
 5797: が存在していることを決定するために,@code{__STDC__}の代わりに
 5798: @code{STDC_HEADERS}を使用してください.
 5799: 
 5800: @c On systems without @sc{ansi} C headers, there is so much variation that
 5801: @c it is probably easier to declare the functions you use than to figure
 5802: @c out exactly what the system header files declare.  Some systems contain
 5803: @c a mix of functions @sc{ansi} and @sc{bsd}; some are mostly @sc{ansi} but
 5804: @c vlack @samp{memmove}; some define the @sc{bsd} functions as macros in
 5805: @c @file{string.h} or @file{strings.h}; some have only the @sc{bsd}
 5806: @c functions but @file{string.h}; some declare the memory functions in
 5807: @c @file{memory.h}, some in @file{string.h}; etc.  It is probably
 5808: @c sufficient to check for one string function and one memory function; if
 5809: @c the library has the @sc{ansi} versions of those then it probably has
 5810: @c most of the others.  If you put the following in @file{configure.ac}:
 5811: @c 
 5812: @sc{ansi} Cヘッダが無いシステムには多くの変種が存在していて,そこでは,
 5813: システムヘッダファイルが宣言しているものを正確に理解するより,使用する関
 5814: 数を宣言する方がより容易でしょう.@sc{ansi}と@sc{bsd} の関数が混在してい
 5815: るシステムもあります.ほとんど@sc{ansi}だが@samp{memmove}が無いものもあ
 5816: ります.@sc{bsd}関数が@file{string.h}や @file{strings.h}でマクロで定義さ
 5817: れているものもあります.@sc{bsd}関数しか持っていないが @file{string.h}が
 5818: 存在するものもあります.メモリ関数が@file{memory.h}で定義されていて,
 5819: @file{string.h}でも定義されているものもあります.等々いろいろなシステム
 5820: があります.一つの文字列関数と一つのメモリ関数を調査すれば恐らく十分です.
 5821: ライブラリに@sc{ansi}バージョンのものが存在する場合,他のものもほとんど
 5822: 存在します.以下を@file{configure.ac}に書き込む場合を考えます.
 5823: 
 5824: @example
 5825: AC_HEADER_STDC
 5826: AC_CHECK_FUNCS(strchr memcpy)
 5827: @end example
 5828: 
 5829: @noindent
 5830: @c then, in your code, you can put declarations like this:
 5831: @c 
 5832: コード内に,以下のような宣言を書き込むことが可能です.
 5833: 
 5834: @example
 5835: @group
 5836: #if STDC_HEADERS
 5837: # include <string.h>
 5838: #else
 5839: # if !HAVE_STRCHR
 5840: #  define strchr index
 5841: #  define strrchr rindex
 5842: # endif
 5843: char *strchr (), *strrchr ();
 5844: # if !HAVE_MEMCPY
 5845: #  define memcpy(d, s, n) bcopy ((s), (d), (n))
 5846: #  define memmove(d, s, n) bcopy ((s), (d), (n))
 5847: # endif
 5848: #endif
 5849: @end group
 5850: @end example
 5851: 
 5852: @noindent
 5853: @c If you use a function like @code{memchr}, @code{memset}, @code{strtok},
 5854: @c or @code{strspn}, which have no @sc{bsd} equivalent, then macros won't
 5855: @c suffice; you must provide an implementation of each function.  An easy
 5856: @c way to incorporate your implementations only when needed (since the ones
 5857: @c in system C libraries may be hand optimized) is to, taking @code{memchr}
 5858: @c for example, put it in @file{memchr.c} and use
 5859: @c @samp{AC_REPLACE_FUNCS(memchr)}.
 5860: @c 
 5861: @sc{bsd}とは異なる@code{memchr},@code{memset},@code{strtok},または 
 5862: @code{strspn}の様な関数を使用する場合,マクロは不十分でしょう.それぞれ
 5863: の関数を実装する必要があります.(システムのCライブラリのものが,手動で最
 5864: 適化されているかもしれないので),必要な時だけ実装を組み込む簡単な方法は,
 5865: 例えば@code{memchr}を使用する場合は,それを@file{memchr.c}に書き込み,
 5866: @samp{AC_REPLACE_FUNCS(memchr)}を使用することです.
 5867: @end defmac
 5868: 
 5869: @defmac AC_HEADER_SYS_WAIT
 5870: @maindex HEADER_SYS_WAIT
 5871: @cvindex HAVE_SYS_WAIT_H
 5872: @c If @file{sys/wait.h} exists and is compatible with @sc{posix.1}, define
 5873: @c @code{HAVE_SYS_WAIT_H}.  Incompatibility can occur if @file{sys/wait.h}
 5874: @c does not exist, or if it uses the old @sc{bsd} @code{union wait} instead
 5875: @c of @code{int} to store a status value.  If @file{sys/wait.h} is not
 5876: @c @sc{posix.1} compatible, then instead of including it, define the
 5877: @c @sc{posix.1} macros with their usual interpretations.  Here is an
 5878: @c example:
 5879: @c 
 5880: @file{sys/wait.h}が存在して,@sc{posix.1}と互換性がある場合, 
 5881: @code{HAVE_SYS_WAIT_H}を定義します.非互換性は,@file{sys/wait.h}が存在
 5882: しない場合や,ステータスの値を保存するため,@code{int}の代わりに古い
 5883: @sc{bsd}の@code{union wait}使用する場合に生じます.@file{sys/wait.h}が
 5884: @sc{posix.1}と互換性がない場合,それをインクルードする代わりに,それらの
 5885: 通常の解釈を用いて@sc{posix.1}のマクロを定義してください.例えば以下のよ
 5886: うにします.
 5887: 
 5888: @example
 5889: @group
 5890: #include <sys/types.h>
 5891: #if HAVE_SYS_WAIT_H
 5892: # include <sys/wait.h>
 5893: #endif
 5894: #ifndef WEXITSTATUS
 5895: # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
 5896: #endif
 5897: #ifndef WIFEXITED
 5898: # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
 5899: #endif
 5900: @end group
 5901: @end example
 5902: @end defmac
 5903: 
 5904: @cvindex _POSIX_VERSION
 5905: @c @code{_POSIX_VERSION} is defined when @file{unistd.h} is included on
 5906: @c @sc{posix.1} systems.  If there is no @file{unistd.h}, it is definitely
 5907: @c not a @sc{posix.1} system.  However, some non-@sc{posix.1} systems do
 5908: @c have @file{unistd.h}.
 5909: @c 
 5910: @file{unistd.h}が@sc{posix.1}システムに含まれている場合,
 5911: @code{_POSIX_VERSION}が定義されます.@file{unistd.h}が無い場合,明らかに
 5912: @sc{posix.1}システムではありません.しかし,@file{unistd.h}を持つ
 5913: @sc{posix.1}ではないシステムもあります.
 5914: 
 5915: @c The way to check if the system supports @sc{posix.1} is:
 5916: @c 
 5917: システムが@sc{posix.1}をサポートしているかどうか調査する方法は以下のよう
 5918: にします.
 5919: 
 5920: @example
 5921: @group
 5922: #if HAVE_UNISTD_H
 5923: # include <sys/types.h>
 5924: # include <unistd.h>
 5925: #endif
 5926: 
 5927: #ifdef _POSIX_VERSION
 5928: /* Code for POSIX.1 systems.  */
 5929: #endif
 5930: @end group
 5931: @end example
 5932: 
 5933: @defmac AC_HEADER_TIME
 5934: @maindex HEADER_TIME
 5935: @cvindex TIME_WITH_SYS_TIME
 5936: @c If a program may include both @file{time.h} and @file{sys/time.h},
 5937: @c define @code{TIME_WITH_SYS_TIME}.  On some older systems,
 5938: @c @file{sys/time.h} includes @file{time.h}, but @file{time.h} is not
 5939: @c protected against multiple inclusion, so programs should not explicitly
 5940: @c include both files.  This macro is useful in programs that use, for
 5941: @c example, @code{struct timeval} or @code{struct timezone} as well as
 5942: @c @code{struct tm}.  It is best used in conjunction with
 5943: @c @code{HAVE_SYS_TIME_H}, which can be checked for using
 5944: @c @code{AC_CHECK_HEADERS(sys/time.h)}.
 5945: @c 
 5946: プログラムが,@file{time.h}と@file{sys/time.h}の両方をインクルードする可
 5947: 能性がある場合,@code{TIME_WITH_SYS_TIME}を定義します.古いシステムでは,
 5948: @file{sys/time.h}が@file{time.h}をインクルードするものもありますが,
 5949: @file{time.h}は複数回のインクルードに対して保護されていないので,プログ
 5950: ラムで明示的に両方のファイルをインクルードすべきではありません.このマク
 5951: ロは,例えば,@code{struct tm}と同様,@code{struct timeval}や 
 5952: @code{struct timezone}を使用するプログラムで役に立ちます. 
 5953: @code{AC_CHECK_HEADERS(sys/time.h)}を使用していることを調査可能にする
 5954: @code{HAVE_SYS_TIME_H}と一緒に使用するのが最善の方法です.
 5955: 
 5956: @example
 5957: @group
 5958: #if TIME_WITH_SYS_TIME
 5959: # include <sys/time.h>
 5960: # include <time.h>
 5961: #else
 5962: # if HAVE_SYS_TIME_H
 5963: #  include <sys/time.h>
 5964: # else
 5965: #  include <time.h>
 5966: # endif
 5967: #endif
 5968: @end group
 5969: @end example
 5970: @end defmac
 5971: 
 5972: @defmac AC_HEADER_TIOCGWINSZ
 5973: @maindex HEADER_TIOCGWINSZ
 5974: @cvindex GWINSZ_IN_SYS_IOCTL
 5975: @c FIXME: I need clarifications from Jim.
 5976: @c If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
 5977: @c define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
 5978: @c found in @file{<termios.h>}.
 5979: @c 
 5980: @code{TIOCGWINSZ}の使用が@file{<sys/ioctl.h>}を要求する場合,
 5981: @code{GWINSZ_IN_SYS_IOCTL}を定義します.それ以外では,@code{TIOCGWINSZ}
 5982: は@file{<termios.h>}で見つかるはずです.
 5983: 
 5984: @c Use:
 5985: @c 
 5986: 以下のようにして使用します.
 5987: 
 5988: @example
 5989: @group
 5990: #if HAVE_TERMIOS_H
 5991: # include <termios.h>
 5992: #endif
 5993: 
 5994: #if GWINSZ_IN_SYS_IOCTL
 5995: # include <sys/ioctl.h>
 5996: #endif
 5997: @end group
 5998: @end example
 5999: @end defmac
 6000: 
 6001: 
 6002: @node Generic Headers,  , Particular Headers, Header Files
 6003: @subsection 一般的なヘッダの調査
 6004: 
 6005: @c These macros are used to find system header files not covered by the
 6006: @c ``particular'' test macros.  If you need to check the contents of a
 6007: @c header as well as find out whether it is present, you have to write your
 6008: @c own test for it (@pxref{Writing Tests}).
 6009: @c 
 6010: これらのマクロは,特定のテストマクロでカバーされていない,システムヘッダ
 6011: ファイルを見つけるために使用されます.その存在を見つけるだけでなく,ヘッ
 6012: ダの内容を調査する必要がある場合,そのために独自のテストを書く必要があり
 6013: ます (@pxref{Writing Tests}).
 6014: 
 6015: @defmac AC_CHECK_HEADER (@var{header-file}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]}, @r{[}@var{includes}@r{]})
 6016: @maindex CHECK_HEADER
 6017: @c If the system header file @var{header-file} is usable, execute shell
 6018: @c commands @var{action-if-found}, otherwise execute
 6019: @c @var{action-if-not-found}.  If you just want to define a symbol if the
 6020: @c header file is available, consider using @code{AC_CHECK_HEADERS}
 6021: @c instead.
 6022: @c 
 6023: システムヘッダファイル@var{header-file}が存在する場合,シェルコマンド
 6024: @var{action-if-found}を,それ以外では@var{action-if-not-found}を実行しま
 6025: す.ヘッダファイルが利用可能な場合で,シンボルを定義したいだけの場合は,
 6026: 代わりに,@code{AC_CHECK_HEADERS}を使用を考えてみてください.
 6027: 
 6028: @c The meaning of ``usable'' depends upon the content of @var{includes}:
 6029: @c 
 6030: ``利用可能''の意味は,@var{includes}の内容に依存します.
 6031: 
 6032: @table @asis
 6033: @item @var{includes}が空の場合(if @var{includes} is empty)
 6034: @c check whether
 6035: @c 
 6036: 以下の内容を調査します.
 6037: 
 6038: @example
 6039: @var{header-file}
 6040: @end example
 6041: 
 6042: @noindent
 6043: @c can be @emph{preprocessed} without error.
 6044: @c 
 6045: これがエラー無く処理可能かどうかを調査します.
 6046: 
 6047: @item @var{include}が設定されている場合(if @var{include} is set)
 6048: @c Check whether
 6049: @c 
 6050: 以下の内容を調査します.
 6051: 
 6052: @example
 6053: @var{includes}
 6054: #include <@var{header-file}>
 6055: @end example
 6056: 
 6057: @noindent
 6058: @c can be @emph{compiled} without error.  You may use
 6059: @c @code{AC_CHECK_HEADER} (and @code{AC_CHECK_HEADERS}) to check whether
 6060: @c two headers are compatible.
 6061: @c 
 6062: これがエラー無くコンパイル可能かどうかを調査します.2つのヘッダに互換性
 6063: があるかどうかを調査するために@code{AC_CHECK_HEADER}(と
 6064: @code{AC_CHECK_HEADERS})を使用することが可能です.
 6065: @end table
 6066: 
 6067: @c You may pass any kind of dummy content for @var{includes}, such as a
 6068: @c single space, a comment, to check whether @var{header-file} compiles
 6069: @c with success.
 6070: @c 
 6071: @var{header-file}のコンパイルが成功するかどうか調査するために,
 6072: @var{includes}に対して単一のスペース,カンマのようなダミーの内容を渡すこ
 6073: とも可能です.
 6074: @end defmac
 6075: 
 6076: @defmac AC_CHECK_HEADERS (@var{header-file}@dots{}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]}, @r{[}@var{includes}@r{]})
 6077: @maindex CHECK_HEADERS
 6078: @cvindex HAVE_@var{header}
 6079: @c For each given system header file @var{header-file} in the
 6080: @c whitespace-separated argument list that exists, define
 6081: @c @code{HAVE_@var{header-file}} (in all capitals).  If @var{action-if-found}
 6082: @c is given, it is additional shell code to execute when one of the header
 6083: @c files is found.  You can give it a value of @samp{break} to break out of
 6084: @c the loop on the first match.  If @var{action-if-not-found} is given, it
 6085: @c is executed when one of the header files is not found.
 6086: @c 
 6087: 空白で区切られた引数のリストで与えられているシステムヘッダファイル
 6088: @var{header-file}が存在しているものに対し,@code{HAVE_@var{header-file}} 
 6089: を(全て大文字で)定義します.@var{action-if-found}が与えられている場合,
 6090: それはヘッダファイルの一つが見つかったときに実行する追加のシェルコードに
 6091: なります.最初に一致したループでブレイクするために@samp{break}を与えるこ
 6092: とが可能です. @var{action-if-not-found}が与えられている場合,ヘッダファ
 6093: イルが一つでも見つからないとき実行されます.
 6094: 
 6095: @c Be sure to read the documentation of @code{AC_CHECK_HEADER} to
 6096: @c understand the influence of @var{includes}.
 6097: @c 
 6098: @var{includes}の影響を理解するために,@code{AC_CHECK_HEADER}のドキュメン
 6099: トをしっかり読んでください.
 6100: @end defmac
 6101: 
 6102: 
 6103: @node Declarations, Structures, Header Files, Existing Tests
 6104: @section 宣言
 6105: @cindex Declaration, checking
 6106: 
 6107: @c The following macros check for the declaration of variables and
 6108: @c functions.  If there is no macro specifically defined to check for a
 6109: @c symbol you need, then you can use the general macros (@pxref{Generic
 6110: @c Declarations}) or, for more complex tests, you may use
 6111: @c @code{AC_TRY_COMPILE} (@pxref{Examining Syntax}).
 6112: @c 
 6113: 以下のマクロは,変数と関数の宣言を調査します.必要なシンボルを調査するた
 6114: めに特別なマクロが定義されていない場合,一般的なマクロ(@pxref{Generic
 6115: Declarations}を使用することが可能で,より複雑なテストに対しては,
 6116: @code{AC_TRY_COMPILE}を使用することが可能です(@pxref{Examining Syntax}).
 6117: 
 6118: @menu
 6119: * Particular Declarations::     Macros to check for certain declarations
 6120: * Generic Declarations::        How to find other declarations
 6121: @end menu
 6122: 
 6123: @node Particular Declarations, Generic Declarations, Declarations, Declarations
 6124: @subsection 特定の宣言の調査
 6125: 
 6126: @c The following macros check for certain declarations.
 6127: @c 
 6128: 以下のマクロは特定の宣言を調査します.
 6129: 
 6130: @defmac AC_DECL_SYS_SIGLIST
 6131: @maindex DECL_SYS_SIGLIST
 6132: @cvindex SYS_SIGLIST_DECLARED
 6133: @c Define @code{SYS_SIGLIST_DECLARED} if the variable @code{sys_siglist}
 6134: @c is declared in a system header file, either @file{signal.h} or
 6135: @c @file{unistd.h}.
 6136: @c 
 6137: 変数@code{sys_siglist}が,システムヘッダファイルの@file{signal.h}と
 6138: @file{unistd.h}のいずれかでで宣言されている場合, 
 6139: @code{SYS_SIGLIST_DECLARED}を定義します.
 6140: @end defmac
 6141: 
 6142: 
 6143: @node Generic Declarations,  , Particular Declarations, Declarations
 6144: @subsection 一般的な宣言の調査
 6145: 
 6146: @c These macros are used to find declarations not covered by the ``particular''
 6147: @c test macros.
 6148: @c 
 6149: これらのマクロは,``特定の''テストマクロでカバーされていない宣言を調査す
 6150: るために使用します.
 6151: 
 6152: @defmac AC_CHECK_DECL (@var{symbol}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]}, @r{[}@var{includes}@r{]})
 6153: @maindex CHECK_DECL
 6154: @c If @var{symbol} (a function or a variable) is not declared in
 6155: @c @var{includes} and a declaration is needed, run the shell commands
 6156: @c @var{action-if-not-found}, otherwise @var{action-if-found}.  If no
 6157: @c @var{includes} are specified, the default includes are used
 6158: @c (@pxref{Default Includes}).
 6159: @c 
 6160: @var{symbol}(関数や変数)が@var{includes}で定義されていなくて宣言が必要な
 6161: 場合,シェルコマンド@var{action-if-not-found}を実行し,それ以外では
 6162: @var{action-if-found}を実行します.@var{includes}が宣言されていない場合,
 6163: デフォルトのインクルードが使用されます(@pxref{Default Includes}).
 6164: 
 6165: @c This macro actually tests whether it is valid to use @var{symbol} as an
 6166: @c r-value, not if it is really declared, because it is much safer to avoid
 6167: @c introducing extra declarations when they are not needed.
 6168: @c 
 6169: このマクロは,必要でない時に余分な宣言を導入することを避けた方が安全なの
 6170: で,@var{symbol}がr-valueとして有効かどうかを実際にテストし,実際に宣言
 6171: されているかどうかはテストしません.
 6172: @end defmac
 6173: 
 6174: @defmac AC_CHECK_DECLS (@var{symbols}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]}, @r{[}@var{includes}@r{]})
 6175: @maindex CHECK_DECLS
 6176: @cvindex HAVE_DECL_@var{symbol}
 6177: @c For each of the @var{symbols} (@emph{comma}-separated list), define
 6178: @c @code{HAVE_DECL_@var{symbol}} (in all capitals) to @samp{1} if
 6179: @c @var{symbol} is declared, otherwise to @samp{0}.  If
 6180: @c @var{action-if-not-found} is given, it is additional shell code to
 6181: @c execute when one of the function declarations is needed, otherwise
 6182: @c @var{action-if-found} is executed.
 6183: @c 
 6184: それぞれの(@emph{カンマ}で分けられているリスト)@var{symbols}に対し,
 6185: @var{symbol}が宣言されれいる場合は@code{HAVE_DECL_@var{symbol}}を(全て大
 6186: 文字で)@samp{1}に定義し,それ以外では@samp{0}に定義します.
 6187: @var{action-if-not-found}が与えられている場合,関数宣言の一つが必要なと
 6188: き実行するシェルコードを追加し,それ以外では@var{action-if-found}が実行
 6189: されます.
 6190: 
 6191: @c This macro uses an m4 list as first argument:
 6192: @c 
 6193: このマクロは,最初の引数としてm4のリストを使用します.
 6194: @example
 6195: AC_CHECK_DECLS(strdup)
 6196: AC_CHECK_DECLS([strlen])
 6197: AC_CHECK_DECLS([malloc, realloc, calloc, free])
 6198: @end example
 6199: 
 6200: @c Unlike the other @samp{AC_CHECK_*S} macros, when a @var{symbol} is not
 6201: @c declared, @code{HAVE_DECL_@var{symbol}} is defined to @samp{0} instead
 6202: @c of leaving @code{HAVE_DECL_@var{symbol}} undeclared.  When you are
 6203: @c @emph{sure} that the check was performed, use
 6204: @c @code{HAVE_DECL_@var{symbol}} just like any other result of Autoconf:
 6205: @c 
 6206: 他の@samp{AC_CHECK_*S}マクロと異なり,@var{symbol}が宣言されていない時,
 6207: @code{HAVE_DECL_@var{symbol}}を宣言しないままにする代わりに,
 6208: @code{HAVE_DECL_@var{symbol}}は@samp{0}で定義されます.調査の実行を
 6209: @emph{確かめている}時,@code{HAVE_DECL_@var{symbol}}をAutoconfの他の結果
 6210: と同様に使用してください.
 6211: 
 6212: @example
 6213: #if !HAVE_DECL_SYMBOL
 6214: extern char *symbol;
 6215: #endif
 6216: @end example
 6217: 
 6218: @noindent
 6219: @c If the test may have not been performed, however, because it is safer
 6220: @c @emph{not} to declare a symbol than to use a declaration that conflicts
 6221: @c with the system's one, you should use:
 6222: @c 
 6223: しかし,テストが実行されていない場合,システムのものと衝突するような宣言
 6224: を使用するより,シンボルを宣言@emph{しない}方が安全なので,以下のように
 6225: 使用すべきでしょう.
 6226: 
 6227: @example
 6228: #if defined HAVE_DECL_MALLOC && !HAVE_DECL_MALLOC
 6229: char *malloc (size_t *s);
 6230: #endif
 6231: @end example
 6232: 
 6233: @noindent
 6234: @c You fall into the second category only in extreme situations: either
 6235: @c your files may be used without being configured, or they are used during
 6236: @c the configuration.  In most cases the traditional approach is enough.
 6237: @c 
 6238: 究極の状態でのみ2番目のカテゴリに分類されます.ファイルがコンフィグレー
 6239: ションされずに使用されている場合か,コンフィグレーション時に使用されてい
 6240: る場合のいずれかです.ほとんどの場合はこれまでの方法で十分です.
 6241: @end defmac
 6242: 
 6243: 
 6244: @node Structures, Types, Declarations, Existing Tests
 6245: @section 構造体
 6246: @cindex Structure, checking
 6247: 
 6248: @c The following macros check for the presence of certain members in C
 6249: @c structures.  If there is no macro specifically defined to check for a
 6250: @c member you need, then you can use the general structure-member macro
 6251: @c (@pxref{Generic Structures}) or, for more complex tests, you may use
 6252: @c @code{AC_TRY_COMPILE} (@pxref{Examining Syntax}).
 6253: @c 
 6254: 以下のマクロは,特定のCの構造体の存在を調査します.必要なメンバーの調査
 6255: するために定義されている特定のマクロが無い場合,一般的な構造体メンバーの
 6256: マクロを使用したり(@pxref{Generic Structures}),より複雑なテストに対して
 6257: は,@code{AC_TRY_COMPILE}を使用することが可能です(@pxref{Examining
 6258: Syntax}).
 6259: 
 6260: @menu
 6261: * Particular Structures::       Macros to check for certain structure members
 6262: * Generic Structures::          How to find other structure members
 6263: @end menu
 6264: 
 6265: @node Particular Structures, Generic Structures, Structures, Structures
 6266: @subsection 特定の構造体の調査
 6267: 
 6268: @c The following macros check for certain structures or structure members.
 6269: @c 
 6270: 以下のマクロは,特定の構造体と構造体のメンバーを調査します.
 6271: 
 6272: @defmac AC_STRUCT_ST_BLKSIZE
 6273: @maindex STRUCT_ST_BLKSIZE
 6274: @cvindex HAVE_STRUCT_STAT_ST_BLKSIZE
 6275: @cvindex HAVE_ST_BLKSIZE
 6276: @c If @code{struct stat} contains an @code{st_blksize} member, define
 6277: @c @code{HAVE_STRUCT_STAT_ST_BLKSIZE}.  The former name,
 6278: @c @code{HAVE_ST_BLKSIZE} is to be avoided, as its support will cease in
 6279: @c the future.  This macro is obsoleted, and should be replaced by
 6280: @c 
 6281: @code{struct stat}が@code{st_blksize}メンバーを含んでいる場合, 
 6282: @code{HAVE_STRUCT_STAT_ST_BLKSIZE}を定義します.これまでの名前
 6283: @code{HAVE_ST_BLKSIZE}は,将来サポートを中止するので避けてください.この
 6284: マクロは時代遅れで,以下のもので置換すべきです.
 6285: 
 6286: @example
 6287: AC_CHECK_MEMBERS([struct stat.st_blksize])
 6288: @end example
 6289: @end defmac
 6290: 
 6291: @defmac AC_STRUCT_ST_BLOCKS
 6292: @maindex STRUCT_ST_BLOCKS
 6293: @cvindex HAVE_STRUCT_STAT_ST_BLOCKS
 6294: @cvindex HAVE_ST_BLOCKS
 6295: @ovindex LIBOBJS
 6296: @c If @code{struct stat} contains an @code{st_blocks} member, define
 6297: @c @code{HAVE_STRUCT STAT_ST_BLOCKS}.  Otherwise, require an
 6298: @c @code{AC_LIBOBJ} replacement of @samp{fileblocks}.  The former name,
 6299: @c @code{HAVE_ST_BLOCKS} is to be avoided, as its support will cease in the
 6300: @c future.
 6301: @c 
 6302: @code{struct stat}が@code{st_blocks}メンバーを含んでいる場合, 
 6303: @code{HAVE_STRUCT STAT_ST_BLOCKS}を定義します.それ以外では,出力変数 
 6304: @code{AC_LIBOBJS}で@samp{fileblocks}の置換を要求します.これまでの名前
 6305: @code{HAVE_ST_BLOCKS}は,将来サポートを中止するので避けてください.
 6306: @end defmac
 6307: 
 6308: @defmac AC_STRUCT_ST_RDEV
 6309: @maindex STRUCT_ST_RDEV
 6310: @cvindex HAVE_ST_RDEV
 6311: @cvindex HAVE_STRUCT_STAT_ST_RDEV
 6312: @c If @code{struct stat} contains an @code{st_rdev} member, define
 6313: @c @code{HAVE_STRUCT_STAT_ST_RDEV}.  The former name for this macro,
 6314: @c @code{HAVE_ST_RDEV}, is to be avoided as it will cease to be supported
 6315: @c in the future.  Actually, even the new macro is obsolete, and should be
 6316: @c replaced by:
 6317: @c 
 6318: @code{struct stat}が@code{st_rdev}メンバーを含んでいる場合, 
 6319: @code{HAVE_STRUCT_STAT_ST_RDEV}を定義します.これまでの名前
 6320: @code{HAVE_ST_RDEV}は,将来サポートを中止するので避けてください.実際に
 6321: は新しいマクロでさえ時代遅れで,以下のもので置換すべきです.
 6322: 
 6323: @example
 6324: AC_CHECK_MEMBERS([struct stat.st_rdev])
 6325: @end example
 6326: @end defmac
 6327: 
 6328: @defmac AC_STRUCT_TM
 6329: @maindex STRUCT_TM
 6330: @cvindex TM_IN_SYS_TIME
 6331: @c If @file{time.h} does not define @code{struct tm}, define
 6332: @c @code{TM_IN_SYS_TIME}, which means that including @file{sys/time.h}
 6333: @c had better define @code{struct tm}.
 6334: @c 
 6335: @file{time.h}が@code{struct tm}を定義しない場合,@code{TM_IN_SYS_TIME}を
 6336: 定義し,それは,@file{sys/time.h}をインクルードすることで@code{struct
 6337: tm}を定義した方が良いことを意味します.
 6338: @end defmac
 6339: 
 6340: @defmac AC_STRUCT_TIMEZONE
 6341: @maindex STRUCT_TIMEZONE
 6342: @cvindex HAVE_TM_ZONE
 6343: @cvindex HAVE_TZNAME
 6344: @c Figure out how to get the current timezone.  If @code{struct tm} has a
 6345: @c @code{tm_zone} member, define @code{HAVE_STRUCT_TM_TM_ZONE} (and the
 6346: @c obsoleted @code{HAVE_TM_ZONE}).  Otherwise, if the external array
 6347: @c @code{tzname} is found, define @code{HAVE_TZNAME}.
 6348: @c 
 6349: 現在のタイムゾーンの取得法を判別します.@code{struct tm}に@code{tm_zone} 
 6350: メンバーが存在する場合,@code{HAVE_STRUCT_TM_TM_ZONE}(と時代遅れの
 6351: @code{HAVE_TM_ZONE})を定義します.それ以外では,外部配列の@code{tzname}
 6352: が見つかる場合,@code{HAVE_TZNAME}を定義します.
 6353: @end defmac
 6354: 
 6355: 
 6356: @node Generic Structures,  , Particular Structures, Structures
 6357: @subsection 一般的な構造体の調査
 6358: 
 6359: @c These macros are used to find structure members not covered by the
 6360: @c ``particular'' test macros.
 6361: @c 
 6362: これらのマクロは,``特定の''テストマクロでカバーされていない構造体のメン
 6363: バーを検索するために使用します.
 6364: 
 6365: @defmac AC_CHECK_MEMBER (@var{aggregate}.@var{member}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]}, @r{[}@var{includes}@r{]})
 6366: @maindex CHECK_MEMBER
 6367: @c Check whether @var{member} is a member of the aggregate @var{aggregate}.
 6368: @c If no @var{includes} are specified, the default includes are used
 6369: @c (@pxref{Default Includes}).
 6370: @c 
 6371: @var{member}が集合体@var{aggregate}のメンバーかどうかを調査します.
 6372: @var{includes}が指定されていない場合,デフォルトのインクルードが使用され
 6373: ます(@pxref{Default Includes}).
 6374: 
 6375: @example
 6376: AC_CHECK_MEMBER(struct passwd.pw_gecos,,
 6377:                 [AC_MSG_ERROR([We need `passwd.pw_gecos'!])],
 6378:                 [#include <pwd.h>])
 6379: @end example
 6380: 
 6381: @c You can use this macro for sub-members:
 6382: @c 
 6383: このマクロはサブメンバーに対して使用可能です.
 6384: 
 6385: @example
 6386: AC_CHECK_MEMBER(struct top.middle.bot)
 6387: @end example
 6388: @end defmac
 6389: 
 6390: @defmac AC_CHECK_MEMBERS (@var{members}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]}, @r{[}@var{includes}@r{]})
 6391: @maindex CHECK_MEMBERS
 6392: @c Check for the existence of each @samp{@var{aggregate}.@var{member}} of
 6393: @c @var{members} using the previous macro.  When @var{member} belongs to
 6394: @c @var{aggregate}, define @code{HAVE_@var{aggregate}_@var{member}} (in all
 6395: @c capitals, with spaces and dots replaced by underscores).
 6396: @c 
 6397: 直前のマクロで使用されている@var{members}のそれぞれの
 6398: @samp{@var{aggregate}.@var{member}}の存在を調査します.@var{member}が
 6399: @var{aggregate}に属している時,@code{HAVE_@var{aggregate}_@var{member}} 
 6400: を(全て大文字で,スペースとドットをアンダースコアで置換しながら)定義しま
 6401: す.
 6402: 
 6403: @c This macro uses m4 lists:
 6404: @c 
 6405: このマクロはm4のリストを使用します.
 6406: @example
 6407: AC_CHECK_MEMBERS([struct stat.st_rdev, struct stat.st_blksize])
 6408: @end example
 6409: @end defmac
 6410: 
 6411: 
 6412: @node Types, Compilers and Preprocessors, Structures, Existing Tests
 6413: @section 型
 6414: 
 6415: @c The following macros check for C types, either builtin or typedefs.  If
 6416: @c there is no macro specifically defined to check for a type you need, and
 6417: @c you don't need to check for any special properties of it, then you can
 6418: @c use a general type-check macro.
 6419: @c 
 6420: 以下のマクロは,組み込みまたはtypedefになっている,Cの型を調査します.必
 6421: 要な型を調査するための特別に定義されたマクロがなく,その特別な特性を調査
 6422: する必要がない場合,一般的な型調査マクロを使用することが可能です.
 6423: 
 6424: @menu
 6425: * Particular Types::            Special handling to find certain types
 6426: * Generic Types::               How to find other types
 6427: @end menu
 6428: 
 6429: @node Particular Types, Generic Types, Types, Types
 6430: @subsection 特定の型の調査
 6431: 
 6432: @c These macros check for particular C types in @file{sys/types.h},
 6433: @c @file{stdlib.h} and others, if they exist.
 6434: @c 
 6435: これらのマクロは,@file{sys/types.h},@file{stdlib.h},そして存在する場
 6436: 合はその他の,特定のCの型を調査します.
 6437: 
 6438: @defmac AC_TYPE_GETGROUPS
 6439: @maindex TYPE_GETGROUPS
 6440: @cvindex GETGROUPS_T
 6441: @c Define @code{GETGROUPS_T} to be whichever of @code{gid_t} or @code{int}
 6442: @c is the base type of the array argument to @code{getgroups}.
 6443: @c 
 6444: @code{gid_t}と@code{int}のどちらかを,@code{getgroups}への配列引数の基本
 6445: の型にするため,@code{GETGROUPS_T}を定義します.
 6446: @end defmac
 6447: 
 6448: @defmac AC_TYPE_MODE_T
 6449: @maindex TYPE_MODE_T
 6450: @cvindex mode_t
 6451: @c Equivalent to @samp{AC_CHECK_TYPE(mode_t, int)}.
 6452: @c 
 6453: @samp{AC_CHECK_TYPE(mode_t, int)}と同じです.
 6454: @end defmac
 6455: 
 6456: @defmac AC_TYPE_OFF_T
 6457: @maindex TYPE_OFF_T
 6458: @cvindex off_t
 6459: @c Equivalent to @samp{AC_CHECK_TYPE(off_t, long)}.
 6460: @c 
 6461: @samp{AC_CHECK_TYPE(off_t, long)}と同じです.
 6462: @end defmac
 6463: 
 6464: @defmac AC_TYPE_PID_T
 6465: @maindex TYPE_PID_T
 6466: @cvindex pid_t
 6467: @c Equivalent to @samp{AC_CHECK_TYPE(pid_t, int)}.
 6468: @c 
 6469: @samp{AC_CHECK_TYPE(pid_t, int)}と同じです.
 6470: @end defmac
 6471: 
 6472: @defmac AC_TYPE_SIGNAL
 6473: @maindex TYPE_SIGNAL
 6474: @cvindex RETSIGTYPE
 6475: @c If @file{signal.h} declares @code{signal} as returning a pointer to a
 6476: @c function returning @code{void}, define @code{RETSIGTYPE} to be
 6477: @c @code{void}; otherwise, define it to be @code{int}.
 6478: @c 
 6479: @file{signal.h}が,@code{signal}を@code{void}返す関数へのポインタを返す
 6480: ものと宣言されている場合,@code{RETSIGTYPE}を@code{void}と定義します.そ
 6481: れ以外では@code{int}と定義します.
 6482: 
 6483: @c Define signal handlers as returning type @code{RETSIGTYPE}:
 6484: @c 
 6485: シグナルハンドラが返す型を@code{RETSIGTYPE}と定義してください.
 6486: 
 6487: @example
 6488: @group
 6489: RETSIGTYPE
 6490: hup_handler ()
 6491: @{
 6492: @dots{}
 6493: @}
 6494: @end group
 6495: @end example
 6496: @end defmac
 6497: 
 6498: @defmac AC_TYPE_SIZE_T
 6499: @maindex TYPE_SIZE_T
 6500: @cvindex size_t
 6501: @c Equivalent to @samp{AC_CHECK_TYPE(size_t, unsigned)}.
 6502: @c 
 6503: @samp{AC_CHECK_TYPE(size_t, unsigned)}と同じです.
 6504: @end defmac
 6505: 
 6506: @defmac AC_TYPE_UID_T
 6507: @maindex TYPE_UID_T
 6508: @cvindex uid_t
 6509: @cvindex gid_t
 6510: @c If @code{uid_t} is not defined, define @code{uid_t} to be @code{int} and
 6511: @c @code{gid_t} to be @code{int}.
 6512: @c 
 6513: @code{uid_t}が定義されていない場合,@code{uid_t}を@code{int}に,そして
 6514: @code{gid_t}を@code{int}に定義します.
 6515: @end defmac
 6516: 
 6517: 
 6518: @node Generic Types,  , Particular Types, Types
 6519: @subsection 一般的な型の調査
 6520: 
 6521: @c These macros are used to check for types not covered by the ``particular''
 6522: @c test macros.
 6523: @c 
 6524: これらのマクロは,``特定の''テストマクロがカバーしない型を調査するために
 6525: 使用されます.
 6526: 
 6527: @defmac AC_CHECK_TYPE (@var{type}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]}, @r{[}@var{includes}@r{]})
 6528: @maindex CHECK_TYPE
 6529: @c Check whether @var{type} is defined.  It may be a compiler builtin type
 6530: @c or defined by the @ovar{includes} (@pxref{Default Includes}).
 6531: @c 
 6532: @var{type}が定義されているかどうかを調査します.コンパイラ組み込みの型や,
 6533: @r{[}@var{includes}@r{]}(@pxref{Default Includes})で定義されてい
 6534: る可能性があります.
 6535: @end defmac
 6536: 
 6537: 
 6538: @defmac AC_CHECK_TYPES (@var{types}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]}, @r{[}@var{includes}@r{]})
 6539: @maindex CHECK_TYPES
 6540: @c For each @var{type} of the @var{types} that is defined, define
 6541: @c @code{HAVE_@var{type}} (in all capitals).  If no @var{includes} are
 6542: @c specified, the default includes are used (@pxref{Default Includes}).  If
 6543: @c @var{action-if-found} is given, it is additional shell code to execute
 6544: @c when one of the types is found.  If @var{action-if-not-found} is given,
 6545: @c it is executed when one of the types is not found.
 6546: @c 
 6547: 定義されている@var{types}のそれぞれの@var{type}に対し,
 6548: @code{HAVE_@var{type}}を(全て大文字で)定義します.@var{includes}が定義さ
 6549: れていない場合,デフォルトのインクルードが使用されます(@pxref{Default
 6550: Includes}).@var{action-if-found}が与えられている場合,型の一つが見つかっ
 6551: た時に実行する追加のシェルコードとなります.@var{action-if-not-found}が
 6552: 与えられている場合,型の一つでも見つからない時に実行されます.
 6553: 
 6554: @c This macro uses m4 lists:
 6555: @c 
 6556: このマクロはm4のリストを使用します.
 6557: @example
 6558: AC_CHECK_TYPES(ptrdiff_t)
 6559: AC_CHECK_TYPES([unsigned long long, uintmax_t])
 6560: @end example
 6561: 
 6562: @end defmac
 6563: 
 6564: @c Autoconf, up to 2.13, used to provide to another version of
 6565: @c @code{AC_CHECK_TYPE}, broken by design.  In order to keep backward
 6566: @c compatibility, a simple heuristics, quite safe but not totally, is
 6567: @c implemented.  In case of doubt, read the documentation of the former
 6568: @c @code{AC_CHECK_TYPE}, see @ref{Obsolete Macros}.
 6569: @c 
 6570: 2.13までのAutoconfは,設計に問題がある他のバージョンの
 6571: @code{AC_CHECK_TYPE}を提供するために使用されていました.単純な経験則とし
 6572: て,全体的ではないが全く安全なので,下位互換性のため,実装されました.疑
 6573: うのなら,以前の@code{AC_CHECK_TYPE}のドキュメントを読んでください.
 6574: @ref{Obsolete Macros}を参照してください.
 6575: 
 6576: 
 6577: @node Compilers and Preprocessors, System Services, Types, Existing Tests
 6578: @section コンパイラとプリプロセッサ
 6579: 
 6580: @ovindex EXEEXT
 6581: @c All the tests for compilers (@code{AC_PROG_CC}, @code{AC_PROG_CXX},
 6582: @c @code{AC_PROG_F77}) define the output variable @code{EXEEXT} based on
 6583: @c the output of the compiler, typically to the empty string if Unix and
 6584: @c @samp{.exe} if Win32 or OS/2.
 6585: @c 
 6586: コンパイラ(@code{AC_PROG_CC},@code{AC_PROG_CXX},@code{AC_PROG_F77})に
 6587: 対する全てのテストは,コンパイラの出力のベースとなる出力変数
 6588: @code{EXEEXT}を定義し,通常,Unixでは空の文字列でWin32やOS/2では
 6589: @samp{.exe}に定義されます.
 6590: 
 6591: @ovindex OBJEXT
 6592: @c They also define the output variable @code{OBJEXT} based on the
 6593: @c output of the compiler, after .c files have been excluded, typically
 6594: @c to @samp{o} if Unix, @samp{obj} if Win32.
 6595: @c 
 6596: それらは,.cファイルが除外された後で,コンパイラ出力のベースとなる出力変
 6597: 数@code{OBJEXT}も定義し,通常,Unixでは@samp{o}でWin32では@samp{obj}に定
 6598: 義されますます.
 6599: 
 6600: @c If the compiler being used does not produce executables, they fail.  If
 6601: @c the executables can't be run, and cross-compilation is not enabled, they
 6602: @c fail too.  @xref{Manual Configuration}, for more on support for cross
 6603: @c compiling.
 6604: @c 
 6605: 使用しているコンパイラが実行形式を生成しない場合,それは失敗します.実行
 6606: 形式が実行不可能な場合で,クロスコンパイルが利用できない場合も失敗します.
 6607: クロスコンパイルのサポートの詳細は,@xref{Manual Configuration}.
 6608: 
 6609: @menu
 6610: * Generic Compiler Characteristics::  Language independent tests
 6611: * C Compiler::                  Checking its characteristics
 6612: * C++ Compiler::                Likewise
 6613: * Fortran 77 Compiler::         Likewise
 6614: @end menu
 6615: 
 6616: @node Generic Compiler Characteristics, C Compiler, Compilers and Preprocessors, Compilers and Preprocessors
 6617: @subsection 一般的なコンパイラの特徴
 6618: 
 6619: @defmac AC_CHECK_SIZEOF (@var{type}, @r{[}@var{unused}@r{]}, @r{[}@var{includes}@r{]})
 6620: @maindex CHECK_SIZEOF
 6621: @c Define @code{SIZEOF_@var{type}} (@pxref{Standard Symbols}) to be the
 6622: @c size in bytes of @var{type}.  If @samp{type} is unknown, it gets a size
 6623: @c of 0.  If no @var{includes} are specified, the default includes are used
 6624: @c (@pxref{Default Includes}).  If you provide @var{include}, make sure to
 6625: @c include @file{stdio.h} which is required for this macro to run.
 6626: @c 
 6627: @code{SIZEOF_@var{type}}(@pxref{Standard Symbols})を@var{type}のバイトサ
 6628: イズに定義します.@samp{type}が分からない場合,そのサイズは0になります.
 6629: @var{includes}が指定されていない場合,デフォルトのインクルードが使用され
 6630: ます(@pxref{Default Includes}).@var{include}を与える場合,このマクロを
 6631: 実行するために必要な@file{stdio.h}を含めてください.
 6632: 
 6633: @c This macro now works even when cross-compiling.  The @var{unused}
 6634: @c argument was used when cross-compiling.
 6635: @c 
 6636: このマクロは,現在クロスコンパイル時にも動作します.@var{unused}引数は,
 6637: クロスコンパイル時に使用します.
 6638: 
 6639: @c For example, the call
 6640: @c 
 6641: 例えば,以下のように呼び出します.
 6642: 
 6643: @example
 6644: AC_CHECK_SIZEOF(int *)
 6645: @end example
 6646: 
 6647: @noindent
 6648: @c defines @code{SIZEOF_INT_P} to be 8 on DEC Alpha AXP systems.
 6649: @c 
 6650: これは,DEC Alpha AXPシステムでは@code{SIZEOF_INT_P}を8に定義します.
 6651: @end defmac
 6652: 
 6653: 
 6654: @node C Compiler, C++ Compiler, Generic Compiler Characteristics, Compilers and Preprocessors
 6655: @subsection Cコンパイラの特徴
 6656: 
 6657: @defmac AC_PROG_CC (@r{[}@var{compiler-search-list}@r{]})
 6658: @maindex PROG_CC
 6659: @ovindex CC
 6660: @ovindex CFLAGS
 6661: @c Determine a C compiler to use.  If @code{CC} is not already set in the
 6662: @c environment, check for @code{gcc} and @code{cc}, then for other C
 6663: @c compilers.  Set output variable @code{CC} to the name of the compiler
 6664: @c found.
 6665: @c 
 6666: 使用するCコンパイラを決定します.@code{CC}が環境変数で設定されていない場
 6667: 合,@code{gcc}と@code{cc}を調査し,その後で他のCコンパイラを調査します.
 6668: 出力変数@code{CC}を,見つかったコンパイラの名前に設定します.
 6669: 
 6670: @c This macro may, however, be invoked with an optional first argument
 6671: @c which, if specified, must be a space separated list of C compilers to
 6672: @c search for.  This just gives the user an opportunity to specify an
 6673: @c alternative search list for the C compiler.  For example, if you didn't
 6674: @c like the default order, then you could invoke @code{AC_PROG_CC} like
 6675: @c this:
 6676: @c 
 6677: しかし,このマクロは追加の最初の引数を用いて呼び出すことも可能で,それが
 6678: 指定されている場合,検索するCコンパイラのスペースで区切られているリスト
 6679: にする必要があります.これは,別のCコンパイラの検索リストを指定する機会
 6680: をユーザに与えるだけです.例えば,デフォルトの順序が好きではない場合,以
 6681: 下のような@code{AC_PROG_CC}を呼び出すことが可能です.
 6682: 
 6683: @example
 6684: AC_PROG_CC(cl egcs gcc cc)
 6685: @end example
 6686: 
 6687: @c If using the @sc{gnu} C compiler, set shell variable @code{GCC} to
 6688: @c @samp{yes}.  If output variable @code{CFLAGS} was not already set, set
 6689: @c it to @option{-g -O2} for the @sc{gnu} C compiler (@option{-O2} on systems
 6690: @c where GCC does not accept @option{-g}), or @option{-g} for other compilers.
 6691: @c 
 6692: @sc{gnu} Cコンパイラを使用する場合,シェル変数の@code{GCC}を@samp{yes}に
 6693: 設定します.出力変数@code{CFLAGS}がいまだ設定されていない場合,@sc{gnu}
 6694: Cコンパイラに対しては@option{-g -O2}に設定し(GCCが @samp{-g}を受け入れな
 6695: いシステムは@samp{-O2}),それ以外のコンパイラに対しては@option{-g}に設定
 6696: します.
 6697: @end defmac
 6698: 
 6699: @defmac AC_PROG_CC_C_O
 6700: @maindex PROG_CC_C_O
 6701: @cvindex NO_MINUS_C_MINUS_O
 6702: @c If the C compiler does not accept the @option{-c} and @option{-o} options
 6703: @c simultaneously, define @code{NO_MINUS_C_MINUS_O}.  This macro actually
 6704: @c tests both the compiler found by @code{AC_PROG_CC}, and, if different,
 6705: @c the first @code{cc} in the path.  The test fails if one fails.  This
 6706: @c macro was created for @sc{gnu} Make to choose the default C compilation
 6707: @c rule.
 6708: @c 
 6709: Cコンパイラが@samp{-c}と@samp{-o}オプションを同時に受け入れない場合,
 6710: @code{NO_MINUS_C_MINUS_O}を定義します.このマクロは,@code{AC_PROG_CC}で
 6711: 見つかったコンパイラと,パスの最初の@code{cc}がそれと異なっている場合は
 6712: その両方を,実際にテストします.
 6713: @end defmac
 6714: 
 6715: @defmac AC_PROG_CC_STDC
 6716: @maindex PROG_CC_STDC
 6717: @ovindex CC
 6718: @c If the C compiler is not in @sc{ansi} C mode by default, try to add an
 6719: @c option to output variable @code{CC} to make it so.  This macro tries
 6720: @c various options that select @sc{ansi} C on some system or another.  It
 6721: @c considers the compiler to be in @sc{ansi} C mode if it handles function
 6722: @c prototypes correctly.
 6723: @c 
 6724: Cコンパイラがデフォルトで@sc{ansi} Cモードでない場合,そうするためのオプ
 6725: ションを出力変数@code{CC}に追加します.このマクロは,システムによって
 6726: @sc{ansi} Cを選択するために様々なオプションを試します.関数のプロトタイ
 6727: プを正しく扱う場合,@sc{ansi} Cモードだと判断します.
 6728: 
 6729: @c If you use this macro, you should check after calling it whether the C
 6730: @c compiler has been set to accept @sc{ansi} C; if not, the shell variable
 6731: @c @code{ac_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
 6732: @c code in @sc{ansi} C, you can make an un-@sc{ansi}fied copy of it by
 6733: @c using the program @code{ansi2knr}, which comes with Automake.
 6734: @c 
 6735: このマクロを使用する場合,それを呼び出した後に,Cコンパイラが@sc{ansi} C 
 6736: を受け入れるための設定があるかどうかを調査すべきです.存在しない場合,シェ
 6737: ル変数@code{ac_cv_prog_cc_stdc}は@samp{no}に設定されます.ソースコードを
 6738: @sc{ansi} Cで書いている場合,Automakeでインストールされるプログラム
 6739: @code{ansi2knr}を使用することで,それを非@sc{ansi}にしてコピーすることが
 6740: 可能です.
 6741: @end defmac
 6742: 
 6743: @defmac AC_PROG_CPP
 6744: @maindex PROG_CPP
 6745: @ovindex CPP
 6746: @c Set output variable @code{CPP} to a command that runs the
 6747: @c C preprocessor.  If @samp{$CC -E} doesn't work, @file{/lib/cpp} is used.
 6748: @c It is only portable to run @code{CPP} on files with a @file{.c}
 6749: @c extension.
 6750: @c 
 6751: 出力変数@code{CPP}を,Cプリプロセッサを実行するコマンドに設定ます.
 6752: @samp{$CC -E}が動作しない場合,@file{/lib/cpp}を使用します.拡張子が
 6753: @file{.c}のファイルで@code{CPP}を実行することは移植性のためだけです.
 6754: 
 6755: @c If the current language is C (@pxref{Language Choice}), many of the
 6756: @c specific test macros use the value of @code{CPP} indirectly by calling
 6757: @c @code{AC_TRY_CPP}, @code{AC_CHECK_HEADER}, @code{AC_EGREP_HEADER}, or
 6758: @c @code{AC_EGREP_CPP}.
 6759: @c 
 6760: 現在の言語がCの場合(@pxref{Language Choice}),特定のテストマクロには,
 6761: @code{AC_TRY_CPP},@code{AC_CHECK_HEADER},@code{AC_EGREP_HEADER},また
 6762: は,@code{AC_EGREP_CPP}の呼び出しで,間接的に@code{CPP}の値を使用するも
 6763: のもたくさんあります.
 6764: 
 6765: @c Some preprocessors don't indicate missing include files by the error
 6766: @c status.  For such preprocessors an internal variable is set that causes
 6767: @c other macros to check the standard error from the preprocessor and
 6768: @c consider the test failed if any warnings have been reported.
 6769: @c 
 6770: プロセッサによっては,足りないインクルードファイルをエラーステータスで示
 6771: さないものもあります.そのようなプロセッサに対する内部変数は,プリプロセッ
 6772: サからの標準エラーを調査するための他のマクロを設定し,警告が報告された場
 6773: 合はテストに失敗したと判断します.
 6774: @end defmac
 6775: 
 6776: @c The following macros check for C compiler or machine architecture
 6777: @c features.  To check for characteristics not listed here, use
 6778: @c @code{AC_TRY_COMPILE} (@pxref{Examining Syntax}) or @code{AC_TRY_RUN}
 6779: @c (@pxref{Run Time})
 6780: @c 
 6781: 以下のマクロは,Cコンパイラやマシンアーキテクチャの特徴を調査します.こ
 6782: こでリストアップされない特徴を調査するために,@code{AC_TRY_COMPILE}
 6783: (@pxref{Examining Syntax})や@code{AC_TRY_RUN}(@pxref{Run Time})を使用し
 6784: てください.
 6785: 
 6786: @defmac AC_C_BIGENDIAN
 6787: @maindex C_BIGENDIAN
 6788: @cvindex WORDS_BIGENDIAN
 6789: @cindex Endianness
 6790: @c If words are stored with the most significant byte first (like Motorola
 6791: @c and SPARC, but not Intel and VAX, CPUs), define @code{WORDS_BIGENDIAN}.
 6792: @c 
 6793: (IntelとVAXとは異なり,MotorolaとSPARCのCPUのように)wordが最上位バイトに
 6794: 最初に保存される場合,@code{WORDS_BIGENDIAN}を定義します.
 6795: @end defmac
 6796: 
 6797: @defmac AC_C_CONST
 6798: @maindex C_CONST
 6799: @cvindex const
 6800: @c If the C compiler does not fully support the @sc{ansi} C qualifier
 6801: @c @code{const}, define @code{const} to be empty.  Some C compilers that do
 6802: @c not define @code{__STDC__} do support @code{const}; some compilers that
 6803: @c define @code{__STDC__} do not completely support @code{const}.  Programs
 6804: @c can simply use @code{const} as if every C compiler supported it; for
 6805: @c those that don't, the @file{Makefile} or configuration header file will
 6806: @c define it as empty.
 6807: @c 
 6808: Cコンパイラが@sc{ansi} Cの修飾子@code{const}を完全にサポートしない場合, 
 6809: @code{const}を空で定義します.@code{__STDC__}を定義しないCコンパイラには,
 6810: @code{const}をサポートするものもあります.@code{__STDC__}を定義するCコン
 6811: パイラには,@code{const}を完全にサポートしないものもあります.全てのCコ
 6812: ンパイラが@code{const}をサポートするかのように,プログラムはそれを使用す
 6813: ることができます.サポートしないもののために@file{Makefile}やコンフィグ
 6814: レーションヘッダファイルは,それを空で定義します.
 6815: 
 6816: @c Occasionally installers use a C++ compiler to compile C code, typically
 6817: @c because they lack a C compiler.  This causes problems with @code{const},
 6818: @c because C and C++ treat @code{const} differently.  For example:
 6819: @c 
 6820: Cコンパイラが無いことために,インストールしている人がCコードをコンパイル
 6821: するためにC++コンパイラを使用することもあります.CとC++は@code{const}を
 6822: ことなる方法で扱うので,これは@code{const}の問題が生じます.例えば,以下
 6823: のようにします.
 6824: 
 6825: @example
 6826: const int foo;
 6827: @end example
 6828: 
 6829: @noindent
 6830: @c is valid in C but not in C++.  These differences unfortunately cannot be
 6831: @c papered over by defining @code{const} to be empty.
 6832: @c 
 6833: Cでは有効ですがC++ではそうではありません.残念ながら,これらの違いを
 6834: @code{const}を空で定義することで誤魔化すことは不可能です.
 6835: 
 6836: @c If @code{autoconf} detects this situation, it leaves @code{const} alone,
 6837: @c as this generally yields better results in practice.  However, using a
 6838: @c C++ compiler to compile C code is not recommended or supported, and
 6839: @c installers who run into trouble in this area should get a C compiler
 6840: @c like GCC to compile their C code.
 6841: @c 
 6842: @code{autoconf}がこの状況を検出した場合,一般的に実際問題としてより良い
 6843: 結果になるので,それは@code{const}のままにしておきます.しかし,Cコード
 6844: コンパイルするためにC++コンパイラを使用することは推奨されていませんし,
 6845: さっポートもしていません.そして,この状況で問題となっているインストール
 6846: している人は,CコードをコンパイルするためにGCCのようなCコンパイラを入手
 6847: すべきです.
 6848: @end defmac
 6849: 
 6850: @defmac AC_C_VOLATILE
 6851: @maindex C_VOLATILE
 6852: @cvindex volatile
 6853: @c If the C compiler does not understand the keyword @code{volatile},
 6854: @c define @code{volatile} to be empty.  Programs can simply use
 6855: @c @code{volatile} as if every C compiler supported it; for those that do
 6856: @c not, the @file{Makefile} or configuration header will define it as
 6857: @c empty.
 6858: @c 
 6859: Cコンパイラがキーワード@code{volatile}を理解しない場合,@code{volatile} 
 6860: を空で定義します.プログラムでは@code{volatile}をサポートしているコンパ
 6861: イラのように単純に使用することが可能です.サポートしないものに対しては,
 6862: @file{Makefile}やコンフィグレーションヘッダで,それを空として定義されま
 6863: す.
 6864: 
 6865: @c If the correctness of your program depends on the semantics of
 6866: @c @code{volatile}, simply defining it to be empty does, in a sense, break
 6867: @c your code.  However, given that the compiler does not support
 6868: @c @code{volatile}, you are at its mercy anyway.  At least your
 6869: @c program will compile, when it wouldn't before.
 6870: @c 
 6871: プログラムの正当性が@code{volatile}の意味に依存している場合,単純に空で
 6872: 定義するとある意味ではコードが壊れます.しかし,@code{volatile}をサポー
 6873: トしていないコンパイラでは,自分で何とかしてください.少なくともプログラ
 6874: ムはコンパイルされますが,多分駄目でしょう.
 6875: 
 6876: @c In general, the @code{volatile} keyword is a feature of @sc{ansi} C, so
 6877: @c you might expect that @code{volatile} is available only when
 6878: @c @code{__STDC__} is defined.  However, Ultrix 4.3's native compiler does
 6879: @c support volatile, but does not defined @code{__STDC__}.
 6880: @c 
 6881: 一般的に,@code{volatile}キーワードは@sc{ansi} Cの機能なので,
 6882: @code{__STDC__}が定義されている時のみ,@code{volatile}が利用可能だと期待
 6883: するかもしれません.しかし,Ultrix 4.3のネイティブコンパイラは
 6884: @code{volatile}をサポートとしていますが,@code{__STDC__}を定義しません.
 6885: @end defmac
 6886: 
 6887: @defmac AC_C_INLINE
 6888: @maindex C_INLINE
 6889: @cvindex inline
 6890: @c If the C compiler supports the keyword @code{inline}, do nothing.
 6891: @c Otherwise define @code{inline} to @code{__inline__} or @code{__inline}
 6892: @c if it accepts one of those, otherwise define @code{inline} to be empty.
 6893: @c 
 6894: Cコンパイラがキーワード@code{inline}をサポートする場合,何もしません.そ
 6895: れ以外では,受け入れられるものによって,@code{inline}を@code{__inline__} 
 6896: や@code{__inline}に定義し,それ以外では@code{inline}を空で定義します.
 6897: @end defmac
 6898: 
 6899: @defmac AC_C_CHAR_UNSIGNED
 6900: @maindex C_CHAR_UNSIGNED
 6901: @cvindex __CHAR_UNSIGNED__
 6902: @c If the C type @code{char} is unsigned, define @code{__CHAR_UNSIGNED__},
 6903: @c unless the C compiler predefines it.
 6904: @c 
 6905: Cの型@code{char}がunsignedの場合,Cコンパイラが前もって定義していない限
 6906: り,@code{__CHAR_UNSIGNED__}を定義します.
 6907: @end defmac
 6908: 
 6909: @defmac AC_C_LONG_DOUBLE
 6910: @maindex C_LONG_DOUBLE
 6911: @cvindex HAVE_LONG_DOUBLE
 6912: @c If the C compiler supports the @code{long double} type, define
 6913: @c @code{HAVE_LONG_DOUBLE}.  Some C compilers that do not define
 6914: @c @code{__STDC__} do support the @code{long double} type; some compilers
 6915: @c that define @code{__STDC__} do not support @code{long double}.
 6916: @c 
 6917: Cコンパイラが@code{long double}の型をサポートする場合,
 6918: @code{HAVE_LONG_DOUBLE}を定義します.@code{__STDC__}を定義しないCコンパ
 6919: イラで,@code{long double}の型をサポートするものもあります.
 6920: @code{__STDC__}を定義するCコンパイラで,@code{long double}をサポートしな
 6921: いものもあります.
 6922: @end defmac
 6923: 
 6924: @defmac AC_C_STRINGIZE
 6925: @maindex C_STRINGIZE
 6926: @cvindex HAVE_STRINGIZE
 6927: @c If the C preprocessor supports the stringizing operator, define
 6928: @c @code{HAVE_STRINGIZE}.  The stringizing operator is @samp{#} and is
 6929: @c found in macros such as this:
 6930: @c 
 6931: Cプリプロセッサがstringizingオペレーターをサポートする場合,
 6932: @code{HAVE_STRINGIZE}を定義します.stringizingオペレーターは@samp{#}と,
 6933: 以下のようなマクロで見つかります.
 6934: 
 6935: @example
 6936: #define x(y) #y
 6937: @end example
 6938: @end defmac
 6939: 
 6940: @defmac AC_C_PROTOTYPES
 6941: @maindex C_PROTOTYPES
 6942: @cvindex PROTOTYPES
 6943: @cvindex PARAMS
 6944: @c Check to see if function prototypes are understood by the compiler.  If
 6945: @c so, define @samp{PROTOTYPES}.  In the case the compiler does not handle
 6946: @c prototypes, you should use @code{ansi2knr}, which comes with the
 6947: @c Automake distribution, to unprotoize function definitions.  For
 6948: @c function prototypes, you should first define @code{PARAMS}:
 6949: @c 
 6950: 関数のプロトタイプをコンパイラが理解するかどうかを知るために調査します.
 6951: その場合は@samp{PROTOTYPES}を定義します.コンパイラがプロトタイプを処理
 6952: しない場合,関数定義のプロトタイプを止めるために,Automake配布物でインス
 6953: トールされる@code{ansi2knr}を使用すべきです.関数のプロトタイプに対して,
 6954: 最初に@code{PARAMS}を定義すべきです.
 6955: 
 6956: @example
 6957: #ifndef PARAMS
 6958: # if PROTOTYPES
 6959: #  define PARAMS(protos) protos
 6960: # else /* no PROTOTYPES */
 6961: #  define PARAMS(protos) ()
 6962: # endif /* no PROTOTYPES */
 6963: #endif
 6964: @end example
 6965: 
 6966: @noindent
 6967: @c then use it this way:
 6968: @c 
 6969: そして,以下のように使用してください.
 6970: 
 6971: @example
 6972: size_t my_strlen PARAMS ((const char *));
 6973: @end example
 6974: @end defmac
 6975: 
 6976: @defmac AC_PROG_GCC_TRADITIONAL
 6977: @maindex PROG_GCC_TRADITIONAL
 6978: @ovindex CC
 6979: @c Add @option{-traditional} to output variable @code{CC} if using the
 6980: @c @sc{gnu} C compiler and @code{ioctl} does not work properly without
 6981: @c @option{-traditional}.  That usually happens when the fixed header files
 6982: @c have not been installed on an old system.  Since recent versions of the
 6983: @c @sc{gnu} C compiler fix the header files automatically when installed,
 6984: @c this is becoming a less prevalent problem.
 6985: @c 
 6986: 使用している@sc{gnu} Cコンパイラと@code{ioctl}が,@samp{-traditional}無
 6987: しでは正確に動作しない場合,出力変数@code{CC}に@samp{-traditional}を加え
 6988: ます.それは,通常,修正されたヘッダファイルが古いシステムにインストール
 6989: されていないときに発生します.@sc{gnu} Cコンパイラの最近のバージョンは,
 6990: インストール時に,自動的にヘッダーファイルを修正するので,これはほとんど
 6991: 問題になりません.
 6992: @end defmac
 6993: 
 6994: 
 6995: @node C++ Compiler, Fortran 77 Compiler, C Compiler, Compilers and Preprocessors
 6996: @subsection C++の特徴
 6997: 
 6998: @defmac AC_PROG_CXX (@r{[}@var{compiler-search-list}@r{]})
 6999: @maindex PROG_CXX
 7000: @ovindex CXX
 7001: @ovindex CXXFLAGS
 7002: @c Determine a C++ compiler to use.  Check if the environment variable
 7003: @c @code{CXX} or @code{CCC} (in that order) is set; if so, then set output
 7004: @c variable @code{CXX} to its value.
 7005: @c 
 7006: 使用するC++コンパイラを定義します.環境変数@code{CXX}や@code{CCC}が設定
 7007: されているかどうか(この順番で)調査します.その場合,出力変数をその値に設
 7008: 定します.
 7009: 
 7010: @c Otherwise, if the macro is invoked without an argument, then search for
 7011: @c a C++ compiler under the likely names (first @code{g++} and @code{c++}
 7012: @c then other names).  If none of those checks succeed, then as a last
 7013: @c resort set @code{CXX} to @code{g++}.
 7014: @c 
 7015: それ以外でマクロが引数無しで呼び出されている場合,以下のような名前のC++ 
 7016: コンパイラを探します(最初が@code{g++}と@code{c++}その後でそれ以外の名前
 7017: です.@footnote{訳注:それ以外の名前は,@code{gcc}, @code{CC},
 7018: @code{cxx},そして@code{cc++}だと思います.}.これらの調査がすべて失敗し
 7019: た場合,最後の手段で@code{CXX}を@code{g++}に設定します.
 7020: 
 7021: @c This macro may, however, be invoked with an optional first argument
 7022: @c which, if specified, must be a space separated list of C++ compilers to
 7023: @c search for.  This just gives the user an opportunity to specify an
 7024: @c alternative search list for the C++ compiler.  For example, if you
 7025: @c didn't like the default order, then you could invoke @code{AC_PROG_CXX}
 7026: @c like this:
 7027: @c 
 7028: しかし,このマクロはオプション引数を用いて呼び出すことが可能で,指定する
 7029: 場合は,検索するC++コンパイラをスペースで区切ったリストにする必要があり
 7030: ます.これで,ユーザがC++コンパイラに対する代わりの検索リストを指定する
 7031: 機会が与えられます.例えば,デフォルトの順序がいやな場合は,以下のように
 7032: して@code{AC_PROG_CXX}を呼び出すことが可能です.
 7033: 
 7034: @example
 7035: AC_PROG_CXX(cl KCC CC cxx cc++ xlC aCC c++ g++ egcs gcc)
 7036: @end example
 7037: 
 7038: @c If using the @sc{gnu} C++ compiler, set shell variable @code{GXX} to
 7039: @c @samp{yes}.  If output variable @code{CXXFLAGS} was not already set, set
 7040: @c it to @option{-g -O2} for the @sc{gnu} C++ compiler (@option{-O2} on
 7041: @c systems where G++ does not accept @option{-g}), or @option{-g} for other
 7042: @c compilers.
 7043: @c 
 7044: @sc{gnu} C++コンパイラを使用している場合,シェル変数@code{GXX}を
 7045: @samp{yes}に設定します.出力変数@code{CXXFLAGS}がまだ設定されていない場
 7046: 合,@sc{gnu}C++コンパイラに対しては@option{-g -O2}(@samp{-g}を受け入れな
 7047: いG++のシステムでは@samp{-O2})を設定し,他のコンパイラでは@samp{-g}を設
 7048: 定します.
 7049: @end defmac
 7050: 
 7051: @defmac AC_PROG_CXXCPP
 7052: @maindex PROG_CXXCPP
 7053: @ovindex CXXCPP
 7054: @c Set output variable @code{CXXCPP} to a command that runs the C++
 7055: @c preprocessor.  If @samp{$CXX -E} doesn't work, @file{/lib/cpp} is used.
 7056: @c It is only portable to run @code{CXXCPP} on files with a @file{.c},
 7057: @c @file{.C}, or @file{.cc} extension.
 7058: @c 
 7059: 出力変数@code{CXXCPP}を,C++プリプロセッサを実行するコマンドに設定します.
 7060: @samp{$CXX -E}が動作しない場合,@file{/lib/cpp}を使用します.@file{.c},
 7061: @file{.C},または@file{.cc}の拡張子を持つファイルで@code{CXXCPP}を実行す
 7062: るのは移植性のためだけです.
 7063: 
 7064: @c If the current language is C++ (@pxref{Language Choice}), many of the
 7065: @c specific test macros use the value of @code{CXXCPP} indirectly by
 7066: @c calling @code{AC_TRY_CPP}, @code{AC_CHECK_HEADER},
 7067: @c @code{AC_EGREP_HEADER}, or @code{AC_EGREP_CPP}.
 7068: @c 
 7069: 現在の言語がC++の場合(@pxref{Language Choice}),特定のテストマクロの多く
 7070: は,@code{AC_TRY_CPP},@code{AC_CHECK_HEADER},@code{AC_EGREP_HEADER},
 7071: または@code{AC_EGREP_CPP}の呼び出しで,間接的に@code{CXXCPP}の値を使用し
 7072: ます.
 7073: 
 7074: @c Some preprocessors don't indicate missing include files by the error
 7075: @c status.  For such preprocessors an internal variable is set that causes
 7076: @c other macros to check the standard error from the preprocessor and
 7077: @c consider the test failed if any warnings have been reported.  However,
 7078: @c it is not known whether such broken preprocessors exist for C++.
 7079: @c 
 7080: プリプロセッサによっては,足りないインクルードファイルをエラーステータス
 7081: で示さないものもあります.そのようなプリプロセッサに対して,内部変数は,
 7082: プリプロセッサからの標準エラー出力を調査し,する他のマクロに設定され,警
 7083: 告が報告されない場合はテストに失敗したと考えます.しかし,C++に対してそ
 7084: のような壊れ方をしているプリプロセッサがあるかどうかは知りません.
 7085: @end defmac
 7086: 
 7087: 
 7088: @node Fortran 77 Compiler,  , C++ Compiler, Compilers and Preprocessors
 7089: @subsection Fortran 77の特徴
 7090: 
 7091: @defmac AC_PROG_F77 (@r{[}@var{compiler-search-list}@r{]})
 7092: @maindex PROG_FORTRAN
 7093: @ovindex F77
 7094: @ovindex FFLAGS
 7095: @c Determine a Fortran 77 compiler to use.  If @code{F77} is not already
 7096: @c set in the environment, then check for @code{g77} and @code{f77}, and
 7097: @c then some other names.  Set the output variable @code{F77} to the name
 7098: @c of the compiler found.
 7099: @c 
 7100: 使用するFortran 77コンパイラを決定します.@code{F77}が環境変数でまだ設定
 7101: されていない場合,@code{g77},@code{f77},そしてその他の名前を調査します.
 7102: 見つかったコンパイラ名を,出力変数@code{F77}に設定します.
 7103: 
 7104: @c This macro may, however, be invoked with an optional first argument
 7105: @c which, if specified, must be a space separated list of Fortran 77
 7106: @c compilers to search for.  This just gives the user an opportunity to
 7107: @c specify an alternative search list for the Fortran 77 compiler.  For
 7108: @c example, if you didn't like the default order, then you could invoke
 7109: @c @code{AC_PROG_F77} like this:
 7110: @c 
 7111: しかし,このマクロはオプション引数を用いて呼び出すことが可能で,指定する
 7112: 場合は,検索するFortran 77コンパイラをスペースで区切ったリストにする必要
 7113: があります.これで,ユーザがFortran 77コンパイラに対する代わりの検索リス
 7114: トを指定する機会が与えられます.例えば,デフォルトの順序がいやな場合は,
 7115: 以下のようにして@code{AC_PROG_F77}を呼び出すことが可能です.
 7116: 
 7117: @example
 7118: AC_PROG_F77(fl32 f77 fort77 xlf cf77 g77 f90 xlf90)
 7119: @end example
 7120: 
 7121: @c If using @code{g77} (the @sc{gnu} Fortran 77 compiler), then
 7122: @c @code{AC_PROG_F77} will set the shell variable @code{G77} to @samp{yes}.
 7123: @c If the output variable @code{FFLAGS} was not already set in the
 7124: @c environment, then set it to @option{-g -02} for @code{g77} (or @option{-O2}
 7125: @c where @code{g77} does not accept @option{-g}).  Otherwise, set
 7126: @c @code{FFLAGS} to @option{-g} for all other Fortran 77 compilers.
 7127: @c 
 7128: @code{g77}(@sc{gnu} Fortran 77コンパイラ)を使用している場合,
 7129: @code{AC_PROG_F77}はシェル変数@code{G77}を@samp{yes}に設定します.出力変
 7130: 数@code{FFLAGS}が環境変数で設定されていない場合,@code{g77}に対して
 7131: @samp{-g -O2}(@samp{-g}を受け入れない@code{g77} では@samp{-O2})を設定し,
 7132: 他のFortran 77コンパイラでは@samp{-g}を設定します.
 7133: @end defmac
 7134: 
 7135: @defmac AC_PROG_F77_C_O
 7136: @maindex PROG_F77_C_O
 7137: @cvindex F77_NO_MINUS_C_MINUS_O
 7138: @c Test if the Fortran 77 compiler accepts the options @option{-c} and
 7139: @c @option{-o} simultaneously, and define @code{F77_NO_MINUS_C_MINUS_O} if it
 7140: @c does not.
 7141: @c 
 7142: Fortran 77コンパイラが,オプション@samp{-c}と@samp{-o}を同時にを受け入れ
 7143: るかどうかテストし,そうでない場合は@code{F77_NO_MINUS_C_MINUS_O}を定義
 7144: します.
 7145: @end defmac
 7146: 
 7147: @c The following macros check for Fortran 77 compiler characteristics.  To
 7148: @c check for characteristics not listed here, use @code{AC_TRY_COMPILE}
 7149: @c (@pxref{Examining Syntax}) or @code{AC_TRY_RUN} (@pxref{Run Time}),
 7150: @c making sure to first set the current language to Fortran 77
 7151: @c @code{AC_LANG(Fortran 77)} (@pxref{Language Choice}).
 7152: @c 
 7153: 以下のマクロは,Fortran 77コンパイラの特徴を調査します.ここでリストアッ
 7154: プされていない特徴を調査するために,現在の言語がFortran
 7155: 77@code{AC_LANG_FORTRAN77}(@pxref{Language Choice}) に設定されていること
 7156: を最初に確認し,@code{AC_TRY_COMPILE}(@pxref{Examining Syntax})や
 7157: @code{AC_TRY_RUN}(@pxref{Run Time})を使用してください.
 7158: 
 7159: @defmac AC_F77_LIBRARY_LDFLAGS
 7160: @maindex F77_LIBRARY_LDFLAGS
 7161: @ovindex FLIBS
 7162: @c Determine the linker flags (e.g. @option{-L} and @option{-l}) for the
 7163: @c @dfn{Fortran 77 intrinsic and run-time libraries} that are required to
 7164: @c successfully link a Fortran 77 program or shared library.  The output
 7165: @c variable @code{FLIBS} is set to these flags.
 7166: @c 
 7167: Fortran 77プログラムや共有ライブラリをうまくリンクするために必要な
 7168: @dfn{Fortran 77イントリンシックとランタイムライブラリ}に対して,リンカフ
 7169: ラグ(例えば@samp{-L}と@samp{-l})を決定します.出力変数 @code{FLIBS}には,
 7170: これらのフラグが設定されます.
 7171: 
 7172: @c This macro is intended to be used in those situations when it is
 7173: @c necessary to mix, e.g. C++ and Fortran 77 source code into a single
 7174: @c program or shared library (@pxref{Mixing Fortran 77 With C and C++,,,
 7175: @c automake, GNU Automake}).
 7176: @c 
 7177: このマクロは,単一のプログラムや共有ライブラリに,例えば,C++とFortran
 7178: 77のソースコードを混在させる必要があるとき利用されます(@pxref{Mixing
 7179: Fortran 77 With C and C++, , , automake, GNU Automake}).
 7180: 
 7181: @c For example, if object files from a C++ and Fortran 77 compiler must be
 7182: @c linked together, then the C++ compiler/linker must be used for linking
 7183: @c (since special C++-ish things need to happen at link time like calling
 7184: @c global constructors, instantiating templates, enabling exception
 7185: @c support, etc.).
 7186: @c 
 7187: 例えば,C++とFortran 77コンパイラで生成されるオブジェクトファイルを,お
 7188: 互いにリンクする必要があるとき,リンクにはC++コンパイラ/リンカが使用され
 7189: るはずです(C++特有のものは,リンク時にグローバルコンストラクタ,インスタ
 7190: ンステンプレート,例外処理等を呼び出す必要が生じるためです).
 7191: 
 7192: @c However, the Fortran 77 intrinsic and run-time libraries must be linked
 7193: @c in as well, but the C++ compiler/linker doesn't know by default how to
 7194: @c add these Fortran 77 libraries.  Hence, the macro
 7195: @c @code{AC_F77_LIBRARY_LDFLAGS} was created to determine these Fortran 77
 7196: @c libraries.
 7197: @c 
 7198: しかし,Fortran 77イントリンシックとランタイムライブラリもリンクする必要
 7199: がありますが,C++コンパイラ/リンカは,Fortran 77ライブラリを追加する方法
 7200: をデフォルトでは知っていません.そのため,マクロ 
 7201: @code{AC_F77_LIBRARY_LDFLAGS}は,これらのFortran 77ライブラリを決定する
 7202: ために作成されました.
 7203: 
 7204: @c The macro @code{AC_F77_DUMMY_MAIN} or @code{AC_F77_MAIN} will probably
 7205: @c also be necessary to link C/C++ with Fortran; see below.
 7206: @c 
 7207: このマクロ@code{AC_F77_DUMMY_MAIN}や@code{AC_F77_MAIN}は,FortranでC/C++ 
 7208: にリンクする必要がある時もおそらく必要です.以下を参照してください.
 7209: @end defmac
 7210: 
 7211: @defmac AC_F77_DUMMY_MAIN (@r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]})
 7212: @maindex F77_DUMMY_MAIN
 7213: @cvindex F77_DUMMY_MAIN
 7214: @c With many compilers, the Fortran libraries detected by
 7215: @c @code{AC_F77_LIBRARY_LDFLAGS} provide their own @code{main} entry
 7216: @c function that initializes things like Fortran I/O, and which then calls
 7217: @c a user-provided entry function named e.g. @code{MAIN__} to run the
 7218: @c user's program.  The @code{AC_F77_DUMMY_MAIN} or @code{AC_F77_MAIN}
 7219: @c macro figures out how to deal with this interaction.
 7220: @c 
 7221: 多くのコンパイラでは,@code{AC_F77_LIBRARY_LDFLAGS}で見つかるFortranライ
 7222: ブラリは,Fortran I/Oのようなものを初期化したり,ユーザプログラムを実行
 7223: するために,例えば@code{MAIN__}のような名前を持つユーザ提供のエントリー
 7224: 関数を呼び出す,独自の@code{main}エントリー関数を提供しています.
 7225: @code{AC_F77_DUMMY_MAIN}や@code{AC_F77_MAIN}マクロは,この相互作用を扱う
 7226: 方法を理解します.
 7227: 
 7228: @c When using Fortran for purely numerical functions (no I/O, etcetera),
 7229: @c users often prefer to provide their own @code{main} and skip the Fortran
 7230: @c library initializations.  In this case, however, one may still need to
 7231: @c provide a dummy @code{MAIN__} routine in order to prevent linking errors
 7232: @c on some systems.  @code{AC_F77_DUMMY_MAIN} detects whether any such
 7233: @c routine is @emph{required} for linking, and what its name is; the shell
 7234: @c variable @code{F77_DUMMY_MAIN} holds this name, @code{unknown} when no
 7235: @c solution was found, and @code{none} when no such dummy main is needed.
 7236: @c 
 7237: (I/Oなどではない)純粋な数値関数に対してFortranを使用している時,ユーザは
 7238: 独自の@code{main}を提供し,Fortranライブラリの初期化を停止したいこともよ
 7239: くあります.しかしこの場合は,いくつかのシステムでのリンクエラーを避ける
 7240: ため,ダミーの@code{MAIN__}ルーチンを提供する必要があるかもしれません.
 7241: シェル変数@code{F77_DUMMY_MAIN}は,解決方法が見つからない時は
 7242: @code{unknown},そのようなダミーの@code{main}が不要な時は@code{none}とい
 7243: う値を保持します.
 7244: 
 7245: @c By default, @var{action-if-found} defines @code{F77_DUMMY_MAIN} to the
 7246: @c name of this routine (e.g. @code{MAIN__}) @emph{if} it is required.
 7247: @c @ovar{action-if-not-found} defaults to exiting with an error.
 7248: @c 
 7249: デフォルトで,必要な@emph{場合}は,@var{action-if-found}は
 7250: @code{F77_DUMMY_MAIN}をこのルーチン名(例えば@code{MAIN__})に定義します.
 7251: @r{[}@var{action-if-not-found}@r{]}はデフォルトでエラーで終了しま
 7252: す.
 7253: 
 7254: @c In order to link with Fortran routines, the user's C/C++ program should
 7255: @c then include the following code to define the dummy main if it is
 7256: @c needed:
 7257: @c 
 7258: Fortranとリンクするために,必要な場合はダミーの@code{main}を定義するため
 7259: に,userのC/C++プログラムで以下のようなコードをインクルードすべきです.
 7260: 
 7261: @example
 7262: #ifdef F77_DUMMY_MAIN
 7263: #  ifdef __cplusplus
 7264:      extern "C"
 7265: #  endif
 7266:    int F77_DUMMY_MAIN() @{ return 1; @}
 7267: #endif
 7268: @end example
 7269: 
 7270: @c Note that @code{AC_F77_DUMMY_MAIN} is called automatically from
 7271: @c @code{AC_F77_WRAPPERS}; there is generally no need to call it explicitly
 7272: @c unless one wants to change the default actions.
 7273: @c 
 7274: @code{AC_F77_DUMMY_MAIN}は@code{AC_F77_WRAPPERS}から自動的に呼び出される
 7275: ことに注意してください.一般的にデフォルトの動作を変更したくない限り,明
 7276: 示的にに呼び出す必要はありません.
 7277: @end defmac
 7278: 
 7279: @defmac AC_F77_MAIN
 7280: @maindex F77_MAIN
 7281: @cvindex F77_MAIN
 7282: @c As discussed above for @code{AC_F77_DUMMY_MAIN}, many Fortran libraries
 7283: @c allow you to provide an entry point called e.g. @code{MAIN__} instead of
 7284: @c the usual @code{main}, which is then called by a @code{main} function in
 7285: @c the Fortran libraries that initializes things like Fortran I/O.  The
 7286: @c @code{AC_F77_MAIN} macro detects whether it is @emph{possible} to
 7287: @c utilize such an alternate main function, and defines @code{F77_MAIN} to
 7288: @c the name of the function.  (If no alternate main function name is found,
 7289: @c @code{F77_MAIN} is simply defined to @code{main}.)
 7290: @c 
 7291: 上記の@code{AC_F77_DUMMY_MAIN}で議論したように,Fortranライブラリには,
 7292: 通常の@code{main}の代わりに,例えば@code{MAIN__}と言ったエントリーポイン
 7293: トを提供することが可能なものも多く,それは,Fortran I/Oのようなものを初
 7294: 期化するために,Fortranライブラリの@code{main}関数で呼び出されます.
 7295: @code{AC_F77_MAIN}は,そのような代理の@code{main}関数の利用が@emph{可能
 7296: か}どうかを検出し,@code{F77_MAIN}を関数の名前に定義します.(代理の
 7297: @code{main}関数の名前が見つからない場合,@code{F77_MAIN}は単純に
 7298: @code{main}に定義します.)
 7299: 
 7300: @c Thus, when calling Fortran routines from C that perform things like I/O,
 7301: @c one should use this macro and name the "main" function @code{F77_MAIN}
 7302: @c instead of @code{main}.
 7303: @c 
 7304: このため,Fortranルーチンが,I/Oのようなものを実行するためにCから呼び出
 7305: されるとき,このマクロを使用し,"main"関数を@code{main}ではなく
 7306: @code{F77_MAIN}の名前にすべきです.
 7307: @end defmac
 7308: 
 7309: @defmac AC_F77_WRAPPERS
 7310: @maindex F77_WRAPPERS
 7311: @cvindex F77_FUNC
 7312: @cvindex F77_FUNC_
 7313: @c Defines C macros @code{F77_FUNC(name,NAME)} and
 7314: @c @code{F77_FUNC_(name,NAME)} to properly mangle the names of C/C++
 7315: @c identifiers, and identifiers with underscores, respectively, so that
 7316: @c they match the name-mangling scheme used by the Fortran 77 compiler.
 7317: @c 
 7318: 名前がmangleされる方法をFortran 77コンパイラで使用されているものに一致す
 7319: るため,mangleされているC/C++の識別子とアンダースコアが付いた識別子の名
 7320: 前を正しくするために,Cマクロの@code{F77_FUNC(name,NAME)}と
 7321: @code{F77_FUNC_(name,NAME)}をそれぞれ定義します
 7322: 
 7323: @c Fortran 77 is case-insensitive, and in order to achieve this the Fortran
 7324: @c 77 compiler converts all identifiers into a canonical case and format.
 7325: @c To call a Fortran 77 subroutine from C or to write a C function that is
 7326: @c callable from Fortran 77, the C program must explicitly use identifiers
 7327: @c in the format expected by the Fortran 77 compiler.  In order to do this,
 7328: @c one simply wraps all C identifiers in one of the macros provided by
 7329: @c @code{AC_F77_WRAPPERS}.  For example, suppose you have the following
 7330: @c Fortran 77 subroutine:
 7331: @c 
 7332: Fortran 77は大文字小文字の区別が無く,こうするために,Fortran 77コンパイ
 7333: ラは全ての識別子を標準的な文字と書式に変換します.CからFortran 77のサブ
 7334: ルーチンを呼び出したり,Fortran 77から呼び出し可能なC関数を書いたりする
 7335: ために,CプログラムではFortran 77コンパイラが期待する書式で,識別子を明
 7336: 示的に使用する必要があります.こうするために,全てのC識別子を
 7337: @code{AC_F77_WRAPPERS}で提供されるマクロの一つで,単純にラッパー関数にし
 7338: ます.例えば,以下のようなFortran 77のサブルーチンがあるとします.
 7339: 
 7340: @example
 7341:       subroutine foobar(x,y)
 7342:       double precision x, y
 7343:       y = 3.14159 * x
 7344:       return
 7345:       end
 7346: @end example
 7347: 
 7348: @c You would then declare its prototype in C or C++ as:
 7349: @c 
 7350: CやC++のプロトタイプで,以下のように宣言します.
 7351: 
 7352: @example
 7353: #define FOOBAR_F77 F77_FUNC(foobar,FOOBAR)
 7354: #ifdef __cplusplus
 7355: extern "C"  /* prevent C++ name mangling */
 7356: #endif
 7357: void FOOBAR_F77(double *x, double *y);
 7358: @end example
 7359: 
 7360: @c Note that we pass both the lowercase and uppercase versions of the
 7361: @c function name to @code{F77_FUNC} so that it can select the right one.
 7362: @c Note also that all parameters to Fortran 77 routines are passed as
 7363: @c pointers (@pxref{Mixing Fortran 77 With C and C++,,, automake, GNU
 7364: @c Automake}).
 7365: @c 
 7366: 正しいものが選択できるように,関数名の大文字と小文字の両方のバージョンを
 7367: @code{F77_FUNC}に渡していることに注意してください.また,Fortran 77のルー
 7368: チンへの全てのパラメータを,ポインタとして渡していることにも注意してくだ
 7369: さい(@pxref{Mixing Fortran 77 With C and C++,,, automake, GNU Automake}).
 7370: 
 7371: @c Although Autoconf tries to be intelligent about detecting the
 7372: @c name-mangling scheme of the Fortran 77 compiler, there may be Fortran 77
 7373: @c compilers that it doesn't support yet.  In this case, the above code
 7374: @c will generate a compile-time error, but some other behavior
 7375: @c (e.g. disabling Fortran-related features) can be induced by checking
 7376: @c whether the @code{F77_FUNC} macro is defined.
 7377: @c 
 7378: AutoconfはFortran 77が名前をmangleする手法を検出するために知的な手法で試
 7379: みていますが,Fortran 77コンパイラはそれをまだサポートしていないかもしれ
 7380: ません.この場合,上記のコードはコンパイル時にエラーとなりますが,それ以
 7381: 外の動作(例えば,Fortranに関連する機能の停止)は,@code{F77_FUNC}マクロが
 7382: 定義されているかどうかを調査することで引き起こされます.
 7383: 
 7384: @c Now, to call that routine from a C program, we would do something like:
 7385: @c 
 7386: さて,そのようなルーチンをCプログラムから呼び出すために,以下のようにし
 7387: てみます.
 7388: 
 7389: @example
 7390: @{
 7391:     double x = 2.7183, y;
 7392:     FOOBAR_F77(&x, &y);
 7393: @}
 7394: @end example
 7395: 
 7396: @c If the Fortran 77 identifier contains an underscore
 7397: @c (e.g. @code{foo_bar}), you should use @code{F77_FUNC_} instead of
 7398: @c @code{F77_FUNC} (with the same arguments).  This is because some Fortran
 7399: @c 77 compilers mangle names differently if they contain an underscore.
 7400: @c 
 7401: Fortran 77の識別子がアンダースコアを含んでいる(例えば@code{foo_bar}の)場
 7402: 合,@code{F77_FUNC}の代わりに@code{F77_FUNC_}を(同じ引数で)使用すべきで
 7403: す.これは,アンダースコアを含んでいる場合,Fortran 77コンパイラによって
 7404: は異なる名前にmangleするものもあるからです.
 7405: @end defmac
 7406: 
 7407: @defmac AC_F77_FUNC (@var{name}, @r{[}@var{shellvar}@r{]})
 7408: @maindex F77_FUNC
 7409: @c Given an identifier @var{name}, set the shell variable @var{shellvar} to
 7410: @c hold the mangled version @var{name} according to the rules of the
 7411: @c Fortran 77 linker (see also @code{AC_F77_WRAPPERS}).  @var{shellvar} is
 7412: @c optional; if it is not supplied, the shell variable will be simply
 7413: @c @var{name}.  The purpose of this macro is to give the caller a way to
 7414: @c access the name-mangling information other than through the C
 7415: @c preprocessor as above; for example, to call Fortran routines from some
 7416: @c language other than C/C++.
 7417: @c 
 7418: 識別子@var{name}が与えられている場合,シェル変数@var{shellvar}をFortran
 7419: 77リンカの規則(@code{AC_F77_WRAPPERS}も参照してください)によって,mangle 
 7420: されるバージョンの@var{name}を保持するように設定します.@var{shellvar}は
 7421: オプションです.提供されていない場合シェル変数は単純に@var{name}になりま
 7422: す.このマクロの目的は,上記のようにCプリプロセッサを通じてではなく,呼
 7423: び出し側に名前のmangleに関する情報にアクセスする方法を与えることです.例
 7424: えば,C/C++以外の言語からFortranルーチンを呼び出すためです.
 7425: @end defmac
 7426: 
 7427: 
 7428: @node System Services, UNIX Variants, Compilers and Preprocessors, Existing Tests
 7429: @section システムサービス
 7430: 
 7431: @c The following macros check for operating system services or
 7432: @c capabilities.
 7433: @c 
 7434: 以下のマクロはオペレーティングシステムのサービスや機能を調査します.
 7435: 
 7436: @defmac AC_PATH_X
 7437: @maindex PATH_X
 7438: @c Try to locate the X Window System include files and libraries.  If the
 7439: @c user gave the command line options @option{--x-includes=@var{dir}} and
 7440: @c @option{--x-libraries=@var{dir}}, use those directories.  If either or
 7441: @c both were not given, get the missing values by running @code{xmkmf} on a
 7442: @c trivial @file{Imakefile} and examining the @file{Makefile} that it
 7443: @c produces.  If that fails (such as if @code{xmkmf} is not present), look
 7444: @c for them in several directories where they often reside.  If either
 7445: @c method is successful, set the shell variables @code{x_includes} and
 7446: @c @code{x_libraries} to their locations, unless they are in directories
 7447: @c the compiler searches by default.
 7448: @c 
 7449: X Window Systemのインクルードファイルとライブラリの場所を調査します.ユー
 7450: ザがコマンドラインオプションで,@samp{--x-includes=@var{dir}}と
 7451: @samp{--x-libraries=@var{dir}}を与えたている場合,そのディレクトリを使用
 7452: します.どちらか一つまたは両方とも与えられない場合,@code{xmkmf}を平凡な
 7453: @file{Imakefile}で実行し,生成された@file{Makefile}を調査し,足りない値
 7454: を取得します.(@code{xmkmf}が存在しない等のように)失敗した場合,配置され
 7455: ることが多いディレクトリ等で検索します.いずれかの手法で成功した場合,コ
 7456: ンパイラがデフォルトで検索するディレクトリに無い限り,シェル変数
 7457: @code{x_includes}と@code{x_libraries}をその場所に設定します.
 7458: 
 7459: @c If both methods fail, or the user gave the command line option
 7460: @c @option{--without-x}, set the shell variable @code{no_x} to @samp{yes};
 7461: @c otherwise set it to the empty string.
 7462: @c 
 7463: 両方の方法が失敗する,またはユーザがコマンドラインオプションの
 7464: @samp{--without-x}を与えている場合,シェル変数の@code{no_x}を@samp{yes} 
 7465: に設定し,それ以外では空の文字列に設定します.
 7466: @end defmac
 7467: 
 7468: @defmac AC_PATH_XTRA
 7469: @maindex PATH_XTRA
 7470: @ovindex X_CFLAGS
 7471: @ovindex X_LIBS
 7472: @ovindex X_EXTRA_LIBS
 7473: @ovindex X_PRE_LIBS
 7474: @cvindex X_DISPLAY_MISSING
 7475: @c An enhanced version of @code{AC_PATH_X}.  It adds the C compiler flags
 7476: @c that X needs to output variable @code{X_CFLAGS}, and the X linker flags
 7477: @c to @code{X_LIBS}.  Define @code{X_DISPLAY_MISSING} if X is not
 7478: @c available.
 7479: @c 
 7480: @code{AC_PATH_X}の拡張バージョンです.Xが必要とするCコンパイラフラグを出
 7481: 力変数@code{X_CFLAGS}に,Xリンカフラグを@code{X_LIBS}に追加します.Xが利
 7482: 用可能でない場合,@code{X_DISPLAY_MISSING}を定義します.
 7483: 
 7484: @c This macro also checks for special libraries that some systems need in
 7485: @c order to compile X programs.  It adds any that the system needs to
 7486: @c output variable @code{X_EXTRA_LIBS}.  And it checks for special X11R6
 7487: @c libraries that need to be linked with before @option{-lX11}, and adds
 7488: @c any found to the output variable @code{X_PRE_LIBS}.
 7489: @c 
 7490: また,このマクロは,Xプログラムをコンパイルするためにシステムが必要とす
 7491: る特別なライブラリも調査します.それは,システムが必要とするあらゆるもの
 7492: を出力変数@code{X_EXTRA_LIBS}に追加します.そして,@samp{-lX11}の前にリ
 7493: ンクする必要がある特別なX11R6ライブラリを調査し,見つかったものは全て出
 7494: 力変数@code{X_PRE_LIBS}に追加します.
 7495: 
 7496: @c This is an incomplete kludge.  Make a real way to do it.
 7497: @c If you need to check for other X functions or libraries yourself, then
 7498: @c after calling this macro, add the contents of @code{X_EXTRA_LIBS} to
 7499: @c @code{LIBS} temporarily, like this: (FIXME - add example)
 7500: @end defmac
 7501: 
 7502: @defmac AC_SYS_INTERPRETER
 7503: @maindex SYS_INTERPRETER
 7504: @c Check whether the system supports starting scripts with a line of the
 7505: @c form @samp{#! /bin/csh} to select the interpreter to use for the script.
 7506: @c After running this macro, shell code in @code{configure.ac} can check
 7507: @c the shell variable @code{interpval}; it will be set to @samp{yes}
 7508: @c if the system supports @samp{#!}, @samp{no} if not.
 7509: @c 
 7510: スクリプトを使用するためのインタプリタを選択するため,@samp{#! /bin/csh} 
 7511: の形式の行を用いたスクリプトをサポートするかどうかを調査します.このマク
 7512: ロを実行した後で,@code{configure.ac}のシェルコードは,シェル変数の 
 7513: @code{interpval}を調査することが可能になります.システムで@samp{#!}をサ
 7514: ポートされている場合は@samp{yes},そうでなければ@samp{no}を設定します.
 7515: @end defmac
 7516: 
 7517: @defmac AC_SYS_LARGEFILE
 7518: @maindex SYS_LARGEFILE
 7519: @cvindex _FILE_OFFSET_BITS
 7520: @cvindex _LARGE_FILES
 7521: @ovindex CC
 7522: @c Arrange for
 7523: @c @href{http://www.sas.com/standards/large.file/x_open.20Mar96.html,
 7524: @c large-file support}.  On some hosts, one must use special compiler
 7525: @c options to build programs that can access large files.  Append any such
 7526: @c options to the output variable @code{CC}.  Define
 7527: @c @code{_FILE_OFFSET_BITS} and @code{_LARGE_FILES} if necessary.
 7528: @c 
 7529: large-file support@footnote{large-file
 7530: support,@url{http://www.sas.com/standards/large.file/x_open.20Mar96.html}}
 7531: のためにアレンジします.ホストによっては,大きなファイルにアクセスできる
 7532: プログラムをビルドするため,特別なコンパイラオプションが必要になります.
 7533: そのようなオプションを出力変数@code{CC}に,全て追加します.必要な場合は,
 7534: @code{_FILE_OFFSET_BITS}と@code{_LARGE_FILES}を定義します.
 7535: 
 7536: @c Large-file support can be disabled by configuring with the
 7537: @c @option{--disable-largefile} option.
 7538: @c 
 7539: 大きなファイルのサポートは,@option{--disable-largefile}オプションを用い
 7540: てコンフィグレーションすることで利用不可能にすることが可能です.
 7541: 
 7542: @c If you use this macro, check that your program works even when
 7543: @c @code{off_t} is longer than @code{long}, since this is common when
 7544: @c large-file support is enabled.  For example, it is not correct to print
 7545: @c an arbitrary @code{off_t} value @code{X} with @code{printf ("%ld",
 7546: @c (long) X)}.
 7547: @c 
 7548: このマクロを使用する場合,大きなファイルのサポートが利用可能なときは,
 7549: @code{off_t}が@code{long}より長いときが一般的なので,それでもプログラム
 7550: が動作するかどうかを調査してください.例えば,@code{printf ("%ld",
 7551: (long) X)}で任意の@code{off_t}の値@code{X}を出力しても正しくなくなります.
 7552: @end defmac
 7553: 
 7554: @defmac AC_SYS_LONG_FILE_NAMES
 7555: @maindex SYS_LONG_FILE_NAMES
 7556: @cvindex HAVE_LONG_FILE_NAMES
 7557: @c If the system supports file names longer than 14 characters, define
 7558: @c @code{HAVE_LONG_FILE_NAMES}.
 7559: @c 
 7560: システムが14文字より長いファイル名をサポートする場合,
 7561: @code{HAVE_LONG_FILE_NAMES}を定義します.
 7562: @end defmac
 7563: 
 7564: @defmac AC_SYS_POSIX_TERMIOS
 7565: @maindex SYS_POSIX_TERMIOS
 7566: @cindex POSIX termios headers
 7567: @cindex termios POSIX headers
 7568: @c Check to see if POSIX termios headers and functions are available on the
 7569: @c system.  If so, set the shell variable @code{am_cv_sys_posix_termios} to
 7570: @c @samp{yes}.  If not, set the variable to @samp{no}.
 7571: @c 
 7572: POSIX termiosヘッダと関数がシステムで利用可能かどうかを調査します.その
 7573: 場合は,シェル変数@code{am_cv_sys_posix_termios}を@samp{yes}に設定します.
 7574: それ以外ではその変数を@samp{no}に設定します.
 7575: @end defmac
 7576: 
 7577: 
 7578: @node UNIX Variants,  , System Services, Existing Tests
 7579: @section 様々なUNIX
 7580: 
 7581: @c The following macros check for certain operating systems that need
 7582: @c special treatment for some programs, due to exceptional oddities in
 7583: @c their header files or libraries.  These macros are warts; they will be
 7584: @c replaced by a more systematic approach, based on the functions they make
 7585: @c available or the environments they provide.
 7586: @c 
 7587: 以下のマクロは,ヘッダファイルやライブラリが例外的に特異なため,プログラ
 7588: ムに対して特別な処理が必要なオペレーティングシステムを調査します.これら
 7589: のマクロは不要なものです.利用可能にする関数や,供給する環境に基づき,よ
 7590: り規則正しい手法で置換されるでしょう.
 7591: 
 7592: @defmac AC_AIX
 7593: @maindex AIX
 7594: @cvindex _ALL_SOURCE
 7595: @c If on AIX, define @code{_ALL_SOURCE}.  Allows the use of some @sc{bsd}
 7596: @c functions.  Should be called before any macros that run the C compiler.
 7597: @c 
 7598: AIXの場合,@code{_ALL_SOURCE}を定義します.いくつかの@sc{bsd}関数の使用
 7599: を許可します.Cコンパイラを実行するあらゆるマクロの前に呼び出すべきです.
 7600: @end defmac
 7601: 
 7602: @defmac AC_ISC_POSIX
 7603: @maindex ISC_POSIX
 7604: @cvindex _POSIX_SOURCE
 7605: @ovindex CC
 7606: @c If on a POSIXized ISC @sc{unix}, define @code{_POSIX_SOURCE} and add
 7607: @c @option{-posix} (for the @sc{gnu} C compiler) or @option{-Xp} (for other C
 7608: @c compilers) to output variable @code{CC}.  This allows the use of
 7609: @c @sc{posix} facilities.  Must be called after @code{AC_PROG_CC} and
 7610: @c before any other macros that run the C compiler.
 7611: @c 
 7612: POSIX準拠のISC @sc{unix}の場合,@code{_POSIX_SOURCE}を定義し,出力変数 
 7613: @code{CC}に,@samp{-posix}(@sc{gnu} Cコンパイラのため)や,@samp{-Xp}(他
 7614: のCコンパイラのため)を加えます.これでPOSIXの機能が使用可能になります.
 7615: @code{AC_PROG_CC}の後で,そして,Cコンパイラを実行する他のあらゆるマクロ
 7616: の前で呼び出す必要があります.
 7617: @end defmac
 7618: 
 7619: @defmac AC_MINIX
 7620: @maindex MINIX
 7621: @cvindex _MINIX
 7622: @cvindex _POSIX_SOURCE
 7623: @cvindex _POSIX_1_SOURCE
 7624: @c If on Minix, define @code{_MINIX} and @code{_POSIX_SOURCE} and define
 7625: @c @code{_POSIX_1_SOURCE} to be 2.  This allows the use of @sc{posix}
 7626: @c facilities.  Should be called before any macros that run the C compiler.
 7627: @c 
 7628: Minixの場合,@code{_MINIX}と@code{_POSIX_SOURCE}を定義し, 
 7629: @code{_POSIX_1_SOURCE}を2と定義します.これでPOSIXの機能が使用可能になり
 7630: ます.Cコンパイラを実行するあらゆるマクロの前で呼び出すべきです.
 7631: @end defmac
 7632: 
 7633: 
 7634: @c ========================================================= Writing Tests
 7635: 
 7636: @node Writing Tests, Results, Existing Tests, Top
 7637: @chapter テストを書く
 7638: 
 7639: @c If the existing feature tests don't do something you need, you have to
 7640: @c write new ones.  These macros are the building blocks.  They provide
 7641: @c ways for other macros to check whether various kinds of features are
 7642: @c available and report the results.
 7643: @c 
 7644: 既存の特徴テストでは必要なことができない場合,新しいものを書く必要があり
 7645: ます.これらのマクロはブロックの組み立てです.他のマクロで様々な特徴が利
 7646: 用可能かどうか調査し結果を報告するための方法を提供します.
 7647: 
 7648: @c This chapter contains some suggestions and some of the reasons why the
 7649: @c existing tests are written the way they are.  You can also learn a lot
 7650: @c about how to write Autoconf tests by looking at the existing ones.  If
 7651: @c something goes wrong in one or more of the Autoconf tests, this
 7652: @c information can help you understand the assumptions behind them, which
 7653: @c might help you figure out how to best solve the problem.
 7654: @c 
 7655: この章には,提案と,既存のテストが書かれている方法の理由も含まれています.
 7656: また,既存のものを見ることで,Autoconfテストの書き方について知ることがで
 7657: きます.Autoconfのテストの一つ以上がうまくいかない場合,この情報は背後で
 7658: 行われていることの理解を助けるので,最善の問題解決法が分かるでしょう.
 7659: 
 7660: @c These macros check the output of the C compiler system.  They do
 7661: @c not cache the results of their tests for future use (@pxref{Caching
 7662: @c Results}), because they don't know enough about the information they are
 7663: @c checking for to generate a cache variable name.  They also do not print
 7664: @c any messages, for the same reason.  The checks for particular kinds of C
 7665: @c features call these macros and do cache their results and print messages
 7666: @c about what they're checking for.
 7667: @c 
 7668: これらのマクロは,Cコンパイラシステムの出力を調査します.それらは,キャッ
 7669: シュ変数名を生成するために調査している情報を十分には知らないので,将来使
 7670: 用するためにテスト結果をキャッシュしません(@pxref{Caching Results}).同
 7671: じ理由でメッセージも出力しません.特定のCの特徴の調査では,これらのマク
 7672: ロを呼び出し,結果をキャッシュし,そして調査していることに関するメッセー
 7673: ジを出力します.
 7674: 
 7675: @c When you write a feature test that could be applicable to more than one
 7676: @c software package, the best thing to do is encapsulate it in a new macro.
 7677: @c @xref{Writing Autoconf Macros}, for how to do that.
 7678: @c 
 7679: 1つ以上のソフトウェアパッケージに適用可能な特徴テストを書く時,新しいマ
 7680: クロに要約することがベストです.その方法は,@xref{Writing Autoconf
 7681: Macros}.
 7682: 
 7683: @menu
 7684: * Examining Declarations::      Detecting header files and declarations
 7685: * Examining Syntax::            Detecting language syntax features
 7686: * Examining Libraries::         Detecting functions and global variables
 7687: * Run Time::                    Testing for run-time features
 7688: * Systemology::                 A zoology of operating systems
 7689: * Multiple Cases::              Tests for several possible values
 7690: * Language Choice::             Selecting which language to use for testing
 7691: @end menu
 7692: 
 7693: @node Examining Declarations, Examining Syntax, Writing Tests, Writing Tests
 7694: @section 宣言の調査
 7695: 
 7696: @c The macro @code{AC_TRY_CPP} is used to check whether particular header
 7697: @c files exist.  You can check for one at a time, or more than one if you
 7698: @c need several header files to all exist for some purpose.
 7699: @c 
 7700: マクロ@code{AC_TRY_CPP}は,特定のヘッダファイルが存在するかどうか調査す
 7701: るために使用します.目的があって,複数のヘッダファイルが全て必要な場合で
 7702: も,一度に,一つまたはそれ以上調査することが可能です.
 7703: 
 7704: @defmac AC_TRY_CPP (@var{includes}, @r{[}@var{action-if-true}r{]}, @r{[}@var{action-if-false}@r{]})
 7705: @maindex TRY_CPP
 7706: @c @var{includes} is C or C++ @code{#include} statements and declarations,
 7707: @c on which shell variable, back quote, and backslash substitutions are
 7708: @c performed.  (Actually, it can be any C program, but other statements are
 7709: @c probably not useful.)  If the preprocessor produces no error messages
 7710: @c while processing it, run shell commands @var{action-if-true}.  Otherwise
 7711: @c run shell commands @var{action-if-false}.
 7712: @c 
 7713: @var{includes}はCやC++の@code{#include}宣言で,そこでは,シェル変数,バッ
 7714: ククオート,そしてバックスラッシュの代入が行われます.(実際にCプログラム
 7715: の場合もありますが,他の宣言は余り役に立ちません.)プリプロセッサが,処
 7716: 理中にエラーメッセージを生成しない場合,シェルコマンド
 7717: @var{action-if-true}を実行します.それ以外では,シェルコマンド
 7718: @var{action-if-false}を実行します.
 7719: 
 7720: @c This macro uses @code{CPPFLAGS}, but not @code{CFLAGS}, because
 7721: @c @option{-g}, @option{-O}, etc. are not valid options to many C
 7722: @c preprocessors.
 7723: @c 
 7724: @samp{-g},@samp{-O}等は,多くのCプリプロセッサで正当なオプションではな
 7725: いため,このマクロは@code{CPPFLAGS}を使用しますが,@code{CFLAGS}は使用し
 7726: ません.
 7727: @end defmac
 7728: 
 7729: @c Here is how to find out whether a header file contains a particular
 7730: @c declaration, such as a typedef, a structure, a structure member, or a
 7731: @c function.  Use @code{AC_EGREP_HEADER} instead of running @code{grep}
 7732: @c directly on the header file; on some systems the symbol might be defined
 7733: @c in another header file that the file you are checking @samp{#include}s.
 7734: @c 
 7735: ヘッダファイルが,typedef,構造体,構造体メンバー,あるいは関数のような
 7736: 特定の宣言を含んでいるかどうかを調査する方法は以下のようになります.ヘッ
 7737: ダファイルで直接@code{grep}を実行する代わりに,@code{AC_EGREP_HEADER}を
 7738: 使用します.調査した@samp{#include}ファイル以外のヘッダファイルに,シン
 7739: ボルを定義しているシステムもあります.
 7740: 
 7741: @defmac AC_EGREP_HEADER (@var{pattern}, @var{header-file}, @var{action-if-found}, @r{[}@var{action-if-not-found}@r{]})
 7742: @maindex EGREP_HEADER
 7743: @c If the output of running the preprocessor on the system header file
 7744: @c @var{header-file} matches the @code{egrep} regular expression
 7745: @c @var{pattern}, execute shell commands @var{action-if-found}, otherwise
 7746: @c execute @var{action-if-not-found}.
 7747: @c 
 7748: システム上のヘッダファイル@var{header-file}で,プリプロセッサの実行の出
 7749: 力が@code{egrep}の正規表現@var{pattern}に一致する場合,シェルコマンドの
 7750: @var{action-if-found}を実行し,それ以外では @var{action-if-not-found} を
 7751: 実行します.
 7752: @end defmac
 7753: 
 7754: @c To check for C preprocessor symbols, either defined by header files or
 7755: @c predefined by the C preprocessor, use @code{AC_EGREP_CPP}.  Here is an
 7756: @c example of the latter:
 7757: @c 
 7758: ヘッダファイルの定義や,Cプリプロセッサの前定義といった,Cプリプロセッサ
 7759: シンボルを調査するために,@code{AC_EGREP_CPP}を使用してください.その例
 7760: は以下のようになります.
 7761: 
 7762: @example
 7763: AC_EGREP_CPP(yes,
 7764: [#ifdef _AIX
 7765:   yes
 7766: #endif
 7767: ], is_aix=yes, is_aix=no)
 7768: @end example
 7769: 
 7770: @defmac AC_EGREP_CPP (@var{pattern}, @var{program}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]})
 7771: @maindex EGREP_CPP
 7772: @c @var{program} is the text of a C or C++ program, on which shell
 7773: @c variable, back quote, and backslash substitutions are performed.  If the
 7774: @c output of running the preprocessor on @var{program} matches the
 7775: @c @code{egrep} regular expression @var{pattern}, execute shell commands
 7776: @c @var{action-if-found}, otherwise execute @var{action-if-not-found}.
 7777: @c 
 7778: @var{program}はCやC++プログラムのテキストで,そこでは,シェル変数,バッ
 7779: ククオートと,バックスラッシュの代入が行われます.@var{program}上でのプ
 7780: リプロセッサの実行の出力が,@code{egrep}の正規表現@var{pattern}と一致す
 7781: る場合,シェルコマンドの@var{action-if-found}を実行し,それ以外では 
 7782: @var{action-if-not-found}を実行します.
 7783: 
 7784: @c This macro calls @code{AC_PROG_CPP} or @code{AC_PROG_CXXCPP} (depending
 7785: @c on which language is current, @pxref{Language Choice}), if it hasn't
 7786: @c been called already.
 7787: @c 
 7788: このマクロは,それまでに呼ばれていなければ,@code{AC_PROG_CPP}や 
 7789: @code{AC_PROG_CXXCPP}を(現在の言語に依存して@pxref{Language Choice})呼び
 7790: 出します.
 7791: @end defmac
 7792: 
 7793: 
 7794: @node Examining Syntax, Examining Libraries, Examining Declarations, Writing Tests
 7795: @section 構文の調査
 7796: 
 7797: @c To check for a syntax feature of the C, C++ or Fortran 77 compiler, such
 7798: @c as whether it recognizes a certain keyword, use @code{AC_TRY_COMPILE} to
 7799: @c try to compile a small program that uses that feature.  You can also use
 7800: @c it to check for structures and structure members that are not present on
 7801: @c all systems.
 7802: @c 
 7803: C,C++,またはFortran 77コンパイラが,あるキーワードを理解するかどうかと
 7804: いった構文の特徴を調査するため,@code{AC_TRY_COMPILE}をそれらの特徴を使
 7805: 用している小さなプログラムをコンパイルを試みるために使用してください.全
 7806: てのシステムで,構造体や構造体メンバの存在を調査するために使用することも
 7807: 可能です.
 7808: 
 7809: @defmac AC_TRY_COMPILE (@var{includes}, @var{function-body}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]})
 7810: @maindex TRY_COMPILE
 7811: @c Create a C, C++ or Fortran 77 test program (depending on which language
 7812: @c is current, @pxref{Language Choice}), to see whether a function whose
 7813: @c body consists of @var{function-body} can be compiled.
 7814: @c 
 7815: (現在の言語に依存して@pxref{Language Choice}),@var{function-body}を含ん
 7816: でいる関数をコンパイル可能かどうか判定するために,C,C++やFortran 77の小
 7817: さなプログラムを作成します.
 7818: 
 7819: @c For C and C++, @var{includes} is any @code{#include} statements needed
 7820: @c by the code in @var{function-body} (@var{includes} will be ignored if
 7821: @c the currently selected language is Fortran 77).  This macro also uses
 7822: @c @code{CFLAGS} or @code{CXXFLAGS} if either C or C++ is the currently
 7823: @c selected language, as well as @code{CPPFLAGS}, when compiling.  If
 7824: @c Fortran 77 is the currently selected language then @code{FFLAGS} will be
 7825: @c used when compiling.
 7826: @c 
 7827: CとC++に対しては,@var{includes}は@var{function-body}のコードが必要とす
 7828: る,あらゆる@code{#include}文になります(現在選択されている言語がFortran
 7829: 77の場合は無視されます).このマクロは,現在選択されている言語がCやC++の
 7830: 場合,@code{CFLAGS}や@code{CXXFLAGS}も使用し,コンパイル時には 
 7831: @code{CPPFLAGS}も使用します.Fortran 77が現在選択されている言語の場合,
 7832: コンパイル時に@code{FFLAGS}を使用します.
 7833: 
 7834: @c If the file compiles successfully, run shell commands
 7835: @c @var{action-if-found}, otherwise run @var{action-if-not-found}.
 7836: @c 
 7837: ファイルのコンパイルが成功した場合,シェルコマンドの
 7838: @var{action-if-found}を実行し,それ以外では@var{action-if-not-found}を実
 7839: 行します.
 7840: 
 7841: @c This macro does not try to link; use @code{AC_TRY_LINK} if you need to
 7842: @c do that (@pxref{Examining Libraries}).
 7843: @c 
 7844: このマクロはリンクを試みません. 必要な場合は@code{AC_TRY_LINK}を使用し
 7845: てください(@pxref{Examining Libraries}).
 7846: @end defmac
 7847: 
 7848: 
 7849: @node Examining Libraries, Run Time, Examining Syntax, Writing Tests
 7850: @section ライブラリの調査
 7851: 
 7852: @c To check for a library, a function, or a global variable, Autoconf
 7853: @c @code{configure} scripts try to compile and link a small program that
 7854: @c uses it.  This is unlike Metaconfig, which by default uses @code{nm}
 7855: @c or @code{ar} on the C library to try to figure out which functions are
 7856: @c available.  Trying to link with the function is usually a more reliable
 7857: @c approach because it avoids dealing with the variations in the options
 7858: @c and output formats of @code{nm} and @code{ar} and in the location of the
 7859: @c standard libraries.  It also allows configuring for cross-compilation or
 7860: @c checking a function's runtime behavior if needed.  On the other hand, it
 7861: @c can be slower than scanning the libraries once.
 7862: @c 
 7863: ライブラリ,関数,またはグローバル変数を調査するため,Autoconfの
 7864: @code{configure}スクリプトは,それを使用している小さなプログラムのコンパ
 7865: イルとリンクを試みます.これはMetaconfigとは異なり,デフォルトで,Cライ
 7866: ブラリで関数が利用可能かどうか判定するために@code{nm}や@code{ar}を使用し
 7867: ます.オプションと@code{nm}と@code{ar}の出力の違いと,標準ライブラリの位
 7868: 置の違いを処理することを避けるので,通常,関数のリンクの試みは信頼性が高
 7869: い方法です.クロスコンパイルや,必要な場合は関数の実行時の動作を調査につ
 7870: いても,コンフィグレーション時に可能です.一方,1度のライブラリスキャン
 7871: より遅くなります.
 7872: 
 7873: @c A few systems have linkers that do not return a failure exit status when
 7874: @c there are unresolved functions in the link.  This bug makes the
 7875: @c configuration scripts produced by Autoconf unusable on those systems.
 7876: @c However, some of them can be given options that make the exit status
 7877: @c correct.  This is a problem that Autoconf does not currently handle
 7878: @c automatically.  If users encounter this problem, they might be able to
 7879: @c solve it by setting @code{LDFLAGS} in the environment to pass whatever
 7880: @c options the linker needs (for example, @option{-Wl,-dn} on @sc{mips
 7881: @c risc/os}).
 7882: @c 
 7883: リンクで未解決のシンボルがあるとき,失敗という終了ステータスを戻さないリ
 7884: ンカを持つシステムが無いわけではありません.このバグのため,Autoconfが生
 7885: 成したコンフィグレーションスクリプトは,これらのシステムでは使用不可能で
 7886: す.しかし,終了ステータスを正しくするオプションが与えられているものもあ
 7887: ります.この問題は現在,Autoconfが自動的に正しく処理できません.ユーザが
 7888: この問題に遭遇した場合,リンカが必要なオプション(例えば,MIPS RISC/OSで
 7889: の@samp{-Wl,-dn})を環境変数の@code{LDFLAGS}に渡して設定することで解決可
 7890: 能かもしれません.
 7891: 
 7892: @c @code{AC_TRY_LINK} is used to compile test programs to test for
 7893: @c functions and global variables.  It is also used by @code{AC_CHECK_LIB}
 7894: @c to check for libraries (@pxref{Libraries}), by adding the library being
 7895: @c checked for to @code{LIBS} temporarily and trying to link a small
 7896: @c program.
 7897: @c 
 7898: @code{AC_TRY_LINK}は,関数とグローバル変数に対するテストのため,テストプ
 7899: ログラムをコンパイルするために使用されます.ライブラリを調査する 
 7900: @code{AC_CHECK_LIB}でも,調査しているライブラリを一時的に@code{LIBS}に追
 7901: 加したり,小さなプログラムのリンクを試みたりすることで,使用されています
 7902: (@pxref{Libraries}).
 7903: 
 7904: @defmac AC_TRY_LINK (@var{includes}, @var{function-body}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]})
 7905: @maindex TRY_LINK
 7906: @c Depending on the current language (@pxref{Language Choice}), create a
 7907: @c test program to see whether a function whose body consists of
 7908: @c @var{function-body} can be compiled and linked.
 7909: @c 
 7910: 現在の言語に依存して(@pxref{Language Choice}),@var{function-body}を含ん
 7911: でいる関数をコンパイルとリンクが可能かどうか判定するために,テストプログ
 7912: ラムを作成します.
 7913: 
 7914: @c For C and C++, @var{includes} is any @code{#include} statements needed
 7915: @c by the code in @var{function-body} (@var{includes} will be ignored if
 7916: @c the currently selected language is Fortran 77).  This macro also uses
 7917: @c @code{CFLAGS} or @code{CXXFLAGS} if either C or C++ is the currently
 7918: @c selected language, as well as @code{CPPFLAGS}, when compiling.  If
 7919: @c Fortran 77 is the currently selected language then @code{FFLAGS} will be
 7920: @c used when compiling.  However, both @code{LDFLAGS} and @code{LIBS} will
 7921: @c be used during linking in all cases.
 7922: @c 
 7923: CとC++に対しては,@var{includes}は,@var{function-body}のコードが必要と
 7924: する全ての@code{#include}文です(現在選択されている言語がFortran 77の場合
 7925: は無視されます).このマクロは,現在選択されている言語がCやC++の場合,
 7926: @code{CFLAGS}や@code{CXXFLAGS}も使用し,コンパイル時には, 
 7927: @code{CPPFLAGS}も使用します.Fortran 77が現在選択されている言語の場合,
 7928: コンパイル時に@code{FFLAGS}を使用します.しかし,@code{LDFLAGS}と 
 7929: @code{LIBS}は,全ての場合でリンク時に使用します.
 7930: 
 7931: @c If the file compiles and links successfully, run shell commands
 7932: @c @var{action-if-found}, otherwise run @var{action-if-not-found}.
 7933: @c 
 7934: ファイルのコンパイルとリンクが成功した場合,シェルコマンドの 
 7935: @var{action-if-found}を実行し,それ以外では@var{action-if-not-found}を実
 7936: 行します.
 7937: @end defmac
 7938: 
 7939: @defmac AC_TRY_LINK_FUNC (@var{function}, @r{[}@var{action-if-found}@r{]}, @r{[}@var{action-if-not-found}@r{]})
 7940: @maindex TRY_LINK_FUNC
 7941: @c Depending on the current language (@pxref{Language Choice}), create a
 7942: @c test program to see whether a program whose body consists of
 7943: @c a prototype of and a call to @var{function} can be compiled and linked.
 7944: @c 
 7945: 現在の言語に依存して(@pxref{Language Choice}),プロトタイプと
 7946: @var{function}の呼び出しを含むプログラムの,コンパイルとリンクが可能かど
 7947: うか判定するために,テストプログラムを作成します.
 7948: 
 7949: @c If the file compiles and links successfully, run shell commands
 7950: @c @var{action-if-found}, otherwise run @var{action-if-not-found}.
 7951: @c 
 7952: ファイルのコンパイルとリンクが成功した場合,シェルコマンドの
 7953: @var{action-if-found}を実行し,それ以外では@var{action-if-not-found}を実
 7954: 行します.
 7955: @end defmac
 7956: 
 7957: 
 7958: @node Run Time, Systemology, Examining Libraries, Writing Tests
 7959: @section 実行時の動作の調査
 7960: 
 7961: @c Sometimes you need to find out how a system performs at run time, such
 7962: @c as whether a given function has a certain capability or bug.  If you
 7963: @c can, make such checks when your program runs instead of when it is
 7964: @c configured.  You can check for things like the machine's endianness when
 7965: @c your program initializes itself.
 7966: @c 
 7967: 関数の能力やバグといった,実行時のシステムの動作を知る必要があるかもしれ
 7968: ません.できれば,コンフィグレーション時ではなくプログラムの実行時に調査
 7969: してください.プログラム自身の初期化時に,マシンのエンディアンの様なもの
 7970: は調査することが可能です.
 7971: 
 7972: @c If you really need to test for a run-time behavior while configuring,
 7973: @c you can write a test program to determine the result, and compile and
 7974: @c run it using @code{AC_TRY_RUN}.  Avoid running test programs if
 7975: @c possible, because this prevents people from configuring your package for
 7976: @c cross-compiling.
 7977: @c 
 7978: コンフィグレーション時に,実行時の動作をテストする必要が本当にある場合,
 7979: 結果を決定し,@code{AC_TRY_RUN}を使用してコンパイルと実行を行なうために,
 7980: テストプログラムを書くことが可能です.クロスコンパイルでパッケージをコン
 7981: フィグレーションする邪魔になるなるので,できれば,テストプログラムの実行
 7982: は避けてください.
 7983: 
 7984: @menu
 7985: * Test Programs::               Running test programs
 7986: * Guidelines::                  General rules for writing test programs
 7987: * Test Functions::              Avoiding pitfalls in test programs
 7988: @end menu
 7989: 
 7990: @node Test Programs, Guidelines, Run Time, Run Time
 7991: @subsection テストプログラムの実行
 7992: 
 7993: @c Use the following macro if you need to test run-time behavior of the
 7994: @c system while configuring.
 7995: @c 
 7996: コンフィグレーション時に実行時の動作をテストする必要がある場合,以下のマ
 7997: クロを使用してください.
 7998: 
 7999: @defmac AC_TRY_RUN (@var{program}, @r{[}@var{action-if-true}@r{]}, @r{[}@var{action-if-false}@r{]}, @r{[}@var{action-if-cross-compiling}@r{]})
 8000: @maindex TRY_RUN
 8001: @c @var{program} is the text of a C program, on which shell variable and
 8002: @c back quote substitutions are performed.  If it compiles and links
 8003: @c successfully and returns an exit status of 0 when executed, run shell
 8004: @c commands @var{action-if-true}.  Otherwise, run shell commands
 8005: @c @var{action-if-false}; the exit status of the program is available in
 8006: @c the shell variable @samp{$?}.  This macro uses @code{CFLAGS} or
 8007: @c @code{CXXFLAGS}, @code{CPPFLAGS}, @code{LDFLAGS}, and @code{LIBS} when
 8008: @c compiling.
 8009: @c 
 8010: @var{program}はCプログラムのテキストで,シェル変数とバッククオートの代入
 8011: が行われます.コンパイルとリンクが成功し,実行時に0の終了ステータスを戻
 8012: す場合,シェルコマンドの@var{action-if-true}を実行します.それ以外では,
 8013: シェルコマンドの@var{action-if-false}を実行します.プログラムの終了ステー
 8014: タスは,シェル変数@samp{$?}で利用可能です.このマクロはコンパイル時に,
 8015: @code{CFLAGS}や,@code{CXXFLAGS},@code{CPPFLAGS},@code{LDFLAGS},そし
 8016: て@code{LIBS}を使用します.
 8017: 
 8018: @c If the C compiler being used does not produce executables that run on
 8019: @c the system where @code{configure} is being run, then the test program is
 8020: @c not run.  If the optional shell commands @var{action-if-cross-compiling}
 8021: @c are given, they are run instead.  Otherwise, @code{configure} prints
 8022: @c an error message and exits.
 8023: @c 
 8024: 使用されるCコンパイラが,@code{configure}を実行しているシステムで実行す
 8025: る実行形式を生成しない場合,テストプログラムは実行されません.オプション
 8026: のシェルコマンド@var{action-if-cross-compiling}が与えられる場合,代わり
 8027: に実行されます.それ以外では,@code{configure}はエラーメッセージを出力し
 8028: て終了します.
 8029: @end defmac
 8030: 
 8031: @c Try to provide a pessimistic default value to use when cross-compiling
 8032: @c makes run-time tests impossible.  You do this by passing the optional
 8033: @c last argument to @code{AC_TRY_RUN}.  @code{autoconf} prints a warning
 8034: @c message when creating @code{configure} each time it encounters a call to
 8035: @c @code{AC_TRY_RUN} with no @var{action-if-cross-compiling} argument
 8036: @c given.  You may ignore the warning, though users will not be able to
 8037: @c configure your package for cross-compiling.  A few of the macros
 8038: @c distributed with Autoconf produce this warning message.
 8039: @c 
 8040: クロスコンパイルで実行時テストが不可能なとき,使用する悲観的なデフォルト
 8041: 値を与えてみてください.@code{AC_TRY_RUN}のオプションの最後の引数で渡し
 8042: ます.@code{configure}を作成するたび毎に,@code{AC_TRY_RUN}の呼び出しで
 8043: @var{action-if-cross-compiling}引数が与えられないときは,@code{autoconf} 
 8044: は警告メッセージを出力します.警告を無視することもできますが,ユーザは,
 8045: パッケージのクロスコンパイルのコンフィグレーションができません.Autoconf
 8046: が配布するマクロには,この警告メッセージを生成するものもあります.
 8047: 
 8048: @c To configure for cross-compiling you can also choose a value for those
 8049: @c parameters based on the canonical system name (@pxref{Manual
 8050: @c Configuration}).  Alternatively, set up a test results cache file with
 8051: @c the correct values for the host system (@pxref{Caching Results}).
 8052: @c 
 8053: クロスコンパイルのコンフィグレーションのため,標準的なシステム名 
 8054: (@pxref{Manual Configuration})に基づくパラメータに対する値を選択すること
 8055: も可能です.代わりに,ホストシステムに対する正しい値で,テスト結果のキャッ
 8056: シュファイルを設定してください(@pxref{Caching Results}).
 8057: 
 8058: @c To provide a default for calls of @code{AC_TRY_RUN} that are embedded in
 8059: @c other macros, including a few of the ones that come with Autoconf, you
 8060: @c can call @code{AC_PROG_CC} before running them.  Then, if the shell
 8061: @c variable @code{cross_compiling} is set to @samp{yes}, use an alternate
 8062: @c method to get the results instead of calling the macros.
 8063: @c 
 8064: Autoconfで提供される2,3のものを含め,@code{AC_TRY_RUN}が埋め込まれて
 8065: いる他のマクロの呼び出しに対してデフォルトを与えるため,実行する前に 
 8066: @code{AC_PROG_CC}を呼び出すことが可能です.シェル変数 
 8067: @code{cross_compiling}が@samp{yes}に設定されている場合,マクロを呼び出す
 8068: 代わりに,結果を得るための代わりの手法を使用します.
 8069: 
 8070: 
 8071: @node Guidelines, Test Functions, Test Programs, Run Time
 8072: @subsection テストプログラムのガイドライン
 8073: 
 8074: @c Test programs should not write anything to the standard output.  They
 8075: @c should return 0 if the test succeeds, nonzero otherwise, so that success
 8076: @c can be distinguished easily from a core dump or other failure;
 8077: @c segmentation violations and other failures produce a nonzero exit
 8078: @c status.  Test programs should @code{exit}, not @code{return}, from
 8079: @c @code{main}, because on some systems (old Suns, at least) the argument
 8080: @c to @code{return} in @code{main} is ignored.
 8081: @c 
 8082: テストプログラムは,標準出力に何かを書き出すべきではありません.コアダン
 8083: プや他の失敗と簡単に区別できるように,成功した場合は0,それ以外ではゼロ
 8084: 以外を返すべきです.セグメンテーション違反やその他の失敗は,終了ステータ
 8085: スでゼロ以外を生成します.@code{main}内の@code{return}の引数を無視するシ
 8086: ステム(古いSun では少なくとも)もあるので,テストプログラムの@code{main} 
 8087: では@code{return}ではなく@code{exit}を使用するべきです.
 8088: 
 8089: @c Test programs can use @code{#if} or @code{#ifdef} to check the values of
 8090: @c preprocessor macros defined by tests that have already run.  For
 8091: @c example, if you call @code{AC_HEADER_STDC}, then later on in
 8092: @c @file{configure.ac} you can have a test program that includes an
 8093: @c @sc{ansi} C header file conditionally:
 8094: @c 
 8095: 既に実行されたテストで定義されたプリプロセッサの値を調査するため,テスト
 8096: プログラムで@code{#if}や@code{#ifdef}を使用することが可能です.例えば, 
 8097: @code{AC_HEADER_STDC}を呼び出す場合,@file{configure.ac}の後の方で,暫定
 8098: 的にANSI Cヘッダファイルをインクルードするテストプログラムを使用すること
 8099: が可能です.
 8100: 
 8101: @example
 8102: @group
 8103: #if STDC_HEADERS
 8104: # include <stdlib.h>
 8105: #endif
 8106: @end group
 8107: @end example
 8108: 
 8109: @c If a test program needs to use or create a data file, give it a name
 8110: @c that starts with @file{conftest}, such as @file{conftest.data}.  The
 8111: @c @code{configure} script cleans up by running @samp{rm -rf conftest*}
 8112: @c after running test programs and if the script is interrupted.
 8113: @c 
 8114: テストプログラムでデータファイルを使用したり,作成したりする必要がある場
 8115: 合, @file{conftest.data}のような,@file{conftest}で始まる名前を与えてく
 8116: ださい.@code{configure}スクリプトは,テストプログラム終了後やスクリプト
 8117: が中断された場合,@samp{rm -rf conftest*}を実行しクリーンアップします.
 8118: 
 8119: 
 8120: @node Test Functions,  , Guidelines, Run Time
 8121: @subsection 関数のテスト
 8122: 
 8123: @c Function declarations in test programs should have a prototype
 8124: @c conditionalized for C++.  In practice, though, test programs rarely need
 8125: @c functions that take arguments.
 8126: @c 
 8127: テストプログラムでの関数宣言には,C++に対する条件付のプロトタイプを持た
 8128: せるべきです.しかし,テストプログラムで引数をとる関数が必要になることは,
 8129: 実際には滅多にありません.
 8130: 
 8131: @example
 8132: #ifdef __cplusplus
 8133: foo (int i)
 8134: #else
 8135: foo (i) int i;
 8136: #endif
 8137: @end example
 8138: 
 8139: @c Functions that test programs declare should also be conditionalized for
 8140: @c C++, which requires @samp{extern "C"} prototypes.  Make sure to not
 8141: @c include any header files containing clashing prototypes.
 8142: @c 
 8143: テストプログラムが宣言する関数には,@samp{extern "C"}プロトタイプを要求
 8144: するC++に対する条件付けも行なうべきです.壊れたプロトタイプを含んでいる
 8145: ヘッダファイルをインクルードしていないことを確かめてください.
 8146: 
 8147: @example
 8148: #ifdef __cplusplus
 8149: extern "C" void *malloc (size_t);
 8150: #else
 8151: char *malloc ();
 8152: #endif
 8153: @end example
 8154: 
 8155: @c If a test program calls a function with invalid parameters (just to see
 8156: @c whether it exists), organize the program to ensure that it never invokes
 8157: @c that function.  You can do this by calling it in another function that is
 8158: @c never invoked.  You can't do it by putting it after a call to
 8159: @c @code{exit}, because GCC version 2 knows that @code{exit} never returns
 8160: @c and optimizes out any code that follows it in the same block.
 8161: @c 
 8162: テストプログラムが(その存在の確認のためにだけ)無効なパラメータで関数を呼
 8163: び出す場合,その関数を決して呼び出さないことを保証するようにプログラムを
 8164: 構成してください.決して呼び出されないそれ以外の他の関数から関数を呼び出
 8165: すことで,こうすることが可能です.GCCバージョン2は,@code{exit}は値を返
 8166: さず,同じブロックにあるそれ以降のコードを最適化で外してしまうことが知ら
 8167: れているので,@code{exit}の呼び出し以降にそれを書き込まないでください.
 8168: 
 8169: @c If you include any header files, make sure to call the functions
 8170: @c relevant to them with the correct number of arguments, even if they are
 8171: @c just 0, to avoid compilation errors due to prototypes.  GCC version 2
 8172: @c has internal prototypes for several functions that it automatically
 8173: @c inlines; for example, @code{memcpy}.  To avoid errors when checking for
 8174: @c them, either pass them the correct number of arguments or redeclare them
 8175: @c with a different return type (such as @code{char}).
 8176: @c 
 8177: ヘッダファイルをインクルードする場合は,たとえ引数が0だけであっても,プ
 8178: ロトタイプで生じるコンパイルエラーを避けるため,正しい数の引数を適切にし
 8179: て関数を呼び出していることを確認してください.GCCのバージョン2は,自動的
 8180: にインライン化される関数プロトタイプ,例えば@code{memcpy}もあります.そ
 8181: れらを調査しているときのエラーを避けるため,正しい数の引数を与えるか,
 8182: (@code{char}のような)異なる戻り値で再定義してください.
 8183: 
 8184: 
 8185: @node Systemology, Multiple Cases, Run Time, Writing Tests
 8186: @section システム
 8187: 
 8188: @c This section aims at presenting some systems and pointers to
 8189: @c documentation.  It may help you addressing particular problems reported
 8190: @c by users.
 8191: @c 
 8192: このセクションは,ドキュメントへのシステムとポインタを紹介することを目的
 8193: としています.ユーザが報告する特定の問題を解決するとき役に立つでしょう.
 8194: 
 8195: @table @asis
 8196: @item @sc{qnx 4.25}
 8197: @cindex @sc{qnx 4.25}
 8198: @c FIXME: Please, if you feel like writing something more precise,
 8199: @c it'd be great.  In particular, I can't understand the difference with
 8200: @c QNX Neutrino.
 8201: 
 8202: @c @sc{qnx} is a realtime operating system running on Intel architecture
 8203: @c meant to be scalable from the small embedded systems to hundred
 8204: @c processor super-computer.  It claims to be @sc{posix} certified. More
 8205: @c information is available on the @href{www.qnx.com, @sc{qnx} home page},
 8206: @c including the @href{http://support.qnx.com/support/docs/qnx4/, @sc{qnx}
 8207: @c man pages}.
 8208: @c 
 8209: @sc{qnx}は,小さな組み込みシステムから百個のプロセッサを持つスーパーコン
 8210: ピュータまで幅広く利用できる,Intelアーキテクチャまで動作するリアルタイ
 8211: ムオペレーティングシステムです.それは@sc{posix}だと申請されています.
 8212: @sc{qnx} home page@footnote{@sc{qnx} home page,@url{www.qnx.com}}で,よ
 8213: り多くの情報が利用可能で,そこには,@sc{qnx} man pages@footnote{@sc{qnx}
 8214: man pages,@url{http://support.qnx.com/support/docs/qnx4/}}もあります.
 8215: @end table
 8216: 
 8217: 
 8218: @node Multiple Cases, Language Choice, Systemology, Writing Tests
 8219: @section 複数のケース文
 8220: 
 8221: @c Some operations are accomplished in several possible ways, depending on
 8222: @c the @sc{unix} variant.  Checking for them essentially requires a ``case
 8223: @c statement''.  Autoconf does not directly provide one; however, it is
 8224: @c easy to simulate by using a shell variable to keep track of whether a
 8225: @c way to perform the operation has been found yet.
 8226: @c 
 8227: 処理によってはいくつかの考えられる方法で達成されるものもあり,それはそれ
 8228: ぞれ異なる@sc{unix}に依存しています.それを本質的に調査するためには,
 8229: ``case文''が必要です.Autoconfは直接それを提供していません.しかし,実行
 8230: する処理が見つかったかどうかの追跡を続けるため,シェル変数を使用すること
 8231: で簡単にシミュレート可能です.
 8232: 
 8233: @c Here is an example that uses the shell variable @code{fstype} to keep
 8234: @c track of whether the remaining cases need to be checked.
 8235: @c 
 8236: 残っているcaseを調査する必要があるかどうかに関係なく追跡を続けるために,
 8237: シェル変数@code{fstype}を使用する例は,以下のようになります.
 8238: 
 8239: @example
 8240: @group
 8241: AC_MSG_CHECKING([how to get file system type])
 8242: fstype=no
 8243: # The order of these tests is important.
 8244: AC_TRY_CPP([#include <sys/statvfs.h>
 8245: #include <sys/fstyp.h>],
 8246:            [AC_DEFINE(FSTYPE_STATVFS) fstype=SVR4])
 8247: if test $fstype = no; then
 8248:   AC_TRY_CPP([#include <sys/statfs.h>
 8249: #include <sys/fstyp.h>],
 8250:              [AC_DEFINE(FSTYPE_USG_STATFS) fstype=SVR3])
 8251: fi
 8252: if test $fstype = no; then
 8253:   AC_TRY_CPP([#include <sys/statfs.h>
 8254: #include <sys/vmount.h>],
 8255:              [AC_DEFINE(FSTYPE_AIX_STATFS) fstype=AIX])
 8256: fi
 8257: # (more cases omitted here)
 8258: AC_MSG_RESULT([$fstype])
 8259: @end group
 8260: @end example
 8261: 
 8262: 
 8263: @node Language Choice,  , Multiple Cases, Writing Tests
 8264: @section 言語の選択
 8265: @cindex Language
 8266: 
 8267: @c Autoconf-generated @code{configure} scripts check for the C compiler and
 8268: @c its features by default.  Packages that use other programming languages
 8269: @c (maybe more than one, e.g. C and C++) need to test features of the
 8270: @c compilers for the respective languages.  The following macros determine
 8271: @c which programming language is used in the subsequent tests in
 8272: @c @file{configure.ac}.
 8273: @c 
 8274: Autoconfが生成した@code{configure}スクリプトは,Cコンパイラとその特徴を
 8275: デフォルトで調査します.他のプログラム言語を使用するパッケージ(一つ以上
 8276: で,例えば,CとC++)は,それぞれの言語のコンパイラの特徴をテストする必要
 8277: があります.以下のマクロは@file{configure.ac}内のそれ以降のテストで使用
 8278: されるプログラミング言語のコンパイラを決定します.
 8279: 
 8280: @defmac AC_LANG (@var{language})
 8281: @c Do compilation tests using the compiler, preprocessor and file
 8282: @c extensions for the specified @var{language}.
 8283: @c 
 8284: @var{language}で指定されている,コンパイラ,プリプロセッサ,そしてファイ
 8285: ル拡張子をコンパイルテストで使用します.
 8286: 
 8287: @c Supported languages are:
 8288: @c 
 8289: サポートされている言語は以下のとおりです.
 8290: 
 8291: @table @samp
 8292: @item C
 8293: @c Do compilation tests using @code{CC} and @code{CPP} and use extension
 8294: @c @file{.c} for test programs.
 8295: @c 
 8296: @code{CC}と@code{CPP}を使用しコンパイルテストを行ない,テストプログラム
 8297: では@file{.c}の拡張子を使用します.
 8298: 
 8299: @item C++
 8300: @c Do compilation tests using @code{CXX} and @code{CXXCPP} and use
 8301: @c extension @file{.C} for test programs.
 8302: @c 
 8303: @code{CXX}と@code{CXXCPP}を使用しコンパイルテストを行ない,テストプログ
 8304: ラムでは@file{.C}の拡張子を使用します.
 8305: 
 8306: @item Fortran 77
 8307: @c Do compilation tests using @code{F77} and use extension @file{.f} for
 8308: @c test programs.
 8309: @c 
 8310: @code{F77}を使用しコンパイルテストを行ない,テストプログラムでは
 8311: @file{.f}の拡張子を使用します.
 8312: @end table
 8313: @end defmac
 8314: 
 8315: @defmac AC_LANG_PUSH (@var{language})
 8316: @maindex LANG_PUSH
 8317: @c Remember the current language (as set by @code{AC_LANG}) on a stack, and
 8318: @c then select the @var{language}.  Use this macro and @code{AC_LANG_POP}
 8319: @c in macros that need to temporarily switch to a particular language.
 8320: @c 
 8321: 現在の言語を(@code{AC_LANG}に設定するように)スタックに記録し,
 8322: @var{language}を選択します.このマクロと@code{AC_LANG_POP}を,一時的に特
 8323: 定の言語に切替える必要があるマクロで使用してください.
 8324: @end defmac
 8325: 
 8326: @defmac AC_LANG_POP (@r{[}@var{language}@r{]})
 8327: @maindex LANG_POP
 8328: @c Select the language that is saved on the top of the stack, as set by
 8329: @c @code{AC_LANG_PUSH}, and remove it from the stack.
 8330: @c 
 8331: @code{AC_LANG_PUSH}で設定するように,スタックのトップに保存されている言
 8332: 語に選択し,スタックからそれを削除します.
 8333: 
 8334: @c If given, @var{language} specifies the language we just @emph{quit}.  It
 8335: @c is a good idea to specify it when it's known (which should be the
 8336: @c case@dots{}), since Autoconf will detect inconsistencies.
 8337: @c 
 8338: @var{language}与えられている場合,それは言語を@emph{そのまま}指定します.
 8339: 分かっているときは,Autoconfが間違いを検出するので(case@dots{}にすべきで
 8340: すが),それを指定することは良い考えです.
 8341: 
 8342: @example
 8343: AC_LANG_PUSH(Fortran 77)
 8344: # Perform some tests on Fortran 77.
 8345: # ...
 8346: AC_LANG_POP(Fortran 77)
 8347: @end example
 8348: @end defmac
 8349: 
 8350: @defmac AC_REQUIRE_CPP
 8351: @maindex REQUIRE_CPP
 8352: @c Ensure that whichever preprocessor would currently be used for tests has
 8353: @c been found.  Calls @code{AC_REQUIRE} (@pxref{Prerequisite Macros}) with an
 8354: @c argument of either @code{AC_PROG_CPP} or @code{AC_PROG_CXXCPP},
 8355: @c depending on which language is current.
 8356: @c 
 8357: 現在のテストに使用されるプリプロセッサが見つかることを保証します.現在の
 8358: 言語に依存して,@code{AC_PROG_CPP}や@code{AC_PROG_CXXCPP}のいずれかの引
 8359: 数を用いて,@code{AC_REQUIRE} (@pxref{Prerequisite Macros})を呼び出して
 8360: ください.
 8361: @end defmac
 8362: 
 8363: 
 8364: @c ====================================================== Results of Tests.
 8365: 
 8366: @node Results, Programming in M4, Writing Tests, Top
 8367: @chapter テストの結果
 8368: 
 8369: @c Once @code{configure} has determined whether a feature exists, what can
 8370: @c it do to record that information?  There are four sorts of things it can
 8371: @c do: define a C preprocessor symbol, set a variable in the output files,
 8372: @c save the result in a cache file for future @code{configure} runs, and
 8373: @c print a message letting the user know the result of the test.
 8374: @c 
 8375: 一度@code{configure}で特徴の存在を定義すると,その情報を記録するために何
 8376: ができるのでしょうか? そうする方法は4種類あります.Cプリプロセッサシン
 8377: ボルの定義,出力ファイルで変数を設定,@code{configure}実行時のキャッシュ
 8378: ファイルに結果を保存,そして,テスト結果をユーザに知らせるメッセージの出
 8379: 力です.
 8380: 
 8381: @menu
 8382: * Defining Symbols::            Defining C preprocessor symbols
 8383: * Setting Output Variables::    Replacing variables in output files
 8384: * Caching Results::             Speeding up subsequent @code{configure} runs
 8385: * Printing Messages::           Notifying @code{configure} users
 8386: @end menu
 8387: 
 8388: @node Defining Symbols, Setting Output Variables, Results, Results
 8389: @section Cプリプロセッサシンボルの定義
 8390: 
 8391: @c A common action to take in response to a feature test is to define a C
 8392: @c preprocessor symbol indicating the results of the test.  That is done by
 8393: @c calling @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}.
 8394: @c 
 8395: 特徴テストからの応答を受けとる通常の動作は,テストの結果を示すCプリプロ
 8396: セッサシンボルを定義することです.それは@code{AC_DEFINE}や
 8397: @code{AC_DEFINE_UNQUOTED}と呼ばれるもので行います.
 8398: 
 8399: @c By default, @code{AC_OUTPUT} places the symbols defined by these macros
 8400: @c into the output variable @code{DEFS}, which contains an option
 8401: @c @option{-D@var{symbol}=@var{value}} for each symbol defined.  Unlike in
 8402: @c Autoconf version 1, there is no variable @code{DEFS} defined while
 8403: @c @code{configure} is running.  To check whether Autoconf macros have
 8404: @c already defined a certain C preprocessor symbol, test the value of the
 8405: @c appropriate cache variable, as in this example:
 8406: @c 
 8407: デフォルトで,@code{AC_OUTPUT}はマクロが定義したシンボルを,出力変数 
 8408: @code{DEFS}に配置し,それはそれぞれのシンボルに対する
 8409: @option{-D@var{symbol}=@var{value}}を含んでいます.Autoconfバージョン1と
 8410: 異なり,@code{configure}が実行中に定義する変数@code{DEFS}はありません.
 8411: Autoconfマクロが,あるCプリプロセッサシンボルを既に定義しているかどうか
 8412: 調査するため,以下の例のように,適切なキャッシュ変数の値をテストしてくだ
 8413: さい.
 8414: 
 8415: @example
 8416: AC_CHECK_FUNC(vprintf, [AC_DEFINE(HAVE_VPRINTF)])
 8417: if test "$ac_cv_func_vprintf" != yes; then
 8418:   AC_CHECK_FUNC(_doprnt, [AC_DEFINE(HAVE_DOPRNT)])
 8419: fi
 8420: @end example
 8421: 
 8422: @c If @code{AC_CONFIG_HEADERS} has been called, then instead of creating
 8423: @c @code{DEFS}, @code{AC_OUTPUT} creates a header file by substituting the
 8424: @c correct values into @code{#define} statements in a template file.
 8425: @c @xref{Configuration Headers}, for more information about this kind of
 8426: @c output.
 8427: @c 
 8428: @code{AC_CONFIG_HEADERS}が呼び出された場合,@code{DEFS}を作成する代わり
 8429: に,@code{AC_OUTPUT}でテンプレートファイルに@code{#define}文で正しい値を
 8430: 代入したヘッダファイルを作成します.この種類の出力の詳細は,
 8431: @xref{Configuration Headers}.
 8432: 
 8433: @defmac AC_DEFINE (@var{variable}, @r{[}@var{value}@r{]}, @r{[}@var{description}@r{]})
 8434: @maindex DEFINE
 8435: @c Define C preprocessor variable @var{variable}.  If @var{value} is given,
 8436: @c set @var{variable} to that value (verbatim), otherwise set it to 1.
 8437: @c @var{value} should not contain literal newlines, and if you are not
 8438: @c using @code{AC_CONFIG_HEADERS} it should not contain any @samp{#}
 8439: @c characters, as @code{make} tends to eat them.  To use a shell variable
 8440: @c (which you need to do in order to define a value containing the M4 quote
 8441: @c characters @samp{[} or @samp{]}), use @code{AC_DEFINE_UNQUOTED} instead.
 8442: @c @var{description} is only useful if you are using
 8443: @c @code{AC_CONFIG_HEADERS}.  In this case, @var{description} is put into
 8444: @c the generated @file{config.h.in} as the comment before the macro define.
 8445: @c The following example defines the C preprocessor variable
 8446: @c @code{EQUATION} to be the string constant @samp{"$a > $b"}:
 8447: @c 
 8448: Cプリプロセッサ変数@var{variable}を定義します.@var{value}が与えられる場
 8449: 合は,@var{variable}にその値を(そのまま)設定し,それ以外では1に設定しま
 8450: す.@var{value}は改行リテラルを含むべきではなく, 
 8451: @code{AC_CONFIG_HEADERS}を使用しない場合,@code{make}が処理してしまうの
 8452: で,@samp{#}文字を含めるべきではありません.シェル変数(M4の引用符文字
 8453: @samp{[}や@samp{]}を含む定義値が必要なもの)を使用するために,代わりに
 8454: @code{AC_DEFINE_UNQUOTED}を使用してください.@var{description}は, 
 8455: @code{AC_CONFIG_HEADER}を使用する場合のみ役に立ちます.この場合, 
 8456: @var{description}は,生成された@file{config.h.in}に,マクロ定義前のコメ
 8457: ントとして書き込まれます.以下の例は,Cプリプロセッサ変数@code{EQUATION} 
 8458: を文字定数@samp{"$a > $b"}と定義します.
 8459: 
 8460: @example
 8461: AC_DEFINE(EQUATION, "$a > $b")
 8462: @end example
 8463: @end defmac
 8464: 
 8465: @defmac AC_DEFINE_UNQUOTED (@var{variable}, @r{[}@var{value}@r{]}, @r{[}@var{description}@r{]})
 8466: @maindex DEFINE_UNQUOTED
 8467: @c Like @code{AC_DEFINE}, but three shell expansions are
 8468: @c performed---once---on @var{variable} and @var{value}: variable expansion
 8469: @c (@samp{$}), command substitution (@samp{`}), and backslash escaping
 8470: @c (@samp{\}).  Single and double quote characters in the value have no
 8471: @c special meaning.  Use this macro instead of @code{AC_DEFINE} when
 8472: @c @var{variable} or @var{value} is a shell variable.  Examples:
 8473: @c 
 8474: @code{AC_DEFINE}に似ていますが,@var{variable}と@var{value}で,3つのシェ
 8475: ル展開が---一度に---実行されます.変数の展開(@samp{$}),コマンドの置換
 8476: (@samp{`}),そしてバックスラッシュエスケープ(@samp{\})です.値の中のシン
 8477: グルクオートとダブルクオートの文字列,特別な意味を持ちません.
 8478: @var{variable}や @var{value}がシェル変数の時は,@code{AC_DEFINE}の代わり
 8479: にこのマクロを使用してください.以下がその例です.
 8480: 
 8481: @example
 8482: AC_DEFINE_UNQUOTED(config_machfile, "$machfile")
 8483: AC_DEFINE_UNQUOTED(GETGROUPS_T, $ac_cv_type_getgroups)
 8484: AC_DEFINE_UNQUOTED($ac_tr_hdr)
 8485: @end example
 8486: @end defmac
 8487: 
 8488: @c Due to the syntactical bizarreness of the Bourne shell, do not use
 8489: @c semicolons to separate @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}
 8490: @c calls from other macro calls or shell code; that can cause syntax errors
 8491: @c in the resulting @code{configure} script.  Use either spaces or
 8492: @c newlines.  That is, do this:
 8493: @c 
 8494: Bourneシェルの構文の特異性のため,他のマクロから呼び出しやシェルコードと
 8495: @code{AC_DEFINE}や@code{AC_DEFINE_UNQUOTED}を分けるため,セミコロンを使
 8496: 用しないでください.そうすると,@code{configure}スクリプトの結果として構
 8497: 文エラーの原因となります.以下のようにします.
 8498: 
 8499: @example
 8500: AC_CHECK_HEADER(elf.h, [AC_DEFINE(SVR4) LIBS="$LIBS -lelf"])
 8501: @end example
 8502: 
 8503: @noindent
 8504: @c or this:
 8505: @c 
 8506: あるいは以下のようにします.
 8507: 
 8508: @example
 8509: AC_CHECK_HEADER(elf.h,
 8510:  [AC_DEFINE(SVR4)
 8511:   LIBS="$LIBS -lelf"])
 8512: @end example
 8513: 
 8514: @noindent
 8515: @c instead of this:
 8516: @c 
 8517: それらは以下の代わりのものです.
 8518: 
 8519: @example
 8520: AC_CHECK_HEADER(elf.h, [AC_DEFINE(SVR4); LIBS="$LIBS -lelf"])
 8521: @end example
 8522: 
 8523: 
 8524: @node Setting Output Variables, Caching Results, Defining Symbols, Results
 8525: @section 出力変数の設定
 8526: 
 8527: @c Another way to record the results of tests is to set @dfn{output
 8528: @c variables}, which are shell variables whose values are substituted into
 8529: @c files that @code{configure} outputs.  The two macros below create new
 8530: @c output variables.  @xref{Preset Output Variables}, for a list of output
 8531: @c variables that are always available.
 8532: @c 
 8533: テストの結果を記録するもう一つの方法は,@dfn{出力変数}を設定することで,
 8534: それは,@code{configure}が出力したファイルの中に,シェル変数の値を代入す
 8535: ることです.以下の2つのマクロで新しい出力変数を作ります.利用可能な出力
 8536: 変数のリストは,@xref{Preset Output Variables}.
 8537: 
 8538: @defmac AC_SUBST (@var{variable}, @r{[}@var{value}@r{]})
 8539: @maindex SUBST
 8540: @c Create an output variable from a shell variable.  Make @code{AC_OUTPUT}
 8541: @c substitute the variable @var{variable} into output files (typically one
 8542: @c or more @file{Makefile}s).  This means that @code{AC_OUTPUT} will
 8543: @c replace instances of @samp{@@@var{variable}@@} in input files with the
 8544: @c value that the shell variable @var{variable} has when @code{AC_OUTPUT}
 8545: @c is called.  This value of @var{variable} should not contain literal
 8546: @c newlines.
 8547: @c 
 8548: シェル変数から出力変数を作成します.@code{AC_OUTPUT}は,出力ファイルの変
 8549: 数@var{variable}に代入します(通常,一つ以上の@file{Makefile}です).これ
 8550: は,@code{AC_OUTPUT}が呼び出されたとき,入力ファイルの
 8551: @samp{@@@var{variable}@@}のインスタンスをシェル変数@var{variable}が持つ
 8552: 値で@code{AC_OUTPUT}が置換することを意味します.@var{variable}のこの値は
 8553: 改行リテラルを含むべきではありません.
 8554: 
 8555: @c If @var{value} is given, in addition assign it to @samp{variable}.
 8556: @c 
 8557: @var{value}が与えられている場合,さらにそれも@samp{variable}に渡されます.
 8558: @end defmac
 8559: 
 8560: @defmac AC_SUBST_FILE (@var{variable})
 8561: @maindex SUBST_FILE
 8562: @c Another way to create an output variable from a shell variable.  Make
 8563: @c @code{AC_OUTPUT} insert (without substitutions) the contents of the file
 8564: @c named by shell variable @var{variable} into output files.  This means
 8565: @c that @code{AC_OUTPUT} will replace instances of
 8566: @c @samp{@@@var{variable}@@} in output files (such as @file{Makefile.in})
 8567: @c with the contents of the file that the shell variable @var{variable}
 8568: @c names when @code{AC_OUTPUT} is called.  Set the variable to
 8569: @c @file{/dev/null} for cases that do not have a file to insert.
 8570: @c 
 8571: シェル変数から出力ファイルを作成するもう一つの方法です.@code{AC_OUTPUT} 
 8572: で,シェル変数@var{variable}で名付けられたファイルの内容を出力ファイルに
 8573: 挿入します(代入ではありません).これは,@code{AC_OUTPUT}が呼び出されたと
 8574: き,シェル変数@var{variable}の名前のファイルの内容で,
 8575: (@file{Makefile.in})のような出力ファイルの@samp{@@@var{variable}@@}のイ
 8576: ンスタンスを,@code{AC_OUTPUT}が置換することを意味します.挿入するファイ
 8577: ルがない場合には,変数@file{/dev/null}に設定します.
 8578: 
 8579: @c This macro is useful for inserting @file{Makefile} fragments containing
 8580: @c special dependencies or other @code{make} directives for particular host
 8581: @c or target types into @file{Makefile}s.  For example, @file{configure.ac}
 8582: @c could contain:
 8583: @c 
 8584: このマクロは,@file{Makefile}に特別な依存を含むフラグを挿入したり,特定
 8585: のホストやターゲットのための@code{make}ディレクティブを@file{Makefile} 
 8586: に挿入するとき役に立ちます.例えば,@file{configure.ac}に以下を含ませま
 8587: す.
 8588: 
 8589: @example
 8590: AC_SUBST_FILE(host_frag)
 8591: host_frag=$srcdir/conf/sun4.mh
 8592: @end example
 8593: 
 8594: @noindent
 8595: @c and then a @file{Makefile.in} could contain:
 8596: @c 
 8597: そして@file{Makefile.in}に以下を含ませます.
 8598: 
 8599: @example
 8600: @@host_frag@@
 8601: @end example
 8602: @end defmac
 8603: 
 8604: @cindex Previous Variable
 8605: @cindex Variable, Precious
 8606: @c Running @command{configure} in different environments can be extremely
 8607: @c dangerous.  If for instance the user runs @samp{CC=bizarre-cc
 8608: @c ./configure}, then the cache, @file{config.h} and many other output
 8609: @c files will depend upon @command{bizarre-cc} being the C compiler.  If
 8610: @c for some reason the user runs @command{/configure} again, or if it is
 8611: @c run via @samp{./config.status --recheck}, (@xref{Automatic Remaking},
 8612: @c and @pxref{config.status Invocation}), then the configuration can be
 8613: @c inconsistent, composed of results depending upon two different
 8614: @c compilers.
 8615: @c 
 8616: 異なる環境変数で@command{configure}を実行することは非常に危険です.例え
 8617: ば,ユーザが@samp{CC=bizarre-cc ./configure}を実行した場合,キャッシュ,
 8618: @file{config.h},そして多くの出力ファイルは,Cコンパイラが
 8619: @command{bizarre-cc}だということに依存します.理由があって,ユーザが再び
 8620: @command{./configure}を実行した場合や,@samp{./config.status --recheck} 
 8621: でそれが実行される場合(@xref{Automatic Remaking}. @pxref{config.status
 8622: Invocation}),コンフィグレーションは矛盾し,二つの異なるコンパイラに依存
 8623: した結果で構成されます.
 8624: 
 8625: @c Such variables are named @dfn{precious variables}, and can be declared
 8626: @c as such by @code{AC_ARG_VAR}.
 8627: @c 
 8628: そのような変数は@dfn{貴重な変数(precious variables)}と命名されていて,
 8629: @code{AC_ARG_VAR}のようなもので宣言可能です.
 8630: 
 8631: @defmac AC_ARG_VAR (@var{variable}, @var{description})
 8632: @maindex ARG_VAR
 8633: @c Declare @var{variable} is a precious variable, and include its
 8634: @c @var{description} in the variable section of @samp{./configure --help}.
 8635: @c 
 8636: @var{variable}を貴重な変数として宣言し,@samp{./configure --help}の可変
 8637: 部分にその@var{description}を含めます.
 8638: 
 8639: @c Being precious means that
 8640: @c 
 8641: 貴重とは,以下のことを意味します.
 8642: @itemize @minus
 8643: @item
 8644: @c @var{variable} is @code{AC_SUBST}'d.
 8645: @c 
 8646: @code{AC_SUBST}される@var{variable}.
 8647: 
 8648: @item
 8649: @c @var{variable} is kept in the cache including if it was not specified on
 8650: @c the @samp{./configure} command line.  Indeed, while @command{configure}
 8651: @c can notice the definition of @code{CC} in @samp{./configure
 8652: @c CC=bizarre-cc}, it is impossible to notice it in @samp{CC=bizarre-cc
 8653: @c ./configure}, which, unfortunately, is what most users do.
 8654: @c 
 8655: @samp{./configure}のコマンドラインで指定されていない場合でもキャッシュに
 8656: 保存される変数.実際,@command{configure}は@samp{./configure
 8657: CC=bizarre-cc}の@code{CC}の定義に注目できますが,@samp{CC=bizarre-cc
 8658: ./configure}のものには注意できません.そして,残念ながらほとんどのユーザ
 8659: がそうしています.
 8660: 
 8661: @item
 8662: @c @var{variable} is checked for consistency between two
 8663: @c @command{configure} runs.  For instance:
 8664: @c 
 8665: @var{variable}は2回の@command{configure}の実行の間の整合性を調査されます.
 8666: 例えば,以下のようにします.
 8667: 
 8668: @example
 8669: $ ./configure --silent --config-cache
 8670: $ CC=cc ./configure --silent --config-cache
 8671: configure: error: `CC' was not set in the previous run
 8672: configure: error: changes in the environment can compromise \
 8673: the build
 8674: configure: error: run `make distclean' and/or \
 8675: `rm config.cache' and start over
 8676: @end example
 8677: 
 8678: @noindent
 8679: @c and similarly if the variable is unset, or if its content is changed.
 8680: @c 
 8681: そして,それは変数を未設定にする場合や,その内容が変更される場合も似たよ
 8682: うなものです.
 8683: 
 8684: @item
 8685: @c @var{variable} is kept during automatic reconfiguration
 8686: @c (@pxref{config.status Invocation}) as if it had been passed as a command
 8687: @c line argument, including when no cache is used:
 8688: @c 
 8689: @var{variable}は,自動的な再コンフィグレーションの間,コマンド引数として
 8690: 渡されているかのように保存され,キャッシュを使用していないときもです.
 8691: 
 8692: @example
 8693: $ CC=/usr/bin/cc ./configure undeclared_var=raboof --silent
 8694: $ ./config.status --recheck
 8695: running /bin/sh ./configure undeclared_var=raboof --silent \
 8696:   CC=/usr/bin/cc  --no-create --no-recursion
 8697: @end example
 8698: @end itemize
 8699: @end defmac
 8700: 
 8701: 
 8702: @node Caching Results, Printing Messages, Setting Output Variables, Results
 8703: @section 結果のキャッシュ
 8704: @cindex Cache
 8705: 
 8706: @c To avoid checking for the same features repeatedly in various
 8707: @c @code{configure} scripts (or in repeated runs of one script),
 8708: @c @code{configure} can optionally save the results of many checks in a
 8709: @c @dfn{cache file} (@pxref{Cache Files}).  If a @code{configure} script
 8710: @c runs with caching enabled and finds a cache file, it reads the results
 8711: @c of previous runs from the cache and avoids rerunning those checks.  As a
 8712: @c result, @code{configure} can then run much faster than if it had to
 8713: @c perform all of the checks every time.
 8714: @c 
 8715: 様々な@code{configure}スクリプトで,同じ特徴を繰り返し調査する(あるいは
 8716: 何度も一つのスクリプトを実行する)ことを避けるため,@code{configure}は,
 8717: 多くの調査結果を@dfn{キャッシュファイル(cache file)}に保存します
 8718: (@pxref{Cache Files}).キャッシュ可能な状態で@code{configure}スクリプト
 8719: を実行していてキャッシュファイルが見つかる場合,前回の実行結果をキャッシュ
 8720: から読み込み,これらの調査の再実行を避けます.結果として,
 8721: @code{configure}は,毎回全ての調査を実行するより早くなります.
 8722: 
 8723: @defmac AC_CACHE_VAL (@var{cache-id}, @var{commands-to-set-it})
 8724: @maindex CACHE_VAL
 8725: @c Ensure that the results of the check identified by @var{cache-id} are
 8726: @c available.  If the results of the check were in the cache file that was
 8727: @c read, and @code{configure} was not given the @option{--quiet} or
 8728: @c @option{--silent} option, print a message saying that the result was
 8729: @c cached; otherwise, run the shell commands @var{commands-to-set-it}.  If
 8730: @c the shell commands are run to determine the value, the value will be
 8731: @c saved in the cache file just before @code{configure} creates its output
 8732: @c files.  @xref{Cache Variable Names}, for how to choose the name of the
 8733: @c @var{cache-id} variable.
 8734: @c 
 8735: @var{cache-id}で識別した調査結果が,利用可能だということを保証します.調
 8736: 査結果が読み込まれたキャッシュファイルにあり,@code{configure}に, 
 8737: @samp{--quiet}や@samp{--silent}オプションが与えられていない場合,結果が
 8738: キャッシュされていることを示すメッセージを出力します.それ以外では,シェ
 8739: ルコマンド@var{commands-to-set-it}を実行します.シェルコマンドを値を決定
 8740: するために実行する場合,@code{configure}が出力ファイルを作成する直前に,
 8741: 値をキャッシュファイルに保存します.@var{cache-id}変数の名前を選択する方
 8742: 法は,@xref{Cache Variable Names}.
 8743: 
 8744: @c The @var{commands-to-set-it} @emph{must have no side effects} except for
 8745: @c setting the variable @var{cache-id}, see below.
 8746: @c 
 8747: @var{commands-to-set-it}は,設定された変数 @var{cache-id}以外に@emph{副
 8748: 作用がないはずです}.以下を参照してください.
 8749: @end defmac
 8750: 
 8751: @defmac AC_CACHE_CHECK (@var{message}, @var{cache-id}, @var{commands-to-set-it})
 8752: @maindex CACHE_CHECK
 8753: @c A wrapper for @code{AC_CACHE_VAL} that takes care of printing the
 8754: @c messages.  This macro provides a convenient shorthand for the most
 8755: @c common way to use these macros.  It calls @code{AC_MSG_CHECKING} for
 8756: @c @var{message}, then @code{AC_CACHE_VAL} with the @var{cache-id} and
 8757: @c @var{commands} arguments, and @code{AC_MSG_RESULT} with @var{cache-id}.
 8758: @c 
 8759: メッセージ出力に注意が必要な@code{AC_CACHE_VAL}のラッパーです.このマク
 8760: ロは,これらのマクロを使用する最も一般的な方法に対して,便利な略記法を提
 8761: 供します.それは,@var{message}に対して@code{AC_MSG_CHECKING}を呼び出し,
 8762: その後で,@var{cache-id}と@var{commands}引数を伴う@code{AC_CACHE_VAL}と,
 8763: @var{cache-id}を伴う@code{AC_MSG_RESULT}を呼び出します.
 8764: 
 8765: @c The @var{commands-to-set-it} @emph{must have no side effects} except for
 8766: @c setting the variable @var{cache-id}, see below.
 8767: @c 
 8768: @var{commands-to-set-it}は,設定された変数 @var{cache-id}以外に@emph{副
 8769: 作用がないはずです}.以下を参照してください.
 8770: @end defmac
 8771: 
 8772: @c It is very common to find buggy macros using @code{AC_CACHE_VAL} or
 8773: @c @code{AC_CACHE_CHECK}, because people are tempted to call
 8774: @c @code{AC_DEFINE} in the @var{commands-to-set-it}. Instead, the code that
 8775: @c @emph{follows} the call to @code{AC_CACHE_VAL} should call
 8776: @c @code{AC_DEFINE}, by examining the value of the cache variable.  For
 8777: @c instance, the following macro is broken:
 8778: @c 
 8779: @var{commands-to-set-it}で@code{AC_DEFINE}の呼び出しを試みるため,
 8780: @code{AC_CACHE_VAL}や@code{AC_CACHE_CHECK}を使用しているバグの多いマクロ
 8781: を発見することはよくあります.その代わりに,@code{AC_CACHE_VAL}を呼び出
 8782: している@emph{以下の}ようなコードでは,キャッシュ変数の値を調べることで,
 8783: @code{AC_DEFINE}を呼び出すべきです.例えば,以下のマクロは駄目です.
 8784: 
 8785: @example
 8786: @group
 8787: AC_DEFUN([AC_SHELL_TRUE],
 8788: [AC_CACHE_CHECK([whether true(1) works], [ac_cv_shell_true_works],
 8789:                 [ac_cv_shell_true_works=no
 8790:                  true && ac_cv_shell_true_works=yes
 8791:                  if test $ac_cv_shell_true_works = yes; then
 8792:                    AC_DEFINE([TRUE_WORKS], 1
 8793:                              [Define if `true(1)' works properly.])
 8794:                  fi])
 8795: ])
 8796: @end group
 8797: @end example
 8798: 
 8799: @noindent
 8800: @c This fails if the cache is enabled: the second time this macro is run,
 8801: @c @code{TRUE_WORKS} @emph{will not be defined}.  The proper implementation
 8802: @c is:
 8803: @c 
 8804: これは,キャッシュが利用可能な場合,失敗します.このマクロの2回目の実行
 8805: で,@code{TRUE_WORKS}は@emph{定義されていないでしょう}.適切な実装は以下
 8806: のようになります.
 8807: 
 8808: @example
 8809: @group
 8810: AC_DEFUN([AC_SHELL_TRUE],
 8811: [AC_CACHE_CHECK([whether true(1) works], [ac_cv_shell_true_works],
 8812:                 [ac_cv_shell_true_works=no
 8813:                  true && ac_cv_shell_true_works=yes])
 8814:  if test $ac_cv_shell_true_works = yes; then
 8815:    AC_DEFINE([TRUE_WORKS], 1
 8816:              [Define if `true(1)' works properly.])
 8817:  fi
 8818: ])
 8819: @end group
 8820: @end example
 8821: 
 8822: @c Also, @var{commands-to-set-it} should not print any messages, for
 8823: @c example with @code{AC_MSG_CHECKING}; do that before calling
 8824: @c @code{AC_CACHE_VAL}, so the messages are printed regardless of whether
 8825: @c the results of the check are retrieved from the cache or determined by
 8826: @c running the shell commands.
 8827: @c 
 8828: また,@var{commands-to-set-it}では,例えば@code{AC_MSG_CHECKING}を用いて
 8829: メッセージを出力すべきではありません.調査の結果がキャッシュから取り出さ
 8830: れるか,シェルコマンドの実行で決定されるかに依存せずメッセージが出力され
 8831: るので,@code{AC_CACHE_VAL}の呼び出しの前にしてください.
 8832: 
 8833: @menu
 8834: * Cache Variable Names::        Shell variables used in caches
 8835: * Cache Files::                 Files @code{configure} uses for caching
 8836: * Cache Checkpointing::         Loading and saving the cache file
 8837: @end menu
 8838: 
 8839: @node Cache Variable Names, Cache Files, Caching Results, Caching Results
 8840: @subsection キャッシュ変数名
 8841: @cindex Cache variable
 8842: 
 8843: @c The names of cache variables should have the following format:
 8844: @c 
 8845: キャッシュ変数の名前は以下の書式にすべきです.
 8846: 
 8847: @example
 8848: @var{package-prefix}_cv_@var{value-type}_@var{specific-value}_@r{[}@var{additional-options}@r{]}
 8849: @end example
 8850: 
 8851: @noindent
 8852: @c for example, @samp{ac_cv_header_stat_broken} or
 8853: @c @samp{ac_cv_prog_gcc_traditional}.  The parts of the variable name are:
 8854: @c 
 8855: 例えば,@samp{ac_cv_header_stat_broken}や
 8856: @samp{ac_cv_prog_gcc_traditional}です.変数名の一部は以下のようにします.
 8857: 
 8858: @table @asis
 8859: @item @var{package-prefix}
 8860: @c An abbreviation for your package or organization; the same prefix you
 8861: @c begin local Autoconf macros with, except lowercase by convention.
 8862: @c For cache values used by the distributed Autoconf macros, this value is
 8863: @c @samp{ac}.
 8864: @c 
 8865: パッケージや組織の省略です.小文字の慣習以外は,ローカルなAutoconfマクロ
 8866: と同じプレフィクスで開始します.配布されているAutoconfマクロで使用される
 8867: キャッシュ値に対して,この値は@samp{ac}になっています.
 8868: 
 8869: @item @code{_cv_}
 8870: @c Indicates that this shell variable is a cache value. This string
 8871: @c @emph{must} be present in the variable name, including the leading
 8872: @c underscore.
 8873: @c 
 8874: シェル変数がキャッシュ値であることを示します.この文字列は,前置されるア
 8875: ンダースコアを含め,変数名に存在する@emph{必要があります}.
 8876: 
 8877: @item @var{value-type}
 8878: @c A convention for classifying cache values, to produce a rational naming
 8879: @c system.  The values used in Autoconf are listed in @ref{Macro Names}.
 8880: @c 
 8881: 合理的な命名システムを生成するため,キャッシュ値の分類のための慣習です.
 8882: Autoconfで使用する値は,@ref{Macro Names}にリストがあります.
 8883: 
 8884: @item @var{specific-value}
 8885: @c Which member of the class of cache values this test applies to.
 8886: @c For example, which function (@samp{alloca}), program (@samp{gcc}), or
 8887: @c output variable (@samp{INSTALL}).
 8888: @c 
 8889: このテストが適応しているキャッシュ値のクラスのメンバーです.例えば,関数
 8890: (@samp{alloca}),プログラム(@samp{gcc}),または,出力変数
 8891: (@samp{INSTALL})です.
 8892: 
 8893: @item @var{additional-options}
 8894: @c Any particular behavior of the specific member that this test applies to.
 8895: @c For example, @samp{broken} or @samp{set}.  This part of the name may
 8896: @c be omitted if it does not apply.
 8897: @c 
 8898: このテストが適応している特定のメンバーの特定の動作です.例えば,
 8899: @samp{broken}や@samp{set}です.適応されない場合,名前のこの部分は省略さ
 8900: れます.
 8901: @end table
 8902: 
 8903: @c The values assigned to cache variables may not contain newlines.
 8904: @c Usually, their values will be boolean (@samp{yes} or @samp{no}) or the
 8905: @c names of files or functions; so this is not an important restriction.
 8906: @c 
 8907: キャッシュ変数に割り当てられた値には,改行を含めてはなりません.通常,そ
 8908: れらの値は真偽値(@samp{yes}や@samp{no}),あるいはファイルや関数の名前で
 8909: す.そのため,これは重要な制限ではありません.
 8910: 
 8911: 
 8912: @node Cache Files, Cache Checkpointing, Cache Variable Names, Caching Results
 8913: @subsection キャッシュファイル
 8914: 
 8915: @c A cache file is a shell script that caches the results of configure
 8916: @c tests run on one system so they can be shared between configure scripts
 8917: @c and configure runs.  It is not useful on other systems.  If its contents
 8918: @c are invalid for some reason, the user may delete or edit it.
 8919: @c 
 8920: キャッシュファイルは,コンフィグレーションスクリプトとコンフィグレーショ
 8921: ンの実行の間で結果を共有できるように,一つのシステムでコンフィグレーショ
 8922: ンテストの結果をキャッシュするしているシェルスクリプトです.他のシステム
 8923: では役に立ちません.その内容が,理由があって無効になる場合,ユーザは削除
 8924: したり編集したりできます.
 8925: 
 8926: @c By default, @code{configure} uses no cache file (technically, it uses
 8927: @c @option{--cache-file=/dev/null}), to avoid problems caused by accidental
 8928: @c use of stale cache files.
 8929: @c 
 8930: デフォルトで,古いキャッシュファイルの使用で偶然生じる問題を避けるため,
 8931: @code{configure}はキャッシュファイルを使用しません(技術的には,
 8932: @option{--cache-file=/dev/null}を使用します).
 8933: 
 8934: @c To enable caching, @code{configure} accepts @option{--config-cache} (or
 8935: @c @option{-C}) to cache results in the file @file{config.cache}.
 8936: @c Alternatively, @option{--cache-file=@var{file}} specifies that
 8937: @c @var{file} be the cache file.  The cache file is created if it does not
 8938: @c exist already.  When @code{configure} calls @code{configure} scripts in
 8939: @c subdirectories, it uses the @option{--cache-file} argument so that they
 8940: @c share the same cache.  @xref{Subdirectories}, for information on
 8941: @c configuring subdirectories with the @code{AC_CONFIG_SUBDIRS} macro.
 8942: @c 
 8943: キャッシュを利用可能にするために,@code{configure}は結果をファイル
 8944: @file{config.cache}にキャッシュする@option{--config-cache}(または,
 8945: @option{-C})を受け入れます.代わり方法として,
 8946: @option{--cache-file=@var{file}}でキャッシュファイルにする@var{file}を指
 8947: 定します.@code{configure}がサブディレクトリの@code{configure}スクリプト
 8948: を呼び出すとき,同じキャッシュファイルを共有するように,
 8949: @option{--cache-file}引数を使用します.@code{AC_CONFIG_SUBDIRS}マクロを
 8950: 用いてサブディレクトリでコンフィグレーションすることの情報は,
 8951: @xref{Subdirectories}.
 8952: 
 8953: @c @file{config.status} only pays attention to the cache file if it is
 8954: @c given the @option{--recheck} option, which makes it rerun
 8955: @c @code{configure}.
 8956: @c 
 8957: @file{config.status}は,@code{configure}を再実行する@option{--recheck}オ
 8958: プションが与えられている場合のみ,キャッシュファイルに注意を払います.
 8959: 
 8960: @c It is wrong to try to distribute cache files for particular system types.
 8961: @c There is too much room for error in doing that, and too much
 8962: @c administrative overhead in maintaining them.  For any features that
 8963: @c can't be guessed automatically, use the standard method of the canonical
 8964: @c system type and linking files (@pxref{Manual Configuration}).
 8965: @c 
 8966: 特定のシステム形式に対してキャッシュファイルを配布しようとすることは間違
 8967: いです.そうすることによるエラーに対する場所が非常に多くなり,メンテナン
 8968: ス時の管理上のオーバーヘッドが非常に多くなります.自動的に推測できない特
 8969: 徴に対して,標準的なシステムの形式とリンクファイルの標準的な方法を使用し
 8970: てください (@pxref{Manual Configuration}).
 8971: 
 8972: @c The site initialization script can specify a site-wide cache file to
 8973: @c use, instead of the usual per-program cache.  In this case, the cache
 8974: @c file will gradually accumulate information whenever someone runs a new
 8975: @c @code{configure} script.  (Running @code{configure} merges the new cache
 8976: @c results with the existing cache file.)  This may cause problems,
 8977: @c however, if the system configuration (e.g. the installed libraries or
 8978: @c compilers) changes and the stale cache file is not deleted.
 8979: @c 
 8980: サイト初期化スクリプトは,通常のプログラム毎のキャッシュの代わりに,使用
 8981: するサイト全体のキャッシュファイルを指定することが可能です.この場合,
 8982: キャッシュファイルは,新しい@code{configure}スクリプトを実行する度に,情
 8983: 報がどんどん蓄積されていきます.(@code{configure}を実行すると,既存のキャッ
 8984: シュファイルを用いて新しい結果をマージします.) しかし,システムのコンフィ
 8985: グレーションが(例えば,ライブラリやコンパイラをインストールされて)変化し,
 8986: 古いキャッシュファイルが削除されない場合,これは問題になるかもしれません.
 8987: 
 8988: 
 8989: @node Cache Checkpointing,  , Cache Files, Caching Results
 8990: @subsection キャッシュのチェックポイント方法
 8991: 
 8992: @c If your configure script, or a macro called from configure.ac, happens
 8993: @c to abort the configure process, it may be useful to checkpoint the cache
 8994: @c a few times at key points using @code{AC_CACHE_SAVE}.  Doing so will
 8995: @c reduce the amount of time it takes to re-run the configure script with
 8996: @c (hopefully) the error that caused the previous abort corrected.
 8997: @c 
 8998: @code{configure}スクリプトや@file{configure.ac}から呼び出されるマクロが
 8999: コンフィグレーション処理を中断する場合,2,3回@code{AC_CACHE_SAVE}を使
 9000: 用して,キーポイントでキャッシュのチェックポイントにすることが役に立ちま
 9001: す.そうすると,(おそらく)前に異常終了を引き起こしたエラーを修正すること
 9002: で,@code{configure}スクリプトを再実行する時間が大幅に削減されます.
 9003: 
 9004: @c FIXME: Do we really want to document this guy?
 9005: @defmac AC_CACHE_LOAD
 9006: @maindex CACHE_LOAD
 9007: @c Loads values from existing cache file, or creates a new cache file if a
 9008: @c cache file is not found.  Called automatically from @code{AC_INIT}.
 9009: @c 
 9010: 既存のキャッシュファイルから値をロードする,あるいは,キャッシュファイル
 9011: がない場合,新しいキャッシュファイルを作成します.自動的に@code{AC_INIT} 
 9012: から呼び出されます.
 9013: @end defmac
 9014: 
 9015: @defmac AC_CACHE_SAVE
 9016: @maindex CACHE_SAVE
 9017: @c Flushes all cached values to the cache file.  Called automatically from
 9018: @c @code{AC_OUTPUT}, but it can be quite useful to call
 9019: @c @code{AC_CACHE_SAVE} at key points in configure.ac.
 9020: @c 
 9021: キャッシュファイルに全てのキャッシュ値を書き込みます.自動的に 
 9022: @code{AC_OUTPUT}から呼び出されますが,@file{configure.ac}のキーポイント
 9023: で@code{AC_CACHE_SAVE}を呼び出すことは,大変役に立つはずです.
 9024: @end defmac
 9025: 
 9026: @c For instance:
 9027: @c 
 9028: 例えば,以下のようにします.
 9029: 
 9030: @example
 9031: @r{ @dots{} AC_INIT, etc. @dots{}}
 9032: @group
 9033: # Checks for programs.
 9034: AC_PROG_CC
 9035: AC_PROG_GCC_TRADITIONAL
 9036: @r{ @dots{} more program checks @dots{}}
 9037: AC_CACHE_SAVE
 9038: @end group
 9039: 
 9040: @group
 9041: # Checks for libraries.
 9042: AC_CHECK_LIB(nsl, gethostbyname)
 9043: AC_CHECK_LIB(socket, connect)
 9044: @r{ @dots{} more lib checks @dots{}}
 9045: AC_CACHE_SAVE
 9046: @end group
 9047: 
 9048: @group
 9049: # Might abort...
 9050: AM_PATH_GTK(1.0.2,, (exit 1); exit)
 9051: AM_PATH_GTKMM(0.9.5,, (exit 1); exit)
 9052: @end group
 9053: @r{ @dots{} AC_OUTPUT, etc. @dots{}}
 9054: @end example
 9055: 
 9056: 
 9057: @node Printing Messages,  , Caching Results, Results
 9058: @section メッセージの出力
 9059: @cindex Messages, from @code{configure}
 9060: 
 9061: @c @code{configure} scripts need to give users running them several kinds
 9062: @c of information.  The following macros print messages in ways appropriate
 9063: @c for each kind.  The arguments to all of them get enclosed in shell
 9064: @c double quotes, so the shell performs variable and back-quote
 9065: @c substitution on them.
 9066: @c 
 9067: @code{configure}スクリプトは,それらを実行しているユーザに,何種類かの情
 9068: 報を与える必要があります.以下のマクロは,それぞれの種類に対して適切な方
 9069: 法でメッセージを出力します.全ての引数は,シェルのダブルクオートで囲まれ
 9070: ているので,シェルは変数とバッククオートの代入を実行します.
 9071: 
 9072: @c These macros are all wrappers around the @code{echo} shell command.
 9073: @c @code{configure} scripts should rarely need to run @code{echo} directly
 9074: @c to print messages for the user.  Using these macros makes it easy to
 9075: @c change how and when each kind of message is printed; such changes need
 9076: @c only be made to the macro definitions and all of the callers will change
 9077: @c automatically.
 9078: @c 
 9079: これらのマクロは,@code{echo}シェルコマンドを全てラップします.
 9080: @code{configure}スクリプトは,ユーザに対してメッセージを出力するため,直
 9081: 接@code{echo}を実行する必要は滅多にありません.これらのマクロを使用する
 9082: と,出力されるそれぞれのメッセージの種類を,いつでもどのようにでも簡単に
 9083: 変更できます.そのような変更は,マクロ定義の変更のみで必要で,呼び出し側
 9084: は自動的に変更されます.
 9085: 
 9086: @c To diagnose static issues, i.e., when @code{autoconf} is run, see
 9087: @c @ref{Reporting Messages}.
 9088: @c 
 9089: 静的な問題を診断するため,例えば@code{autoconf}が実行されるときは,
 9090: @ref{Reporting Messages}を参照してください.
 9091: 
 9092: @defmac AC_MSG_CHECKING (@var{feature-description})
 9093: @maindex MSG_CHECKING
 9094: @c Notify the user that @code{configure} is checking for a particular
 9095: @c feature.  This macro prints a message that starts with @samp{checking }
 9096: @c and ends with @samp{...} and no newline.  It must be followed by a call
 9097: @c to @code{AC_MSG_RESULT} to print the result of the check and the
 9098: @c newline.  The @var{feature-description} should be something like
 9099: @c @samp{whether the Fortran compiler accepts C++ comments} or @samp{for
 9100: @c c89}.
 9101: @c 
 9102: @code{configure}が調査している特徴を,ユーザに通知します.このマクロは 
 9103: @samp{checking }で始まり@samp{...}で終る,改行無しのメッセージを出力しま
 9104: す.調査の結果と改行のため,@code{AC_MSG_RESULT}を続けて呼び出す必要があ
 9105: ります.@var{feature-description}は@samp{FortranコンパイラがC++のコメン
 9106: トを受け入れるかどうか(whether the Fortran compiler accepts C++
 9107: comments)}や@samp{c89の調査(for c89)}のようなものです.
 9108: 
 9109: @c This macro prints nothing if @code{configure} is run with the
 9110: @c @option{--quiet} or @option{--silent} option.
 9111: @c 
 9112: @code{configure}が@samp{--quiet}や@samp{--silent}オプションを用いて実行
 9113: されている場合,このマクロは何も出力しません.
 9114: @end defmac
 9115: 
 9116: @defmac AC_MSG_RESULT (@var{result-description})
 9117: @maindex MSG_RESULT
 9118: @c Notify the user of the results of a check.  @var{result-description} is
 9119: @c almost always the value of the cache variable for the check, typically
 9120: @c @samp{yes}, @samp{no}, or a file name.  This macro should follow a call
 9121: @c to @code{AC_MSG_CHECKING}, and the @var{result-description} should be
 9122: @c the completion of the message printed by the call to
 9123: @c @code{AC_MSG_CHECKING}.
 9124: @c 
 9125: 調査結果をユーザに通知します.@var{result-description}は,ほとんどいつも
 9126: 調査に対するキャッシュ変数の値で,普通は@samp{yes},@samp{no},またはファ
 9127: イル名になります.このマクロは@code{AC_MSG_CHECKING}の呼び出しに続けるべ
 9128: きで,@var{result-description}は,@code{AC_MSG_CHECKING}の呼び出しで出力
 9129: されるメッセージを完成するものにするべきです.
 9130: 
 9131: @c This macro prints nothing if @code{configure} is run with the
 9132: @c @option{--quiet} or @option{--silent} option.
 9133: @c 
 9134: @code{configure}が@samp{--quiet}や@samp{--silent}オプションで実行される
 9135: 場合,このマクロは何も出力しません.
 9136: @end defmac
 9137: 
 9138: @defmac AC_MSG_NOTICE (@var{message})
 9139: @maindex MSG_NOTICE
 9140: @c Deliver the @var{message} to the user. It is useful mainly to print a
 9141: @c general description of the overall purpose of a group of feature checks,
 9142: @c e.g.,
 9143: @c 
 9144: @var{message}をユーザに伝えます.特徴を調査しているグループ全体の特徴に
 9145: ついて,例えば以下のような,一般的な記述を出力するときに主に役に立ちます.
 9146: 
 9147: @example
 9148: AC_MSG_NOTICE([checking if stack overflow is detectable])
 9149: @end example
 9150: 
 9151: @c This macro prints nothing if @code{configure} is run with the
 9152: @c @option{--quiet} or @option{--silent} option.
 9153: @c 
 9154: @code{configure}が@samp{--quiet}や@samp{--silent}オプションで実行される
 9155: 場合,このマクロは何も出力しません.
 9156: @end defmac
 9157: 
 9158: @defmac AC_MSG_ERROR (@var{error-description}, @r{[}@var{exit-status}@r{]})
 9159: @maindex MSG_ERROR
 9160: @c Notify the user of an error that prevents @code{configure} from
 9161: @c completing.  This macro prints an error message to the standard error
 9162: @c output and exits @code{configure} with @var{exit-status} (1 by default).
 9163: @c @var{error-description} should be something like @samp{invalid value
 9164: @c $HOME for \$HOME}.
 9165: @c 
 9166: @code{configure}の完了を妨げるエラーをユーザに通知します.このマクロは,
 9167: エラーメッセージを標準エラー出力に出力し,@code{configure}は
 9168: @var{exit-status}(デフォルトは1)で終了します.@var{error-description}は
 9169: @samp{\$HOMEに対し$HOMEは無効な値です(invalid value $HOME for \$HOME)}の
 9170: ようにすべきです.
 9171: 
 9172: @c The @var{error-description} should start with a lower-case letter, and
 9173: @c ``cannot'' is preferred to ``can't''.
 9174: @c 
 9175: @var{error-description}は小文字で開始すべきで,``can't''より``cannot''の
 9176: ほうが好ましいでしょう.
 9177: @end defmac
 9178: 
 9179: @defmac AC_MSG_WARN (@var{problem-description})
 9180: @maindex MSG_WARN
 9181: @c Notify the @code{configure} user of a possible problem.  This macro
 9182: @c prints the message to the standard error output; @code{configure}
 9183: @c continues running afterward, so macros that call @code{AC_MSG_WARN} should
 9184: @c provide a default (back-up) behavior for the situations they warn about.
 9185: @c @var{problem-description} should be something like @samp{ln -s seems to
 9186: @c make hard links}.
 9187: @c 
 9188: 可能性のある問題を@code{configure}しているユーザに通知します.このマクロ
 9189: は,標準エラー出力にメッセージを出力します.@code{configure}はその後も実
 9190: 行を続けるので,@code{AC_MSG_WARN}を呼び出すマクロでは,警告するような状
 9191: 態に対して,デフォルト(バックアップ)の動作を供給すべきです. 
 9192: @var{problem-description}は@samp{ln -s はハードリンクされます(ln -s
 9193: seems to make hard links)}のようなものにすべきです.
 9194: @end defmac
 9195: 
 9196: 
 9197: 
 9198: @c ====================================================== Programming in M4.
 9199: 
 9200: @node Programming in M4, Writing Autoconf Macros, Results, Top
 9201: @chapter M4でのプログラミング
 9202: 
 9203: @c Autoconf is written on top of two layers: @dfn{M4sugar}, which provides
 9204: @c convenient macros for pure M4 programming, and @dfn{M4sh}, which
 9205: @c provides macros dedicated to shell script generation.
 9206: @c 
 9207: Autoconfは,2つのレイヤーのトップに書かれています.それは,純粋なM4プロ
 9208: グラムで便利なマクロを提供している@dfn{M4sugar}と,シェルスクリプトの生
 9209: 成に専念するマクロを提供する@dfn{M4sh}です.
 9210: 
 9211: @c As of this version of Autoconf, these two layers are still experimental,
 9212: @c and their interface might change in the future.  As a matter of fact,
 9213: @c @emph{anything that is not documented must not be used}.
 9214: @c 
 9215: このバージョンのAutoconfでは,2つのレイヤーはまだ実験段階で,そのインター
 9216: フェースは将来変更される可能性があります.実際問題,@emph{文章化されてい
 9217: ないものは使用しないでください}.
 9218: 
 9219: @menu
 9220: * M4 Quotation::                Protecting macros from unwanted expansion
 9221: * Programming in M4sugar::      Convenient pure M4 macros
 9222: @end menu
 9223: 
 9224: @node M4 Quotation, Programming in M4sugar, Programming in M4, Programming in M4
 9225: @section M4の引用符
 9226: @cindex quotation
 9227: 
 9228: @c FIXME: Grmph, yet another quoting myth: quotation has *never*
 9229: @c prevented `expansion' of $1.  Unless it refers to the expansion
 9230: @c of the value of $1?  Anyway, we need a rewrite here@dots{}
 9231: 
 9232: @c The most common brokenness of existing macros is an improper quotation.
 9233: @c This section, which users of Autoconf can skip, but which macro writers
 9234: @c @emph{must} read, first justifies the quotation scheme that was chosen
 9235: @c for Autoconf and then ends with a rule of thumb.  Understanding the
 9236: @c former helps one to follow the latter.
 9237: @c 
 9238: 既存のマクロの最も一般的な問題は,不適当な引用符です.このセクションでは,
 9239: Autoconfのユーザは飛ばすことができますが,マクロを書く人は読む@emph{必要
 9240: があり},最初にAutoconfで採択された引用符を利用する方法を正当化し,最後
 9241: に経験則を述べます.前者を理解すると後者で役立ちます.
 9242: 
 9243: @menu
 9244: * Active Characters::           Characters that change the behavior of m4
 9245: * One Macro Call::              Quotation and one macro call
 9246: * Quotation and Nested Macros::  Macros calling macros
 9247: * Quadrigraphs::                Another way to escape special characters
 9248: * Quotation Rule Of Thumb::     One parenthesis, one quote
 9249: @end menu
 9250: 
 9251: @node Active Characters, One Macro Call, M4 Quotation, M4 Quotation
 9252: @subsection アクティブな文字
 9253: 
 9254: @c To fully understand where proper quotation is important, you first need
 9255: @c to know what are the special characters in Autoconf: @samp{#} introduces
 9256: @c a comment inside which no macro expansion is performed, @samp{,}
 9257: @c separates arguments, @samp{[} and @samp{]} are the quotes themselves,
 9258: @c and finally @samp{(} and @samp{)} (which @code{m4} tries to match by
 9259: @c pairs).
 9260: @c 
 9261: 適切な引用符の重要性を完全に理解するため,最初にAutoconfでの特殊な文字を
 9262: しる必要があります.@samp{#}は内部コメントの導入で,幕との拡張は実行され
 9263: ず,@samp{,}は引数のセパレータ,@samp{[}と@samp{]}はそれらの引用符,そし
 9264: て最後は,(@code{m4}が対の一致を試みる)@samp{(}と@samp{)}です.
 9265: 
 9266: @c In order to understand the delicate case of macro calls, we first have
 9267: @c to present some obvious failures.  Below they are ``obvious-ified'',
 9268: @c although you find them in real life, they are usually in disguise.
 9269: @c 
 9270: マクロ呼び出しの微妙な状況を理解するために,最初に明らかな失敗を紹介しな
 9271: ければならないでしょう.以下は``明らかなified''で,実生活でも見つかるで
 9272: しょうが,それらは通常ごまかしです.
 9273: 
 9274: @c Comments, introduced by a hash and running up to the newline, are opaque
 9275: @c tokens to the top level: active characters are turned off, and there is
 9276: @c no macro expansion:
 9277: @c 
 9278: ハッシュと改行まで実行することで導入されるコメントは,トップレベルへの不
 9279: 明瞭なトークンです.アクティブな文字はそうではなくなり,マクロの展開もあ
 9280: りません.
 9281: 
 9282: @example
 9283: # define([def], ine)
 9284: @result{}# define([def], ine)
 9285: @end example
 9286: 
 9287: @c Each time there can be a macro expansion, there is a quotation
 9288: @c expansion; i.e., one level of quotes is stripped:
 9289: @c 
 9290: マクロの展開がある毎に,引用符も展開されます.すなわち,第1レベルの引用
 9291: 符は削除されます.
 9292: 
 9293: @example
 9294: int tab[10];
 9295: @result{}int tab10;
 9296: [int tab[10];]
 9297: @result{}int tab[10];
 9298: @end example
 9299: 
 9300: @c Without this in mind, the reader will try hopelessly to use her macro
 9301: @c @code{array}:
 9302: @c 
 9303: これを覚えていなければ,読者は絶望しながらもマクロの@code{array}を使用し
 9304: てみるでしょう.
 9305: 
 9306: @example
 9307: define([array], [int tab[10];])
 9308: array
 9309: @result{}int tab10;
 9310: [array]
 9311: @result{}array
 9312: @end example
 9313: 
 9314: @noindent
 9315: @c How can you correctly output the intended results@footnote{Using
 9316: @c @code{defn}.}?
 9317: @c 
 9318: 期待する結果を正しく出力するにはどうすれば良いでしょうか
 9319: @footnote{@code{defn}を使用します.}?
 9320: 
 9321: 
 9322: @node One Macro Call, Quotation and Nested Macros, Active Characters, M4 Quotation
 9323: @subsection 一つのマクロの呼び出し
 9324: 
 9325: @c Let's proceed on the interaction between active characters and macros
 9326: @c with this small macro, which just returns its first argument:
 9327: @c 
 9328: さて,アクティブな文字と以下の単に最初の引数を返す小さなマクロを用いたマ
 9329: クロで,対話的に進めていきましょう.
 9330: 
 9331: @example
 9332: define([car], [$1])
 9333: @end example
 9334: 
 9335: @noindent
 9336: @c The two pairs of quotes above are not part of the arguments of
 9337: @c @code{define}; rather, they are understood by the top level when it
 9338: @c tries to find the arguments of @code{define}.  Therefore, it is
 9339: @c equivalent to write:
 9340: @c 
 9341: 上記の二組の引用符は@code{define}の引数の一部ではありません.そうではな
 9342: く,@code{define}の引数の検索が試みられるときに,それらはトップレベルで
 9343: 理解されます.そのため,それは以下のように書くことと等価です.
 9344: 
 9345: @example
 9346: define(car, $1)
 9347: @end example
 9348: 
 9349: @noindent
 9350: @c But, while it is acceptable for a @file{configure.ac} to avoid unneeded
 9351: @c quotes, it is bad practice for Autoconf macros which must both be more
 9352: @c robust and also advocate perfect style.
 9353: @c 
 9354: しかし,@file{configure.ac}が不必要な引用符を受け入れることはできますが,
 9355: より強固で,完全な形式を提案する必要もあるAutoconfマクロにとっては悪い慣
 9356: 習です.
 9357: 
 9358: @c At the top level, there are only two possible quotings: either you
 9359: @c quote or you don't:
 9360: @c 
 9361: トップレベルでは,引用符では2つの可能性があります.引用符で囲む,または
 9362: 囲まないでの二つです.
 9363: 
 9364: @example
 9365: car(foo, bar, baz)
 9366: @result{}foo
 9367: [car(foo, bar, baz)]
 9368: @result{}car(foo, bar, baz)
 9369: @end example
 9370: 
 9371: @c Let's pay attention to the special characters:
 9372: @c 
 9373: 特殊文字に注目してみましょう.
 9374: 
 9375: @example
 9376: car(#)
 9377: @error{}EOF in argument list
 9378: @end example
 9379: 
 9380: @c The closing parenthesis is hidden in the comment; with a hypothetical
 9381: @c quoting, the top level understood it this way:
 9382: @c 
 9383: 閉じカッコはコメント内に隠れてしまいます.引用符を推測することで,トップ
 9384: レベルでは以下のように理解します.
 9385: 
 9386: @example
 9387: car([#)]
 9388: @end example
 9389: 
 9390: @noindent
 9391: @c Proper quotation, of course, fixes the problem:
 9392: @c 
 9393: 適切な引用符は,もちろんこの問題を修正します.
 9394: 
 9395: @example
 9396: car([#])
 9397: @result{}#
 9398: @end example
 9399: 
 9400: @c The reader will easily understand the following examples:
 9401: @c 
 9402: 読者は,以下の例の方が理解しやすいかもしれません.
 9403: 
 9404: @example
 9405: car(foo, bar)
 9406: @result{}foo
 9407: car([foo, bar])
 9408: @result{}foo, bar
 9409: car((foo, bar))
 9410: @result{}(foo, bar)
 9411: car([(foo], [bar)])
 9412: @result{}(foo
 9413: car([], [])
 9414: @result{}
 9415: car([[]], [[]])
 9416: @result{}[]
 9417: @end example
 9418: 
 9419: @c With this in mind, we can explore the cases where macros invoke
 9420: @c macros@dots{}
 9421: @c 
 9422: これを覚えていると,次ののような状況も調査することが可能です.
 9423: マクロがマクロを呼び出し,マクロがマクロを呼び出し@dots{}
 9424: 
 9425: 
 9426: @node Quotation and Nested Macros, Quadrigraphs, One Macro Call, M4 Quotation
 9427: @subsection 引用符と入れ子状のマクロ
 9428: 
 9429: @c The examples below use the following macros:
 9430: @c 
 9431: これ以降の例では,以下のマクロを使用しています.
 9432: 
 9433: @example
 9434: define([car], [$1])
 9435: define([active], [ACT, IVE])
 9436: define([array], [int tab[10]])
 9437: @end example
 9438: 
 9439: @c Each additional embedded macro call introduces other possible
 9440: @c interesting quotations:
 9441: @c 
 9442: 追加の埋め込まれたマクロ呼び出しは,それぞれ興味深い引用符について,その
 9443: 他の可能性を導き出します.
 9444: 
 9445: @example
 9446: car(active)
 9447: @result{}ACT
 9448: car([active])
 9449: @result{}ACT, IVE
 9450: car([[active]])
 9451: @result{}active
 9452: @end example
 9453: 
 9454: @c In the first case, the top level looks for the arguments of @code{car},
 9455: @c and finds @samp{active}.  Because @code{m4} evaluates its arguments
 9456: @c before applying the macro, @samp{active} is expanded, which results in:
 9457: @c 
 9458: 最初の状況では,トップレベルでは@code{car}の引数を探し,@samp{active}が
 9459: 見つかります.@code{m4}はマクロを適用する前のその引数と等価なので,
 9460: @samp{active}は展開され,結果として以下のようになります.
 9461: 
 9462: @example
 9463: car(ACT, IVE)
 9464: @result{}ACT
 9465: @end example
 9466: 
 9467: @noindent
 9468: @c In the second case, the top level gives @samp{active} as first and only
 9469: @c argument of @code{car}, which results in:
 9470: @c 
 9471: 2番目の状況では,トップレベルは@code{car}の最初で唯一の引数として
 9472: @samp{active}を与えるので,結果として以下のようになります.
 9473: 
 9474: @example
 9475: active
 9476: @result{}ACT, IVE
 9477: @end example
 9478: 
 9479: @noindent
 9480: @c i.e., the argument is evaluated @emph{after} the macro that invokes it.
 9481: @c In the third case, @code{car} receives @samp{[active]}, which results in:
 9482: @c 
 9483: すなわち,マクロが呼び出された@emph{後で},引数が評価されます.3番目の状
 9484: 況では,@code{car}は@samp{[active]}を受けとり,結果として以下のようにな
 9485: ります.
 9486: 
 9487: @example
 9488: [active]
 9489: @result{}active
 9490: @end example
 9491: 
 9492: @noindent
 9493: @c exactly as we already saw above.
 9494: @c 
 9495: 上記で見たものと同じですね.
 9496: 
 9497: @c The example above, applied to a more realistic example, gives:
 9498: @c 
 9499: より現実的な例を適用して,上記の例に与えてみましょう.
 9500: 
 9501: @example
 9502: car(int tab[10];)
 9503: @result{}int tab10;
 9504: car([int tab[10];])
 9505: @result{}int tab10;
 9506: car([[int tab[10];]])
 9507: @result{}int tab[10];
 9508: @end example
 9509: 
 9510: @noindent
 9511: @c Huh?  The first case is easily understood, but why is the second wrong,
 9512: @c and the third right?  To understand that, you must know that after
 9513: @c @code{m4} expands a macro, the resulting text is immediately subjected
 9514: @c to macro expansion and quote removal.  This means that the quote removal
 9515: @c occurs twice---first before the argument is passed to the @code{car}
 9516: @c macro, and second after the @code{car} macro expands to the first
 9517: @c argument.
 9518: @c 
 9519: う〜ん? 最初の状況は簡単に理解できますが,なぜ2番目が間違っていて,3番
 9520: 得は正しいのでしょうか?それを理解するために,@code{m4}がマクロを展開し
 9521: た後,結果として生じるテキストがすぐにマクロを展開に従って引用符が取り除
 9522: かれることを知っておく必要があります.これは,引用符の削除が2回行なわれ
 9523: ることを意味します---最初に引数として@code{car}マクロに渡されるとき,2回
 9524: 目は@code{car}マクロが最初の引数を展開するときです.
 9525: 
 9526: @c As the author of the Autoconf macro @code{car}, you then consider it to
 9527: @c be incorrect that your users have to double-quote the arguments of
 9528: @c @code{car}, so you ``fix'' your macro.  Let's call it @code{qar} for
 9529: @c quoted car:
 9530: @c 
 9531: Autoconfマクロ@code{car}の作者として,ユーザが@code{car}の引数を二重の引
 9532: 用符にする必要があることは間違っていると考えるようにし,マクロを@emph{修
 9533: 正}してください.引用符で囲まれている@code{car}に対して,それを
 9534: @code{qar}と呼ぶことにしましょう.
 9535: 
 9536: @example
 9537: define([qar], [[$1]])
 9538: @end example
 9539: 
 9540: @noindent
 9541: @c and check that @code{qar} is properly fixed:
 9542: @c 
 9543: そして,@code{qar}が適切に修正されていることを調査してみます.
 9544: 
 9545: @example
 9546: qar([int tab[10];])
 9547: @result{}int tab[10];
 9548: @end example
 9549: 
 9550: @noindent
 9551: @c Ahhh!  That's much better.
 9552: @c 
 9553: ああ!そうした方が良さそうですね.
 9554: 
 9555: @c But note what you've done: now that the arguments are literal strings,
 9556: @c if the user wants to use the results of expansions as arguments, she has
 9557: @c to use an @emph{unquoted} macro call:
 9558: @c 
 9559: しかし,自分が行なったことに注意してください.現在その引数はリテラル文字
 9560: 列ですが,引数を展開した結果をユーザが使用したい場合,@emph{引用符で囲ま
 9561: れていない}マクロを使用する必要があります.
 9562: 
 9563: @example
 9564: qar(active)
 9565: @result{}ACT
 9566: @end example
 9567: 
 9568: @noindent
 9569: @c where she wanted to reproduce what she used to do with @code{car}:
 9570: @c 
 9571: @code{car}を用いて行なっていたことを再生成したい状況を考えます.
 9572: 
 9573: @example
 9574: car([active])
 9575: @result{}ACT, IVE
 9576: @end example
 9577: 
 9578: @noindent
 9579: @c Worse yet: she wants to use a macro that produces a set of @code{cpp}
 9580: @c macros:
 9581: @c 
 9582: まだ駄目ですね.@code{cpp}マクロの組を生成するマクロを使用したい状況を考
 9583: えてみましょう.
 9584: 
 9585: @example
 9586: define([my_includes], [#include <stdio.h>])
 9587: car([my_includes])
 9588: @result{}#include <stdio.h>
 9589: qar(my_includes)
 9590: @error{}EOF in argument list
 9591: @end example
 9592: 
 9593: @c This macro, @code{qar}, because it double quotes its arguments, forces
 9594: @c its users to leave their macro calls unquoted, which is dangerous.
 9595: @c Commas and other active symbols are interpreted by @code{m4} before
 9596: @c they are given to the macro, often not in the way the users expect.
 9597: @c Also, because @code{qar} behaves differently from the other macros,
 9598: @c it's an exception that should be avoided in Autoconf.
 9599: @c 
 9600: このマクロ@code{qar}は,引数を二重に引用符で囲むので,ユーザはマクロの呼
 9601: び出しを引用符で囲まないままにしておくよう強制され,それは危険です.カン
 9602: マとその他のアクティブなシンボルは,マクロに渡される前に@code{m4}で解釈
 9603: され,それはユーザが期待している手法ではないことが多いものです.また,
 9604: @code{qar}は,他のマクロとは異なる動作をするので,Autoconfでは避けるべき
 9605: だということが期待されます.
 9606: 
 9607: 
 9608: @node Quadrigraphs, Quotation Rule Of Thumb, Quotation and Nested Macros, M4 Quotation
 9609: @subsection 4文字表記
 9610: @cindex quadrigraphs
 9611: @cindex @samp{@@<:@@}
 9612: @cindex @samp{@@:>@@}
 9613: @cindex @samp{@@S|@@}
 9614: @cindex @samp{@@%:@@}
 9615: 
 9616: @c When writing an autoconf macro you may occasionally need to generate
 9617: @c special characters that are difficult to express with the standard
 9618: @c autoconf quoting rules.  For example, you may need to output the regular
 9619: @c expression @samp{[^[]}, which matches any character other than @samp{[}.
 9620: @c This expression contains unbalanced brackets so it cannot be put easily
 9621: @c into an M4 macro.
 9622: @c 
 9623: autoconfマクロを書いているとき,標準的なautoconfの引用符の規則で表現する
 9624: ことが難しい,特殊な文字を生成する必要が生じるかもしれません.例えば,
 9625: @samp{[}以外の全ての文字に一致する正規表現@samp{[^[]}を出力する必要があ
 9626: るかもしれません.この表現は,対称ではないカッコを含んでいるので,M4マク
 9627: ロの中に簡単に書き込むことはできません.
 9628: 
 9629: @c You can work around this problem by using one of the following
 9630: @c @dfn{quadrigraphs}:
 9631: @c 
 9632: 以下の@dfn{4文字表記}の一つを使用することで,この問題を解決することが
 9633: できます.
 9634: 
 9635: @table @samp
 9636: @item @@<:@@
 9637: @samp{[}
 9638: @item @@:>@@
 9639: @samp{]}
 9640: @item @@S|@@
 9641: @samp{$}
 9642: @item @@%:@@
 9643: @samp{#}
 9644: @end table
 9645: 
 9646: @c Quadrigraphs are replaced at a late stage of the translation process,
 9647: @c after @command{m4} is run, so they do not get in the way of M4 quoting.
 9648: @c For example, the string @samp{[^@@<:@@]}, if properly quoted, will
 9649: @c appear as @samp{[^[]} in the @code{configure} script.
 9650: @c 
 9651: 4文字表記は,@command{m4}が実行された後,変換処理の終りの段階で置換され
 9652: るので,M4の引用符の邪魔になりません.例えば,文字列@samp{[^@@<:@@]}は,
 9653: 適切に引用符で囲まれている場合,@code{configure}スクリプトでは
 9654: @samp{[^[]}として現れます.
 9655: 
 9656: 
 9657: @node Quotation Rule Of Thumb,  , Quadrigraphs, M4 Quotation
 9658: @subsection 引用の経験則
 9659: 
 9660: @c To conclude, the quotation rule of thumb is:
 9661: @c 
 9662: 終りに引用の経験則を述べます.
 9663: 
 9664: @center カッコの組毎に引用符の組(@emph{One pair of quotes per pair of parentheses.})
 9665: 
 9666: @c Never over-quote, never under-quote, in particular in the definition of
 9667: @c macros.  In the few places where the macros need to use brackets
 9668: @c (usually in C program text or regular expressions), properly quote
 9669: @c @emph{the arguments}!
 9670: @c 
 9671: 特にマクロ定義では,多過ぎる引用符もだめ,少な過ぎる引用符も駄目です.カッ
 9672: コを使用する必要があるマクロ(通常Cのプログラム文や正規表現の中)では,適
 9673: 切に@emph{引数を}引用符で囲んでください!
 9674: 
 9675: @c It is common to read Autoconf programs with snippets like:
 9676: @c 
 9677: 以下のような断片を用いたAutoconfプログラムを読むことはよくあります.
 9678: 
 9679: @example
 9680: AC_TRY_LINK(
 9681: changequote(<<, >>)dnl
 9682: <<#include <time.h>
 9683: #ifndef tzname /* For SGI.  */
 9684: extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
 9685: #endif>>,
 9686: changequote([, ])dnl
 9687: [atoi (*tzname);], ac_cv_var_tzname=yes, ac_cv_var_tzname=no)
 9688: @end example
 9689: 
 9690: @noindent
 9691: @c which is incredibly useless since @code{AC_TRY_LINK} is @emph{already}
 9692: @c double quoting, so you just need:
 9693: @c 
 9694: それは,@code{AC_TRY_LINK}は@emph{すでに}二重に引用符で囲まれているので, 
 9695: 全く無駄になり,実際は以下のようにするだけで十分です.
 9696: 
 9697: @example
 9698: AC_TRY_LINK(
 9699: [#include <time.h>
 9700: #ifndef tzname /* For SGI.  */
 9701: extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
 9702: #endif],
 9703:             [atoi (*tzname);],
 9704:             [ac_cv_var_tzname=yes],
 9705:             [ac_cv_var_tzname=no])
 9706: @end example
 9707: 
 9708: @noindent
 9709: @c The M4-fluent reader will note that these two examples are rigorously
 9710: @c equivalent, since @code{m4} swallows both the @samp{changequote(<<, >>)}
 9711: @c and @samp{<<} @samp{>>} when it @dfn{collects} the arguments: these
 9712: @c quotes are not part of the arguments!
 9713: @c 
 9714: M4に親しんでいる読者は,@code{m4}が引数を@dfn{まとめる}ときに
 9715: @samp{changequote(<<, >>)}と@samp{<<} @samp{>>}の両方を飲み込むので,こ
 9716: れら二つの例が厳密に等価であることに注意してください.これらの引用符は引
 9717: 数の一部ではありません!
 9718: 
 9719: @c Simplified, the example above is just doing this:
 9720: @c 
 9721: 単純にしてみると,上記の例は以下のようになります.
 9722: 
 9723: @example
 9724: changequote(<<, >>)dnl
 9725: <<[]>>
 9726: changequote([, ])dnl
 9727: @end example
 9728: 
 9729: @noindent
 9730: @c instead of simply:
 9731: @c 
 9732: その代わりに単純に以下のようにします.
 9733: 
 9734: @example
 9735: [[]]
 9736: @end example
 9737: 
 9738: 
 9739: @c With macros that do not double quote their arguments (which is the
 9740: @c rule), double-quote the (risky) literals:
 9741: @c 
 9742: 引数を(規則で)二重に引用符で囲まないマクロを用いると,二重の引用は(危険
 9743: な)文字列になります.
 9744: 
 9745: @example
 9746: AC_LINK_IFELSE([AC_LANG_PROGRAM(
 9747: [[#include <time.h>
 9748: #ifndef tzname /* For SGI.  */
 9749: extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
 9750: #endif]],
 9751:                                 [atoi (*tzname);])],
 9752:                [ac_cv_var_tzname=yes],
 9753:                [ac_cv_var_tzname=no])
 9754: @end example
 9755: 
 9756: @c See @xref{Quadrigraphs}, for what to do if you run into a hopeless case
 9757: @c where quoting does not suffice.
 9758: @c 
 9759: 引用符が十分でない状況で望みがなくなった場合どうすればいいかということに
 9760: ついては,@xref{Quadrigraphs}.
 9761: 
 9762: @c When you create a @code{configure} script using newly written macros,
 9763: @c examine it carefully to check whether you need to add more quotes in
 9764: @c your macros.  If one or more words have disappeared in the @code{m4}
 9765: @c output, you need more quotes.  When in doubt, quote.
 9766: @c 
 9767: 新たに書かれたマクロを用いて@code{configure}スクリプトを作成するとき,マ
 9768: クロにより多くの引用符を加える必要があるかどうかの調査は,気を付けて吟味
 9769: してください.一つ以上の単語が@code{m4}の出力に現れない場合,より多くの
 9770: 引用符が必要になります.迷ったときは引用符です.
 9771: 
 9772: @c However, it's also possible to put on too many layers of quotes.  If
 9773: @c this happens, the resulting @code{configure} script will contain
 9774: @c unexpanded macros.  The @code{autoconf} program checks for this problem
 9775: @c by doing @samp{grep AC_ configure}.
 9776: @c 
 9777: しかし,引用符のレイヤーが多過ぎる可能性もあります.この場合は,結果とし
 9778: て得られる@code{configure}スクリプトは,展開されていないマクロが含まれて
 9779: いるでしょう.@code{autoconf}プログラムは,@samp{grep AC_ configure}を行
 9780: なうことでこの問題を調査します.
 9781: 
 9782: 
 9783: @node Programming in M4sugar,  , M4 Quotation, Programming in M4
 9784: @section M4sugarでのプログラミング
 9785: 
 9786: @cindex M4sugar
 9787: @c M4 by itself provides only a small, but sufficient, set of all-purpose
 9788: @c macros.  M4sugar introduces additional generic macros.  Its name was
 9789: @c coined by Lars J. Aas: ``Readability And Greater Understanding Stands 4
 9790: @c M4sugar''.
 9791: @c 
 9792: M4自身は非常に小さいけれど十分な,汎用マクロの組を提供しています.
 9793: M4sugarは,追加の一般的なマクロを導入しています.その名前は,Lars J. Aas 
 9794: によってつくり出されました:``Readability And Greater Understanding
 9795: Stands 4 M4sugar''.
 9796: 
 9797: @menu
 9798: * Redefined M4 Macros::         M4 builtins changed in M4sugar
 9799: * Forbidden Patterns::          Catching unexpanded macros
 9800: @end menu
 9801: 
 9802: @node Redefined M4 Macros, Forbidden Patterns, Programming in M4sugar, Programming in M4sugar
 9803: @subsection M4マクロの再定義
 9804: 
 9805: @c All the M4 native macros are moved in the @samp{m4_} pseudo-namespace,
 9806: @c e.g., M4sugar renames @code{define} as @code{m4_define} etc.  There is
 9807: @c one exception: @code{dnl} kept its original name, and no @code{m4_dnl}
 9808: @c is defined.
 9809: @c 
 9810: 全てのM4ネイティブなマクロは,@samp{m4_}疑似名前空間に移動されていて,例
 9811: えば,M4sugarでは@code{define}を@code{m4_define}に名前を変えるなどのよう
 9812: になっています.一つだけ例外があります.@code{dnl}は元の名前のままで,
 9813: @code{m4_dnl}は定義されていません.
 9814: 
 9815: @c M4sugar redefines some M4 macros, and made them slightly incompatible
 9816: @c with their native equivalent.
 9817: @c 
 9818: M4sugarは,いくつかのM4マクロを再定義していて,ネイティブな同義語とわず
 9819: かに互換性がなくなっています.
 9820: 
 9821: @defmac m4_defn (@var{macro})
 9822: @msindex defn
 9823: @c Contrary to the M4 builtin, this macro fails if @var{macro} is not
 9824: @c defined.  See @code{m4_undefine}.
 9825: @c 
 9826: M4組み込みのものと比較して,このマクロは,@var{macro}が定義されていない
 9827: 場合は失敗します.@code{m4_undefine}を参照してください.
 9828: @end defmac
 9829: 
 9830: @defmac m4_undefine (@var{macro})
 9831: @msindex undefine
 9832: @c Contrary to the M4 builtin, this macro fails if @var{macro} is not
 9833: @c defined.  Use
 9834: @c 
 9835: M4組み込みのものと比較して,このマクロは,@var{macro}が定義されていない
 9836: 場合は失敗します.以下のように使用してください.
 9837: 
 9838: @example
 9839: m4_ifdef([@var{macro}], [m4_undefine([@var{macro}])])
 9840: @end example
 9841: 
 9842: @noindent
 9843: @c to recover the behavior of the builtin.
 9844: @c 
 9845: それは,組み込みの動作に復旧します.
 9846: @end defmac
 9847: 
 9848: @defmac m4_popdef (@var{macro})
 9849: @msindex defn
 9850: @c Contrary to the M4 builtin, this macro fails if @var{macro} is not
 9851: @c defined.  See @code{m4_undefine}.
 9852: @c 
 9853: M4組み込みのものと比較して,このマクロは,@var{macro}が定義されていない
 9854: 場合は失敗します.@code{m4_undefine}を参照してください.
 9855: @end defmac
 9856: 
 9857: 
 9858: @node Forbidden Patterns,  , Redefined M4 Macros, Programming in M4sugar
 9859: @subsection 禁止されているパターン
 9860: 
 9861: @c M4sugar provides a means to define suspicious patterns, patterns
 9862: @c describing tokens which should not be found in the output.  For
 9863: @c instance, if an Autoconf @file{configure} script includes tokens such as
 9864: @c @samp{AC_DEFINE}, or @samp{dnl}, then most probably something went
 9865: @c wrong (typically a macro was not evaluated because of over quotation).
 9866: @c 
 9867: M4sugar提供の目的は,怪しげはパターン,つまり出力に現れるべきではないトー
 9868: クンを記述しているパターンを定義するためです.例えば,Autoconf
 9869: @file{configure}スクリプトに@samp{AC_DEFINE}や@samp{dnl}のようなトークン
 9870: が含められている場合,おそらく何か問題が発生するでしょう(通常は,余分な
 9871: 引用符のためにマクロが評価されていないためです) .
 9872: 
 9873: @c M4sugar forbids all the tokens matching @samp{^m4_} and @samp{^dnl$}.
 9874: @c 
 9875: M4sugarは,@samp{^m4_}と@samp{^dnl$}に一致する全てのトークンを禁止します.
 9876: 
 9877: @defmac m4_pattern_forbid (@var{pattern})
 9878: @msindex pattern_forbid
 9879: @c Declare no token matching @var{pattern} must be found in the output.
 9880: @c Comments are not checked; this can be a problem if, for instance, you
 9881: @c have some macro left unexpanded after an @samp{#include}.  No consensus
 9882: @c is currently found in the Autoconf community, as some people consider it
 9883: @c should be valid to name macros in comments (which doesn't makes sense to
 9884: @c the author of this documentation, as @samp{#}-comments should document
 9885: @c the output, not the input, documented vy @samp{dnl}-comments).
 9886: @c 
 9887: 出力にある必要のある@var{pattern}に一致するトークンを宣言しません.コメ
 9888: ントは調査されません.これは,例えば,@samp{#include}より後に展開されな
 9889: いまま残っているマクロがある場合,問題になるはずです.現在,Autoconf コ
 9890: ミュニティでは合意がとおらず,コメント内で指名されているマクロを有効にす
 9891: べきだと考えている人もいるからです(それは,このドキュメントの著者には意
 9892: 味がなく,@samp{#}のコメントは,@samp{dnl}コメントで説明される入力ではな
 9893: く,出力を説明するべきだからです.)
 9894: @end defmac
 9895: 
 9896: @c Of course, you might encounter exceptions to these generic rules, for
 9897: @c instance you might have to refer to @samp{$m4_flags}.
 9898: @c 
 9899: もちろん,これらの一般的な規則の例外に遭遇する可能性もあり,例えば,
 9900: @samp{$m4_flags}を参照する必要があるかもしれません.
 9901: 
 9902: @defmac m4_pattern_allow (@var{pattern})
 9903: @msindex pattern_allow
 9904: @c Any token matching @var{pattern} is allowed, including if it matches an
 9905: @c @code{m4_pattern_forbid} pattern.
 9906: @c 
 9907: @var{pattern}に一致している全てのトークンが可能で,それには
 9908: @code{m4_pattern_forbid}パターンに一致しているものも含まれます.
 9909: @end defmac
 9910: 
 9911: 
 9912: @c=================================================== Writing Autoconf Macros.
 9913: 
 9914: @node Writing Autoconf Macros, Portable Shell, Programming in M4, Top
 9915: @chapter Autoconfマクロを書く
 9916: 
 9917: @c When you write a feature test that could be applicable to more than one
 9918: @c software package, the best thing to do is encapsulate it in a new macro.
 9919: @c Here are some instructions and guidelines for writing Autoconf macros.
 9920: @c 
 9921: 一つ以上のソフトウェアパッケージに適用する特徴テストを書くとき,新しいマ
 9922: クロの中にそれをカプセル化することが最も良い方法です.Autoconfマクロを書
 9923: くための説明とガイドラインは以下のようになります.
 9924: 
 9925: @menu
 9926: * Macro Definitions::           Basic format of an Autoconf macro
 9927: * Macro Names::                 What to call your new macros
 9928: * Reporting Messages::          Notifying @code{autoconf} users
 9929: * Dependencies Between Macros::  What to do when macros depend on other macros
 9930: * Obsoleting Macros::           Warning about old ways of doing things
 9931: * Coding Style::                Writing Autoconf macros @`a la Autoconf
 9932: @end menu
 9933: 
 9934: @node Macro Definitions, Macro Names, Writing Autoconf Macros, Writing Autoconf Macros
 9935: @section マクロの定義
 9936: 
 9937: @maindex DEFUN
 9938: @c Autoconf macros are defined using the @code{AC_DEFUN} macro, which is
 9939: @c similar to the M4 builtin @code{define} macro.  In addition to defining
 9940: @c a macro, @code{AC_DEFUN} adds to it some code that is used to constrain
 9941: @c the order in which macros are called (@pxref{Prerequisite Macros}).
 9942: @c 
 9943: Autoconfマクロは,M4組み込みの@code{define}マクロに似ている,
 9944: @code{AC_DEFUN}マクロを使用して定義されています.マクロ定義に加える際,
 9945: @code{AC_DEFUN}は,マクロを呼び出す順番を制限するために使用されるコード
 9946: を加えます(@pxref{Prerequisite Macros}).
 9947: 
 9948: @c An Autoconf macro definition looks like this:
 9949: @c 
 9950: Autoconfマクロ定義は以下のようになります.
 9951: 
 9952: @example
 9953: AC_DEFUN(@var{macro-name}, @var{macro-body})
 9954: @end example
 9955: 
 9956: @c You can refer to any arguments passed to the macro as @samp{$1},
 9957: @c @samp{$2}, etc.  @xref{Definitions,, How to define new macros, m4.info,
 9958: @c GNU m4}, for more complete information on writing M4 macros.
 9959: @c 
 9960: マクロに渡す引数は,@samp{$1},@samp{$2}等のように参照することが可能です.
 9961: M4マクロを書く際の完全な情報は,@xref{Definitions, , How to
 9962: define new macros, m4.info, GNU m4}.
 9963: 
 9964: @c Be sure to properly quote both the @var{macro-body} @emph{and} the
 9965: @c @var{macro-name} to avoid any problems if the macro happens to have
 9966: @c been previously defined.
 9967: @c 
 9968: マクロが偶然前に定義されている場合の問題を避けるために,
 9969: @var{macro-body}@emph{と}@var{macro-name}の両方を,適切に引用符で囲んで
 9970: いることを確かめてください.
 9971: 
 9972: @c Each macro should have a header comment that gives its prototype, and a
 9973: @c brief description.  When arguments have default values, display them in
 9974: @c the prototype.  For example:
 9975: @c 
 9976: それぞれのマクロには,そのプロトタイプと短い説明を付与するため,ヘッダの
 9977: コメントを書くべきです.引数がデフォルト値の場合,そのプロトタイプを表示
 9978: してください.例えば以下のようにします.
 9979: 
 9980: @example
 9981: # AC_MSG_ERROR(ERROR, [EXIT-STATUS = 1])
 9982: # --------------------------------------
 9983: define([AC_MSG_ERROR],
 9984: [@{ _AC_ECHO([configure: error: $1], 2); exit m4_default([$2], 1); @}])
 9985: @end example
 9986: 
 9987: @c Comments about the macro should be left in the header comment.  Most
 9988: @c other comments will make their way into @file{configure}, so just keep
 9989: @c using @samp{#} to introduce comments.
 9990: @c 
 9991: マクロに関するコメントは,ヘッダコメントに残すべきです.その他のほとんど
 9992: のコメントは,勝手に@file{configure}に入るので,コメントを導入するために
 9993: @samp{#}を使用し続けるだけで結構です.
 9994: 
 9995: @cindex @code{dnl}
 9996: @c If you have some very special comments about pure M4 code, comments
 9997: @c that make no sense in @file{configure} and in the header comment, then
 9998: @c use the builtin @code{dnl}: it causes @code{m4} to discard the text
 9999: @c through the next newline.
10000: @c 
10001: ピュアなM4コードに関して,非常に特殊なコメントがある場合は,コメントを
10002: @file{configure}とヘッダコメントに入れる意味がないので,組み込みの
10003: @code{dnl}を使用してください.それで@code{m4}は,次の改行までのテキスト
10004: を廃棄します.
10005: 
10006: @c Keep in mind that @code{dnl} is rarely needed to introduce comments;
10007: @c @code{dnl} is more useful to get rid of the newlines following macros
10008: @c that produce no output, such as @code{AC_REQUIRE}.
10009: @c 
10010: @code{dnl}がコメントの導入に必要になることは滅多にないということを覚えて
10011: おいてください.@code{dnl}は,@code{AC_REQUIRE}のような,出力を生成しな
10012: いマクロに続く改行を除去するときに,より役に立ちます.
10013: 
10014: 
10015: @node Macro Names, Reporting Messages, Macro Definitions, Writing Autoconf Macros
10016: @section マクロ名
10017: 
10018: @c All of the Autoconf macros have all-uppercase names starting with
10019: @c @samp{AC_} to prevent them from accidentally conflicting with other
10020: @c text.  All shell variables that they use for internal purposes have
10021: @c mostly-lowercase names starting with @samp{ac_}.  To ensure that your
10022: @c macros don't conflict with present or future Autoconf macros, you should
10023: @c prefix your own macro names and any shell variables they use with some
10024: @c other sequence.  Possibilities include your initials, or an abbreviation
10025: @c for the name of your organization or software package.
10026: @c 
10027: 全てのAutoconfマクロは,他のテキストと偶然衝突することを避けるため 
10028: @samp{AC_}で始まる全て大文字の名前になっています.内部目的で使用する全て
10029: のシェル変数は,@samp{ac_}で始まるほとんど小文字の名前になっています.マ
10030: クロが,現在または将来のAutoconfマクロと衝突しないことを保証するため,マ
10031: クロ名と他の手続きで使用するシェル変数に,独自のプレフィクスを付けてくだ
10032: さい.可能性としては,イニシャルや組織やソフトウェアパッケージの名前の省
10033: 略を含めることになるでしょう.
10034: 
10035: @c Most of the Autoconf macros' names follow a structured naming convention
10036: @c that indicates the kind of feature check by the name.  The macro names
10037: @c consist of several words, separated by underscores, going from most
10038: @c general to most specific.  The names of their cache variables use the
10039: @c same convention (@pxref{Cache Variable Names}, for more information on
10040: @c them).
10041: @c 
10042: ほとんどのAutoconfマクロ名は,名前によって調査している特徴の種類を示す,
10043: 構造化された命名則に続きます.複数の単語から成り立つマクロ名は,アンダー
10044: スコアで分けられ,最も一般的なものから最も特殊なものへとなっています.
10045: キャッシュ変数の名前は,同じ規則をしようしています(詳細は@pxref{Cache
10046: Variable Names}).
10047: 
10048: @c The first word of the name after @samp{AC_} usually tells the category
10049: @c of feature being tested.  Here are the categories used in Autoconf for
10050: @c specific test macros, the kind of macro that you are more likely to
10051: @c write.  They are also used for cache variables, in all-lowercase.  Use
10052: @c them where applicable; where they're not, invent your own categories.
10053: @c 
10054: @samp{AC_}の後の名前の最初の単語は,通常テストしている特徴のカテゴリを伝
10055: えるものです.よく書くマクロの種類の,テストマクロを指定するため,
10056: Autoconfが使用するカテゴリは以下のようになっています.それらはキャッシュ
10057: 変数でも全て小文字で使用されます.適用可能なものを使用してください.無け
10058: れば独自のカテゴリを考え出してください.
10059: 
10060: @table @code
10061: @item C
10062: @c C language builtin features.
10063: @c 
10064: C言語組み込み特徴.
10065: @item DECL
10066: @c Declarations of C variables in header files.
10067: @c 
10068: ヘッダファイルでのC変数の宣言.
10069: @item FUNC
10070: @c Functions in libraries.
10071: @c 
10072: ライブラリの関数.
10073: @item GROUP
10074: @c @sc{unix} group owners of files.
10075: @c 
10076: ファイルの@sc{unix}グループオーナー.
10077: @item HEADER
10078: @c Header files.
10079: @c 
10080: ヘッダファイル.
10081: @item LIB
10082: @c C libraries.
10083: @c 
10084: Cライブラリ.
10085: @item PATH
10086: @c The full path names to files, including programs.
10087: @c 
10088: プログラムを含むファイルのフルパス名.
10089: @item PROG
10090: @c The base names of programs.
10091: @c 
10092: プログラムのベース名.
10093: @item MEMBER
10094: @c Members of aggregates.
10095: @c 
10096: 集合体のメンバ.
10097: @item SYS
10098: @c Operating system features.
10099: @c 
10100: OSの特徴.
10101: @item TYPE
10102: @c C builtin or declared types.
10103: @c 
10104: C組み込みや宣言タイプ.
10105: @item VAR
10106: @c C variables in libraries.
10107: @c 
10108: ライブラリのC変数.
10109: @end table
10110: 
10111: 
10112: @c After the category comes the name of the particular feature being
10113: @c tested.  Any further words in the macro name indicate particular aspects
10114: @c of the feature.  For example, @code{AC_FUNC_UTIME_NULL} checks the
10115: @c behavior of the @code{utime} function when called with a @code{NULL}
10116: @c pointer.
10117: @c 
10118: カテゴリーの後には,特定の特徴をテストしている名前が来ます.マクロ名のそ
10119: れ以外の単語は,特徴の特定の側面を示します.例えば,
10120: @code{AC_FUNC_UTIME_NULL}は,@code{NULL}ポインタで呼び出されたときの 
10121: @code{utime}関数の動作を調査します.
10122: 
10123: @c An internal macro should have a name that starts with an underscore;
10124: @c Autoconf internals should therefore start with @samp{_AC_}.
10125: @c Additionally, a macro that is an internal subroutine of another macro
10126: @c should have a name that starts with an underscore and the name of that
10127: @c other macro, followed by one or more words saying what the internal
10128: @c macro does.  For example, @code{AC_PATH_X} has internal macros
10129: @c @code{_AC_PATH_X_XMKMF} and @code{_AC_PATH_X_DIRECT}.
10130: @c 
10131: 内部マクロは,アンダースコアで始まる名前にすべきです.そのため,Autoconf 
10132: 内部のものは@samp{_AC_}で始まります.さらに,他のマクロ内部のサブルーチ
10133: ンとなるマクロは,アンダースコアと他のマクロ名ではじまり,内部マクロが行
10134: うことを伝える一つ以上の単語が続きます.例えば, @code{AC_PATH_X}は,内
10135: 部マクロに@code{_AC_PATH_X_XMKMF}と@code{_AC_PATH_X_DIRECT}があります.
10136: 
10137: 
10138: @node Reporting Messages, Dependencies Between Macros, Macro Names, Writing Autoconf Macros
10139: @section メッセージの報告
10140: @cindex Messages, from @code{autoconf}
10141: 
10142: @c When macros statically diagnose abnormal situations, benign or fatal,
10143: @c they should report them using these macros.  For dynamic issues, i.e.,
10144: @c when @code{configure} is run, see @ref{Printing Messages}.
10145: @c 
10146: マクロが異常な状況,良性または致命的を静的に診断しているとき,以下のマク
10147: ロを使用してそれを報告すべきです.動的な発行,すなわち@code{configure}が
10148: 実行されているときは,@ref{Printing Messages}を参照してください.
10149: 
10150: @defmac AC_DIAGNOSE (@var{category}, @var{message})
10151: @maindex DIAGNOSE
10152: @c Report @var{message} as a warning (or as an error if requested by the
10153: @c user) if it falls into the @var{category}.  You are encouraged to use
10154: @c standard categories, which currently include:
10155: @c 
10156: それが@var{category}に分類される場合,@var{message}を警告として(またはユー
10157: ザが要求する場合はエラーとして)報告します.以下の現在含められている標準
10158: 的なカテゴリを使用することを勧めます.
10159: 
10160: @table @samp
10161: @item all
10162: @c messages that don't fall into one of the following category.  Use of an
10163: @c empty @var{category} is equivalent.
10164: @c 
10165: 以下のカテゴリの一つに分類されないメッセージです.空の@var{category}を使
10166: 用することと等価です.
10167: 
10168: @item cross
10169: @c related to cross compilation issues.
10170: @c 
10171: クロスコンパイルに関連する問題です.
10172: 
10173: @item obsolete
10174: @c use of an obsolete construct.
10175: @c 
10176: 時代遅れの構成の使用です.
10177: 
10178: @item syntax
10179: @c dubious syntactic constructs, incorrectly ordered macro calls.
10180: @c 
10181: 曖昧な構文構成,間違った順序のマクロ呼び出しです.
10182: @end table
10183: @end defmac
10184: 
10185: @defmac AC_WARNING (@var{message})
10186: @maindex WARNING
10187: @c Equivalent to @samp{AC_DIAGNOSE([syntax], @var{message})}, but you are
10188: @c strongly encouraged to use a finer grained category.
10189: @c 
10190: @samp{AC_DIAGNOSE([syntax], @var{message})}と等価ですが,より良く粒子化
10191: されたカテゴリを使用することを推奨します.
10192: @end defmac
10193: 
10194: @defmac AC_FATAL (@var{message})
10195: @maindex FATAL
10196: @c Report a severe error @var{message}, and have @code{autoconf} die.
10197: @c 
10198: サーバーエラー@var{message}を報告し,@code{autoconf}は終了します.
10199: @end defmac
10200: 
10201: @c When the user runs @samp{autoconf -W error}, warnings from
10202: @c @code{AC_DIAGNOSE} and @code{AC_WARNING} are reported as error, see
10203: @c @ref{autoconf Invocation}.
10204: @c 
10205: ユーザが@samp{autoconf -W error}を実行しているとき,@code{AC_DIAGNOSE}と
10206: @code{AC_WARNING}からの警告はエラーとして報告されます.@ref{autoconf
10207: Invocation}を参照してください.
10208: 
10209: 
10210: @node Dependencies Between Macros, Obsoleting Macros, Reporting Messages, Writing Autoconf Macros
10211: @section マクロ間の依存性
10212: 
10213: @c Some Autoconf macros depend on other macros having been called first in
10214: @c order to work correctly.  Autoconf provides a way to ensure that certain
10215: @c macros are called if needed and a way to warn the user if macros are
10216: @c called in an order that might cause incorrect operation.
10217: @c 
10218: 他のマクロが正確に動作するように,最初に呼び出されている他のマクロに依存
10219: するAutoconfマクロもあります.Autoconfは,必要な場合はある特定のマクロが
10220: 呼び出されていることを保証する方法と,マクロが間違った処理を引き起こす順
10221: 序で呼び出された場合に警告する方法を供給します.
10222: 
10223: @menu
10224: * Prerequisite Macros::         Ensuring required information
10225: * Suggested Ordering::          Warning about possible ordering problems
10226: @end menu
10227: 
10228: @node Prerequisite Macros, Suggested Ordering, Dependencies Between Macros, Dependencies Between Macros
10229: @subsection マクロの前提条件
10230: 
10231: @c A macro that you write might need to use values that have previously
10232: @c been computed by other macros.  For example, @code{AC_DECL_YYTEXT}
10233: @c examines the output of @code{flex} or @code{lex}, so it depends on
10234: @c @code{AC_PROG_LEX} having been called first to set the shell variable
10235: @c @code{LEX}.
10236: @c 
10237: 書いているマクロが,以前に他のマクロが計算した値を使用する必要があるかも
10238: しれません.例えば,@code{AC_DECL_YYTEXT}は,@code{flex}や@code{lex}の出
10239: 力を調査するので,シェル変数 @code{LEX}を設定するために,
10240: @code{AC_PROG_LEX}が最初に呼び出されていることに依存します.
10241: 
10242: @c Rather than forcing the user of the macros to keep track of the
10243: @c dependencies between them, you can use the @code{AC_REQUIRE} macro to do
10244: @c it automatically.  @code{AC_REQUIRE} can ensure that a macro is only
10245: @c called if it is needed, and only called once.
10246: @c 
10247: マクロのユーザにそれら間の依存性を追跡させるより,自動的にするために 
10248: @code{AC_REQUIRE}を使用することができます.@code{AC_REQUIRE}は,必要な場
10249: 合のみマクロが呼び出され,そして一度だけ呼び出されることを保証します.
10250: 
10251: @defmac AC_REQUIRE (@var{macro-name})
10252: @maindex REQUIRE
10253: @c If the M4 macro @var{macro-name} has not already been called, call it
10254: @c (without any arguments).  Make sure to quote @var{macro-name} with
10255: @c square brackets.  @var{macro-name} must have been defined using
10256: @c @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
10257: @c that it has been called.
10258: @c 
10259: M4マクロ@var{macro-name}がまだ呼び出されていない場合,それを(引数無しで) 
10260: 呼び出します.角カッコで@var{macro-name}を囲んでいることを確認してくださ
10261: い.@var{macro-name}は,@code{AC_DEFUN}を使用して定義されている,または
10262: 呼び出されていることを示す@code{AC_PROVIDE}の呼び出しを含んでいる必要が
10263: あります.
10264: 
10265: @c @code{AC_REQUIRE} must be used inside an @code{AC_DEFUN}'d macro; it
10266: @c must not be called from the top level.
10267: @c 
10268: @code{AC_REQUIRE}は@code{AC_DEFUN}マクロの内部で使用する必要があります.
10269: それはトップレベルから呼び出してはなりません.
10270: @end defmac
10271: 
10272: @c @code{AC_REQUIRE} is often misunderstood.  It really implements
10273: @c dependencies between macros in the sense that if one macro depends upon
10274: @c another, the latter will be expanded @emph{before} the body of the
10275: @c former.  In particular, @samp{AC_REQUIRE(FOO)} is not replaced with the
10276: @c body of @code{FOO}.  For instance, this definition of macros:
10277: @c 
10278: @code{AC_REQUIRE}はよく誤解されます.一つのマクロが他のものに依存してい
10279: る場合,後者は前者の本体の@emph{前に}展開されるように,それはマクロ間の
10280: 依存性を実装しています.特に,@samp{AC_REQUIRE(FOO)}は,@code{FOO}の本体
10281: では置換されません.例えば,マクロを以下のように定義したとします.
10282: 
10283: @example
10284: @group
10285: AC_DEFUN([TRAVOLTA],
10286: [test "$body_temparature_in_celsius" -gt "38" &&
10287:   dance_floor=occupied])
10288: AC_DEFUN([NEWTON_JOHN],
10289: [test "$hair_style" = "curly" &&
10290:   dance_floor=occupied])
10291: @end group
10292: 
10293: @group
10294: AC_DEFUN([RESERVE_DANCE_FLOOR],
10295: [if date | grep '^Sat.*pm' >/dev/null 2>&1; then
10296:   AC_REQUIRE([TRAVOLTA])
10297:   AC_REQUIRE([NEWTON_JOHN])
10298: fi])
10299: @end group
10300: @end example
10301: 
10302: @noindent
10303: @c with this @file{configure.ac}
10304: @c 
10305: これを@file{configure.ac}で使用します.
10306: 
10307: @example
10308: AC_INIT
10309: RESERVE_DANCE_FLOOR
10310: if test "$dance_floor" = occupied; then
10311:   AC_MSG_ERROR([cannot pick up here, let's move])
10312: fi
10313: @end example
10314: 
10315: @noindent
10316: @c will not leave you with a better chance to meet a kindred soul at
10317: @c other times than Saturday night since it expands into:
10318: @c 
10319: それは以下のように展開されるので,土曜日の夜以外に仲間に会う機会が残って
10320: いません.
10321: 
10322: @example
10323: @group
10324: test "$body_temperature_in_Celsius" -gt "38" &&
10325:   dance_floor=occupied
10326: test "$hair_style" = "curly" &&
10327:   dance_floor=occupied
10328: fi
10329: if date | grep '^Sat.*pm' >/dev/null 2>&1; then
10330: 
10331: 
10332: fi
10333: @end group
10334: @end example
10335: 
10336: @c This behavior was chosen on purpose: (i) it prevents messages in
10337: @c required macros from interrupting the messages in the requiring macros;
10338: @c (ii) it avoids bad surprises when shell conditionals are used, as in:
10339: @c 
10340: この動作は意図的に選択されました.(i) それは要求されるマクロのメッセージ
10341: が,要求しているマクロのメッセージとして解釈されることを妨げます.(ii) 
10342: それは,シェルの条件文が使用されるとき悪い驚きを妨げ,以下のようになりま
10343: す.
10344: 
10345: @example
10346: @group
10347: if @dots{}; then
10348:   AC_REQUIRE([SOME_CHECK])
10349: fi
10350: @dots{}
10351: SOME_CHECK
10352: @end group
10353: @end example
10354: 
10355: @c You are encouraged to put all @code{AC_REQUIRE}s at the beginning of a
10356: @c macro.  You can use @code{dnl} to avoid the empty lines they leave.
10357: @c 
10358: マクロの最初に全ての@code{AC_REQUIRE}を書き込むことを推奨します.空の行
10359: が残ることを避けるため,@code{dnl}を使用することが可能です.
10360: 
10361: 
10362: @node Suggested Ordering,  , Prerequisite Macros, Dependencies Between Macros
10363: @subsection 順序の提案
10364: 
10365: @c Some macros should be run before another macro if both are called, but
10366: @c neither @emph{requires} that the other be called.  For example, a macro
10367: @c that changes the behavior of the C compiler should be called before any
10368: @c macros that run the C compiler.  Many of these dependencies are noted in
10369: @c the documentation.
10370: @c 
10371: 両方が呼び出されても,片方がもう一方が呼び出されることを@emph{要求}しな
10372: い場合,もう一方のマクロの前に実行するすべきマクロもあります.例えば,C
10373: コンパイラの動作を変更するマクロは,Cコンパイラを実行するあらゆるマクロ
10374: の前に呼び出されるべきです.これらの依存性の多くはドキュメントに記されて
10375: います.
10376: 
10377: @c Autoconf provides the @code{AC_BEFORE} macro to warn users when macros
10378: @c with this kind of dependency appear out of order in a
10379: @c @file{configure.ac} file.  The warning occurs when creating
10380: @c @code{configure} from @file{configure.ac}, not when running
10381: @c @code{configure}.
10382: @c 
10383: Autoconfは,これらの依存性を持つマクロが@file{configure.ac}ファイルで順
10384: 序が間違って現れるとき,ユーザに警告する@code{AC_BEFORE}を提供しています.
10385: 警告は,@file{configure.ac}から@code{configure}を作成するときに発生しま
10386: すが,@code{configure}実行時には発生しません.
10387: 
10388: @c For example, @code{AC_PROG_CPP} checks whether the C compiler
10389: @c can run the C preprocessor when given the @option{-E} option.  It should
10390: @c therefore be called after any macros that change which C compiler is
10391: @c being used, such as @code{AC_PROG_CC}.  So @code{AC_PROG_CC} contains:
10392: @c 
10393: 例えば@code{AC_PROG_CPP}は,Cコンパイラに@samp{-E}オプションが与えられて
10394: いるとき,Cプリプロセッサが実行可能かどうか調査します.従って,使用され
10395: るCコンパイラが変更される@code{AC_PROG_CC}のようなマクロの後で,それは呼
10396: び出すべきです.そのため,@code{AC_PROG_CC}は以下を含んでいます.
10397: 
10398: @example
10399: AC_BEFORE([$0], [AC_PROG_CPP])dnl
10400: @end example
10401: 
10402: @noindent
10403: @c This warns the user if a call to @code{AC_PROG_CPP} has already occurred
10404: @c when @code{AC_PROG_CC} is called.
10405: @c 
10406: これで,@code{AC_PROG_CC}が呼び出されたとき,@code{AC_PROG_CPP}が既に呼
10407: び出されている場合,ユーザに警告します.
10408: 
10409: @defmac AC_BEFORE (@var{this-macro-name}, @var{called-macro-name})
10410: @maindex BEFORE
10411: @c Make @code{m4} print a warning message to the standard error output if
10412: @c @var{called-macro-name} has already been called.  @var{this-macro-name}
10413: @c should be the name of the macro that is calling @code{AC_BEFORE}.  The
10414: @c macro @var{called-macro-name} must have been defined using
10415: @c @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
10416: @c that it has been called.
10417: @c 
10418: @var{called-macro-name}が既に呼び出されている場合,@code{m4}は標準エラー
10419: 出力に警告メッセージを出力します.@var{this-macro-name}は,
10420: @code{AC_BEFORE}を呼び出すマクロの名前にすべきです.マクロ
10421: @var{called-macro-name}は,@code{AC_DEFUN}を使用して定義されている,また
10422: は呼び出されていることを示す@code{AC_PROVIDE}の呼び出しを含んでいる必要
10423: があります.
10424: @end defmac
10425: 
10426: 
10427: @node Obsoleting Macros, Coding Style, Dependencies Between Macros, Writing Autoconf Macros
10428: @section 時代遅れのマクロ
10429: 
10430: @c Configuration and portability technology has evolved over the years.
10431: @c Often better ways of solving a particular problem are developed, or
10432: @c ad-hoc approaches are systematized.  This process has occurred in many
10433: @c parts of Autoconf.  One result is that some of the macros are now
10434: @c considered @dfn{obsolete}; they still work, but are no longer considered
10435: @c the best thing to do, hence they should be replaced with more modern
10436: @c macros.  Ideally, @code{autoupdate} should substitute the old macro calls
10437: @c with their modern implementation.
10438: @c 
10439: コンフィグレーションと移植性の技術は,何年もかかって進展しました.特定の
10440: 問題を解決するより良い方法が開発されたり,特別なアプローチが体系化される
10441: ことはよくあります.この過程はAutoconfの数多くの部分で発生しました.一つ
10442: の結果は,今では@dfn{時代遅れ}と思われるマクロの存在です.まだ動作します
10443: が,すでにそれが最善の方法ではなくなっていて,より近代的なマクロで置換さ
10444: れるべきでしょう.理想的には,@code{autoupdate}が古いマクロの呼び出しを
10445: 現在のマクロに置換すべきでしょう.
10446: 
10447: @c Autoconf provides a simple means to obsolete a macro.
10448: @c 
10449: Autoconfは,マクロが時代遅れだということを意味する単純なものを提供してい
10450: ます.
10451: 
10452: @defmac AU_DEFUN (@var{old-macro}, @var{implementation}, @r{[}@var{message}@r{]})
10453: @maindex DEFUN
10454: @maindex AU_DEFUN
10455: @c Define @var{old-macro} as @var{implementation}.  The only difference
10456: @c with @code{AC_DEFUN} is that the user will be warned that
10457: @c @var{old-macro} is now obsolete.
10458: @c 
10459: @var{implementation}として@var{old-macro}を定義します.@code{AC_DEFUN}を
10460: 用いたものとは,@var{old-macro}が現在は時代遅れだという警告をユーザが受
10461: けるところだけが異なります.
10462: 
10463: @c If she then uses @code{autoupdate}, the call to @var{old-macro} will be
10464: @c replaced by the modern @var{implementation}.  The additional
10465: @c @var{message} is then printed.
10466: @c 
10467: @code{autoupdate}を使用する場合,@var{old-macro}の呼び出しは現在の
10468: @var{implementation}で置換されます.更に,@var{message}が出力されます.
10469: @end defmac
10470: 
10471: 
10472: @node Coding Style,  , Obsoleting Macros, Writing Autoconf Macros
10473: @section コーディングスタイル
10474: 
10475: @c The Autoconf macros follow a strict coding style.  You are encouraged to
10476: @c follow this style, especially if you intend to distribute your macro,
10477: @c either by contributing it to Autoconf itself, or via other means.
10478: @c 
10479: Autoconfマクロはスクリプトコーディングスタイルに従います.以下のスタイル
10480: に従うように推奨し,特に,Autoconf自身に寄稿したり,その他の目的で,マク
10481: ロを配布する目的がある場合はそうしてください.
10482: 
10483: @c The first requirement is to pay great attention to the quotation, for
10484: @c more details, see @ref{Autoconf Language}, and @ref{M4 Quotation}.
10485: @c 
10486: 最初に必要なことは,引用符に大きく注意を払うことです.詳細は,
10487: @ref{Autoconf Language}と@ref{M4 Quotation}を参照してください.
10488: 
10489: @c Do not try to invent new interfaces.  It is likely that there is a macro
10490: @c in Autoconf that resembles the macro you are defining: try to stick to
10491: @c this existing interface (order of arguments, default values, etc.).  We
10492: @c @emph{are} conscious that some of these interfaces are not perfect;
10493: @c nevertheless, when harmless, homogeneity should be preferred over
10494: @c creativity.
10495: @c 
10496: 新たなインターフェースの発明は試みないでください.定義しているマクロに似
10497: ているAutoconfマクロが存在することはよくあります.この既存のインターフェー
10498: スに従ってみてください(引数の順序,デフォルト値,等々).我々は,これらの
10499: インターフェースに完全でないものがあることは,意識@emph{しています}.そ
10500: れにもかかわらず,無害なときは,創造性より均質性が好まれるでしょう.
10501: 
10502: @c Be careful about clashes both between M4 symbols and between shell
10503: @c variables.
10504: @c 
10505: M4シンボル間とシェル変数間の両方の衝突に注意してください.
10506: 
10507: @c If you stick to the suggested M4 naming scheme (@pxref{Macro Names}),
10508: @c you are unlikely to generate conflicts.  Nevertheless, when you need to
10509: @c set a special value, @emph{avoid using a regular macro name}; rather,
10510: @c use an ``impossible'' name.  For instance, up to version 2.13, the macro
10511: @c @code{AC_SUBST} used to remember what @var{symbol}s were already defined
10512: @c by setting @code{AC_SUBST_@var{symbol}}, which is a regular macro name.
10513: @c But since there is a macro named @code{AC_SUBST_FILE}, it was just
10514: @c impossible to @samp{AC_SUBST(FILE)}!  In this case,
10515: @c @code{AC_SUBST(@var{symbol})} or @code{_AC_SUBST(@var{symbol})} should
10516: @c have been used (yes, with the parentheses)@dots{}or better yet, high-level
10517: @c macros such as @code{AC_EXPAND_ONCE}.
10518: @c 
10519: 推奨されるM4命名規則(@pxref{Macro Names})に従う場合,衝突が生じることは
10520: あまりないでしょう.それにもかかわらず,特殊な値を設定する必要があるとき,
10521: @emph{通常のマクロ名を使用することを避けてください}.``不可能な''名前を
10522: 使用する代わりです.例えば,バージョン2.13までは,通常のマクロ名
10523: @code{AC_SUBST_@var{symbol}}を設定することで既に定義されている
10524: @var{symbol}を記憶するため,マクロ@code{AC_SUBST}を使用していました.し
10525: かし,@code{AC_SUBST_FILE}と命名されているマクロが存在するので,
10526: @samp{AC_SUBST(FILE)}を使用することはできませんでした!この場合,
10527: @code{AC_SUBST(@var{symbol})}や@code{_AC_SUBST(@var{symbol})}が使用され
10528: るべきでした(そうです,カッコは使用します)@dots{}または,より良い方法と
10529: して,@code{AC_EXPAND_ONCE}のようなハイレベルのマクロを使用すべきでした.
10530: 
10531: @c No Autoconf macro should ever enter the user-variable name space; i.e.,
10532: @c except for the variables that are the actual result of running the
10533: @c macro, all shell variables should start with @code{ac_}.  In
10534: @c addition, small macros or any macro that is likely to be embedded in
10535: @c other macros should be careful not to use obvious names.
10536: @c 
10537: Autoconfマクロは,ユーザ変数の名前空間に入るべきではありません.すなわち,
10538: 実際のマクロの実行結果となる変数以外の,全てシェル変数は@code{ac_}で始め
10539: るべきです.さらに,小さなマクロや他のマクロに埋め込まれるようなマクロは,
10540: 明示的な名前を使用しないように中止すべきです.
10541: 
10542: @cindex @code{dnl}
10543: @c Do not use @code{dnl} to introduce comments: most of the comments you
10544: @c are likely to write are either header comments which are not output
10545: @c anyway, or comments that should make their way into @file{configure}.
10546: @c There are exceptional cases where you do want to comment special M4
10547: @c constructs, in which case @code{dnl} is right, but keep in mind that it
10548: @c is unlikely.
10549: @c 
10550: コメントを導入するために,@code{dnl}を使用しないでください.書こうとして
10551: いるコメントのほとんどは,出力されないヘッダコメント,または,
10552: @file{configure}に書かれるべきコメントです.特殊なM4の構成のコメントが欲
10553: しい場合は例外があり,その場合は@code{dnl}が正しいのですが,あまりないこ
10554: とだということを覚えておいてください.
10555: 
10556: @c M4 ignores the leading spaces before each argument, use this feature to
10557: @c indent in such a way that arguments are (more or less) aligned with the
10558: @c opening parenthesis of the macro being called.  For instance, instead of
10559: @c 
10560: M4は,引数に前置されるスペースを無視します.呼び出されているマクロの開カッ
10561: コに,引数が整列するように字下げするために,この特徴を使用してください.
10562: 例えば,以下の代わりを考えます.
10563: 
10564: 
10565: @example
10566: AC_CACHE_CHECK(for EMX OS/2 environment,
10567: ac_cv_emxos2,
10568: [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, [return __EMX__;])],
10569: [ac_cv_emxos2=yes], [ac_cv_emxos2=no])])
10570: @end example
10571: 
10572: @noindent
10573: @c write
10574: @c 
10575: 以下のように書いてください.
10576: 
10577: @example
10578: AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
10579: [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
10580:                    [ac_cv_emxos2=yes],
10581:                    [ac_cv_emxos2=no])])
10582: @end example
10583: 
10584: @noindent
10585: @c or even
10586: @c 
10587: または,以下のようにしてください.
10588: 
10589: @example
10590: AC_CACHE_CHECK([for EMX OS/2 environment],
10591:                [ac_cv_emxos2],
10592:                [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
10593:                                                    [return __EMX__;])],
10594:                                   [ac_cv_emxos2=yes],
10595:                                   [ac_cv_emxos2=no])])
10596: @end example
10597: 
10598: @c When using @code{AC_TRY_RUN} or any macro that cannot work when
10599: @c cross-compiling, provide a pessimistic value (typically @samp{no}).
10600: @c 
10601: @code{AC_TRY_RUN}や,クロスコンパイルで動作不可能なマクロを使用している
10602: とき,悲観的な値(通常は@samp{no})を提供してください.
10603: 
10604: @c Feel free to use various tricks to prevent auxiliary tools, such as
10605: @c syntax-highlighting editors, from behaving improperly.  For instance,
10606: @c instead of:
10607: @c 
10608: 構文をハイライト表示するエディタのような,補助ツールが不適切に動作するこ
10609: とを避けるため,様々な手段を自由に使用してください.例えば以下を考えます.
10610: 
10611: @example
10612: patsubst([$1], [$"])
10613: @end example
10614: 
10615: @noindent
10616: @c use
10617: @c 
10618: 以下を使用してください.
10619: 
10620: @example
10621: patsubst([$1], [$""])
10622: @end example
10623: 
10624: @noindent
10625: @c so that Emacsen do not open a endless ``string'' at the first quote.
10626: @c For the same reasons, avoid:
10627: @c 
10628: それは,Emacsenが最初の引用符で終りのない``文字列''を開いたままにしない
10629: ようにするためです.同じ理由から以下のようなことは避けてください.
10630: 
10631: @example
10632: test $[#] != 0
10633: @end example
10634: 
10635: @noindent
10636: @c and use:
10637: @c 
10638: 以下を使用してください.
10639: 
10640: @example
10641: test $[@@%:@@] != 0
10642: @end example
10643: 
10644: @noindent
10645: @c Otherwise, the closing bracket would be hidden inside a @samp{#}-comment,
10646: @c breaking the bracket-matching highlighting from Emacsen.  Note the
10647: @c preferred style to escape from M4: @samp{$[1]}, @samp{$[@@]}, etc.  Do
10648: @c not escape when it is unneeded.  Common examples of useless quotation
10649: @c are @samp{[$]$1} (write @samp{$$1}), @samp{[$]var} (use @samp{$var}),
10650: @c etc.  If you add portability issues to the picture, you'll prefer
10651: @c @samp{$@{1+"$[@@]"@}} to @samp{"[$]@@"}, and you'll prefer do something
10652: @c better than hacking Autoconf @code{:-)}.
10653: @c 
10654: そうしない場合,閉カッコは@samp{#}コメント内に隠され,Emacsenのカッコ一
10655: 致のハイライト表示を破壊します.好ましいスタイルは,M4からエスケープされ
10656: るように注意してください.@samp{$[1]},@samp{$[@@]},等です.不必要なと
10657: きにエスケープしないようにしてください.意味のない引用符の一般的な例は,
10658: @samp{[$]$1}(@samp{$$1}と書いてください),@samp{[$]var}(@samp{$var}を使
10659: 用してください),等です.移植性の問題をこの状態に加える場合,
10660: @samp{"[$]@@"}より@samp{$@{1+"$[@@]"@}}にした方が良く,Autoconfを白金具
10661: するより何か他のことをした方が良いでしょう@code{:-)}.
10662: 
10663: @c When using @command{sed}, don't use @option{-e} except for indenting
10664: @c purpose.  With the @code{s} command, the preferred separator is @samp{/}
10665: @c unless @samp{/} itself is used in the command, in which case you should
10666: @c use @samp{,}.
10667: @c 
10668: @command{sed}を使用しているとき,字下げの目的以外で@option{-e}を使用しな
10669: いでください.@code{s}コマンドを用いた場合,@samp{/}自身がコマンドで使用
10670: されない限り,優先されるセパレータは@samp{/}で,その場合は@samp{,}を使用
10671: すべきです.
10672: 
10673: @c @xref{Macro Definitions}, for details on how to define a macro.  If a
10674: @c macro doesn't use @code{AC_REQUIRE} and it is expected to never be the
10675: @c object of an @code{AC_REQUIRE} directive, then use @code{define}.  In
10676: @c case of doubt, use @code{AC_DEFUN}.  All the @code{AC_REQUIRE}
10677: @c statements should be at the beginning of the macro, @code{dnl}'ed.
10678: @c 
10679: マクロ定義の方法の詳細は,@xref{Macro Definitions}. マクロで
10680: @code{AC_REQUIRE}を使用しておらず,@code{AC_REQUIRE}ディレクティブのオブ
10681: ジェクトがないことを期待する場合,@code{define}を使用してください.疑わ
10682: しい場合は,@code{AC_DEFUN}を使用してください.全ての@code{AC_REQUIRE}文
10683: は,@code{dnl}されているマクロの最初に書くべきです.
10684: 
10685: @c You should not rely on the number of arguments: instead of checking
10686: @c whether an argument is missing, test that it is not empty.  It provides
10687: @c both a simpler and a more predictable interface to the user, and saves
10688: @c room for further arguments.
10689: @c 
10690: 引数の数に依存すべきではありません.引数が足りないことを調査する代わりに,
10691: 空でないことをテストしてください.より簡単でより予測可能なインターフェー
10692: スをユーザに提供し,余分な引数に対する余地を節約してください.
10693: 
10694: @c Unless the macro is short, try to leave the closing @samp{])} at the
10695: @c beginning of a line, followed by a comment that repeats the name of the
10696: @c macro being defined.  This introduces an additional newline in
10697: @c @code{configure}; normally, that is not a problem, but if you want to
10698: @c remove it you can use @samp{[]dnl} on the last line.  You can similarly
10699: @c use @samp{[]dnl} after a macro call to remove its newline.  @samp{[]dnl}
10700: @c is recommended instead of @samp{dnl} to ensure that M4 does not
10701: @c interpret the @samp{dnl} as being attached to the preceding text or
10702: @c macro output.  For example, instead of:
10703: @c 
10704: マクロが短くない場合は,行の最初に@samp{])}を残し,定義されているマクロ
10705: の名前を繰り返すコメントを続けてください.これは,@code{configure}に余分
10706: な改行を導入します.通常は問題ありませんが,削除したい場合は,行の最後に
10707: @samp{[]dnl}を使用することが可能です.同様に,マクロ呼び出しの後に,改行
10708: を削除するため,@samp{[]dnl}を使用することも可能です.M4が@samp{dnl}をテ
10709: キストやマクロ出力の前に付けられているものとして解釈しないことを確実にす
10710: るため,@samp{[]dnl}は@samp{dnl}の代わりとして推奨されています.例えば以
10711: 下の代わりを考えます.
10712: 
10713: @example
10714: AC_DEFUN([AC_PATH_X],
10715: [AC_MSG_CHECKING([for X])
10716: AC_REQUIRE_CPP()
10717: @r{# @dots{}omitted@dots{}}
10718:   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
10719: fi])
10720: @end example
10721: 
10722: @noindent
10723: @c you would write:
10724: @c 
10725: 以下のように書くべきです.
10726: 
10727: @example
10728: AC_DEFUN([AC_PATH_X],
10729: [AC_REQUIRE_CPP()[]dnl
10730: AC_MSG_CHECKING([for X])
10731: @r{# @dots{}omitted@dots{}}
10732:   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
10733: fi[]dnl
10734: ])# AC_PATH_X
10735: @end example
10736: 
10737: @c If the macro is long, try to split it into logical chunks.  Typically,
10738: @c macros that check for a bug in a function and prepare its
10739: @c @code{AC_LIBOBJ} replacement should have an auxiliary macro to perform
10740: @c this setup.  Do not hesitate to introduce auxiliary macros to factor
10741: @c your code.
10742: @c 
10743: マクロが長い場合,論理的な塊に分けてみてください.通常マクロは,関数のバ
10744: グを調査し,このセットアップを実行するための補助マクロがある
10745: @code{AC_LIBOBJ}の置換を準備します.コードの要素に補助マクロを導入するこ
10746: とをためらわないでください.
10747: 
10748: @c In order to highlight the recommended coding style, here is a macro
10749: @c written the old way:
10750: @c 
10751: 推奨されるコーディングスタイルを強調するために,古い手法で書かれているマ
10752: クロを紹介します.
10753: 
10754: @example
10755: dnl Check for EMX on OS/2.
10756: dnl _AC_EMXOS2
10757: AC_DEFUN(_AC_EMXOS2,
10758: [AC_CACHE_CHECK(for EMX OS/2 environment, ac_cv_emxos2,
10759: [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, return __EMX__;)],
10760: ac_cv_emxos2=yes, ac_cv_emxos2=no)])
10761: test "$ac_cv_emxos2" = yes && EMXOS2=yes])
10762: @end example
10763: 
10764: @noindent
10765: @c and the new way:
10766: @c 
10767: 新しい方法は以下のようにします.
10768: 
10769: @example
10770: # _AC_EMXOS2
10771: # ----------
10772: # Check for EMX on OS/2.
10773: define([_AC_EMXOS2],
10774: [AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
10775: [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
10776:                    [ac_cv_emxos2=yes],
10777:                    [ac_cv_emxos2=no])])
10778: test "$ac_cv_emxos2" = yes && EMXOS2=yes[]dnl
10779: ])# _AC_EMXOS2
10780: @end example
10781: 
10782: 
10783: @c ============================================= Portable Shell Programming
10784: 
10785: @node Portable Shell, Manual Configuration, Writing Autoconf Macros, Top
10786: @chapter 移植性のあるシェルプログラミング
10787: 
10788: @c When writing your own checks, there are some shell-script programming
10789: @c techniques you should avoid in order to make your code portable.  The
10790: @c Bourne shell and upward-compatible shells like the Korn shell and Bash
10791: @c have evolved over the years, but to prevent trouble, do not take
10792: @c advantage of features that were added after @sc{unix} version 7, circa
10793: @c 1977.  You should not use shell functions, aliases, negated character
10794: @c classes, or other features that are not found in all Bourne-compatible
10795: @c shells; restrict yourself to the lowest common denominator.  Even
10796: @c @code{unset} is not supported by all shells!  Also, include a space
10797: @c after the exclamation point in interpreter specifications, like this:
10798: @c 
10799: 独自の調査を書くいている時,コードを移植性の高いものにするため,使用を避
10800: けるべきシェルスクリプトプログラムテクニックもあります.Bourneシェルと, 
10801: BashとKornシェルのような上位互換性があるシェルは,何年もかけて進展しまし
10802: たが,問題を避けるために,@sc{unix}バージョン7の以降の1977年頃に加えられ
10803: た機能を利用しないでください.シェル関数,エイリアス,無効な文字クラスや,
10804: Bourneシェル互換のものでは見つからないすべての機能を使用するべきではあり
10805: ません.最小公倍数に制限されてます.@code{unset}さえ,全てのシェルではサ
10806: ポートしていません!また,以下のように,インタプリタ仕様として,感嘆符の
10807: 後にスペースを含めてください.
10808: 
10809: @example
10810: #! /usr/bin/perl
10811: @end example
10812: 
10813: @noindent
10814: @c If you omit the space before the path, then 4.2@sc{bsd} based systems
10815: @c (such as Sequent DYNIX) will ignore the line, because they interpret
10816: @c @samp{#! /} as a 4-byte magic number.
10817: @c 
10818: パスの前のスペースを省略する場合,(Sequent DYNIXのような)4.2@sc{bsd}を基
10819: 本とするシステムは,@samp{#! /}は4バイトのマジックナンバーとして解釈され
10820: るので,その行を無視します.
10821: 
10822: @c The set of external programs you should run in a @code{configure} script
10823: @c is fairly small.  @xref{Utilities in Makefiles,, Utilities in
10824: @c Makefiles, standards, GNU Coding Standards}, for the list.  This
10825: @c restriction allows users to start out with a fairly small set of
10826: @c programs and build the rest, avoiding too many interdependencies between
10827: @c packages.
10828: @c 
10829: @code{configure}スクリプトで実行すべき外部プログラムの設定は,かなり小さ
10830: くなっています.リストは,@xref{Utilities in Makefiles, , Utilities in
10831: Makefiles, standards, GNU Coding Standards}.この制限で,ユーザは,かなり
10832: 小さいプログラム設定から残りをビルドすることが可能になっていて,パッケー
10833: ジ間の独立部分を多くし過ぎることを避けることができます.
10834: 
10835: @c Some of these external utilities have a portable subset of features; see
10836: @c @ref{Limitations of Usual Tools}.
10837: @c 
10838: これらの外部ユーティリティは,機能のサブセットの移植性があります.
10839: @ref{Limitations of Usual Tools},を参照してください.
10840: 
10841: @menu
10842: * Shellology::                  A zoology of shells
10843: * Here-Documents::              Quirks and tricks
10844: * File Descriptors::            FDs and redirections
10845: * File System Conventions::     File- and pathnames
10846: * Shell Substitutions::         Variable and command expansions
10847: * Assignments::                 Varying side effects of assignments
10848: * Special Shell Variables::     Variables you should not change
10849: * Limitations of Builtins::     Portable use of not so portable /bin/sh
10850: * Limitations of Usual Tools::  Portable use of portable tools
10851: * Limitations of Make::         Portable Makefiles
10852: @end menu
10853: 
10854: @node Shellology, Here-Documents, Portable Shell, Portable Shell
10855: @section シェル
10856: 
10857: @c There are several families of shells, most prominently the Bourne
10858: @c family and the C shell family which are deeply incompatible.  If you
10859: @c want to write portable shell scripts, avoid members of the C shell
10860: @c family.
10861: @c 
10862: いくつかのシェルのファミリーがあり,最も顕著なものは,Bourneファミリーと
10863: Cシェルファミリーで,それらは全く互換性がありません.移植性の高いシェル
10864: スクリプトを書きたい場合,Cシェルファミリーのメンバーは避けてください.
10865: 
10866: @c Below we describe some of the members of the Bourne shell family.
10867: @c 
10868: 以下で,Bourneシェルファミリーのメンバーを,いくつか説明していきます.
10869: 
10870: @table @asis
10871: @item Ash
10872: @cindex Ash
10873: @c @command{ash} is often used on @sc{gnu}/Linux and @sc{bsd} systems as a
10874: @c light-weight Bourne-compatible shell.  Ash 0.2 has some bugs that are
10875: @c fixed in the 0.3.x series, but portable shell scripts should workaround
10876: @c them, since version 0.2 is still shipped with many @sc{gnu}/Linux
10877: @c distributions.
10878: @c 
10879: @command{ash}は,動作の軽いBourne互換シェルとして@sc{gnu}/Linuxと
10880: @sc{bsd}システムでよく使用されています.Ash 0.2には0.3.xシリーズで修正さ
10881: れているバグがいくつかありますが,バージョン0.2は多くの@sc{gnu}/Linux 配
10882: 布物で配布されているので,移植性の高いシェルスクリプトではそれを回避すべ
10883: きです.
10884: 
10885: @c To be compatible with Ash 0.2:
10886: @c 
10887: Ash 0.2での互換性のため以下のようにしてください.
10888: 
10889: @itemize @minus
10890: @item
10891: @c don't use @samp{$?} after expanding empty or unset variables:
10892: @c 
10893: 空や設定されていない変数を展開した後で,@samp{$?}を使用しないでください.
10894: 
10895: @example
10896: foo=
10897: false
10898: $foo
10899: echo "Don't use it: $?"
10900: @end example
10901: 
10902: @item
10903: @c don't use command substitution within variable expansion:
10904: @c 
10905: 変数の展開を用いてコマンドの代入を使用しないでください.
10906: 
10907: @example
10908: cat $@{FOO=`bar`@}
10909: @end example
10910: 
10911: @item
10912: @c beware that single builtin substitutions are not performed by a sub
10913: @c shell, hence their effect applies to the current shell!  @xref{Shell
10914: @c Substitutions}, item ``Command Substitution''.
10915: @c 
10916: 単一の組み込みの代入は,その効果が現在のシェルに適用されるため,サブシェ
10917: ルで実行されないことに注意してください.アイテム``コマンドの代入''につい
10918: ては,@xref{Shell Substitutions}.
10919: @end itemize
10920: 
10921: @item Bash
10922: @cindex Bash
10923: @c To detect whether you are running @command{bash}, test if
10924: @c @code{BASH_VERSION} is set.  To disable its extensions and require
10925: @c @sc{posix} compatibility, run @samp{set -o posix}. @xref{Bash POSIX
10926: @c Mode,, Bash @sc{posix} Mode, bash, The GNU Bash Reference Manual}, for
10927: @c details.
10928: @c 
10929: @command{bash}を実行しているかどうかを検出するために,
10930: @code{BASH_VERSION}が設定されているかどうかをテストしてください.その拡
10931: 張を利用不可能にし,@sc{posix}互換性を要求するため,@samp{set -o posix} 
10932: を実行してください.詳細は,@xref{Bash POSIX Mode,, Bash @sc{posix}
10933: Mode, bash, The GNU Bash Reference Manual}.
10934: 
10935: @item @command{/usr/xpg4/bin/sh} on Solaris
10936: @cindex @command{/usr/xpg4/bin/sh} on Solaris
10937: @c The @sc{posix}-compliant Bourne shell on a Solaris system is
10938: @c @command{/usr/xpg4/bin/sh} and is part of an extra optional package.
10939: @c There is no extra charge for this package, but it is also not part of a
10940: @c minimal OS install and therefore some folks may not have it.
10941: @c 
10942: Solarisシステム上の@sc{posix}互換のBourneシェルは,
10943: @command{/usr/xpg4/bin/sh}で,それはオプションパッケージの一部です.この
10944: パッケージに対しては追加料金入りませんが,最小のOSのインストールにはない
10945: ので,持っていない人もいるでしょう.
10946: 
10947: @item Zsh
10948: @cindex Zsh
10949: @c To detect whether you are running @command{zsh}, test if
10950: @c @code{ZSH_VERSION} is set.  By default @command{zsh} is @emph{not}
10951: @c compatible with the Bourne shell: you have to run @samp{emulate sh} and
10952: @c set @code{NULLCMD} to @samp{:}. @xref{Compatibility,, Compatibility,
10953: @c zsh, The Z Shell Manual}, for details.
10954: @c 
10955: @command{zsh}が実行されているかどうかを検出するために,
10956: @code{ZSH_VERSION}が設定されているかどうかをテストしてください.デフォル
10957: トで,@command{zsh}はBourneと互換性はあり@emph{ません}.@samp{emulate
10958: sh}を実行し,@code{NULLCMD}を@samp{:}に設定する必要があります.詳細は,
10959: @xref{Compatibility,, Compatibility, zsh, The Z Shell Manual}.
10960: 
10961: @c Zsh 3.0.8 is the native @command{/bin/sh} on Mac OS X 10.0.3.
10962: @c 
10963: Zsh 3.0.8は,Mac OS X 10.0.3でのネイティブな@command{/bin/sh}です.
10964: @end table
10965: 
10966: @c The following discussion between Russ Allbery and Robert Lipe is worth
10967: @c reading:
10968: @c 
10969: Russ AllberyとRobert Lipeの間でなされた,以下の議論は読む価値があります.
10970: 
10971: @noindent
10972: Russ Allbery:
10973: 
10974: @quotation
10975: @c The @sc{gnu} assumption that @command{/bin/sh} is the one and only shell
10976: @c leads to a permanent deadlock.  Vendors don't want to break user's
10977: @c existant shell scripts, and there are some corner cases in the Bourne
10978: @c shell that are not completely compatible with a @sc{posix} shell.  Thus,
10979: @c vendors who have taken this route will @emph{never} (OK@dots{}``never say
10980: @c never'') replace the Bourne shell (as @command{/bin/sh}) with a
10981: @c @sc{posix} shell.
10982: @c 
10983: @command{/bin/sh}が唯一のシェルであるという@sc{gnu}仮定では,永久に行き
10984: 詰まってしまいます.ベンダーは,ユーザの既存のシェルスクリプトを壊したく
10985: はありませんし,Bourneシェルには@sc{posix}シェルと完全に互換ではない部分
10986: もあります.このため,この方法を採用するベンダーは,@emph{決して}
10987: (OK@dots{}``決して,決してとは言わないよ'')Bourneシェルを
10988: (@command{/bin/sh}として)@sc{posix}シェルで置き換えないでしょう.
10989: @end quotation
10990: 
10991: @noindent
10992: Robert Lipe:
10993: 
10994: @quotation
10995: @c This is exactly the problem.  While most (at least most System V's) do
10996: @c have a bourne shell that accepts shell functions most vendor
10997: @c @command{/bin/sh} programs are not the @sc{posix} shell.
10998: @c 
10999: これは本当に問題です.ほとんどのもの(少なくともほとんどのSystem V)はシェ
11000: ル関数を受け入れるBourneシェルがあるのですが,ほとんどのベンダーの
11001: @command{/bin/sh}は@sc{posix}シェルではありません.
11002: 
11003: @c So while most modern systems do have a shell _somewhere_ that meets the
11004: @c @sc{posix} standard, the challenge is to find it.
11005: @c 
11006: そのため,ほとんど現在のシステムは@sc{posix}標準に適合しているシェルが_ 
11007: どこかに_あるのですが,問題はそれを見つけることです.
11008: @end quotation
11009: 
11010: 
11011: @node Here-Documents, File Descriptors, Shellology, Portable Shell
11012: @section ヒアドキュメント
11013: 
11014: @c Don't rely on @samp{\} being preserved just because it has no special
11015: @c meaning together with the next symbol.  in the native @command{/bin/sh}
11016: @c on OpenBSD 2.7 @samp{\"} expands to @samp{"} in here-documents with
11017: @c unquoted delimiter.  As a general rule, if @samp{\\} expands to @samp{\}
11018: @c use @samp{\\} to get @samp{\}.
11019: @c 
11020: @samp{\}は,次のシンボルと一緒になって特別の意味を持たないので,保存され
11021: る@samp{\}に依存しないでください.OpenBSD 2.7のネイティブな
11022: @command{/bin/sh}では,@samp{\"}は@samp{"}に展開され,ヒアドキュメントで
11023: は引用符で囲まれていない分離子として用いられます.一般的な規則として,
11024: @samp{\\}が@samp{\}に展開される場合,@samp{\}を得るために@samp{\\}を使用
11025: してください.
11026: 
11027: @c With OpenBSD 2.7's @command{/bin/sh}
11028: @c 
11029: OpenBSD 2.7の@command{/bin/sh}では,以下のようになります.
11030: 
11031: @example
11032: @group
11033: $ cat <<EOF
11034: > \" \\
11035: > EOF
11036: " \
11037: @end group
11038: @end example
11039: 
11040: @noindent
11041: @c and with Bash:
11042: @c 
11043: そして,Bashでは以下のようになります.
11044: 
11045: @example
11046: @group
11047: bash-2.04$ cat <<EOF
11048: > \" \\
11049: > EOF
11050: \" \
11051: @end group
11052: @end example
11053: 
11054: 
11055: @c Many older shells (including the Bourne shell) implement here-documents
11056: @c inefficiently.  Users can generally speed things up by using a faster
11057: @c shell, e.g., by using the command @samp{bash ./configure} rather than
11058: @c plain @samp{./configure}.
11059: @c 
11060: 多くの古い(Bourneシェルを含む)シェルでは,ヒアドキュメントは非効率に実装
11061: されています.ユーザは,一般的により早いシェルを使用して,例えば,そのま
11062: ま@samp{./configure}するのではなく,コマンド@samp{bash ./configure}を使
11063: 用することによってスピードアップすることが可能です.
11064: 
11065: @c Some shells can be extremely inefficient when there are a lot of
11066: @c here-documents inside a single statement.  For instance if your
11067: @c @file{configure.ac} includes something like:
11068: @c 
11069: シェルによっては,単一の文の中にヒアドキュメントが多過ぎるとき,非常に非
11070: 効率になるものもあります.例えば,@file{configure.ac}に以下のようなもの
11071: 含めたとします.
11072: 
11073: @example
11074: @group
11075: if <cross_compiling>; then
11076:   assume this and that
11077: else
11078:   check this
11079:   check that
11080:   check something else
11081:   @dots{}
11082:   on and on forever
11083:   @dots{}
11084: fi
11085: @end group
11086: @end example
11087: 
11088: @c A shell parses the whole @code{if}/@code{fi} construct, creating
11089: @c temporary files for each here document in it.  Some shells create links
11090: @c for such here-documents on every @code{fork}, so that the clean-up code
11091: @c they had installed correctly removes them.  It is creating the links
11092: @c that the shell can take forever.
11093: @c 
11094: シェルは,その中のそれぞれのヒアドキュメントに対して一時ファイルを作成し
11095: ながら,@code{if}/@code{fi}の文脈全体をパースします.@code{fork}毎にその
11096: ようなヒアドキュメントに対してリンクを作成するシェルもあり,インストール
11097: された後のクリーンアップコードで正しく削除されます.それは,シェルが永久
11098: に受け入れられるリンクを作成しているのです.
11099: 
11100: @c Moving the tests out of the @code{if}/@code{fi}, or creating multiple
11101: @c @code{if}/@code{fi} constructs, would improve the performance
11102: @c significantly.  Anyway, this kind of construct is not exactly the
11103: @c typical use of Autoconf.  In fact, it's even not recommended, because M4
11104: @c macros can't look into shell conditionals, so we may fail to expand a
11105: @c macro when it was expanded before in a conditional path, and the
11106: @c condition turned out to be false at run-time, and we end up not
11107: @c executing the macro at all.
11108: @c 
11109: @code{if}/@code{fi}の外部のテストを移動したり,複数の@code{if}/@code{fi} 
11110: の文脈を作成したりすることで,かなり動作が改善されるでしょう.とにかく,
11111: こういった構成は,典型的なAutoconfの使用では正しくありません.実際,M4マ
11112: クロは,シェルの条件文を見ることができないので,それは推奨されておらず,
11113: 条件分岐の前にそれが展開され,実行時に条件文が失敗だと分かるとき,マクロ
11114: 展開に失敗するかもしれず,マクロの実行を完全に終了できないでしょう.
11115: 
11116: 
11117: @node File Descriptors, File System Conventions, Here-Documents, Portable Shell
11118: @section ファイルディスクリプタ
11119: 
11120: @c Some file descriptors shall not be used, since some systems, admittedly
11121: @c arcane, use them for special purpose:
11122: @c 
11123: システムによっては,明らかに不可解なのですが,特殊な目的で使用しているた
11124: め,ファイルディスクリプタには使用すべきではないものもあります.
11125: 
11126: @table @asis
11127: @item 3
11128: @c some systems may open it to @samp{/dev/tty}.
11129: @c 
11130: それを@samp{/dev/tty}として開くシステムもあります.
11131: 
11132: @item 4
11133: @c used on the Kubota Titan.
11134: @c 
11135: Kubota Titanで使用されています.
11136: @end table
11137: 
11138: @c Don't redirect several times the same file descriptor, as you are doomed
11139: @c to failure under Ultrix.
11140: @c 
11141: Ultrixでは以上終了だと告げられるので,同じファイルディスクリプタに複数回
11142: リダイレクトしないでください.
11143: 
11144: @example
11145: ULTRIX V4.4 (Rev. 69) System #31: Thu Aug 10 19:42:23 GMT 1995
11146: UWS V4.4 (Rev. 11)
11147: $ eval 'echo matter >fullness' >void
11148: illegal io
11149: $ eval '(echo matter >fullness)' >void
11150: illegal io
11151: $ (eval '(echo matter >fullness)') >void
11152: Ambiguous output redirect.
11153: @end example
11154: 
11155: @noindent
11156: @c In each case the expected result is of course @file{fullness} containing
11157: @c @samp{matter} and @file{void} being empty.
11158: @c 
11159: それぞれの場合で,期待される結果はもちろん,@samp{matter}を含んでいる
11160: @file{fullness}と,空の@file{void}です.
11161: 
11162: @c Don't try to redirect the standard error of a command substitution: it
11163: @c must be done @emph{inside} the command substitution: when running
11164: @c @samp{: `cd /zorglub` 2>/dev/null} expect the error message to
11165: @c escape, while @samp{: `cd /zorglub 2>/dev/null`} works properly.
11166: @c 
11167: コマンドの代入のリダイレクトを標準エラー出力にしないでください.それは,
11168: コマンドの代入の@emph{内部で}行なう必要があります.エラーメッセージを削
11169: 除することを期待して@samp{: `cd /zorglub` 2>/dev/null}を実行しているとき,
11170: @samp{: `cd /zorglub 2>/dev/null`}は正しく動作します.
11171: 
11172: @c It is worth noting that Zsh (but not Ash nor Bash) makes it possible
11173: @c in assignments though: @samp{foo=`cd /zorglub` 2>/dev/null}.
11174: @c 
11175: (AshでもBashでもない)Zshが割当を可能にすることに注意する価値はあります.
11176: @samp{foo=`cd /zorglub` 2>/dev/null}.
11177: 
11178: @c Most shells, if not all (including Bash, Zsh, Ash), output traces on
11179: @c stderr, even for sub-shells.  This might result in undesired content
11180: @c if you meant to capture the standard-error output of the inner command:
11181: @c 
11182: ほとんどのシェルでは,(Bash,Zsh,Ashを含め)全てではありませんが,標準エ
11183: ラー出力を,サブシェルに対しても追跡しています.内部コマンドの標準エラー
11184: 出力を得る目的がある場合,これでは結果が望まない内容になるかもしれません.
11185: 
11186: @example
11187: $ ash -x -c '(eval "echo foo >&2") 2>stderr'
11188: $ cat stderr
11189: + eval echo foo >&2
11190: + echo foo
11191: foo
11192: $ bash -x -c '(eval "echo foo >&2") 2>stderr'
11193: $ cat stderr
11194: + eval 'echo foo >&2'
11195: ++ echo foo
11196: foo
11197: $ zsh -x -c '(eval "echo foo >&2") 2>stderr'
11198: @i{# Traces on startup files deleted here.}
11199: $ cat stderr
11200: +zsh:1> eval echo foo >&2
11201: +zsh:1> echo foo
11202: foo
11203: @end example
11204: 
11205: @noindent
11206: @c You'll appreciate the various levels of detail@dots{}
11207: @c 
11208: 様々なレベルの詳細を認めるでしょう@dots{}
11209: 
11210: @c One workaround is to grep out uninteresting lines, hoping not to remove
11211: @c good ones@dots{}
11212: @c 
11213: 一つの回避方法は,興味がない行をgrepで削除することで,良い行は削除しない
11214: ことを期待しつつ@dots{}
11215: 
11216: 
11217: @node File System Conventions, Shell Substitutions, File Descriptors, Portable Shell
11218: @section ファイルシステムの条件
11219: 
11220: @c While @command{autoconf} and friends will usually be run on some Unix
11221: @c variety, it can and will be used on other systems, most notably @sc{dos}
11222: @c variants.  This impacts several assumptions regarding file and
11223: @c path names.
11224: @c 
11225: @command{autoconf}とその仲間達は,通常様々なUnixで実行されますが,それは
11226: その他のシステムでも使用され,最も顕著なものとしては@sc{dos}の仲間があげ
11227: られます.このことは,ファイルとパス名に関する仮定に衝突します.
11228: 
11229: @noindent
11230: @c For example, the following code:
11231: @c 
11232: 例えば,以下のようなコードを考えます.
11233: 
11234: @example
11235: case $foo_dir in
11236:   /*) # Absolute
11237:      ;;
11238:   *)
11239:      foo_dir=$dots$foo_dir ;;
11240: esac
11241: @end example
11242: 
11243: @noindent
11244: @c will fail to properly detect absolute paths on those systems, because
11245: @c they can use a drivespec, and will usually use a backslash as directory
11246: @c separator.  The canonical way to check for absolute paths is:
11247: @c 
11248: それらのシステムではドライブスペックを使用していて,通常はディレクトリの
11249: 分離子としてバックスラッシュを使用しているため,絶対パスを正しく検出する
11250: ことに失敗するでしょう.絶対パスに対する調査の標準的な方法は以下のとおり
11251: です.
11252: 
11253: @example
11254: case $foo_dir in
11255:   [\\/]* | ?:[\\/]* ) # Absolute
11256:      ;;
11257:   *)
11258:      foo_dir=$dots$foo_dir ;;
11259: esac
11260: @end example
11261: 
11262: @noindent
11263: @c Make sure you quote the brackets if appropriate and keep the backslash as
11264: @c first character (@pxref{Limitations of Builtins}).
11265: @c 
11266: 適切な場合は角カッコの引用符で囲み,最初の文字としてのバックスラッシュを
11267: 保持していることを確認してください(@pxref{Limitations of Builtins}).
11268: 
11269: @c Also, because the colon is used as part of a drivespec, these systems don't
11270: @c use it as path separator.  When creating or accessing paths, use
11271: @c @code{$ac_path_separator} instead (or the @code{PATH_SEPARATOR} output
11272: @c variable).  @command{autoconf} sets this to the appropriate value (@samp{:}
11273: @c or @samp{;}) when it starts up.
11274: @c 
11275: また,コロンがデバイススペックの一部として使用されているので,これらのシ
11276: ステムではそれをパスの分離子として使用していません.パスを作成していると
11277: きやパスにアクセスしているときは,代わりに@code{$ac_path_separator}(また
11278: は,@code{PATH_SEPARATOR}の出力変数)を使用してください.
11279: @command{autoconf}は,開始時にこれを適切な値(@samp{:}または@samp{;})に設
11280: 定します.
11281: 
11282: @c File names need extra care as well.  While @sc{dos}-based environments
11283: @c that are Unixy enough to run @command{autoconf} (such as DJGPP) will
11284: @c usually be able to handle long file names properly, there are still
11285: @c limitations that can seriously break packages.  Several of these issues
11286: @c can be easily detected by the
11287: @c @href{ftp://ftp.gnu.org/gnu/non-gnu/doschk/doschk-1.1.tar.gz, doschk}
11288: @c package.
11289: @c 
11290: ファイル名にも余計な注意が必要になります.(DJGPPのような)
11291: @command{autoconf}を十分に実行できるUnixのような@sc{dos}ベースの環境では,
11292: 通常長いファイル名を適切に扱うことが可能ですが,パッケージを壊してしまう
11293: 深刻な制限も残っています.これらの問題のいくつかは,
11294: doschk@footnote{doschk,
11295: @url{ftp://ftp.gnu.org/gnu/non-gnu/doschk/doschk-1.1.tar.gz}}パッケージ
11296: で用意に検出可能です.
11297: 
11298: @c A short overview follows; problems are marked with @sc{sfn}/@sc{lfn} to
11299: @c indicate where they apply: @sc{sfn} means the issues are only relevant to
11300: @c plain @sc{dos}, not to @sc{dos} boxes under Windows, while @sc{lfn}
11301: @c identifies problems that exist even under Windows.
11302: @c 
11303: 以下は簡単な全体像です.問題には,適用を示すため@sc{sfn}/@sc{lfn}で印が
11304: ついています.@sc{sfn}は,Windows下の@sc{dos}窓ではなく,プレーンな
11305: @sc{dos}にのみ関連する問題を意味し,一方@sc{lfn}は,Windowsでも存在する
11306: 問題を意味しています.
11307: 
11308: @table @asis
11309: @item 複数のドットの禁止(@sc{sfn})
11310: @c @sc{dos} cannot handle multiple dots in filenames.  This is an especially
11311: @c important thing to remember when building a portable configure script,
11312: @c as @command{autoconf} uses a .in suffix for template files.
11313: @c 
11314: @sc{dos}はファイル名に複数のドットがあるものを扱うことが不可能です.これ
11315: は,@command{autoconf}は.inをテンプレートファイルの接尾子に使用するので,
11316: 移植性の高いconfigureスクリプトを構築しているときに覚えておく必要がある,
11317: 特に重要なことです.
11318: 
11319: @c This is perfectly OK on Unices:
11320: @c 
11321: 以下はUnix上では完全にOKです.
11322: 
11323: @example
11324: AC_CONFIG_HEADER(config.h)
11325: AC_CONFIG_FILES([source.c foo.bar])
11326: AC_OUTPUT
11327: @end example
11328: 
11329: @noindent
11330: @c but it causes problems on @sc{dos}, as it requires @samp{config.h.in},
11331: @c @samp{source.c.in} and @samp{foo.bar.in}.  To make your package more portable
11332: @c to @sc{dos}-based environments, you should use this instead:
11333: @c 
11334: しかし,それは@samp{config.h.in},@samp{source.c.in},そして
11335: @samp{foo.bar.in}が必要になるので,@sc{dos}では問題があります.パッケー
11336: ジを@sc{dos}ベースの環境でより移植性を高くするため,その代わりに以下を使
11337: 用すべきです.
11338: 
11339: @example
11340: AC_CONFIG_HEADER(config.h:config.hin)
11341: AC_CONFIG_FILES([source.c:source.cin foo.bar:foobar.in])
11342: AC_OUTPUT
11343: @end example
11344: 
11345: @item ドットの前置の禁止(@sc{sfn})
11346: @c @sc{dos} cannot handle filenames that start with a dot.  This is usually
11347: @c not a very important issue for @command{autoconf}.
11348: @c 
11349: @sc{dos}はドットで始まるファイル名を扱うことが不可能です.これは通常,
11350: @command{autoconf}に対してはあまり重要ではない問題です.
11351: 
11352: @item 大文字小文字を区別しない (@sc{lfn})
11353: @c @sc{dos} is case insensitive, so you cannot, for example, have both a
11354: @c file called @samp{INSTALL} and a directory called @samp{install}.  This
11355: @c also affects @command{make}; if there's a file called @samp{INSTALL} in
11356: @c the directory, @command{make install} will do nothing (unless the
11357: @c @samp{install} target is marked as PHONY).
11358: @c 
11359: @sc{dos}は大文字小文字を区別しないので,例えば,@samp{INSTALL}という名の
11360: ファイルと@samp{install}という名のディレクトリの両方を持つことができませ
11361: ん.これは,@command{make}にも影響します.ディレクトリに@samp{INSTALL}と
11362: いう名のファイルがある場合,@command{make install}は(@samp{install}が
11363: PHONYとして印がついていないとき)何もしません.
11364: 
11365: @item 8+3の制限 (@sc{sfn})
11366: @c Because the @sc{dos} file system only stores the first 8 characters of
11367: @c the filename and the first 3 of the extension, those must be unique.
11368: @c That means that @file{foobar-part1.c}, @file{foobar-part2.c} and
11369: @c @file{foobar-prettybird.c} all resolve to the same filename
11370: @c (@file{FOOBAR-P.C}).  The same goes for @file{foo.bar} and
11371: @c @file{foo.bartender}.
11372: @c 
11373: @sc{dos}ファイルシステムでは,ファイル名の最初の8文字と最初の3文字の拡張
11374: 子のみ保存され,それらはユニークである必要があります.それは,
11375: @file{foobar-part1.c},@file{foobar-part2.c},そして
11376: @file{foobar-prettybird.c}の全ては同じ名前(@file{FOOBAR-P.C})になります.
11377: @file{foo.bar}と@file{foo.bartender}も同じものになります.
11378: 
11379: @c Note: This is not usually a problem under Windows, as it uses numeric
11380: @c tails in the short version of filenames to make them unique.  However, a
11381: @c registry setting can turn this behaviour off.  While this makes it
11382: @c possible to share file trees containing long file names between @sc{sfn}
11383: @c and @sc{lfn} environments, it also means the above problem applies there
11384: @c as well.
11385: @c 
11386: 注意:これは通常,ファイル名をユニークにするために短いバージョンでは数字
11387: の後置を使用するので,Windowsでは問題になりません.しかし,レジストリの
11388: 設定でこの動作を停止可能です.これで長いファイル名を含むファイルのツリー
11389: を,@sc{sfn}と@sc{lfn}の環境で共有することが可能になりますが,上記の問題
11390: は同様に存在します.
11391: 
11392: @item 無効な文字
11393: @c Some characters are invalid in @sc{dos} filenames, and should therefore
11394: @c be avoided. In a @sc{lfn} environment, these are @samp{/}, @samp{\},
11395: @c @samp{?}, @samp{*}, @samp{:}, @samp{<}, @samp{>}, @samp{|} and @samp{"}.
11396: @c In a @sc{sfn} environment, other characters are also invalid.  These
11397: @c include @samp{+}, @samp{,}, @samp{[} and @samp{]}.
11398: @c 
11399: @sc{dos}ファイル名で無効な文字もあり,そのため避けた方が良いでしょう.
11400: @sc{lfn}の環境では,@samp{/},@samp{\},@samp{?},@samp{*},@samp{:},
11401: @samp{<},@samp{>},@samp{|},そして@samp{"}です.@sc{sfn}環境では,それ
11402: 以外にも無効になります.これには,@samp{+},@samp{,},@samp{[},そして
11403: @samp{]}が含まれます.
11404: @end table
11405: 
11406: 
11407: @node Shell Substitutions, Assignments, File System Conventions, Portable Shell
11408: @section シェルの代入
11409: 
11410: 
11411: @c Contrary to a persistent urban legend, the Bourne shell does not
11412: @c systematically split variables and backquoted expressions, in particular
11413: @c on the right-hand side of assignments and in the argument of @code{case}.
11414: @c For instance, the following code:
11415: @c 
11416: persistent urban legendとは反対に,Bourneシェルは変数とバッククオートさ
11417: れている式が整然と分かれておらず,特に右側の割り当てと@code{case}の引数
11418: がそうです.例えば,以下のコードを考えます.
11419: 
11420: @example
11421: case "$given_srcdir" in
11422: .)  top_srcdir="`echo "$dots" | sed 's,/$,,'`"
11423: *)  top_srcdir="$dots$given_srcdir" ;;
11424: esac
11425: @end example
11426: 
11427: @noindent
11428: @c is more readable when written as:
11429: @c 
11430: 以下のように書かれているとき,より読みやすくなります.
11431: 
11432: @example
11433: case $given_srcdir in
11434: .)  top_srcdir=`echo "$dots" | sed 's,/$,,'`
11435: *)  top_srcdir=$dots$given_srcdir ;;
11436: esac
11437: @end example
11438: 
11439: @noindent
11440: @c and in fact it is even @emph{more} portable: in the first case of the
11441: @c first attempt, the computation of @code{top_srcdir} is not portable,
11442: @c since not all shells properly understand @code{"`@dots{}"@dots{}"@dots{}`"}.
11443: @c Worse yet, not all shells understand @code{"`@dots{}\"@dots{}\"@dots{}`"}
11444: @c the same way.  There is just no portable way to use double-quoted
11445: @c strings inside double-quoted backquoted expressions (pfew!).
11446: @c 
11447: そして,実際それは@emph{より}移植性が高くなります.最初の試みの最初の
11448: caseで,全てのシェルが@code{"`@dots{}"@dots{}"@dots{}`"}を正しく解釈する
11449: わけではないので,@code{top_srcdir}の計算結果は移植性が高くありません.
11450: 更に悪いことには,同様に@code{"`@dots{}\"@dots{}\"@dots{}`"}を全てのシェ
11451: ルが解釈するわけではありません.二重引用符でバッククオートされている式の
11452: 内部で,二重引用符で囲まれた文字列を使用するための移植性を高める方法は全
11453: くありません(pfew!).
11454: 
11455: @table @code
11456: @item $@@
11457: @cindex @samp{"$@@"}
11458: @c One of the most famous shell-portability issues is related to
11459: @c @samp{"$@@"}: when there are no positional arguments, it is supposed to
11460: @c be equivalent to nothing.  But some shells, for instance under Digital
11461: @c Unix 4.0 and 5.0, will then replace it with an empty argument.  To be
11462: @c portable, use @samp{$@{1+"$@@"@}}.
11463: @c 
11464: 最も有名なシェルの移植性の問題の一つは,@samp{"$@@"}との関連です.位置に
11465: 依存する引数が無いとき,それは,何もないことと等価です.しかし,シェルに
11466: よっては,例えばDigital Unix 4.0と5.0では,空の引数で置換されます.移植
11467: 性を高めるため,@samp{$@{1+"$@@"@}}を使用してください.
11468: 
11469: @item $@{@var{var}:-@var{value}@}
11470: @cindex $@{@var{var}:-@var{value}@}
11471: @c Old @sc{bsd} shells, including the Ultrix @code{sh}, don't accept the
11472: @c colon for any shell substitution, and complain and die.
11473: @c 
11474: Ultrix @code{sh}を含め,古い@sc{bsd}シェルはシェルの代入に対してコロンを
11475: 受け入れず,文句を言って終了します.
11476: 
11477: @item $@{@var{var}=@var{literal}@}
11478: @cindex $@{@var{var}=@var{literal}@}
11479: @c Be sure to quote:
11480: @c 
11481: 引用符で囲まれていることを確かめてください.
11482: 
11483: @example
11484: : $@{var='Some words'@}
11485: @end example
11486: 
11487: @noindent
11488: @c otherwise some shells, such as on Digital Unix V 5.0, will die because
11489: @c of a ``bad substitution''.
11490: @c 
11491: それ以外のDigital Unix V 5.0のようなシェルでは,``bad substitution''のた
11492: めに終了します.
11493: 
11494: @c Solaris' @command{/bin/sh} has a frightening bug in its interpretation
11495: @c of this.  Imagine you need set a variable to a string containing
11496: @c @samp{@}}.  This @samp{@}} character confuses Solaris' @command{/bin/sh}
11497: @c when the affected variable was already set.  This bug can be exercised
11498: @c by running:
11499: @c 
11500: Solarisの@command{/bin/sh}にはこの解釈に恐ろしいバグがあります.変数を
11501: @samp{@}}を含む文字列に設定する必要があることを想像してください.この
11502: @samp{@}}文字で,影響ある変数が既に設定されているとき,Solarisの
11503: @command{/bin/sh}は混乱します.このバグは,以下のように実行することで作
11504: 動されるはずです.
11505: 
11506: @example
11507: $ unset foo
11508: $ foo=$@{foo='@}'@}
11509: $ echo $foo
11510: @}
11511: $ foo=$@{foo='@}'   # no error; this hints to what the bug is
11512: $ echo $foo
11513: @}
11514: $ foo=$@{foo='@}'@}
11515: $ echo $foo
11516: @}@}
11517:  ^ ugh!
11518: @end example
11519: 
11520: @c It seems that @samp{@}} is interpreted as matching @samp{$@{}, even
11521: @c though it is enclosed in single quotes.  The problem doesn't happen
11522: @c using double quotes.
11523: @c 
11524: @samp{@}}は,シングル引用符で囲まれている場合でも,@samp{$@{}に一致する
11525: ものとして解釈されているようです.二重引用符を使用すると問題は生じません.
11526: 
11527: @item $@{@var{var}=@var{expanded-value}@}
11528: @cindex $@{@var{var}=@var{expanded-value}@}
11529: @c On Ultrix,
11530: @c running
11531: @c 
11532: Ultrixで,以下を実行したとします.
11533: 
11534: @example
11535: default="yu,yaa"
11536: : $@{var="$default"@}
11537: @end example
11538: 
11539: @noindent
11540: @c will set @var{var} to @samp{M-yM-uM-,M-yM-aM-a}, i.e., the 8th bit of
11541: @c each char will be set. You won't observe the phenomenon using a simple
11542: @c @samp{echo $var} since apparently the shell resets the 8th bit when it
11543: @c expands $var.  Here are two means to make this shell confess its sins:
11544: @c 
11545: それは@var{var}を@samp{M-yM-uM-,M-yM-aM-a}に設定し,すなわち,全ての文字
11546: の8番目のビットが設定されるでしょう.$varを展開するとき,シェルが8番目の
11547: ビットを明示的にリセットするので,単純に@samp{echo $var}を使用している現
11548: 象が分かりません.このシェルにその違反で混乱させる2つの方法は,以下のよ
11549: うになります.
11550: 
11551: @example
11552: $ cat -v <<EOF
11553: $var
11554: EOF
11555: @end example
11556: 
11557: @noindent
11558: @c and
11559: @c 
11560: それと以下です.
11561: 
11562: @example
11563: $ set | grep '^var=' | cat -v
11564: @end example
11565: 
11566: @c One classic incarnation of this bug is:
11567: @c 
11568: このバグの古典的な典型の一つは以下のものです.
11569: 
11570: @example
11571: default="a b c"
11572: : $@{list="$default"@}
11573: for c in $list; do
11574:   echo $c
11575: done
11576: @end example
11577: 
11578: @noindent
11579: @c You'll get @samp{a b c} on a single line.  Why?  Because there are no
11580: @c spaces in @samp{$list}: there are @samp{M- }, i.e., spaces with the 8th
11581: @c bit set, hence no IFS splitting is performed!!!
11582: @c 
11583: 単一行に@samp{a b c}を得るでしょう.なぜでしょうか?それは,@samp{$list} 
11584: にスペースが無いためです.@samp{M- },すなわち8ビット目を設定するスペー
11585: スがあるので,IFSによる分離が実行されないのです!!!
11586: 
11587: @c One piece of good news is that Ultrix works fine with @samp{:
11588: @c $@{list=$default@}}; i.e., if you @emph{don't} quote.  The bad news is
11589: @c then that @sc{qnx} 4.25 then sets @var{list} to the @emph{last} item of
11590: @c @var{default}!
11591: @c 
11592: 良いニュースの一つは,Ultrixが@samp{: $@{list=$default@}}で正確に動作す
11593: ることです.すなわち,引用符で囲ま@emph{ない}場合です.悪いニュースとして
11594: は,@sc{qnx} 4.25は,@var{list}を@var{default}の@emph{最後の}項目に設定
11595: することです!
11596: 
11597: @c The portable way out consists in using a double assignment, to switch
11598: @c the 8th bit twice on Ultrix:
11599: @c 
11600: 移植性の高い方法は,Ultrixで8番目のビットを2回切替えるために,二重(引用
11601: 符による)代入を使用することです.
11602: 
11603: @example
11604: list=$@{list="$default"@}
11605: @end example
11606: 
11607: @noindent
11608: @c @dots{}but beware of the @samp{@}} bug from Solaris (see above).  For safety,
11609: @c use:
11610: @c 
11611: @dots{}しかし,Solarisの@samp{@}}のバグ(上記を参照してください)には用心
11612: してください.安全にするには,以下を使用してください.
11613: 
11614: @example
11615: test "$@{var+set@}" = set || var=@var{@{value@}}
11616: @end example
11617: 
11618: 
11619: @item `@var{commands}`
11620: @cindex `@var{commands}`
11621: @cindex Command Substitution
11622: @c While in general it makes no sense, do not substitute a single builtin
11623: @c with side effects as Ash 0.2, trying to optimize, does not fork a
11624: @c sub-shell to perform the command.
11625: @c 
11626: 一般的には意味がありませんが,Ash 0.2では最適化のためコマンドを実行する
11627: ためサブシェルをforkしないので,副作用のある単一の組み込み物を代入しない
11628: でください.
11629: 
11630: @c For instance, if you wanted to check that @command{cd} is silent, do not
11631: @c use @samp{test -z "`cd /`"} because the following can happen:
11632: @c 
11633: 例えば,@command{cd}が何も出力しないことを調査したい場合,以下のことが生
11634: じるかもしれないので,@samp{test -z "`cd /`"}を使用しないでください.
11635: 
11636: @example
11637: $ pwd
11638: /tmp
11639: $ test -n "`cd /`" && pwd
11640: /
11641: @end example
11642: 
11643: @noindent
11644: @c The result of @samp{foo=`exit 1`} is left as an exercise to the reader.
11645: @c 
11646: @samp{foo=`exit 1`}の結果は,読者への演習問題として残しておきます.
11647: 
11648: @item $(@var{commands})
11649: @cindex $(@var{commands})
11650: @c This construct is meant to replace @samp{`@var{commands}`}; they can be
11651: @c nested while this is impossible to do portably with back quotes.
11652: @c Unfortunately it is not yet widely supported.  Most notably, even recent
11653: @c releases of Solaris don't support it:
11654: @c 
11655: この構成は,@samp{`@var{commands}`}を置換するという意味があります.それ
11656: らはネスト可能ですが,バッククオートを用いて移植することは不可能です.残
11657: 念ながら,まだ全体的にサポートされていません.特に,現在のSolarisリリー
11658: スでもサポートされていません.
11659: 
11660: @example
11661: $ showrev -c /bin/sh | grep version
11662: Command version: SunOS 5.8 Generic 109324-02 February 2001
11663: $ echo $(echo blah)
11664: syntax error: `(' unexpected
11665: @end example
11666: 
11667: @noindent
11668: @c nor does @sc{irix} 6.5's Bourne shell:
11669: @c 
11670: また,@sc{irix} 6.5のBourneシェルもそうです.
11671: @example
11672: $ uname -a
11673: IRIX firebird-image 6.5 07151432 IP22
11674: $ echo $(echo blah)
11675: $(echo blah)
11676: @end example
11677: @end table
11678: 
11679: 
11680: @node Assignments, Special Shell Variables, Shell Substitutions, Portable Shell
11681: @section 代入
11682: 
11683: @c When setting several variables in a row, be aware that the order of the
11684: @c evaluation is undefined.  For instance @samp{foo=1 foo=2; echo $foo}
11685: @c gives @samp{1} with sh on Solaris, but @samp{2} with Bash.  You must use
11686: @c @samp{;} to enforce the order: @samp{foo=1; foo=2; echo $foo}.
11687: @c 
11688: 列にいくつかの変数を設定するとき,評価の順序が定義されていないことを覚え
11689: ておいてください.例えば,@samp{foo=1 foo=2; echo $foo}は,Solarisの
11690: @code{sh}では@samp{1}になりますが,Bashでは@samp{2}になります.順序を強
11691: 制するために@samp{;}を使用する必要があります.@samp{foo=1; foo=2; echo
11692: $foo}のようにします.
11693: 
11694: @c Don't rely on the exit status of an assignment: Ash 0.2 does not change
11695: @c the status and propagates that of the last statement:
11696: @c 
11697: 代入の終了ステータスに依存しないようにしてください.Ash 0.2はステータス
11698: を変更せず,最後の文に伝搬します.
11699: 
11700: @example
11701: $ false || foo=bar; echo $?
11702: 1
11703: $ false || foo=`:`; echo $?
11704: 0
11705: @end example
11706: 
11707: @noindent
11708: @c and to make things even worse, @sc{qnx 4.25} just sets the exit status
11709: @c to 0 in any case:
11710: @c 
11711: そして,更に悪いことに,@sc{qnx 4.25}はあらゆる場合で終了ステータスを0に
11712: 設定します.
11713: 
11714: @example
11715: $ foo=`exit 1`; echo $?
11716: 0
11717: @end example
11718: 
11719: @c To assign default values, follow this algorithm:
11720: @c 
11721: デフォルト値を代入するために,以下のアルゴリズムを使用してください.
11722: 
11723: @enumerate
11724: @item
11725: @c If the default value is a literal and does not contain any closing
11726: @c brace, use:
11727: @c 
11728: デフォルト値がリテラルで閉じカッコを含まない場合は以下を使用してください.
11729: 
11730: @example
11731: : $@{var='my literal'@}
11732: @end example
11733: 
11734: @item
11735: @c If the default value contains no closing brace, has to be expanded, and
11736: @c the variable being initialized will never be IFS-split (i.e., it's not a
11737: @c list), then use:
11738: @c 
11739: デフォルト値が閉じカッコを含まず,展開されず,初期化されている変数がIFS 
11740: で分けられていない(すなわち,リストでない)場合,以下を使用してください.
11741: 
11742: @example
11743: : $@{var="$default"@}
11744: @end example
11745: 
11746: @item
11747: @c If the default value contains no closing brace, has to be expanded, and
11748: @c the variable being initialized will be IFS-split (i.e., it's a list),
11749: @c then use:
11750: @c 
11751: デフォルト値が閉じカッコを含まず,展開されず,初期化されている変数がIFS 
11752: で分けられる(すなわち,リストの)場合,以下を使用してください.
11753: 
11754: @example
11755: var=$@{var="$default"@}
11756: @end example
11757: 
11758: @item
11759: @c If the default value contains a closing brace, then use:
11760: @c 
11761: デフォルト値が閉じカッコを含む場合,以下を使用してください.
11762: 
11763: @example
11764: test "$@{var+set@}" = set || var='$@{indirection@}'
11765: @end example
11766: @end enumerate
11767: 
11768: @c In most cases @samp{var=$@{var="$default"@}} is fine, but in case of
11769: @c doubt, just use the latter.  @xref{Shell Substitutions}, items
11770: @c @samp{$@{@var{var}:-@var{value}@}} and @samp{$@{@var{var}=@var{value}@}}
11771: @c for the rationale.
11772: @c 
11773: ほとんどの場合,@samp{var=$@{var="$default"@}}で良いのですが,駄目なとき
11774: は後者を使用してください.正当性のための,
11775: @samp{$@{@var{var}:-@var{value}@}}と@samp{$@{@var{var}=@var{value}@}}の
11776: 項目は,@xref{Shell Substitutions}.
11777: 
11778: 
11779: @node Special Shell Variables, Limitations of Builtins, Assignments, Portable Shell
11780: @section 特殊なシェル変数
11781: 
11782: @c Some shell variables should not be used, since they can have a deep
11783: @c influence on the behavior of the shell.  In order to recover a sane
11784: @c behavior from the shell, some variables should be unset, but
11785: @c @command{unset} is not portable (@pxref{Limitations of Builtins}) and a
11786: @c fallback value is needed.  We list these values below.
11787: @c 
11788: シェルの動作に深く影響するため,使用すべきではないシェル変数もあります.
11789: シェルからまともな動作に戻るため,unsetすべき変数もありますが,
11790: @command{unset}は移植性が無く(@pxref{Limitations of Builtins}),代替値が
11791: 必要になります.これらの変数を以下にリストアップします.
11792: 
11793: @c Alphabetical order, case insensitive, `A' before `a'.
11794: @table @code
11795: @item CDPATH
11796: @evindex CDPATH
11797: @c When this variable is set @code{cd} is verbose, so idioms such as
11798: @c @samp{abs=`cd $rel && pwd`} break because @code{abs} receives the path
11799: @c twice.
11800: @c 
11801: この変数が設定されているとき,@code{cd}は冗長で,そのため@samp{abs=`cd
11802: $rel && pwd`}のような慣用句は,@code{abs}がパスを2回受けとるので駄目にな
11803: ります.
11804: 
11805: @c FIXME: Which shells?  How do they behave?
11806: 
11807: @c Setting @code{CDPATH} to the empty value is not enough for most shells.
11808: @c A simple colon is enough except for @code{zsh}, which prefers a leading
11809: @c dot:
11810: @c 
11811: @code{CDPATH}を空の値に設定することは,ほとんどのシェルに対して十分では
11812: ありません.単純なコロンは@code{zsh}以外では十分で,そこではドットの前置
11813: が好まれます.
11814: 
11815: @example
11816: zsh-3.1.6 % mkdir foo && (CDPATH=: cd foo)
11817: /tmp/foo
11818: zsh-3.1.6 % (CDPATH=:. cd foo)
11819: /tmp/foo
11820: zsh-3.1.6 % (CDPATH=.: cd foo)
11821: zsh-3.1.6 %
11822: @end example
11823: 
11824: @noindent
11825: @c (of course we could just @code{unset} @code{CDPATH}, since it also
11826: @c behaves properly if set to the empty string).
11827: @c 
11828: (もちろん,空の文字列を設定した場合正しく動作するので,@code{CDPATH}を
11829: @code{unset}することもできます.)
11830: 
11831: @c Life wouldn't be so much fun if @command{bash} and @command{zsh} had the
11832: @c same behavior:
11833: @c 
11834: @command{bash}と@command{zsh}が同じ動作をする場合は,人生はそんなに楽し
11835: くはなかったでしょう.
11836: 
11837: @example
11838: bash-2.02 % (CDPATH=:. cd foo)
11839: bash-2.02 % (CDPATH=.: cd foo)
11840: /tmp/foo
11841: @end example
11842: 
11843: @c Therefore, a portable solution to neutralize @samp{CDPATH} is
11844: @c 
11845: そのため,@samp{CDPATH}を無効にするための移植性の解決方法は以下のように
11846: なります.
11847: 
11848: @example
11849: CDPATH=$@{ZSH_VERSION+.@}:
11850: @end example
11851: 
11852: @noindent
11853: @c Note that since @command{zsh} supports @command{unset}, you may unset
11854: @c @samp{CDPATH} using @samp{:} as a fallback, see
11855: @c @ref{Limitations of Builtins}.
11856: @c 
11857: @command{zsh}は@command{unset}をサポートするので,代替として@samp{:}を使
11858: 用して@samp{CDPATH}をunsetすることもできます.@ref{Limitations of
11859: Builtins}を参照してください.
11860: 
11861: @item IFS
11862: @evindex IFS
11863: @c Don't set the first character of @code{IFS} to backslash.  Indeed,
11864: @c Bourne shells use the first character (backslash) when joining the
11865: @c components in @samp{"$@@"} and some shells then re-interpret (!) the
11866: @c backslash escapes, so you can end up with backspace and other strange
11867: @c characters.
11868: @c 
11869: @code{IFS}の最初の文字をバックスラッシュに設定しないでください.実際,
11870: @samp{"$@@"}で要素を加えるときは,Bourneシェルは最初の文字(バックスラッ
11871: シュ)を使用し,そして,バックスラッシュエスケープをもう一度解釈する(!) 
11872: シェルもあり,そのため,バックスペースとその他の奇妙な文字で終ることが可
11873: 能になっています.
11874: 
11875: @item LANG
11876: @itemx LC_ALL
11877: @itemx LC_TIME
11878: @itemx LC_CTYPE
11879: @itemx LANGUAGE
11880: @itemx LC_COLLATE
11881: @itemx LC_NUMERIC
11882: @itemx LC_MESSAGES
11883: @evindex LANG
11884: @evindex LC_ALL
11885: @evindex LC_TIME
11886: @evindex LC_CTYPE
11887: @evindex LANGUAGE
11888: @evindex LC_COLLATE
11889: @evindex LC_NUMERIC
11890: @evindex LC_MESSAGES
11891: 
11892: @c These must not be set unconditionally because not all systems understand
11893: @c e.g. @samp{LANG=C} (notably SCO).  Fixing @env{LC_MESSAGES} prevents
11894: @c Solaris @command{sh} from translating var values in @code{set}!  Non-C
11895: @c @env{LC_CTYPE} values break the ctype check.  Fixing @env{LC_COLLATE}
11896: @c makes scripts more portable in some cases.  For example, it causes the
11897: @c regular expression @samp{[a-z]} to match only lower-case letters on
11898: @c @sc{ascii} platforms.  However, @samp{[a-z]} does not work in general
11899: @c even when @env{LC_COLLATE} is fixed; for example, it does not work for
11900: @c @sc{ebcdic} platforms.  For maximum portability, you should use regular
11901: @c expressions like @samp{[abcdefghijklmnopqrstuvwxyz]} that list
11902: @c characters explicitly instead of relying on ranges.
11903: @c 
11904: 全てのシステムが,例えば@samp{LANG=C}を理解できるわけではない(特にSCO)の
11905: で,無条件にこれらを設定してはいけません.@env{LC_MESSAGES}を修正するこ
11906: とで,Solaris @command{sh}が@code{set}内の変数値を変換することを妨げます!
11907: Cではない@env{LC_CTYPE}の値で,ctypeの調査は駄目になります.
11908: @env{LC_COLLATE}を優勢することで,シェルの移植性がより高くなる場合もあり
11909: ます.例えば,正規表現の@samp{[a-z]}が@sc{ascii}プラットフォームの小文字
11910: のみに一致するようになります.しかし,@env{LC_COLLATE}を修正されたときで
11911: も,@samp{[a-z]}は一般的に動作しません.例えば,@sc{ebcdic}プラットフォー
11912: ムでは,それが動作しません.移植性を最大にするために,範囲に依存する代わ
11913: りに,明示的に文字をリストアップする@samp{[abcdefghijklmnopqrstuvwxyz]} 
11914: のような正規表現を使用すべきです.
11915: 
11916: @c @emph{If} one of these variables is set, you should try to unset it,
11917: @c using @samp{C} as a fall back value. see @ref{Limitations of Builtins},
11918: @c builtin @command{unset}, for more details.
11919: @c 
11920: これらの変数の一つが設定されている@emph{場合},代替値として@samp{C}を使
11921: 用することで,それをunsetするよう試みるべきです.詳細は,
11922: @ref{Limitations of Builtins}の組み込み@command{unset}を参照してください.
11923: 
11924: @item NULLCMD
11925: @evindex NULLCMD
11926: @c When executing the command @samp{>foo}, @command{zsh} executes
11927: @c @samp{$NULLCMD >foo}.  The Bourne shell considers @code{NULLCMD} is
11928: @c @samp{:}, while @command{zsh}, even in Bourne shell compatibility mode,
11929: @c sets @code{NULLCMD} to @samp{cat}.  If you forgot to set @code{NULLCMD},
11930: @c your script might be suspended waiting for data on its standard input.
11931: @c 
11932: コマンド@samp{>foo}を実行しているとき,@command{zsh}は@samp{$NULLCMD
11933: >foo}を実行します.Bourneシェルは@code{NULLCMD}が@samp{:}だと考えますが,
11934: @command{zsh}はBourneシェル互換モードでも,@code{NULLCMD}を@samp{cat}に
11935: 設定します.@code{NULLCMD}の設定を忘れた場合,スクリプトは標準入力からの
11936: データ待ちのためサスペンド状態になるかもしれません.
11937: 
11938: @item status
11939: @evindex status
11940: @c This variable is an alias to @samp{$?} for @code{zsh} (at least 3.1.6),
11941: @c hence read-only.  Do not use it.
11942: @c 
11943: この変数は,@code{zsh}(少なくとも3.1.6)での@samp{$?}へのエイリアスで,そ
11944: のため読み出し専用になっています.使用しないでください.
11945: 
11946: @item PATH_SEPARATOR
11947: @evindex PATH_SEPARATOR
11948: @c On DJGPP systems, the @code{PATH_SEPARATOR} variable can be set to
11949: @c either @samp{:} or @samp{;} to control the path separator @command{bash}
11950: @c uses to set up certain environment variables (such as
11951: @c @code{PATH}). Since this only works inside bash, you want autoconf to
11952: @c detect the regular @sc{dos} path separator @samp{;}, so it can be safely
11953: @c substituted in files that may not support @samp{;} as path separator. So
11954: @c either unset this variable or set it to @samp{;}.
11955: @c 
11956: DJGPPシステムでは,@code{PATH_SEPARATOR}変数は,パス分離子を制御するため
11957: に@samp{:}または@samp{;}に設定されているはずで,@command{bash}は
11958: (@code{PATH}のような)特定の環境変数をセットアップするために使用します.
11959: これはbash内部でのみ動作するので,パス分離子として@samp{;}がサポートされ
11960: ていないファイル内で代入する方が安全です.そのため,この変数をunsetする
11961: か,@samp{;}に設定してください.
11962: 
11963: @item RANDOM
11964: @evindex RANDOM
11965: @c Many shells provide @code{RANDOM}, a variable that returns a different
11966: @c integer when used.  Most of the time, its value does not change when it
11967: @c is not used, but on @sc{irix 6.5} the value changes all the time.  This
11968: @c can be observed by using @command{set}.
11969: @c 
11970: @code{RANDOM}を提供するシェルも多くあり,その変数は使用するとき異なる整
11971: 数を返します.使用されていないとき,その値は変更さることはほとんどありま
11972: せんが,@sc{irix 6.5}では毎回値が変更されます.これは,@command{set}を使
11973: 用して監視すべきです.
11974: @end table
11975: 
11976: 
11977: @node Limitations of Builtins, Limitations of Usual Tools, Special Shell Variables, Portable Shell
11978: @section シェル組み込みの制限
11979: 
11980: @c No, no, we are serious: some shells do have limitations! :)
11981: @c 
11982: だめだよ全く,我々は本気なのに.制限のあるシェルもあるんです! :)
11983: 
11984: @c You should always keep in mind that any built-in or command may support
11985: @c options, and therefore have a very different behavior with arguments
11986: @c starting with a dash.  For instance, the innocent @samp{echo "$word"}
11987: @c can give unexpected results when @code{word} starts with a dash.  It is
11988: @c often possible to avoid this problem using @samp{echo "x$word"}, taking
11989: @c the @samp{x} into account later in the pipe.
11990: @c 
11991: 全ての組み込みコマンドやコマンドは,オプションをサポートし,そのため,ダッ
11992: シュで始まる引数を用いると,非常に異なる動作をすることを覚えておくべきで
11993: す.例えば罪の無い@samp{echo "$word"}でも,@code{word}がダッシュで始まる
11994: ときは予期しない結果となるはずです.この問題は,パイプでは@samp{x}を後で
11995: 評価するように,@samp{echo "x$word"}を使用することで避けることが可能です.
11996: 
11997: @table @asis
11998: @item @command{!}
11999: @cindex @command{!}
12000: @c You can't use @command{!}, you'll have to rewrite your code.
12001: @c 
12002: @command{!}は使用できず,コードを書き換える必要があります.
12003: 
12004: @item @command{break}
12005: @c ------------------
12006: @cindex @command{break}
12007: @c The use of @samp{break 2}, etcetera, is safe.
12008: @c 
12009: @samp{break 2}の使用などは安全です.
12010: 
12011: @item @command{case}
12012: @c -----------------
12013: @cindex @command{case}
12014: @c You don't need to quote the argument; no splitting is performed.
12015: @c 
12016: 引数を引用符で囲む必要はありません.分離は実行されません.
12017: 
12018: @c You don't need the final @samp{;;}, but you should use it.
12019: @c 
12020: 最後の@samp{;;}は不要ですが,使用した方が良いでしょう.
12021: 
12022: @c Because of a bug in its @code{fnmatch}, @command{bash} fails to properly
12023: @c handle backslashes in character classes:
12024: @c 
12025: @code{fnmatch}のバグのため,@command{bash}はバックススラッシュを文字クラ
12026: スとして正しく処理することに失敗します.
12027: 
12028: @example
12029: bash-2.02$ case /tmp in [/\\]*) echo OK;; esac
12030: bash-2.02$
12031: @end example
12032: 
12033: @noindent
12034: @c This is extremely unfortunate, since you are likely to use this code to
12035: @c handle @sc{unix} or @sc{ms-dos} absolute paths.  To work around this
12036: @c bug, always put the backslash first:
12037: @c 
12038: このコードを@sc{unix}や@sc{ms-dos}の絶対パスとして使用したいので,非常に
12039: 残念なことになります.このバグを回避するために,常にバックスラッシュを最
12040: 初に書いてください.
12041: 
12042: @example
12043: bash-2.02$ case '\TMP' in [\\/]*) echo OK;; esac
12044: OK
12045: bash-2.02$ case /tmp in [\\/]*) echo OK;; esac
12046: OK
12047: @end example
12048: 
12049: @item @command{echo}
12050: @c -----------------
12051: @cindex @command{echo}
12052: @c The simple @code{echo} is probably the most surprising source of
12053: @c portability troubles.  It is not possible to use @samp{echo} portably
12054: @c unless both options and escape sequences are omitted.  New applications
12055: @c which are not aiming at portability should use @samp{printf} instead of
12056: @c @samp{echo}.
12057: @c 
12058: 単純な@code{echo}ですが,移植性の問題の根源として最も驚くべきものかもし
12059: れません.移植性の高い@samp{echo}を使用することは,オプションとエスケー
12060: プシーケンスを削除しない限り不可能です.移植性を目標とする新しいアプリケー
12061: ションでは,@samp{echo}の代わりに@samp{printf}を使用すべきです.
12062: 
12063: @c Don't expect any option.  @xref{Preset Output Variables}, @code{ECHO_N}
12064: @c etc. for a means to simulate @option{-c}.
12065: @c 
12066: オプションを期待しないでください.@code{ECHO_N}などの,@option{-c}をシミュ
12067: レーションする方法は,@xref{Preset Output Variables}.
12068: 
12069: @c Do not use backslashes in the arguments, as there is no consensus on
12070: @c their handling.  On @samp{echo '\n' | wc -l}, the @command{sh} of
12071: @c Digital Unix 4.0, @sc{mips risc/os} 4.52, answer 2, but the Solaris'
12072: @c @command{sh}, Bash and Zsh (in @command{sh} emulation mode) report 1.
12073: @c Please note that the problem is truly @command{echo}: all the shells
12074: @c understand @samp{'\n'} as the string composed of a backslash and an
12075: @c @samp{n}.
12076: @c 
12077: 引数へのバックスラッシュは,処理について同意がとれていないので使用しない
12078: でください.@samp{echo '\n' | wc -l}を用いれば,Digital Unix 4.0と
12079: @sc{mips risc/os} 4.52の@command{sh}では答えは2になりますが,Solarisの
12080: @command{sh},Bash,そしてZsh(の@command{sh}エミュレーションモード)では
12081: 答えは1になります.問題が本当に@command{echo}にあることに注意してくださ
12082: い.全てのシェルは,@samp{'\n'}をバックスラッシュと@samp{n}の組み合わせ
12083: であると理解します.
12084: 
12085: @c Because of these problems, do not pass a string containing arbitrary
12086: @c characters to @command{echo}.  For example, @samp{echo "$foo"} is safe
12087: @c if you know that @var{foo}'s value cannot contain backslashes and cannot
12088: @c start with @samp{-}, but otherwise you should use a here-document like
12089: @c this:
12090: @c 
12091: これらの問題のため,不定の文字を含む文字列を@command{echo}に渡さないでく
12092: ださい.例えば,@var{foo}の値がバックスラッシュを含んでおらず,@samp{-} 
12093: で始まらないことを知っている場合,@samp{echo "$foo"}は安全ですが,それ以
12094: 外では以下のようなヒアドキュメントを使用すべきではありません.
12095: 
12096: @example
12097: cat <<EOF
12098: $foo
12099: EOF
12100: @end example
12101: 
12102: 
12103: @item @command{exit}
12104: @c -----------------
12105: @cindex @command{exit}
12106: @c The default value of @command{exit} is supposed to be @code{$?};
12107: @c unfortunately, some shells, such as the DJGPP port of Bash 2.04, just
12108: @c perform @samp{exit 0}.
12109: @c 
12110: @command{exit}のデフォルト値は@code{$?}を想定しています.残念ながらBash
12111: 2.04を移植したDJGPPのように,シェルによっては@samp{exit 0}を実行します.
12112: 
12113: @example
12114: bash-2.04$ foo=`exit 1` || echo fail
12115: fail
12116: bash-2.04$ foo=`(exit 1)` || echo fail
12117: fail
12118: bash-2.04$ foo=`(exit 1); exit` || echo fail
12119: bash-2.04$
12120: @end example
12121: 
12122: @c Using @samp{exit $?} restores the expected behavior.
12123: @c 
12124: @samp{exit $?}を使用すると期待される動作に復帰します.
12125: 
12126: @c Some shell scripts, such as those generated by @command{autoconf}, use a
12127: @c trap to clean up before exiting.  If the last shell command exited with
12128: @c nonzero status, the trap also exits with nonzero status so that the
12129: @c invoker can tell that an error occurred.
12130: @c 
12131: @command{autoconf}が生成するようなシェルスクリプトなどには,以前の終了状
12132: 態をクリーンアップする仕掛けを使用しているものもあります.シェルの最後の
12133: コマンドがゼロではないステータスで終了した場合も,呼び出し側がエラーの発
12134: 生を報告できるように,ゼロでないステータスで終了する仕掛けがあります.
12135: 
12136: @c Unfortunately, in some shells, such as Solaris 8 @command{sh}, an exit
12137: @c trap ignores the @code{exit} command's status.  In these shells, a trap
12138: @c cannot determine whether it was invoked by plain @code{exit} or by
12139: @c @code{exit 1}.  Instead of calling @code{exit} directly, use the
12140: @c @code{AC_MSG_ERROR} macro that has a workaround for this problem.
12141: @c 
12142: 残念ながら,Solaris 8 @command{sh}のように,シェルによっては@code{exit} 
12143: コマンドのステータスを無視する仕掛けが存在するものもあります.これらのシェ
12144: ルでは,その仕掛けで呼び出しがプレーンの@code{exit}によるものなのか,
12145: @code{exit 1}によるものなのか決定できません.@code{exit}を直接呼び出す代
12146: わりに,この問題を回避するために@code{AC_MSG_ERROR}を呼び出してください.
12147: 
12148: @item @command{export}
12149: @c -------------------
12150: @cindex @command{export}
12151: @c The builtin @command{export} dubs @dfn{environment variable} a shell
12152: @c variable.  Each update of exported variables corresponds to an update of
12153: @c the environment variables.  Conversely, each environment variable
12154: @c received by the shell when it is launched should be imported as a shell
12155: @c variable marked as exported.
12156: @c 
12157: 組み込みの@command{export}は,@dfn{環境変数}をシェル変数にダビングします.
12158: 変数がエクスポートされて更新される度に,環境変数も更新されます.反対に,
12159: 環境変数はがシェルから読み出される度に,開始時にエクスポートされたものと
12160: して印のついたシェル変数をインポートするべきです.
12161: 
12162: @c Alas, many shells, such as Solaris 2.5, IRIX 6.3, IRIX 5.2, AIX 4.1.5
12163: @c and DU 4.0, forget to @command{export} the environment variables they
12164: @c receive.  As a result, two variables are coexisting: the environment
12165: @c variable and the shell variable.  The following code demonstrates this
12166: @c failure:
12167: @c 
12168: ああ,Solaris 2.5,IRIX 6.3,IRIX 5.2,AIX 4.1.5,そしてDU 4.0のような多
12169: くのシェルは,受けとった環境変数を@command{export}することを忘れています.
12170: 結果として,2つの変数は共存しています.環境変数とシェル変数の2つです.以
12171: 下のコードは,この失敗を説明するものです.
12172: 
12173: @example
12174: #! /bin/sh
12175: echo $FOO
12176: FOO=bar
12177: echo $FOO
12178: exec /bin/sh $0
12179: @end example
12180: 
12181: @noindent
12182: @c when run with @samp{FOO=foo} in the environment, these shells will print
12183: @c alternately @samp{foo} and @samp{bar}, although it should only print
12184: @c @samp{foo} and then a sequence of @samp{bar}s.
12185: @c 
12186: 環境変数で@samp{FOO=foo}として実行した場合,これらのシェルはそれぞれ
12187: @samp{foo}と@samp{bar}を交互に出力しますが,@samp{foo}を出力した後に,続
12188: けて@samp{bar}を出力します.
12189: 
12190: @c Therefore you should @command{export} again each environment variable
12191: @c that you update.
12192: @c 
12193: このため,それぞれ更新した環境変数を再び@command{export}すべきです.
12194: 
12195: 
12196: @item @command{false}
12197: @c ------------------
12198: @cindex @command{false}
12199: @c Don't expect @command{false} to exit with status 1: in the native Bourne
12200: @c shell of Solaris 8, it exits with status 255.
12201: @c 
12202: @command{false}がステータス1で終了することを期待してはいけません.
12203: Solaris 8のネイティブなBourneシェルは,ステータス255で終了します.
12204: 
12205: 
12206: @item @command{for}
12207: @c ----------------
12208: @cindex @command{for}
12209: @c To loop over positional arguments, use:
12210: @c 
12211: 位置の引数までループするため,以下のように使用したとします.
12212: 
12213: @example
12214: for arg
12215: do
12216:   echo "$arg"
12217: done
12218: @end example
12219: 
12220: @noindent
12221: @c You may @emph{not} leave the @code{do} on the same line as @code{for},
12222: @c since some shells improperly grok:
12223: @c 
12224: シェルによっては,間違ってgrokするので,@code{for}と同じ行に@code{do}を
12225: おいては@emph{いけません}.
12226: 
12227: @example
12228: for arg; do
12229:   echo "$arg"
12230: done
12231: @end example
12232: 
12233: @c If you want to explicitly refer to the positional arguments, given the
12234: @c @samp{$@@} bug (@pxref{Shell Substitutions}), use:
12235: @c 
12236: 明示的に位置の引数を参照したい場合,@samp{$@@}のバグがあるので,以下のよ
12237: うに使用してください.
12238: 
12239: @example
12240: for arg in $@{1+"$@@"@}; do
12241:   echo "$arg"
12242: done
12243: @end example
12244: 
12245: @item @command{if}
12246: @c ---------------
12247: @cindex @command{if}
12248: @c Using @samp{!} is not portable.  Instead of:
12249: @c 
12250: @samp{!}の使用は移植性がありません.以下のように書く変わりに,
12251: 
12252: @example
12253: if ! cmp -s file file.new; then
12254:   mv file.new file
12255: fi
12256: @end example
12257: 
12258: @noindent
12259: @c use:
12260: @c 
12261: 以下を使用してください.
12262: 
12263: @example
12264: if cmp -s file file.new; then :; else
12265:   mv file.new file
12266: fi
12267: @end example
12268: 
12269: @c There are shells that do not reset the exit status from an @command{if}:
12270: @c 
12271: @command{if}の終了ステータスをリセットしないシェルもあります.
12272: 
12273: @example
12274: $ if (exit 42); then true; fi; echo $?
12275: 42
12276: @end example
12277: 
12278: @noindent
12279: @c whereas a proper shell should have printed @samp{0}.  This is especially
12280: @c bad in Makefiles since it produces false failures.  This is why properly
12281: @c written Makefiles, such as Automake's, have such hairy constructs:
12282: @c 
12283: そこでは,適切なシェルなら@samp{0}を出力すべきです.これは,異常終了とな
12284: るので,Makefilesでは特に問題です.これが,Automakeが生成するような適切
12285: に書かれているMakefileがごちゃごちゃした構成になっている理由です.
12286: 
12287: @example
12288: if test -f "$file"; then
12289:   install "$file" "$dest"
12290: else
12291:   :
12292: fi
12293: @end example
12294: 
12295: 
12296: @item @command{set}
12297: @c ----------------
12298: @cindex @command{set}
12299: @c This builtin faces the usual problem with arguments starting with a
12300: @c dash.  Modern shells such as Bash or Zsh understand @option{--} to specify
12301: @c the end of the options (any argument after @option{--} is a parameters,
12302: @c even @samp{-x} for instance), but most shells simply stop the option
12303: @c processing as soon as a non-option argument is found.  Therefore, use
12304: @c @samp{dummy} or simply @samp{x} to end the option processing, and use
12305: @c @command{shift} to pop it out:
12306: @c 
12307: この組み込みコマンドは,一般的なダッシュで始まる引数の問題に直面します.
12308: BashやZshのような現在のシェルでは,オプションの終りを指定する
12309: @option{--}(@option{--}以降の全ての引数は,例えば@samp{-x}であってもパラ
12310: メータです)を理解しますが,ほとんどのシェルは,オプションではない引数が
12311: 見つかるとすぐにオプションの処理を単純に停止します.このため,オプション
12312: の処理を終了するために@samp{dummy}や単純に@samp{x}を使用し,それを取り出
12313: すために@command{shift}を使用してください.
12314: 
12315: @example
12316: set x $my_list; shift
12317: @end example
12318: 
12319: @item @command{shift}
12320: @c ------------------
12321: @cindex @command{shift}
12322: @c Not only is @command{shift}ing a bad idea when there is nothing left to
12323: @c shift, but in addition it is not portable: the shell of @sc{mips
12324: @c risc/os} 4.52 refuses to do it.
12325: @c 
12326: @command{shift}するものが無いとき,@command{shift}を使用することは悪い考
12327: え方であるだけでなく,移植性が無くなってしまいことも追加されてしまいます.
12328: @sc{mips risc/os} 4.52のシェルは,それを廃棄してしまいます.
12329: 
12330: @item @command{test}
12331: @c -----------------
12332: @cindex @command{test}
12333: @c The @code{test} program is the way to perform many file and string
12334: @c tests.  It is often invoked by the alternate name @samp{[}, but using
12335: @c that name in Autoconf code is asking for trouble since it is an M4 quote
12336: @c character.
12337: @c 
12338: @code{test}プログラムは,多くのファイルと文字列のテストを実行する方法で
12339: す.それは別名の@samp{[}で呼び出されることも多いのですが,M4の引用符文字
12340: という問題から,Autoconfのコードではその名前を使用することが要求されてい
12341: ます.
12342: 
12343: @c If you need to make multiple checks using @code{test}, combine them with
12344: @c the shell operators @samp{&&} and @samp{||} instead of using the
12345: @c @code{test} operators @option{-a} and @option{-o}.  On System V, the
12346: @c precedence of @option{-a} and @option{-o} is wrong relative to the unary
12347: @c operators; consequently, @sc{posix} does not specify them, so using them
12348: @c is nonportable.  If you combine @samp{&&} and @samp{||} in the same
12349: @c statement, keep in mind that they have equal precedence.
12350: @c 
12351: @code{test}を使用して複数の調査を行う必要がある場合,@code{test}の演算子
12352: の@samp{-a}と@samp{-o}の代わりに,シェル演算子の@samp{&&}と@samp{||}で組
12353: み合わせてください.System Vでは,@samp{-a}と@samp{-o}の優先順位は,単項
12354: 演算子とは間違った関係になっています.従って,@sc{posix}はそれらを指定し
12355: ないので,それを使用すると移植性が無くなります.同じ文で@samp{&&}と
12356: @samp{||}を組み合わせる場合,同じ優先順位があることを覚えておいてくださ
12357: い.
12358: 
12359: @c You may use @samp{!} with @command{test}, but not with @command{if}:
12360: @c @samp{test ! -r foo || exit 1}.
12361: @c 
12362: @command{test}で@samp{!}を使用することはできますが,@command{if}ではでき
12363: ません.@samp{test ! -r foo || exit 1}.
12364: 
12365: 
12366: @item @command{test} (files)
12367: @c -------------------------
12368: @c To enable @code{configure} scripts to support cross-compilation, they
12369: @c shouldn't do anything that tests features of the build system instead of
12370: @c the host system.  But occasionally you may find it necessary to check
12371: @c whether some arbitrary file exists.  To do so, use @samp{test -f} or
12372: @c @samp{test -r}.  Do not use @samp{test -x}, because @sc{4.3bsd} does not
12373: @c have it.  Do not use @samp{test -e} either, because Solaris 2.5 does not
12374: @c have it.
12375: @c 
12376: @code{configure}スクリプトでクロスコンパイルのサポートを可能にするため,
12377: ホストシステムの代わりに,ビルドシステムの特徴のテストは,何もすべきでは
12378: ありません.しかし,任意のファイルの存在を調査する必要があることが判明す
12379: るかもしれません.そうするために@samp{test -f}や@samp{test -r}を使用して
12380: ください.4.3BSDには@samp{test -x}が無いのでを使用しないでください.また,
12381: Solaris 2.5には@samp{test -e}が無いので使用しないでください.
12382: 
12383: 
12384: @item @command{test} (strings)
12385: @c ---------------------------
12386: @c Avoid @samp{test "@var{string}"}, in particular if @var{string} might
12387: @c start with a dash, since @code{test} might interpret its argument as an
12388: @c option (e.g., @samp{@var{string} = "-n"}).
12389: @c 
12390: @code{test}は引数をオプションとして解釈するので(例えば,
12391: @samp{@var{string} = "-n"}),特に@var{string}がダッシュで始まる場合,
12392: @samp{test "@var{string}"}を避けてください.
12393: 
12394: @c Contrary to a common belief, @samp{test -n @var{string}} and @samp{test
12395: @c -z @var{string}} @strong{are} portable, nevertheless many shells (such
12396: @c as Solaris 2.5, AIX 3.2, UNICOS 10.0.0.6, Digital Unix 4 etc.) have
12397: @c bizarre precedence and may be confused if @var{string} looks like an
12398: @c operator:
12399: @c 
12400: 一般に信じられていることとは反対に,@samp{test -n @var{string}}と
12401: @samp{test -z @var{string}}は,移植性が@strong{あります}が,それにもかか
12402: わらず,(Solaris 2.5,AIX 3.2,UNICOS 10.0.0.6,Digital Unix 4等の)多く
12403: のシェルには信じられない優先順位があり,@var{string}がオペレータのように
12404: 見える場合は混乱するかもしれません.
12405: 
12406: @example
12407: $ test -n =
12408: test: argument expected
12409: @end example
12410: 
12411: @c If there are risks, use @samp{test "x@var{string}" = x} or @samp{test
12412: @c "x@var{string}" != x} instead.
12413: @c 
12414: 危険はありますが,代わりに@samp{test "x@var{string}" = x}や@samp{test
12415: "x@var{string}" != x}を使用してください.
12416: 
12417: @c It is frequent to find variations of the following idiom:
12418: @c 
12419: 以下のような慣用句はよく見かけます.
12420: 
12421: @example
12422: test -n "`echo $ac_feature | sed 's/[-a-zA-Z0-9_]//g'`" &&
12423:   @var{action}
12424: @end example
12425: 
12426: @noindent
12427: @c to take an action when a token matches a given pattern.  Such constructs
12428: @c should always be avoided by using:
12429: @c 
12430: 与えられているパターンに一致するとき動作します.そのような構文は,常に使
12431: 用を避けるべきです.
12432: 
12433: @example
12434: echo "$ac_feature" | grep '[^-a-zA-Z0-9_]' >/dev/null 2>&1 &&
12435:   @var{action}
12436: @end example
12437: 
12438: @noindent
12439: @c Use @code{case} where possible since it is faster, being a shell builtin:
12440: @c 
12441: シェルの組み込みコマンドなのでより速くなっているため,可能な場所では
12442: @code{case}を使用してください.
12443: 
12444: @example
12445: case $ac_feature in
12446:   *[!-a-zA-Z0-9_]*) @var{action};;
12447: esac
12448: @end example
12449: 
12450: @c Alas, negated character classes are probably not portable, although no
12451: @c shell is known to not support the @sc{posix.2} syntax @samp{[!@dots{}]}
12452: @c (when in interactive mode, @command{zsh} is confused by the
12453: @c @samp{[!@dots{}]} syntax and looks for an event in its history because of
12454: @c @samp{!}).  Many shells do not support the alternative syntax
12455: @c @samp{[^@dots{}]} (Solaris, Digital Unix, etc.).
12456: @c 
12457: ああ,@sc{posix.2}の構文@samp{[!@dots{}]}をサポートしていないシェルは知
12458: りませんが,文字クラスの否定は移植性が無いかもしれません( 対話的モードで
12459: は,@command{zsh}は@samp{[!@dots{}]}の構文で混乱し,@samp{!}のため,ヒス
12460: トリ内のイベントを探します).多くのシェルは,構文@samp{[^@dots{}]}の代替
12461: 物をサポートしていません(Solaris,Digital Unix等).
12462: 
12463: @c One solution can be:
12464: @c 
12465: 以下は解決方法の一つです.
12466: 
12467: @example
12468: expr "$ac_feature" : '.*[^-a-zA-Z0-9_]' >/dev/null &&
12469:   @var{action}
12470: @end example
12471: 
12472: @noindent
12473: @c or better yet
12474: @c 
12475: 以下の方が良いかもしれません.
12476: 
12477: @example
12478: expr "x$ac_feature" : '.*[^-a-zA-Z0-9_]' >/dev/null &&
12479:   @var{action}
12480: @end example
12481: 
12482: @c @samp{expr "X@var{foo}" : "X@var{bar}"} is more robust than @samp{echo
12483: @c "X@var{foo}" | grep "^X@var{bar}"}, because it avoids problems when
12484: @c @samp{@var{foo}} contains backslashes.
12485: @c 
12486: @samp{@var{foo}}がバックスラッシュを含んでいるとき問題を回避するので,
12487: @samp{expr "X@var{foo}" : "X@var{bar}"}は,@samp{echo "X@var{foo}" |
12488: grep "^X@var{bar}"}より堅牢です.
12489: 
12490: 
12491: @item @command{trap}
12492: @c -----------------
12493: @cindex @command{trap}
12494: @c It is safe to trap at least the signals 1, 2, 13 and 15.  You can also
12495: @c trap 0, i.e., have the @command{trap} run when the script ends (either via an
12496: @c explicit @command{exit}, or the end of the script).
12497: @c 
12498: 少なくとも,シグナルの1,2,13,そして15をトラップすることは安全です.ま
12499: た,0のトラップも可能で,すなわち,スクリプトが終るとき(明示的な
12500: @command{exit}やスクリプトの終り)に@command{trap}を実行するということで
12501: す.
12502: 
12503: @c Although @sc{posix} is not absolutely clear on this point, it is widely
12504: @c admitted that when entering the trap @samp{$?} should be set to the exit
12505: @c status of the last command run before the trap.  The ambiguity can be
12506: @c summarized as: ``when the trap is launched by an @command{exit}, what is
12507: @c the @emph{last} command run: that before @command{exit}, or
12508: @c @command{exit} itself?''
12509: @c 
12510: @sc{posix}では,この点は絶対的に明確ではありませんが,@samp{$?}をトラッ
12511: プするとき,トラップの前の最後に実行されたコマンドの終了ステータスが設定
12512: されるべきだということは,広く認められています.曖昧な部分は以下のように
12513: 要約可能です.``トラップが@command{exit}で開始されるとき,実行された
12514: @emph{最後の}コマンドは何でしょう?@command{exit}の直前ですか?それとも
12515: @command{exit}自身ですか?''
12516: 
12517: @c Bash considers @command{exit} to be the last command, while Zsh and
12518: @c Solaris 8 @command{sh} consider that when the trap is run it is
12519: @c @emph{still} in the @command{exit}, hence it is the previous exit status
12520: @c that the trap receives:
12521: @c 
12522: Bashは@command{exit}を最後のコマンドと考えますが,ZshとSolaris 8
12523: @command{sh}は,トラップが実行されたとき@command{exit}の処理@emph{中}な
12524: ので,トラップを受信する前の終了ステータスだと考えられます.
12525: 
12526: @example
12527: $ cat trap.sh
12528: trap 'echo $?' 0
12529: (exit 42); exit 0
12530: $ zsh trap.sh
12531: 42
12532: $ bash trap.sh
12533: 0
12534: @end example
12535: 
12536: @c The portable solution is then simple: when you want to @samp{exit 42},
12537: @c run @samp{(exit 42); exit 42}, the first @command{exit} being used to
12538: @c set the exit status to 42 for Zsh, and the second to trigger the trap
12539: @c and pass 42 as exit status for Bash.
12540: @c 
12541: 移植性の解決方法は簡単です.@samp{exit 42}にしたいとき,@samp{(exit 42);
12542: exit 42}を実行し,最初の@command{exit}はZshに対する42の終了ステータスを
12543: 設定するために使用され,2番目は,トラップを誘発し,Bashに対して終了ステー
12544: タスとしての42を渡すためです.
12545: 
12546: @c The shell in FreeBSD 4.0 has the following bug: @samp{$?} is reset to 0
12547: @c by empty lines if the code is inside @command{trap}.
12548: @c 
12549: FreeBSD 4.0のシェルには,以下のバグがあります.コードが内部
12550: @command{trap}の場合,空行で@samp{$?}が0にリセットされます.
12551: 
12552: @example
12553: $ trap 'false
12554: 
12555: echo $?' 0
12556: $ exit
12557: 0
12558: @end example
12559: 
12560: @noindent
12561: @c Fortunately, this bug only affects @command{trap}.
12562: @c 
12563: 幸運にもこのバグは@command{trap}のみに影響します.
12564: 
12565: @item @command{true}
12566: @c -----------------
12567: @cindex @command{true}
12568: @cindex @command{:}
12569: @c Don't worry: as far as we know @command{true} is portable.
12570: @c Nevertheless, it's not always a builtin (e.g., Bash 1.x), and the
12571: @c portable shell community tends to prefer using @command{:}.  This has a
12572: @c funny side effect: when asked whether @command{false} is more portable
12573: @c than @command{true} Alexandre Oliva answered:
12574: @c 
12575: 心配しないでください.我々が知っている限り@command{true}には移植性があり
12576: ます.それにもかかわらず,常に組み込みコマンドというわけではなく(例えば
12577: Bash 1.x),移植性の高いシェルのコミュニティは,@command{:}の使用を好みが
12578: ちです.これには副作用があります.@command{false}が@command{true}より移
12579: 植性が高いかどうか尋ねてみたときのAlexandre Olivaの回答です.
12580: 
12581: @quotation
12582: @c In a sense, yes, because if it doesn't exist, the shell will produce an
12583: @c exit status of failure, which is correct for @command{false}, but not
12584: @c for @command{true}.
12585: @c 
12586: それらが存在しない場合,シェルは,@command{false}に対しては正しく,
12587: @command{true}に対しては正しくない,異常終了のステータスを生成するので,
12588: ある意味ではそのとおりです.
12589: @end quotation
12590: 
12591: 
12592: @item @command{unset}
12593: @c ------------------
12594: @cindex @command{unset}
12595: @c You cannot assume the support of @command{unset}, nevertheless, because
12596: @c it is extremely useful to disable embarrassing variables such as
12597: @c @code{CDPATH} or @code{LANG}, you can test for its existence and use
12598: @c it @emph{provided} you give a neutralizing value when @command{unset} is
12599: @c not supported:
12600: @c 
12601: @command{unset}のサポートを仮定することはできませんが,@code{CDPATH}や
12602: @code{LANG}のような邪魔な変数を利用不可能にすることは非常に役立つので,
12603: 存在をテストし,@emph{提供されていれば}それを使用し,@command{unset}がサ
12604: ポートされていないときは,無効にする値を与えてください.
12605: 
12606: @example
12607: if (unset FOO) >/dev/null 2>&1; then
12608:   unset=unset
12609: else
12610:   unset=false
12611: fi
12612: $unset CDPATH || CDPATH=:
12613: @end example
12614: 
12615: @c @xref{Special Shell Variables}, for some neutralizing values. Also, see
12616: @c @ref{Limitations of Builtins}, documentation of @command{export}, for
12617: @c the case of environment variables.
12618: @c 
12619: 無効にする値については,@xref{Special Shell Variables}. また,環境変数の
12620: caseについては@command{export}のドキュメント@ref{Limitations of
12621: Builtins}も参照してください.
12622: @end table
12623: 
12624: 
12625: @node Limitations of Usual Tools, Limitations of Make, Limitations of Builtins, Portable Shell
12626: @section 通常のツールの制限
12627: 
12628: @c The small set of tools you can expect to find on any machine can still
12629: @c include some limitations you should be aware of.
12630: @c 
12631: あらゆるマシンで見つかることが期待できる小さなツールセットには,気付いて
12632: おくべき制限がいくつか含まれているはずです.
12633: 
12634: @table @asis
12635: @item @command{awk}
12636: @c ----------------
12637: @cindex @command{awk}
12638: @c Don't leave white spaces before the parentheses in user functions calls,
12639: @c @sc{gnu} awk will reject it:
12640: @c 
12641: ユーザ関数呼び出しで,カッコの前に空白を残してはならず,@sc{gnu} awkはそ
12642: れを拒絶します.
12643: 
12644: @example
12645: $ gawk 'function die () @{ print "Aaaaarg!"  @}
12646:         BEGIN @{ die () @}'
12647: gawk: cmd. line:2:         BEGIN @{ die () @}
12648: gawk: cmd. line:2:                      ^ parse error
12649: $ gawk 'function die () @{ print "Aaaaarg!"  @}
12650:         BEGIN @{ die() @}'
12651: Aaaaarg!
12652: @end example
12653: 
12654: @c If you want your program to be deterministic, don't depend on @code{for}
12655: @c on arrays:
12656: @c 
12657: プログラムを決定的にしたい場合,配列上の@code{for}に依存しないでください.
12658: 
12659: @example
12660: $ cat for.awk
12661: END @{
12662:   arr["foo"] = 1
12663:   arr["bar"] = 1
12664:   for (i in arr)
12665:     print i
12666: @}
12667: $ gawk -f for.awk </dev/null
12668: foo
12669: bar
12670: $ nawk -f for.awk </dev/null
12671: bar
12672: foo
12673: @end example
12674: 
12675: @c Some AWK, such as HPUX 11.0's native one, have regex engines fragile to
12676: @c inner anchors:
12677: @c 
12678: HPUX 11.0のネイティブのAWKのように,内部アンカーに調子が悪いregexエンジ
12679: ンがあるものもあります.
12680: 
12681: @example
12682: $ echo xfoo | $AWK '/foo|^bar/ @{ print @}'
12683: $ echo bar | $AWK '/foo|^bar/ @{ print @}'
12684: bar
12685: $ echo xfoo | $AWK '/^bar|foo/ @{ print @}'
12686: xfoo
12687: $ echo bar | $AWK '/^bar|foo/ @{ print @}'
12688: bar
12689: @end example
12690: 
12691: @noindent
12692: @c Either do not depend on such patterns (i.e., use @samp{/^(.*foo|bar)/},
12693: @c or use a simple test to reject such AWK.
12694: @c 
12695: そのようなパターンに依存したり(すなわち,@samp{/^(.*foo|bar)/}を使用する),
12696: そのようなAWKを拒絶する単純なテストを使用したりしないでください.
12697: 
12698: 
12699: @item @command{cat}
12700: @c ----------------
12701: @cindex @command{cat}
12702: @c Don't rely on any option.  The option @option{-v}, which displays
12703: @c non-printing characters, @emph{seems} portable, though.
12704: @c 
12705: オプションに依存しないようにしてください.しかし,表示不可能な文字を表示
12706: するオプション@option{-v}は,移植性が@emph{ありそうです}.
12707: 
12708: @item @command{cc}
12709: @c ---------------
12710: @c When a compilation such as @samp{cc foo.c -o foo} fails, some compilers
12711: @c (such as @sc{cds} on Reliant @sc{unix}) leave a @file{foo.o}.
12712: @c 
12713: @samp{cc foo.c -o foo}のようなコンパイルが失敗したとき,(Reliant
12714: @sc{unix}の@sc{cds}のように)@file{foo.o}を残すコンパイラもあります.
12715: 
12716: 
12717: @item @command{cmp}
12718: @c ----------------
12719: @cindex @command{cmp}
12720: @c @command{cmp} performs a raw data comparison of two files, while
12721: @c @command{diff} compares two text files.  Therefore, if you might compare
12722: @c DOS files, even if only checking whether two files are different, use
12723: @c @command{diff} to avoid spurious differences due to differences of
12724: @c newline encoding.
12725: @c 
12726: @command{cmp}は,2つのファイルの生のデータの比較を実行しますが,
12727: @command{diff}は2つのテキストファイルを比較します.そのため,DOSのファイ
12728: ルを比較する場合,2つのファイルが異なっている稼働かを調査するだけの場合
12729: でも改行のエンコードの違いで見せかけの差が発生することを避けるため,
12730: @command{diff}を使用してください.
12731: 
12732: 
12733: @item @command{cp}
12734: @c ---------------
12735: @cindex @command{cp}
12736: @c This is thanks to Ian.
12737: @c SunOS @command{cp} does not support @option{-f}, although its
12738: @c @command{mv} does.  It's possible to deduce why @command{mv} and
12739: @c @command{cp} are different with respect to @option{-f}.  @command{mv}
12740: @c prompts by default before overwriting a read-only file.  @command{cp}
12741: @c does not.  Therefore, @command{mv} requires a @option{-f} option, but
12742: @c @command{cp} does not.  @command{mv} and @command{cp} behave differently
12743: @c with respect to read-only files because the simplest form of
12744: @c @command{cp} cannot overwrite a read-only file, but the simplest form of
12745: @c @command{mv} can.  This is because @command{cp} opens the target for
12746: @c write access, whereas @command{mv} simply calls @code{link} (or, in
12747: @c newer systems, @code{rename}).
12748: @c 
12749: SunOS @command{cp}は@option{-f}をサポートしていませんが,その
12750: @command{mv}はサポートしています.@command{mv}と@command{cp}が
12751: @option{-f}に関して異なっている理由については由来が推測できます.
12752: @command{mv}はデフォルトで,読み込み専用のファイルを上書きする前にプロン
12753: プトを表示します.@command{cp}はそうではありません.そのため,
12754: @command{mv}には@option{-f}オプションが必要ですが,@command{cp}には不要
12755: です.@command{mv}と@command{cp}は,読み込み専用のファイルに対して,動作
12756: が異なり,その理由は,最も簡単な@command{cp}の形式では,読み込み専用のファ
12757: イルを上書きできませんが,最も簡単な@command{mv}形式では,それが可能だと
12758: いうことです.この理由は,@command{cp}はターゲットを書き込みアクセスで開
12759: くのに対し,@command{mv}は単純に@code{link}(または,新しいシステムでは
12760: @code{rename})を呼び出すためです.
12761: @c Ian said: ``I don't think -p or -r are portable''!!! How can you live
12762: @c without -r???
12763: 
12764: 
12765: @item @command{diff}
12766: @c -----------------
12767: @cindex @command{diff}
12768: @c Option @option{-u} is nonportable.
12769: @c 
12770: @option{-u}には移植性がありません,
12771: 
12772: @c Some implementations, such as Tru64's, fail when comparing to
12773: @c @file{/dev/null}.  Use an empty file instead.
12774: @c 
12775: Tru64のように,実装によっては@file{/dev/null}の比較で失敗するものもあり
12776: ます.その代わりに空のファイルを使用してください.
12777: 
12778: @item @command{dirname}
12779: @c --------------------
12780: @cindex @command{dirname}
12781: @c Not all hosts have @command{dirname}, but it is reasonably easy to
12782: @c emulate, e.g.:
12783: @c 
12784: 全てのホストに@command{dirname}があるわけではありませんが,エミュレート
12785: は妥当な程度に容易です.
12786: 
12787: @example
12788: dir=`expr "x$file" : 'x\(.*\)/[^/]*' \|
12789:           '.'      : '.'
12790: @end example
12791: 
12792: @noindent
12793: @c But there are a few subtilities, e.g., under UN*X, should @samp{//1}
12794: @c give @samp{/}?  Paul Eggert answers:
12795: @c 
12796: しかし,微妙なところもあり,例えばUN*Xでは@samp{//1}は@samp{/}になるので
12797: しょうか?以下はPaul Eggertの回答です.
12798: 
12799: @quotation
12800: @c No, under some older flavors of Unix, leading @samp{//} is a special
12801: @c path name: it refers to a ``super-root'' and is used to access other
12802: @c machines' files.  Leading @samp{///}, @samp{////}, etc. are equivalent
12803: @c to @samp{/}; but leading @samp{//} is special.  I think this tradition
12804: @c started with Apollo Domain/OS, an OS that is still in use on some older
12805: @c hosts.
12806: @c 
12807: 古いUnixライクのものではそうはならず,前置される@samp{//}は特殊なパス名
12808: になります.それは``スーパールート''を参照し,他のマシンのファイルをアク
12809: セスするために使用されます.前置される@samp{///},@samp{////}などは,
12810: @samp{/}と等価です.しかし,前置される@samp{//}は特殊です.この伝統的は
12811: Apollo Domain/OSで始まったと考えていて,古いホストではまだそのOSを使用し
12812: ています.
12813: 
12814: @c POSIX.2 allows but does not require the special treatment for @samp{//}.
12815: @c It says that the behavior of dirname on path names of the form
12816: @c @samp{//([^/]+/*)?}  is implementation defined.  In these cases, GNU
12817: @c @command{dirname} returns @samp{/}, but it's more portable to return
12818: @c @samp{//} as this works even on those older flavors of Unix.
12819: @c 
12820: POSIX.2では可能ですが,@samp{//}に対する特別扱いは要求されていません.そ
12821: こでは,形式@samp{//([^/]+/*)?}のパス名でのdirnameの動作は,実装で定義さ
12822: れると告げています.これらの場合,GNU @command{dirname}は@samp{/}を返し
12823: ますが,古いUnixライクのものでも動作するように@samp{//}を返した方が移植
12824: 性が高いでしょう.
12825: 
12826: @c I have heard rumors that this special treatment of @samp{//} may be
12827: @c dropped in future versions of POSIX, but for now it's still the
12828: @c standard.
12829: @c 
12830: この@samp{//}の特殊扱いは将来のPOSIXバージョンでなくなるかもしれないがと
12831: いう噂をきいていますが,今はまだ標準です.
12832: @end quotation
12833: 
12834: 
12835: @item @command{egrep}
12836: @c ------------------
12837: @cindex @command{egrep}
12838: @c The empty alternative is not portable, use @samp{?} instead. For
12839: @c instance with Digital Unix v5.0:
12840: @c 
12841: 空の選択肢は移植性が無く,代わりに@samp{?}を使用してください.例えば,
12842: Digital Unix v5.0では以下のようになります.
12843: 
12844: @example
12845: > printf "foo\n|foo\n" | egrep '^(|foo|bar)$'
12846: |foo
12847: > printf "bar\nbar|\n" | egrep '^(foo|bar|)$'
12848: bar|
12849: > printf "foo\nfoo|\n|bar\nbar\n" | egrep '^(foo||bar)$'
12850: foo
12851: |bar
12852: @end example
12853: 
12854: @c @command{egrep} also suffers the limitations of @command{grep}.
12855: @c 
12856: @command{egrep}も@command{grep}の制限で苦しむことになります.
12857: 
12858: 
12859: @item @command{expr}
12860: @c -----------------
12861: @cindex @command{expr}
12862: @c No @command{expr} keyword starts with @samp{x}, so use @samp{expr
12863: @c x"@var{word}" : 'x@var{regex}'} to keep @command{expr} from
12864: @c misinterpreting @var{word}.
12865: @c 
12866: @samp{x}で始まる@command{expr}キーワードはないので,@command{expr}が
12867: @var{word}を間違って解釈しないように,@samp{expr x"@var{word}" :
12868: 'x@var{regex}'}を使用してください.
12869: 
12870: @c Don't use @code{length}, @code{substr}, @code{match} and @code{index}.
12871: @c 
12872: @code{length},@code{substr},@code{match},そして@code{index}は使用しな
12873: いでください.
12874: 
12875: @item @command{expr} (@samp{|})
12876: @cindex @command{expr} (@samp{|})
12877: @c You can use @samp{|}.  Although @sc{posix} does require that @samp{expr
12878: @c ''} return the empty string, it does not specify the result when you
12879: @c @samp{|} together the empty string (or zero) with the empty string.  For
12880: @c example:
12881: @c 
12882: @samp{|}を使用することは可能です.@sc{posix}では,@samp{expr ''}が空の文
12883: 字列を返すことを必須としていませんが,空の文字列を用いて空の文字列(また
12884: はゼロ)とともに@samp{|}を用いたときの結果は安全ではありません.例えば以
12885: 下を考えます.
12886: 
12887: @example
12888: expr '' \| ''
12889: @end example
12890: 
12891: @c @sc{gnu}/Linux and @sc{posix.2-1992} return the empty string for this
12892: @c case, but traditional Unix returns @samp{0} (Solaris is one such
12893: @c example).  In the latest @sc{posix} draft, the specification has been
12894: @c changed to match traditional Unix's behavior (which is bizarre, but it's
12895: @c too late to fix this).  Please note that the same problem does arise
12896: @c when the empty string results from a computation, as in:
12897: @c 
12898: @sc{gnu}/Linuxと@sc{posix.2-1992}ではこの場合空の文字列を返しますが,伝
12899: 統的なUnixでは@samp{0}を返します(Solarisはそのような例の一つです).最近
12900: の@sc{posix}ドラフトでは,その指定は伝統的なUnixの動作に一致するよう変更
12901: されています(信じられないことですが,これを修正するには時すでに遅しです).
12902: 同じ問題が計算結果が空の文字列になる時にも,以下の状態では発生します.
12903: 
12904: @example
12905: expr bar : foo \| foo : bar
12906: @end example
12907: 
12908: @noindent
12909: @c Avoid this portability problem by avoiding the empty string.
12910: @c 
12911: 空の文字列を避けることで,この移植性の問題を避けてください.
12912: 
12913: @item @command{expr} (@samp{:})
12914: @c ----------------------------
12915: @cindex @command{expr}
12916: @c Don't use @samp{\?}, @samp{\+} and @samp{\|} in patterns, they are
12917: @c not supported on Solaris.
12918: @c 
12919: Solarisではサポートされていないので,パターン内に,@samp{\?},@samp{\+},
12920: そして@samp{\|}を使用しないでください.
12921: 
12922: @c The @sc{posix.2-1992} standard is ambiguous as to whether @samp{expr a :
12923: @c b} (and @samp{expr 'a' : '\(b\)'}) output @samp{0} or the empty string.
12924: @c In practice, it outputs the empty string on most platforms, but portable
12925: @c scripts should not assume this.  For instance, the @sc{qnx} 4.25 native
12926: @c @command{expr} returns @samp{0}.
12927: @c 
12928: @sc{posix.2-1992}標準では,@samp{expr a : b}(と@samp{expr 'a' :
12929: '\(b\)'})が@samp{0}を出力するか空の文字列を出力するのかは明確ではありま
12930: せん.実際問題として,それはほとんどのプラットフォームで空の文字列を出力
12931: しますが,移植性の高いスクリプトでは,これを仮定すべきではありません.例
12932: えば,@sc{qnx} 4.25ネイティブの@command{expr}は@samp{0}を返します.
12933: 
12934: @c You may believe that one means to get a uniform behavior would be to use
12935: @c the empty string as a default value:
12936: @c 
12937: 均一な動作を得る手段として,デフォルト値として空の文字列を使用することになっていると信じているかもしれません.
12938: 
12939: @example
12940: expr a : b \| ''
12941: @end example
12942: 
12943: @noindent
12944: @c unfortunately this behaves exactly as the original expression, see the
12945: @c @samp{@command{expr} (@samp{:})} entry for more information.
12946: @c 
12947: 残念ながら,これは元の式として正確に動作します.詳細は,
12948: @samp{@command{expr} (@samp{:})}の項目を参照してください.
12949: 
12950: @c Older @command{expr} implementations (e.g. SunOS 4 @command{expr} and
12951: @c Solaris 8 @command{/usr/ucb/expr}) have a silly length limit that causes
12952: @c @command{expr} to fail if the matched substring is longer than 120
12953: @c bytes.  In this case, you might want to fall back on @samp{echo|sed} if
12954: @c @command{expr} fails.
12955: @c 
12956: 古い@command{expr}の実装(例えば,SunOS 4の@command{expr}とSolaris 8の
12957: @command{/usr/ucb/expr})には,一致したサブ文字列が120バイトより長い場合,
12958: @command{expr}が異常終了するという,思慮の欠けた長さの制限があります.こ
12959: の状況では,@command{expr}が失敗した場合,@samp{echo|sed}に頼りたいと思
12960: うかもしれません。
12961: 
12962: @c Don't leave, there is some more!
12963: @c 
12964: 残っているものはそれだけではありません!
12965: 
12966: @c The @sc{qnx} 4.25 @command{expr}, in addition of preferring @samp{0} to
12967: @c the empty string, has a funny behavior in its exit status: it's always 1
12968: @c when parentheses are used!
12969: @c 
12970: @sc{qnx} 4.25の@command{expr}には,空の文字列ではなく@samp{0}となること
12971: に加えて,終了ステータスでおかしな動作があります.それはカッコが使用され
12972: ている時には,常に1になるということです!
12973: 
12974: @example
12975: $ val=`expr 'a' : 'a'`; echo "$?: $val"
12976: 0: 1
12977: $ val=`expr 'a' : 'b'`; echo "$?: $val"
12978: 1: 0
12979: 
12980: $ val=`expr 'a' : '\(a\)'`; echo "?: $val"
12981: 1: a
12982: $ val=`expr 'a' : '\(b\)'`; echo "?: $val"
12983: 1: 0
12984: @end example
12985: 
12986: @noindent
12987: @c In practice this can be a big problem if you are ready to catch failures
12988: @c of @command{expr} programs with some other method (such as using
12989: @c @command{sed}), since you may get twice the result.  For instance
12990: @c 
12991: 実際に,(@command{sed}のような)他の手法で@command{expr}プログラムで異常
12992: 終了を捕獲する準備がある場合,結果を2回得る可能性があるので,これは大き
12993: な問題となります.例えば以下を考えます.
12994: 
12995: @example
12996: $ expr 'a' : '\(a\)' || echo 'a' | sed 's/^\(a\)$/\1/'
12997: @end example
12998: 
12999: @noindent
13000: @c will output @samp{a} on most hosts, but @samp{aa} on @sc{qnx} 4.25.  A
13001: @c simple work around consists in testing @command{expr} and use a variable
13002: @c set to @command{expr} or to @command{false} according to the result.
13003: @c 
13004: ほとんどのホストでは@samp{a}を出力しますが,@sc{qnx} 4.25では@samp{aa}に
13005: なります.単純な回避方法として,@command{expr}でのテストを構成し,結果に
13006: よって@command{expr}や@command{false}で変数を設定する方法を使用します.
13007: 
13008: 
13009: @item @command{find}
13010: @c -----------------
13011: @c The option @option{-maxdepth} seems to be GNU specific. Tru64 v5.1,
13012: @c NetBSD 1.5 and Solaris 2.5 @command{find} commands do not understand it.
13013: @c 
13014: オプション@option{-maxdepth}はGNU特有のようです.Tru64 v5.1,NetBSD 1.5,
13015: そしてSolaris 2.5の@command{find}コマンドはそれを理解しません.
13016: 
13017: 
13018: @item @command{grep}
13019: @c -----------------
13020: @cindex @command{grep}
13021: @c Don't use @samp{grep -s} to suppress output, because @samp{grep -s} on
13022: @c System V does not suppress output, only error messages.  Instead,
13023: @c redirect the standard output and standard error (in case the file
13024: @c doesn't exist) of @code{grep} to @file{/dev/null}.  Check the exit
13025: @c status of @code{grep} to determine whether it found a match.
13026: @c 
13027: System Vの@samp{grep -s}はエラーメッセージのみ抑制し,出力を抑制しないの
13028: で,出力を抑制するために@samp{grep -s}を使用しないでください.その代わり
13029: に(ファイルが存在しない場合) @code{grep}の標準出力と標準エラー出力を
13030: @file{/dev/null}へリダイレクトしてください.一致が見つかったかどうかを決
13031: 定するために,@code{grep}の終了ステータスを調査してください.
13032: 
13033: @c Don't use multiple regexps with @option{-e}, as some @code{grep} will only
13034: @c honor the last pattern (eg., IRIX 6.5 and Solaris 2.5.1).  Anyway,
13035: @c Stardent Vistra SVR4 @code{grep} lacks @option{-e}@dots{}  Instead, use
13036: @c alternation and @code{egrep}.
13037: @c 
13038: 最後のパターンのみ尊重する@code{grep}(例えば,IRIX 6.5とSolaris 2.5.1)も
13039: あるので,@option{-e}で複数の正規表現を使用しないでください.どちらにし
13040: ろ,Stardent Vistra SVR4の@code{grep}には@option{-e}がありません@dots{} 
13041: その代わりに@code{egrep}を使用してください.
13042: 
13043: 
13044: @item @command{ln}
13045: @c ---------------
13046: @cindex @command{ln}
13047: @cindex Symbolic links
13048: @c Don't rely on @command{ln} having a @option{-f} option.  Symbolic links
13049: @c are not available on old systems, use @samp{ln} as a fall back.
13050: @c 
13051: @option{-f}オプションがある@command{ln}に依存しないようにしてください.
13052: 古いシステムではシンボリックリンクは利用不可能なので,@samp{ln}に戻して
13053: ください.
13054: 
13055: @c For versions of the DJGPP before 2.04, @command{ln} emulates soft links
13056: @c for executables by generating a stub that in turn calls the real
13057: @c program.  This feature also works with nonexistent files like in the
13058: @c Unix spec. So @samp{ln -s file link} will generate @file{link.exe},
13059: @c which will attempt to call @file{file.exe} if run. But this feature only
13060: @c works for executables, so @samp{cp -p} is used instead for these
13061: @c systems.  DJGPP versions 2.04 and later have full symlink support.
13062: @c 
13063: 2.04以前のバージョンのDJGPPに対して,@command{ln}は実行形式に対するソフ
13064: トリンクを,実際のプログラムを呼び出すスタブを生成することでエミュレート
13065: します.この機能は,Unix独自の実行形式以外のファイルでも動作します.その
13066: ため,@samp{ln -s file link}は@file{link.exe}を生成し,それは実行された
13067: 場合に@file{file.exe}の呼び出しを試みます.しかしこの機能は実行形式に対
13068: してのみ動作するので,このシステムでは@samp{cp -p}が代わりに使用されます.
13069: DJGPPの2.04とそれ以降では完全なシンボリックリンクがサポートされています.
13070: 
13071: 
13072: @item @command{mv}
13073: @c ---------------
13074: @cindex @command{mv}
13075: @c The only portable options are @option{-f} and @option{-i}.
13076: @c 
13077: 移植性のあるオプションは,@option{-f}と@option{-i}のみです.
13078: 
13079: @c Moving individual files between file systems is portable (it was in V6),
13080: @c but it is not always atomic: when doing @samp{mv new existing}, there's
13081: @c a critical section where neither the old nor the new version of
13082: @c @file{existing} actually exists.
13083: @c 
13084: ファイルシステム間で個別にファイルを移動することは(V6では)移植性がありま
13085: すが,常に強力でははありません.@samp{mv new existing}をする時,
13086: @file{existing}の古いものも新しいものも実際には存在していないという危険
13087: な状態が存在します.
13088: 
13089: @c Moving directories across mount points is not portable, use @command{cp}
13090: @c and @command{rm}.
13091: @c 
13092: マウントポイントを跨ってディレクトリを移動することは移植性が内ので,
13093: @command{cp}と@command{rm}を使用してください.
13094: 
13095: 
13096: @item @command{sed}
13097: @c ----------------
13098: @cindex @command{sed}
13099: @c Patterns should not include the separator (unless escaped), even as part
13100: @c of a character class.  In conformance with @sc{posix}, the Cray
13101: @c @command{sed} will reject @samp{s/[^/]*$//}: use @samp{s,[^/]*$,,}.
13102: @c 
13103: 文字クラスの一部の場合でも,パターンに(エスケープされていない)セパレータ
13104: を含めるべきではありません.@sc{posix}準拠では,Crayの@command{sed}は
13105: @samp{s/[^/]*$//}を拒絶します.@samp{s,[^/]*$,,}を使用してください.
13106: 
13107: @c Sed scripts should not use branch labels longer than 8 characters and
13108: @c should not contain comments.
13109: @c 
13110: sedのスクリプトは,8文字以上の分岐ラベルを使用すべきではなく,コメントを
13111: 含めるべきでもありません.
13112: 
13113: @c Don't include extra @samp{;}, as some @command{sed}, such as NetBSD
13114: @c 1.4.2's, try to interpret the second as a command:
13115: @c 
13116: NetBSD 1.4.2では,2番目のものをコマンドとして解釈しようと試みるので,
13117: @command{sed}によっては,余分な@samp{;}を含めてはなりません.
13118: 
13119: @example
13120: $ echo a | sed 's/x/x/;;s/x/x/'
13121: sed: 1: "s/x/x/;;s/x/x/": invalid command code ;
13122: @end example
13123: 
13124: @c Input should have reasonably long lines, since some @command{sed} have
13125: @c an input buffer limited to 4000 bytes.
13126: @c 
13127: @command{sed}によっては,入力バッファに4000バイトの制限があるものもある
13128: ので,入力は妥当な長さの行にすべきです.
13129: 
13130: @c Alternation, @samp{\|}, is common but not portable.
13131: @c 
13132: @samp{\|}の交換は一般的ですが,移植性はありません.
13133: @c FIXME: I know Solaris is guilty, but I don't remember how.
13134: 
13135: @c Anchors (@samp{^} and @samp{$}) inside groups are not portable.
13136: @c 
13137: グループ内のアンカー(@samp{^}と@samp{$})は移植性がありません.
13138: 
13139: @c Nested groups are extremely portable, but there is at least one
13140: @c @command{sed} (System V/68 Base Operating System R3V7.1) that does not
13141: @c support it.
13142: @c 
13143: 入れ子状のグループは全く移植性あるものなのですが,それをサポートしていな
13144: い@command{sed}が,少なくとも1つ存在します(System V/68 Base Operating
13145: System R3V7.1).
13146: 
13147: @c Of course the option @option{-e} is portable, but it is not needed.  No
13148: @c valid Sed program can start with a dash, so it does not help
13149: @c disambiguating.  Its sole usefulness is helping enforcing indenting as
13150: @c in:
13151: @c 
13152: もちろんオプション@option{-e}には移植性がありますが,それは不要です.ダッ
13153: シュで始まる有効なsedプログラムは無いので,明確にする役には立ちません.
13154: 唯一の有効性は,以下のように字下げを強制的に行なう時です.
13155: 
13156: @example
13157: sed -e @var{instruction-1} \
13158:     -e @var{instruction-2}
13159: @end example
13160: 
13161: @noindent
13162: @c as opposed to
13163: @c 
13164: これは以下の代わりのものです.
13165: 
13166: @example
13167: sed @var{instruction-1};@var{instruction-2}
13168: @end example
13169: 
13170: @c Contrary to yet another urban legend, you may portably use @samp{&} in
13171: @c the replacement part of the @code{s} command to mean ``what was
13172: @c matched''.
13173: @c 
13174: もう一つのurban legendとして,``一致したもの''を意味する@code{s}コマンド
13175: の一部を置換する時,@samp{&}を使用しても移植性はあるでしょう.
13176: 
13177: 
13178: @item @command{sed} (@samp{t})
13179: @c ---------------------------
13180: @cindex @command{sed} (@samp{t})
13181: @c Some old systems have @command{sed} that ``forget'' to reset their
13182: @c @samp{t} flag when starting a new cycle.  For instance on @sc{mips
13183: @c risc/os}, and on @sc{irix} 5.3, if you run the following @command{sed}
13184: @c script (the line numbers are not actual part of the texts):
13185: @c 
13186: 古いシステムには,新しいサイクルと開始するとき,その@samp{t}フラグをリセッ
13187: トすることを``忘れる'' @command{sed}があるシステムもあります.例えば,
13188: @sc{mips risc/os}と@sc{irix} 5.3で,以下の@command{sed}スクリプトを実行
13189: した場合を考えます(行番号は,実際にはテキストの一部ではありません).
13190: 
13191: @example
13192: s/keep me/kept/g  # a
13193: t end             # b
13194: s/.*/deleted/g    # c
13195: : end             # d
13196: @end example
13197: 
13198: @noindent
13199: @c on
13200: @c 
13201: ファイルの内容は以下のようになります.
13202: 
13203: @example
13204: delete me         # 1
13205: delete me         # 2
13206: keep me           # 3
13207: delete me         # 4
13208: @end example
13209: 
13210: @noindent
13211: @c you get
13212: @c 
13213: 以下を得ます.
13214: 
13215: @example
13216: deleted
13217: delete me
13218: kept
13219: deleted
13220: @end example
13221: 
13222: @noindent
13223: @c instead of
13224: @c 
13225: これは(本来は)以下のようになります.
13226: 
13227: @example
13228: deleted
13229: deleted
13230: kept
13231: deleted
13232: @end example
13233: 
13234: @c Why? When processing 1, a matches, therefore sets the t flag, b jumps to
13235: @c d, and the output is produced.  When processing line 2, the t flag is
13236: @c still set (this is the bug).  Line a fails to match, but @command{sed}
13237: @c is not supposed to clear the t flag when a substitution fails.  Line b
13238: @c sees that the flag is set, therefore it clears it, and jumps to d, hence
13239: @c you get @samp{delete me} instead of @samp{deleted}.  When processing 3 t
13240: @c is clear, a matches, so the flag is set, hence b clears the flags and
13241: @c jumps.  Finally, since the flag is clear, 4 is processed properly.
13242: @c 
13243: なぜでしょう?1行目を処理している時,一致するのでtフラグが設定され,b行
13244: からd行まで移動し,出力が生成されます.2行目を処理している時,tフラグは
13245: セットされたままです(これはバグです).しかし,a行は一致に失敗しますが,
13246: 置換が失敗するとき,@command{sed}はtフラグをクリアすることをサポートして
13247: いません.そのため,フラグが設定されているように見えるb行は,それをクリ
13248: アし,dへ移動し,その結果,@samp{deleted}の代わりに@samp{delete me}にな
13249: ります.3行目を処理している時,一致を示すtがクリアされるため,フラグが設
13250: 定され,その結果,b行はフラグをクリアし移動します.最終的にフラグはクリ
13251: アになっているので,4行目は正しく処理されます.
13252: 
13253: @c There are two things one should remind about @samp{t} in @command{sed}.
13254: @c Firstly, always remember that @samp{t} jumps if @emph{some} substitution
13255: @c succeeded, not only the immediately preceding substitution, therefore,
13256: @c always use a fake @samp{t clear; : clear} to reset the t flag where
13257: @c indeed.
13258: @c 
13259: @command{sed}の@samp{t}について覚えておくべきことは2つあります.最初に,
13260: 成功した置換に@emph{よっては},置換の直前だけでなく@samp{t}ジャンプする
13261: ことを覚えておき,そのため,tフラグを実際にリセットするために,ごまかし
13262: の@samp{t clear; : clear}を使用してください.
13263: 
13264: @c Secondly, you cannot rely on @command{sed} to clear the flag at each new
13265: @c cycle.
13266: @c 
13267: 2番目は,それぞれの新しいサイクルでフラグをクリアするのを@command{sed}に
13268: 依頼することはできません.
13269: 
13270: @c One portable implementation of the script above is:
13271: @c 
13272: 上記のスクリプトの移植性の高い実装の一つは,以下のようになります.
13273: 
13274: @example
13275: t clear
13276: : clear
13277: s/keep me/kept/g
13278: t end
13279: s/.*/deleted/g
13280: : end
13281: @end example
13282: 
13283: @item @command{touch}
13284: @c ------------------
13285: @cindex @command{touch}
13286: @c On some old @sc{bsd} systems, @command{touch} or any command that
13287: @c results in an empty file does not update the timestamps, so use a
13288: @c command like @code{echo} as a workaround.
13289: @c 
13290: 古い@sc{bsd}システムには,空のファイルに対する@command{touch}のようなコ
13291: マンドで,タイムスタンプを更新しない結果となるものもあるので,回避するた
13292: めに,@code{echo}のようなコマンドを使用してください.
13293: 
13294: @c GNU @command{touch} 3.16r (and presumably all before that) fails to work
13295: @c on SunOS 4.1.3 when the empty file is on an @sc{nfs}-mounted 4.2 volume.
13296: @c 
13297: GNU @command{touch} 3.16r(とそれ以前の全て)は,型のファイルが@sc{nfs}で
13298: マウントされている4.2のボリュームの時,SunOS 4.1.3での動作で異常終了しま
13299: す.
13300: 
13301: @end table
13302: 
13303: 
13304: @node Limitations of Make,  , Limitations of Usual Tools, Portable Shell
13305: @section makeの制限
13306: 
13307: @c Make itself suffers a great number of limitations, only a few of which
13308: @c being listed here.  First of all, remember that since commands are
13309: @c executed by the shell, all its weaknesses are inherited@dots{}
13310: @c 
13311: make自身には非常に多くの制限があるので苦労します,ここではわずかですが紹
13312: 介します.とにかく,シェルによってコマンドが実行されるので,その弱い部分
13313: の全てが継承されていくということを覚えておいてください@dots{}
13314: 
13315: @table @asis
13316: @item Leading underscore in macro names
13317: @c Some Make don't support leading underscores in macro names, such as on
13318: @c NEWS-OS 4.2R.
13319: @c 
13320: NEWS-OS 4.2Rのように,マクロ名にアンダースコアを前置することをサポートし
13321: ていないmakeもあります.
13322: 
13323: @example
13324: $ cat Makefile
13325: _am_include = #
13326: _am_quote =
13327: all:; @@echo this is test
13328: 
13329: % make
13330: Make: Must be a separator on rules line 2.  Stop.
13331: 
13332: $ cat Makefile2
13333: am_include = #
13334: am_quote =
13335: all:; @@echo this is test
13336: 
13337: $ make -f Makefile2
13338: this is test
13339: @end example
13340: 
13341: @item @code{VPATH}
13342: @cindex @code{VPATH}
13343: @c Don't use it!  For instance any assignment to @code{VPATH} causes Sun
13344: @c @command{make} to only execute the first set of double-colon rules.
13345: @c 
13346: 使用しないでください!例え