mirror of
https://github.com/reactos/reactos.git
synced 2025-07-30 08:41:41 +00:00
generate clean rules
svn path=/branches/xmlbuildsystem/; revision=13019
This commit is contained in:
parent
90d59a4287
commit
b657e0b0bf
3 changed files with 51 additions and 12 deletions
|
@ -147,6 +147,9 @@ MingwBackend::GenerateGlobalVariables ()
|
|||
ProjectNode.defines,
|
||||
ProjectNode.ifs );
|
||||
fprintf ( fMakefile, "\n" );
|
||||
|
||||
fprintf ( fMakefile, ".PHONY: clean\n\n" );
|
||||
//fprintf ( fMakefile, "clean:\n\t-@${rm} $(PROJECT_CLEAN)\n\n" );
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -139,15 +139,20 @@ MingwModuleHandler::GetAllDependencies ( const Module& module ) const
|
|||
string
|
||||
MingwModuleHandler::GetSourceFilenames ( const Module& module ) const
|
||||
{
|
||||
if ( module.files.size () == 0 )
|
||||
return "";
|
||||
|
||||
size_t i;
|
||||
|
||||
string sourceFilenames ( "" );
|
||||
for ( size_t i = 0; i < module.files.size (); i++ )
|
||||
for ( i = 0; i < module.files.size (); i++ )
|
||||
sourceFilenames += " " + module.files[i]->name;
|
||||
vector<If*> ifs = module.ifs;
|
||||
for ( i = 0; i < ifs.size(); i++ )
|
||||
{
|
||||
if ( sourceFilenames.size () > 0 )
|
||||
sourceFilenames += " ";
|
||||
sourceFilenames += module.files[i]->name;
|
||||
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++ )
|
||||
sourceFilenames += " " + rIf.files[j]->name;
|
||||
}
|
||||
return sourceFilenames;
|
||||
}
|
||||
|
@ -484,12 +489,25 @@ MingwModuleHandler::GenerateObjectFileTargets ( const Module& module,
|
|||
}
|
||||
|
||||
void
|
||||
MingwModuleHandler::GetCleanTargets ( vector<string>& out,
|
||||
const vector<File*>& files,
|
||||
const vector<If*>& ifs ) const
|
||||
{
|
||||
size_t i;
|
||||
|
||||
for ( i = 0; i < files.size(); i++ )
|
||||
out.push_back ( GetObjectFilename(files[i]->name) );
|
||||
|
||||
for ( i = 0; i < ifs.size(); i++ )
|
||||
GetCleanTargets ( out, ifs[i]->files, ifs[i]->ifs );
|
||||
}
|
||||
|
||||
string
|
||||
MingwModuleHandler::GenerateArchiveTarget ( const Module& module,
|
||||
const string& ar,
|
||||
const string& objs_macro ) const
|
||||
{
|
||||
string archiveFilename = GetModuleArchiveFilename ( module );
|
||||
string sourceFilenames = GetSourceFilenames ( module );
|
||||
|
||||
fprintf ( fMakefile,
|
||||
"%s: %s\n",
|
||||
|
@ -501,6 +519,8 @@ MingwModuleHandler::GenerateArchiveTarget ( const Module& module,
|
|||
ar.c_str (),
|
||||
archiveFilename.c_str (),
|
||||
objs_macro.c_str ());
|
||||
|
||||
return archiveFilename;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -527,8 +547,21 @@ MingwModuleHandler::GenerateMacrosAndTargets (
|
|||
nasmflagsMacro = ssprintf("$(%s)",nasmflagsMacro.c_str());
|
||||
objectsMacro = ssprintf("$(%s)",objectsMacro.c_str());
|
||||
|
||||
GenerateArchiveTarget ( module, ar, objectsMacro );
|
||||
string ar_target = GenerateArchiveTarget ( module, ar, objectsMacro );
|
||||
GenerateObjectFileTargets ( module, cc, cflagsMacro, nasmflagsMacro );
|
||||
|
||||
vector<string> clean_files;
|
||||
clean_files.push_back ( ar_target );
|
||||
GetCleanTargets ( clean_files, module.files, module.ifs );
|
||||
|
||||
fprintf ( fMakefile, "clean::\n\t-@$(rm)" );
|
||||
for ( size_t i = 0; i < clean_files.size(); i++ )
|
||||
{
|
||||
if ( 9==(i%10) )
|
||||
fprintf ( fMakefile, " 2>NUL\n\t-@$(rm)" );
|
||||
fprintf ( fMakefile, " %s", clean_files[i].c_str() );
|
||||
}
|
||||
fprintf ( fMakefile, " 2>NUL\n\n" );
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -88,9 +88,12 @@ private:
|
|||
const std::string& cc,
|
||||
const std::string& cflagsMacro,
|
||||
const std::string& nasmflagsMacro ) const;
|
||||
void GenerateArchiveTarget ( const Module& module,
|
||||
const std::string& ar,
|
||||
const std::string& objs_macro ) const;
|
||||
void GetCleanTargets ( std::vector<std::string>& out,
|
||||
const std::vector<File*>& files,
|
||||
const std::vector<If*>& ifs ) const;
|
||||
std::string GenerateArchiveTarget ( const Module& module,
|
||||
const std::string& ar,
|
||||
const std::string& objs_macro ) const;
|
||||
void GenerateMacrosAndTargets ( const Module& module,
|
||||
const std::string& cc,
|
||||
const std::string& ar ) const;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue