* Build bin2res, winmm, comctl32, aclui, acledit
* Correct dependencies for build tool invocations
* Normalize paths in the generated makefile
Added: branches/xmlbuildsystem/reactos/lib/acledit/acledit.xml
Added: branches/xmlbuildsystem/reactos/lib/aclui/aclui.xml
Added: branches/xmlbuildsystem/reactos/lib/comctl32/comctl32.xml
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_hist_large.bmp
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_hist_small.bmp
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_std_large.bmp
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_std_small.bmp
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_view_large.bmp
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_view_small.bmp
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idc_copy.cur
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idc_divider.cur
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idc_divideropen.cur
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idc_movebutton.cur
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idi_dragarrow.ico
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_error_sm.ico
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_info_sm.ico
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_warn_sm.ico
Added: branches/xmlbuildsystem/reactos/lib/comctl32/idt_check.bmp
Modified: branches/xmlbuildsystem/reactos/lib/directory.xml
Added: branches/xmlbuildsystem/reactos/lib/winmm/winmm.xml
Added: branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.xml
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
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/makefile
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/test.h
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/tests/alltests.cpp
Added: branches/xmlbuildsystem/reactos/tools/rbuild/tests/functiontest.cpp
Modified: branches/xmlbuildsystem/reactos/tools/tools.xml
Property changes on: branches/xmlbuildsystem/reactos/drivers/video/displays/vga
___________________________________________________________________
Name: svn:ignore
   - vgaddi.coff
*.sym
*.o
*.a
*.dll
*.map
*.tmp
.*.d
   + vgaddi.coff
*.sym
*.o
*.a
*.dll
*.map
*.tmp
.*.d
*.sys

Added: branches/xmlbuildsystem/reactos/lib/acledit/acledit.xml
--- branches/xmlbuildsystem/reactos/lib/acledit/acledit.xml	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/lib/acledit/acledit.xml	2005-01-20 22:19:01 UTC (rev 13168)
@@ -0,0 +1,14 @@
+<module name="acledit" type="win32dll">
+	<importlibrary definition="acledit.def" />
+	<include base="acledit">.</include>
+	<define name="UNICODE" />
+	<define name="_UNICODE" />
+	<define name="__REACTOS__" />
+	<library>ntdll</library>
+	<library>kernel32</library>
+	<library>advapi32</library>
+	<library>user32</library>
+	<file>acledit.c</file>
+	<file>stubs.c</file>
+	<file>acledit.rc</file>
+</module>

Added: branches/xmlbuildsystem/reactos/lib/aclui/aclui.xml
--- branches/xmlbuildsystem/reactos/lib/aclui/aclui.xml	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/lib/aclui/aclui.xml	2005-01-20 22:19:01 UTC (rev 13168)
@@ -0,0 +1,18 @@
+<module name="aclui" type="win32dll">
+	<importlibrary definition="aclui.def" />
+	<include base="aclui">.</include>
+	<define name="UNICODE" />
+	<define name="_UNICODE" />
+	<define name="__REACTOS__" />
+	<define name="__USE_W32API" />
+	<define name="_WIN32_IE">0x0500</define>
+	<define name="_WIN32_WINNT">0x501</define>
+	<define name="WINVER">0x0600</define>
+	<library>rosrtl</library>
+	<library>ntdll</library>
+	<library>kernel32</library>
+	<library>user32</library>
+	<library>comctl32</library>
+	<file>aclui.c</file>
+	<file>aclui.rc</file>
+</module>
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32
___________________________________________________________________
Name: svn:ignore
   - *.coff
*.dll
*.d
*.a
*.o
*.sym
*.map
*.tmp
Makefile.ros
*.spec.def
*.stubs.c
*.ico
*.bmp
*.cur
   + *.coff
*.dll
*.d
*.a
*.o
*.sym
*.map
*.tmp
Makefile.ros
*.spec.def
*.stubs.c

