|#include file||The file is searched in the current working directory only. Use this to force the loading of a local file.|
|#include file||The file is searched in all directories given by the -I option in the right-to-left order they are specified on the command line. Note that a -I . implicit option is automatically appended to command-line options, then files are first searched in current directory.|
|#include <file>||First the file is searched in the system wide ipp include directory specified with the -S option. Second if it was not not found there it is searched for in all directories given by the -I option.|
|* Matches any string, including the null string.|
|? Matches any single character.|
|[...] Like bracketed expressions in regexps, matches any of the enclosed characters.|
With the following parameters you can control the order and the number of included files using the #include pattern directive:
|IPP_SORT=scheme Specify a sort criterion to include files. There are actually 3 different criteria : date (files are sorted according to their last modification time), name (this is the default) and numeric (filenames are sorted numerically).|
|IPP_REVERSE=scheme As above, but resulting list of filenames is sorted in reverse order.|
|IPP_MAX=nmax Only nmax files are included.|
#include news/*.inc IPP_REVERSE IPP_MAX=5
In the files included with the #include pattern directive, the following variables are set and can be read using $(name):
|IPP_THIS the full name of the included source file including path and extension|
|IPP_PREV the full name of the previous included file, unset in the first file|
|IPP_NEXT the full name of the next included file, unset in the last file|
This internally is equivalent to the directive
plus the special semantic that the include file is included (=used) only once, i.e. multiple inclusion is automatically avoided. In other words
results in three inclusions of file. Two from the #includes and only
once from the #use directives.
Special Depends Variant
You can easily write fragments of Makefiles with the -M flag (see
below) to keep tracks of which files the output file depends on, When
ipp is invoked as a piece of WML, the final output file may depend
on other files. You can tell ipp about these hidden dependencies by
using the #depends variant , e.g.
The contents of the file is not inserted, only informations about
dependencies are updated.
Input Line Synchronization
All include commands insert some special stuff to help WML keeping
track of input line numbers. This feature may be disabled by appending
the string IPP_NOSYNCLINES to the #include (or its variants)
command. See also the -N flag.
You can add
pairs at the end of #include (and #use) directives to let $(name) interpolate to value (or 1 if =value is missing) in this include file and all its recursively included files.
There are the following forms of the $(name) syntax, similar to the functionality any Bourne Shell provides:
Use Only Value: The standard interpolation.
Assign Value: Set a variable.
Use Default String: The standard interpolation
with a default value.
Use Default String and Assign: The standard interpolation with a default
value and additional assignment for later use.
Use Alternate String. The replacement interpolation.
Use Negative Alternate String. The replacement interpolation with negated
Indicate Error If Unset. The error message interpolation. This can also be
used in conjunction with the above variants.
Set a variable if unset.
Redefine a variable if it is already set.
Notice that nested expressions are not handled as shells do. In shells expressions are treated from left to right, whereas ipp treat inner expressions first. With this example below
Bourne shells will show bar whereas ipp will print quux.
It is also possible to undefine a variable. To do so, assign an empty value to this variable, e.g.
Notice the possibility to do simple If-Then-Else constructs:
This is equivalent to the following pseudo-code:
Implicit IPP Variables
The strings __FILE__ and __LINE__ are always substituted by the
currently processed include file and the current line number.
IPP provides support for up-to-end-of-line comments.
This type of comment is like the one found in Bourne-Shell or Perl, i.e. any
line which starts with a sharp symbol (#) is entirely (i.e. including the
newline at the end) removed from the input. Additionally these lines can have
whitespaces in front of the sharp symbol. When you really need a sharp symbol
at the start of a line you can use \#, i.e. prefix it with an escaping
It stops processing the current include file when a line containing just
occurs. Use this to append POD documents to include files for documentation
purposes as in Perl. You can use __END__ in constructs like
$(SHORTENING:+__END__), so that the processing is only stopped
when the variable SHORTENING is set.
It removes all occurences of the pattern
Use this to let one or more lines to be concatenated.
-D name=value Defines a variable the for the initial inputfile the same way you define ones with the #include for include files. The variable can be interpolated via $(name) in all files. -S includedir Adds a system wide include directory. You can use this option more than once. The files are searched in right-to-left order. -I includedir This adds an entry to the include path where include files are searched for. You can use this option more than once. The files are searched in right-to-left order. The current working directory is always appended as the last directory to this list, and so is searched first. -s includefile Pre-load a particular include file, i.e. virtually adds a
in front of inputfile. Use this to automatically load default system include files. You can also use the syntax type::category::file which leads to a virtually added
-i includefile Pre-loads a particular include file, i.e. virtually adds a
in front of inputfile. Use this to automatically load default user include files. You can also use the syntax type::category::file which leads to a virtually added
-M options Output a rule suitable for make describing the dependencies of each output file, as gcc does. It has only sense when the -o option is used.
The D flag option writes the rule to a dependency file. The name of this file is obtained by replacing the suffix of the output file by .d.
The M flag option deletes the system files from the list of dependencies.
-P path This sets up one or more prolog program path which are applied to each single input file just before real processing starts. Use this to pre-process the data. Each program receives the data to act on as STDIN and has to produce the filtered data on STDOUT. -m mapfile This adds an entry to the list of mapfiles where a mapping between obsolete include file names and current ones can be found. You can use this option more than once. The mapfiles can contain the following lines:
# comment line <blank line> <oldname>[,<oldname>] <newname> \[S|W|E: <text>\]
<std/headfoot.wml>,wml::std::headfoot wml::OBSOLETE::std::headfoot [S]
-N nosynclines By default, WML inserts some instructions to synchronize line numbers, which are then interpreted in passes 2 and 3. This option disables this feature. -o outputfile This redirects the output to outputfile. Usually the output will be send to stdout if no such option is specified or outputfile is "-". -v This sets verbose mode where some processing information will be given on the console.
Ralf S. Engelschall email@example.com www.engelschall.com Denis Barbier firstname.lastname@example.org
|EN Tools||IPP (1)||2016-04-03|