This file has been translated from LaTeX by HeVeA.

File: omake-doc, Node: Subsection A-3-3,	Next: Subsection A-3-4,	Prev: Subsection A-3-2,	Up: Section A-3
  

A.3.3   -p
==========
 -p
  Watch the filesystem for changes, and continue the build until it
succeeds. If this option is specified, omake will restart the build
whenever source files are modified. Implies -k.

File: omake-doc, Node: Subsection A-3-4,	Next: Subsection A-3-5,	Prev: Subsection A-3-3,	Up: Section A-3
  

A.3.4   -P
==========
 -P
  Watch the filesystem for changes forever. If this option is specified,
omake will restart the build whenever source files are modified. Implies
-k.

File: omake-doc, Node: Subsection A-3-5,	Next: Subsection A-3-6,	Prev: Subsection A-3-4,	Up: Section A-3
  

A.3.5   -R
==========
 -R
  Ignore the current directory and build the project from its root
directory. When omake is run in a subdirectory of a project and no
explicit targets are given on the command line, it would normally only
build files within the current directory and its subdirectories (more
precisely, it builds all the .DEFAULT targets in the current directory
and its subdirectories). If the -R option is specified, the build is
performed as if omake were run in the project root.
  In other words, with the -R option, all the relative targets specified
on the command line will be taken relative to the project root (instead
of relative to the current directory). When no targets are given on the
command line, all the .DEFAULT targets in the project will be built
(regardless of the current directory).

File: omake-doc, Node: Subsection A-3-6,	Next: Subsection A-3-7,	Prev: Subsection A-3-5,	Up: Section A-3
  

A.3.6   -t
==========
 -t
  Update the omake database to force the project to be considered
up-to-date.

File: omake-doc, Node: Subsection A-3-7,	Next: Subsection A-3-8,	Prev: Subsection A-3-6,	Up: Section A-3
  

A.3.7   -U
==========
 -U
  Do not trust cached build information. This will force the entire
project to be rebuilt.

File: omake-doc, Node: Subsection A-3-8,	Next: Subsection A-3-9,	Prev: Subsection A-3-7,	Up: Section A-3
  

A.3.8   --depend
================

--depend
  Do not trust cached dependency information. This will force files to
be rescanned for dependency information.

File: omake-doc, Node: Subsection A-3-9,	Next: Subsection A-3-10,	Prev: Subsection A-3-8,	Up: Section A-3
  

A.3.9   --configure
===================

--configure
  Re-run static. sections of the included omake files, instead of
trusting the cached results.

File: omake-doc, Node: Subsection A-3-10,	Next: Subsection A-3-11,	Prev: Subsection A-3-9,	Up: Section A-3
  

A.3.10   --force-dotomake
=========================
 --force-dotomake
  Always use the $HOME/.omake for the .omc cache files.

File: omake-doc, Node: Subsection A-3-11,	Next: Subsection A-3-12,	Prev: Subsection A-3-10,	Up: Section A-3
  

A.3.11   --dotomake
===================

--dotomake <dir>
  Use the specified directory instead of the $HOME/.omake for the
placement of the .omc cache files.

File: omake-doc, Node: Subsection A-3-12,	Next: Subsection A-3-13,	Prev: Subsection A-3-11,	Up: Section A-3
  

A.3.12   -j
===========
 -j <count>
  Run multiple build commands in parallel. The count specifies a bound
on the number of commands to run simultaneously. In addition, the count
may specify servers for remote execution of commands in the form
server=count. For example, the option -j
2:small.host.org=1:large.host.org=4 would specify that up to 2 jobs can
be executed locally, 1 on the server small.host.org and 4 on
large.host.org. Each remote server must use the same filesystem location
for the project.
  Remote execution is currently an experimental feature. Remote
filesystems like NFS do not provide adequate file consistency for this
to work.

File: omake-doc, Node: Subsection A-3-13,	Next: Subsection A-3-14,	Prev: Subsection A-3-12,	Up: Section A-3
  

A.3.13   --print-dependencies
=============================
 --print-dependencies
  Print dependency information for the targets on the command line.

File: omake-doc, Node: Subsection A-3-14,	Next: Subsection A-3-15,	Prev: Subsection A-3-13,	Up: Section A-3
  

A.3.14   --show-dependencies
============================
 --show-dependencies <target>
  Print dependency information if the target is built.

File: omake-doc, Node: Subsection A-3-15,	Next: Subsection A-3-16,	Prev: Subsection A-3-14,	Up: Section A-3
  

A.3.15   --all-dependencies
===========================
 --all-dependencies
  If either of the options --print-dependencies or --show-dependencies
is in effect, print transitive dependencies. That is, print all
dependencies recursively. If neither option --print-dependencies,
--show-dependencies is specified, this option has no effect.

File: omake-doc, Node: Subsection A-3-16,	Next: Subsection A-3-17,	Prev: Subsection A-3-15,	Up: Section A-3
  

A.3.16   --verbose-dependencies
===============================
 --verbose-dependencies
  If either of the options --print-dependencies or --show-dependencies
is in effect, also print listings for each dependency. The output is
very verbose, consider redirecting to a file. If neither option
--print-dependencies, --show-dependencies is specified, this option has
no effect.

File: omake-doc, Node: Subsection A-3-17,	Next: Subsection A-3-18,	Prev: Subsection A-3-16,	Up: Section A-3
  

A.3.17   --install
==================

--install
  Install default files OMakefile and OMakeroot into the current
directory. You would typically do this to start a project in the current
directory.

File: omake-doc, Node: Subsection A-3-18,	Next: Subsection A-3-19,	Prev: Subsection A-3-17,	Up: Section A-3
  

A.3.18   --install-all
======================

--install-all
  In addition to installing files OMakefile and OMakeroot, install
default OMakefiles into each subdirectory of the current directory.
cvs(1) rules are used for filtering the subdirectory list. For example,
OMakefiles are not copied into directories called CVS, RCCS, etc.

File: omake-doc, Node: Subsection A-3-19,	Next: Subsection A-3-20,	Prev: Subsection A-3-18,	Up: Section A-3
  

A.3.19   --install-force
========================
 --install-force
  Normally, omake will prompt before it overwrites any existing
OMakefile. If this option is given, all files are forcibly overwritten
without prompting.

File: omake-doc, Node: Subsection A-3-20,	Next: Subsection A-3-21,	Prev: Subsection A-3-19,	Up: Section A-3
  

A.3.20   --absname
==================

--absname
  Filenames should expand to absolute pathnames.
  N.B. This is an experimental option. It may become deprecated.

File: omake-doc, Node: Subsection A-3-21,	Prev: Subsection A-3-20,	Up: Section A-3
  

A.3.21   variable definition
============================
 name=[value]
  omake variables can also be defined on the command line in the form
name=value. For example, the CFLAGS variable might be defined on the
command line with the argument CFLAGS="-Wall -g".

File: omake-doc, Node: Section A-4,	Next: Section A-5,	Prev: Section A-3,	Up: Appendix A
  

A.4   Additional options
************************

  
  In addition, omake supports a number of debugging flags on the command
line. Run omake --help to get a summary of these flags.

File: omake-doc, Node: Section A-5,	Next: Section A-6,	Prev: Section A-4,	Up: Appendix A
  

A.5   Environment variables
***************************

  
* Menu:

* Subsection A-5-1::	OMAKEFLAGS
* Subsection A-5-2::	OMAKELIB


File: omake-doc, Node: Subsection A-5-1,	Next: Subsection A-5-2,	Up: Section A-5
  

A.5.1   OMAKEFLAGS
==================
   
  If defines, the OMAKEFLAGS should specify a set of options exactly as
they are specified on the command line.

File: omake-doc, Node: Subsection A-5-2,	Prev: Subsection A-5-1,	Up: Section A-5
  

A.5.2   OMAKELIB
================
   
  If defined, the OMAKELIB environment variable should refer to the
installed location of the OMake standard library. This is the directory
that contains Pervasives.om etc. On a Unix system, this is often
/usr/lib/omake or /usr/local/lib/omake, and on Win32 systems it is often
c:\Program Files\OMake\lib.
  If not defined, omake uses the default configured location. You should
normally leave this unset.

File: omake-doc, Node: Section A-6,	Next: Section A-7,	Prev: Section A-5,	Up: Appendix A
  

A.6   Functions
***************

  
* Menu:

* Subsection A-6-1::	OMakeFlags


File: omake-doc, Node: Subsection A-6-1,	Up: Section A-6
  

A.6.1   OMakeFlags
==================
  
  The OMakeFlags function can be used within an OMakefile to modify the
set of options. The options should be specified exactly as they are on
the command line. For example, if you want some specific project to be
silent and display a progress bar, you can add the following line to
your OMakefile.
<<    OMakeFlags(-S --progress)
>>
  
  For options where it makes sense, the options are scoped like
variables. For example, if you want OMake to be silent for a single rule
(instead of for the entire project), you can use scoping the restrict
the range of the option.
<<    section
          # Do not display command output when foo is constructed
          OMakeFlags(-S)
  
          foo: fee
             echo "This is a generated file" > foo
             cat fee >> foo
             chmod 555 foo
>>
  

File: omake-doc, Node: Section A-7,	Next: Section A-8,	Prev: Section A-6,	Up: Appendix A
  

A.7   Option processing
***********************

  
  When omake is invoked, the options are processed in the following
order.
  
  
   1. All options specified by the OMAKEFLAGS environment variable are
   defined globally. 
   2. All options from the command line are defined globally. 
   3. Any individual calls the the OMakeFlags function modify the
   options locally. 
  

File: omake-doc, Node: Section A-8,	Prev: Section A-7,	Up: Appendix A
  

A.8   .omakerc
**************

    
  If the $(HOME)/.omakerc exists, it is read before any of the
OMakefiles in your project. The .omakerc file is frequently used for
user-specific customization. For example, instead of defining the
OMAKEFLAGS environment variable, you could add a line to your .omakerc.
<<    $(HOME)/.omakerc:
          # My private options
          OMakeFlags(-S --progress)
>>
  
   

File: omake-doc, Node: Appendix B,	Next: Appendix C,	Prev: Appendix A,	Up: Top
  

Appendix B     OMake grammar
****************************
    
* Menu:

* Section B-1::	OMake lexical conventions
* Section B-2::	The OMake grammar
* Section B-3::	Dollar modifiers
* Section B-4::	Programming syntax


File: omake-doc, Node: Section B-1,	Next: Section B-2,	Up: Appendix B
  

