Precondition dependencies.
Modified: branches/xmlbuildsystem/reactos/ReactOS.xml
Deleted: branches/xmlbuildsystem/reactos/ntoskrnl/module.xml
Added: branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml
Modified: branches/xmlbuildsystem/reactos/tools/buildno.c
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.h
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h
Modified: branches/xmlbuildsystem/reactos/tools/tools.xml
Added: branches/xmlbuildsystem/reactos/tools/wmc/wmc.xml

Modified: branches/xmlbuildsystem/reactos/ReactOS.xml
--- branches/xmlbuildsystem/reactos/ReactOS.xml	2005-01-09 00:04:32 UTC (rev 12896)
+++ branches/xmlbuildsystem/reactos/ReactOS.xml	2005-01-09 01:10:43 UTC (rev 12897)
@@ -16,6 +16,6 @@
 		<xi:include href="lib/directory.xml" />
 	</directory>
 	<directory name="ntoskrnl">
-		<xi:include href="ntoskrnl/module.xml" />
+		<xi:include href="ntoskrnl/ntoskrnl.xml" />
 	</directory>
 </project>

Deleted: branches/xmlbuildsystem/reactos/ntoskrnl/module.xml
--- branches/xmlbuildsystem/reactos/ntoskrnl/module.xml	2005-01-09 00:04:32 UTC (rev 12896)
+++ branches/xmlbuildsystem/reactos/ntoskrnl/module.xml	2005-01-09 01:10:43 UTC (rev 12897)
@@ -1,368 +0,0 @@
-<module name="ntoskrnl" type="kernelmodedll" extension=".exe">
-	<dependency>buildno</dependency>
-	<define name="_SEH_NO_NATIVE_NLG" />
-	<define name="_DISABLE_TIDENTS" />
-	<define name="__NTOSKRNL__" />
-	<define name="__3GB__" />
-	<include base="kjs">./include</include>
-	<include base="ntoskrnl">include</include>
-	<library>kjs</library>
-	<directory name="cc">
-		<file>cacheman.c</file>
-		<file>copy.c</file>
-		<file>fs.c</file>
-		<file>mdl.c</file>
-		<file>pin.c</file>
-		<file>view.c</file>
-	</directory>
-	<directory name="cm">
-		<file>import.c</file>
-		<file>ntfunc.c</file>
-		<file>regfile.c</file>
-		<file>registry.c</file>
-		<file>regobj.c</file>
-		<file>rtlfunc.c</file>
-	</directory>
-	<directory name="dbg">
-		<if property="arch" value="i386">
-			<directory name="i386">
-				<if property="kdbg" value="true">
-					<group>
-						<file>i386-dis.c</file>
-						<file>kdb_help.S</file>
-					</group>
-				</if>
-			</directory>
-		</if>
-		<if property="kdbg" value="true">
-			<group>
-				<file>kdb.c</file>
-				<file>kdb_keyboard.c</file>
-				<file>kdb_serial.c</file>
-				<file>rdebug.c</file>
-				<file>profile.c</file>
-			</group>
-		</if>
-		<or>
-			<!--
-			<if property="kdbg" value="true">
-				<group>
-					<file>kdb_stabs.c</file>
-					<file>kdb_symbols.c</file>
-				</group>
-			</if>
-			-->
-			<if property="dbg" value="true">
-				<group>
-					<file>kdb_stabs.c</file>
-					<file>kdb_symbols.c</file>
-				</group>
-			</if>
-		</or>
-		<file>dbgctrl.c</file>
-		<file>errinfo.c</file>
-		<file>print.c</file>
-		<file>user.c</file>
-	</directory>
-	<directory name="ex">
-		<if property="arch" value="i386">
-			<directory name="i386">
-				<file>interlck.c</file>
-			</directory>
-		</if>
-		<file>btree.c</file>
-		<file>callback.c</file>
-		<file>fmutex.c</file>
-		<file>hashtab.c</file>
-		<file>init.c</file>
-		<file>interlck.c</file>
-		<file>list.c</file>
-		<file>lookas.c</file>
-		<file>napi.c</file>
-		<file>power.c</file>
-		<file>resource.c</file>
-		<file>rundown.c</file>
-		<file>stree.c</file>
-		<file>synch.c</file>
-		<file>sysinfo.c</file>
-		<file>time.c</file>
-		<file>util.c</file>
-		<file>uuid.c</file>
-		<file>win32k.c</file>
-		<file>work.c</file>
-		<file>zone.c</file>
-	</directory>
-	<directory name="fs">
-		<file>dbcsname.c</file>
-		<file>filelock.c</file>
-		<file>mcb.c</file>
-		<file>mdl.c</file>
-		<file>name.c</file>
-		<file>notify.c</file>
-		<file>oplock.c</file>
-		<file>pool.c</file>
-		<file>tunnel.c</file>
-		<file>unc.c</file>
-		<file>util.c</file>
-	</directory>
-	<directory name="inbv">
-		<file>inbv.c</file>
-	</directory>
-	<directory name="io">
-		<file>adapter.c</file>
-		<file>arcname.c</file>
-		<file>bootlog.c</file>
-		<file>buildirp.c</file>
-		<file>cancel.c</file>
-		<file>cleanup.c</file>
-		<file>cntrller.c</file>
-		<file>create.c</file>
-		<file>device.c</file>
-		<file>deviface.c</file>
-		<file>dir.c</file>
-		<file>driver.c</file>
-		<file>errlog.c</file>
-		<file>error.c</file>
-		<file>event.c</file>
-		<file>file.c</file>
-		<file>flush.c</file>
-		<file>fs.c</file>
-		<file>iocomp.c</file>
-		<file>ioctrl.c</file>
-		<file>iomgr.c</file>
-		<file>iowork.c</file>
-		<file>irp.c</file>
-		<file>irq.c</file>
-		<file>lock.c</file>
-		<file>mailslot.c</file>
-		<file>mdl.c</file>
-		<file>npipe.c</file>
-		<file>page.c</file>
-		<file>parttab.c</file>
-		<file>pnpdma.c</file>
-		<file>pnpmgr.c</file>
-		<file>pnpnotify.c</file>
-		<file>pnpreport.c</file>
-		<file>pnproot.c</file>
-		<file>process.c</file>
-		<file>queue.c</file>
-		<file>rawfs.c</file>
-		<file>remlock.c</file>
-		<file>resource.c</file>
-		<file>rw.c</file>
-		<file>share.c</file>
-		<file>shutdown.c</file>
-		<file>symlink.c</file>
-		<file>timer.c</file>
-		<file>vpb.c</file>
-		<file>wdm.c</file>
-		<file>wmi.c</file>
-		<file>xhaldisp.c</file>
-		<file>xhaldrv.c</file>
-	</directory>
-	<directory name="kd">
-		<file>dlog.c</file>
-		<file>gdbstub.c</file>
-		<file>kdebug.c</file>
-		<file>mda.c</file>
-		<file>service.c</file>
-	</directory>
-	<directory name="ke">
-		<if property="arch" value="i386">
-			<directory name="i386">
-				<file>bios.c</file>
-				<file>brkpoint.c</file>
-				<file>bthread.S</file>
-				<file>exp.c</file>
-				<file>fpu.c</file>
-				<file>gdt.c</file>
-				<file>i386-mcount.S</file>
-				<file>idt.c</file>
-				<file>irq.c</file>
-				<file>irqhand.s</file>
-				<file>kernel.c</file>
-				<file>ldt.c</file>
-				<file>multiboot.S</file>
-				<file>stkswitch.S</file>
-				<file>syscall.S</file>
-				<file>thread.c</file>
-				<file>tlbflush.S</file>
-				<file>trap.S</file>
-				<file>tskswitch.S</file>
-				<file>tss.c</file>
-				<file>usercall.c</file>
-				<file>usertrap.c</file>
-				<file>v86m.c</file>
-				<file>v86m_sup.S</file>
-			</directory>
-		</if>
-		<file>apc.c</file>
-		<file>bug.c</file>
-		<file>catch.c</file>
-		<file>critical.c</file>
-		<file>device.c</file>
-		<file>dpc.c</file>
-		<file>error.c</file>
-		<file>event.c</file>
-		<file>gmutex.c</file>
-		<file>ipi.c</file>
-		<file>kqueue.c</file>
-		<file>kthread.c</file>
-		<file>main.c</file>
-		<file>mutex.c</file>
-		<file>process.c</file>
-		<file>profile.c</file>
-		<file>queue.c</file>
-		<file>sem.c</file>
-		<file>spinlock.c</file>
-		<file>timer.c</file>
-		<file>wait.c</file>
-	</directory>
-	<directory name="ldr">
-		<file>init.c</file>
-		<file>loader.c</file>
-		<file>resource.c</file>
-		<file>rtl.c</file>
-		<file>sysdll.c</file>
-		<file>userldr.c</file>
-	</directory>
-	<directory name="lpc">
-		<file>close.c</file>
-		<file>complete.c</file>
-		<file>connect.c</file>
-		<file>create.c</file>
-		<file>listen.c</file>
-		<file>port.c</file>
-		<file>query.c</file>
-		<file>queue.c</file>
-		<file>receive.c</file>
-		<file>reply.c</file>
-		<file>send.c</file>
-	</directory>
-	<directory name="mm">
-		<if property="arch" value="i386">
-			<directory name="i386">
-				<file>memsafe.s</file>
-				<file>page.c</file>
-				<file>pfault.c</file>
-			</directory>
-		</if>
-		<file>anonmem.c</file>
-		<file>aspace.c</file>
-		<file>balance.c</file>
-		<file>cont.c</file>
-		<file>drvlck.c</file>
-		<file>elf32.c</file>
-		<file>elf64.c</file>
-		<file>elf.c</file>
-		<file>freelist.c</file>
-		<file>iospace.c</file>
-		<file>kmap.c</file>
-		<file>marea.c</file>
-		<file>mdl.c</file>
-		<file>mm.c</file>
-		<file>mminit.c</file>
-		<file>mpw.c</file>
-		<file>ncache.c</file>
-		<file>npool.c</file>
-		<file>pagefile.c</file>
-		<file>pageop.c</file>
-		<file>pager.c</file>
-		<file>pagfault.c</file>
-		<file>paging.c</file>
-		<file>pe.c</file>
-		<file>physical.c</file>
-		<file>pool.c</file>
-		<file>ppool.c</file>
-		<file>region.c</file>
-		<file>rmap.c</file>
-		<file>section.c</file>
-		<file>slab.c</file>
-		<file>verifier.c</file>
-		<file>virtual.c</file>
-		<file>wset.c</file>
-	</directory>
-	<directory name="nt">
-		<file>channel.c</file>
-		<file>efi.c</file>
-		<file>evtpair.c</file>
-		<file>misc.c</file>
-		<file>mutant.c</file>
-		<file>nt.c</file>
-		<file>ntevent.c</file>
-		<file>ntsem.c</file>
-		<file>nttimer.c</file>
-		<file>plugplay.c</file>
-		<file>profile.c</file>
-		<file>vdm.c</file>
-	</directory>
-	<directory name="ob">
-		<file>dirobj.c</file>
-		<file>handle.c</file>
-		<file>namespc.c</file>
-		<file>ntobj.c</file>
-		<file>object.c</file>
-		<file>sdcache.c</file>
-		<file>security.c</file>
-		<file>symlink.c</file>
-	</directory>
-	<directory name="po">
-		<file>power.c</file>
-	</directory>
-	<directory name="ps">
-		<if property="arch" value="i386">
-			<directory name="i386">
-				<file>continue.c</file>
-			</directory>
-		</if>
-		<file>cid.c</file>
-		<file>create.c</file>
-		<file>debug.c</file>
-		<file>idle.c</file>
-		<file>job.c</file>
-		<file>kill.c</file>
-		<file>locale.c</file>
-		<file>process.c</file>
-		<file>psmgr.c</file>
-		<file>suspend.c</file>
-		<file>thread.c</file>
-		<file>tinfo.c</file>
-		<file>w32call.c</file>
-		<file>win32.c</file>
-	</directory>
-	<directory name="rtl">
-		<if property="arch" value="i386">
-			<directory name="i386">
-				<file>exception.c</file>
-			</directory>
-		</if>
-		<file>atom.c</file>
-		<file>capture.c</file>
-		<file>ctype.c</file>
-		<file>handle.c</file>
-		<file>libsupp.c</file>
-		<file>message.c</file>
-		<file>nls.c</file>
-		<file>purecall.c</file>
-		<file>rangelist.c</file>
-		<file>regio.c</file>
-		<file>sprintf.c</file>
-		<file>stdlib.c</file>
-		<file>string.c</file>
-		<file>strtok.c</file>
-		<file>swprintf.c</file>
-		<file>wstring.c</file>
-	</directory>
-	<directory name="se">
-		<file>access.c</file>
-		<file>acl.c</file>
-		<file>audit.c</file>
-		<file>lsa.c</file>
-		<file>luid.c</file>
-		<file>priv.c</file>
-		<file>sd.c</file>
-		<file>semgr.c</file>
-		<file>sid.c</file>
-		<file>token.c</file>
-	</directory>
-</module>