Added: branches/xmlbuildsystem/reactos/lib/comctl32/comctl32.xml
--- branches/xmlbuildsystem/reactos/lib/comctl32/comctl32.xml	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/lib/comctl32/comctl32.xml	2005-01-20 22:19:01 UTC (rev 13168)
@@ -0,0 +1,51 @@
+<module name="comctl32" type="win32dll">
+	<dependency>bin2res</dependency>
+	<dependency>winebuild</dependency>
+	<importlibrary definition="comctl32.spec.def" />
+	<include base="comctl32">.</include>
+	<include base="ReactOS">include/wine</include>
+	<define name="UNICODE" />
+	<define name="_UNICODE" />
+	<define name="__REACTOS__" />
+	<define name="__USE_W32API" />
+	<define name="_WIN32_IE">0x600</define>
+	<define name="_WIN32_WINNT">0x501</define>
+	<define name="WINVER">0x501</define>
+	<library>wine</library>
+	<library>ntdll</library>
+	<library>kernel32</library>
+	<library>advapi32</library>
+	<library>gdi32</library>
+	<library>user32</library>
+	<library>winmm</library>
+	<file>animate.c</file>
+	<file>comboex.c</file>
+	<file>comctl32undoc.c</file>
+	<file>commctrl.c</file>
+	<file>datetime.c</file>
+	<file>draglist.c</file>
+	<file>flatsb.c</file>
+	<file>header.c</file>
+	<file>hotkey.c</file>
+	<file>imagelist.c</file>
+	<file>ipaddress.c</file>
+	<file>listview.c</file>
+	<file>monthcal.c</file>
+	<file>nativefont.c</file>
+	<file>pager.c</file>
+	<file>progress.c</file>
+	<file>propsheet.c</file>
+	<file>rebar.c</file>
+	<file>smoothscroll.c</file>
+	<file>string.c</file>
+	<file>status.c</file>
+	<file>syslink.c</file>
+	<file>tab.c</file>
+	<file>toolbar.c</file>
+	<file>tooltips.c</file>
+	<file>trackbar.c</file>
+	<file>treeview.c</file>
+	<file>updown.c</file>
+	<file>rsrc.rc</file>
+	<file>comctl32.spec</file>
+</module>

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_hist_large.bmp
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idb_hist_large.bmp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_hist_small.bmp
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idb_hist_small.bmp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_std_large.bmp
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idb_std_large.bmp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_std_small.bmp
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idb_std_small.bmp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_view_large.bmp
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idb_view_large.bmp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idb_view_small.bmp
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idb_view_small.bmp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idc_copy.cur
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idc_copy.cur
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idc_divider.cur
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idc_divider.cur
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idc_divideropen.cur
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idc_divideropen.cur
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idc_movebutton.cur
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idc_movebutton.cur
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idi_dragarrow.ico
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idi_dragarrow.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_error_sm.ico
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_error_sm.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_info_sm.ico
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_info_sm.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_warn_sm.ico
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idi_tt_warn_sm.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/xmlbuildsystem/reactos/lib/comctl32/idt_check.bmp
(Binary files differ)
Property changes on: branches/xmlbuildsystem/reactos/lib/comctl32/idt_check.bmp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/xmlbuildsystem/reactos/lib/directory.xml
--- branches/xmlbuildsystem/reactos/lib/directory.xml	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/lib/directory.xml	2005-01-20 22:19:01 UTC (rev 13168)
@@ -1,3 +1,9 @@
+<directory name="acledit">
+	<xi:include href="acledit/acledit.xml" />
+</directory>
+<directory name="aclui">
+	<xi:include href="aclui/aclui.xml" />
+</directory>
 <directory name="adns">
 	<xi:include href="adns/adns.xml" />
 </directory>
@@ -4,6 +10,9 @@
 <directory name="advapi32">
 	<xi:include href="advapi32/advapi32.xml" />
 </directory>
+<directory name="comctl32">
+	<xi:include href="comctl32/comctl32.xml" />
+</directory>
 <directory name="dnsapi">
 	<xi:include href="dnsapi/dnsapi.xml" />
 </directory>
@@ -46,6 +55,9 @@
 <directory name="user32">
 	<xi:include href="user32/user32.xml" />
 </directory>
+<directory name="winmm">
+	<xi:include href="winmm/winmm.xml" />
+</directory>
 <directory name="ws2_32">
 	<xi:include href="ws2_32/ws2_32.xml" />
 </directory>

