fix some dependencies
get rid of unnecessary phony targets
eliminate unnecessary makefile.auto dependencies
silence gcc when detecting pch
Modified: branches/xmlbuildsystem/reactos/Makefile
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/rbuild.h

Modified: branches/xmlbuildsystem/reactos/Makefile
--- branches/xmlbuildsystem/reactos/Makefile	2005-03-13 04:25:09 UTC (rev 13992)
+++ branches/xmlbuildsystem/reactos/Makefile	2005-03-13 05:32:52 UTC (rev 13993)
@@ -125,10 +125,10 @@
 	$(BUGCODES_H) \
 	$(BUGCODES_RC) \
 	$(ERRCODES_H) \
-	$(ERRCODES_RC)
+	$(ERRCODES_RC) \
+	$(NCI_SERVICE_FILES)
 
-makefile.auto: $(RMKDIR_TARGET) $(BUILDNO_TARGET) $(NCI_SERVICE_FILES) $(WMC_TARGET) $(WRC_TARGET) \
-               $(RSYM_TARGET) $(CDMAKE_TARGET) $(RBUILD_TARGET) $(PREAUTO) $(XMLBUILDFILES)
+makefile.auto: $(RMKDIR_TARGET) $(RBUILD_TARGET) $(PREAUTO) $(XMLBUILDFILES)
 	$(ECHO_RBUILD)
 	$(Q)tools$(SEP)rbuild$(SEP)rbuild$(EXEPOSTFIX) mingw
 

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp	2005-03-13 04:25:09 UTC (rev 13992)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp	2005-03-13 05:32:52 UTC (rev 13993)
@@ -230,21 +230,15 @@
 void
 MingwBackend::GenerateInitTarget () const
 {
+	string tools = "$(ROS_INTERMEDIATE)." SSEP "tools";
 	fprintf ( fMakefile,
-	          "init:");
-	fprintf ( fMakefile,
-	          " $(ROS_INTERMEDIATE)." SSEP "tools" );
-	fprintf ( fMakefile,
-	          " %s",
+	          "INIT = %s %s\n",
+	          tools.c_str (),
 	          GetBuildToolDependencies ().c_str () );
-	fprintf ( fMakefile,
-	          " %s",
-	          "include" SSEP "reactos" SSEP "buildno.h" );
-	fprintf ( fMakefile,
-	          "\n\t\n\n" );
 
 	fprintf ( fMakefile,
-	          "$(ROS_INTERMEDIATE)." SSEP "tools:\n" );
+	          "%s:\n",
+	          tools.c_str () );
 	fprintf ( fMakefile,
 	          "ifneq ($(ROS_INTERMEDIATE),)\n" );
 	fprintf ( fMakefile,
@@ -332,8 +326,17 @@
 void
 MingwBackend::DetectPCHSupport()
 {
+#ifdef WIN32
+	string sNUL = "NUL";
+#else
+	string sNUL = "/dev/null";
+#endif
 	string path = "tools" SSEP "rbuild" SSEP "backend" SSEP "mingw" SSEP "pch_detection.h";
-	system ( ssprintf("gcc -c %s", path.c_str()).c_str() );
+	string cmd = ssprintf(
+		"gcc -c %s 2>%s",
+		path.c_str (),
+		sNUL.c_str () );
+	system ( cmd.c_str() );
 	path += ".gch";
 
 	FILE* f = fopen ( path.c_str(), "rb" );

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp	2005-03-13 04:25:09 UTC (rev 13992)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp	2005-03-13 05:32:52 UTC (rev 13993)
@@ -65,6 +65,24 @@
 	return out;
 }
 
+string v2s ( const vector<string>& v, int wrap_at )
+{
+	if ( !v.size() )
+		return "";
+	string s;
+	int wrap_count = 0;
+	for ( size_t i = 0; i < v.size(); i++ )
+	{
+		if ( !v[i].size() )
+			continue;
+		if ( wrap_at > 0 && wrap_count++ == wrap_at )
+			s += " \\\n\t\t";
+		else if ( s.size() )
+			s += " ";
+		s += v[i];
+	}
+	return s;
+}
 
 MingwModuleHandler::MingwModuleHandler ( ModuleType moduletype )
 {
@@ -947,15 +965,20 @@
 void
 MingwModuleHandler::GenerateLinkerCommand (
 	const Module& module,
+	const string& target,
+	const string& dependencies,
 	const string& linker,
 	const string& linkerParameters,
 	const string& objectsMacro,
 	const string& libsMacro,
 	string_list& clean_files ) const
 {
+	fprintf ( fMakefile,
+		"%s: %s ${RSYM_TARGET}\n",
+		target.c_str (),
+		dependencies.c_str () );
 	fprintf ( fMakefile, "\t$(ECHO_LD)\n" );
 	string targetName ( module.GetTargetName () );
-	string target ( FixupTargetFilename ( module.GetPath () ) );
 	if ( module.importLibrary != NULL )
 	{
 		static string ros_junk ( "$(ROS_TEMPORARY)" );
@@ -1177,9 +1200,9 @@
 	const string* nasmflags,
 	string_list& clean_files ) const
 {
-	string cc = ( module.host ? "${host_gcc}" : "${gcc}" );
-	string cppc = ( module.host ? "${host_gpp}" : "${gpp}" );
-	string ar = ( module.host ? "${host_ar}" : "${ar}" );
+	string cc = ( module.host == HostTrue ? "${host_gcc}" : "${gcc}" );
+	string cppc = ( module.host == HostTrue ? "${host_gpp}" : "${gpp}" );
+	string ar = ( module.host == HostTrue ? "${host_ar}" : "${ar}" );
 
 	string cflagsMacro = ssprintf ("%s_CFLAGS", module.name.c_str ());
 	string nasmflagsMacro = ssprintf ("%s_NASMFLAGS", module.name.c_str ());
@@ -1299,8 +1322,7 @@
 string
 MingwModuleHandler::GetPreconditionDependenciesName ( const Module& module ) const
 {
-	return ssprintf ( "%s_precondition",
-	                  module.name.c_str () );
+	return module.name + "_precondition";
 }
 
 string
@@ -1312,7 +1334,7 @@
 		|| module.name == "hostzlib" )
 		return "$(ROS_INTERMEDIATE)." SSEP "tools $(ROS_INTERMEDIATE)." SSEP "lib" SSEP "zlib";
 	else
-		return "init";
+		return "$(INIT)";
 }
 
 void
@@ -1338,10 +1360,7 @@
 	}
 	
 	fprintf ( fMakefile,
-	          ".PHONY: %s\n\n",
-	          preconditionDependenciesName.c_str () );
-	fprintf ( fMakefile,
-	          "%s: %s\n\n",
+	          "%s = %s\n\n",
 	          preconditionDependenciesName.c_str (),
 	          dependencies.c_str () );
 	const char* p = sourceFilenames.c_str();
@@ -1360,7 +1379,7 @@
 				p2 = end;
 		}
 		fprintf ( fMakefile,
-		          "%.*s: %s\n",
+		          "%.*s: ${%s}\n",
 		          p2-p,
 		          p,
 		          preconditionDependenciesName.c_str ());
