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]