Copied: branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml (from rev 12891, branches/xmlbuildsystem/reactos/ntoskrnl/module.xml)
--- branches/xmlbuildsystem/reactos/ntoskrnl/module.xml	2005-01-08 19:38:51 UTC (rev 12891)
+++ branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml	2005-01-09 01:10:43 UTC (rev 12897)
@@ -0,0 +1,378 @@
+<module name="ntoskrnl" type="kernelmodedll" extension=".exe">
+	<dependency>buildno</dependency>
+	<dependency>wmc</dependency>
+	<define name="_SEH_NO_NATIVE_NLG" />
+	<define name="_DISABLE_TIDENTS" />
+	<define name="__NTOSKRNL__" />
+	<define name="__3GB__" />
+	<include base="kjs">./include</include>
+	<include base="ntoskrnl">include</include>
+	<library>kjs</library>
+	<invoke module="wmc">
+		<input>
+			<inputfile>ntoskrnl.mc</inputfile>
+		</input>
+		<output>
+			<outputfile switches="-H">../include/reactos/bugcodes.h</outputfile>
+			<outputfile switches="-o">bugcodes.rc</outputfile>
+		</output>
+	</invoke>
+	<directory name="cc">
+		<file>cacheman.c</file>
+		<file>copy.c</file>
+		<file>fs.c</file>
+		<file>mdl.c</file>
+		<file>pin.c</file>
+		<file>view.c</file>
+	</directory>
+	<directory name="cm">
+		<file>import.c</file>
+		<file>ntfunc.c</file>
+		<file>regfile.c</file>
+		<file>registry.c</file>
+		<file>regobj.c</file>
+		<file>rtlfunc.c</file>
+	</directory>
+	<directory name="dbg">
+		<if property="arch" value="i386">
+			<directory name="i386">
+				<if property="kdbg" value="true">
+					<group>
+						<file>i386-dis.c</file>
+						<file>kdb_help.S</file>
+					</group>
+				</if>
+			</directory>
+		</if>
+		<if property="kdbg" value="true">
+			<group>
+				<file>kdb.c</file>
+				<file>kdb_keyboard.c</file>
+				<file>kdb_serial.c</file>
+				<file>rdebug.c</file>
+				<file>profile.c</file>
+			</group>
+		</if>
+		<or>
+			<!--
+			<if property="kdbg" value="true">
+				<group>
+					<file>kdb_stabs.c</file>
+					<file>kdb_symbols.c</file>
+				</group>
+			</if>
+			-->
+			<if property="dbg" value="true">
+				<group>
+					<file>kdb_stabs.c</file>
+					<file>kdb_symbols.c</file>
+				</group>
+			</if>
+		</or>
+		<file>dbgctrl.c</file>
+		<file>errinfo.c</file>
+		<file>print.c</file>
+		<file>user.c</file>
+	</directory>
+	<directory name="ex">
+		<if property="arch" value="i386">
+			<directory name="i386">
+				<file>interlck.c</file>
+			</directory>
+		</if>
+		<file>btree.c</file>
+		<file>callback.c</file>
+		<file>fmutex.c</file>
+		<file>hashtab.c</file>
+		<file>init.c</file>
+		<file>interlck.c</file>
+		<file>list.c</file>
+		<file>lookas.c</file>
+		<file>napi.c</file>
+		<file>power.c</file>
+		<file>resource.c</file>
+		<file>rundown.c</file>
+		<file>stree.c</file>
+		<file>synch.c</file>
+		<file>sysinfo.c</file>
+		<file>time.c</file>
+		<file>util.c</file>
+		<file>uuid.c</file>
+		<file>win32k.c</file>
+		<file>work.c</file>
+		<file>zone.c</file>
+	</directory>
+	<directory name="fs">
+		<file>dbcsname.c</file>
+		<file>filelock.c</file>
+		<file>mcb.c</file>
+		<file>mdl.c</file>
+		<file>name.c</file>
+		<file>notify.c</file>
+		<file>oplock.c</file>
+		<file>pool.c</file>
+		<file>tunnel.c</file>
+		<file>unc.c</file>
+		<file>util.c</file>
+	</directory>
+	<directory name="inbv">
+		<file>inbv.c</file>
+	</directory>
+	<directory name="io">
+		<file>adapter.c</file>
+		<file>arcname.c</file>
+		<file>bootlog.c</file>
+		<file>buildirp.c</file>
+		<file>cancel.c</file>
+		<file>cleanup.c</file>
+		<file>cntrller.c</file>
+		<file>create.c</file>
+		<file>device.c</file>
+		<file>deviface.c</file>
+		<file>dir.c</file>
+		<file>driver.c</file>
+		<file>errlog.c</file>
+		<file>error.c</file>
+		<file>event.c</file>
+		<file>file.c</file>
+		<file>flush.c</file>
+		<file>fs.c</file>
+		<file>iocomp.c</file>
+		<file>ioctrl.c</file>
+		<file>iomgr.c</file>
+		<file>iowork.c</file>
+		<file>irp.c</file>
+		<file>irq.c</file>
+		<file>lock.c</file>
+		<file>mailslot.c</file>
+		<file>mdl.c</file>
+		<file>npipe.c</file>
+		<file>page.c</file>
+		<file>parttab.c</file>
+		<file>pnpdma.c</file>
+		<file>pnpmgr.c</file>
+		<file>pnpnotify.c</file>
+		<file>pnpreport.c</file>
+		<file>pnproot.c</file>
+		<file>process.c</file>
+		<file>queue.c</file>
+		<file>rawfs.c</file>
+		<file>remlock.c</file>
+		<file>resource.c</file>
+		<file>rw.c</file>
+		<file>share.c</file>
+		<file>shutdown.c</file>
+		<file>symlink.c</file>
+		<file>timer.c</file>
+		<file>vpb.c</file>
+		<file>wdm.c</file>
+		<file>wmi.c</file>
+		<file>xhaldisp.c</file>
+		<file>xhaldrv.c</file>
+	</directory>
+	<directory name="kd">
+		<file>dlog.c</file>
+		<file>gdbstub.c</file>
+		<file>kdebug.c</file>
+		<file>mda.c</file>
+		<file>service.c</file>
+	</directory>
+	<directory name="ke">
+		<if property="arch" value="i386">
+			<directory name="i386">
+				<file>bios.c</file>
+				<file>brkpoint.c</file>
+				<file>bthread.S</file>
+				<file>exp.c</file>
+				<file>fpu.c</file>
+				<file>gdt.c</file>
+				<file>i386-mcount.S</file>
+				<file>idt.c</file>
+				<file>irq.c</file>
+				<file>irqhand.s</file>
+				<file>kernel.c</file>
+				<file>ldt.c</file>
+				<file>multiboot.S</file>
+				<file>stkswitch.S</file>
+				<file>syscall.S</file>
+				<file>thread.c</file>
+				<file>tlbflush.S</file>
+				<file>trap.S</file>
+				<file>tskswitch.S</file>
+				<file>tss.c</file>
+				<file>usercall.c</file>
+				<file>usertrap.c</file>
+				<file>v86m.c</file>
+				<file>v86m_sup.S</file>
+			</directory>
+		</if>
+		<file>apc.c</file>
+		<file>bug.c</file>
+		<file>catch.c</file>
+		<file>critical.c</file>
+		<file>device.c</file>
+		<file>dpc.c</file>
+		<file>error.c</file>
+		<file>event.c</file>
+		<file>gmutex.c</file>
+		<file>ipi.c</file>
+		<file>kqueue.c</file>
+		<file>kthread.c</file>
+		<file>main.c</file>
+		<file>mutex.c</file>
+		<file>process.c</file>
+		<file>profile.c</file>
+		<file>queue.c</file>
+		<file>sem.c</file>
+		<file>spinlock.c</file>
+		<file>timer.c</file>
+		<file>wait.c</file>
+	</directory>
+	<directory name="ldr">
+		<file>init.c</file>
+		<file>loader.c</file>
+		<file>resource.c</file>
+		<file>rtl.c</file>
+		<file>sysdll.c</file>
+		<file>userldr.c</file>
+	</directory>
+	<directory name="lpc">
+		<file>close.c</file>
+		<file>complete.c</file>
+		<file>connect.c</file>
+		<file>create.c</file>
+		<file>listen.c</file>
+		<file>port.c</file>
+		<file>query.c</file>
+		<file>queue.c</file>
+		<file>receive.c</file>
+		<file>reply.c</file>
+		<file>send.c</file>
+	</directory>
+	<directory name="mm">
+		<if property="arch" value="i386">
+			<directory name="i386">
+				<file>memsafe.s</file>
+				<file>page.c</file>
+				<file>pfault.c</file>
+			</directory>
+		</if>
+		<file>anonmem.c</file>
+		<file>aspace.c</file>
+		<file>balance.c</file>
+		<file>cont.c</file>
+		<file>drvlck.c</file>
+		<file>elf32.c</file>
+		<file>elf64.c</file>
+		<file>elf.c</file>
+		<file>freelist.c</file>
+		<file>iospace.c</file>
+		<file>kmap.c</file>
+		<file>marea.c</file>
+		<file>mdl.c</file>
+		<file>mm.c</file>
+		<file>mminit.c</file>
+		<file>mpw.c</file>
+		<file>ncache.c</file>
+		<file>npool.c</file>
+		<file>pagefile.c</file>
+		<file>pageop.c</file>
+		<file>pager.c</file>
+		<file>pagfault.c</file>
+		<file>paging.c</file>
+		<file>pe.c</file>
+		<file>physical.c</file>
+		<file>pool.c</file>
+		<file>ppool.c</file>
+		<file>region.c</file>
+		<file>rmap.c</file>
+		<file>section.c</file>
+		<file>slab.c</file>
+		<file>verifier.c</file>
+		<file>virtual.c</file>
+		<file>wset.c</file>
+	</directory>
+	<directory name="nt">
+		<file>channel.c</file>
+		<file>efi.c</file>
+		<file>evtpair.c</file>
+		<file>misc.c</file>
+		<file>mutant.c</file>
+		<file>nt.c</file>
+		<file>ntevent.c</file>
+		<file>ntsem.c</file>
+		<file>nttimer.c</file>
+		<file>plugplay.c</file>
+		<file>profile.c</file>
+		<file>vdm.c</file>
+	</directory>
+	<directory name="ob">
+		<file>dirobj.c</file>
+		<file>handle.c</file>
+		<file>namespc.c</file>
+		<file>ntobj.c</file>
+		<file>object.c</file>
+		<file>sdcache.c</file>
+		<file>security.c</file>
+		<file>symlink.c</file>
+	</directory>
+	<directory name="po">
+		<file>power.c</file>
+	</directory>
+	<directory name="ps">
+		<if property="arch" value="i386">
+			<directory name="i386">
+				<file>continue.c</file>
+			</directory>
+		</if>
+		<file>cid.c</file>
+		<file>create.c</file>
+		<file>debug.c</file>
+		<file>idle.c</file>
+		<file>job.c</file>
+		<file>kill.c</file>
+		<file>locale.c</file>
+		<file>process.c</file>
+		<file>psmgr.c</file>
+		<file>suspend.c</file>
+		<file>thread.c</file>
+		<file>tinfo.c</file>
+		<file>w32call.c</file>
+		<file>win32.c</file>
+	</directory>
+	<directory name="rtl">
+		<if property="arch" value="i386">
+			<directory name="i386">
+				<file>exception.c</file>
+			</directory>
+		</if>
+		<file>atom.c</file>
+		<file>capture.c</file>
+		<file>ctype.c</file>
+		<file>handle.c</file>
+		<file>libsupp.c</file>
+		<file>message.c</file>
+		<file>nls.c</file>
+		<file>purecall.c</file>
+		<file>rangelist.c</file>
+		<file>regio.c</file>
+		<file>sprintf.c</file>
+		<file>stdlib.c</file>
+		<file>string.c</file>
+		<file>strtok.c</file>
+		<file>swprintf.c</file>
+		<file>wstring.c</file>
+	</directory>
+	<directory name="se">
+		<file>access.c</file>
+		<file>acl.c</file>
+		<file>audit.c</file>
+		<file>lsa.c</file>
+		<file>luid.c</file>
+		<file>priv.c</file>
+		<file>sd.c</file>
+		<file>semgr.c</file>
+		<file>sid.c</file>
+		<file>token.c</file>
+	</directory>
+</module>

