Add headers dependencies for modules which declare a .idl in their rbuild file
authorHervé Poussineau <hpoussin@reactos.org>
Mon, 24 Sep 2007 12:53:33 +0000 (12:53 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Mon, 24 Sep 2007 12:53:33 +0000 (12:53 +0000)
svn path=/trunk/; revision=29185

reactos/tools/rbuild/backend/mingw/modulehandler.cpp
reactos/tools/rbuild/backend/mingw/modulehandler.h

index 460eaef..b543533 100644 (file)
@@ -1364,6 +1364,7 @@ MingwModuleHandler::GenerateWidlCommands (
 void
 MingwModuleHandler::GenerateCommands (
        const CompilationUnit& compilationUnit,
+       const string& extraDependencies,
        const string& cc,
        const string& cppc,
        const string& cflagsMacro,
@@ -1376,7 +1377,7 @@ MingwModuleHandler::GenerateCommands (
        if ( extension == ".c" || extension == ".C" )
        {
                GenerateGccCommand ( sourceFile,
-                                    GetCompilationUnitDependencies ( compilationUnit ),
+                                    GetCompilationUnitDependencies ( compilationUnit ) + extraDependencies,
                                     cc,
                                     cflagsMacro );
                return;
@@ -1386,7 +1387,7 @@ MingwModuleHandler::GenerateCommands (
                  extension == ".cxx" || extension == ".CXX" )
        {
                GenerateGccCommand ( sourceFile,
-                                    GetCompilationUnitDependencies ( compilationUnit ),
+                                    GetCompilationUnitDependencies ( compilationUnit ) + extraDependencies,
                                     cppc,
                                     cflagsMacro );
                return;
@@ -1414,7 +1415,7 @@ MingwModuleHandler::GenerateCommands (
        {
                GenerateWinebuildCommands ( sourceFile );
                GenerateGccCommand ( GetActualSourceFilename ( sourceFile ),
-                                    "",
+                                    extraDependencies,
                                     cc,
                                     cflagsMacro );
                return;
@@ -1696,11 +1697,24 @@ MingwModuleHandler::GenerateObjectFileTargets (
        const string& widlflagsMacro )
 {
        size_t i;
+       string moduleDependencies;
 
        const vector<CompilationUnit*>& compilationUnits = data.compilationUnits;
+       for ( i = 0; i < compilationUnits.size (); i++ )
+       {
+               CompilationUnit& compilationUnit = *compilationUnits[i];
+               const FileLocation *objectFilename = GetObjectFilename ( compilationUnit.GetFilename (), NULL );
+               if ( GetExtension ( *objectFilename ) == ".h" )
+               {
+                       moduleDependencies = ssprintf ( " $(%s_HEADERS)", module.name.c_str () );
+                       break;
+               }
+       }
+
        for ( i = 0; i < compilationUnits.size (); i++ )
        {
                GenerateCommands ( *compilationUnits[i],
+                                  moduleDependencies,
                                   cc,
                                   cppc,
                                   cflagsMacro,
@@ -1728,6 +1742,7 @@ MingwModuleHandler::GenerateObjectFileTargets (
        for ( i = 0; i < sourceCompilationUnits.size (); i++ )
        {
                GenerateCommands ( *sourceCompilationUnits[i],
+                                  moduleDependencies,
                                   cc,
                                   cppc,
                                   cflagsMacro,
index c66264d..d45d8bb 100644 (file)
@@ -174,6 +174,7 @@ private:
        void GenerateWidlCommands ( const CompilationUnit& compilationUnit,
                                    const std::string& widlflagsMacro );
        void GenerateCommands ( const CompilationUnit& compilationUnit,
+                               const std::string& extraDependencies,
                                const std::string& cc,
                                const std::string& cppc,
                                const std::string& cflagsMacro,