B.1   OMake lexical conventions
*******************************

  
  The OMake language is based on the language for GNU/BSD make, where
there are few lexical conventions. Strictly speaking, there are no
keywords, and few special symbols.
* Menu:

* Subsection B-1-1::	Comments
* Subsection B-1-2::	Special characters
* Subsection B-1-3::	Identifiers
* Subsection B-1-4::	Command identifiers
* Subsection B-1-5::	Variable references
* Subsection B-1-6::	String constants


File: omake-doc, Node: Subsection B-1-1,	Next: Subsection B-1-2,	Up: Section B-1
  

B.1.1   Comments
================
  
  Comments begin with the # character and continue to the end-of-line.
Text within a comment is unrestricted.
  Examples.
<<   # This is a comment
     # This $comment contains a quote " character
>>
  

File: omake-doc, Node: Subsection B-1-2,	Next: Subsection B-1-3,	Prev: Subsection B-1-1,	Up: Section B-1
  

B.1.2   Special characters
==========================
  
  The following characters are special in some contexts.
<<   $    (    )    ,    .   =    :    "    '    `    \    #
>>
  
  
  
   - $ is used to denote a variable reference, or function application. 
   - Parentheses ), ( are argument deliminters. 
   - The command , is an argument separator. 
   - The period symbol . is a name separator. 
   - The equality symbol = denotes a definition. 
   - The colon symbol : is used to denote rules, and (optionally) to
   indicate that an expression is followed by an indented body. 
   - The quotation symbols " and ' delimit character strings. 
   - The symbol # is the first character of a constant. 
   - The escape symbol \ is special only when followed by another
   special character. In this case, the special status of the second
   character is removed, and the sequence denotes the second character.
   Otherwise, the \ is not special.
 Examples:
 
     
      - \$: the $ character (as a normal character). 
      - \#: the # character (as a normal character). 
      - \\: the \ character (as a normal character). 
      - c\:\Windows\moo\#boo: the string c:\Windows\moo#boo. 
  
  

File: omake-doc, Node: Subsection B-1-3,	Next: Subsection B-1-4,	Prev: Subsection B-1-2,	Up: Section B-1
  

B.1.3   Identifiers
===================
  
  Identifiers (variable names) are drawn from the ASCII alphanumeric
characters as well as _, -, ~, @. Case is significant; the following
identifiers are distinct: FOO, Foo, foo. The identifier may begin with
any of the valid characters, including digits.
  Using egrep notation, the regular expression for identifiers is
defined as follows.
<<    identifier ::= [-@~_A-Za-z0-9]+
>>
  
  The following are legal identifiers.
<<    Xyz    hello_world    seventy@nine
      79-32  Gnus~Gnats     CFLAGS
>>
  
  The following are not legal identifiers.
<<    x+y    hello&world
>>
  

File: omake-doc, Node: Subsection B-1-4,	Next: Subsection B-1-5,	Prev: Subsection B-1-3,	Up: Section B-1
  

B.1.4   Command identifiers
===========================
  
  The following words have special significance when they occur as the
first word of a program line. They are not otherwise special.
<<    case     catch  class    declare    default
      do       else   elseif   export     extends
      finally  if     import   include    match
      open     raise  return   section    switch
      try      value  when     while
>>
  

File: omake-doc, Node: Subsection B-1-5,	Next: Subsection B-1-6,	Prev: Subsection B-1-4,	Up: Section B-1
  

B.1.5   Variable references
===========================
  
  A variable reference is denoted with the $ special character followed
by an identifier. If the identifier name has more than one character, it
must be enclosed in parentheses. The parenthesized version is most
common. The following are legal variable references.
<<    $(Xyz)    $(hello_world)   $(seventy@nine)
      $(79-32)  $(Gnus~Gnats)    $(CFLAGS)
>>
  
  Single-character references also include several additional
identifiers, including &*<^?][. The following are legal single-character
references.
<<   $@   $&   $*   $<   $^   $+   $?   $[   $]
     $A   $_   $a   $b   $x   $1   $2   $3
>>
  
  Note that a non-parenthesized variable reference is limited to a
single character, even if it is followed by additional legal identifier
charqcters. Suppose the value of the $x variable is 17. The following
examples illustrate evaluation.
<<    $x           evaluates to    17
      foo$xbar     evaluates to    foo17bar
      foo$(x)bar   evaluates to    foo17bar
>>
  
  The special sequence $$ represents the character literal $. That is,
the two-character sequences \$ and $$ are normally equalivalent.

File: omake-doc, Node: Subsection B-1-6,	Prev: Subsection B-1-5,	Up: Section B-1
  

B.1.6   String constants
========================
   
  Literal strings are defined with matching string delimiters. A left
string delimiter begins with the dollar-sign $, and a non-zero number of
single-quote or double-quote characters. The string is terminated with a
matching sequence of quotation symbols. The delimiter quotation may not
be mixed; it must contain only single-quote characters, or double-quote
characters. The following are legal strings.
<<    $'Hello world'
      $"""printf("Hello world\n")"""
      $''''
  Large "block" of
  text # spanning ''multiple'' lines''''
>>
  
  The string delimiters are not included in the string constant. In the
single-quote form, the contents of the string are interpreted
verbatim--there are no special characters.
  The double-quote form permits expression evaluation within the string,
denoted with the $ symbol. The following are some examples.
<<    X = Hello
      Y = $""$X world""             # Hello world
      Z = $'''$X world'''           # $X world
      I = 3
      W = $"6 > $(add $I, 2)"       # 6 > 5
>>
  
  Note that quotation symbols without a leading $ are not treated
specially by OMake. The quotation symbols is included in the sequence.
<<    osh>println('Hello world')
      'Hello world'
      osh>println($'Hello world')
      Hello world
      osh>X = Hello
      - : "Hello" : Sequence
      osh>println('$X world')
      Hello world
>>
  

File: omake-doc, Node: Section B-2,	Next: Section B-3,	Prev: Section B-1,	Up: Appendix B
  

B.2   The OMake grammar
***********************

  
  OMake programs are constructed from expressions and statements.
Generally, an input program consists of a sequence of statements, each
of which consists of one or more lines. Indentation is significant--if a
statement consists of more than one line, the second and remaining lines
(called the body) are usually indented relative to the first line.
* Menu:

* Subsection B-2-1::	Expressions
* Subsection B-2-2::	Statements and programs


File: omake-doc, Node: Subsection B-2-1,	Next: Subsection B-2-2,	Up: Section B-2
  

B.2.1   Expressions
===================
  
  The following table lists the syntax for expressions.
   expr ::=                                           
            (empty)                                   
            -- Text (see note)                        
         |  text                                      
         |  string-literal                            
            -- Applications                           
         |  dollar <char>                             
         |  dollar ( pathid args )                    
            -- Concatenation                          
         |  expr expr                                 
                                                      
 dollar ::= $ | $` | $,                               
 pathid ::=                                           
            id                                        
         |  pathid . id                               
                                                      
    arg ::= expr -- excluding special characters )(,) 
   args ::= (empty) | arg, ..., arg                   
  
  An expression is a sequence composed of text, string-literals,
variables references and function applications. Text is any sequence of
non-special characters.
  

B.2.1.1   Inline applications
-----------------------------
  
  An application is the application of a function to zero-or-more
arguments. Inline applications begin with one of the "dollar" sequences
$, $`, or $,. The application itself is specified as a single character
(in which case it is a variable reference), or it is a parenthesized
list including a function identifier pathid, and zero-or-more
comma-separated arguments args. The arguments are themselves a variant
of the expressions where the special character )(, are not allowed
(though any of these may be made non-special with the \ escape
character). The following are some examples of valid expressions.
  
  
   - xyz abc
 The text sequence "xyz abc"
 
   - xyz$wabc
 A text sequence containing a reference to the variable w.
 
   - $(addsuffix .c, $(FILES))
 An application of the function addsuffix, with first argument .c, and
   second argument $(FILES).
 
   - $(a.b.c 12)
 This is a method call. The variable a must evaluate to an object with a
   field b, which must be an object with a method c. This method is
   called with argument 12. 
  
  The additional dollar sequences specify evaluation order, $` (lazy)
and $, (eager), as discussed in the section on dollar modifiers
(Section B.3*Note Section B-3::).

File: omake-doc, Node: Subsection B-2-2,	Prev: Subsection B-2-1,	Up: Section B-2
  

B.2.2   Statements and programs
===============================
  
  The following table lists the syntax of statements and programs.
         params ::= (empty) | id, ..., id                               
      
                                                                        
      
         target ::= expr -- excluding special character :               
      
                                                                        
      
        program ::= stmt <eol> ... <eol> stmt                           
      
                                                                        
      
           stmt ::=                                                     
      
                    -- Special forms                                    
      
                 |  command expr optcolon-body                          
      
                 |  command ( args ) optcolon-body                      
      
                 |  catch id ( id ) optcolon-body                       
      
                 |  class id ... id                                     
      
                                                                        
      
                    -- Variable definitions                             
      
                 |  pathid {+}= expr                                    
      
                 |  pathid {+}= <eol> indented-body                     
      
                 |  pathid[] {+}= expr                                  
      
                 |  pathid[] {+}= <eol> indented-exprs                  
      
                                                                        
      
                    -- Functions                                        
      
                 |  pathid(args) optcolon-body                          
      
                 |  pathid(params) = <eol> indented-body                
      
                                                                        
      
                    -- Objects                                          
      
                 |  pathid . {+}= <eol> indented-body                   
      
                                                                        
      
                    -- Rules                                            
      
                 |  target : target rule-options <eol> indented-body    
      
                 |  target :: target rule-options <eol> indented-body   
      
                 |  target : target : target rule-options <eol>
indented-body  
                 |  target :: target : target rule-options <eol>
indented-body 
                                                                        
      
                    -- Shell commands                                   
      
                 |  expr                                                
      
                                                                        
      
  indented-body ::= (empty)                                             
      
                 |  indented-stmt <eol> ... <eol> indented-stmt         
      
                                                                        
      
 indented-exprs ::= (empty)                                             
      
                 |  indented-expr <eol> ... <eol> indented-expr         
      
                                                                        
      
  optcolon-body ::= (empty)                                             
      
                 |  <eol> indented-body                                 
      
                 |  : <eol> indented-body                               
      
                                                                        
      
    rule-option ::= :id: target                                         
      
   rule-options ::= (empty)                                             
      
                 |  rule-options rule-option                            
      
  
  

B.2.2.1   Special forms
-----------------------
  
  The special forms include the following.

Conditionals (see the section on conditionals ---
Section 4.10*Note Section 4-10::). The if command should be
followed by an expression that represents the condition, and an indented
body. The conditional may be followed by elseif and else blocks.
<<    if expr
          indented-body
      elseif expr
          indented-body
      ...
      else
          indented-body
>>
  
matching (see the section on matching ---
Section 4.11*Note Section 4-11::). The switch and match commands
perform pattern-matching. All cases are optional. Each case may include
when clauses that specify additional matching conditions.
<<    match(expr)
      case expr
         indented-body
      when expr
         indented-body
      ...
      case expr
         indented-body
      default
         indented-body
>>
  
Exceptions (see also the 'try' function
documentation). The try command introduces an exception handler. Each
name is the name of a class. All cases, including catch, default, and
finally are optional. The catch and default clauses contain optional
when clauses.
<<    try
          indented-body
      catch name1(id1)
          indented-body
      when expr
          indented-body
      ...
      catch nameN(idN)
          indented-body
      default
          indented-body
      finally
          indented-body
>>
  
  The raise command is used to raise an exception.
<<    raise expr
>>
  
section (see the section description in
Section 4.9*Note Section 4-9::). The section command introduces
a new scope.
<<    section
          indented-body
>>
  
include, open (see also
Section 4.8*Note Section 4-8::). The include command performs
file inclusion. The expression should evaluate to a file name.
  The open form is like include, but it performs the inclusion only if
the inclusion has not already been performed. The open form is usually
used to include library files. [jyh-- this behavior will change in
subsequent revisions.]
<<    include expr
      open expr
>>
  
return (see the description of functions in
Section 4.5*Note Section 4-5::). The return command
terminates execution and returns a value from a function.
<<    return expr
>>
  
value (see the description of functions in
Section 4.5*Note Section 4-5::). The value command is an
identity. Syntactically, it is used to coerce a n expression to a
statement.
<<    value expr
>>
  
export (see the section on scoping ---
Section 6.3*Note Section 6-3::). The export command exports a
environment from a nested block. If no arguments are given, the entire
environment is exported. Otherwise, the export is limited to the
specified identifiers.
<<    export expr
>>
  
while (see also the 'while' function
description). The while command introduces a while loop.
<<    while expr
          indented-body
>>
  
class, extends (see the
section on objects --- Section 4.12*Note Section 4-12::). The
class command specifies an identifier for an object. The extends command
specifies a parent object.
<<    class id
      extends expr
>>
  
  

B.2.2.2   Variable definitions
------------------------------
  
  See the section on variables
(Section 4.1*Note Section 4-1::). The simplest variable
definition has the following syntax. The = form is a new definition. The
+= form appends the value to an existing definition.
<<    id = expr
      id += expr
  
      osh> X = 1
      - : "1" : Sequence
      osh> X += 7
      - : "1" " " "7" : Sequence
>>
  
  A multi-line form is allowed, where the value is computed by an
indented body.
<<    id {+}=
          indented-body
  
      osh> X =
               Y = HOME
               println(Y is $Y)
               getenv($Y)
      Y is HOME
      - : "/home/jyh" : Sequence
>>
  
  The name may be qualified qith one of the public, prtected, or private
modifiers. Public variables are dynamically scoped. Protected variables
are fields in the current object. Private variables are statically
scoped.
  [jyh: revision 0.9.9 introduces modular namespaces; the meaning of
these qualifiers is slightly changed.]
<<    public.X = $(addsuffix .c, 1 2 3)
      protected.Y = $(getenv HOME)
      private.Z = $"Hello world"
>>
  
  

B.2.2.3   Applications and function definitions
-----------------------------------------------
  
  See the section on functions
(Section 4.5*Note Section 4-5::). A function-application
statement is specified as a function name, followed a parenthesized list
of comma-separated arguments.
<<    osh> println($"Hello world")
  
      osh> FILES = 1 2 3
      - : 1 2 3
      osh> addsuffix(.c, $(FILES))
      - : 1.c 2.c 3.c
  
      # The following forms are equivalent
      osh> value $(println $"Hello world")
      osh> value $(addsuffix .c, $(FILES))
      - : 1.c 2.c 3.c
>>
  
  If the function application has a body, the body is passed (lazily) to
the function as its first argument. [jyh: in revision 0.9.8 support is
incomplete.] When using osh, the application must be followed by a colon
: to indicate that the application has a body.
<<    # In its 3-argument form, the foreach function takes
      # a body, a variable, and an array.  The body is evaluated
      # for each element of the array, with the variable bound to
      # the element value.
      #
      # The colon is required only for interactive sessions.
      osh> foreach(x => 1 2 3):
              add($x, 1)
      - : 2 3 4
>>
  
  Functions are defined in a similar form, where the parameter list is
specified as a comma-separated list of identifiers, and the body of the
function is indented.
<<    osh> f(i, j) =
              add($i, $j)
      - : <fun 2>
      osh> f(3, 7)
      - : 10 : Int
>>
  
  

B.2.2.4   Objects
-----------------
  
  See the section on objects (Section 4.12*Note Section 4-12::).
Objects are defined as an identifier with a terminal period. The body of
the object is indented.
<<    Obj. =
          class Obj
  
          X = 1
          Y = $(sub $X, 12)
          new(i, j) =
             X = $i
             Y = $j
             value $(this)
          F() =
             add($X, $Y)
          println($Y)
>>
  
  The body of the object has the usual form of an indented body, but new
variable definitions are added to the object, not the global
environment. The object definition above defines an object with (at
least) the fields X and Y, and methods new and F. The name of the object
is defined with the class command as Obj.
  The Obj itself has fields X = 1 and Y = -11. The new method has the
typical form of a constructor-style method, where the fields of the
object are initialized to new values, and the new object returned
($(this) refers to the current object).
  The F method returns the sum of the two fields X and Y.
  When used in an object definition, the += form adds the new
definitions to an existing object.
<<   pair. =
        x = 1
        y = 2
  
     pair. +=
        y = $(add $y, 3)
     # pair now has fields (x = 1, and y = 5)
>>
  
  The extends form specifies inheritance. Multiple inheritance is
allowed. At evaluation time, the extends directive performs inclusion of
the entire parent object.
<<   pair. =
        x = 1
        y = 2
  
     depth. =
        z = 3
        zoom(dz) =
           z = $(add $z, $(dz))
           return $(this)
  
     triple. =
        extends $(pair)
        extends $(depth)
  
        crazy() =
           zoom($(mul $x, $y))
>>
  
  In this example, the triple object has three fields x, y, and z; and
two methods zoom and crazy.
  

B.2.2.5   Rules
---------------
  
  See the chapter on rules (Chapter 8*Note Chapter 8::). A rule
has the following parts. 
  
   1. A sequence of targets; 
   2. one or two colons; 
   3. a sequence of dependencies and rule options; 
   4. and an indented body. 
  
  The targets are the files to be built, and the dependencies are the
files it depends on. If two colons are specified, it indicates that
there may be multiple rules to build the given targets; otherwise only
one rule is allowed.
  If the target contains a % character, the rule is called implicit, and
is considered whenever a file matching that pattern is to be built. For
example, the following rule specifies a default rule for compiling OCaml
files.
<<    %.cmo: %.ml %.mli
         $(OCAMLC) -c $<
>>
  
  This rule would be consulted as a default way of building any file
with a .cmo suffix. The dependencies list is also constructed based on
the pattern match. For example, if this rule were used to build a file
foo.cmo, then the dependency list would be foo.ml foo.mli.
  There is also a three-part version of a rule, where the rule
specification has three parts.
<<    targets : patterns : dependencies rule-options
         indented-body
>>
  
  In this case, the patterns must contain a single % character.
Three-part rules are also considered implicit. For example, the
following defines a default rule for the clean target.
<<    .PHONY: clean
      
      clean: %:
          rm -f *$(EXT_OBJ) *$(EXT_LIB)
>>
  
  Three-part implicit rules are inherited by the subdirectories in the
exact same way as with the usual two-part implicit rules.
  There are several special targets, including the following.
  
  
   - .PHONY : declare a "phony" target. That is, the target does not
   correspond to a file. 
   - .ORDER : declare a rule for dependency ordering. 
   - .INCLUDE : define a rule to generate a file for textual inclusion. 
   - .SUBDIRS : specify subdirectories that are part of the project. 
   - .SCANNER : define a rule for dependency scanning. 
  
  There are several rule options.
  
  
   - :optional: dependencies the subsequent dependencies are optional,
   it is acceptable if they do not exist. 
   - :exists: dependencies the subsequent dependencies must exist, but
   changes to not affect whether this rule is considered out-of-date. 
   - :effects: targets the subsequent files are side-effects of the
   rule. That is, they may be created and/or modified while the rule is
   executing. Rules with overlapping side-effects are never executed in
   parallel. 
   - :scanner: name the subsequent name is the name of the .SCANNER rule
   for the target to be built. 
   - :value: expr the expr is a "value" dependency. The rule is
   considered out-of-date whenever the value of the expr changes. 
  
  Several variables are defined during rule evaluation.
  
  
   - $* : the name of the
   target with the outermost suffix removed. 
   - $> : the name of the
   target with all suffixes removed. 
   - $@ : the name of the
   target. 
   - $^ : the explicit file
   dependencies, sorted alphabetically, with duplicates removed. 
   - $+ : all explicit file
   dependencies, with order preserved. 
   - $< : the first explicit
   file dependency. 
   - $& : the free values of
   the rule (often used in :value: dependencies). 
  
  

B.2.2.6   Shell commands
------------------------
  
  See the chapter on shell commands
(Chapter 11*Note Chapter 11::).
  While it is possible to give a precise specification of shell
commands, the informal description is simpler. Any non-empty statement
where each prefix is not one of the other statements, is considered to
be a shell command. Here are some examples.
<<    ls                                 -- shell command
      echo Hello world > /dev/null       -- shell command
      echo(Hello world)                  -- function application
      echo(Hello world) > /dev/null      -- syntax error
      echo Hello: world                  -- rule
      X=1 getenv X                       -- variable definition
      env X=1 getenv X                   -- shell command
      if true                            -- special form
      \if true                           -- shell command
      "if" true                          -- shell command
>>
  

File: omake-doc, Node: Section B-3,	Next: Section B-4,	Prev: Section B-2,	Up: Appendix B
  

B.3   Dollar modifiers
**********************

   
  Inline applications have a function and zero-or-more arguments.
Evaluation is normally strict: when an application is evaluated, the
function identifier is evaluated to a function, the arguments are then
evaluated and the function is called with the evaluated arguments.
  The additional "dollar" sequences specify additional control over
evaluation. The token $` defines a "lazy" application, where evaluation
is delayed until a value is required. The $, sequence performs an
"eager" application within a lazy context.
  To illustrate, consider the expression $(addsuffix .c, $(FILES)). The
addsuffix function appends its first argument to each value in its
second argument. The following osh interaction demonstrates the normal
bahavior.
<<osh> FILES[] = a b c
  - : <array a b c>
  osh> X = $(addsuffix .c, $(FILES))
  - : <array ...>
  osh> FILES[] = 1 2 3 # redefine FILES
  - : <array 1 2 3>
  osh> println($"$X")  # force the evaluation and print
  a.c b.c c.c
>>
  
  When the lazy operator $` is used instead, evaluation is delayed until
it is printed. In the following sample, the value for X has changed to
the $(apply ..) form, but otherwise the result is unchanged because it
it printed immediately.
<<osh> FILES[] = a b c
  - : <array a b c>
  osh> SUF = .c
  - : ".c"
  osh> X = $`(addsuffix $(SUF), $(FILES))
  - : $(apply global.addsuffix ...)
  osh> println($"$X")  # force the evaluation and print
  a.c b.c c.c
>>
  
  However, consider what happens if we redefine the FILES variable after
the definition for X. In the following sample, the result changes
because evaluation occurs after the values for FILES has been redefined.
<<osh> FILES[] = a b c
  - : <array a b c>
  osh> SUF = .c
  - : ".c"
  osh> X = $`(addsuffix $(SUF), $(FILES))
  - : $(apply global.addsuffix ...)
  osh> SUF = .x
  osh> FILES[] = 1 2 3
  osh> println($"$X")  # force the evaluation and print
  1.x 2.x 3.x
>>
  
  In some cases, more explicit control is desired over evaluation. For
example, we may wish to evaluate SUF early, but allow for changes to the
FILES variable. The $,(SUF) expression forces early evaluation.
<<osh> FILES[] = a b c
  - : <array a b c>
  osh> SUF = .c
  - : ".c"
  osh> X = $`(addsuffix $,(SUF), $(FILES))
  - : $(apply global.addsuffix ...)
  osh> SUF = .x
  osh> FILES[] = 1 2 3
  osh> println($"$X")  # force the evaluation and print
  1.c 2.c 3.c
>>
  

File: omake-doc, Node: Section B-4,	Prev: Section B-3,	Up: Appendix B
  

B.4   Programming syntax
************************

   
  This feature was introduced in version 0.9.8.6.
  The standard OMake language is designed to make it easy to specify
strings. By default, all values are strings, and strings are any
sequence of text and variable references; quote symbols are not
necessary.
<<    CFLAGS += -g -Wall
>>
  
  The tradeoff is that variable references are a bit longer, requiring
the syntax $(...).
  The "program syntax" inverts this behavior. The main differences are
the following.
  
  
   1. Identifiers represent variables. 
   2. Strings must be quoted. 
   3. Function application is written f(exp1, ..., expN). 
  
  It is only the syntax of expressions that changes. The large scale
program is as before: a program is a sequence of definitions, commands,
indentation is significant, etc. However, the syntax of expressions
changes, where an expression is 1) the value on the right of a variable
definition Var = <exp>, or 2) an argument to a function.
  The following table lists the syntax for expressions.
 e ::= 0, 1, 2, ...                            integers                 
  
    |  0.1, 1E+23, ...                         floating-point constants 
  
    |  x, ABC, ...                             identifiers              
  
    |  id::id                                  scoped name              
  
    |  id.id. ... id                           projection               
  
    |  - e                                     negation                 
  
    |  e + e | e - e | e * e | e / e | e % e   arithmetic               
  
    |  e ^ e | e & e | e | e                   bitwise operations       
  
    |  e << e | e >> e | e >>> e               shifting                 
  
    |  e && e | e || e                         Boolean operations       
  
    |  e < e | e <= e | e = e | e >= e | e > e comparisons              
  
    |  e(e, ..., e)                            function application     
  
    |  e[e]                                    array subscripting       
  
    |  ( e )                                   parenthesized expressions
  
    |  " ... " | ' ... '                       strings                  
  
    |  $" ... " | $' ... '                     strings                  
  
    |  $( ... )                                variables and
