Give .gch files an unique path based on module name: allows multiple modules to (safely!) share a single precompiled header.

Enjoy rebuilding the whole tree <3

This commit dedicated to hpoussin
See issue #3263 for more details.

svn path=/trunk/; revision=36760
This commit is contained in:
KJK::Hyperion 2008-10-15 13:46:23 +00:00
parent b86c8c5ee2
commit 7b75f95f4b

View file

@ -1018,7 +1018,7 @@ MingwModuleHandler::GetPrecompiledHeaderFilename () const
if ( !module.pch || !use_pch ) if ( !module.pch || !use_pch )
return NULL; return NULL;
return new FileLocation ( IntermediateDirectory, return new FileLocation ( IntermediateDirectory,
module.pch->file->relative_path, module.pch->file->relative_path + "/.gch_" + module.name,
module.pch->file->name + ".gch" ); module.pch->file->name + ".gch" );
} }
@ -2081,14 +2081,14 @@ MingwModuleHandler::GetDefaultDependencies (
if ( ModuleHandlerInformations[module.type].DefaultHost == HostTrue ) if ( ModuleHandlerInformations[module.type].DefaultHost == HostTrue )
return; return;
if (module.name != "psdk" && if (module.name != "psdk" &&
module.name != "dxsdk") module.name != "dxsdk")
{ {
dependencies.push_back ( "$(PSDK_TARGET) $(psdk_HEADERS)" ); dependencies.push_back ( "$(PSDK_TARGET) $(psdk_HEADERS)" );
dependencies.push_back ( "$(DXSDK_TARGET) $(dxsdk_HEADERS)" ); dependencies.push_back ( "$(DXSDK_TARGET) $(dxsdk_HEADERS)" );
} }
if (module.name != "errcodes" && if (module.name != "errcodes" &&
module.name != "bugcodes" && module.name != "bugcodes" &&
module.name != "ntstatus") module.name != "ntstatus")
{ {
@ -3139,9 +3139,9 @@ MingwIsoModuleHandler::GenerateIsoModuleTarget ()
vSourceFiles.push_back ( reactosDff ); vSourceFiles.push_back ( reactosDff );
/* /*
We use only the name and not full FileLocation(ouput) because Iso/LiveIso are an exception to the general rule. We use only the name and not full FileLocation(ouput) because Iso/LiveIso are an exception to the general rule.
Iso/LiveIso outputs are generated in code base root Iso/LiveIso outputs are generated in code base root
*/ */
string IsoName = module.output->name; string IsoName = module.output->name;
@ -3320,9 +3320,9 @@ MingwLiveIsoModuleHandler::GenerateLiveIsoModuleTarget ()
const FileLocation *isoboot = bootModule->output; const FileLocation *isoboot = bootModule->output;
/* /*
We use only the name and not full FileLocation(ouput) because Iso/LiveIso are an exception to the general rule. We use only the name and not full FileLocation(ouput) because Iso/LiveIso are an exception to the general rule.
Iso/LiveIso outputs are generated in code base root Iso/LiveIso outputs are generated in code base root
*/ */
IsoName = module.output->name; IsoName = module.output->name;
@ -3435,7 +3435,7 @@ MingwCabinetModuleHandler::Process ()
string targetMacro ( GetTargetMacro (module) ); string targetMacro ( GetTargetMacro (module) );
GenerateRules (); GenerateRules ();
const FileLocation *target_file = GetTargetFilename ( module, NULL ); const FileLocation *target_file = GetTargetFilename ( module, NULL );
fprintf ( fMakefile, "%s: $(CABMAN_TARGET) | %s\n", fprintf ( fMakefile, "%s: $(CABMAN_TARGET) | %s\n",
targetMacro.c_str (), targetMacro.c_str (),