This file has been translated from LaTeX by HeVeA.

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.

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.

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.

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.

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.

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.

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.

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.

Node: Subsection A-3-21,	Next: Section A-4,	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"'.

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.

Node: Section A-5,	Next: Subsection A-5-1,	Prev: Section A-4,	Up: Appendix A
  

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

  
* Menu:

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


Node: Subsection A-5-1,	Next: Subsection A-5-2,	Prev: Section A-5,	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.

Node: Subsection A-5-2,	Next: Section A-6,	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.

Node: Section A-6,	Next: Subsection A-6-1,	Prev: Section A-5,	Up: Appendix A
  

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

  
* Menu:

* Subsection A-6-1::	OMakeFlags


Node: Subsection A-6-1,	Next: Section A-7,	Prev: Section A-6,	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
>>
  

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. 
  

Node: Section A-8,	Next: Appendix B,	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)
>>
  
   

Node: Appendix B,	Next: Section B-1,	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


Node: Section B-1,	Next: Subsection B-1-1,	Prev: Appendix B,	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


Node: Subsection B-1-1,	Next: Subsection B-1-2,	Prev: Section B-1,	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
>>
  

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'. 
  
  

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
>>
  

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
>>
  

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.

Node: Subsection B-1-6,	Next: Section B-2,	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
>>
  

Node: Section B-2,	Next: Subsection B-2-1,	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


Node: Subsection B-2-1,	Next: Subsection B-2-2,	Prev: Section B-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::).

Node: Subsection B-2-2,	Next: Section B-3,	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
>>
  

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
>>
  

Node: Section B-4,	Next: Subsection B-4-1,	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


Node: Subsection B-4-1,	Next: Appendix C,	Prev: Section B-4,	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)))
>>
  

Node: Appendix C,	Next: Appendix D,	Prev: Section B-4,	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:: 
   - 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:: 
   - 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:: 
 
   - 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:: 
   - 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.1*Note Subsection 4-5-1:: 
   - 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_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:: 
   - 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.3*Note Subsection 13-6-6:: 
   - OCamlLibraryInstall, 13.6.6.4*Note Subsection 13-6-6:: 
   - OCamlPackage, 13.6.6.2*Note Subsection 13-6-6:: 
   - OCamlProgram, 13.6.6.5*Note Subsection 13-6-6:: 
   - OCamlProgramCopy, 13.6.6.6*Note Subsection 13-6-6:: 
   - OCamlProgramInstall, 13.6.6.7*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:: 
     
