1 <?xml version="1.0" encoding="US-ASCII"?>
2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
3 "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
5 <title>ReactOS Build System Documentation</title>
8 <releaseinfo>$Id$</releaseinfo>
11 <firstname>Casper</firstname>
13 <surname>Hornstrup</surname>
17 <firstname>Emanuele</firstname>
19 <surname>Aliberti</surname>
28 <title>Building ReactOS</title>
31 <title>Building ReactOS</title>
33 <para>To generate GNU make makefiles and building ReactOS, do the
34 following:<orderedlist>
36 <para>Go to the top-level <filename>reactos</filename>
41 <para>Run the command:<screen>mingw32-make</screen></para>
43 <para>This will start building ReactOS.</para>
47 <para>To build a bootable CD, run the following command:<screen>mingw32-make bootcd</screen>This
48 will create <filename>ReactOS.iso</filename> in the top-level
49 <filename>reactos</filename> directory.</para>
54 <title>How build directions are stored</title>
56 <para>XML files are used throughout the ReactOS source tree to drive the
60 <title>Top-level XML Build File</title>
62 <para>The top-level XML build file (<filename>ReactOS.xml</filename>) is
63 processed by <command>rbuild</command>. The following is an example of
64 how it could look like:<programlisting><?xml version="1.0"?>
65 <!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
66 <project name="ReactOS" makefile="Makefile.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
67 <xi:include href="config.xml">
69 <xi:include href="config.template.xml" />
73 <define name="_M_IX86" />
74 <if property="DBG" value="1">
75 <define name="DBG" value="1" />
76 <property name="DBG_OR_KDBG" value="true" />
79 <include base="ReactOS">include</include>
81 <directory name="boot">
82 <xi:include href="boot/boot.xml" />
85 <module name="bootcd" type="iso">
87 </project></programlisting></para>
91 <title>XInclude</title>
93 <para>XML files used by <command>rbuild</command> are modular and use
94 XInclude to include other chunks of XML in the top-level
95 <filename>ReactOS.xml</filename> file. The namespace used by XInclude is
96 <literal>xi</literal>.</para>
98 <section id="element.xi.include">
99 <title>xi:include</title>
101 <para>It is possible to split an XML build file over several files.
102 The include element in the <literal>xi</literal> namespace is used to
103 accomplish this.</para>
106 <title>Syntax</title>
108 <programlisting><xi:include href="<replaceable>config.xml</replaceable>">
110 <xi:include href="<replaceable>config.template.xml</replaceable>" />
112 </xi:include></programlisting>
116 <title>Attributes</title>
123 <para>Name of XML build file to include. The filename is
124 relative to the location of the current XML build
128 </variablelist></para>
132 <title>Content</title>
138 <title>Children</title>
140 <para><link linkend="element.xi.fallback">xi:fallback</link>.</para>
144 <section id="element.xi.fallback">
145 <title>xi:fallback</title>
147 <para>This element is used to provide the name of an alternate file
148 that is to be included if the first include file did not
152 <title>Syntax</title>
154 <programlisting><xi:fallback>
155 <xi:include href="<replaceable>config.template.xml</replaceable>" />
156 </xi:fallback></programlisting>
160 <title>Attributes</title>
166 <title>Content</title>
172 <title>Parents</title>
174 <para><link linkend="element.xi.include">xi:include</link>.</para>
178 <title>Children</title>
180 <para><link linkend="element.xi.include">xi:include</link>.</para>
186 <title>Element reference</title>
188 <section id="element.bootstrap">
189 <title>Bootstrap element</title>
191 <para>A bootstrap element specifies that the generated file should be
192 put on the bootable CD as a bootstrap file.</para>
195 <title>Syntax</title>
197 <para><programlisting><bootstrap base="reactos" nameoncd="halmp.dll" /></programlisting></para>
201 <title>Attributes</title>
208 <para>Put file in this directory on the bootable CD. This
209 attribute is optional.</para>
214 <term>nameoncd</term>
217 <para>Name of file on the bootable CD. This attribute is
221 </variablelist></para>
225 <title>Content</title>
231 <title>Parents</title>
233 <para><link linkend="element.module">module</link>.</para>
237 <title>Children</title>
243 <section id="element.cdfile">
244 <title>CDFile element</title>
246 <para>A cdfile element specifies the name of a file that is to be put
247 on the bootable CD.</para>
250 <title>Syntax</title>
252 <para><programlisting><cdfile base="reactos" nameoncd="ReadMe.txt">ReadMe.txt</cdfile></programlisting></para>
256 <title>Attributes</title>
263 <para>Put file in this directory on the bootable CD. This
264 attribute is optional.</para>
269 <term>nameoncd</term>
272 <para>Name of file on the bootable CD. This attribute is
276 </variablelist></para>
280 <title>Content</title>
282 <para>Name of file.</para>
286 <title>Children</title>
292 <section id="element.compilerflag">
293 <title>Compilerflag element</title>
295 <para>A compilerflag element specifies additional flags to be bassed
296 to the compiler.</para>
299 <title>Syntax</title>
301 <para><programlisting><compilerflags><replaceable>-Wpointer-arith</replaceable></compilerflag></programlisting></para>
305 <title>Attributes.</title>
311 <title>Content</title>
313 <para>The compiler flags.</para>
317 <title>Parents</title>
319 <para><link linkend="element.if">if</link>, <link
320 linkend="element.project">project</link>.</para>
324 <title>Children</title>
330 <section id="element.component">
331 <title>Component element</title>
333 <para>A component element specifies that imports from a library are to
334 be stubbed so tests can be run without actually calling the functions
335 in the library. This element can only be used for modules of type
339 <title>Syntax</title>
341 <para><programlisting><component name="ntdll.dll">
343 </component></programlisting></para>
347 <title>Attributes</title>
354 <para>Name of library.</para>
357 </variablelist></para>
361 <title>Content</title>
367 <title>Children</title>
369 <para><link linkend="element.symbol">symbol</link>.</para>
373 <section id="element.define">
374 <title>Define element</title>
376 <para>A define element specifies the name and (optionally) value of a
377 define for the C/C++ compiler and resource compiler.</para>
380 <title>Syntax</title>
382 <para><programlisting><define name="<replaceable>WINVER</replaceable>"><replaceable>0x501</replaceable></define></programlisting></para>
386 <title>Attributes</title>
393 <para>Name of define.</para>
396 </variablelist></para>
400 <title>Content</title>
402 <para>Value of define. The value is optional.</para>
406 <title>Parents</title>
408 <para><link linkend="element.project">project</link>, <link
409 linkend="element.module">module</link>.</para>
413 <title>Children</title>
419 <section id="element.dependency">
420 <title>Dependency element</title>
422 <para>A dependency element specifies the name of a module (usually of
423 type buildtool) that is to be processed before the current
427 <title>Syntax</title>
429 <para><programlisting><dependency><replaceable>OtherModule</replaceable></dependency></programlisting></para>
433 <title>Attributes</title>
439 <title>Content</title>
441 <para>Name of module.</para>
445 <title>Children</title>
451 <section id="element.directory">
452 <title>Directory element</title>
454 <para>A directory element specifies the name of a subdirectory.</para>
457 <title>Syntax</title>
459 <para><programlisting><directory name="<replaceable>MyDirectory</replaceable>">
461 </directory></programlisting></para>
465 <title>Attributes</title>
472 <para>Name of directory.</para>
475 </variablelist></para>
479 <title>Content</title>
485 <title>Parents</title>
487 <para><link linkend="element.directory">directory</link>, <link
488 linkend="element.directory">if</link>, <link
489 linkend="element.project">project</link>.</para>
493 <title>Children</title>
495 <para><link linkend="element.cdfile">cdfile</link>, <link
496 linkend="element.directory">directory</link>, <link
497 linkend="element.file">file</link>, <link
498 linkend="element.if">if</link>, <link
499 linkend="element.pch">pch</link>, <link
500 linkend="element.property">property</link>.</para>
504 <section id="element.file">
505 <title>File element</title>
507 <para>A file element specifies the name of a file that is to be
511 <title>Syntax</title>
513 <para><programlisting><file><replaceable>MyFile.c</replaceable></file></programlisting></para>
517 <title>Attributes</title>
523 <title>Content</title>
525 <para>Name of file.</para>
529 <title>Parents</title>
531 <para><link linkend="element.directory">directory</link>, <link
532 linkend="element.module">module</link>.</para>
536 <title>Children</title>
542 <section id="element.group">
543 <title>Group element</title>
545 <para>A group element's purpose is grouping subelements.</para>
548 <title>Syntax</title>
550 <para><programlisting><group>
551 <file><replaceable>i386-dis.c</replaceable></file>
552 <file><replaceable>kdb_help.S</replaceable></file>
553 <file><replaceable>longjmp.S</replaceable></file>
554 <file><replaceable>setjmp.S</replaceable></file>
555 </group></programlisting></para>
559 <title>Attributes</title>
565 <title>Content</title>
571 <title>Parents</title>
573 <para><link linkend="element.if">if</link>.</para>
577 <title>Children</title>
579 <para><link linkend="element.file">file</link>.</para>
583 <section id="element.if">
584 <title>If element</title>
586 <para>An if element allows for conditional processing of other
590 <title>Syntax</title>
592 <para><programlisting><if property="<replaceable>DBG</replaceable>" value="<replaceable>1</replaceable>">
594 </if></programlisting></para>
598 <title>Attributes</title>
602 <term>property</term>
605 <para>Name of the property that is to be evaluated.</para>
613 <para>Value to compare to the value of the property. If the
614 property has the specified value, then the subelements are
618 </variablelist></para>
622 <title>Content</title>
628 <title>Parents</title>
630 <para><link linkend="element.project">project</link>, <link
631 linkend="element.directory">directory</link>.</para>
635 <title>Children</title>
637 <para><link linkend="element.compilerflag">compilerflag</link>,
638 <link linkend="element.define">define</link>, <link
639 linkend="element.directory">directory</link>, <link
640 linkend="element.file">file</link>, <link
641 linkend="element.if">if</link>, <link
642 linkend="element.include">include</link>, <link
643 linkend="element.property">property</link>.</para>
647 <section id="element.importlibrary">
648 <title>Importlibrary element</title>
650 <para>An importlibrary element specifies that an import library should
651 be generated which other modules can use to link with the current
655 <title>Syntax</title>
657 <para><programlisting><importlibrary definition="<replaceable>MyModule.def</replaceable>" /></programlisting></para>
661 <title>Attributes</title>
665 <term>definition</term>
668 <para>Filename of definition file
669 (<filename>.def</filename>) used to generate the import
670 library. The filename is relative to the current
674 </variablelist></para>
678 <title>Content</title>
684 <title>Parents</title>
686 <para><link linkend="element.module">module</link>.</para>
690 <title>Children</title>
696 <section id="element.include">
697 <title>Include element</title>
699 <para>An include element specifies an include directory for the C/C++
700 compiler and resource compiler.</para>
703 <title>Syntax</title>
705 <para><programlisting><include base="<replaceable>MyLibraryModule</replaceable>"><replaceable>include</replaceable></include></programlisting></para>
709 <title>Attributes</title>
716 <para>Module or project which the value of this element is
717 relative to. This attribute is optional. If left out, the
718 include directory is relative to the position of the
719 top-level XML build file.</para>
722 </variablelist></para>
726 <title>Content</title>
728 <para>Relative include directory.</para>
732 <title>Parents</title>
734 <para><link linkend="element.project">project</link>, <link
735 linkend="element.module">module</link>.</para>
739 <title>Children</title>
745 <section id="element.input">
746 <title>Input element</title>
748 <para>An input element specifies a group of filenames that is to be
749 passed as parameters to a build tool. Input filename parameters are
750 located after output filename parameters on the command line.</para>
753 <title>Syntax</title>
755 <para><programlisting><input>
757 </input></programlisting></para>
761 <title>Attributes</title>
767 <title>Content</title>
773 <title>Parents</title>
775 <para><link linkend="element.invoke">invoke</link>.</para>
779 <title>Children</title>
781 <para><link linkend="element.inputfile">inputfile</link>.</para>
785 <section id="element.inputfile">
786 <title>Inputfile element</title>
788 <para>An inputfile element specifies a filename that is to be passed
789 as a parameter to a build tool.</para>
792 <title>Syntax</title>
794 <para><programlisting><inputfile><replaceable>ntoskrnl.mc</replaceable></inputfile></programlisting></para>
798 <title>Attributes</title>
802 <term>switches</term>
805 <para>Switches that is passed as parameters just before the
806 filename. This attribute is optional.</para>
809 </variablelist></para>
813 <title>Content</title>
815 <para>Name of file that is to be passed as a parameter to the build
820 <title>Parents</title>
822 <para><link linkend="element.input">input</link>.</para>
826 <title>Children</title>
832 <section id="element.installfile">
833 <title>Installfile element</title>
835 <para>An installfile element specifies the name of a file that is to
836 be installed when using '<command>make install</command>'.</para>
839 <title>Syntax</title>
841 <para><programlisting><installfile base="<replaceable>reactos</replaceable>" newname="<replaceable>ReadMe.txt</replaceable>"><replaceable>ReadMe.txt</replaceable></installfile></programlisting></para>
845 <title>Attributes</title>
852 <para>Put file in this directory within the install
853 directory. This attribute is optional.</para>
861 <para>Name of file within the install directory. This
862 attribute is optional.</para>
865 </variablelist></para>
869 <title>Content</title>
871 <para>Name of file.</para>
875 <title>Children</title>
881 <section id="element.invoke">
882 <title>Invoke element</title>
884 <para>An invoke element specifies the name of a module which is to be
885 executed before the current module is processed.</para>
888 <title>Syntax</title>
890 <para><programlisting><invoke module="<replaceable>wmc</replaceable>">
892 <inputfile><replaceable>ntoskrnl.mc</replaceable></inputfile>
895 <outputfile switches="<replaceable>-H</replaceable>"><replaceable>../include/reactos/bugcodes.h</replaceable></outputfile>
896 <outputfile switches="<replaceable>-o</replaceable>"><replaceable>bugcodes.rc</replaceable></outputfile>
898 </invoke></programlisting></para>
902 <title>Attributes</title>
909 <para>Name of the module to execute.</para>
912 </variablelist></para>
916 <title>Content</title>
922 <title>Children</title>
924 <para><link linkend="element.input">input</link>, <link
925 linkend="element.output">output</link>.</para>
929 <section id="element.library">
930 <title>Library element</title>
932 <para>A library element specifies the name of another module which is
933 to be linked with the current module.</para>
936 <title>Syntax</title>
938 <para><programlisting><library><replaceable>MyLibraryModule</replaceable></library></programlisting></para>
942 <title>Attributes</title>
944 <para>None.section</para>
948 <title>Parents</title>
950 <para><link linkend="element.module">module</link>.</para>
954 <title>Children</title>
960 <section id="element.linkerflag">
961 <title>Linkerflag element</title>
963 <para>A likerflag element specifies flags to be passed to the linker
967 <title>Syntax</title>
969 <para><programlisting><linkerflag><replaceable>-lgcc</replaceable></linkerflag></programlisting></para>
973 <title>Attributes</title>
979 <title>Content</title>
981 <para>The switches to pass to the linker.</para>
985 <title>Parents</title>
987 <para><link linkend="element.module">module</link>.</para>
991 <title>Children</title>
997 <section id="element.module">
998 <title>Module element</title>
1000 <para>There can be zero or more <sgmltag
1001 class="element">module</sgmltag>s per XML build file.</para>
1004 <title>Syntax</title>
1006 <para><programlisting><module if="${MP}" ifnot="${MP}" name="msvcrt" type="win32dll" extension=".dll" entrypoint="_DllMain@12" baseaddress="0x70000000" mangledsymbols="true" installbase="system32" installname="msvcrt.dll" usewrc="false" warnings="true" aliasof="module1">
1008 </module></programlisting></para>
1012 <title>Attributes</title>
1014 <para><variablelist>
1019 <para>If the value is 1, then the module is enabled,
1020 otherwise it is disabled. A disabled module is not
1029 <para>If the value is 1, then the module is disabled,
1030 otherwise it is enabled. A disabled module is not
1039 <para>Name of the module. Also the base name of the
1040 generated file if such file is generated for the particular
1049 <para>Type of module. See below for an explanation of module
1050 types. <emphasis><emphasis>The module type determines the
1051 actions that is to be carried out to process the module. The
1052 defined module types are seen
1053 below:</emphasis></emphasis></para>
1056 <title>Module Types</title>
1061 <entry>Value</entry>
1063 <entry>Output name suffix</entry>
1065 <entry>Entrypoint</entry>
1067 <entry>Baseaddress</entry>
1069 <entry>Mangledsymbols</entry>
1071 <entry>Description</entry>
1077 <entry>buildtool</entry>
1082 <entry><filename>.exe</filename> (Windows)</entry>
1084 <entry>none (Linux)</entry>
1095 <entry>Builds a tool that can be run (invoked) when
1096 building ReactOS.</entry>
1100 <entry>staticlibrary</entry>
1102 <entry><filename>.a</filename></entry>
1110 <entry>Builds a static library containing object
1111 files that can be linked together with other
1116 <entry>objectlibrary</entry>
1118 <entry><filename>.o</filename></entry>
1126 <entry>Builds object files that can be linked
1127 together with other modules.</entry>
1131 <entry>kernel</entry>
1133 <entry><filename>.exe</filename></entry>
1135 <entry><function>_NtProcessStartup</function></entry>
1142 <filename>ntoskrnl.exe</filename>.</entry>
1146 <entry>kernelmodedll</entry>
1148 <entry><filename>.dll</filename></entry>
1150 <entry><function>_DriverEntry@8</function></entry>
1156 <entry>Builds a kernel-mode DLL.</entry>
1160 <entry>kernelmodedriver</entry>
1162 <entry><filename>.sys</filename></entry>
1164 <entry><function>_DriverEntry@8</function></entry>
1170 <entry>Builds a kernel-mode driver.</entry>
1174 <entry>nativedll</entry>
1176 <entry><filename>.dll</filename></entry>
1178 <entry><function>_DllMainCRTStartup@12</function></entry>
1184 <entry>Builds a native DLL.</entry>
1188 <entry>win32dll</entry>
1190 <entry><filename>.dll</filename></entry>
1192 <entry><function>_DllMain@12</function></entry>
1198 <entry>Builds a Win32 DLL.</entry>
1202 <entry>win32cui</entry>
1204 <entry><filename>.exe</filename></entry>
1206 <entry><function>_mainCRTStartup</function></entry>
1212 <entry>Builds a Win32 console executable.</entry>
1216 <entry>win32gui</entry>
1218 <entry><filename>.exe</filename></entry>
1220 <entry><function>_WinMainCRTStartup</function></entry>
1226 <entry>Builds a Win32 GUI executable.</entry>
1230 <entry>bootloader</entry>
1240 <entry>Builds a bootloader.</entry>
1244 <entry>bootsector</entry>
1254 <entry>Builds one or more bootsector
1269 <entry>Builds a bootable CD.</entry>
1277 <entry>_mainCRTStartup</entry>
1283 <entry>Builds a testsuite.</entry>
1287 <entry>rpcserver</entry>
1289 <entry><filename>.o</filename></entry>
1297 <entry>Generates and builds server code for an RPC
1302 <entry>rpcclient</entry>
1304 <entry><filename>.o</filename></entry>
1312 <entry>Generates and builds client code for an RPC
1317 <entry>alias</entry>
1327 <entry>Module is an alias for another module. This
1328 module type is the only module type for which the
1329 aliasof attribute is applicable. Only the module
1330 install functionality is aliased.</entry>
1339 <term>extension</term>
1342 <para>Extension of the generated file if such file is
1343 generated for the particular module type.</para>
1348 <term>entrypoint</term>
1351 <para>Entrypoint symbol of the generated file if such file
1352 is generated for the particular module type.</para>
1357 <term>baseaddress</term>
1360 <para>Base address of the generated file if such file is
1361 generated for the particular module type.</para>
1366 <term>mangledsymbols</term>
1369 <para>Controls wether or not to pass --kill-at to dlltool.
1370 If this attribute has the value false then --kill-at is
1371 passed to dlltool. If the value is true, then --kill-at is
1372 not passed to dlltool. If the generated file exports C++
1373 classes then this need to be true.</para>
1378 <term>installbase</term>
1381 <para>Base directory of the generated file in the
1382 installation directory. This attribute is optional.</para>
1387 <term>installname</term>
1390 <para>Name of generated file in the installation directory.
1391 This attribute is optional, but if not specified, the
1392 generated file is not copied to the installation
1401 <para>Use WRC to compile resources if true. If false,
1402 windres is used. This attribute is optional. If not
1403 specified, WRC will be used.</para>
1408 <term>warnings</term>
1411 <para>Error out if false and at least one warning is emitted
1412 during building of this module. This attribute is optional.
1413 If not specified, it is assumed to be false.</para>
1418 <term>aliasof</term>
1421 <para>Name of module that is aliased.</para>
1424 </variablelist></para>
1428 <title>Content</title>
1434 <title>Parents</title>
1436 <para><link linkend="element.project">project</link>, <link
1437 linkend="element.directory">directory</link>.</para>
1441 <title>Children</title>
1443 <para><link linkend="element.bootstrap">bootstrap</link>, <link
1444 linkend="element.component">component</link>, <link
1445 linkend="element.define">define</link>, <link
1446 linkend="element.dependency">dependency</link>, <link
1447 linkend="element.directory">directory</link>, <link
1448 linkend="element.file">file</link>, <link
1449 linkend="element.if">if</link>, <link
1450 linkend="element.importlibrary">importlibrary</link>, <link
1451 linkend="element.include">include</link>, <link
1452 linkend="element.invoke">invoke</link>, <link
1453 linkend="element.library">library</link>, <link
1454 linkend="element.linkerflag">linkerflag</link>, <link
1455 linkend="element.property">property</link>.</para>
1459 <section id="element.output">
1460 <title>Output element</title>
1462 <para>An output element specifies a group of filenames that is to be
1463 passed as parameters to a build tool. Output filename parameters are
1464 located before input filename parameters on the command line.</para>
1467 <title>Syntax</title>
1469 <para><programlisting><output>
1471 </output></programlisting></para>
1475 <title>Attributes</title>
1481 <title>Content</title>
1487 <title>Parents</title>
1489 <para><link linkend="element.invoke">invoke</link></para>
1493 <title>Children</title>
1495 <para><link linkend="element.outputfile">outputfile</link>.</para>
1499 <section id="element.outputfile">
1500 <title>Outputfile element</title>
1502 <para>An outputfile element specifies a filename that is to be passed
1503 as a parameter to a build tool.</para>
1506 <title>Syntax</title>
1508 <para><programlisting><outputfile switches="<replaceable>-H</replaceable>"><replaceable>../include/reactos/bugcodes.h</replaceable></outputfile></programlisting></para>
1512 <title>Attributes</title>
1514 <para><variablelist>
1516 <term>switches</term>
1519 <para>Switches that are passed as parameters just before the
1520 filename. This attribute is optional.</para>
1523 </variablelist></para>
1527 <title>Content</title>
1529 <para>Name of file that is to be passed as a parameter to the build
1534 <title>Parents</title>
1536 <para><link linkend="element.output">output</link>.</para>
1540 <title>Children</title>
1546 <section id="element.pch">
1547 <title>Pch element</title>
1549 <para>A pch element specifies a GCC precompiled header file.</para>
1552 <title>Syntax</title>
1554 <para><programlisting><pch><replaceable>ntdll.h</replaceable></pch></programlisting></para>
1558 <title>Attributes</title>
1564 <title>Content</title>
1566 <para>Name of the include file to be precompiled.</para>
1570 <title>Parents</title>
1572 <para><link linkend="element.directory">directory</link>.</para>
1576 <title>Children</title>
1582 <section id="element.project">
1583 <title>Project element</title>
1585 <para>There can be one <sgmltag class="element">project</sgmltag> per
1586 top-level XML build file. A project can only be defined in a top-level
1587 XML build file.</para>
1590 <title>Syntax</title>
1592 <para><programlisting><project name="ReactOS" makefile="Makefile.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
1594 </project></programlisting></para>
1598 <title>Attributes</title>
1600 <para><variablelist>
1605 <para>Name of the project.</para>
1610 <term>makefile</term>
1613 <para>Filename of the GNU makefile that is to be
1617 </variablelist></para>
1621 <title>Content</title>
1627 <title>Parents</title>
1629 <para>None. This is the top-level (root) element of
1630 <filename>ReactOS.xml</filename> file.</para>
1634 <title>Children</title>
1636 <para><link linkend="element.define">define</link>, <link
1637 linkend="element.directory">directory</link>, <link
1638 linkend="element.if">if</link>, <link
1639 linkend="element.include">include</link>, <link
1640 linkend="element.module">module</link>, <link
1641 linkend="element.property">property</link>.</para>
1645 <section id="element.property">
1646 <title>Property element</title>
1648 <para>A property element specifies the name and value of a property
1649 that can be used for conditional processing of the XML build
1653 <title>Syntax</title>
1655 <para><programlisting><property name="<replaceable>mypropertyname</replaceable>" value="<replaceable>mypropertyvalue</replaceable>" /></programlisting></para>
1659 <title>Attributes</title>
1661 <para><variablelist>
1666 <para>Name of property.</para>
1674 <para>Value of property.</para>
1677 </variablelist></para>
1681 <title>Content</title>
1687 <title>Parents</title>
1693 <title>Children</title>
1699 <section id="element.symbol">
1700 <title>Symbol element</title>
1702 <para>A symbol element specifies an imported function from a library
1703 that is to be stubbed so tests can be run without actually calling the
1704 function in the library.</para>
1707 <title>Syntax</title>
1709 <para><programlisting><symbol newname="<replaceable>RtlAllocateHeap</replaceable>"><replaceable>HeapAlloc@12</replaceable></symbol></programlisting></para>
1713 <title>Attributes</title>
1715 <para><variablelist>
1717 <term>newname</term>
1720 <para>New name of symbol. This attribute is optional.</para>
1723 </variablelist></para>
1727 <title>Content</title>
1729 <para>Name of symbol.</para>
1733 <title>Children</title>
1742 <title>Bibliography</title>
1744 <bibliomixed><title><ulink
1745 url="http://www.w3.org/TR/2004/REC-xml-20040204/">Extensible Markup
1746 Language (XML) 1.0 (Third Edition)</ulink></title><releaseinfo>W3C
1747 Recommendation</releaseinfo><author>
1748 <firstname>François</firstname>
1750 <surname>Yergeau</surname>
1752 <firstname>Tim</firstname>
1754 <surname>Bray</surname>
1756 <firstname>Jean</firstname>
1758 <surname>Paoli</surname>
1760 <firstname>C. M.</firstname>
1762 <surname>Sperberg-McQueen</surname>
1764 <firstname>Eve</firstname>
1766 <surname>Maler</surname>
1767 </author><date>4th February 2004</date></bibliomixed>
1769 <bibliomixed><title><ulink
1770 url="http://www.w3.org/TR/2004/REC-xinclude-20041220/">XML Inclusions
1771 (XInclude) Version 1.0 </ulink></title><releaseinfo>W3C
1772 Recommendation</releaseinfo><editor>
1773 <firstname>Jonathan</firstname>
1775 <surname>Marsh</surname>
1778 <orgname>Microsoft</orgname>
1781 <email>jmarsh@microsoft.com</email>
1783 <firstname>David</firstname>
1785 <surname>Orchard</surname>
1788 <orgname>BEA Systems</orgname>
1791 <email>dorchard@bea.com</email>
1792 </editor>20 December 2004</bibliomixed>