From 3e6eb979d81b531648422cbed8981125af870c6f Mon Sep 17 00:00:00 2001 From: Royce Mitchell III Date: Sat, 8 Jan 2005 06:36:03 +0000 Subject: [PATCH] use ROS_TEMPORARY and ROS_INTERMEDIATE to allow builder to override locations for created files. Fix name conflict with temporary files svn path=/branches/xmlbuildsystem/; revision=12882 --- reactos/tools/rbuild/backend/mingw/mingw.cpp | 8 ++- reactos/tools/rbuild/backend/mingw/mingw.h | 2 + .../rbuild/backend/mingw/modulehandler.cpp | 49 +++++++++++-------- .../rbuild/backend/mingw/modulehandler.h | 1 + 4 files changed, 38 insertions(+), 22 deletions(-) diff --git a/reactos/tools/rbuild/backend/mingw/mingw.cpp b/reactos/tools/rbuild/backend/mingw/mingw.cpp index f20601376f7..6ab999d7734 100644 --- a/reactos/tools/rbuild/backend/mingw/mingw.cpp +++ b/reactos/tools/rbuild/backend/mingw/mingw.cpp @@ -78,7 +78,7 @@ MingwBackend::GenerateAllTarget () Module& module = *ProjectNode.modules[i]; fprintf ( fMakefile, " %s", - module.GetPath ().c_str () ); + FixupTargetFilename(module.GetPath ()).c_str () ); } fprintf ( fMakefile, "\n\t\n\n" ); } @@ -105,3 +105,9 @@ MingwBackend::GetModuleHandlers ( MingwModuleHandlerList& moduleHandlers ) const moduleHandlers.push_back ( new MingwKernelModuleHandler ( fMakefile ) ); moduleHandlers.push_back ( new MingwStaticLibraryModuleHandler ( fMakefile ) ); } + +string +FixupTargetFilename ( const string& targetFilename ) +{ + return string("$(ROS_INTERMEDIATE)") + targetFilename; +} diff --git a/reactos/tools/rbuild/backend/mingw/mingw.h b/reactos/tools/rbuild/backend/mingw/mingw.h index 64839336c0c..28a3acf9bfc 100644 --- a/reactos/tools/rbuild/backend/mingw/mingw.h +++ b/reactos/tools/rbuild/backend/mingw/mingw.h @@ -40,4 +40,6 @@ private: FILE* fMakefile; }; +std::string FixupTargetFilename ( const std::string& targetFilename ); + #endif /* MINGW_H */ diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp index d0832dd6778..87d0f3fa1f8 100644 --- a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp +++ b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp @@ -33,7 +33,7 @@ MingwModuleHandler::ReplaceExtension ( const string& filename, string MingwModuleHandler::GetModuleArchiveFilename ( const Module& module ) const { - return ReplaceExtension ( module.GetPath ().c_str (), + return ReplaceExtension ( FixupTargetFilename(module.GetPath ()).c_str (), ".a" ); } @@ -50,7 +50,7 @@ MingwModuleHandler::GetImportLibraryDependencies ( const Module& module ) const dependencies += " "; const Module* importedModule = module.project.LocateModule ( module.libraries[i]->name ); assert ( importedModule != NULL ); - dependencies += importedModule->GetPath ().c_str (); + dependencies += FixupTargetFilename(importedModule->GetPath ()).c_str (); } return dependencies; } @@ -74,8 +74,9 @@ MingwModuleHandler::GetSourceFilenames ( const Module& module ) const string MingwModuleHandler::GetObjectFilename ( const string& sourceFilename ) const { - return ReplaceExtension ( sourceFilename, - ".o" ); + return + FixupTargetFilename ( ReplaceExtension ( sourceFilename, + ".o" ) ); } string @@ -242,39 +243,45 @@ MingwKernelModuleHandler::Process ( const Module& module ) void MingwKernelModuleHandler::GenerateKernelModuleTarget ( const Module& module ) { + static string ros_junk ( "$(ROS_TEMPORARY)" ); + //static string ros_output ( "$(ROS_INTERMEDIATE)" ); + string target ( FixupTargetFilename(module.GetPath()) ); string workingDirectory = GetWorkingDirectory ( ); string archiveFilename = GetModuleArchiveFilename ( module ); string importLibraryDependencies = GetImportLibraryDependencies ( module ); + string base_tmp = ros_junk + module.name + ".base.tmp"; + string junk_tmp = ros_junk + module.name + ".junk.tmp"; + string temp_exp = ros_junk + module.name + ".temp.exp"; fprintf ( fMakefile, "%s: %s %s\n", - module.GetPath ().c_str (), + target.c_str (), archiveFilename.c_str (), importLibraryDependencies.c_str () ); fprintf ( fMakefile, - "\t${gcc} -Wl,--base-file,%s" SSEP "base.tmp -o %s" SSEP "junk.tmp %s %s\n", - workingDirectory.c_str (), - workingDirectory.c_str (), + "\t${gcc} -Wl,--base-file,%s -o %s %s %s\n", + base_tmp.c_str (), + junk_tmp.c_str (), archiveFilename.c_str (), importLibraryDependencies.c_str () ); fprintf ( fMakefile, - "\t${rm} %s" SSEP "junk.tmp\n", - workingDirectory.c_str () ); + "\t${rm} %s\n", + junk_tmp.c_str () ); fprintf ( fMakefile, - "\t${dlltool} --dllname %s --base-file %s" SSEP "base.tmp --output-exp %s" SSEP "temp.exp --kill-at\n", - module.GetPath ().c_str (), - workingDirectory.c_str (), - workingDirectory.c_str ()); + "\t${dlltool} --dllname %s --base-file %s --output-exp %s --kill-at\n", + target.c_str (), + base_tmp.c_str (), + temp_exp.c_str ()); fprintf ( fMakefile, - "\t${rm} %s" SSEP "base.tmp\n", - workingDirectory.c_str () ); + "\t${rm} %s\n", + base_tmp.c_str () ); fprintf ( fMakefile, - "\t${ld} -Wl,%s" SSEP "temp.exp -o %s %s %s\n", - workingDirectory.c_str (), - module.GetPath ().c_str (), + "\t${ld} -Wl,%s -o %s %s %s\n", + temp_exp.c_str (), + target.c_str (), archiveFilename.c_str (), importLibraryDependencies.c_str () ); fprintf ( fMakefile, - "\t${rm} %s" SSEP "temp.exp\n", - workingDirectory.c_str () ); + "\t${rm} %s\n", + temp_exp.c_str () ); GenerateArchiveTarget ( module ); GenerateObjectFileTargets ( module ); diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.h b/reactos/tools/rbuild/backend/mingw/modulehandler.h index a1a7096add2..9e1dcccb357 100644 --- a/reactos/tools/rbuild/backend/mingw/modulehandler.h +++ b/reactos/tools/rbuild/backend/mingw/modulehandler.h @@ -16,6 +16,7 @@ protected: std::string GetModuleArchiveFilename ( const Module& module ) const; std::string GetImportLibraryDependencies ( const Module& module ) const; std::string GetSourceFilenames ( const Module& module ) const; + std::string GetObjectFilename ( const std::string& sourceFilename ) const; std::string GetObjectFilenames ( const Module& module ) const; void GenerateObjectFileTargets ( const Module& module ) const;