generate output rules for files under <if>
[reactos.git] / reactos / tools / rbuild / backend / mingw / modulehandler.cpp
index c8d482c..2fb5dbb 100644 (file)
@@ -328,7 +328,7 @@ MingwModuleHandler::GenerateMacros (
                {\r
                        fprintf (\r
                                fMakefile,\r
-                               "ifeq ($(%s),\"%s\")\n",\r
+                               "ifeq (\"$(%s)\",\"%s\")\n",\r
                                rIf.property.c_str(),\r
                                rIf.value.c_str() );\r
                        GenerateMacros (\r
@@ -445,14 +445,14 @@ MingwModuleHandler::GenerateCommand ( const Module& module,
 void\r
 MingwModuleHandler::GenerateObjectFileTargets ( const Module& module,\r
                                                 const vector<File*>& files,\r
+                                                const vector<If*>& ifs,\r
                                                 const string& cc,\r
                                                 const string& cflagsMacro,\r
                                                 const string& nasmflagsMacro ) const\r
 {\r
-       if ( files.size () == 0 )\r
-               return;\r
+       size_t i;\r
 \r
-       for ( size_t i = 0; i < files.size (); i++ )\r
+       for ( i = 0; i < files.size (); i++ )\r
        {\r
                string sourceFilename = files[i]->name;\r
                string objectFilename = GetObjectFilename ( sourceFilename );\r
@@ -468,8 +468,9 @@ MingwModuleHandler::GenerateObjectFileTargets ( const Module& module,
                                            cflagsMacro,\r
                                            nasmflagsMacro ).c_str () );\r
        }\r
-       \r
-       fprintf ( fMakefile, "\n" );\r
+\r
+       for ( i = 0; i < ifs.size(); i++ )\r
+               GenerateObjectFileTargets ( module, ifs[i]->files, ifs[i]->ifs, cc, cflagsMacro, nasmflagsMacro );\r
 }\r
 \r
 void\r
@@ -478,9 +479,8 @@ MingwModuleHandler::GenerateObjectFileTargets ( const Module& module,
                                                 const string& cflagsMacro,\r
                                                 const string& nasmflagsMacro ) const\r
 {\r
-       GenerateObjectFileTargets ( module, module.files, cc, cflagsMacro, nasmflagsMacro );\r
-       for ( size_t i = 0; i < module.ifs.size(); i++ )\r
-               GenerateObjectFileTargets ( module, module.ifs[i]->files, cc, cflagsMacro, nasmflagsMacro );\r
+       GenerateObjectFileTargets ( module, module.files, module.ifs, cc, cflagsMacro, nasmflagsMacro );\r
+       fprintf ( fMakefile, "\n" );\r
 }\r
 \r
 void\r
@@ -695,6 +695,9 @@ MingwBuildToolModuleHandler::GenerateBuildToolModuleTarget ( const Module& modul
 {\r
        string target ( FixupTargetFilename ( module.GetPath () ) );\r
        string archiveFilename = GetModuleArchiveFilename ( module );\r
+\r
+       GenerateMacrosAndTargetsHost ( module );\r
+\r
        fprintf ( fMakefile, "%s: %s\n",\r
                  target.c_str (),\r
                  archiveFilename.c_str () );\r
@@ -702,7 +705,6 @@ MingwBuildToolModuleHandler::GenerateBuildToolModuleTarget ( const Module& modul
                  "\t${host_gcc} -o %s %s\n\n",\r
                  target.c_str (),\r
                  archiveFilename.c_str () );\r
-       GenerateMacrosAndTargetsHost ( module );\r
 }\r
 \r
 static MingwKernelModuleHandler kernelmodule_handler;\r
@@ -734,6 +736,9 @@ MingwKernelModuleHandler::GenerateKernelModuleTarget ( const Module& module )
        string temp_exp = ros_junk + module.name + ".temp.exp";\r
        string gccOptions = ssprintf ("-Wl,-T,%s" SSEP "ntoskrnl.lnk -Wl,--subsystem,native -Wl,--entry,_NtProcessStartup -Wl,--image-base,0xC0000000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll",\r
                                      module.GetBasePath ().c_str () );\r
+\r
+       GenerateMacrosAndTargetsTarget ( module );\r
+\r
        fprintf ( fMakefile, "%s: %s %s\n",\r
                  target.c_str (),\r
                  archiveFilename.c_str (),\r
@@ -766,8 +771,6 @@ MingwKernelModuleHandler::GenerateKernelModuleTarget ( const Module& module )
        fprintf ( fMakefile,\r
                  "\t${rm} %s\n\n",\r
                  temp_exp.c_str () );\r
-       \r
-       GenerateMacrosAndTargetsTarget ( module );\r
 }\r
 \r
 \r
@@ -831,6 +834,8 @@ MingwKernelModeDLLModuleHandler::GenerateKernelModeDLLModuleTarget ( const Modul
 \r
        if (module.files.size () > 0)\r
        {\r
+               GenerateMacrosAndTargetsTarget ( module );\r
+\r
                fprintf ( fMakefile, "%s: %s %s\n",\r
                          target.c_str (),\r
                          archiveFilename.c_str (),\r
@@ -841,8 +846,6 @@ MingwKernelModeDLLModuleHandler::GenerateKernelModeDLLModuleTarget ( const Modul
                          target.c_str (),\r
                          archiveFilename.c_str (),\r
                          importLibraryDependencies.c_str () );\r
-               \r
-               GenerateMacrosAndTargetsTarget ( module );\r
        }\r
        else\r
        {\r
@@ -892,6 +895,8 @@ MingwNativeDLLModuleHandler::GenerateNativeDLLModuleTarget ( const Module& modul
 \r
        if (module.files.size () > 0)\r
        {\r
+               GenerateMacrosAndTargetsTarget ( module );\r
+\r
                fprintf ( fMakefile, "%s: %s %s\n",\r
                          target.c_str (),\r
                          archiveFilename.c_str (),\r
@@ -902,8 +907,6 @@ MingwNativeDLLModuleHandler::GenerateNativeDLLModuleTarget ( const Module& modul
                          target.c_str (),\r
                          archiveFilename.c_str (),\r
                          importLibraryDependencies.c_str () );\r
-               \r
-               GenerateMacrosAndTargetsTarget ( module );\r
        }\r
        else\r
        {\r
@@ -953,6 +956,8 @@ MingwWin32DLLModuleHandler::GenerateWin32DLLModuleTarget ( const Module& module
 \r
        if (module.files.size () > 0)\r
        {\r
+               GenerateMacrosAndTargetsTarget ( module );\r
+\r
                fprintf ( fMakefile, "%s: %s %s\n",\r
                          target.c_str (),\r
                          archiveFilename.c_str (),\r
@@ -963,8 +968,6 @@ MingwWin32DLLModuleHandler::GenerateWin32DLLModuleTarget ( const Module& module
                          target.c_str (),\r
                          archiveFilename.c_str (),\r
                          importLibraryDependencies.c_str () );\r
-               \r
-               GenerateMacrosAndTargetsTarget ( module );\r
        }\r
        else\r
        {\r