Added: branches/xmlbuildsystem/reactos/lib/winmm/winmm.xml
--- branches/xmlbuildsystem/reactos/lib/winmm/winmm.xml	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/lib/winmm/winmm.xml	2005-01-20 22:19:01 UTC (rev 13168)
@@ -0,0 +1,29 @@
+<module name="winmm" type="win32dll">
+	<dependency>bin2res</dependency>
+	<dependency>winebuild</dependency>
+	<importlibrary definition="winmm.spec.def" />
+	<include base="winmm">.</include>
+	<include base="ReactOS">include/wine</include>
+	<define name="UNICODE" />
+	<define name="_UNICODE" />
+	<define name="__REACTOS__" />
+	<define name="__USE_W32API" />
+	<define name="_WIN32_IE">0x600</define>
+	<define name="_WIN32_WINNT">0x501</define>
+	<define name="WINVER">0x501</define>
+	<library>wine</library>
+	<library>ntdll</library>
+	<library>kernel32</library>
+	<library>advapi32</library>
+	<library>user32</library>
+	<file>driver.c</file>
+	<file>joystick.c</file>
+	<file>lolvldrv.c</file>
+	<file>mci.c</file>
+	<file>mmio.c</file>
+	<file>playsound.c</file>
+	<file>time.c</file>
+	<file>winmm.c</file>
+	<file>winmm_res.rc</file>
+	<file>winmm.spec</file>
+</module>

Added: branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.xml
--- branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.xml	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/tools/bin2res/bin2res.xml	2005-01-20 22:19:01 UTC (rev 13168)
@@ -0,0 +1,6 @@
+<module name="bin2res" type="buildtool">
+	<include base="ReactOS">include/wine</include>
+	<define name="__REACTOS__" />
+	<file>bin2res.c</file>
+	<file>mkstemps.c</file>
+</module>

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp	2005-01-20 22:19:01 UTC (rev 13168)
@@ -184,6 +184,7 @@
 	fprintf ( fMakefile, "mkdir = tools%crmkdir\n", CSEP );
 	fprintf ( fMakefile, "NUL=NUL\n" );
 	fprintf ( fMakefile, "winebuild = tools" SSEP "winebuild" SSEP "winebuild\n" );
+	fprintf ( fMakefile, "bin2res = tools" SSEP "winebuild" SSEP "bin2res\n" );
 	fprintf ( fMakefile, "\n" );
 	GenerateGlobalCFlagsAndProperties (
 		"=",
@@ -197,13 +198,12 @@
 	fprintf ( fMakefile, "\n" );
 
 	fprintf ( fMakefile, ".PHONY: clean\n\n" );
-	//fprintf ( fMakefile, "clean:\n\t-@${rm} $(PROJECT_CLEAN)\n\n" );
 }
 
 void
 MingwBackend::GenerateAllTarget ()
 {
-        fprintf ( fMakefile, "all:" );
+	fprintf ( fMakefile, "all:" );
 	for ( size_t i = 0; i < ProjectNode.modules.size (); i++ )
 	{
 		Module& module = *ProjectNode.modules[i];
@@ -227,5 +227,5 @@
 string
 FixupTargetFilename ( const string& targetFilename )
 {
-	return string("$(ROS_INTERMEDIATE)") + targetFilename;
+	return string("$(ROS_INTERMEDIATE)") + NormalizeFilename ( targetFilename );
 }

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp	2005-01-20 22:19:01 UTC (rev 13168)
@@ -136,6 +136,16 @@
 	                          ".a" );
 }
 
+bool
+MingwModuleHandler::IsGeneratedFile ( const File& file ) const
+{
+	string extension = GetExtension ( file.name );
+	if ( extension == ".spec" || extension == "SPEC" )
+		return true;
+	else
+		return false;
+}
+	
 string
 MingwModuleHandler::GetImportLibraryDependencies ( const Module& module ) const
 {
@@ -191,13 +201,17 @@
 }
 
 string
