From 8596afd33470277ddd8ecf0c0474e0b233a7d620 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Thu, 11 Oct 2007 10:18:47 +0000 Subject: [PATCH] Add list of source files in generated makefile svn path=/trunk/; revision=29495 --- reactos/tools/rbuild/backend/mingw/mingw.cpp | 2 + .../rbuild/backend/mingw/modulehandler.cpp | 89 +++++++++++++++++-- .../rbuild/backend/mingw/modulehandler.h | 7 +- 3 files changed, 90 insertions(+), 8 deletions(-) diff --git a/reactos/tools/rbuild/backend/mingw/mingw.cpp b/reactos/tools/rbuild/backend/mingw/mingw.cpp index fcf4cffda2e..7afd7f047a3 100644 --- a/reactos/tools/rbuild/backend/mingw/mingw.cpp +++ b/reactos/tools/rbuild/backend/mingw/mingw.cpp @@ -260,6 +260,8 @@ MingwBackend::ProcessModules () size_t iend = v.size (); + for ( i = 0; i < iend; i++ ) + v[i]->GenerateSourceMacro(); for ( i = 0; i < iend; i++ ) v[i]->GenerateObjectMacro(); fprintf ( fMakefile, "\n" ); diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp index 344ab836360..677ef6e9b14 100644 --- a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp +++ b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp @@ -906,11 +906,77 @@ MingwModuleHandler::GetModuleSpecificCompilationUnits ( vector { } +void +MingwModuleHandler::GenerateSourceMacros ( + const char* assignmentOperation, + const IfableData& data ) +{ + size_t i; + + const vector& compilationUnits = data.compilationUnits; + vector headers; + if ( compilationUnits.size () > 0 ) + { + fprintf ( + fMakefile, + "%s %s", + sourcesMacro.c_str (), + assignmentOperation ); + for ( i = 0; i < compilationUnits.size(); i++ ) + { + CompilationUnit& compilationUnit = *compilationUnits[i]; + fprintf ( + fMakefile, + "%s%s", + ( i%10 == 9 ? " \\\n\t" : " " ), + backend->GetFullName ( *compilationUnit.GetFilename () ).c_str () ); + } + fprintf ( fMakefile, "\n" ); + } + + const vector& ifs = data.ifs; + for ( i = 0; i < ifs.size(); i++ ) + { + If& rIf = *ifs[i]; + if ( rIf.data.defines.size() + || rIf.data.includes.size() + || rIf.data.libraries.size() + || rIf.data.compilationUnits.size() + || rIf.data.compilerFlags.size() + || rIf.data.ifs.size() ) + { + fprintf ( + fMakefile, + "%s (\"$(%s)\",\"%s\")\n", + rIf.negated ? "ifneq" : "ifeq", + rIf.property.c_str(), + rIf.value.c_str() ); + GenerateSourceMacros ( + "+=", + rIf.data ); + fprintf ( + fMakefile, + "endif\n\n" ); + } + } + + vector sourceCompilationUnits; + GetModuleSpecificCompilationUnits ( sourceCompilationUnits ); + for ( i = 0; i < sourceCompilationUnits.size (); i++ ) + { + fprintf ( + fMakefile, + "%s += %s\n", + sourcesMacro.c_str(), + backend->GetFullName ( *sourceCompilationUnits[i]->GetFilename () ).c_str () ); + } + CleanupCompilationUnitVector ( sourceCompilationUnits ); +} + void MingwModuleHandler::GenerateObjectMacros ( const char* assignmentOperation, - const IfableData& data, - const vector* linkerFlags ) + const IfableData& data ) { size_t i; @@ -988,8 +1054,7 @@ MingwModuleHandler::GenerateObjectMacros ( rIf.value.c_str() ); GenerateObjectMacros ( "+=", - rIf.data, - NULL ); + rIf.data ); fprintf ( fMakefile, "endif\n\n" ); @@ -1886,6 +1951,19 @@ MingwModuleHandler::GetModuleTargets ( const Module& module ) return backend->GetFullName ( *GetTargetFilename ( module, NULL ) ).c_str (); } +void +MingwModuleHandler::GenerateSourceMacro () +{ + sourcesMacro = ssprintf ( "%s_SOURCES", module.name.c_str ()); + + GenerateSourceMacros ( + "=", + module.non_if_data ); + + // future references to the macro will be to get its values + sourcesMacro = ssprintf ("$(%s)", sourcesMacro.c_str ()); +} + void MingwModuleHandler::GenerateObjectMacro () { @@ -1893,8 +1971,7 @@ MingwModuleHandler::GenerateObjectMacro () GenerateObjectMacros ( "=", - module.non_if_data, - &module.linkerFlags ); + module.non_if_data ); // future references to the macro will be to get its values objectsMacro = ssprintf ("$(%s)", objectsMacro.c_str ()); diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.h b/reactos/tools/rbuild/backend/mingw/modulehandler.h index ba5d0a21eb6..d5a1d274f7c 100644 --- a/reactos/tools/rbuild/backend/mingw/modulehandler.h +++ b/reactos/tools/rbuild/backend/mingw/modulehandler.h @@ -57,6 +57,7 @@ public: std::string GetModuleTargets ( const Module& module ); void GetObjectsVector ( const IfableData& data, std::vector& objectFiles ) const; + void GenerateSourceMacro(); void GenerateObjectMacro(); void GenerateTargetMacro(); void GenerateOtherMacros(); @@ -139,9 +140,10 @@ private: void GenerateMacros ( const char* op, const IfableData& data, const std::vector* linkerFlags ); + void GenerateSourceMacros ( const char* assignmentOperation, + const IfableData& data ); void GenerateObjectMacros ( const char* assignmentOperation, - const IfableData& data, - const std::vector* linkerFlags ); + const IfableData& data ); std::string GenerateGccIncludeParameters () const; std::string GenerateGccParameters () const; std::string GenerateNasmParameters () const; @@ -221,6 +223,7 @@ public: std::string windresflagsMacro; std::string widlflagsMacro; std::string linkerflagsMacro; + std::string sourcesMacro; std::string objectsMacro; std::string libsMacro; std::string linkDepsMacro;