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 <surname>Emanuele Aliberti</surname>
26 <title>Building ReactOS</title>
29 <title>Building ReactOS</title>
31 <para>To generate GNU make makefiles and building ReactOS, do the
32 following:<orderedlist>
34 <para>Go to the top-level <filename>reactos</filename>
39 <para>Run the command:<screen>mingw32-make</screen></para>
41 <para>This will start building ReactOS.</para>
45 <para>To build a bootable CD, run the following command:<screen>mingw32-make bootcd</screen>This
46 will create <filename>ReactOS.iso</filename> in the top-level
47 <filename>reactos</filename> directory.</para>
52 <title>How build directions are stored</title>
54 <para>XML files are used throughout the ReactOS source tree to drive the
58 <title>Top-level XML Build File</title>
60 <para>The top-level XML build file (<filename>ReactOS.xml</filename>) is
61 processed by <command>rbuild</command>. The following is an example of
62 how it could look like:<programlisting><?xml version="1.0"?>
63 <!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
64 <project name="ReactOS" makefile="Makefile.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
65 <xi:include href="config.xml">
67 <xi:include href="config.template.xml" />
71 <define name="_M_IX86" />
72 <if property="DBG" value="1">
73 <define name="DBG" value="1" />
74 <property name="DBG_OR_KDBG" value="true" />
77 <include base="ReactOS">include</include>
79 <directory name="boot">
80 <xi:include href="boot/boot.xml" />
83 <module name="bootcd" type="iso">
85 </project></programlisting></para>
89 <title>XInclude</title>
91 <para>XML files used by <command>rbuild</command> are modular and use
92 XInclude to include other chunks of XML in the top-level
93 <filename>ReactOS.xml</filename> file. The namespace used by XInclude is
94 <literal>xi</literal>.</para>
96 <section id="element.xi.include">
97 <title>xi:include</title>
99 <para>It is possible to split an XML build file over several files.
100 The include element in the <literal>xi</literal> namespace is used to
101 accomplish this.</para>
104 <title>Syntax</title>
106 <programlisting><xi:include href="<replaceable>config.xml</replaceable>">
108 <xi:include href="<replaceable>config.template.xml</replaceable>" />
110 </xi:include></programlisting>
114 <title>Attributes</title>
121 <para>Name of XML build file to include. The filename is
122 relative to the location of the current XML build
126 </variablelist></para>
136 <title>Children</title>
138 <para><link linkend="???">xi:fallback</link>.</para>
142 <section id="element.xi.fallback">
143 <title>xi:fallback</title>
145 <para>This element is used to provide the name of an alternate file
146 that is to be included if the first include file did not
150 <title>Syntax</title>
152 <programlisting><xi:fallback>
153 <xi:include href="<replaceable>config.template.xml</replaceable>" />
154 </xi:fallback></programlisting>
158 <title>Attributes</title>
170 <title>Parents</title>
172 <para><link linkend="element.xi.include">xi:include</link>.</para>
176 <title>Children</title>
178 <para><link linkend="element.xi.include">xi:include</link>.</para>
184 <title>Element reference</title>
186 <section id="element.bootstrap">
187 <title>Bootstrap element</title>
189 <para>A bootstrap element specifies that the generated file should be
190 put on the bootable CD as a bootstrap file.</para>
193 <title>Syntax</title>
195 <para><programlisting><bootstrap base="reactos" nameoncd="halmp.dll" /></programlisting></para>
199 <title>Attributes</title>
206 <para>Put file in this directory on the bootable CD. This
207 attribute is optional.</para>
212 <term>nameoncd</term>
215 <para>Name of file on the bootable CD. This attribute is
219 </variablelist></para>
229 <title>Parents</title>
231 <para><link linkend="element.module">module</link>.</para>
235 <title>Children</title>
241 <section id="element.cdfile">
242 <title>CDFile element</title>
244 <para>A cdfile element specifies the name of a file that is to be put
245 on the bootable CD.</para>
248 <title>Syntax</title>
250 <para><programlisting><cdfile base="reactos" nameoncd="ReadMe.txt">ReadMe.txt</cdfile></programlisting></para>
254 <title>Attributes</title>
261 <para>Put file in this directory on the bootable CD. This
262 attribute is optional.</para>
267 <term>nameoncd</term>
270 <para>Name of file on the bootable CD. This attribute is
274 </variablelist></para>
280 <para>Name of file.</para>
284 <title>Children</title>
291 <title>Compilerflag element</title>
293 <para>A compilerflag element specifies additional flags to be bassed
294 to the compiler.</para>
297 <title>Syntax</title>
299 <para><programlisting><compilerflags><replaceable>-Wpointer-arith</replaceable></compilerflag></programlisting></para>
303 <title>Attributes.</title>
311 <para>The compiler flags.</para>
315 <title>Parents</title>
317 <para><link linkend="element.if">if</link>, <link
318 linkend="element.project">project</link>.</para>
322 <title>Children</title>
328 <section id="element.component">
329 <title>Component element</title>
331 <para>A component element specifies that imports from a library are to
332 be stubbed so tests can be run without actually calling the functions
333 in the library. This element can only be used for modules of type
337 <title>Syntax</title>
339 <para><programlisting><component name="ntdll.dll">
341 </component></programlisting></para>
345 <title>Attributes</title>
352 <para>Name of library.</para>
355 </variablelist></para>
365 <title>Children</title>
367 <para><link linkend="element.symbol">symbol</link>.</para>
371 <section id="element.define">
372 <title>Define element</title>
374 <para>A define element specifies the name and (optionally) value of a
375 define for the C/C++ compiler and resource compiler.</para>
378 <title>Syntax</title>
380 <para><programlisting><define name="<replaceable>WINVER</replaceable>"><replaceable>0x501</replaceable></define></programlisting></para>
384 <title>Attributes</title>
391 <para>Name of define.</para>
394 </variablelist></para>
400 <para>Value of define. The value is optional.</para>
404 <title>Parents</title>
406 <para><link linkend="element.project">project</link>, <link
407 linkend="element.module">module</link>.</para>
411 <title>Children</title>
417 <section id="element.dependency">
418 <title>Dependency element</title>
420 <para>A dependency element specifies the name of a module (usually of
421 type buildtool) that is to be processed before the current
425 <title>Syntax</title>
427 <para><programlisting><dependency><replaceable>OtherModule</replaceable></dependency></programlisting></para>
431 <title>Attributes</title>
439 <para>Name of module.</para>
443 <title>Children</title>
449 <section id="element.directory">
450 <title>Directory element</title>
452 <para>A directory element specifies the name of a subdirectory.</para>
455 <title>Syntax</title>
457 <para><programlisting><directory name="<replaceable>MyDirectory</replaceable>">
459 </directory></programlisting></para>
463 <title>Attributes</title>
470 <para>Name of directory.</para>
473 </variablelist></para>
483 <title>Parents</title>
485 <para><link linkend="element.directory">directory</link>, <link
486 linkend="element.directory">if</link>, <link
487 linkend="element.project">project</link>.</para>
491 <title>Children</title>
493 <para><link linkend="element.cdfile">cdfile</link>, <link
494 linkend="element.directory">directory</link>, <link
495 linkend="element.file">file</link>, <link
496 linkend="element.if">if</link>, <link
497 linkend="element.pch">pch</link>, <link
498 linkend="element.property">property</link>.</para>
502 <section id="element.file">
503 <title>File element</title>
505 <para>A file element specifies the name of a file that is to be
509 <title>Syntax</title>
511 <para><programlisting><file><replaceable>MyFile.c</replaceable></file></programlisting></para>
515 <title>Attributes</title>
523 <para>Name of file.</para>
527 <title>Parents</title>
529 <para><link linkend="element.directory">directory</link>, <link
530 linkend="element.module">module</link>.</para>
534 <title>Children</title>
541 <title>Group element</title>
543 <para>A group element's purpose is grouping subelements.</para>
546 <title>Syntax</title>
548 <para><programlisting><group>
549 <file><replaceable>i386-dis.c</replaceable></file>
550 <file><replaceable>kdb_help.S</replaceable></file>
551 <file><replaceable>longjmp.S</replaceable></file>
552 <file><replaceable>setjmp.S</replaceable></file>
553 </group></programlisting></para>
557 <title>Attributes</title>
569 <title>Parents</title>
571 <para><link linkend="element.if">if</link>.</para>
575 <title>Children</title>
577 <para><link linkend="element.file">file</link>.</para>
581 <section id="element.if">
582 <title>If element</title>
584 <para>An if element allows for conditional processing of other
588 <title>Syntax</title>
590 <para><programlisting><if property="<replaceable>DBG</replaceable>" value="<replaceable>1</replaceable>">
592 </if></programlisting></para>
596 <title>Attributes</title>
600 <term>property</term>
603 <para>Name of the property that is to be evaluated.</para>
611 <para>Value to compare to the value of the property. If the
612 property has the specified value, then the subelements are
616 </variablelist></para>
626 <title>Parents</title>
628 <para><link linkend="element.project">project</link>, <link
629 linkend="element.directory">directory</link>.</para>
633 <title>Children</title>
635 <para><link linkend="element.compilerflag">compilerflag</link>,
636 <link linkend="element.define">define</link>, <link
637 linkend="element.directory">directory</link>, <link
638 linkend="element.file">file</link>, <link
639 linkend="element.if">if</link>, <link
640 linkend="element.include">include</link>, <link
641 linkend="element.property">property</link>.</para>
645 <section id="element.importlibrary">
646 <title>Importlibrary element</title>
648 <para>An importlibrary element specifies that an import library should
649 be generated which other modules can use to link with the current
653 <title>Syntax</title>
655 <para><programlisting><importlibrary definition="<replaceable>MyModule.def</replaceable>" /></programlisting></para>
659 <title>Attributes</title>
663 <term>definition</term>
666 <para>Filename of definition file
667 (<filename>.def</filename>) used to generate the import
668 library. The filename is relative to the current
672 </variablelist></para>
682 <title>Parents</title>
684 <para><link linkend="element.module">module</link>.</para>
688 <title>Children</title>
694 <section id="element.include">
695 <title>Include element</title>
697 <para>An include element specifies an include directory for the C/C++
698 compiler and resource compiler.</para>
701 <title>Syntax</title>
703 <para><programlisting><include base="<replaceable>MyLibraryModule</replaceable>"><replaceable>include</replaceable></include></programlisting></para>
707 <title>Attributes</title>
714 <para>Module or project which the value of this element is
715 relative to. This attribute is optional. If left out, the
716 include directory is relative to the position of the
717 top-level XML build file.</para>
720 </variablelist></para>
726 <para>Relative include directory.</para>
730 <title>Parents</title>
732 <para><link linkend="element.project">project</link>, <link
733 linkend="element.module">module</link>.</para>
737 <title>Children</title>
743 <section id="element.input">
744 <title>Input element</title>
746 <para>An input element specifies a group of filenames that is to be
747 passed as parameters to a build tool. Input filename parameters are
748 located after output filename parameters on the command line.</para>
751 <title>Syntax</title>
753 <para><programlisting><input>
755 </input></programlisting></para>
759 <title>Attributes</title>
771 <title>Parents</title>
773 <para><link linkend="element.invoke">invoke</link>.</para>
777 <title>Children</title>
779 <para><link linkend="element.inputfile">inputfile</link>.</para>
783 <section id="element.inputfile">
784 <title>Inputfile element</title>
786 <para>An inputfile element specifies a filename that is to be passed
787 as a parameter to a build tool.</para>
790 <title>Syntax</title>
792 <para><programlisting><inputfile><replaceable>ntoskrnl.mc</replaceable></inputfile></programlisting></para>
796 <title>Attributes</title>
800 <term>switches</term>
803 <para>Switches that is passed as parameters just before the
804 filename. This attribute is optional.</para>
807 </variablelist></para>
813 <para>Name of file that is to be passed as a parameter to the build
818 <title>Parents</title>
820 <para><link linkend="element.input">input</link>.</para>
824 <title>Children</title>
830 <section id="element.installfile">
831 <title>Installfile element</title>
833 <para>An installfile element specifies the name of a file that is to
834 be installed when using '<command>make install</command>'.</para>
837 <title>Syntax</title>
839 <para><programlisting><installfile base="<replaceable>reactos</replaceable>" newname="<replaceable>ReadMe.txt</replaceable>"><replaceable>ReadMe.txt</replaceable></installfile></programlisting></para>
843 <title>Attributes</title>
850 <para>Put file in this directory within the install
851 directory. This attribute is optional.</para>
859 <para>Name of file within the install directory. This
860 attribute is optional.</para>
863 </variablelist></para>
869 <para>Name of file.</para>
873 <title>Children</title>
879 <section id="element.invoke">
880 <title>Invoke element</title>
882 <para>An invoke element specifies the name of a module which is to be
883 executed before the current module is processed.</para>
886 <title>Syntax</title>
888 <para><programlisting><invoke module="<replaceable>wmc</replaceable>">
890 <inputfile><replaceable>ntoskrnl.mc</replaceable></inputfile>
893 <outputfile switches="<replaceable>-H</replaceable>"><replaceable>../include/reactos/bugcodes.h</replaceable></outputfile>
894 <outputfile switches="<replaceable>-o</replaceable>"><replaceable>bugcodes.rc</replaceable></outputfile>
896 </invoke></programlisting></para>
900 <title>Attributes</title>
907 <para>Name of the module to execute.</para>
910 </variablelist></para>
920 <title>Children</title>
922 <para><link linkend="element.input">input</link>, <link
923 linkend="element.output">output</link>.</para>
927 <section id="element.library">
928 <title>Library element</title>
930 <para>A library element specifies the name of another module which is
931 to be linked with the current module.</para>
934 <title>Syntax</title>
936 <para><programlisting><library><replaceable>MyLibraryModule</replaceable></library></programlisting></para>
940 <title>Attributes</title>
942 <para>None.section</para>
946 <title>Parents</title>
948 <para><link linkend="element.module">module</link>.</para>
952 <title>Children</title>
958 <section id="element.linkerflag">
959 <title>Linkerflag element</title>
961 <para>A likerflag element specifies flags to be passed to the linker
965 <title>Syntax</title>
967 <para><programlisting><linkerflag><replaceable>-lgcc</replaceable></linkerflag></programlisting></para>
971 <title>Attributes</title>
979 <para>The switches to pass to the linker.</para>
983 <title>Parents</title>
985 <para><link linkend="element.module">module</link>.</para>
989 <title>Children</title>
995 <section id="element.module">
996 <title>Module element</title>
998 <para>There can be zero or more <sgmltag
999 class="element">module</sgmltag>s per XML build file.</para>
1002 <title>Syntax</title>
1004 <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">
1006 </module></programlisting></para>
1010 <title>Attributes</title>
1012 <para><variablelist>
1017 <para>If the value is 1, then the module is enabled,
1018 otherwise it is disabled. A disabled module is not
1027 <para>If the value is 1, then the module is disabled,
1028 otherwise it is enabled. A disabled module is not
1037 <para>Name of the module. Also the base name of the
1038 generated file if such file is generated for the particular
1047 <para>Type of module. See below for an explanation of module
1048 types. <emphasis><emphasis>The module type determines the
1049 actions that is to be carried out to process the module. The
1050 defined module types are seen
1051 below:</emphasis></emphasis></para>
1054 <title>Module Types</title>
1059 <entry>Value</entry>
1061 <entry>Output name suffix</entry>
1063 <entry>Entrypoint</entry>
1065 <entry>Baseaddress</entry>
1067 <entry>Mangledsymbols</entry>
1069 <entry>Description</entry>
1075 <entry>buildtool</entry>
1080 <entry><filename>.exe</filename> (Windows)</entry>
1082 <entry>none (Linux)</entry>
1093 <entry>Builds a tool that can be run (invoked) when
1094 building ReactOS.</entry>
1098 <entry>staticlibrary</entry>
1100 <entry><filename>.a</filename></entry>
1108 <entry>Builds a static library containing object
1109 files that can be linked together with other
1114 <entry>objectlibrary</entry>
1116 <entry><filename>.o</filename></entry>
1124 <entry>Builds object files that can be linked
1125 together with other modules.</entry>
1129 <entry>kernel</entry>
1131 <entry><filename>.exe</filename></entry>
1133 <entry><function>_NtProcessStartup</function></entry>
1140 <filename>ntoskrnl.exe</filename>.</entry>
1144 <entry>kernelmodedll</entry>
1146 <entry><filename>.dll</filename></entry>
1148 <entry><function>_DriverEntry@8</function></entry>
1154 <entry>Builds a kernel-mode DLL.</entry>
1158 <entry>kernelmodedriver</entry>
1160 <entry><filename>.sys</filename></entry>
1162 <entry><function>_DriverEntry@8</function></entry>
1168 <entry>Builds a kernel-mode driver.</entry>
1172 <entry>nativedll</entry>
1174 <entry><filename>.dll</filename></entry>
1176 <entry><function>_DllMainCRTStartup@12</function></entry>
1182 <entry>Builds a native DLL.</entry>
1186 <entry>win32dll</entry>
1188 <entry><filename>.dll</filename></entry>
1190 <entry><function>_DllMain@12</function></entry>
1196 <entry>Builds a Win32 DLL.</entry>
1200 <entry>win32cui</entry>
1202 <entry><filename>.exe</filename></entry>
1204 <entry><function>_mainCRTStartup</function></entry>
1210 <entry>Builds a Win32 console executable.</entry>
1214 <entry>win32gui</entry>
1216 <entry><filename>.exe</filename></entry>
1218 <entry><function>_WinMainCRTStartup</function></entry>
1224 <entry>Builds a Win32 GUI executable.</entry>
1228 <entry>bootloader</entry>
1238 <entry>Builds a bootloader.</entry>
1242 <entry>bootsector</entry>
1252 <entry>Builds one or more bootsector
1267 <entry>Builds a bootable CD.</entry>
1275 <entry>_mainCRTStartup</entry>
1281 <entry>Builds a testsuite.</entry>
1285 <entry>rpcserver</entry>
1287 <entry><filename>.o</filename></entry>
1295 <entry>Generates and builds server code for an RPC
1300 <entry>rpcclient</entry>
1302 <entry><filename>.o</filename></entry>
1310 <entry>Generates and builds client code for an RPC
1315 <entry>alias</entry>
1325 <entry>Module is an alias for another module. This
1326 module type is the only module type for which the
1327 aliasof attribute is applicable. Only the module
1328 install functionality is aliased.</entry>
1337 <term>extension</term>
1340 <para>Extension of the generated file if such file is
1341 generated for the particular module type.</para>
1346 <term>entrypoint</term>
1349 <para>Entrypoint symbol of the generated file if such file
1350 is generated for the particular module type.</para>
1355 <term>baseaddress</term>
1358 <para>Base address of the generated file if such file is
1359 generated for the particular module type.</para>
1364 <term>mangledsymbols</term>
1367 <para>Controls wether or not to pass --kill-at to dlltool.
1368 If this attribute has the value false then --kill-at is
1369 passed to dlltool. If the value is true, then --kill-at is
1370 not passed to dlltool. If the generated file exports C++
1371 classes then this need to be true.</para>
1376 <term>installbase</term>
1379 <para>Base directory of the generated file in the
1380 installation directory. This attribute is optional.</para>
1385 <term>installname</term>
1388 <para>Name of generated file in the installation directory.
1389 This attribute is optional, but if not specified, the
1390 generated file is not copied to the installation
1399 <para>Use WRC to compile resources if true. If false,
1400 windres is used. This attribute is optional. If not
1401 specified, WRC will be used.</para>
1406 <term>warnings</term>
1409 <para>Error out if false and at least one warning is emitted
1410 during building of this module. This attribute is optional.
1411 If not specified, it is assumed to be false.</para>
1416 <term>aliasof</term>
1419 <para>Name of module that is aliased.</para>
1422 </variablelist></para>
1426 <title>Value</title>
1432 <title>Parents</title>
1434 <para><link linkend="element.project">project</link>, <link
1435 linkend="element.directory">directory</link>.</para>
1439 <title>Children</title>
1441 <para><link linkend="element.bootstrap">bootstrap</link>, <link
1442 linkend="element.component">component</link>, <link
1443 linkend="element.define">define</link>, <link
1444 linkend="element.dependency">dependency</link>, <link
1445 linkend="element.directory">directory</link>, <link
1446 linkend="element.file">file</link>, <link
1447 linkend="element.if">if</link>, <link
1448 linkend="element.importlibrary">importlibrary</link>, <link
1449 linkend="element.include">include</link>, <link
1450 linkend="element.invoke">invoke</link>, <link
1451 linkend="element.library">library</link>, <link
1452 linkend="element.linkerflag">linkerflag</link>, <link
1453 linkend="element.property">property</link>.</para>
1457 <section id="element.output">
1458 <title>Output element</title>
1460 <para>An output element specifies a group of filenames that is to be
1461 passed as parameters to a build tool. Output filename parameters are
1462 located before input filename parameters on the command line.</para>
1465 <title>Syntax</title>
1467 <para><programlisting><output>
1469 </output></programlisting></para>
1473 <title>Attributes</title>
1479 <title>Value</title>
1485 <title>Parents</title>
1487 <para><link linkend="element.invoke">invoke</link></para>
1491 <title>Children</title>
1493 <para><link linkend="element.outputfile">outputfile</link>.</para>
1497 <section id="element.outputfile">
1498 <title>Outputfile element</title>
1500 <para>An outputfile element specifies a filename that is to be passed
1501 as a parameter to a build tool.</para>
1504 <title>Syntax</title>
1506 <para><programlisting><outputfile switches="<replaceable>-H</replaceable>"><replaceable>../include/reactos/bugcodes.h</replaceable></outputfile></programlisting></para>
1510 <title>Attributes</title>
1512 <para><variablelist>
1514 <term>switches</term>
1517 <para>Switches that are passed as parameters just before the
1518 filename. This attribute is optional.</para>
1521 </variablelist></para>
1525 <title>Value</title>
1527 <para>Name of file that is to be passed as a parameter to the build
1532 <title>Parents</title>
1534 <para><link linkend="element.output">output</link>.</para>
1538 <title>Children</title>
1544 <section id="element.pch">
1545 <title>Pch element</title>
1547 <para>A pch element specifies a GCC precompiled header file.</para>
1550 <title>Syntax</title>
1552 <para><programlisting><pch><replaceable>ntdll.h</replaceable></pch></programlisting></para>
1556 <title>Attributes</title>
1562 <title>Value</title>
1564 <para>Name of the include file to be precompiled.</para>
1568 <title>Parents</title>
1570 <para><link linkend="element.directory">directory</link>.</para>
1574 <title>Children</title>
1580 <section id="element.project">
1581 <title>Project element</title>
1583 <para>There can be one <sgmltag class="element">project</sgmltag> per
1584 top-level XML build file. A project can only be defined in a top-level
1585 XML build file.</para>
1588 <title>Syntax</title>
1590 <para><programlisting><project name="ReactOS" makefile="Makefile.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
1592 </project></programlisting></para>
1596 <title>Attributes</title>
1598 <para><variablelist>
1603 <para>Name of the project.</para>
1608 <term>makefile</term>
1611 <para>Filename of the GNU makefile that is to be
1615 </variablelist></para>
1619 <title>Value</title>
1625 <title>Parents</title>
1627 <para>None. This is the top-level (root) element of
1628 <filename>ReactOS.xml</filename> file.</para>
1632 <title>Children</title>
1634 <para><link linkend="element.define">define</link>, <link
1635 linkend="element.directory">directory</link>, <link
1636 linkend="element.if">if</link>, <link
1637 linkend="element.include">include</link>, <link
1638 linkend="element.module">module</link>, <link
1639 linkend="element.property">property</link>.</para>
1643 <section id="element.property">
1644 <title>Property element</title>
1646 <para>A property element specifies the name and value of a property
1647 that can be used for conditional processing of the XML build
1651 <title>Syntax</title>
1653 <para><programlisting><property name="<replaceable>mypropertyname</replaceable>" value="<replaceable>mypropertyvalue</replaceable>" /></programlisting></para>
1657 <title>Attributes</title>
1659 <para><variablelist>
1664 <para>Name of property.</para>
1672 <para>Value of property.</para>
1675 </variablelist></para>
1679 <title>Value</title>
1685 <title>Parents</title>
1691 <title>Children</title>
1697 <section id="element.symbol">
1698 <title>Symbol element</title>
1700 <para>A symbol element specifies an imported function from a library
1701 that is to be stubbed so tests can be run without actually calling the
1702 function in the library.</para>
1705 <title>Syntax</title>
1707 <para><programlisting><symbol newname="<replaceable>RtlAllocateHeap</replaceable>"><replaceable>HeapAlloc@12</replaceable></symbol></programlisting></para>
1711 <title>Attributes</title>
1713 <para><variablelist>
1715 <term>newname</term>
1718 <para>New name of symbol. This attribute is optional.</para>
1721 </variablelist></para>
1725 <title>Value</title>
1727 <para>Name of symbol.</para>
1731 <title>Children</title>
1740 <title>Bibliography</title>
1742 <bibliomixed><title><ulink
1743 url="http://www.w3.org/TR/2004/REC-xml-20040204/">Extensible Markup
1744 Language (XML) 1.0 (Third Edition)</ulink></title><releaseinfo>W3C
1745 Recommendation</releaseinfo><author>
1746 <firstname>François</firstname>
1748 <surname>Yergeau</surname>
1750 <firstname>Tim</firstname>
1752 <surname>Bray</surname>
1754 <firstname>Jean</firstname>
1756 <surname>Paoli</surname>
1758 <firstname>C. M.</firstname>
1760 <surname>Sperberg-McQueen</surname>
1762 <firstname>Eve</firstname>
1764 <surname>Maler</surname>
1765 </author><date>4th February 2004</date></bibliomixed>
1767 <bibliomixed><title><ulink
1768 url="http://www.w3.org/TR/2004/REC-xinclude-20041220/">XML Inclusions
1769 (XInclude) Version 1.0 </ulink></title><releaseinfo>W3C
1770 Recommendation</releaseinfo><editor>
1771 <firstname>Jonathan</firstname>
1773 <surname>Marsh</surname>
1776 <orgname>Microsoft</orgname>
1779 <email>jmarsh@microsoft.com</email>
1781 <firstname>David</firstname>
1783 <surname>Orchard</surname>
1786 <orgname>BEA Systems</orgname>
1789 <email>dorchard@bea.com</email>
1790 </editor>20 December 2004</bibliomixed>