qmake nmake generator: pass MAKEFLAGS to sub-make calls
authorJoerg Bornemann <joerg.bornemann@nokia.com>
Tue, 3 May 2011 07:52:30 +0000 (09:52 +0200)
committerJoerg Bornemann <joerg.bornemann@nokia.com>
Tue, 3 May 2011 11:31:12 +0000 (13:31 +0200)
Unlike other make tools nmake doesn't do this automatically.

Reviewed-by: ossi
qmake/generators/makefile.cpp
qmake/generators/makefile.h
qmake/generators/win32/msvc_nmake.cpp
qmake/generators/win32/msvc_nmake.h

index 61e7ac5..47ae384 100644 (file)
@@ -2376,6 +2376,14 @@ MakefileGenerator::writeSubDirs(QTextStream &t)
     qDeleteAll(targets);
 }
 
+void MakefileGenerator::writeSubMakeCall(QTextStream &t, const QString &callPrefix,
+                                         const QString &makeArguments, const QString &callPostfix)
+{
+    t << callPrefix
+      << "$(MAKE)" << makeArguments
+      << callPostfix << endl;
+}
+
 void
 MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubTarget*> targets, int flags)
 {
@@ -2499,9 +2507,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
                 t << " " << valList(subtarget->depends);
             if(project->isEmpty("QMAKE_NOFORCE"))
                 t <<  " FORCE";
-            t << out_directory_cdin
-              << "$(MAKE)" << makefilein
-              << out_directory_cdout << endl;
+            writeSubMakeCall(t, out_directory_cdin, makefilein, out_directory_cdout);
         }
 
         for(int suffix = 0; suffix < targetSuffixes.size(); ++suffix) {
@@ -2521,9 +2527,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
                     t << " " << targets.at(target-1)->target << "-" << targetSuffixes.at(suffix) << "-ordered ";
                 if(project->isEmpty("QMAKE_NOFORCE"))
                     t <<  " FORCE";
-                t << out_directory_cdin
-                  << "$(MAKE)" << makefilein << " " << s
-                  << out_directory_cdout << endl;
+                writeSubMakeCall(t, out_directory_cdin, makefilein, out_directory_cdout);
             }
             t << subtarget->target << "-" << targetSuffixes.at(suffix) << ": " << mkfile;
             if(!subtarget->depends.isEmpty())
@@ -2531,9 +2535,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
                                     "-"+targetSuffixes.at(suffix));
             if(project->isEmpty("QMAKE_NOFORCE"))
                 t <<  " FORCE";
-            t << out_directory_cdin
-              << "$(MAKE)" << makefilein << " " << s
-              << out_directory_cdout << endl;
+            writeSubMakeCall(t, out_directory_cdin, makefilein, out_directory_cdout);
         }
     }
     t << endl;
@@ -2671,12 +2673,10 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
 
                 //write the commands
                 if(!out_directory.isEmpty()) {
-                    t << out_directory_cdin
-                      << "$(MAKE)" << makefilein << " " << sub_targ
-                      << out_directory_cdout << endl;
+                    writeSubMakeCall(t, out_directory_cdin, makefilein + " " + sub_targ,
+                                     out_directory_cdout);
                 } else {
-                    t << "\n\t"
-                      << "$(MAKE)" << makefilein << " " << sub_targ << endl;
+                    writeSubMakeCall(t, "\n\t", makefilein + " " + sub_targ, QString());
                 }
             }
         }
index e0ef52d..417370a 100644 (file)
@@ -127,6 +127,8 @@ protected:
         SubTargetsNoFlags=0x00
     };
     QList<MakefileGenerator::SubTarget*> findSubDirsSubTargets() const;
+    virtual void writeSubMakeCall(QTextStream &t, const QString &outDirectory_cdin,
+                                  const QString &makeFileIn, const QString &outDirectory_cdout);
     void writeSubTargets(QTextStream &t, QList<SubTarget*> subtargets, int flags);
 
     //extra compiler interface
index c55806d..e0e2fe0 100644 (file)
@@ -85,6 +85,15 @@ NmakeMakefileGenerator::writeMakefile(QTextStream &t)
     return false;
 }
 
+void NmakeMakefileGenerator::writeSubMakeCall(QTextStream &t, const QString &callPrefix,
+                                              const QString &makeArguments, const QString &callPostfix)
+{
+    // Pass MAKEFLAGS as environment variable to sub-make calls.
+    // Unlike other make tools nmake doesn't do this automatically.
+    t << "\n\t@set MAKEFLAGS=$(MAKEFLAGS)";
+    Win32MakefileGenerator::writeSubMakeCall(t, callPrefix, makeArguments, callPostfix);
+}
+
 QString NmakeMakefileGenerator::getPdbTarget()
 {
     return QString(project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".pdb");
index 8954655..689cc19 100644 (file)
@@ -57,6 +57,8 @@ class NmakeMakefileGenerator : public Win32MakefileGenerator
     void init();
 
 protected:
+    virtual void writeSubMakeCall(QTextStream &t, const QString &callPrefix,
+                                  const QString &makeArguments, const QString &callPostfix);
     virtual QString getPdbTarget();
     virtual QString defaultInstall(const QString &t);
     virtual QStringList &findDependencies(const QString &file);