Modified: branches/xmlbuildsystem/reactos/tools/buildno.c
--- branches/xmlbuildsystem/reactos/tools/buildno.c	2005-01-09 00:04:32 UTC (rev 12896)
+++ branches/xmlbuildsystem/reactos/tools/buildno.c	2005-01-09 01:10:43 UTC (rev 12897)
@@ -32,10 +32,8 @@
 #define FALSE 0
 #define TRUE  1
 
-/* File to (over)write */
-#define BUILDNO_INCLUDE_FILE "../include/reactos/buildno.h"
-
 static char * argv0 = "";
+static char * filename = "";
 
 #ifdef DBG
 void
@@ -157,7 +155,7 @@
   s = s + sprintf (s, "-%S\"\n", KERNEL_VERSION_BUILD_TYPE);
   s = s + sprintf (s, "#endif\n/* EOF */\n");
 
-  h = fopen (BUILDNO_INCLUDE_FILE, "rb");
+  h = fopen (filename, "rb");
   if (h != NULL)
     {
       fseek(h, 0, SEEK_END);
@@ -178,13 +176,13 @@
       fclose(h);
     }
 
-  h = fopen (BUILDNO_INCLUDE_FILE, "wb");
+  h = fopen (filename, "wb");
   if (!h) 
     {
       fprintf (stderr,
 	       "%s: can not create file \"%s\"!\n",
 	       argv0,
-	       BUILDNO_INCLUDE_FILE);
+	       filename);
       return;
     }
   fwrite(s1, 1, strlen(s1), h);
