Clean-as-you-go mode to remove generated files as soon as possible to minimize disk space requirements Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.h Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.h Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h 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.cpp _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.cpp 2005-04-21 09:52:11 UTC (rev 14728) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.cpp 2005-04-21 12:54:15 UTC (rev 14729) @@ -34,7 +34,8 @@
/*static*/ Backend* Backend::Factory::Create ( const string& name, Project& project, - bool verbose ) + bool verbose, + bool cleanAsYouGo ) { string sname ( name ); strlwr ( &sname[0] ); @@ -48,11 +49,14 @@ throw UnknownBackendException ( sname ); return NULL; } - return (*f) ( project, verbose ); + return (*f) ( project, verbose, cleanAsYouGo ); }
-Backend::Backend ( Project& project, bool verbose ) +Backend::Backend ( Project& project, + bool verbose, + bool cleanAsYouGo ) : ProjectNode ( project ), - verbose ( verbose ) + verbose ( verbose ), + cleanAsYouGo ( cleanAsYouGo ) { } _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.h --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.h 2005-04-21 09:52:11 UTC (rev 14728) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.h 2005-04-21 12:54:15 UTC (rev 14729) @@ -21,23 +21,27 @@
Factory ( const std::string& name_ ); virtual ~Factory();
- virtual Backend* operator() ( Project&, bool verbose ) = 0; + virtual Backend* operator() ( Project&, + bool verbose, + bool cleanAsYouGo ) = 0;
public: static Backend* Create ( const std::string& name, Project& project, - bool verbose ); + bool verbose, + bool cleanAsYouGo ); };
protected: - Backend ( Project& project, bool verbose ); + Backend ( Project& project, + bool verbose, + bool cleanAsYouGo );
public: virtual void Process () = 0; - -protected: Project& ProjectNode; bool verbose; + bool cleanAsYouGo; };
#endif /* __BACKEND_H */ _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.cpp 2005-04-21 09:52:11 UTC (rev 14728) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.cpp 2005-04-21 12:54:15 UTC (rev 14729) @@ -34,15 +34,19 @@
public:
DevCppFactory() : Factory("devcpp") {} - Backend *operator() (Project &project, bool verbose) + Backend *operator() (Project &project, + bool verbose, + bool cleanAsYouGo) { - return new DevCppBackend(project, verbose); + return new DevCppBackend(project, verbose, cleanAsYouGo); } } factory;
-DevCppBackend::DevCppBackend(Project &project, bool verbose) : Backend(project, verbose) +DevCppBackend::DevCppBackend(Project &project, + bool verbose, + bool cleanAsYouGo) : Backend(project, verbose, cleanAsYouGo) { m_unitCount = 0; } @@ -107,7 +111,10 @@ cout << "Creating Makefile: " << ProjectNode.makefile << endl; - Backend *backend = Backend::Factory::Create("mingw", ProjectNode, verbose ); + Backend *backend = Backend::Factory::Create("mingw", + ProjectNode, + verbose, + cleanAsYouGo ); backend->Process(); delete backend;
_____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.h --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.h 2005-04-21 09:52:11 UTC (rev 14728) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.h 2005-04-21 12:54:15 UTC (rev 14729) @@ -19,7 +19,9 @@
{ public:
- DevCppBackend(Project &project, bool verbose); + DevCppBackend(Project &project, + bool verbose, + bool cleanAsYouGo); virtual ~DevCppBackend() {}
virtual void Process(); _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp 2005-04-21 09:52:11 UTC (rev 14728) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp 2005-04-21 12:54:15 UTC (rev 14729) @@ -202,15 +202,21 @@
{ public: MingwFactory() : Factory ( "mingw" ) {} - Backend* operator() ( Project& project, bool verbose ) + Backend* operator() ( Project& project, + bool verbose, + bool cleanAsYouGo ) { - return new MingwBackend ( project, verbose ); + return new MingwBackend ( project, + verbose, + cleanAsYouGo ); } } factory;
-MingwBackend::MingwBackend ( Project& project, bool verbose ) - : Backend ( project, verbose ), +MingwBackend::MingwBackend ( Project& project, + bool verbose, + bool cleanAsYouGo ) + : Backend ( project, verbose, cleanAsYouGo ), intermediateDirectory ( new Directory ("$(INTERMEDIATE)" ) ), outputDirectory ( new Directory ( "$(OUTPUT)" ) ), installDirectory ( new Directory ( "$(INSTALL)" ) ) _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h 2005-04-21 09:52:11 UTC (rev 14728) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h 2005-04-21 12:54:15 UTC (rev 14729) @@ -54,7 +54,9 @@
class MingwBackend : public Backend { public: - MingwBackend ( Project& project, bool verbose ); + MingwBackend ( Project& project, + bool verbose, + bool cleanAsYouGo ); virtual ~MingwBackend (); virtual void Process (); std::string AddDirectoryTarget ( const std::string& directory, _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp 2005-04-21 09:52:11 UTC (rev 14728) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp 2005-04-21 12:54:15 UTC (rev 14729) @@ -8,7 +8,7 @@
using std::string; using std::vector;
-#define CLEAN_FILE(f) clean_files.push_back ( f ); /*if ( module.name == "crt" ) printf ( "%s(%i): clean: %s\n", __FILE__, __LINE__, f.c_str() )*/ +#define CLEAN_FILE(f) clean_files.push_back ( f );
static string ros_temp = "$(TEMPORARY)"; MingwBackend* @@ -1149,6 +1149,17 @@ }
void +MingwModuleHandler::GenerateCleanObjectsAsYouGoCode ( const string& files ) +{ + if ( backend->cleanAsYouGo ) + { + fprintf ( fMakefile, + "\t-@${rm} %s 2>$(NUL)\n", + files.c_str () ); + } +} + +void MingwModuleHandler::GenerateLinkerCommand ( const string& dependencies, const string& linker, @@ -1216,6 +1227,8 @@ fprintf ( fMakefile, "\t-@${rm} %s 2>$(NUL)\n", temp_exp.c_str () ); + + GenerateCleanObjectsAsYouGoCode ( objectsMacro ); } else { @@ -1227,6 +1240,8 @@ objectsMacro.c_str (), libsMacro.c_str (), GetLinkerMacro ().c_str () ); + + GenerateCleanObjectsAsYouGoCode ( objectsMacro ); }
GenerateBuildMapCode (); _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h 2005-04-21 09:52:11 UTC (rev 14728) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h 2005-04-21 12:54:15 UTC (rev 14729) @@ -77,6 +77,7 @@
std::string GetLinkingDependenciesMacro () const; std::string GetLibsMacro () const; std::string GetLinkerMacro () const; + void GenerateCleanObjectsAsYouGoCode ( const std::string& files ); void GenerateLinkerCommand ( const std::string& dependencies, const std::string& linker, const std::string& linkerParameters, _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.cpp 2005-04-21 09:52:11 UTC (rev 14728) +++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.cpp 2005-04-21 12:54:15 UTC (rev 14729) @@ -19,6 +19,7 @@
static string BuildSystem; static string RootXmlFile = "ReactOS.xml"; static bool Verbose = false; +static bool CleanAsYouGo = false;
bool ParseSwitch ( int argc, char** argv, int index ) @@ -29,6 +30,9 @@ case 'v': Verbose = true; break; + case 'c': + CleanAsYouGo = true; + break; case 'r': RootXmlFile = string(&argv[index][2]); break; @@ -69,6 +73,7 @@ printf ( " rbuild [-v] [-rfile.xml] buildsystem\n\n" ); printf ( "Switches:\n" ); printf ( " -v Be verbose\n" ); + printf ( " -c Clean as you go. Delete generated files as soon as they are not needed anymore\n" ); printf ( " -rfile.xml Name of the root xml file. Default is ReactOS.xml\n" ); printf ( "\n" ); printf ( " buildsystem Target build system. Can be one of:\n" ); @@ -86,7 +91,8 @@ project.ExecuteInvocations (); Backend* backend = Backend::Factory::Create ( BuildSystem, project, - Verbose ); + Verbose, + CleanAsYouGo ); backend->Process (); delete backend;