The root element of an uwproj project. Consists of an optional config element and an arbitrary number of dependency and target elements.

The configuration section. Consists of an arbitrary number of var elements and pre-defined elements for standard installation directories. If you want to use standard installation directories, you must list the wanted variables here.

The optional platform attribute may specify a single platform identifier and the optional not attribute may specify a comma-separated list of platform identifiers. The configure script shall skip this config declaration if the detected platform is not matching the filter specification of these attributes. When multiple config sections have a matching filter, and declare the same variables, the settings of the first matching config section will be used for the affected variables.

The definition of a standard configuration variable.

You may customize the value and the help text, but the variable name and the option name are pre-defined.

The definition of a configuration variable.

Configuration variables are supposed to be used in the configure script and are also written to the resulting config file (in contrast to make variables, which are only written to the config file). The name attribute is mandatory, the value is defined by the text body of the element. The optional Boolean exec attribute (false by default) controls, whether value denotes a command which shall be executed at configuration time to produce the value. With option and option-help you can control how the variable can be overridden on the command line. When you don't specify either of those attributes, no command line option will be generated. When you provide a option-help, but do not specify the option name, a name is generated. You can use the string %default in your help text when you want to show the default value in the text. When exec is used, the default will not be resolved in the help text and instead the command is shown (to avoid breaking the formatting).

Instructs configure to invoke pkg-config, if present on the system, to determine compiler and linker flags. The text body of this element defines the package name to search. To constrain the allowed versions, use the attributes atleast, exact, max. Requests a compiler for the specified language. Allowed values are c, cpp. Declares a dependency.

If the optional name attribute is omitted, the dependency is global and must be satisfied, otherwise configuration shall fail. A named dependency can be referenced by a target (or is implicitly referenced by the default target, if no targets are specified). Multiple declarations for the same named dependency may exist, in which case each declaration is checked one after another, until one block is satisfied. The result of the first satisfied dependency declaration is supposed to be applied to the config file.

The optional platform attribute may specify a single platform identifier and the optional toolchain attribute may specify a single toolchain. The optional not attribute may specify a comma-separated list of platform and/or toolchain identifiers. The configure script shall skip this dependency declaration if the detected platform and toolchain is not matching the filter specification of these attributes.

Specifies a custom command that shall be executed to test whether this dependency is satisfied.
Instructs configure to append the contents of the element's body to the respective flags variable. If the optional exec flag is set to true, the contents are supposed to be executed under command substitution at configuration time before they are applied. Declares a build target that is supposed to be configured.

If no build target is declared explicitly, an implicit default target is generated, which has the alldependencies flag set.

The optional name attribute is also used to generate a prefix for the compiler and linker flags variables. Furthermore, a target may consist of an arbitrary number of feature, option, and define elements. Named dependencies can be listed (separated by comma) in the dependencies element. If this target shall use all available named dependencies, the empty element alldependencies can be used as a shortcut.

Declares an optional feature, that can be enabled during configuration, if all dependencies are satisfied. If a feature is enabled, all define and make definitions are supposed to be applied to the config file. If a feature is disabled, an optional disabled element may specify which define and make definitions are supposed to be applied. There might also be dependencies when the feature is disabled (e.g. specifying a fallback). In case the optional default attribute is set to true, the feature is enabled by default and is supposed to be automatically disabled (without error) when the dependencies are not satisfied. The name that is supposed to be used for the --enable and --disable arguments can be optionally specified with the arg attribute. Otherwise, the name is used by default. Optionally, a description for the help text of the resulting configure script can be specified by adding a desc element. Declares a configuration option. The option argument name is specified with the arg attribute. Optionally, a description for the help text of the resulting configure script can be specified by a desc element. Then, the next children of this element specify possible values by defining the conditions (in terms of dependencies) and effects (in terms of defines and make variables) of each value. Finally, a set of defaults is specified which supposed to automagically select the most appropriate value for a specific platform under the available dependencies (in case the option is not explicitly specified by using the command line argument). Declares a possible value for the option (in the str attribute) and the conditions (dependencies) and effects, the value has. Specifies a default value for this option. Multiple default values can be specified, in which case they are checked one after another for availability. With the optional platform attribute, the default value can be constrained to a single specific platform and is supposed to be skipped by configure, when this platform is not detected. Specifies C/C++ pre-processor definitions that are supposed to be appended to the compiler flags, if supported. (Note: for example, Fortran also supports C/C++ style pre-processor definitions under certain circumstances) A comma-separated list of named dependencies. The text contents in the body of this element are supposed to be appended literally to the config file without prior processing.