@@ -196,7 +194,7 @@
 {
 	fprintf (
 		stderr,
-		"Usage: %s [-{p|q}]\n\n  -p  print version number and exit\n  -q  run in quiet mode\n",
+		"Usage: %s [-{p|q}] path-to-header\n\n  -p  print version number and exit\n  -q  run in quiet mode\n",
 		argv0
 		);
 	exit (EXIT_SUCCESS);
@@ -221,6 +219,7 @@
 		case 1:
 			break;
 		case 2:
+		case 3:
 			if (argv[1][0] == '-')
 			{
 				if (argv[1][1] == 'q')
@@ -235,7 +234,12 @@
 				{
 					usage ();
 				}
+				filename = argv[2];
 			}
+			else if (argc == 2)
+			{
+				filename = argv[1];
+			}
 			else
 			{
 				usage ();

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp	2005-01-09 00:04:32 UTC (rev 12896)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp	2005-01-09 01:10:43 UTC (rev 12897)
@@ -106,7 +106,7 @@
 MingwModuleHandler::GetObjectFilename ( const string& sourceFilename ) const
 {
 	return FixupTargetFilename ( ReplaceExtension ( sourceFilename,
-		                                            ".o" ) );
+	                                                ".o" ) );
 }
 
 string
@@ -221,12 +221,10 @@
 	{
 		string sourceFilename = module.files[i]->name;
 		string objectFilename = GetObjectFilename ( sourceFilename );
-		string dependencies = GetModuleDependencies ( module );
 		fprintf ( fMakefile,
-		          "%s: %s %s\n",
+		          "%s: %s\n",
 		          objectFilename.c_str (),
-		          sourceFilename.c_str (),
-		          dependencies.c_str ());
+		          sourceFilename.c_str () );
 		fprintf ( fMakefile,
 		          "\t%s -c %s -o %s %s\n",
 		          cc.c_str (),
@@ -293,27 +291,64 @@
 	for ( size_t i = 0; i < module.invocations.size (); i++ )
 	{
 		Invoke& invoke = *module.invocations[i];
+		if (invoke.invokeModule == &module)
+			/* Protect against circular dependencies */
+			continue;
 		if ( dependencies.length () > 0 )
 			dependencies += " ";
-		string invokeTarget = module.GetInvocationTarget ( i );
-		dependencies += invokeTarget;
+		dependencies += invoke.GetTargets ();
 	}
 	return dependencies;
 }