-MingwModuleHandler::GetSourceFilenames ( const Module& module ) const
+MingwModuleHandler::GetSourceFilenames ( const Module& module,
+	                                     bool includeGeneratedFiles ) const
 {
 	size_t i;
 
 	string sourceFilenames ( "" );
 	for ( i = 0; i < module.files.size (); i++ )
-		sourceFilenames += " " + GetActualSourceFilename ( module.files[i]->name );
+	{
+		if ( includeGeneratedFiles || !IsGeneratedFile ( *module.files[i] ) )
+			sourceFilenames += " " + GetActualSourceFilename ( module.files[i]->name );
+	}
 	vector<If*> ifs = module.ifs;
 	for ( i = 0; i < ifs.size(); i++ )
 	{
@@ -206,12 +220,29 @@
 		for ( j = 0; j < rIf.ifs.size(); j++ )
 			ifs.push_back ( rIf.ifs[j] );
 		for ( j = 0; j < rIf.files.size(); j++ )
-			sourceFilenames += " " + GetActualSourceFilename ( rIf.files[j]->name );
+		{
+			if ( includeGeneratedFiles || !IsGeneratedFile ( *rIf.files[j] ) )
+				sourceFilenames += " " + GetActualSourceFilename ( rIf.files[j]->name );
+		}
 	}
 	return sourceFilenames;
 }
 
 string
+MingwModuleHandler::GetSourceFilenames ( const Module& module ) const
+{
+	return GetSourceFilenames ( module,
+	                            true );
+}
+
+string
+MingwModuleHandler::GetSourceFilenamesWithoutGeneratedFiles ( const Module& module ) const
+{
+	return GetSourceFilenames ( module,
+	                            false );
+}
+
+string
 MingwModuleHandler::GetObjectFilename ( const string& sourceFilename ) const
 {
 	string newExtension;
@@ -1009,7 +1040,7 @@
 			parameters += invokeFile.switches;
 			parameters += " ";
 		}
-		parameters += invokeFile.name;
+		parameters += invokeFile.name ;
 	}
 
 	return parameters;
@@ -1033,20 +1064,20 @@
 
 		string invokeTarget = module.GetInvocationTarget ( i );
 		fprintf ( fMakefile,
-		          "%s: %s\n\n",
-		          invoke.GetTargets ().c_str (),
+		          ".PHONY: %s\n\n",
 		          invokeTarget.c_str () );
 		fprintf ( fMakefile,
+		          "%s: %s\n\n",
+		          invokeTarget.c_str (),
+		          invoke.GetTargets ().c_str () );
+		fprintf ( fMakefile,
 		          "%s: %s\n",
-		          invokeTarget.c_str (),
+		          invoke.GetTargets ().c_str (),
 		          FixupTargetFilename ( invoke.invokeModule->GetPath () ).c_str () );
 		fprintf ( fMakefile,
 		          "\t%s %s\n\n",
 		          FixupTargetFilename ( invoke.invokeModule->GetPath () ).c_str (),
 		          GetInvocationParameters ( invoke ).c_str () );
-		fprintf ( fMakefile,
-		          ".PNONY: %s\n\n",
-		          invokeTarget.c_str () );
 	}
 }
 
@@ -1061,7 +1092,7 @@
 MingwModuleHandler::GeneratePreconditionDependencies ( const Module& module ) const
 {
 	string preconditionDependenciesName = GetPreconditionDependenciesName ( module );
-	string sourceFilenames = GetSourceFilenames ( module );
+	string sourceFilenames = GetSourceFilenamesWithoutGeneratedFiles ( module );
 	string dependencies = GetModuleDependencies ( module );
 	string s = GetInvocationDependencies ( module );
 	if ( s.length () > 0 )
@@ -1330,10 +1361,10 @@
 	}
 	else
 	{
+		fprintf ( fMakefile, ".PHONY: %s\n\n",
+		          target.c_str ());
 		fprintf ( fMakefile, "%s:\n",
 		          target.c_str ());
-		fprintf ( fMakefile, ".PHONY: %s\n\n",
-		          target.c_str ());
 	}
 }
 
@@ -1385,10 +1416,10 @@
 	}
 	else
 	{
+		fprintf ( fMakefile, ".PHONY: %s\n\n",
+		          target.c_str ());
 		fprintf ( fMakefile, "%s:\n",
 		          target.c_str () );
-		fprintf ( fMakefile, ".PHONY: %s\n\n",
-		          target.c_str ());
 	}
 }
 
