--- a/make/uwproj.xsd Sun Oct 06 20:49:43 2024 +0200 +++ b/make/uwproj.xsd Sat Mar 01 22:55:30 2025 +0100 @@ -3,7 +3,7 @@ xmlns="http://unixwork.de/uwproj" targetNamespace="http://unixwork.de/uwproj" elementFormDefault="qualified" - version="0.1" + version="0.3" > <xs:element name="project" type="ProjectType"/> @@ -17,22 +17,33 @@ </xs:documentation> </xs:annotation> <xs:sequence> - <xs:element name="config" type="ConfigType" minOccurs="0"/> + <xs:element name="config" type="ConfigType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="dependency" type="DependencyType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="target" type="TargetType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> + <xs:attribute name="version" type="xs:string" use="required" /> </xs:complexType> <xs:complexType name="ConfigType"> <xs:annotation> <xs:documentation> - The configuration section. - Consists of an arbitrary number of <code>var</code> elements. + <p> + The configuration section. + Consists of an arbitrary number of <code>var</code> elements. + </p> + <p> + The optional <code>platform</code> attribute may specify a <em>single</em> platform identifier and + the optional <code>not</code> 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. + </p> </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="var" type="ConfigVarType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> + <xs:attribute name="platform" type="xs:string"/> + <xs:attribute name="not" type="xs:string"/> </xs:complexType> <xs:complexType name="ConfigVarType"> @@ -102,9 +113,11 @@ </p> <p> The optional <code>platform</code> attribute may specify a <em>single</em> platform identifier and - the optional <code>not</code> 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. + the optional <code>toolchain</code> attribute may specify a <em>single</em> toolchain. + The optional <code>not</code> 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. </p> </xs:documentation> </xs:annotation> @@ -125,6 +138,7 @@ </xs:choice> <xs:attribute name="name" type="xs:string"/> <xs:attribute name="platform" type="xs:string"/> + <xs:attribute name="toolchain" type="xs:string"/> <xs:attribute name="not" type="xs:string"/> </xs:complexType> @@ -182,14 +196,27 @@ <code>dependencies</code> are satisfied. If a feature is enabled, all <code>define</code> and <code>make</code> definitions are supposed to be applied to the config file. + If a feature is disabled, an optional <code>disabled</code> element may specify which + <code>define</code> and <code>make</code> definitions are supposed to be applied. + There might also be <code>dependencies</code> when the feature is disabled (e.g. specifying a fallback). In case the optional <code>default</code> 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 <code>arg</code> attribute. Otherwise, the <code>name</code> is used by default. + Optionally, a description for the help text of the resulting configure script can be specified by + adding a <code>desc</code> element. </xs:documentation> </xs:annotation> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:group ref="TargetDataGroup"/> + <xs:element name="desc" type="xs:string"/> + <xs:element name="disabled"> + <xs:complexType> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:group ref="TargetDataGroup"/> + </xs:choice> + </xs:complexType> + </xs:element> </xs:choice> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="arg" type="xs:string"/> @@ -278,4 +305,4 @@ </xs:annotation> <xs:restriction base="xs:string"/> </xs:simpleType> -</xs:schema> \ No newline at end of file +</xs:schema>