# HG changeset patch # User Mike Becker # Date 1696262857 -7200 # Node ID e55f318a8b8b49ce3509771922187c692df62edb # Parent ef0635b78b7b9996af8f6df4c45249ec15e1dc67 first version of an XML documentation - fixes #266 diff -r ef0635b78b7b -r e55f318a8b8b uwproj.xsd --- a/uwproj.xsd Mon Oct 02 16:55:40 2023 +0200 +++ b/uwproj.xsd Mon Oct 02 18:07:37 2023 +0200 @@ -8,6 +8,14 @@ + + + The root element of an uwproj project. + Consists of an optional config element + and an arbitrary number of dependency + and target elements. + + @@ -16,12 +24,31 @@ + + + The configuration section. + Consists of an arbitrary number of var elements. + + + + + 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 the entire + definition is automatically executed under command substitution. +

+
+
@@ -31,6 +58,13 @@
+ + + 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. + + @@ -41,6 +75,12 @@ + + + Requests a compiler for the specified language. Allowed values are + c, cpp. + + @@ -48,14 +88,40 @@ + + + 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 not attribute may specify a comma-separated list of platform identifiers. + The configure script shall skip this dependency declaration if the detected platform is not + matching the filter specification of these attributes. +

+
+
- - + + + + Specifies a custom command that shall be executed to test whether this dependency is satisfied. + + + + @@ -63,6 +129,13 @@
+ + + 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. + + @@ -71,6 +144,25 @@ + + + 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. +

+
+
@@ -84,6 +176,18 @@
+ + + 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. + 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. + + @@ -93,6 +197,17 @@ + + + Declares a configuration option. + The option argument name is specified with the arg attribute. + Then, the 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). + + @@ -101,6 +216,12 @@ + + + Declares a possible value for the option (in the str attribute) and + the conditions (dependencies) and effects, the value has. + + @@ -108,6 +229,14 @@ + + + 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. + + @@ -116,16 +245,37 @@ - + + + + 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. + + \ No newline at end of file