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

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

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

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

universe@753:

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

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

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

universe@753:

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

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