Author: hpoussin Date: Tue Nov 6 15:18:36 2007 New Revision: 30217
URL: http://svn.reactos.org/svn/reactos?rev=30217&view=rev Log: Don't hardcode multiple times the mechanisms to get object file from source file Revert r30188 and r30189
Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/... ============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp (original) +++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp Tue Nov 6 15:18:36 2007 @@ -270,33 +270,24 @@ string extension = GetExtension ( *file ); if ( extension == ".spec" || extension == ".SPEC" ) { - string basename = GetBasename ( filename ); - return new FileLocation ( - IntermediateDirectory, - file->relative_path, - basename + ".stubs.c" ); - } - else if ( extension == ".idl" || extension == ".IDL" ) - { - string basename = GetBasename ( filename ); - if ( module.type == RpcServer ) - { - return new FileLocation ( - IntermediateDirectory, - file->relative_path, - basename + "_s.c" ); - } - else if ( module.type == RpcClient ) - { - return new FileLocation ( - IntermediateDirectory, - file->relative_path, - basename + "_c.c" ); - } - else - { - return new FileLocation ( *file ); - } + const FileLocation *objectFile = GetObjectFilename ( file, module, NULL ); + FileLocation *sourceFile = new FileLocation ( + objectFile->directory, + objectFile->relative_path, + ReplaceExtension ( objectFile->name, ".c" ) ); + delete objectFile; + return sourceFile; + } + else if ( ( extension == ".idl" || extension == ".IDL" ) && + ( module.type == RpcServer || module.type == RpcClient ) ) + { + const FileLocation *objectFile = GetObjectFilename ( file, module, NULL ); + FileLocation *sourceFile = new FileLocation ( + objectFile->directory, + objectFile->relative_path, + ReplaceExtension ( objectFile->name, ".c" ) ); + delete objectFile; + return sourceFile; } else return new FileLocation ( *file ); @@ -509,13 +500,13 @@ if ( extension == ".rc" || extension == ".RC" ) newExtension = "_" + module.name + ".coff"; else if ( extension == ".spec" || extension == ".SPEC" ) - newExtension = ".stubs_" + module.name + ".o"; + newExtension = ".stubs.o"; else if ( extension == ".idl" || extension == ".IDL" ) { if ( module.type == RpcServer ) - newExtension = "_s_" + module.name + ".o"; + newExtension = "_s.o"; else if ( module.type == RpcClient ) - newExtension = "_c_" + module.name + ".o"; + newExtension = "_c.o"; else newExtension = ".h"; } @@ -1119,10 +1110,9 @@ const FileLocation* MingwModuleHandler::GetPrecompiledHeaderFilename () const { - const string& basePchFilename = module.pch->file.name + "_" + module.name + ".gch"; return new FileLocation ( IntermediateDirectory, module.pch->file.relative_path, - basePchFilename ); + ReplaceExtension ( module.pch->file.name, "_" + module.name + ".gch" ) ); }
void @@ -1132,7 +1122,8 @@ const string& cc, const string& cflagsMacro ) { - string dependencies = backend->GetFullName ( *sourceFile ); + const FileLocation *generatedSourceFileName = GetActualSourceFilename ( sourceFile ); + string dependencies = backend->GetFullName ( *generatedSourceFileName ); if ( extraDependencies != "" ) dependencies += " " + extraDependencies; if ( module.pch && use_pch ) @@ -1261,9 +1252,7 @@ basename + ".spec.def" ); CLEAN_FILE ( def_file );
- FileLocation stub_file ( IntermediateDirectory, - sourceFile->relative_path, - basename + ".stubs.c" ); + FileLocation stub_file ( *GetActualSourceFilename ( sourceFile ) ); CLEAN_FILE ( stub_file );
fprintf ( fMakefile, @@ -1472,7 +1461,7 @@ widlflagsMacro ); else if ( module.type == EmbeddedTypeLib ) GenerateWidlCommandsEmbeddedTypeLib ( compilationUnit, - widlflagsMacro ); + widlflagsMacro ); else // applies also for other module.types which include idl files GenerateWidlCommandsIdlHeader ( compilationUnit, widlflagsMacro ); @@ -1531,7 +1520,7 @@ else if ( extension == ".spec" || extension == ".SPEC" ) { GenerateWinebuildCommands ( sourceFile ); - GenerateGccCommand ( GetActualSourceFilename ( sourceFile ), + GenerateGccCommand ( sourceFile, extraDependencies, cc, cflagsMacro ); @@ -1543,7 +1532,7 @@ widlflagsMacro ); if ( (module.type == RpcServer) || (module.type == RpcClient) ) { - GenerateGccCommand ( GetActualSourceFilename ( sourceFile ), + GenerateGccCommand ( sourceFile, GetExtraDependencies ( sourceFile ), cc, cflagsMacro ); @@ -3481,12 +3470,12 @@ vSourceFiles.push_back ( srcunattend );
// bootsector - FileLocation isoboot ( OutputDirectory, - "boot" + sSep + "freeldr" + sSep + "bootsect", - module.type == IsoRegTest - ? "isobtrt_isobtrt.o" - : "isoboot_isoboot.o" ); - vSourceFiles.push_back ( isoboot ); + const Module* bootModule; + bootModule = module.project.LocateModule ( module.type == IsoRegTest + ? "isobtrt" + : "isoboot" ); + const FileLocation *isoboot = bootModule->output; + vSourceFiles.push_back ( *isoboot );
// prepare reactos.dff and reactos.inf FileLocation reactosDff ( SourceDirectory, @@ -3518,7 +3507,7 @@ fprintf ( fMakefile, "%s: all %s %s %s $(CABMAN_TARGET) $(CDMAKE_TARGET) %s\n", module.name.c_str (), - backend->GetFullName ( isoboot ).c_str (), + backend->GetFullName ( *isoboot ).c_str (), sourceFiles.c_str (), cdFiles.c_str (), cdDirectories.c_str () ); @@ -3544,7 +3533,7 @@ fprintf ( fMakefile, "\t$(ECHO_CDMAKE)\n" ); fprintf ( fMakefile, "\t$(Q)$(CDMAKE_TARGET) -v -j -m -b %s %s REACTOS %s\n", - backend->GetFullName ( isoboot ).c_str (), + backend->GetFullName ( *isoboot ).c_str (), backend->GetFullPath ( bootcd ).c_str (), IsoName.c_str() ); fprintf ( fMakefile,