make/uwproj.xsd

Wed, 05 Jun 2024 19:50:44 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 05 Jun 2024 19:50:44 +0200
changeset 537
ad44e72fbf50
parent 515
2c3fe06a9210
permissions
-rw-r--r--

add extra nullptr check in the event loop to handle the case when the finish ptr is set to NULL after it was already scheduled

515
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 <?xml version="1.0" encoding="UTF-8"?>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 xmlns="http://unixwork.de/uwproj"
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 targetNamespace="http://unixwork.de/uwproj"
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 elementFormDefault="qualified"
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 version="0.2"
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 >
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 <xs:element name="project" type="ProjectType"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 <xs:complexType name="ProjectType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 The root element of an uwproj project.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 Consists of an optional <code>config</code> element
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 and an arbitrary number of <code>dependency</code>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 and <code>target</code> elements.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 <xs:sequence>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 <xs:element name="config" type="ConfigType" minOccurs="0"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 <xs:element name="dependency" type="DependencyType" minOccurs="0" maxOccurs="unbounded"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 <xs:element name="target" type="TargetType" minOccurs="0" maxOccurs="unbounded"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 </xs:sequence>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 <xs:complexType name="ConfigType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 The configuration section.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 Consists of an arbitrary number of <code>var</code> elements.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 <xs:sequence>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34 <xs:element name="var" type="ConfigVarType" minOccurs="0" maxOccurs="unbounded"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 </xs:sequence>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 <xs:complexType name="ConfigVarType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 The definition of a configuration variable.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42 <p>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 Configuration variables are supposed to be used in the configure script and are also
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 written to the resulting config file (in contrast to make variables, which are only
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 written to the config file).
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 The <code>name</code> attribute is mandatory, the value is defined by the text body of the element.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 The optional Boolean <code>exec</code> attribute (false by default) controls, whether the entire
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 definition is automatically executed under command substitution.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 </p>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 <xs:simpleContent>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 <xs:extension base="xs:string">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 <xs:attribute name="name" type="xs:string" use="required"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55 <xs:attribute name="exec" type="xs:boolean" default="false"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 </xs:extension>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57 </xs:simpleContent>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
60 <xs:complexType name="PkgConfigType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63 Instructs configure to invoke <code>pkg-config</code>, if present on the system, to determine
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64 compiler and linker flags. The text body of this element defines the package name to search.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 To constrain the allowed versions, use the attributes <code>atleast, exact, max</code>.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68 <xs:simpleContent>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69 <xs:extension base="xs:string">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 <xs:attribute name="atleast" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 <xs:attribute name="exact" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72 <xs:attribute name="max" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73 </xs:extension>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 </xs:simpleContent>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
77 <xs:simpleType name="LangType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
78 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
79 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80 Requests a compiler for the specified language. Allowed values are
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81 c, cpp.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
82 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
83 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84 <xs:restriction base="xs:string">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
85 <xs:enumeration value="c"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
86 <xs:enumeration value="cpp"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
87 </xs:restriction>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
88 </xs:simpleType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
89
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
90 <xs:complexType name="DependencyType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
92 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
93 Declares a dependency.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
94 <p>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
95 If the optional <code>name</code> attribute is omitted, the dependency is global
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
96 and must be satisfied, otherwise configuration shall fail.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
97 A <em>named dependency</em> can be referenced by a target (or is implicitly referenced
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
98 by the default target, if no targets are specified).
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
99 Multiple declarations for the same named dependency may exist, in which case each declaration
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
100 is checked one after another, until one block is satisfied. The result of the first satisfied
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
101 dependency declaration is supposed to be applied to the config file.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
102 </p>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
103 <p>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
104 The optional <code>platform</code> attribute may specify a <em>single</em> platform identifier and
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
105 the optional <code>toolchain</code> attribute may specify a <em>single</em> toolchain.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
106 The optional <code>not</code> attribute may specify a comma-separated list of platform and/or
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
107 toolchain identifiers.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
108 The configure script shall skip this dependency declaration if the detected platform and toolchain
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
109 is not matching the filter specification of these attributes.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
110 </p>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
111 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
112 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
113 <xs:choice minOccurs="0" maxOccurs="unbounded">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
114 <xs:element name="lang" type="LangType"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
115 <xs:element name="cflags" type="FlagsType"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116 <xs:element name="cxxflags" type="FlagsType"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117 <xs:element name="ldflags" type="FlagsType"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118 <xs:element name="pkgconfig" type="PkgConfigType"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 <xs:element name="test" type="xs:string">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122 Specifies a custom command that shall be executed to test whether this dependency is satisfied.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
125 </xs:element>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
126 <xs:element name="make" type="MakeVarType"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127 </xs:choice>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
128 <xs:attribute name="name" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
129 <xs:attribute name="platform" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130 <xs:attribute name="toolchain" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131 <xs:attribute name="not" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
132 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134 <xs:complexType name="FlagsType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
135 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
136 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137 Instructs configure to append the contents of the element's body to the respective flags variable.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
138 If the optional <code>exec</code> flag is set to <code>true</code>, the contents are supposed to be
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
139 executed under command substitution <em>at configuration time</em> before they are applied.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
140 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
141 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
142 <xs:simpleContent>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
143 <xs:extension base="xs:string">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
144 <xs:attribute name="exec" type="xs:boolean" default="false"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
145 </xs:extension>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
146 </xs:simpleContent>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
147 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
148
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
149 <xs:complexType name="TargetType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
150 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
151 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
152 Declares a build target that is supposed to be configured.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
153 <p>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
154 If no build target is declared explicitly, an implicit default
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
155 target is generated, which has the <code>alldependencies</code>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
156 flag set.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
157 </p>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
158 <p>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
159 The optional <code>name</code> attribute is also used to generate a prefix
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
160 for the compiler and linker flags variables.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
161 Furthermore, a target may consist of an arbitrary number of <code>feature</code>,
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
162 <code>option</code>, and <code>define</code> elements.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
163 Named dependencies can be listed (separated by comma) in the <code>dependencies</code>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
164 element. If this target shall use <em>all</em> available named dependencies, the empty
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
165 element <code>alldependencies</code> can be used as a shortcut.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
166 </p>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
167 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
168 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
169 <xs:choice minOccurs="0" maxOccurs="unbounded">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
170 <xs:element name="feature" type="FeatureType"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
171 <xs:element name="option" type="OptionType"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
172 <xs:element name="define" type="DefineType"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
173 <xs:element name="dependencies" type="DependenciesType"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
174 <xs:element name="alldependencies">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
175 <xs:complexType/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
176 </xs:element>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
177 </xs:choice>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
178 <xs:attribute name="name" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
179 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
180
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
181 <xs:complexType name="FeatureType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
182 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
183 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
184 Declares an optional feature, that can be enabled during configuration, if all
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
185 <code>dependencies</code> are satisfied.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
186 If a feature is enabled, all <code>define</code> and <code>make</code> definitions are
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
187 supposed to be applied to the config file.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
188 In case the optional <code>default</code> attribute is set to true, the feature is enabled by default
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
189 and is supposed to be automatically disabled (without error) when the dependencies are not satisfied.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
190 The name that is supposed to be used for the --enable and --disable arguments can be optionally
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
191 specified with the <code>arg</code> attribute. Otherwise, the <code>name</code> is used by default.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
192 Optionally, a description for the help text of the resulting configure script can be specified by
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
193 adding a <code>desc</code> element.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
194 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
195 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
196 <xs:choice minOccurs="0" maxOccurs="unbounded">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
197 <xs:group ref="TargetDataGroup"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
198 </xs:choice>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
199 <xs:attribute name="name" type="xs:string" use="required"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
200 <xs:attribute name="arg" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
201 <xs:attribute name="default" type="xs:boolean" default="false"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
202 <xs:element name="desc" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
203 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
204
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
205 <xs:complexType name="OptionType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
206 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
207 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
208 Declares a configuration option.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
209 The option argument name is specified with the <code>arg</code> attribute.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
210 Then, the children of this element specify possible <code>values</code> by defining the conditions
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
211 (in terms of dependencies) and effects (in terms of defines and make variables) of each value.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
212 Finally, a set of <code>default</code>s is specified which supposed to automagically select the most
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
213 appropriate value for a specific platform under the available dependencies (in case the option is not
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
214 explicitly specified by using the command line argument).
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
215 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
216 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
217 <xs:sequence>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
218 <xs:element name="value" type="OptionValueType" minOccurs="0" maxOccurs="unbounded"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
219 <xs:element name="default" type="OptionDefaultType" minOccurs="0" maxOccurs="unbounded"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
220 </xs:sequence>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
221 <xs:attribute name="arg" type="xs:string" use="required"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
222 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
223
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
224 <xs:complexType name="OptionValueType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
225 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
226 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
227 Declares a possible value for the option (in the <code>str</code> attribute) and
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
228 the conditions (<code>dependencies</code>) and effects, the value has.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
229 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
230 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
231 <xs:choice minOccurs="0" maxOccurs="unbounded">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
232 <xs:group ref="TargetDataGroup"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
233 </xs:choice>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
234 <xs:attribute name="str" type="xs:string" use="required"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
235 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
236
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
237 <xs:complexType name="OptionDefaultType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
238 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
239 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
240 Specifies a default value for this option. Multiple default values can be specified, in which case
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
241 they are checked one after another for availability. With the optional <code>platform</code> attribute,
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
242 the default value can be constrained to a <em>single</em> specific platform and is supposed to be
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
243 skipped by configure, when this platform is not detected.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
244 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
245 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
246 <xs:attribute name="value" type="xs:string" use="required"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
247 <xs:attribute name="platform" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
248 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
249
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
250 <xs:group name="TargetDataGroup">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
251 <xs:choice>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
252 <xs:element name="define" type="DefineType" minOccurs="0" maxOccurs="unbounded"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
253 <xs:element name="dependencies" type="DependenciesType" minOccurs="0" maxOccurs="unbounded"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
254 <xs:element name="make" type="MakeVarType" minOccurs="0" maxOccurs="unbounded"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
255 </xs:choice>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
256 </xs:group>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
257
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
258 <xs:complexType name="DefineType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
259 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
260 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
261 Specifies C/C++ pre-processor definitions that are supposed to
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
262 be appended to the compiler flags, if supported.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
263 (Note: for example, Fortran also supports C/C++ style pre-processor definitions under
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
264 certain circumstances)
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
265 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
266 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
267 <xs:attribute name="name" type="xs:string" use="required"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
268 <xs:attribute name="value" type="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
269 </xs:complexType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
270
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
271 <xs:simpleType name="DependenciesType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
272 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
273 <xs:documentation>A comma-separated list of named dependencies.</xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
274 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
275 <xs:restriction base="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
276 </xs:simpleType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
277
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
278 <xs:simpleType name="MakeVarType">
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
279 <xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
280 <xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
281 The text contents in the body of this element are supposed to be appended literally
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
282 to the config file without prior processing.
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
283 </xs:documentation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
284 </xs:annotation>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
285 <xs:restriction base="xs:string"/>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
286 </xs:simpleType>
2c3fe06a9210 update uwproj
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
287 </xs:schema>

mercurial