@@ -1447,10 +1478,10 @@
 	}
 	else
 	{
+		fprintf ( fMakefile, ".PHONY: %s\n\n",
+		          target.c_str ());
 		fprintf ( fMakefile, "%s:\n\n",
 		          target.c_str ());
-		fprintf ( fMakefile, ".PHONY: %s\n\n",
-		          target.c_str ());
 	}
 }
 
@@ -1465,12 +1496,34 @@
 void
 MingwWin32DLLModuleHandler::Process ( const Module& module )
 {
+	GenerateExtractWineDLLResourcesTarget ( module );
 	GeneratePreconditionDependencies ( module );
 	GenerateWin32DLLModuleTarget ( module );
 	GenerateInvocations ( module );
 }
 
 void
+MingwWin32DLLModuleHandler::GenerateExtractWineDLLResourcesTarget ( const Module& module )
+{
+	fprintf ( fMakefile, ".PHONY: %s_extractresources\n\n",
+	          module.name.c_str () );
+	fprintf ( fMakefile, "%s_extractresources: bin2res\n",
+	          module.name.c_str () );
+	for ( size_t i = 0; i < module.files.size (); i++ )
+	{
+		File& file = *module.files[i];
+		string extension = GetExtension ( file.name );
+		if ( extension == ".rc" || extension == ".RC" )
+		{
+			string resource = FixupTargetFilename ( file.name );
+			fprintf ( fMakefile, "\t@echo ${bin2res} -f -x %s\n",
+			          resource.c_str () );
+		}
+	}
+	fprintf ( fMakefile, "\n");
+}
+
+void
 MingwWin32DLLModuleHandler::GenerateWin32DLLModuleTarget ( const Module& module )
 {
 	static string ros_junk ( "$(ROS_TEMPORARY)" );
@@ -1497,10 +1550,10 @@
 	}
 	else
 	{
+		fprintf ( fMakefile, ".PHONY: %s\n\n",
+		          target.c_str () );
 		fprintf ( fMakefile, "%s:\n\n",
-		          target.c_str ());
-		fprintf ( fMakefile, ".PHONY: %s\n\n",
-		          target.c_str ());
+		          target.c_str () );
 	}
 }
 
@@ -1548,9 +1601,9 @@
 	}
 	else
 	{
+		fprintf ( fMakefile, ".PHONY: %s\n\n",
+		          target.c_str ());
 		fprintf ( fMakefile, "%s:\n\n",
 		          target.c_str ());
-		fprintf ( fMakefile, ".PHONY: %s\n\n",
-		          target.c_str ());
 	}
 }

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.h
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.h	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.h	2005-01-20 22:19:01 UTC (rev 13168)
@@ -19,7 +19,7 @@
         void GenerateDirectoryTargets () const;
 
 protected:
-        const std::string &PassThruCacheDirectory ( const std::string &f ) const;
+	const std::string &PassThruCacheDirectory ( const std::string &f ) const;
 	std::string GetWorkingDirectory () const;
         std::string GetDirectory (const std::string& filename ) const;
 	std::string GetExtension ( const std::string& filename ) const;
@@ -28,10 +28,14 @@
 	                               const std::string& newExtension ) const;
 	std::string GetActualSourceFilename ( const std::string& filename ) const;
 	std::string GetModuleArchiveFilename ( const Module& module ) const;
+	bool IsGeneratedFile ( const File& file ) const;
 	std::string GetImportLibraryDependencies ( const Module& module ) const;
 	std::string GetModuleDependencies ( const Module& module ) const;
 	std::string GetAllDependencies ( const Module& module ) const;
+	std::string GetSourceFilenames ( const Module& module,
+	                                 bool includeGeneratedFiles ) const;
 	std::string GetSourceFilenames ( const Module& module ) const;
+	std::string GetSourceFilenamesWithoutGeneratedFiles ( const Module& module ) const;
 
 	std::string GetObjectFilename ( const std::string& sourceFilename ) const;
 	std::string GetObjectFilenames ( const Module& module ) const;
@@ -54,7 +58,7 @@
 	std::string GetDefinitionDependencies ( const Module& module ) const;
 	std::string GetLinkingDependencies ( const Module& module ) const;
 	static FILE* fMakefile;
