universe@0: universe@0: universe@0: universe@0: universe@0: universe@1: universe@1: universe@1: The root element of an uwproj project. universe@1: Consists of an optional config element universe@1: and an arbitrary number of dependency universe@1: and target elements. universe@1: universe@1: universe@0: universe@0: universe@0: universe@0: universe@0: universe@0: universe@0: universe@0: universe@1: universe@1: universe@1: The configuration section. universe@1: Consists of an arbitrary number of var elements. universe@1: universe@1: universe@0: universe@0: universe@0: universe@0: universe@0: universe@0: universe@1: universe@1: universe@1: The definition of a configuration variable. universe@1:

universe@1: Configuration variables are supposed to be used in the configure script and are also universe@1: written to the resulting config file (in contrast to make variables, which are only universe@1: written to the config file). universe@1: The name attribute is mandatory, the value is defined by the text body of the element. universe@1: The optional Boolean exec attribute (false by default) controls, whether the entire universe@1: definition is automatically executed under command substitution. universe@1:

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

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

universe@1:

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

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

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

universe@1:

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

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