@@ -1523,7 +1542,7 @@
 
 	GenerateImportLibraryTargetIfNeeded ( module, clean_files );
 
-	fprintf ( fMakefile, "%s: %s %s\n",
+	fprintf ( fMakefile, "%s: %s %s ${RSYM_TARGET}\n",
 	          target.c_str (),
 	          objectsMacro.c_str (),
 	          linkDepsMacro.c_str () );
@@ -1645,15 +1664,15 @@
 	{
 		GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
 
-		fprintf ( fMakefile, "%s: %s %s\n",
-		          target.c_str (),
-		          objectsMacro.c_str (),
-		          linkDepsMacro.c_str () );
+		string dependencies =
+			objectsMacro + " " + linkDepsMacro;
 
 		string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll",
 		                                     module.entrypoint.c_str (),
 		                                     module.baseaddress.c_str () );
 		GenerateLinkerCommand ( module,
+		                        target,
+		                        dependencies,
 		                        "${gcc}",
 		                        linkerParameters,
 		                        objectsMacro,
@@ -1708,15 +1727,15 @@
 		                           NULL,
 		                           clean_files );
 
-		fprintf ( fMakefile, "%s: %s %s\n",
-		          target.c_str (),
-		          objectsMacro.c_str (),
-		          linkDepsMacro.c_str () );
+		string dependencies =
+			objectsMacro + " " + linkDepsMacro;
 
 		string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll",
 		                                     module.entrypoint.c_str (),
 		                                     module.baseaddress.c_str () );
 		GenerateLinkerCommand ( module,
+		                        target,
+		                        dependencies,
 		                        "${gcc}",
 		                        linkerParameters,
 		                        objectsMacro,
@@ -1764,15 +1783,15 @@
 	{
 		GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
 
-		fprintf ( fMakefile, "%s: %s %s\n",
-		          target.c_str (),
-		          objectsMacro.c_str (),
-		          linkDepsMacro.c_str () );
+		string dependencies =
+			objectsMacro + " " + linkDepsMacro;
 
 		string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -nostdlib -mdll",
 		                                     module.entrypoint.c_str (),
 		                                     module.baseaddress.c_str () );
 		GenerateLinkerCommand ( module,
+		                        target,
+		                        dependencies,
 		                        "${gcc}",
 		                        linkerParameters,
 		                        objectsMacro,
@@ -1824,15 +1843,15 @@
 		                           NULL,
 		                           clean_files );
 
-		fprintf ( fMakefile, "%s: %s %s\n",
-		          target.c_str (),
-		          objectsMacro.c_str (),
-		          linkDepsMacro.c_str () );
+		string dependencies =
+			objectsMacro + " " + linkDepsMacro;
 
 		string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -nostdlib",
 		                                     module.entrypoint.c_str (),
 		                                     module.baseaddress.c_str () );
 		GenerateLinkerCommand ( module,
+		                        target,
+		                        dependencies,
 		                        "${gcc}",
 		                        linkerParameters,
 		                        objectsMacro,
@@ -1904,10 +1923,8 @@
 	{
 		GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
 
-		fprintf ( fMakefile, "%s: %s %s\n",
-		          target.c_str (),
-		          objectsMacro.c_str (),
-		          linkDepsMacro.c_str () );
+		string dependencies =
+			objectsMacro + " " + linkDepsMacro;
 
 		string linker;
 		if ( module.cplusplus )
@@ -1919,6 +1936,8 @@
 		                                     module.entrypoint.c_str (),
 		                                     module.baseaddress.c_str () );
 		GenerateLinkerCommand ( module,
+		                        target,
+		                        dependencies,
 		                        linker,
 		                        linkerParameters,
 		                        objectsMacro,
@@ -1966,10 +1985,8 @@
 	{
 		GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
 
-		fprintf ( fMakefile, "%s: %s %s\n",
-		          target.c_str (),
-		          objectsMacro.c_str (),
-		          linkDepsMacro.c_str () );
+		string dependencies =
+			objectsMacro + " " + linkDepsMacro;
 
 		string linker;
 		if ( module.cplusplus )
@@ -1981,6 +1998,8 @@
 		                                     module.entrypoint.c_str (),
 		                                     module.baseaddress.c_str () );
 		GenerateLinkerCommand ( module,
+		                        target,
+		                        dependencies,
 		                        linker,
 		                        linkerParameters,
 		                        objectsMacro,
@@ -2026,12 +2045,10 @@
 
 	if ( module.non_if_data.files.size () > 0 )
 	{
-	GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
+		GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
 
-		fprintf ( fMakefile, "%s: %s %s\n",
-		          target.c_str (),
-		          objectsMacro.c_str (),
-		          linkDepsMacro.c_str () );
+		string dependencies =
+			objectsMacro + " " + linkDepsMacro;
 
 		string linker;
 		if ( module.cplusplus )
@@ -2043,6 +2060,8 @@
 		                                     module.entrypoint.c_str (),
 		                                     module.baseaddress.c_str () );
 		GenerateLinkerCommand ( module,
+		                        target,
+		                        dependencies,
 		                        linker,
 		                        linkerParameters,
 		                        objectsMacro,
@@ -2165,8 +2184,8 @@
 }
 
 void
-MingwIsoModuleHandler::OutputBootstrapfileCopyCommands ( const string bootcdDirectory,
-	                                                     const Module& module ) const
+MingwIsoModuleHandler::OutputBootstrapfileCopyCommands ( const string& bootcdDirectory,
+                                                         const Module& module ) const
 {
 	for ( size_t i = 0; i < module.project.modules.size (); i++ )
 	{
@@ -2184,8 +2203,8 @@
 }
 
 void
-MingwIsoModuleHandler::OutputCdfileCopyCommands ( const string bootcdDirectory,
-	                                              const Module& module ) const
+MingwIsoModuleHandler::OutputCdfileCopyCommands ( const string& bootcdDirectory,
+                                                  const Module& module ) const
 {
 	for ( size_t i = 0; i < module.project.cdfiles.size (); i++ )
 	{
@@ -2200,8 +2219,8 @@
 }
 
 string
-MingwIsoModuleHandler::GetBootstrapCdDirectories ( const string bootcdDirectory,
-	                                               const Module& module ) const
+MingwIsoModuleHandler::GetBootstrapCdDirectories ( const string& bootcdDirectory,
+                                                   const Module& module ) const
 {
 	string directories;
 	for ( size_t i = 0; i < module.project.modules.size (); i++ )
@@ -2219,8 +2238,8 @@
 }
 
 string
-MingwIsoModuleHandler::GetNonModuleCdDirectories ( const string bootcdDirectory,
-	                                               const Module& module ) const
+MingwIsoModuleHandler::GetNonModuleCdDirectories ( const string& bootcdDirectory,
+                                                   const Module& module ) const
 {
 	string directories;
 	for ( size_t i = 0; i < module.project.cdfiles.size (); i++ )
@@ -2235,8 +2254,8 @@
 }
 
 string
-MingwIsoModuleHandler::GetCdDirectories ( const string bootcdDirectory,
-	                                      const Module& module ) const
+MingwIsoModuleHandler::GetCdDirectories ( const string& bootcdDirectory,
+                                          const Module& module ) const
 {
 	string directories = GetBootstrapCdDirectories ( bootcdDirectory,
 	                                                 module );
@@ -2245,48 +2264,38 @@
 	return directories;
 }
 
-string
-MingwIsoModuleHandler::GetBootstrapCdFiles ( const string bootcdDirectory,
-	                                         const Module& module ) const
+void
+MingwIsoModuleHandler::GetBootstrapCdFiles (
+	vector<string>& out,
+	const Module& module ) const
 {
-	string cdfiles;
 	for ( size_t i = 0; i < module.project.modules.size (); i++ )
 	{
 		const Module& m = *module.project.modules[i];
 		if ( m.bootstrap != NULL )
-		{
-			if ( cdfiles.size () > 0 )
-				cdfiles += " ";
-			cdfiles += FixupTargetFilename ( m.GetPath () );
-		}
+			out.push_back ( FixupTargetFilename ( m.GetPath () ) );
 	}
-	return cdfiles;
 }
 
-string
-MingwIsoModuleHandler::GetNonModuleCdFiles ( const string bootcdDirectory,
-	                                         const Module& module ) const
+void
+MingwIsoModuleHandler::GetNonModuleCdFiles (
+	vector<string>& out,
+	const Module& module ) const
 {
-	string cdfiles;
 	for ( size_t i = 0; i < module.project.cdfiles.size (); i++ )
 	{
 		const CDFile& cdfile = *module.project.cdfiles[i];
-		if ( cdfiles.size () > 0 )
-			cdfiles += " ";
-		cdfiles += NormalizeFilename ( cdfile.GetPath () );
+		out.push_back ( NormalizeFilename ( cdfile.GetPath () ) );
 	}
-	return cdfiles;
 }
 
-string
-MingwIsoModuleHandler::GetCdFiles ( const string bootcdDirectory,
-	                                const Module& module ) const
+void
+MingwIsoModuleHandler::GetCdFiles (
+	vector<string>& out,
+	const Module& module ) const
 {
-	string cdfiles = GetBootstrapCdFiles ( bootcdDirectory,
-	                                       module );
-	cdfiles += " " + GetNonModuleCdFiles ( bootcdDirectory,
-	                                       module );
-	return cdfiles;
+	GetBootstrapCdFiles ( out, module );
+	GetNonModuleCdFiles ( out, module );
 }
 
 void
@@ -2301,13 +2310,14 @@
 	string reactosDff = NormalizeFilename ( "bootdata/packages/reactos.dff" );
 	string cdDirectories = bootcdReactos + " " + GetCdDirectories ( bootcdDirectory,
 	                                                                module );
-	string cdFiles = GetCdFiles ( bootcdDirectory,
-	                              module );
+	vector<string> vCdFiles;
+	GetCdFiles ( vCdFiles, module );
+	string cdFiles = v2s ( vCdFiles, 5 );
 
 	fprintf ( fMakefile, ".PHONY: %s\n\n",
-		      module.name.c_str ());
+	          module.name.c_str ());
 	fprintf ( fMakefile,
-	          "%s: all %s %s %s\n",
+	          "%s: all %s %s %s ${CABMAN_TARGET} ${CDMAKE_TARGET}\n",
 	          module.name.c_str (),
 	          isoboot.c_str (),
 	          cdDirectories.c_str (),

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.h
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.h	2005-03-13 04:25:09 UTC (rev 13992)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.h	2005-03-13 05:32:52 UTC (rev 13993)
@@ -60,6 +60,8 @@
 	std::string GetLibsMacro ( const Module& module ) const;
 	std::string GetLinkerMacro ( const Module& module ) const;
 	void GenerateLinkerCommand ( const Module& module,
+	                             const std::string& target,
+	                             const std::string& dependencies,
 	                             const std::string& linker,
 	                             const std::string& linkerParameters,
 	                             const std::string& objectsMacro,
@@ -314,21 +316,21 @@
 	virtual void Process ( const Module& module, string_list& clean_files );
 private:
 	void GenerateIsoModuleTarget ( const Module& module, string_list& clean_files );
-	std::string GetBootstrapCdDirectories ( const std::string bootcdDirectory,
+	std::string GetBootstrapCdDirectories ( const std::string& bootcdDirectory,
 	                                        const Module& module ) const;
-	std::string GetNonModuleCdDirectories ( const std::string bootcdDirectory,
+	std::string GetNonModuleCdDirectories ( const std::string& bootcdDirectory,
 	                                        const Module& module ) const;
-	std::string GetCdDirectories ( const std::string bootcdDirectory,
+	std::string GetCdDirectories ( const std::string& bootcdDirectory,
 	                               const Module& module ) const;
-	std::string GetBootstrapCdFiles ( const std::string bootcdDirectory,
-	                                  const Module& module ) const;
-	std::string GetNonModuleCdFiles ( const std::string bootcdDirectory,
-	                                  const Module& module ) const;
-	std::string GetCdFiles ( const std::string bootcdDirectory,
-	                         const Module& module ) const;
-	void OutputBootstrapfileCopyCommands ( const std::string bootcdDirectory,
+	void GetBootstrapCdFiles ( std::vector<std::string>& out,
+	                           const Module& module ) const;
+	void GetNonModuleCdFiles ( std::vector<std::string>& out,
+	                           const Module& module ) const;
+	void GetCdFiles ( std::vector<std::string>& out,
+	                  const Module& module ) const;
+	void OutputBootstrapfileCopyCommands ( const std::string& bootcdDirectory,
 	                                       const Module& module ) const;
-	void OutputCdfileCopyCommands ( const std::string bootcdDirectory,
+	void OutputCdfileCopyCommands ( const std::string& bootcdDirectory,
 	                                const Module& module ) const;
 };
 

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h
--- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h	2005-03-13 04:25:09 UTC (rev 13992)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h	2005-03-13 05:32:52 UTC (rev 13993)
@@ -133,9 +133,9 @@
 
 enum HostType
 {
+	HostFalse,
 	HostDefault,
-	HostTrue,
-	HostFalse
+	HostTrue
 };
 
 class Module