-        static std::set<std::string> directory_set;
+	static std::set<std::string> directory_set;
 private:
 	std::string ConcatenatePaths ( const std::string& path1,
 	                               const std::string& path2 ) const;
@@ -202,6 +206,7 @@
 	MingwWin32DLLModuleHandler ();
 	virtual void Process ( const Module& module );
 private:
+	void GenerateExtractWineDLLResourcesTarget ( const Module& module );
 	void GenerateWin32DLLModuleTarget ( const Module& module );
 };
 

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/makefile
--- branches/xmlbuildsystem/reactos/tools/rbuild/makefile	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/makefile	2005-01-20 22:19:01 UTC (rev 13168)
@@ -30,6 +30,7 @@
 
 TESTS = \
 	tests/definetest.o \
+	tests/functiontest.o \
 	tests/iftest.o \
 	tests/includetest.o \
 	tests/invoketest.o \

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp	2005-01-20 22:19:01 UTC (rev 13168)
@@ -21,6 +21,15 @@
 	return s2;
 }
 
+string
+NormalizeFilename ( const string& filename )
+{
+	Path path;
+	string normalizedPath = path.Fixup ( filename, true );
+	string relativeNormalizedPath = path.RelativeFromWorkingDirectory ( normalizedPath );
+	return FixSeparator ( relativeNormalizedPath );
+}
+
 Module::Module ( const Project& project,
                  const XMLElement& moduleNode,
                  const string& modulePath )
@@ -449,7 +458,7 @@
 		InvokeFile& file = *output[i];
 		if ( targets.length () > 0 )
 			targets += " ";
-		targets += file.name;
+		targets += NormalizeFilename ( file.name );
 	}
 	return targets;
 }

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h
--- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h	2005-01-20 22:19:01 UTC (rev 13168)
@@ -315,4 +315,7 @@
 extern std::string
 FixSeparator ( const std::string& s );
 
+extern std::string
+NormalizeFilename ( const std::string& filename );
+
 #endif /* __RBUILD_H */

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/test.h
--- branches/xmlbuildsystem/reactos/tools/rbuild/test.h	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/test.h	2005-01-20 22:19:01 UTC (rev 13168)
@@ -2,6 +2,7 @@
 #define __TEST_H
 
 #include "rbuild.h"
+#include "backend/mingw/mingw.h"
 
 class BaseTest
 {
@@ -95,4 +96,10 @@
 	void Run();
 };
 
+class FunctionTest : public BaseTest
+{
+public:
+	void Run();
+};
+
 #endif /* __TEST_H */

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/tests/alltests.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/tests/alltests.cpp	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/tests/alltests.cpp	2005-01-20 22:19:01 UTC (rev 13168)
@@ -176,6 +176,7 @@
 		tests.push_back(new InvokeTest());
 		tests.push_back(new LinkerFlagTest());
 		tests.push_back(new IfTest());
+		tests.push_back(new FunctionTest());
 	}
 };
 

Added: branches/xmlbuildsystem/reactos/tools/rbuild/tests/functiontest.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/tests/functiontest.cpp	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/tests/functiontest.cpp	2005-01-20 22:19:01 UTC (rev 13168)
@@ -0,0 +1,9 @@
+#include "test.h"
+
+using std::string;
+
+void FunctionTest::Run ()
+{
+	string fixedupFilename = FixupTargetFilename ( "." SSEP "dir1" SSEP "dir2" SSEP ".." SSEP "filename.txt" );
+	ARE_EQUAL ( "$(ROS_INTERMEDIATE)dir1" SSEP "filename.txt", fixedupFilename );
+}

Modified: branches/xmlbuildsystem/reactos/tools/tools.xml
--- branches/xmlbuildsystem/reactos/tools/tools.xml	2005-01-20 21:03:35 UTC (rev 13167)
+++ branches/xmlbuildsystem/reactos/tools/tools.xml	2005-01-20 22:19:01 UTC (rev 13168)
@@ -1,3 +1,6 @@
+<directory name="bin2res">
+	<xi:include href="bin2res/bin2res.xml" />
+</directory>
 <module name="buildno" type="buildtool">
 	<include base="buildno">.</include>
 	<file>buildno.c</file>