From dc612acdc6577594c8f61345cea2de549d7aae34 Mon Sep 17 00:00:00 2001
From: Joerg Bornemann <joerg.bornemann@digia.com>
Date: Tue, 14 Oct 2014 11:47:25 +0200
Subject: [PATCH] fix PRECOMPILED_SOURCE regression in vc(x)projs

Commit af760349 in Qt4 broke the possibility of having a
PRECOMPILED_SOURCE in a different directory than the
PRECOMPILED_HEADER.
Do not write the PrecompiledHeaderThrough value for the
PRECOMPILED_SOURCE, but use the project default.
The msbuild code path needed adjustments to write the
UsePrecompiledHeader value, even if PrecompiledHeaderThrough is
empty.

Task-number: QTBUG-41917
Change-Id: I74e621f6618cf056e3967c99a2215f76c346b9ee
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
---
 qmake/generators/win32/msbuild_objectmodel.cpp | 8 +++++---
 qmake/generators/win32/msvc_objectmodel.cpp    | 3 ++-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp
index 6751dc0f6b9..5acd60edea5 100644
--- a/qmake/generators/win32/msbuild_objectmodel.cpp
+++ b/qmake/generators/win32/msbuild_objectmodel.cpp
@@ -1956,11 +1956,13 @@ bool VCXProjectWriter::outputFileConfig(OutputFilterData *d, XmlOutput &xml, Xml
             }
 
             if ( !filter.CompilerTool.PrecompiledHeaderThrough.isEmpty() ) {
-
                 xml << tag("PrecompiledHeaderFile")
                     << attrTag("Condition", condition)
-                    << valueTag(filter.CompilerTool.PrecompiledHeaderThrough)
-                    << tag("PrecompiledHeader")
+                    << valueTag(filter.CompilerTool.PrecompiledHeaderThrough);
+            }
+
+            if (filter.CompilerTool.UsePrecompiledHeader != pchUnset) {
+                xml << tag("PrecompiledHeader")
                     << attrTag("Condition", condition)
                     << valueTag(toString(filter.CompilerTool.UsePrecompiledHeader));
             }
diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp
index f8e67718f76..aa2d40ad773 100644
--- a/qmake/generators/win32/msvc_objectmodel.cpp
+++ b/qmake/generators/win32/msvc_objectmodel.cpp
@@ -2237,7 +2237,8 @@ void VCFilter::modifyPCHstage(QString str)
     useCompilerTool = true;
     // Setup PCH options
     CompilerTool.UsePrecompiledHeader     = (isCFile ? pchNone : pchCreateUsingSpecific);
-    CompilerTool.PrecompiledHeaderThrough = (isCPPFile ? Project->precompHFilename : QString("$(NOINHERIT)"));
+    if (isCFile)
+        CompilerTool.PrecompiledHeaderThrough = QLatin1String("$(NOINHERIT)");
     CompilerTool.ForcedIncludeFiles       = QStringList("$(NOINHERIT)");
 }
 
-- 
GitLab