added 'first' attribute to <file>
Modified: branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h

Modified: branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml
--- branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml	2005-01-19 01:11:43 UTC (rev 13128)
+++ branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml	2005-01-19 01:37:35 UTC (rev 13129)
@@ -26,10 +26,10 @@
 		</output>
 	</invoke>
 
-	<directory name="ke"> <!-- leave this at the top -->
+	<directory name="ke">
 		<if property="ARCH" value="i386">
 			<directory name="i386">
-				<file>multiboot.S</file> <!-- leave this at the top -->
+				<file first>multiboot.S</file>
 				<file>bios.c</file>
 				<file>brkpoint.c</file>
 				<file>bthread.S</file>

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp	2005-01-19 01:11:43 UTC (rev 13128)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp	2005-01-19 01:37:35 UTC (rev 13129)
@@ -447,6 +447,17 @@
 	
 	if ( files.size() )
 	{
+		for ( i = 0; i < files.size(); i++ )
+		{
+			if ( files[i]->first )
+			{
+				fprintf ( fMakefile,
+					"%s := %s $(%s)\n",
+					objs_macro.c_str(),
+					GetObjectFilename(files[i]->name).c_str(),
+					objs_macro.c_str() );
+			}
+		}
 		fprintf (
 			fMakefile,
 			"%s %s",
@@ -455,7 +466,9 @@
 		for ( i = 0; i < files.size(); i++ )
 		{
 			string extension = GetExtension ( files[i]->name );
-			if ( extension != ".spec" && extension != ".SPEC" )
+			if ( extension != ".spec"
+			  && extension != ".SPEC"
+			  && !files[i]->first )
 			{
 				fprintf (
 					fMakefile,

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp	2005-01-19 01:11:43 UTC (rev 13128)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp	2005-01-19 01:37:35 UTC (rev 13129)
@@ -102,7 +102,9 @@
 	string subpath ( path );
 	if ( e.name == "file" && e.value.size () > 0 )
 	{
-		File* pFile = new File ( FixSeparator ( path + CSEP + e.value ) );
+		const XMLAttribute* att = e.GetAttribute ( "first", false );
+		File* pFile = new File ( FixSeparator ( path + CSEP + e.value ),
+		                         att != NULL );
 		if ( pIf )
 			pIf->files.push_back ( pFile );
 		else
@@ -323,8 +325,8 @@
 }
 
 
-File::File ( const string& _name )
-	: name(_name)
+File::File ( const string& _name, bool _first )
+	: name(_name), first(_first)
 {
 }
 

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h
--- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h	2005-01-19 01:11:43 UTC (rev 13128)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h	2005-01-19 01:37:35 UTC (rev 13129)
@@ -168,8 +168,9 @@
 {
 public:
 	std::string name;
+	bool first;
 
-	File ( const std::string& _name );
+	File ( const std::string& _name, bool _first );
 
 	void ProcessXML();
 };