-	
+
+string
+MingwModuleHandler::GetInvocationParameters ( const Invoke& invoke ) const
+{
+	string parameters ( "" );
+	size_t i;
+	for (i = 0; i < invoke.output.size (); i++)
+	{
+		if (parameters.length () > 0)
+			parameters += " ";
+		InvokeFile& invokeFile = *invoke.output[i];
+		if (invokeFile.switches.length () > 0)
+		{
+			parameters += invokeFile.switches;
+			parameters += " ";
+		}
+		parameters += invokeFile.name;
+	}
+
+	for (i = 0; i < invoke.input.size (); i++)
+	{
+		if (parameters.length () > 0)
+			parameters += " ";
+		InvokeFile& invokeFile = *invoke.input[i];
+		if (invokeFile.switches.length () > 0)
+		{
+			parameters += invokeFile.switches;
+			parameters += " ";
+		}
+		parameters += invokeFile.name;
+	}
+
+	return parameters;
+}
+
 void
 MingwModuleHandler::GenerateInvocations ( const Module& module ) const
 {
 	if ( module.invocations.size () == 0 )
 		return;
 	
-	if ( module.type != BuildTool )
-		throw InvalidBuildFileException ( module.node.location,
-		                                  "Only modules of type buildtool can be invoked." );
-
 	for ( size_t i = 0; i < module.invocations.size (); i++ )
 	{
-		Invoke& invoke = *module.invocations[i];
+		const Invoke& invoke = *module.invocations[i];
+
+		if ( invoke.invokeModule->type != BuildTool )
+			throw InvalidBuildFileException ( module.node.location,
+		                                      "Only modules of type buildtool can be invoked." );
+
 		string invokeTarget = module.GetInvocationTarget ( i );
 		fprintf ( fMakefile,
 		          "%s: %s\n\n",
@@ -322,17 +357,52 @@
 		fprintf ( fMakefile,
 		          "%s: %s\n",
 		          invokeTarget.c_str (),
-		          FixupTargetFilename ( module.GetPath () ).c_str () );
+		          FixupTargetFilename ( invoke.invokeModule->GetPath () ).c_str () );
 		fprintf ( fMakefile,
-		          "\t%s\n\n",
-		          FixupTargetFilename ( module.GetPath () ).c_str () );
+		          "\t%s %s\n\n",
+		          FixupTargetFilename ( invoke.invokeModule->GetPath () ).c_str (),
+		          GetInvocationParameters ( invoke ).c_str () );
 		fprintf ( fMakefile,
 		          ".PNONY: %s\n\n",
 		          invokeTarget.c_str () );
 	}
 }
 
