simplified <if> handling ( and fixed several bugs, too )
cleaned up devcpp backend to compile with these changes
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/automaticdependency.cpp
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.cpp
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/module.cpp
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/project.cpp
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/automaticdependency.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/automaticdependency.cpp
2005-03-09 22:20:41 UTC (rev 13900)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/automaticdependency.cpp
2005-03-09 22:29:18 UTC (rev 13901)
@@ -281,8 +281,9 @@
void
AutomaticDependency::ProcessModule ( Module& module )
{
- for ( size_t i = 0; i < module.files.size (); i++ )
- ProcessFile ( module, *module.files[i] );
+ const vector<File*>& files = module.non_if_data.files;
+ for ( size_t i = 0; i < files.size (); i++ )
+ ProcessFile ( module, *files[i] );
}
void
@@ -330,37 +331,30 @@
bool includeNext,
string& resolvedFilename )
{
- size_t i;
- for ( i = 0; i < module.includes.size (); i++ )
+ size_t i, j;
+ const vector<Include*>* pincludes;
+ for ( i = 0; i < 2; i++ )
{
- Include* include = module.includes[i];
- if ( LocateIncludedFile ( include->directory,
- includedFilename,
- resolvedFilename ) )
+ if ( !i )
+ pincludes = &module.non_if_data.includes;
+ else
+ pincludes =
&module.project.non_if_data.includes;
+ const vector<Include*>& includes = *pincludes;
+ for ( j = 0; j < includes.size (); j++ )
{
- if ( includeNext && stricmp (
resolvedFilename.c_str (),
-
sourceFile->filename.c_str () ) == 0 )
- continue;
- return true;
+ Include& include = *includes[j];
+ if ( LocateIncludedFile ( include.directory,
+
includedFilename,
+
resolvedFilename ) )
+ {
+ if ( includeNext && stricmp (
resolvedFilename.c_str (),
+
sourceFile->filename.c_str () ) == 0 )
+ continue;
+ return true;
+ }
}
}
- /* FIXME: Ifs */
-
- for ( i = 0; i < module.project.includes.size (); i++ )
- {
- Include* include = module.project.includes[i];
- if ( LocateIncludedFile ( include->directory,
- includedFilename,
- resolvedFilename ) )
- {
- if ( includeNext && stricmp (
resolvedFilename.c_str (),
-
sourceFile->filename.c_str () ) == 0 )
- continue;
- return true;
- }
- }
-
resolvedFilename = "";
return false;
}
@@ -398,10 +392,11 @@
struct utimbuf timebuf;
for ( size_t mi = 0; mi < project.modules.size (); mi++ )
{
- Module& module = *project.modules[mi];
- for ( size_t fi = 0; fi < module.files.size (); fi++ )
+ 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 = *module.files[fi];
+ File& file = *files[fi];
string normalizedFilename = NormalizeFilename (
file.name );
SourceFile* sourceFile = RetrieveFromCache (
normalizedFilename );
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.cpp
---
branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.cpp
2005-03-09 22:20:41 UTC (rev 13900)
+++
branches/xmlbuildsystem/reactos/tools/rbuild/backend/devcpp/devcpp.cpp
2005-03-09 22:29:18 UTC (rev 13901)
@@ -16,6 +16,10 @@
* 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>
@@ -122,9 +126,9 @@
{
Module &module = *ProjectNode.modules[i];
- for(size_t k = 0; k < module.files.size(); k++)
+ for(size_t k = 0; k < module.non_if_data.files.size();
k++)
{
- File &file = *module.files[k];
+ File &file = *module.non_if_data.files[k];
ProcessFile(file.name);
}
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
2005-03-09 22:20:41 UTC (rev 13900)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
2005-03-09 22:29:18 UTC (rev 13901)
@@ -67,8 +67,7 @@
void
MingwBackend::GenerateProjectCFlagsMacro ( const char*
assignmentOperation,
- const vector<Include*>&
includes,
- const vector<Define*>&
defines ) const
+ IfableData& data ) const
{
size_t i;
@@ -76,17 +75,17 @@
fMakefile,
"PROJECT_CFLAGS %s",
assignmentOperation );
- for ( i = 0; i < includes.size(); i++ )
+ for ( i = 0; i < data.includes.size(); i++ )
{
fprintf (
fMakefile,
" -I%s",
- includes[i]->directory.c_str() );
+ data.includes[i]->directory.c_str() );
}
- for ( i = 0; i < defines.size(); i++ )
+ for ( i = 0; i < data.defines.size(); i++ )
{
- Define& d = *defines[i];
+ Define& d = *data.defines[i];
fprintf (
fMakefile,
" -D%s",
@@ -103,32 +102,30 @@
void
MingwBackend::GenerateGlobalCFlagsAndProperties (
const char* assignmentOperation,
- const vector<Property*>& properties,
- const vector<Include*>& includes,
- const vector<Define*>& defines,
- const vector<If*>& ifs ) const
+ IfableData& data ) const
{
size_t i;
- for ( i = 0; i < properties.size(); i++ )
+ for ( i = 0; i < data.properties.size(); i++ )
{
- Property& prop = *properties[i];
+ Property& prop = *data.properties[i];
fprintf ( fMakefile, "%s := %s\n",
prop.name.c_str(),
prop.value.c_str() );
}
- if ( includes.size() || defines.size() )
+ if ( data.includes.size() || data.defines.size() )
{
GenerateProjectCFlagsMacro ( assignmentOperation,
- includes,
- defines );
+ data );
}
- for ( i = 0; i < ifs.size(); i++ )
+ for ( i = 0; i < data.ifs.size(); i++ )
{
- If& rIf = *ifs[i];
- if ( rIf.defines.size() || rIf.includes.size() ||
rIf.ifs.size() )
+ If& rIf = *data.ifs[i];
+ if ( rIf.data.defines.size()
+ || rIf.data.includes.size()
+ || rIf.data.ifs.size() )
{
fprintf (
fMakefile,
@@ -137,10 +134,7 @@
rIf.value.c_str() );
GenerateGlobalCFlagsAndProperties (
"+=",
- rIf.properties,
- rIf.includes,
- rIf.defines,
- rIf.ifs );
+ rIf.data );
fprintf (
fMakefile,
"endif\n\n" );
@@ -175,10 +169,7 @@
fprintf ( fMakefile, "\n" );
GenerateGlobalCFlagsAndProperties (
"=",
- ProjectNode.properties,
- ProjectNode.includes,
- ProjectNode.defines,
- ProjectNode.ifs );
+ ProjectNode.non_if_data );
fprintf ( fMakefile, "PROJECT_RCFLAGS = $(PROJECT_CFLAGS)\n" );
fprintf ( fMakefile, "PROJECT_LFLAGS = %s\n",
GenerateProjectLFLAGS ().c_str () );
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h
2005-03-09 22:20:41 UTC (rev 13900)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h
2005-03-09 22:29:18 UTC (rev 13901)
@@ -16,13 +16,9 @@
void CloseMakefile () const;
void GenerateHeader () const;
void GenerateProjectCFlagsMacro ( const char*
assignmentOperation,
- const std::vector<Include*>&
includes,
- const std::vector<Define*>&
defines ) const;
+ IfableData& data ) const;
void GenerateGlobalCFlagsAndProperties ( const char* op,
- const
std::vector<Property*>& properties,
- const
std::vector<Include*>& includes,
- const
std::vector<Define*>& defines,
- const std::vector<If*>&
ifs ) const;
+ IfableData& data )
const;
std::string GenerateProjectLFLAGS () const;
void GenerateDirectoryTargets () const;
void GenerateGlobalVariables () const;
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp
---
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp 2005-03-09 22:20:41 UTC (rev 13900)
+++
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp 2005-03-09 22:29:18 UTC (rev 13901)
@@ -179,22 +179,29 @@
size_t i;
string sourceFilenames ( "" );
- for ( i = 0; i < module.files.size (); i++ )
+ const vector<File*>& files = module.non_if_data.files;
+ for ( i = 0; i < files.size (); i++ )
{
- if ( includeGeneratedFiles || !IsGeneratedFile (
*module.files[i] ) )
- sourceFilenames += " " + GetActualSourceFilename
( module.files[i]->name );
+ if ( includeGeneratedFiles || !IsGeneratedFile (
*files[i] ) )
+ sourceFilenames += " " + GetActualSourceFilename
( files[i]->name );
}
- vector<If*> ifs = module.ifs;
- for ( i = 0; i < ifs.size (); i++ )
+ // intentionally make a copy so that we can append more work in
+ // the middle of processing without having to go recursive
+ vector<If*> v = module.non_if_data.ifs;
+ for ( i = 0; i < v.size (); i++ )
{
size_t j;
- If& rIf = *ifs[i];
- for ( j = 0; j < rIf.ifs.size (); j++ )
- ifs.push_back ( rIf.ifs[j] );
- for ( j = 0; j < rIf.files.size (); j++ )
+ If& rIf = *v[i];
+ // check for sub-ifs to add to list
+ const vector<If*>& ifs = rIf.data.ifs;
+ for ( j = 0; j < ifs.size (); j++ )
+ v.push_back ( ifs[j] );
+ const vector<File*>& files = rIf.data.files;
+ for ( j = 0; j < files.size (); j++ )
{
- if ( includeGeneratedFiles || !IsGeneratedFile (
*rIf.files[j] ) )
- sourceFilenames += " " +
GetActualSourceFilename ( rIf.files[j]->name );
+ File& file = *files[j];
+ if ( includeGeneratedFiles || !IsGeneratedFile (
file ) )
+ sourceFilenames += " " +
GetActualSourceFilename ( file.name );
}
}
return sourceFilenames;
@@ -250,15 +257,16 @@
string
MingwModuleHandler::GetObjectFilenames ( const Module& module ) const
{
- if ( module.files.size () == 0 )
+ const vector<File*>& files = module.non_if_data.files;
+ if ( files.size () == 0 )
return "";
string objectFilenames ( "" );
- for ( size_t i = 0; i < module.files.size (); i++ )
+ for ( size_t i = 0; i < files.size (); i++ )
{
if ( objectFilenames.size () > 0 )
objectFilenames += " ";
- objectFilenames += PassThruCacheDirectory (
MingwModuleHandler::GetObjectFilename ( module.files[i]->name ) );
+ objectFilenames += PassThruCacheDirectory (
MingwModuleHandler::GetObjectFilename ( files[i]->name ) );
}
return objectFilenames;
}
@@ -342,8 +350,8 @@
string
MingwModuleHandler::GenerateGccDefineParameters ( const Module& module
) const
{
- string parameters = GenerateGccDefineParametersFromVector (
module.project.defines );
- string s = GenerateGccDefineParametersFromVector (
module.defines );
+ string parameters = GenerateGccDefineParametersFromVector (
module.project.non_if_data.defines );
+ string s = GenerateGccDefineParametersFromVector (
module.non_if_data.defines );
if ( s.length () > 0 )
{
parameters += " ";
@@ -381,8 +389,8 @@
string
MingwModuleHandler::GenerateGccIncludeParameters ( const Module& module
) const
{
- string parameters = GenerateGccIncludeParametersFromVector (
module.includes );
- string s = GenerateGccIncludeParametersFromVector (
module.project.includes );
+ string parameters = GenerateGccIncludeParametersFromVector (
module.non_if_data.includes );
+ string s = GenerateGccIncludeParametersFromVector (
module.project.non_if_data.includes );
if ( s.length () > 0 )
{
parameters += " ";
@@ -444,11 +452,11 @@
}
void
-MingwModuleHandler::GenerateMacro ( const char* assignmentOperation,
- const string& macro,
- const vector<Include*>& includes,
- const vector<Define*>& defines,
- const vector<CompilerFlag*>*
compilerFlags ) const
+MingwModuleHandler::GenerateMacro (
+ const char* assignmentOperation,
+ const string& macro,
+ const IfableData& data,
+ const vector<CompilerFlag*>* compilerFlags ) const
{
size_t i;
@@ -470,16 +478,16 @@
}
}
- for ( i = 0; i < includes.size(); i++ )
+ for ( i = 0; i < data.includes.size(); i++ )
{
fprintf (
fMakefile,
" -I%s",
- includes[i]->directory.c_str() );
+ data.includes[i]->directory.c_str() );
}
- for ( i = 0; i < defines.size(); i++ )
+ for ( i = 0; i < data.defines.size(); i++ )
{
- Define& d = *defines[i];
+ Define& d = *data.defines[i];
fprintf (
fMakefile,
" -D%s",
@@ -496,13 +504,9 @@
void
MingwModuleHandler::GenerateMacros (
const char* assignmentOperation,
- const vector<File*>& files,
- const vector<Include*>& includes,
- const vector<Define*>& defines,
- const vector<Library*>& libraries,
+ const IfableData& data,
const vector<CompilerFlag*>* compilerFlags,
const vector<LinkerFlag*>* linkerFlags,
- const vector<If*>& ifs,
const string& cflags_macro,
const string& nasmflags_macro,
const string& windresflags_macro,
@@ -513,17 +517,15 @@
{
size_t i;
- if ( includes.size () > 0 || defines.size () > 0 )
+ if ( data.includes.size () > 0 || data.defines.size () > 0 )
{
GenerateMacro ( assignmentOperation,
cflags_macro,
- includes,
- defines,
+ data,
compilerFlags );
GenerateMacro ( assignmentOperation,
windresflags_macro,
- includes,
- defines,
+ data,
compilerFlags );
}
@@ -541,9 +543,9 @@
}
}
- if ( libraries.size () > 0 )
+ if ( data.libraries.size () > 0 )
{
- string deps =
GenerateImportLibraryDependenciesFromVector ( libraries );
+ string deps =
GenerateImportLibraryDependenciesFromVector ( data.libraries );
if ( deps.size () > 0 )
{
fprintf (
@@ -555,16 +557,19 @@
}
}
+ const vector<File*>& files = data.files;
if ( files.size () > 0 )
{
for ( i = 0; i < files.size (); i++ )
{
- if ( files[i]->first )
+ File& file = *files[i];
+ if ( file.first )
{
fprintf ( fMakefile,
"%s := %s $(%s)\n",
objs_macro.c_str(),
- PassThruCacheDirectory (
MingwModuleHandler::GetObjectFilename ( files[i]->name ) ).c_str (),
+ PassThruCacheDirectory (
+
MingwModuleHandler::GetObjectFilename ( file.name ) ).c_str (),
objs_macro.c_str() );
}
}
@@ -575,26 +580,29 @@
assignmentOperation );
for ( i = 0; i < files.size(); i++ )
{
- if ( !files[i]->first )
+ File& file = *files[i];
+ if ( !file.first )
{
fprintf (
fMakefile,
"%s%s",
( i%10 == 9 ? "\\\n\t" : " " ),
- PassThruCacheDirectory (
MingwModuleHandler::GetObjectFilename ( files[i]->name ) ).c_str () );
+ PassThruCacheDirectory (
+
MingwModuleHandler::GetObjectFilename ( file.name ) ).c_str () );
}
}
fprintf ( fMakefile, "\n" );
}
+ const vector<If*>& ifs = data.ifs;
for ( i = 0; i < ifs.size(); i++ )
{
If& rIf = *ifs[i];
- if ( rIf.defines.size()
- || rIf.includes.size()
- || rIf.libraries.size()
- || rIf.files.size()
- || rIf.ifs.size() )
+ if ( rIf.data.defines.size()
+ || rIf.data.includes.size()
+ || rIf.data.libraries.size()
+ || rIf.data.files.size()
+ || rIf.data.ifs.size() )
{
fprintf (
fMakefile,
@@ -603,13 +611,9 @@
rIf.value.c_str() );
GenerateMacros (
"+=",
- rIf.files,
- rIf.includes,
- rIf.defines,
- rIf.libraries,
+ rIf.data,
NULL,
NULL,
- rIf.ifs,
cflags_macro,
nasmflags_macro,
windresflags_macro,
@@ -637,13 +641,9 @@
{
GenerateMacros (
"=",
- module.files,
- module.includes,
- module.defines,
- module.libraries,
+ module.non_if_data,
&module.compilerFlags,
&module.linkerFlags,
- module.ifs,
cflags_macro,
nasmflags_macro,
windresflags_macro,
@@ -655,9 +655,10 @@
if ( module.importLibrary )
{
string s;
- for ( size_t i = 0; i < module.files.size (); i++ )
+ const vector<File*>& files = module.non_if_data.files;
+ for ( size_t i = 0; i < files.size (); i++ )
{
- File& file = *module.files[i];
+ File& file = *files[i];
string extension = GetExtension ( file.name );
if ( extension == ".spec" || extension ==
".SPEC" )
{
@@ -991,8 +992,7 @@
void
MingwModuleHandler::GenerateObjectFileTargets (
const Module& module,
- const vector<File*>& files,
- const vector<If*>& ifs,
+ const IfableData& data,
const string& cc,
const string& cppc,
const string& cflagsMacro,
@@ -1002,6 +1002,7 @@
{
size_t i;
+ const vector<File*>& files = data.files;
for ( i = 0; i < files.size (); i++ )
{
string sourceFilename = files[i]->name;
@@ -1017,11 +1018,11 @@
"\n" );
}
+ const vector<If*>& ifs = data.ifs;
for ( i = 0; i < ifs.size(); i++ )
{
GenerateObjectFileTargets ( module,
- ifs[i]->files,
- ifs[i]->ifs,
+ ifs[i]->data,
cc,
cppc,
cflagsMacro,
@@ -1042,8 +1043,7 @@
string_list& clean_files ) const
{
GenerateObjectFileTargets ( module,
- module.files,
- module.ifs,
+ module.non_if_data,
cc,
cppc,
cflagsMacro,
@@ -1054,17 +1054,19 @@
}
void
-MingwModuleHandler::GetCleanTargets ( string_list& out,
- const vector<File*>& files,
- const vector<If*>& ifs ) const
+MingwModuleHandler::GetCleanTargets (
+ string_list& out,
+ const IfableData& data ) const
{
size_t i;
+ const vector<File*>& files = data.files;
for ( i = 0; i < files.size(); i++ )
out.push_back ( PassThruCacheDirectory (
MingwModuleHandler::GetObjectFilename ( files[i]->name ) ) );
+ const vector<If*>& ifs = data.ifs;
for ( i = 0; i < ifs.size(); i++ )
- GetCleanTargets ( out, ifs[i]->files, ifs[i]->ifs );
+ GetCleanTargets ( out, ifs[i]->data );
}
string
@@ -1405,9 +1407,10 @@
string dkNkmLibNoFixup = "dk/nkm/lib";
dependencies += FixupTargetFilename ( dkNkmLibNoFixup );
PassThruCacheDirectory ( dkNkmLibNoFixup + SSEP );
- for ( size_t i = 0; i < module.files.size (); i++ )
+ const vector<File*>& files = module.non_if_data.files;
+ for ( size_t i = 0; i < files.size (); i++ )
{
- File& file = *module.files[i];
+ File& file = *files[i];
string extension = GetExtension ( file.name );
if ( extension == ".spec" || extension == ".SPEC" )
{
@@ -1419,27 +1422,14 @@
return dependencies;
}
-/*string
-MingwModuleHandler::GetLinkingDependencies ( const Module& module )
const
-{
- string dependencies = GetImportLibraryDependencies ( module );
- string s = GetDefinitionDependencies ( module );
- if ( s.length () > 0 )
- {
- dependencies += " ";
- dependencies += s;
- }
- return dependencies;
-}*/
-
bool
MingwModuleHandler::IsCPlusPlusModule ( const Module& module ) const
{
- if ( module.HasFileWithExtensions ( ".cc", ".CC" ) )
+ if ( module.HasFileWithExtension ( module.non_if_data, ".cc" ) )
return true;
- if ( module.HasFileWithExtensions ( ".cxx", ".CXX" ) )
+ if ( module.HasFileWithExtension ( module.non_if_data, ".cxx" )
)
return true;
- if ( module.HasFileWithExtensions ( ".cpp", ".CPP" ) )
+ if ( module.HasFileWithExtension ( module.non_if_data, ".cpp" )
)
return true;
return false;
}
@@ -1636,7 +1626,9 @@
}
void
-MingwKernelModeDLLModuleHandler::GenerateKernelModeDLLModuleTarget (
const Module& module, string_list& clean_files )
+MingwKernelModeDLLModuleHandler::GenerateKernelModeDLLModuleTarget (
+ const Module& module,
+ string_list& clean_files )
{
static string ros_junk ( "$(ROS_TEMPORARY)" );
string target ( FixupTargetFilename ( module.GetPath () ) );
@@ -1647,7 +1639,7 @@
GenerateImportLibraryTargetIfNeeded ( module, clean_files );
- if ( module.files.size () > 0 )
+ if ( module.non_if_data.files.size () > 0 )
{
GenerateMacrosAndTargetsTarget ( module, clean_files );
@@ -1706,7 +1698,7 @@
GenerateImportLibraryTargetIfNeeded ( module, clean_files );
- if ( module.files.size () > 0 )
+ if ( module.non_if_data.files.size () > 0 )
{
string cflags ( "-D__NTDRIVER__" );
GenerateMacrosAndTargetsTarget ( module,
@@ -1766,7 +1758,7 @@
GenerateImportLibraryTargetIfNeeded ( module, clean_files );
- if ( module.files.size () > 0 )
+ if ( module.non_if_data.files.size () > 0 )
{
GenerateMacrosAndTargetsTarget ( module, clean_files );
@@ -1822,7 +1814,7 @@
GenerateImportLibraryTargetIfNeeded ( module, clean_files );
- if ( module.files.size () > 0 )
+ if ( module.non_if_data.files.size () > 0 )
{
string cflags ( "-D__NTAPP__" );
GenerateMacrosAndTargetsTarget ( module,
@@ -1878,9 +1870,10 @@
module.name.c_str () );
fprintf ( fMakefile, "%s_extractresources: bin2res\n",
module.name.c_str () );
- for ( size_t i = 0; i < module.files.size (); i++ )
+ const vector<File*>& files = module.non_if_data.files;
+ for ( size_t i = 0; i < files.size (); i++ )
{
- File& file = *module.files[i];
+ File& file = *files[i];
string extension = GetExtension ( file.name );
if ( extension == ".rc" || extension == ".RC" )
{
@@ -1905,7 +1898,7 @@
GenerateImportLibraryTargetIfNeeded ( module, clean_files );
- if ( module.files.size () > 0 )
+ if ( module.non_if_data.files.size () > 0 )
{
GenerateMacrosAndTargetsTarget ( module, clean_files );
@@ -1967,7 +1960,7 @@
GenerateImportLibraryTargetIfNeeded ( module, clean_files );
- if ( module.files.size () > 0 )
+ if ( module.non_if_data.files.size () > 0 )
{
GenerateMacrosAndTargetsTarget ( module, clean_files );
@@ -2029,7 +2022,7 @@
GenerateImportLibraryTargetIfNeeded ( module, clean_files );
- if ( module.files.size () > 0 )
+ if ( module.non_if_data.files.size () > 0 )
{
GenerateMacrosAndTargetsTarget ( module, clean_files );
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h
---
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h 2005-03-09 22:20:41 UTC (rev 13900)
+++
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h 2005-03-09 22:29:18 UTC (rev 13901)
@@ -86,17 +86,12 @@
std::string GenerateLinkerParameters ( const Module& module )
const;
void GenerateMacro ( const char* assignmentOperation,
const std::string& macro,
- const std::vector<Include*>& includes,
- const std::vector<Define*>& defines,
+ const IfableData& data,
const std::vector<CompilerFlag*>*
compilerFlags ) const;
void GenerateMacros ( const char* op,
- const std::vector<File*>& files,
- const std::vector<Include*>& includes,
- const std::vector<Define*>& defines,
- const std::vector<Library*>& libraries,
+ const IfableData& data,
const std::vector<CompilerFlag*>*
compilerFlags,
const std::vector<LinkerFlag*>*
linkerFlags,
- const std::vector<If*>& ifs,
const std::string& cflags_macro,
const std::string& nasmflags_macro,
const std::string& windresflags_macro,
@@ -141,8 +136,7 @@
const std::string& windresflagsMacro,
string_list& clean_files ) const;
void GenerateObjectFileTargets ( const Module& module,
- const std::vector<File*>&
files,
- const std::vector<If*>& ifs,
+ const IfableData& data,
const std::string& cc,
const std::string& cppc,
const std::string& cflagsMacro,
@@ -157,8 +151,7 @@
const std::string&
windresflagsMacro,
string_list& clean_files )
const;
void GetCleanTargets ( string_list& out,
- const std::vector<File*>& files,
- const std::vector<If*>& ifs ) const;
+ const IfableData& data ) const;
std::string GenerateArchiveTarget ( const Module& module,
const std::string& ar,
const std::string&
objs_macro ) const;
_____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
2005-03-09 22:20:41 UTC (rev 13900)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
2005-03-09 22:29:18 UTC (rev 13901)
@@ -50,6 +50,40 @@
return FixSeparator ( relativeNormalizedPath );
}
+IfableData::~IfableData()
+{
+ size_t i;
+ for ( i = 0; i < files.size(); i++ )
+ delete files[i];
+ for ( i = 0; i < includes.size(); i++ )
+ delete includes[i];
+ for ( i = 0; i < defines.size(); i++ )
+ delete defines[i];
+ for ( i = 0; i < libraries.size(); i++ )
+ delete libraries[i];
+ for ( i = 0; i < properties.size(); i++ )
+ delete properties[i];
+ for ( i = 0; i < ifs.size(); i++ )
+ delete ifs[i];
+}
+
+void IfableData::ProcessXML ()
+{
+ size_t i;
+ for ( i = 0; i < files.size (); i++ )
+ files[i]->ProcessXML ();
+ for ( i = 0; i < includes.size (); i++ )
+ includes[i]->ProcessXML ();
+ for ( i = 0; i < defines.size (); i++ )
+ defines[i]->ProcessXML ();
+ for ( i = 0; i < libraries.size (); i++ )
+ libraries[i]->ProcessXML ();
+ for ( i = 0; i < properties.size(); i++ )
+ properties[i]->ProcessXML ();
+ for ( i = 0; i < ifs.size (); i++ )
+ ifs[i]->ProcessXML ();
+}
+
Module::Module ( const Project& project,
const XMLElement& moduleNode,
const string& modulePath )
@@ -99,20 +133,10 @@
Module::~Module ()
{
size_t i;
- for ( i = 0; i < files.size(); i++ )
- delete files[i];
- for ( i = 0; i < libraries.size(); i++ )
- delete libraries[i];
- for ( i = 0; i < includes.size(); i++ )
- delete includes[i];
- for ( i = 0; i < defines.size(); i++ )
- delete defines[i];
for ( i = 0; i < invocations.size(); i++ )
delete invocations[i];
for ( i = 0; i < dependencies.size(); i++ )
delete dependencies[i];
- for ( i = 0; i < ifs.size(); i++ )
- delete ifs[i];
for ( i = 0; i < compilerFlags.size(); i++ )
delete compilerFlags[i];
for ( i = 0; i < linkerFlags.size(); i++ )
@@ -125,24 +149,15 @@
size_t i;
for ( i = 0; i < node.subElements.size(); i++ )
ProcessXMLSubElement ( *node.subElements[i], path );
- for ( i = 0; i < files.size (); i++ )
- files[i]->ProcessXML ();
- for ( i = 0; i < libraries.size(); i++ )
- libraries[i]->ProcessXML ();
- for ( i = 0; i < includes.size(); i++ )
- includes[i]->ProcessXML ();
- for ( i = 0; i < defines.size(); i++ )
- defines[i]->ProcessXML ();
for ( i = 0; i < invocations.size(); i++ )
invocations[i]->ProcessXML ();
for ( i = 0; i < dependencies.size(); i++ )
dependencies[i]->ProcessXML ();
- for ( i = 0; i < ifs.size(); i++ )
- ifs[i]->ProcessXML();
for ( i = 0; i < compilerFlags.size(); i++ )
compilerFlags[i]->ProcessXML();
for ( i = 0; i < linkerFlags.size(); i++ )
linkerFlags[i]->ProcessXML();
+ non_if_data.ProcessXML();
}
void
@@ -167,18 +182,18 @@
}
File* pFile = new File ( FixSeparator ( path + CSEP +
e.value ), first );
if ( pIf )
- pIf->files.push_back ( pFile );
+ pIf->data.files.push_back ( pFile );
else
- files.push_back ( pFile );
+ non_if_data.files.push_back ( pFile );
subs_invalid = true;
}
else if ( e.name == "library" && e.value.size () )
{
- /*if ( pIf )
- throw InvalidBuildFileException (
- e.location,
- "<library> is not a valid sub-element of
<if>" );*/
- libraries.push_back ( new Library ( e, *this, e.value )
);
+ Library* pLibrary = new Library ( e, *this, e.value );
+ if ( pIf )
+ pIf->data.libraries.push_back ( pLibrary );
+ else
+ non_if_data.libraries.push_back ( pLibrary );
subs_invalid = true;
}
else if ( e.name == "directory" )
@@ -191,18 +206,18 @@
{
Include* include = new Include ( project, this, e );
if ( pIf )
- pIf->includes.push_back ( include );
+ pIf->data.includes.push_back ( include );
else
- includes.push_back ( include );
+ non_if_data.includes.push_back ( include );
subs_invalid = true;
}
else if ( e.name == "define" )
{
Define* pDefine = new Define ( project, this, e );
if ( pIf )
- pIf->defines.push_back ( pDefine );
+ pIf->data.defines.push_back ( pDefine );
else
- defines.push_back ( pDefine );
+ non_if_data.defines.push_back ( pDefine );
subs_invalid = true;
}
else if ( e.name == "invoke" )
@@ -241,9 +256,9 @@
If* pOldIf = pIf;
pIf = new If ( e, project, this );
if ( pOldIf )
- pOldIf->ifs.push_back ( pIf );
+ pOldIf->data.ifs.push_back ( pIf );
else
- ifs.push_back ( pIf );
+ non_if_data.ifs.push_back ( pIf );
subs_invalid = false;
}
else if ( e.name == "compilerflag" )
@@ -483,16 +498,23 @@
}
bool
-Module::HasFileWithExtensions ( const std::string& extension1,
- const std::string& extension2 )
const
+Module::HasFileWithExtension (
+ const IfableData& data,
+ const std::string& extension ) const
{
- for ( size_t i = 0; i < files.size (); i++ )
+ size_t i;
+ for ( i = 0; i < data.files.size (); i++ )
{
- File& file = *files[i];
- string extension = GetExtension ( file.name );
- if ( extension == extension1 || extension == extension2
)
+ File& file = *data.files[i];
+ string file_ext = GetExtension ( file.name );
+ if ( !stricmp ( file_ext.c_str (), extension.c_str () )
)
return true;
}
+ for ( i = 0; i < data.ifs.size (); i++ )
+ {
+ if ( HasFileWithExtension ( data.ifs[i]->data, extension
) )
+ return true;
+ }
return false;
}
@@ -756,15 +778,6 @@
If::~If ()
{
- size_t i;
- for ( i = 0; i < files.size(); i++ )
- delete files[i];
- for ( i = 0; i < includes.size(); i++ )
- delete includes[i];
- for ( i = 0; i < defines.size(); i++ )
- delete defines[i];
- for ( i = 0; i < ifs.size(); i++ )
- delete ifs[i];
}
void
_____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/project.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/project.cpp
2005-03-09 22:20:41 UTC (rev 13900)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/project.cpp
2005-03-09 22:29:18 UTC (rev 13901)
@@ -20,16 +20,8 @@
size_t i;
for ( i = 0; i < modules.size (); i++ )
delete modules[i];
- for ( i = 0; i < includes.size (); i++ )
- delete includes[i];
- for ( i = 0; i < defines.size (); i++ )
- delete defines[i];
for ( i = 0; i < linkerFlags.size (); i++ )
delete linkerFlags[i];
- for ( i = 0; i < properties.size (); i++ )
- delete properties[i];
- for ( i = 0; i < ifs.size (); i++ )
- delete ifs[i];
for ( i = 0; i < cdfiles.size (); i++ )
delete cdfiles[i];
delete head;
@@ -38,9 +30,9 @@
const Property*
Project::LookupProperty ( const string& name ) const
{
- for ( size_t i = 0; i < properties.size (); i++ )
+ for ( size_t i = 0; i < non_if_data.properties.size (); i++ )
{
- const Property* property = properties[i];
+ const Property* property = non_if_data.properties[i];
if ( property->name == name )
return property;
}
@@ -222,18 +214,11 @@
ProcessXMLSubElement ( *node->subElements[i], path );
for ( i = 0; i < modules.size (); i++ )
modules[i]->ProcessXML ();
- for ( i = 0; i < includes.size (); i++ )
- includes[i]->ProcessXML ();
- for ( i = 0; i < defines.size (); i++ )
- defines[i]->ProcessXML ();
for ( i = 0; i < linkerFlags.size (); i++ )
linkerFlags[i]->ProcessXML ();
- for ( i = 0; i < properties.size(); i++ )
- properties[i]->ProcessXML ();
- for ( i = 0; i < ifs.size (); i++ )
- ifs[i]->ProcessXML ();
[truncated at 1000 lines; 139 more skipped]