Modified: branches/xmlbuildsystem/reactos/Makefile
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/automaticdependency.cpp
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/rbuild.cpp
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h
--- branches/xmlbuildsystem/reactos/Makefile 2005-04-03 11:38:08 UTC (rev 14470)
+++ branches/xmlbuildsystem/reactos/Makefile 2005-04-03 11:57:34 UTC (rev 14471)
@@ -28,6 +28,9 @@
# without source code) or no (to not build any map files). The variable
# defaults to no.
#
+# ROS_RBUILDFLAGS
+# Pass parameters to rbuild.
+#
.PHONY: all
.PHONY: clean
@@ -196,7 +199,7 @@
makefile.auto: $(RBUILD_TARGET) $(PREAUTO) $(XMLBUILDFILES)
$(ECHO_RBUILD)
- $(Q)$(RBUILD_TARGET) mingw
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) mingw
$(BUGCODES_H) $(BUGCODES_RC): $(WMC_TARGET) $(NTOSKRNL_MC)
--- branches/xmlbuildsystem/reactos/tools/rbuild/automaticdependency.cpp 2005-04-03 11:38:08 UTC (rev 14470)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/automaticdependency.cpp 2005-04-03 11:57:34 UTC (rev 14471)
@@ -65,9 +65,6 @@
throw AccessDeniedException ( filename );
}
lastWriteTime = statbuf.st_mtime;
-/* printf ( "lastWriteTime of %s is %s\n",
- filename.c_str (),
- ctime ( &lastWriteTime ) ); */
unsigned long len = (unsigned long) filelen ( f );
if ( len > MAX_BYTES_TO_READ )
@@ -219,7 +216,6 @@
while ( p < end )
{
string includedFilename ( "" );
- //printf ( "Parsing '%s'\n", filename.c_str () );
bool includeNext;
while ( ReadInclude ( includedFilename,
@@ -387,13 +383,12 @@
}
void
-AutomaticDependency::CheckAutomaticDependencies ()
+AutomaticDependency::CheckAutomaticDependencies ( bool verbose )
{
struct utimbuf timebuf;
for ( size_t mi = 0; mi < project.modules.size (); mi++ )
{
const vector<File*>& files = project.modules[mi]->non_if_data.files;
- //Module& module = *project.modules[mi];
for ( size_t fi = 0; fi < files.size (); fi++ )
{
File& file = *files[fi];
@@ -406,20 +401,16 @@
assert ( sourceFile->youngestLastWriteTime != 0 );
if ( sourceFile->youngestLastWriteTime > sourceFile->lastWriteTime )
{
- printf ( "Marking %s for rebuild due to younger file %s\n",
- sourceFile->filename.c_str (),
- sourceFile->youngestFile->filename.c_str () );
+ if ( verbose )
+ {
+ printf ( "Marking %s for rebuild due to younger file %s\n",
+ sourceFile->filename.c_str (),
+ sourceFile->youngestFile->filename.c_str () );
+ }
timebuf.actime = sourceFile->youngestLastWriteTime;
timebuf.modtime = sourceFile->youngestLastWriteTime;
utime ( sourceFile->filename.c_str (),
&timebuf );
-
- /*printf ( "lastWriteTime of %s is %s\n",
- sourceFile->filename.c_str (),
- ctime ( &sourceFile->lastWriteTime ) );
- printf ( "youngestLastWriteTime is %s with %s\n",
- sourceFile->youngestFile->filename.c_str (),
- ctime ( &sourceFile->youngestLastWriteTime ) );*/
}
}
}
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.cpp 2005-04-03 11:38:08 UTC (rev 14470)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.cpp 2005-04-03 11:57:34 UTC (rev 14471)
@@ -22,7 +22,7 @@
(*factories)[name] = this;
}
-Backend::Factory::~Factory()
+Backend::Factory::~Factory ()
{
if ( !--ref )
{
@@ -33,22 +33,26 @@
/*static*/ Backend*
Backend::Factory::Create ( const string& name,
- Project& project )
+ Project& project,
+ bool verbose )
{
string sname ( name );
strlwr ( &sname[0] );
- if ( !factories || !factories->size() )
- throw Exception ( "internal tool error: no registered factories" );
+ if ( !factories || !factories->size () )
+ throw InvalidOperationException ( __FILE__,
+ __LINE__,
+ "No registered factories" );
Backend::Factory* f = (*factories)[sname];
if ( !f )
{
throw UnknownBackendException ( sname );
return NULL;
}
- return (*f) ( project );
+ return (*f) ( project, verbose );
}
-Backend::Backend ( Project& project )
- : ProjectNode ( project )
+Backend::Backend ( Project& project, bool verbose )
+ : ProjectNode ( project ),
+ verbose ( verbose )
{
}
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.h 2005-04-03 11:38:08 UTC (rev 14470)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/backend.h 2005-04-03 11:57:34 UTC (rev 14471)
@@ -5,7 +5,8 @@
class Backend;
-typedef Backend* BackendFactory ( Project& project );
+typedef Backend* BackendFactory ( Project& project,
+ bool verbose );
class Backend
{
@@ -20,23 +21,23 @@
Factory ( const std::string& name_ );
virtual ~Factory();
- virtual Backend* operator() ( Project& ) = 0;
+ virtual Backend* operator() ( Project&, bool verbose ) = 0;
public:
static Backend* Create ( const std::string& name,
- Project& project );
-
- private:
+ Project& project,
+ bool verbose );
};
protected:
- Backend ( Project& project );
+ Backend ( Project& project, bool verbose );
public:
virtual void Process () = 0;
protected:
Project& ProjectNode;
+ bool verbose;
};
#endif /* __BACKEND_H */
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.cpp 2005-04-03 11:38:08 UTC (rev 14470)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.cpp 2005-04-03 11:57:34 UTC (rev 14471)
@@ -1,244 +1,244 @@
-/*
- * Dev-C++ Backend
- * Copyright (C) 2005 Trevor McCort
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
+/*
+ * Dev-C++ Backend
+ * Copyright (C) 2005 Trevor McCort
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
#ifdef _MSC_VER
#pragma warning ( disable : 4786 )
#endif//_MSC_VER
-
-#include <iostream>
-#include <fstream>
-#include <string>
-
-#include "devcpp.h"
-
-using namespace std;
-
-static class DevCppFactory : public Backend::Factory
-{
- public:
-
- DevCppFactory() : Factory("devcpp") {}
- Backend *operator() (Project &project)
- {
- return new DevCppBackend(project);
- }
-
-} factory;
-
-
-DevCppBackend::DevCppBackend(Project &project) : Backend(project)
-{
- m_unitCount = 0;
-}
-
-void DevCppBackend::Process()
-{
- string filename = ProjectNode.name + ".dev";
-
- cout << "Creating Dev-C++ project: " << filename << endl;
-
- ProcessModules();
-
- m_devFile.open(filename.c_str());
-
- if(!m_devFile.is_open())
- {
- cout << "Could not open file." << endl;
- return;
- }
-
- m_devFile << "[Project]" << endl;
-
- m_devFile << "FileName=" << filename << endl
- << "Name=" << ProjectNode.name << endl
- << "UnitCount=" << m_unitCount << endl
- << "Type=1" << endl
- << "Ver=1" << endl
- << "ObjFiles=" << endl
- << "Includes=" << endl
- << "Libs=" << endl
- << "PrivateResource=" << endl
- << "ResourceIncludes=" << endl
- << "MakeIncludes=" << endl
- << "Compiler=" << endl
- << "CppCompiler=" << endl
- << "Linker=" << endl
- << "IsCpp=1" << endl
- << "Icon=" << endl
- << "ExeOutput=" << endl
- << "ObjectOutput=" << endl
- << "OverrideOutput=0" << endl
- << "OverrideOutputName=" << endl
- << "HostApplication=" << endl
- << "CommandLine=" << endl
- << "UseCustomMakefile=1" << endl
- << "CustomMakefile=" << ProjectNode.makefile << endl
- << "IncludeVersionInto=0" << endl
- << "SupportXPThemes=0" << endl
- << "CompilerSet=0" << endl
-
- << "CompilerSettings=0000000000000000000000" << endl;
-
- OutputFolders();
-
- m_devFile << endl << endl;
-
- OutputFileUnits();
-
- m_devFile.close();
-
- // Dev-C++ needs a makefile, so use the MinGW backend to create one.
-
- cout << "Creating Makefile: " << ProjectNode.makefile << endl;
-
- Backend *backend = Backend::Factory::Create("mingw", ProjectNode);
- backend->Process();
- delete backend;
-
- cout << "Done." << endl << endl;
-
- cout << "You may want to disable Class browsing (see below) before you open this project in Dev-C++, as the "
- << "parsing required for large projects can take quite awhile."
- << endl << endl
- << "(Tools->Editor Options->Class browsing->Enable class browsing check box)"
- << endl << endl;
-}
-
-void DevCppBackend::ProcessModules()
-{
- for(size_t i = 0; i < ProjectNode.modules.size(); i++)
- {
- Module &module = *ProjectNode.modules[i];
-
- for(size_t k = 0; k < module.non_if_data.files.size(); k++)
- {
- File &file = *module.non_if_data.files[k];
-
- ProcessFile(file.name);
- }
- }
-}
-
-bool FileExists(string &filename)
-{
- ifstream file(filename.c_str());
-
- if(!file.is_open())
- return false;
-
- file.close();
- return true;
-}
-
-void DevCppBackend::ProcessFile(string &filepath)
-{
- // Remove the .\ at the start of the filenames
- filepath.erase(0, 2);
-
- if(!FileExists(filepath))
- return;
-
- // Change the \ to /
- for(size_t i = 0; i < filepath.length(); i++)
- {
- if(filepath[i] == '\\')
- filepath[i] = '/';
- }
-
- // Remove the filename from the path
- string folder = "";
-
- size_t pos = filepath.rfind(string("/"), filepath.length() - 1);
-
- if(pos != string::npos)
- {
- folder = filepath;
- folder.erase(pos, folder.length() - pos);
- }
-
- FileUnit fileUnit;
- fileUnit.filename = filepath;
- fileUnit.folder = folder;
-
- m_fileUnits.push_back(fileUnit);
-
- if(folder != "")
- AddFolders(folder);
-
- m_unitCount++;
-}
-
-bool DevCppBackend::CheckFolderAdded(string &folder)
-{
- for(size_t i = 0; i < m_folders.size(); i++)
- {
- if(m_folders[i] == folder)
- return true;
- }
-
- return false;
-}
-
-void DevCppBackend::AddFolders(string &folder)
-{
- // Check if this folder was already added. true if it was, false otherwise.
- if(CheckFolderAdded(folder))
- return;
-
- m_folders.push_back(folder);
-
- size_t pos = folder.rfind(string("/"), folder.length() - 1);
-
- if(pos == string::npos)
- return;
-
- folder.erase(pos, folder.length() - pos);
- AddFolders(folder);
-}
-
-void DevCppBackend::OutputFolders()
-{
- m_devFile << "Folders=";
-
- for(size_t i = 0; i < m_folders.size(); i++)
- {
- if(i > 0)
- m_devFile << ",";
-
- m_devFile << m_folders[i];
- }
-}
-
-void DevCppBackend::OutputFileUnits()
-{
- for(size_t i = 0; i < m_fileUnits.size(); i++)
- {
- m_devFile << "[Unit" << i + 1 << "]" << endl;
-
-
- m_devFile << "FileName=" << m_fileUnits[i].filename << endl;
- m_devFile << "CompileCpp=1" << endl;
- m_devFile << "Folder=" << m_fileUnits[i].folder << endl;
- m_devFile << "Compile=1" << endl;
- m_devFile << "Link=1" << endl;
- m_devFile << "Priority=1000" << endl;
- m_devFile << "OverrideBuildCmd=0" << endl;
- m_devFile << "BuildCmd=" << endl << endl;;
- }
-}
+
+#include <iostream>
+#include <fstream>
+#include <string>
+
+#include "devcpp.h"
+
+using namespace std;
+
+static class DevCppFactory : public Backend::Factory
+{
+ public:
+
+ DevCppFactory() : Factory("devcpp") {}
+ Backend *operator() (Project &project, bool verbose)
+ {
+ return new DevCppBackend(project, verbose);
+ }
+
+} factory;
+
+
+DevCppBackend::DevCppBackend(Project &project, bool verbose) : Backend(project, verbose)
+{
+ m_unitCount = 0;
+}
+
+void DevCppBackend::Process()
+{
+ string filename = ProjectNode.name + ".dev";
+
+ cout << "Creating Dev-C++ project: " << filename << endl;
+
+ ProcessModules();
+
+ m_devFile.open(filename.c_str());
+
+ if(!m_devFile.is_open())
+ {
+ cout << "Could not open file." << endl;
+ return;
+ }
+
+ m_devFile << "[Project]" << endl;
+
+ m_devFile << "FileName=" << filename << endl
+ << "Name=" << ProjectNode.name << endl
+ << "UnitCount=" << m_unitCount << endl
+ << "Type=1" << endl
+ << "Ver=1" << endl
+ << "ObjFiles=" << endl
+ << "Includes=" << endl
+ << "Libs=" << endl
+ << "PrivateResource=" << endl
+ << "ResourceIncludes=" << endl
+ << "MakeIncludes=" << endl
+ << "Compiler=" << endl
+ << "CppCompiler=" << endl
+ << "Linker=" << endl
+ << "IsCpp=1" << endl
+ << "Icon=" << endl
+ << "ExeOutput=" << endl
+ << "ObjectOutput=" << endl
+ << "OverrideOutput=0" << endl
+ << "OverrideOutputName=" << endl
+ << "HostApplication=" << endl
+ << "CommandLine=" << endl
+ << "UseCustomMakefile=1" << endl
+ << "CustomMakefile=" << ProjectNode.makefile << endl
+ << "IncludeVersionInto=0" << endl
+ << "SupportXPThemes=0" << endl
+ << "CompilerSet=0" << endl
+
+ << "CompilerSettings=0000000000000000000000" << endl;
+
+ OutputFolders();
+
+ m_devFile << endl << endl;
+
+ OutputFileUnits();
+
+ m_devFile.close();
+
+ // Dev-C++ needs a makefile, so use the MinGW backend to create one.
+
+ cout << "Creating Makefile: " << ProjectNode.makefile << endl;
+
+ Backend *backend = Backend::Factory::Create("mingw", ProjectNode, verbose );
+ backend->Process();
+ delete backend;
+
+ cout << "Done." << endl << endl;
+
+ cout << "You may want to disable Class browsing (see below) before you open this project in Dev-C++, as the "
+ << "parsing required for large projects can take quite awhile."
+ << endl << endl
+ << "(Tools->Editor Options->Class browsing->Enable class browsing check box)"
+ << endl << endl;
+}
+
+void DevCppBackend::ProcessModules()
+{
+ for(size_t i = 0; i < ProjectNode.modules.size(); i++)
+ {
+ Module &module = *ProjectNode.modules[i];
+
+ for(size_t k = 0; k < module.non_if_data.files.size(); k++)
+ {
+ File &file = *module.non_if_data.files[k];
+
+ ProcessFile(file.name);
+ }
+ }
+}
+
+bool FileExists(string &filename)
+{
+ ifstream file(filename.c_str());
+
+ if(!file.is_open())
+ return false;
+
+ file.close();
+ return true;
+}
+
+void DevCppBackend::ProcessFile(string &filepath)
+{
+ // Remove the .\ at the start of the filenames
+ filepath.erase(0, 2);
+
+ if(!FileExists(filepath))
+ return;
+
+ // Change the \ to /
+ for(size_t i = 0; i < filepath.length(); i++)
+ {
+ if(filepath[i] == '\\')
+ filepath[i] = '/';
+ }
+
+ // Remove the filename from the path
+ string folder = "";
+
+ size_t pos = filepath.rfind(string("/"), filepath.length() - 1);
+
+ if(pos != string::npos)
+ {
+ folder = filepath;
+ folder.erase(pos, folder.length() - pos);
+ }
+
+ FileUnit fileUnit;
+ fileUnit.filename = filepath;
+ fileUnit.folder = folder;
+
+ m_fileUnits.push_back(fileUnit);
+
+ if(folder != "")
+ AddFolders(folder);
+
+ m_unitCount++;
+}
+
+bool DevCppBackend::CheckFolderAdded(string &folder)
+{
+ for(size_t i = 0; i < m_folders.size(); i++)
+ {
+ if(m_folders[i] == folder)
+ return true;
+ }
+
+ return false;
+}
+
+void DevCppBackend::AddFolders(string &folder)
+{
+ // Check if this folder was already added. true if it was, false otherwise.
+ if(CheckFolderAdded(folder))
+ return;
+
+ m_folders.push_back(folder);
+
+ size_t pos = folder.rfind(string("/"), folder.length() - 1);
+
+ if(pos == string::npos)
+ return;
+
+ folder.erase(pos, folder.length() - pos);
+ AddFolders(folder);
+}
+
+void DevCppBackend::OutputFolders()
+{
+ m_devFile << "Folders=";
+
+ for(size_t i = 0; i < m_folders.size(); i++)
+ {
+ if(i > 0)
+ m_devFile << ",";
+
+ m_devFile << m_folders[i];
+ }
+}
+
+void DevCppBackend::OutputFileUnits()
+{
+ for(size_t i = 0; i < m_fileUnits.size(); i++)
+ {
+ m_devFile << "[Unit" << i + 1 << "]" << endl;
+
+
+ m_devFile << "FileName=" << m_fileUnits[i].filename << endl;
+ m_devFile << "CompileCpp=1" << endl;
+ m_devFile << "Folder=" << m_fileUnits[i].folder << endl;
+ m_devFile << "Compile=1" << endl;
+ m_devFile << "Link=1" << endl;
+ m_devFile << "Priority=1000" << endl;
+ m_devFile << "OverrideBuildCmd=0" << endl;
+ m_devFile << "BuildCmd=" << endl << endl;;
+ }
+}
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.h 2005-04-03 11:38:08 UTC (rev 14470)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.h 2005-04-03 11:57:34 UTC (rev 14471)
@@ -19,7 +19,7 @@
{
public:
- DevCppBackend(Project &project);
+ DevCppBackend(Project &project, bool verbose);
virtual ~DevCppBackend() {}
virtual void Process();
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp 2005-04-03 11:38:08 UTC (rev 14470)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp 2005-04-03 11:57:34 UTC (rev 14471)
@@ -27,7 +27,8 @@
directory_map subdirs;
Directory ( const string& name );
void Add ( const char* subdir );
- void GenerateTree ( const string& parent );
+ void GenerateTree ( const string& parent,
+ bool verbose );
private:
bool mkdir_p ( const char* path );
string ReplaceVariable ( string name,
@@ -139,7 +140,8 @@
}
void
-Directory::GenerateTree ( const string& parent )
+Directory::GenerateTree ( const string& parent,
+ bool verbose )
{
string path;
@@ -149,7 +151,7 @@
path = parent + SSEP + name;
ResolveVariablesInPath ( buf, path );
- if ( CreateDirectory ( buf ) )
+ if ( CreateDirectory ( buf ) && verbose )
printf ( "Created %s\n", buf );
}
else
@@ -159,7 +161,7 @@
i != subdirs.end();
++i )
{
- i->second->GenerateTree ( path );
+ i->second->GenerateTree ( path, verbose );
}
}
@@ -167,15 +169,15 @@
{
public:
MingwFactory() : Factory ( "mingw" ) {}
- Backend* operator() ( Project& project )
+ Backend* operator() ( Project& project, bool verbose )
{
- return new MingwBackend ( project );
+ return new MingwBackend ( project, verbose );
}
} factory;
-MingwBackend::MingwBackend ( Project& project )
- : Backend ( project ),
+MingwBackend::MingwBackend ( Project& project, bool verbose )
+ : Backend ( project, verbose ),
int_directories ( new Directory("$(INTERMEDIATE)") ),
out_directories ( new Directory("$(OUTPUT)") )
{
@@ -202,20 +204,12 @@
}
void
-MingwBackend::Process ()
+MingwBackend::ProcessModules ()
{
- size_t i;
+ printf ( "Processing modules..." );
- DetectPipeSupport ();
- DetectPCHSupport ();
-
- CreateMakefile ();
- GenerateHeader ();
- GenerateGlobalVariables ();
- GenerateXmlBuildFilesMacro();
-
vector<MingwModuleHandler*> v;
-
+ size_t i;
for ( i = 0; i < ProjectNode.modules.size (); i++ )
{
Module& module = *ProjectNode.modules[i];
@@ -255,6 +249,19 @@
delete v[i];
}
+ printf ( "done\n" );
+}
+
+void
+MingwBackend::Process ()
+{
+ DetectPipeSupport ();
+ DetectPCHSupport ();
+ CreateMakefile ();
+ GenerateHeader ();
+ GenerateGlobalVariables ();
+ GenerateXmlBuildFilesMacro ();
+ ProcessModules ();
GenerateDirectories ();
CheckAutomaticDependencies ();
CloseMakefile ();
@@ -488,9 +495,11 @@
void
MingwBackend::CheckAutomaticDependencies ()
{
+ printf ( "Checking automatic dependencies..." );
AutomaticDependency automaticDependency ( ProjectNode );
automaticDependency.Process ();
- automaticDependency.CheckAutomaticDependencies ();
+ automaticDependency.CheckAutomaticDependencies ( verbose );
+ printf ( "done\n" );
}
bool
@@ -505,8 +514,10 @@
void
MingwBackend::GenerateDirectories ()
{
- int_directories->GenerateTree ( "" );
- out_directories->GenerateTree ( "" );
+ printf ( "Creating directories..." );
+ int_directories->GenerateTree ( "", verbose );
+ out_directories->GenerateTree ( "", verbose );
+ printf ( "done\n" );
}
string
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h 2005-04-03 11:38:08 UTC (rev 14470)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h 2005-04-03 11:57:34 UTC (rev 14471)
@@ -15,7 +15,7 @@
class MingwBackend : public Backend
{
public:
- MingwBackend ( Project& project );
+ MingwBackend ( Project& project, bool verbose );
virtual ~MingwBackend ();
virtual void Process ();
std::string AddDirectoryTarget ( const std::string& directory, bool out );
@@ -40,6 +40,7 @@
bool IncludeDirectoryTarget ( const std::string& directory ) const;
void DetectPipeSupport ();
void DetectPCHSupport ();
+ void ProcessModules ();
FILE* fMakefile;
bool use_pch;
Directory *int_directories, *out_directories;
--- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.cpp 2005-04-03 11:38:08 UTC (rev 14470)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.cpp 2005-04-03 11:57:34 UTC (rev 14471)
@@ -16,24 +16,72 @@
using std::string;
using std::vector;
+static string BuildSystem;
+static bool Verbose = false;
+
+bool
+ParseSwitch ( int argc, char** argv, int index )
+{
+ char switchChar = argv[index][1];
+ switch ( switchChar )
+ {
+ case 'v':
+ Verbose = true;
+ break;
+ default:
+ printf ( "Unknown switch -%c",
+ switchChar );
+ return false;
+ }
+ return true;
+}
+
+bool
+ParseArguments ( int argc, char** argv )
+{
+ if ( argc < 2 )
+ return false;
+
+ for ( int i = 1; i < argc; i++ )
+ {
+ if ( argv[i][0] == '-' )
+ {
+ if ( !ParseSwitch ( argc, argv, i ) )
+ return false;
+ }
+ else
+ BuildSystem = argv[i];
+ }
+
+ return true;
+}
+
int
main ( int argc, char** argv )
{
- if ( argc != 2 )
+ if ( !ParseArguments ( argc, argv ) )
{
- printf ( "syntax: rbuild {buildtarget}\n" );
+ printf ( "Generates project files for buildsystems\n\n" );
+ printf ( " rbuild [-v] buildsystem\n\n" );
+ printf ( "Switches:\n" );
+ printf ( " -v Be verbose\n" );
+ printf ( "\n" );
+ printf ( " buildsystem Target build system. Can be one of:\n" );
+ printf ( " mingw MinGW\n" );
+ printf ( " devcpp DevC++\n" );
return 1;
}
- string buildtarget ( argv[1] );
- strlwr ( &buildtarget[0] );
try
{
string projectFilename ( "ReactOS.xml" );
+ printf ( "Reading build files..." );
Project project ( projectFilename );
+ printf ( "done\n" );
project.WriteConfigurationFile ();
project.ExecuteInvocations ();
- Backend* backend = Backend::Factory::Create ( buildtarget,
- project );
+ Backend* backend = Backend::Factory::Create ( BuildSystem,
+ project,
+ Verbose );
backend->Process ();
delete backend;
@@ -41,8 +89,8 @@
}
catch (Exception& ex)
{
- printf ( "%s: %s\n",
- typeid(ex).name(), ex.Message.c_str() );
+ printf ( "%s\n",
+ ex.Message.c_str () );
return 1;
}
}
--- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h 2005-04-03 11:38:08 UTC (rev 14470)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h 2005-04-03 11:57:34 UTC (rev 14471)
@@ -469,7 +469,7 @@
const std::string& filename,
SourceFile* parentSourceFile );
SourceFile* RetrieveFromCache ( const std::string& filename );
- void CheckAutomaticDependencies ();
+ void CheckAutomaticDependencies ( bool verbose );
void CheckAutomaticDependenciesForFile ( SourceFile* sourceFile );
private:
void ProcessModule ( Module& module );