applications  
  
  Note that the $-style expressions are still permitted.
* Menu:

* Subsection B-4-1::	Examples


File: omake-doc, Node: Subsection B-4-1,	Up: Section B-4
  

B.4.1   Examples
================
  
  The program-syntax is specified with the directive program-syntax,
which is scoped in the normal way.
<<    program-syntax
  
      i = 0
      l[] =
      while i < 10
          l[] += i
          i = i + 1
      println($"The indexes are: $l")
>>
  
  You can mix normal and program syntax.
<<program-syntax
  
  add2(i) =
      eprintln($"add2($i)")
      return i + 2
  
  mul2(i, j) =
      eprintln($"mul2($i, $j)")
      return i * j
  
  println(mul2(mul2(3, 4), $(add2 1 << 20)))
>>
  

File: omake-doc, Node: Appendix C,	Next: Appendix D,	Prev: Appendix B,	Up: Top
  

Appendix C     Index
********************
  
  
   - --absname, A.3.20*Note Subsection A-3-20:: 
   - --all-dependencies, A.3.15*Note Subsection A-3-15:: 
   - --configure, A.3.9*Note Subsection A-3-9:: 
   - --depend, A.3.8*Note Subsection A-3-8:: 
   - --dotomake, A.3.11*Note Subsection A-3-11:: 
   - --force-dotomake, A.3.10*Note Subsection A-3-10:: 
   - --install, A.3.17*Note Subsection A-3-17:: 
   - --install-all, A.3.18*Note Subsection A-3-18:: 
   - --install-force, A.3.19*Note Subsection A-3-19:: 
   - --output-at-end, A.2.11*Note Subsection A-2-11:: 
   - --output-normal, A.2.8*Note Subsection A-2-8:: 
   - --output-only-errors, A.2.10*Note Subsection A-2-10:: 
   - --output-postpone, A.2.9*Note Subsection A-2-9:: 
   - --print-dependencies, A.3.13*Note Subsection A-3-13:: 
   - --print-exit, A.2.6*Note Subsection A-2-6:: 
   - --print-status, A.2.5*Note Subsection A-2-5:: 
   - --progress, A.2.4*Note Subsection A-2-4:: 
   - --show-dependencies, A.3.14*Note Subsection A-3-14:: 
   - --verbose, A.2.7*Note Subsection A-2-7:: 
   - --verbose-dependencies, A.3.16*Note Subsection A-3-16:: 
   - -j, A.3.12*Note Subsection A-3-12:: 
   - -k, A.3.1*Note Subsection A-3-1:: 
   - -n, A.3.2*Note Subsection A-3-2:: 
   - -o, A.2.12*Note Subsection A-2-12:: 
   - -P, A.3.4*Note Subsection A-3-4:: 
   - -p, A.3.3*Note Subsection A-3-3:: 
   - -R, A.3.5*Note Subsection A-3-5:: 
   - -S, A.2.2*Note Subsection A-2-2:: 
   - -s, A.2.1*Note Subsection A-2-1:: 
   - -t, A.3.6*Note Subsection A-3-6:: 
   - -U, A.3.7*Note Subsection A-3-7:: 
   - -w, A.2.3*Note Subsection A-2-3:: 
 
   - .BUILD_BEGIN, 13.1*Note Section 13-1:: 
   - .BUILD_FAILURE, 13.1*Note Section 13-1:: 
   - .BUILD_SUCCESS, 13.1*Note Section 13-1:: 
   - .BUILDORDER, 10.3.6*Note Subsection 10-3-6:: 
   - .DEFAULT, 8.7*Note Section 8-7::,
   8.12.1*Note Subsection 8-12-1:: 
   - .INCLUDE, 8.9*Note Section 8-9:: 
   - .MEMO, 4.15.1.1*Note Subsection 4-15-1:: 
   - .ORDER, 10.3.6*Note Subsection 10-3-6:: 
   - .omakerc, A.8*Note Section A-8:: 
   - .PHONY, 6.3*Note Section 6-3::,
   8.10*Note Section 8-10::, 8.11.3*Note Subsection 8-11-3::,
   8.12.1*Note Subsection 8-12-1::,
   8.12.2*Note Subsection 8-12-2:: 
   - .RULE, 6.3*Note Section 6-3:: 
   - .SCANNER, 3.4.3*Note Subsection 3-4-3::,
   8.6*Note Section 8-6::, 8.11.2*Note Subsection 8-11-2:: 
   - .STATIC, 4.15.1*Note Subsection 4-15-1:: 
   - .SUBDIRS, 3*Note Chapter 3::,
   8.8*Note Section 8-8:: 
   - .SUBDIRS bodies, 3.5*Note Section 3-5:: 
 
   - :effects:, 8.5.2*Note Subsection 8-5-2:: 
   - :exists:, 8.5.1*Note Subsection 8-5-1:: 
   - :key:, 4.15.1.2*Note Subsection 4-15-1:: 
   - :scanner:, 8.6.1*Note Subsection 8-6-1:: 
   - :value:, 8.5.3*Note Subsection 8-5-3:: 
 
   - $&, B.2.2.5*Note Subsection B-2-2:: 
   - $*, 8*Note Chapter 8::,
   B.2.2.5*Note Subsection B-2-2:: 
   - $+, 8*Note Chapter 8::,
   B.2.2.5*Note Subsection B-2-2:: 
   - $<, 8*Note Chapter 8::,
   B.2.2.5*Note Subsection B-2-2:: 
   - $>, B.2.2.5*Note Subsection B-2-2:: 
   - $@, 8*Note Chapter 8::,
   B.2.2.5*Note Subsection B-2-2:: 
   - $^, 8*Note Chapter 8::,
   B.2.2.5*Note Subsection B-2-2:: 
 
   - ABORT_ON_COMMAND_ERROR, 13.4.1*Note Subsection 13-4-1:: 
   - ABORT_ON_DEPENDENCY_ERRORS, 13.6.4*Note Subsection 13-6-4:: 
   - AC_MSG_CHECKING, 14.2*Note Section 14-2:: 
   - AC_MSG_ERROR, 14.2*Note Section 14-2:: 
   - AC_MSG_RESULT, 14.2*Note Section 14-2:: 
   - AC_MSG_WARN, 14.2*Note Section 14-2:: 
   - AC_TRY_COMPILE, 14.2*Note Section 14-2:: 
   - AC_TRY_LINK, 14.2*Note Section 14-2:: 
   - AC_TRY_RUN, 14.2*Note Section 14-2:: 
   - AR, 13.5.2*Note Subsection 13-5-2:: 
   - Array, 12.1.7*Note Subsection 12-1-7:: 
   - AS, 13.5.2*Note Subsection 13-5-2:: 
   - ASFLAGS, 13.5.2*Note Subsection 13-5-2:: 
   - ASOUT, 13.5.2*Note Subsection 13-5-2:: 
   - absname, 10.1.9*Note Subsection 10-1-9:: 
   - accept, 10.8.31*Note Subsection 10-8-31:: 
   - add, 9.4.3*Note Subsection 9-4-3:: 
   - add-project-directories, 10.6.2*Note Subsection 10-6-2:: 
   - add-wrapper, 9.3.29*Note Subsection 9-3-29:: 
   - addprefix, 9.3.27*Note Subsection 9-3-27:: 
   - addprefixes, 9.3.23*Note Subsection 9-3-23:: 
   - addsuffix, 9.3.21*Note Subsection 9-3-21:: 
   - addsuffixes, 9.3.23*Note Subsection 9-3-23:: 
   - aliases, 15.2*Note Section 15-2:: 
   - and, 9.2.3*Note Subsection 9-2-3:: 
   - apply, 9.5.2*Note Subsection 9-5-2:: 
   - applya, 9.5.3*Note Subsection 9-5-3:: 
   - array, 9.3.1*Note Subsection 9-3-1:: 
   - arrays, 4.3*Note Section 4-3:: 
   - asr, 9.4.3*Note Subsection 9-4-3:: 
   - awk, 3.4.3*Note Subsection 3-4-3::,
   10.11.5*Note Subsection 10-11-5:: 
 
   - BIBTEX, 13.7.1*Note Subsection 13-7-1:: 
   - BUILD_SUMMARY, 9.1*Note Section 9-1:: 
   - BYTE_ENABLED, 13.6.2*Note Subsection 13-6-2:: 
   - basename, 10.1.4*Note Subsection 10-1-4:: 
   - bg, 11.10.2*Note Subsection 11-10-2::,
   12.1.22*Note Subsection 12-1-22:: 
   - bind, 10.8.29*Note Subsection 10-8-29:: 
   - break, 9.3.45*Note Subsection 9-3-45:: 
   - build, 13.3.6*Note Subsection 13-3-6:: 
   - build model, 3*Note Chapter 3:: 
 
   - CAMLP4, 13.6.2*Note Subsection 13-6-2:: 
   - CC, 13.5.2*Note Subsection 13-5-2:: 
   - CCOMPTYPE, 9.1*Note Section 9-1:: 
   - CCOUT, 13.5.2*Note Subsection 13-5-2:: 
   - CDLL_IMPLIES_STATIC, 13.5.4.1*Note Subsection 13-5-4:: 
   - CFLAGS, 13.5.2*Note Subsection 13-5-2:: 
   - CGeneratedFiles, 13.5.3.1*Note Subsection 13-5-3:: 
   - Channel, 12.1.15*Note Subsection 12-1-15:: 
   - CheckCHeader, 14.1.6*Note Subsection 14-1-6:: 
   - CheckCLib, 14.1.7*Note Subsection 14-1-7:: 
   - CheckProg, 14.1.8*Note Subsection 14-1-8:: 
   - CL_FOUND, 13.5.1.2*Note Subsection 13-5-1:: 
   - CMXS_ENABLED, 13.6.2*Note Subsection 13-6-2:: 
   - CMXS_SUPPORTED, 13.6.1*Note Subsection 13-6-1:: 
   - ConfMsgChecking, 14.1.1*Note Subsection 14-1-1:: 
   - ConfMsgError, 14.1.2*Note Subsection 14-1-2:: 
   - ConfMsgFound, 14.1.3*Note Subsection 14-1-3:: 
   - ConfMsgResult, 14.1.1*Note Subsection 14-1-1:: 
   - ConfMsgWarn, 14.1.2*Note Subsection 14-1-2:: 
   - ConfMsgYesNo, 14.1.3*Note Subsection 14-1-3:: 
   - CPP, 13.5.2*Note Subsection 13-5-2:: 
   - CProgram, 13.5.4.5*Note Subsection 13-5-4:: 
   - CProgramCopy, 13.5.4.6*Note Subsection 13-5-4:: 
   - CProgramInstall, 13.5.4.7*Note Subsection 13-5-4:: 
   - CWD, 13.4.1*Note Subsection 13-4-1:: 
   - CXX, 13.5.2*Note Subsection 13-5-2:: 
   - CXXFLAGS, 13.5.2*Note Subsection 13-5-2:: 
   - CXXProgram, 13.5.4.8*Note Subsection 13-5-4:: 
   - CXXProgramInstall, 13.5.4.8*Note Subsection 13-5-4:: 
   - c-escaped, 9.3.15*Note Subsection 9-3-15:: 
   - capitalize, 9.3.37*Note Subsection 9-3-37:: 
   - case, 9.2.6*Note Subsection 9-2-6:: 
   - cat, 10.11.2*Note Subsection 10-11-2::,
   12.1.22*Note Subsection 12-1-22:: 
   - cats and dogs, 3.4*Note Section 3-4:: 
   - cd, 11.9.2*Note Subsection 11-9-2::,
   12.1.22*Note Subsection 12-1-22:: 
   - channel-name, 10.8.12*Note Subsection 10-8-12:: 
   - chmod, 10.5.9*Note Subsection 10-5-9::,
   12.1.22*Note Subsection 12-1-22:: 
   - chown, 10.5.10*Note Subsection 10-5-10:: 
   - class, B.2.2.1*Note Subsection B-2-2:: 
   - classes, 4.13*Note Section 4-13:: 
   - close, 10.8.5*Note Subsection 10-8-5:: 
   - cmp-versions, 13.2.3*Note Subsection 13-2-3:: 
   - compare, 9.7.4*Note Subsection 9-7-4:: 
   - concat, 9.3.3*Note Subsection 9-3-3:: 
   - conditionals, 4.10*Note Section 4-10:: 
   - connect, 10.8.32*Note Subsection 10-8-32:: 
   - constants, 4.16*Note Section 4-16:: 
   - cp, 12.1.22*Note Subsection 12-1-22:: 
   - create-lazy-map, 9.5.4*Note Subsection 9-5-4:: 
   - create-map, 9.5.4*Note Subsection 9-5-4:: 
 
   - DeclareMLIOnly, 13.6.5.3*Note Subsection 13-6-5:: 
   - DefineCommandVars, 13.2.4*Note Subsection 13-2-4:: 
   - DIRSEP, 13.4.2*Note Subsection 13-4-2:: 
   - Dir, 12.1.14*Note Subsection 12-1-14:: 
   - DVIPDFM, 13.7.1*Note Subsection 13-7-1:: 
   - DVIPDFMFLAGS, 13.7.1*Note Subsection 13-7-1:: 
   - DVIPS, 13.7.1*Note Subsection 13-7-1:: 
   - DVIPSFLAGS, 13.7.1*Note Subsection 13-7-1:: 
   - DynamicCLibrary, 13.5.4.1*Note Subsection 13-5-4:: 
   - DynamicCLibraryCopy, 13.5.4.2*Note Subsection 13-5-4:: 
   - DynamicCLibraryInstall, 13.5.4.3*Note Subsection 13-5-4:: 
   - DynamicCXXLibrary, 13.5.4.9*Note Subsection 13-5-4:: 
   - DynamicCXXLibraryCopy, 13.5.4.9*Note Subsection 13-5-4:: 
   - DynamicCXXLibraryInstall, 13.5.4.9*Note Subsection 13-5-4:: 
   - declare, 5.7*Note Section 5-7:: 
   - decode-uri, 9.3.17*Note Subsection 9-3-17:: 
   - default, 9.2.6*Note Subsection 9-2-6:: 
   - defined, 9.2.10*Note Subsection 9-2-10:: 
   - defined-env, 9.2.11*Note Subsection 9-2-11:: 
   - dependencies, 13.3.1*Note Subsection 13-3-1:: 
   - dependencies-all, 13.3.1*Note Subsection 13-3-1:: 
   - dependencies-proper, 13.3.1*Note Subsection 13-3-1:: 
   - digest, 10.2.5*Note Subsection 10-2-5::,
   12.1.22*Note Subsection 12-1-22:: 
   - digest-in-path, 10.2.7*Note Subsection 10-2-7:: 
   - digest-in-path-optional, 10.2.7*Note Subsection 10-2-7:: 
   - digest-optional, 10.2.5*Note Subsection 10-2-5:: 
   - digest-string, 10.2.5*Note Subsection 10-2-5:: 
   - dir, 10.1.1*Note Subsection 10-1-1:: 
   - dirname, 10.1.5*Note Subsection 10-1-5:: 
   - dirof, 10.1.7*Note Subsection 10-1-7:: 
   - div, 9.4.3*Note Subsection 9-4-3:: 
   - dup, 10.8.13*Note Subsection 10-8-13:: 
   - dup2, 10.8.14*Note Subsection 10-8-14:: 
 
   - EMPTY, 13.4.1*Note Subsection 13-4-1:: 
   - EXE, 13.4.2*Note Subsection 13-4-2:: 
   - EXT_ASM, 13.4.2*Note Subsection 13-4-2:: 
   - EXT_DLL, 13.4.2*Note Subsection 13-4-2:: 
   - EXT_LIB, 13.4.2*Note Subsection 13-4-2:: 
   - EXT_OBJ, 13.4.2*Note Subsection 13-4-2:: 
   - EXTENDED_DIGESTS, 13.6.2*Note Subsection 13-6-2:: 
   - Exception, 12.1.19*Note Subsection 12-1-19:: 
   - echo, 11.9.1*Note Subsection 11-9-1::,
   12.1.22*Note Subsection 12-1-22:: 
   - else, 9.2.5*Note Subsection 9-2-5::,
   B.2.2.1*Note Subsection B-2-2:: 
   - elseif, 9.2.5*Note Subsection 9-2-5::,
   B.2.2.1*Note Subsection B-2-2:: 
   - encode-uri, 9.3.17*Note Subsection 9-3-17:: 
   - eprint, 10.9*Note Section 10-9:: 
   - eprintln, 10.9*Note Section 10-9:: 
   - eprintv, 10.10*Note Section 10-10:: 
   - eprintvln, 10.10*Note Section 10-10:: 
   - eq, 9.4.4*Note Subsection 9-4-4:: 
   - equal, 9.2.2*Note Subsection 9-2-2:: 
   - exists-in-path, 10.2.4*Note Subsection 10-2-4:: 
   - exit, 9.2.9*Note Subsection 9-2-9::,
   12.1.22*Note Subsection 12-1-22:: 
   - export, 6.3*Note Section 6-3::,
   9.3.43*Note Subsection 9-3-43::,
   B.2.2.1*Note Subsection B-2-2:: 
   - extends, B.2.2.1*Note Subsection B-2-2:: 
 
   - File, 12.1.13*Note Subsection 12-1-13:: 
   - Float, 12.1.5*Note Subsection 12-1-5:: 
   - Fun, 12.1.9*Note Subsection 12-1-9:: 
   - fg, 11.10.3*Note Subsection 11-10-3::,
   12.1.22*Note Subsection 12-1-22:: 
   - fgets, 10.8.35*Note Subsection 10-8-35:: 
   - file, 10.1.1*Note Subsection 10-1-1:: 
   - file-check-sort, 10.3.7*Note Subsection 10-3-7:: 
   - file-exists, 10.3.1*Note Subsection 10-3-1:: 
   - file-sort, 10.3.6*Note Subsection 10-3-6:: 
   - filter, 9.3.35*Note Subsection 9-3-35:: 
   - filter-exists, 10.3.3*Note Subsection 10-3-3:: 
   - filter-out, 9.3.36*Note Subsection 9-3-36:: 
   - filter-proper-targets, 10.3.3*Note Subsection 10-3-3:: 
   - filter-targets, 10.3.3*Note Subsection 10-3-3:: 
   - find, 10.7.2*Note Subsection 10-7-2::,
   12.1.22*Note Subsection 12-1-22:: 
   - find-build-targets, 13.3.3*Note Subsection 13-3-3:: 
   - find-in-path, 10.2.6*Note Subsection 10-2-6:: 
   - find-in-path-optional, 10.2.6*Note Subsection 10-2-6:: 
   - find-ocaml-targets-in-path-optional,
   10.3.5*Note Subsection 10-3-5:: 
   - find-targets-in-path, 10.3.4*Note Subsection 10-3-4:: 
   - find-targets-in-path-optional, 10.3.4*Note Subsection 10-3-4:: 
   - float, 9.4.2*Note Subsection 9-4-2:: 
   - flush, 10.8.11*Note Subsection 10-8-11:: 
   - fopen, 10.8.4*Note Subsection 10-8-4:: 
   - foreach, 9.6.1*Note Subsection 9-6-1:: 
   - fprint, 10.9*Note Section 10-9:: 
   - fprintln, 10.9*Note Section 10-9:: 
   - fprintv, 10.10*Note Section 10-10:: 
   - fprintvln, 10.10*Note Section 10-10:: 
   - fsubst, 10.11.6*Note Subsection 10-11-6:: 
   - fullname, 10.1.8*Note Subsection 10-1-8:: 
   - fun, 9.5.1*Note Subsection 9-5-1:: 
   - functions, 4.5*Note Section 4-5:: 
 
   - GCC_FOUND, 13.5.1.1*Note Subsection 13-5-1:: 
   - Group, 10.11.20*Note Subsection 10-11-20:: 
   - GXX_FOUND, 13.5.1.1*Note Subsection 13-5-1:: 
   - ge, 9.4.4*Note Subsection 9-4-4:: 
   - get-registry, 9.2.15*Note Subsection 9-2-15:: 
   - getchar, 10.8.33*Note Subsection 10-8-33:: 
   - getenv, 9.2.12*Note Subsection 9-2-12:: 
   - getgrgid, 10.11.21*Note Subsection 10-11-21:: 
   - getgrnam, 10.11.21*Note Subsection 10-11-21:: 
   - gethostbyname, 10.8.23*Note Subsection 10-8-23:: 
   - getprotobyname, 10.8.25*Note Subsection 10-8-25:: 
   - getpwents, 10.11.19*Note Subsection 10-11-19:: 
   - getpwnam, 10.11.18*Note Subsection 10-11-18:: 
   - getpwuid, 10.11.18*Note Subsection 10-11-18:: 
   - gets, 10.8.34*Note Subsection 10-8-34:: 
   - getservbyname, 10.8.27*Note Subsection 10-8-27:: 
   - gettimeofday, 10.11.27*Note Subsection 10-11-27:: 
   - getvar, 9.2.16*Note Subsection 9-2-16:: 
   - glob, 10.4.1*Note Subsection 10-4-1:: 
   - global., 5.3*Note Section 5-3:: 
   - gmtime, 10.11.29*Note Subsection 10-11-29:: 
   - gr_gid, 10.11.20*Note Subsection 10-11-20:: 
   - gr_group, 10.11.20*Note Subsection 10-11-20:: 
   - gr_mem, 10.11.20*Note Subsection 10-11-20:: 
   - gr_name, 10.11.20*Note Subsection 10-11-20:: 
   - grep, 10.11.3*Note Subsection 10-11-3::,
   12.1.22*Note Subsection 12-1-22:: 
   - gt, 9.4.4*Note Subsection 9-4-4:: 
 
   - HOME, 9.1*Note Section 9-1:: 
   - HOST, 9.1*Note Section 9-1:: 
   - Host, 10.8.22*Note Subsection 10-8-22:: 
   - hexify, 9.3.16*Note Subsection 9-3-16:: 
   - history, 11.11.1*Note Subsection 11-11-1::,
   12.1.22*Note Subsection 12-1-22:: 
   - homename, 10.1.10*Note Subsection 10-1-10:: 
   - html-escaped, 9.3.14*Note Subsection 9-3-14:: 
   - html-pre-escaped, 9.3.14*Note Subsection 9-3-14:: 
   - html-string, 9.3.20*Note Subsection 9-3-20:: 
 
   - INCLUDES, 13.5.2*Note Subsection 13-5-2:: 
   - INSTALL, 13.4.2*Note Subsection 13-4-2:: 
   - InChannel, 12.1.16*Note Subsection 12-1-16:: 
   - InetAddr, 10.8.21*Note Subsection 10-8-21:: 
   - Int, 12.1.4*Note Subsection 12-1-4:: 
   - id-escaped, 9.3.15*Note Subsection 9-3-15:: 
   - if, 4.10*Note Section 4-10::,
   9.2.5*Note Subsection 9-2-5::,
   B.2.2.1*Note Subsection B-2-2:: 
   - ignoreeof, 15.1*Note Section 15-1:: 
   - in, 10.1.3*Note Subsection 10-1-3:: 
   - include, 4.8*Note Section 4-8::,
   B.2.2.1*Note Subsection B-2-2:: 
   - inheritance, 4.14*Note Section 4-14:: 
   - input-line, 10.8.6*Note Subsection 10-8-6:: 
   - int, 9.4.1*Note Subsection 9-4-1:: 
   - intersection, 9.3.32*Note Subsection 9-3-32:: 
   - intersects, 9.3.33*Note Subsection 9-3-33:: 
 
   - jobs, 11.10.1*Note Subsection 11-10-1::,
   12.1.22*Note Subsection 12-1-22:: 
   - join, 9.3.11*Note Subsection 9-3-11:: 
 
   - keyword arguments, 4.5.2*Note Subsection 4-5-2:: 
   - kill, 11.10.6*Note Subsection 11-10-6::,
   12.1.22*Note Subsection 12-1-22:: 
 
   - LATEX, 13.7.1*Note Subsection 13-7-1:: 
   - LATEXFLAGS, 13.7.1*Note Subsection 13-7-1:: 
   - LaTeXDocument, 13.7.2.1*Note Subsection 13-7-2:: 
   - LaTeXDocumentCopy, 13.7.2.3*Note Subsection 13-7-2:: 
   - LaTeXDocumentInstall, 13.7.2.4*Note Subsection 13-7-2:: 
   - LD, 13.5.2*Note Subsection 13-5-2:: 
   - LDFLAGS, 13.5.2*Note Subsection 13-5-2:: 
   - LDFLAGS_DLL, 13.5.2*Note Subsection 13-5-2:: 
   - LDOUT, 13.5.2*Note Subsection 13-5-2:: 
   - LEX, 13.5.2*Note Subsection 13-5-2:: 
   - Lexer, 10.11.9*Note Subsection 10-11-9:: 
   - LIB_FOUND, 13.5.1.2*Note Subsection 13-5-1:: 
   - LIBS, 13.5.2*Note Subsection 13-5-2:: 
   - LocalCGeneratedFiles, 13.5.3.1*Note Subsection 13-5-3:: 
   - LocalOCamlGeneratedFiles, 13.6.5.1*Note Subsection 13-6-5:: 
   - LocalTeXGeneratedFiles, 13.7.2.2*Note Subsection 13-7-2:: 
   - Location, 12.1.18*Note Subsection 12-1-18:: 
   - land, 9.4.3*Note Subsection 9-4-3:: 
   - le, 9.4.4*Note Subsection 9-4-4:: 
   - length, 9.3.4*Note Subsection 9-3-4:: 
   - lex, 10.11.7*Note Subsection 10-11-7:: 
   - lex-search, 10.11.8*Note Subsection 10-11-8:: 
   - link, 10.5.6*Note Subsection 10-5-6:: 
   - link-order sorting, 10.3.6*Note Subsection 10-3-6:: 
   - listen, 10.8.30*Note Subsection 10-8-30:: 
   - ln-or-cp, 12.1.22*Note Subsection 12-1-22:: 
   - lnot, 9.4.3*Note Subsection 9-4-3:: 
   - localtime, 10.11.29*Note Subsection 10-11-29:: 
   - lockf, 10.8.20*Note Subsection 10-8-20:: 
   - lor, 9.4.3*Note Subsection 9-4-3:: 
   - lowercase, 9.3.40*Note Subsection 9-3-40:: 
   - ls, 10.4.2*Note Subsection 10-4-2:: 
   - lseek, 10.8.8*Note Subsection 10-8-8:: 
   - lsl, 9.4.3*Note Subsection 9-4-3:: 
   - lsr, 9.4.3*Note Subsection 9-4-3:: 
   - lstat, 10.5.3*Note Subsection 10-5-3:: 
   - lt, 9.4.4*Note Subsection 9-4-4:: 
   - lxor, 9.4.3*Note Subsection 9-4-3:: 
 
   - MACHINE, 9.1*Note Section 9-1:: 
   - MAKEINDEX, 13.7.1*Note Subsection 13-7-1:: 
   - Map, 12.1.2*Note Subsection 12-1-2:: 
   - MENHIR_AVAILABLE, 13.6.1*Note Subsection 13-6-1:: 
   - MENHIR_ENABLED, 13.6.2*Note Subsection 13-6-2:: 
   - MENHIR_FLAGS, 13.6.3*Note Subsection 13-6-3:: 
   - mapprefix, 9.3.28*Note Subsection 9-3-28:: 
   - mapsuffix, 9.3.22*Note Subsection 9-3-22:: 
   - match, 4.11*Note Section 4-11::,
   9.2.6*Note Subsection 9-2-6::,
   B.2.2.1*Note Subsection B-2-2:: 
   - max, 9.4.3*Note Subsection 9-4-3:: 
   - mem, 9.3.31*Note Subsection 9-3-31:: 
   - min, 9.4.3*Note Subsection 9-4-3:: 
   - mkdir, 10.5.1*Note Subsection 10-5-1::,
   12.1.22*Note Subsection 12-1-22:: 
   - mkfifo, 10.8.18*Note Subsection 10-8-18:: 
   - mktime, 10.11.30*Note Subsection 10-11-30:: 
   - mod, 9.4.3*Note Subsection 9-4-3:: 
   - mul, 9.4.3*Note Subsection 9-4-3:: 
   - mv, 12.1.22*Note Subsection 12-1-22:: 
 
   - NATIVE_ENABLED, 13.6.2*Note Subsection 13-6-2:: 
   - NCURSES_AVAILABLE, 14.3.1*Note Subsection 14-3-1:: 
   - NCURSES_CFLAGS, 14.3.1*Note Subsection 14-3-1:: 
   - NCURSES_CLIBS, 14.3.1*Note Subsection 14-3-1:: 
   - NCURSES_TERMH_IN_NCURSES, 14.3.1*Note Subsection 14-3-1:: 
   - NODENAME, 9.1*Note Section 9-1:: 
   - Node, 12.1.12*Note Subsection 12-1-12:: 
   - Number, 12.1.3*Note Subsection 12-1-3:: 
   - neg, 9.4.3*Note Subsection 9-4-3:: 
   - normalize-time, 10.11.30*Note Subsection 10-11-30:: 
   - not, 9.2.1*Note Subsection 9-2-1:: 
   - nth, 9.3.5*Note Subsection 9-3-5:: 
   - nth-hd, 9.3.7*Note Subsection 9-3-7:: 
   - nth-tl, 9.3.8*Note Subsection 9-3-8:: 
 
   - Object, 12.1.1*Note Subsection 12-1-1:: 
   - OCAML_BYTE_LINK_FLAGS, 13.6.3*Note Subsection 13-6-3:: 
   - OCAML_CC, 13.6.2*Note Subsection 13-6-2:: 
   - OCAML_CFLAGS, 13.6.2*Note Subsection 13-6-2:: 
   - OCAML_CLIBS, 13.6.4*Note Subsection 13-6-4:: 
   - OCAML_LIB_FLAGS, 13.6.4*Note Subsection 13-6-4:: 
   - OCAML_LIBS, 13.6.4*Note Subsection 13-6-4:: 
   - OCAML_LINK_FLAGS, 13.6.3*Note Subsection 13-6-3:: 
   - OCAML_NATIVE_LINK_FLAGS, 13.6.3*Note Subsection 13-6-3:: 
   - OCAML_OTHER_LIBS, 13.6.4*Note Subsection 13-6-4:: 
   - OCAMLC, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLCFLAGS, 13.6.3*Note Subsection 13-6-3:: 
   - OCAMLDEP, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLDEP_MODULES_AVAILABLE, 13.6.1*Note Subsection 13-6-1:: 
   - OCAMLDEP_MODULES_ENABLED, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLDEPFLAGS, 13.6.3*Note Subsection 13-6-3:: 
   - OCAMLFIND, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLFIND_EXISTS, 13.6.1*Note Subsection 13-6-1:: 
   - OCAMLFINDFLAGS, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLFLAGS, 13.6.3*Note Subsection 13-6-3:: 
   - OCAMLINCLUDES, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLINCLUDES_FOR_OCAMLDEP_MODULES,
   13.6.2*Note Subsection 13-6-2:: 
   - OCAMLLEX, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLLEXFLAGS, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLLIB, 13.6.1*Note Subsection 13-6-1:: 
   - OCAMLLINK, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLMKTOP, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLOPT, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLOPT_EXISTS, 13.6.1*Note Subsection 13-6-1:: 
   - OCAMLOPTFLAGS, 13.6.3*Note Subsection 13-6-3:: 
   - OCAMLOPTLINK, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLPACKS, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLPPFLAGS, 13.6.3*Note Subsection 13-6-3:: 
   - OCAMLYACC, 13.6.2*Note Subsection 13-6-2:: 
   - OCAMLYACCFLAGS, 13.6.2*Note Subsection 13-6-2:: 
   - OCamlGeneratedFiles, 13.6.5.1*Note Subsection 13-6-5:: 
   - OCamlLibrary, 13.6.6.1*Note Subsection 13-6-6:: 
   - OCamlLibraryCopy, 13.6.6.2*Note Subsection 13-6-6:: 
   - OCamlLibraryInstall, 13.6.6.3*Note Subsection 13-6-6:: 
   - OCamlProgram, 13.6.6.4*Note Subsection 13-6-6:: 
   - OCamlProgramCopy, 13.6.6.5*Note Subsection 13-6-6:: 
   - OCamlProgramInstall, 13.6.6.6*Note Subsection 13-6-6:: 
   - OMAKE_VERSION, 9.1*Note Section 9-1:: 
   - OMAKEFLAGS, A.5.1*Note Subsection A-5-1:: 
   - OMAKELIB, A.5.2*Note Subsection A-5-2:: 
   - OMAKEPATH, 9.1*Note Section 9-1:: 
   - OMakeFlags, 13.2.1*Note Subsection 13-2-1:: 
   - OMakefile, 2.8*Note Section 2-8::,
   3*Note Chapter 3:: 
   - OMakeroot, 2.8*Note Section 2-8::,
   3*Note Chapter 3::, 13.4*Note Section 13-4:: 
   - OMakeVersion, 13.2.2*Note Subsection 13-2-2:: 
   - OS_VERSION, 9.1*Note Section 9-1:: 
   - OSTYPE, 9.1*Note Section 9-1:: 
   - OutChannel, 12.1.17*Note Subsection 12-1-17:: 
   - objects, 4.12*Note Section 4-12:: 
   - ocaml-escaped, 9.3.14*Note Subsection 9-3-14:: 
   - open, 4.8*Note Section 4-8::,
   B.2.2.1*Note Subsection B-2-2:: 
   - open-in-string, 10.8.2*Note Subsection 10-8-2:: 
   - open-out-string, 10.8.3*Note Subsection 10-8-3:: 
   - or, 9.2.4*Note Subsection 9-2-4:: 
   - out-contents, 10.8.3*Note Subsection 10-8-3:: 
 
   - PATHSEP, 13.4.2*Note Subsection 13-4-2:: 
   - Parser, 10.11.13*Note Subsection 10-11-13:: 
   - Passwd, 10.11.17*Note Subsection 10-11-17:: 
   - PDFLATEX, 13.7.1*Note Subsection 13-7-1:: 
   - PDFLATEXFLAGS, 13.7.1*Note Subsection 13-7-1:: 
   - PID, 9.1*Note Section 9-1:: 
   - Protocol, 10.8.24*Note Subsection 10-8-24:: 
   - pipe, 10.8.17*Note Subsection 10-8-17:: 
   - print, 10.9*Note Section 10-9:: 
   - println, 10.9*Note Section 10-9:: 
   - printv, 10.10*Note Section 10-10:: 
   - printvln, 10.10*Note Section 10-10:: 
   - private., 5.1*Note Section 5-1:: 
   - project-directories, 13.3.4*Note Subsection 13-3-4:: 
   - prompt, 15.1*Note Section 15-1:: 
   - prompt-invisible, 10.11.26*Note Subsection 10-11-26:: 
   - prompt-invisible-begin, 10.11.25*Note Subsection 10-11-25:: 
   - prompt-invisible-end, 10.11.25*Note Subsection 10-11-25:: 
   - protected., 5.4*Note Section 5-4:: 
   - public., 5.5*Note Section 5-5:: 
   - pw_dir, 10.11.17*Note Subsection 10-11-17:: 
   - pw_gecos, 10.11.17*Note Subsection 10-11-17:: 
   - pw_gid, 10.11.17*Note Subsection 10-11-17:: 
   - pw_name, 10.11.17*Note Subsection 10-11-17:: 
   - pw_passwd, 10.11.17*Note Subsection 10-11-17:: 
   - pw_shell, 10.11.17*Note Subsection 10-11-17:: 
   - pw_uid, 10.11.17*Note Subsection 10-11-17:: 
   - pwd, 12.1.22*Note Subsection 12-1-22:: 
 
   - quotations, 4.4*Note Section 4-4:: 
   - quote, 9.3.18*Note Subsection 9-3-18:: 
   - quote-argv, 9.3.19*Note Subsection 9-3-19:: 
   - quoted strings, 7.2*Note Section 7-2:: 
 
   - READLINE_AVAILABLE, 14.3.2*Note Subsection 14-3-2:: 
   - READLINE_CFLAGS, 14.3.2*Note Subsection 14-3-2:: 
   - READLINE_CLIBS, 14.3.2*Note Subsection 14-3-2:: 
   - READLINE_GNU, 14.3.2*Note Subsection 14-3-2:: 
   - ROOT, 13.4.1*Note Subsection 13-4-1:: 
   - Rule, 12.1.10*Note Subsection 12-1-10:: 
   - RunCProg, 14.1.5*Note Subsection 14-1-5:: 
   - RuntimeException, 12.1.20*Note Subsection 12-1-20:: 
   - raise, 9.2.8*Note Subsection 9-2-8:: 
   - random, 9.3.46*Note Subsection 9-3-46:: 
   - random-init, 9.3.46*Note Subsection 9-3-46:: 
   - read, 10.8.6*Note Subsection 10-8-6:: 
   - readlink, 10.5.8*Note Subsection 10-5-8:: 
   - readlink-raw, 10.5.8*Note Subsection 10-5-8:: 
   - regular expressions, 10.11.1*Note Subsection 10-11-1:: 
   - rehash, 10.2.3*Note Subsection 10-2-3::,
   12.1.22*Note Subsection 12-1-22:: 
   - remove-project-directories, 10.6.3*Note Subsection 10-6-3:: 
   - removeprefix, 9.3.24*Note Subsection 9-3-24:: 
   - removesuffix, 9.3.25*Note Subsection 9-3-25:: 
   - rename, 10.5.5*Note Subsection 10-5-5:: 
   - replace-nth, 9.3.6*Note Subsection 9-3-6:: 
   - replacesuffixes, 9.3.26*Note Subsection 9-3-26:: 
   - return, 4.5*Note Section 4-5::,
   B.2.2.1*Note Subsection B-2-2:: 
   - rev, 9.3.10*Note Subsection 9-3-10:: 
   - rewind, 10.8.9*Note Subsection 10-8-9:: 
   - rm, 12.1.22*Note Subsection 12-1-22:: 
   - rootname, 10.1.6*Note Subsection 10-1-6:: 
   - rule, 13.3.5*Note Subsection 13-3-5:: 
   - rule, options, 8.5*Note Section 8-5:: 
   - rule, scoping, 8.11*Note Section 8-11:: 
   - rules, bounded implicit, 8.2*Note Section 8-2:: 
   - rules, implicit, 8.1*Note Section 8-1:: 
 
   - SCANNER_MODE, 13.4.1*Note Subsection 13-4-1:: 
   - Sequence, 12.1.6*Note Subsection 12-1-6:: 
   - Service, 10.8.26*Note Subsection 10-8-26:: 
   - Shell, 12.1.22*Note Subsection 12-1-22:: 
   - SNPRINTF_AVAILABLE, 14.3.3*Note Subsection 14-3-3:: 
   - STDLIB, 9.1*Note Section 9-1:: 
   - STDROOT, 13.4.1*Note Subsection 13-4-1:: 
   - Stat, 10.5.2*Note Subsection 10-5-2:: 
   - StaticCLibrary, 13.5.4.1*Note Subsection 13-5-4:: 
   - StaticCLibraryCopy, 13.5.4.2*Note Subsection 13-5-4:: 
   - StaticCLibraryInstall, 13.5.4.3*Note Subsection 13-5-4:: 
   - StaticCObject, 13.5.4.4*Note Subsection 13-5-4:: 
   - StaticCObjectCopy, 13.5.4.4*Note Subsection 13-5-4:: 
   - StaticCObjectInstall, 13.5.4.4*Note Subsection 13-5-4:: 
   - StaticCXXLibrary, 13.5.4.9*Note Subsection 13-5-4:: 
   - StaticCXXLibraryCopy, 13.5.4.9*Note Subsection 13-5-4:: 
   - StaticCXXLibraryInstall, 13.5.4.9*Note Subsection 13-5-4:: 
   - String, 12.1.8*Note Subsection 12-1-8:: 
   - SYSNAME, 9.1*Note Section 9-1:: 
   - scan, 10.11.4*Note Subsection 10-11-4:: 
   - section, 4.9*Note Section 4-9::,
   8.3*Note Section 8-3::, B.2.2.1*Note Subsection B-2-2::
   
   - section rule, 8.4*Note Section 8-4:: 
   - select, 10.8.19*Note Subsection 10-8-19:: 
   - sequence-forall, 9.7.1*Note Subsection 9-7-1:: 
   - sequence-sort, 9.7.3*Note Subsection 9-7-3:: 
   - set, 9.3.30*Note Subsection 9-3-30:: 
   - set-close-on-exec-mode, 10.8.16*Note Subsection 10-8-16:: 
   - set-diff, 9.3.34*Note Subsection 9-3-34:: 
   - set-nonblock, 10.8.15*Note Subsection 10-8-15:: 
   - setenv, 9.2.13*Note Subsection 9-2-13:: 
   - setvar, 9.2.17*Note Subsection 9-2-17:: 
   - shell, 9.3.42*Note Subsection 9-3-42:: 
   - socket, 10.8.28*Note Subsection 10-8-28:: 
   - sorting (link-order), 10.3.6*Note Subsection 10-3-6:: 
   - split, 9.3.2*Note Subsection 9-3-2:: 
   - sql-escaped, 9.3.15*Note Subsection 9-3-15:: 
   - stat, 10.5.3*Note Subsection 10-5-3:: 
   - stat-reset, 10.3.2*Note Subsection 10-3-2:: 
   - static., 4.15*Note Section 4-15:: 
   - stderr, 10.8.1*Note Subsection 10-8-1:: 
   - stdin, 10.8.1*Note Subsection 10-8-1:: 
   - stdout, 10.8.1*Note Subsection 10-8-1:: 
   - stop, 11.10.4*Note Subsection 11-10-4::,
   12.1.22*Note Subsection 12-1-22:: 
   - string, 9.3.12*Note Subsection 9-3-12:: 
   - string-escaped, 9.3.14*Note Subsection 9-3-14:: 
   - string-length, 9.3.13*Note Subsection 9-3-13:: 
   - sub, 9.4.3*Note Subsection 9-4-3:: 
   - subdirs, 10.4.3*Note Subsection 10-4-3:: 
   - subrange, 9.3.9*Note Subsection 9-3-9:: 
   - suffix, 10.1.11*Note Subsection 10-1-11:: 
   - switch, 4.11*Note Section 4-11::,
   9.2.6*Note Subsection 9-2-6:: 
   - symlink, 10.5.7*Note Subsection 10-5-7:: 
   - symlink-raw, 10.5.7*Note Subsection 10-5-7:: 
   - system, 9.3.41*Note Subsection 9-3-41:: 
 
   - TARGETS, 9.1*Note Section 9-1:: 
   - Target, 12.1.11*Note Subsection 12-1-11:: 
   - TETEX2_ENABLED, 13.7.1*Note Subsection 13-7-1:: 
   - TEXDEPS, 13.7.2.1*Note Subsection 13-7-2:: 
   - TEXINPUTS, 13.7.2.1*Note Subsection 13-7-2:: 
   - TEXVARS, 13.7.2.1*Note Subsection 13-7-2:: 
   - TeXGeneratedFiles, 13.7.2.2*Note Subsection 13-7-2:: 
   - Tm, 10.11.28*Note Subsection 10-11-28:: 
   - TryCompileC, 14.1.4*Note Subsection 14-1-4:: 
   - TryLinkC, 14.1.4*Note Subsection 14-1-4:: 
   - TryRunC, 14.1.4*Note Subsection 14-1-4:: 
   - target, 13.3.2*Note Subsection 13-3-2:: 
   - target-exists, 10.3.1*Note Subsection 10-3-1:: 
   - target-is-proper, 10.3.1*Note Subsection 10-3-1:: 
   - tell, 10.8.10*Note Subsection 10-8-10:: 
   - test, 10.7.1*Note Subsection 10-7-1::,
   12.1.22*Note Subsection 12-1-22:: 
   - tgetstr, 10.11.22*Note Subsection 10-11-22:: 
   - this., 5.2*Note Section 5-2:: 
   - tm_hour, 10.11.28*Note Subsection 10-11-28:: 
   - tm_isdst, 10.11.28*Note Subsection 10-11-28:: 
   - tm_mday, 10.11.28*Note Subsection 10-11-28:: 
   - tm_min, 10.11.28*Note Subsection 10-11-28:: 
   - tm_mon, 10.11.28*Note Subsection 10-11-28:: 
   - tm_sec, 10.11.28*Note Subsection 10-11-28:: 
   - tm_wday, 10.11.28*Note Subsection 10-11-28:: 
   - tm_yday, 10.11.28*Note Subsection 10-11-28:: 
   - tm_year, 10.11.28*Note Subsection 10-11-28:: 
   - tmpfile, 10.1.2*Note Subsection 10-1-2:: 
   - truncate, 10.5.12*Note Subsection 10-5-12:: 
   - try, 9.2.7*Note Subsection 9-2-7::,
   B.2.2.1*Note Subsection B-2-2:: 
 
   - UnbuildableException, 12.1.21*Note Subsection 12-1-21:: 
   - USE_OCAMLFIND, 13.6.2*Note Subsection 13-6-2:: 
   - USEPDFLATEX, 13.7.1*Note Subsection 13-7-1:: 
   - USER, 9.1*Note Section 9-1:: 
   - uge, 9.4.4*Note Subsection 9-4-4:: 
   - ugt, 9.4.4*Note Subsection 9-4-4:: 
   - ule, 9.4.4*Note Subsection 9-4-4:: 
   - ult, 9.4.4*Note Subsection 9-4-4:: 
   - umask, 10.5.13*Note Subsection 10-5-13:: 
   - uncapitalize, 9.3.38*Note Subsection 9-3-38:: 
   - unhexify, 9.3.16*Note Subsection 9-3-16:: 
   - unlink, 10.5.4*Note Subsection 10-5-4:: 
   - unsetenv, 9.2.14*Note Subsection 9-2-14:: 
   - uppercase, 9.3.39*Note Subsection 9-3-39:: 
   - uri-escaped, 9.3.15*Note Subsection 9-3-15:: 
   - utimes, 10.5.11*Note Subsection 10-5-11:: 
 
   - VERBOSE, 9.1*Note Section 9-1:: 
   - VerboseCheckCHeader, 14.1.6*Note Subsection 14-1-6:: 
   - VerboseCheckCLib, 14.1.7*Note Subsection 14-1-7:: 
   - value, 4.5*Note Section 4-5::,
   B.2.2.1*Note Subsection B-2-2:: 
   - variable definition, A.3.21*Note Subsection A-3-21:: 
   - vmount, 2.9*Note Section 2-9::,
   10.6.1*Note Subsection 10-6-1:: 
 
   - wait, 11.10.5*Note Subsection 11-10-5::,
   12.1.22*Note Subsection 12-1-22:: 
   - where, 10.2.2*Note Subsection 10-2-2::,
   12.1.22*Note Subsection 12-1-22:: 
   - which, 10.2.1*Note Subsection 10-2-1::,
   12.1.22*Note Subsection 12-1-22:: 
   - while, 9.3.44*Note Subsection 9-3-44::,
   B.2.2.1*Note Subsection B-2-2:: 
   - write, 10.8.7*Note Subsection 10-8-7:: 
 
   - xterm-escape, 10.11.24*Note Subsection 10-11-24:: 
   - xterm-escape-begin, 10.11.23*Note Subsection 10-11-23:: 
   - xterm-escape-end, 10.11.23*Note Subsection 10-11-23:: 
 
   - YACC, 13.5.2*Note Subsection 13-5-2:: 
     