+string
+MingwModuleHandler::GetPreconditionDependenciesName ( const Module& module ) const
+{
+	return ssprintf ( "%s_precondition",
+	                  module.name.c_str () );
+}
 
+void
+MingwModuleHandler::GeneratePreconditionDependencies ( const Module& module ) const
+{
+	string preconditionDependenciesName = GetPreconditionDependenciesName ( module );
+	string sourceFilenames = GetSourceFilenames ( module );
+	string dependencies = GetModuleDependencies ( module );
+	string s = GetInvocationDependencies ( module );
+	if ( s.length () > 0 )
+	{
+		if ( dependencies.length () > 0 )
+			dependencies += " ";
+		dependencies += s;
+	}
+	
+	fprintf ( fMakefile,
+	          "%s: %s\n\n",
+	          preconditionDependenciesName.c_str (),
+	          dependencies.c_str () );
+	fprintf ( fMakefile,
+	          "%s: %s\n\n",
+	          sourceFilenames.c_str (),
+	          preconditionDependenciesName.c_str ());
+	fprintf ( fMakefile,
+	          ".PNONY: %s\n\n",
+	          preconditionDependenciesName.c_str () );
+}
+
+
 MingwBuildToolModuleHandler::MingwBuildToolModuleHandler ( FILE* fMakefile )
 	: MingwModuleHandler ( fMakefile )
 {
@@ -347,6 +417,7 @@
 void
 MingwBuildToolModuleHandler::Process ( const Module& module )
 {
[truncated at 1000 lines; 241 more skipped]