From 97d98c96e5da82ba63df0f48667a1189a30200c5 Mon Sep 17 00:00:00 2001
From: hjk <hjk121@nokiamail.com>
Date: Wed, 19 Feb 2014 15:35:58 +0100
Subject: [PATCH] Utils: Compile winutils on all platform

... and simplify "user" code.

Change-Id: I2dfa402f25ab83f1ab80adc0ac508e8383c69641
Reviewed-by: David Schulz <david.schulz@digia.com>
---
 src/libs/utils/utils-lib.pri                   | 13 +++++--------
 src/libs/utils/utils.qbs                       |  4 ++--
 src/libs/utils/winutils.cpp                    | 18 ++++++++++++++++--
 src/libs/utils/winutils.h                      | 10 ++--------
 src/plugins/debugger/cdb/cdbengine.cpp         | 12 +++---------
 src/plugins/debugger/cdb/cdbengine.h           |  1 -
 src/plugins/debugger/debuggeroptionspage.cpp   |  6 +-----
 src/plugins/debugger/debuggerplugin.cpp        |  8 ++------
 src/plugins/debugger/debuggerrunner.cpp        |  5 +----
 .../desktopprocesssignaloperation.cpp          |  7 ++++---
 .../qmlprojectrunconfiguration.cpp             |  3 ---
 .../qtsupport/gettingstartedwelcomepage.cpp    |  3 ---
 src/plugins/valgrind/valgrindprocess.cpp       |  5 -----
 src/plugins/welcome/welcomeplugin.cpp          |  4 ----
 14 files changed, 36 insertions(+), 63 deletions(-)

diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri
index 8bbf3614fce..67025e67a49 100644
--- a/src/libs/utils/utils-lib.pri
+++ b/src/libs/utils/utils-lib.pri
@@ -86,14 +86,10 @@ SOURCES += $$PWD/environment.cpp \
     $$PWD/function.cpp \
     $$PWD/ansiescapecodehandler.cpp \
     $$PWD/execmenu.cpp \
-    $$PWD/completinglineedit.cpp
+    $$PWD/completinglineedit.cpp \
+    $$PWD/winutils.cpp
 
-win32 {
-    SOURCES += \
-        $$PWD/consoleprocess_win.cpp \
-        $$PWD/winutils.cpp
-    HEADERS += $$PWD/winutils.h
-}
+win32:SOURCES += $$PWD/consoleprocess_win.cpp
 else:SOURCES += $$PWD/consoleprocess_unix.cpp
 
 HEADERS += \
@@ -181,7 +177,8 @@ HEADERS += \
     $$PWD/ansiescapecodehandler.h \
     $$PWD/execmenu.h \
     $$PWD/completinglineedit.h \
-    $$PWD/logging.h
+    $$PWD/logging.h \
+    $$PWD/winutils.h
 
 FORMS += $$PWD/filewizardpage.ui \
     $$PWD/projectintropage.ui \
diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs
index 6d9731b9e8f..987adc0db71 100644
--- a/src/libs/utils/utils.qbs
+++ b/src/libs/utils/utils.qbs
@@ -176,6 +176,8 @@ QtcLibrary {
         "unixutils.h",
         "utils.qrc",
         "utils_global.h",
+        "winutils.cpp",
+        "winutils.h",
         "wizard.cpp",
         "wizard.h",
         "images/arrow.png",
@@ -208,8 +210,6 @@ QtcLibrary {
         condition: qbs.targetOS.contains("windows")
         files: [
             "consoleprocess_win.cpp",
-            "winutils.cpp",
-            "winutils.h",
         ]
     }
 
diff --git a/src/libs/utils/winutils.cpp b/src/libs/utils/winutils.cpp
index dd33502bdef..ade5b0068d6 100644
--- a/src/libs/utils/winutils.cpp
+++ b/src/libs/utils/winutils.cpp
@@ -31,9 +31,11 @@
 #include "qtcassert.h"
 
 // Enable WinAPI Windows XP and later
+#ifdef Q_OS_WIN
 #undef _WIN32_WINNT
 #define _WIN32_WINNT 0x0501
 #include <windows.h>
+#endif
 
 #include <QString>
 #include <QVector>
@@ -47,6 +49,7 @@ namespace Utils {
 QTCREATOR_UTILS_EXPORT QString winErrorMessage(unsigned long error)
 {
     QString rc = QString::fromLatin1("#%1: ").arg(error);
+#ifdef Q_OS_WIN
     ushort *lpMsgBuf;
 
     const int len = FormatMessage(
@@ -58,6 +61,7 @@ QTCREATOR_UTILS_EXPORT QString winErrorMessage(unsigned long error)
     } else {
         rc += QString::fromLatin1("<unknown error>");
     }
+#endif
     return rc;
 }
 
@@ -76,6 +80,7 @@ QTCREATOR_UTILS_EXPORT QString winGetDLLVersion(WinDLLVersionType t,
                                                 const QString &name,
                                                 QString *errorMessage)
 {
+#ifdef Q_OS_WIN
     // Resolve required symbols from the version.dll
     typedef DWORD (APIENTRY *GetFileVersionInfoSizeProtoType)(LPCTSTR, LPDWORD);
     typedef BOOL (APIENTRY *GetFileVersionInfoWProtoType)(LPCWSTR, DWORD, DWORD, LPVOID);
@@ -127,17 +132,26 @@ QTCREATOR_UTILS_EXPORT QString winGetDLLVersion(WinDLLVersionType t,
         break;
     }
     return rc;
+#endif
+    Q_UNUSED(t);
+    Q_UNUSED(name);
+    Q_UNUSED(errorMessage);
+    return QString();
 }
 
-QTCREATOR_UTILS_EXPORT bool winIs64BitSystem()
+QTCREATOR_UTILS_EXPORT bool is64BitWindowsSystem()
 {
+#ifdef Q_OS_WIN
     SYSTEM_INFO systemInfo;
     GetNativeSystemInfo(&systemInfo);
     return systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64
             || systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64;
+#else
+    return false;
+#endif
 }
 
-QTCREATOR_UTILS_EXPORT bool winIs64BitBinary(const QString &binaryIn)
+QTCREATOR_UTILS_EXPORT bool is64BitWindowsBinary(const QString &binaryIn)
 {
        QTC_ASSERT(!binaryIn.isEmpty(), return false);
 #ifdef Q_OS_WIN32
diff --git a/src/libs/utils/winutils.h b/src/libs/utils/winutils.h
index 7cce2ebef46..9b5358791a4 100644
--- a/src/libs/utils/winutils.h
+++ b/src/libs/utils/winutils.h
@@ -32,12 +32,6 @@
 
 #include "utils_global.h"
 
-#include <QProcess> // Q_PID (is PROCESS_INFORMATION*)
-
-QT_BEGIN_NAMESPACE
-class QString;
-QT_END_NAMESPACE
-
 namespace Utils {
 
 // Helper to format a Windows error message, taking the
@@ -50,10 +44,10 @@ QTCREATOR_UTILS_EXPORT QString winGetDLLVersion(WinDLLVersionType t,
                                                 const QString &name,
                                                 QString *errorMessage);
 
-QTCREATOR_UTILS_EXPORT bool winIs64BitSystem();
+QTCREATOR_UTILS_EXPORT bool is64BitWindowsSystem();
 
 // Check for a 64bit binary.
-QTCREATOR_UTILS_EXPORT bool winIs64BitBinary(const QString &binary);
+QTCREATOR_UTILS_EXPORT bool is64BitWindowsBinary(const QString &binary);
 
 } // namespace Utils
 
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index 388535eba53..fa52f971bb2 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -352,7 +352,6 @@ CdbEngine::CdbEngine(const DebuggerStartParameters &sp) :
     m_verboseLog(false), // Default CDB setting
     m_notifyEngineShutdownOnTermination(false),
     m_hasDebuggee(false),
-    m_cdbIs64Bit(false),
     m_wow64State(wow64Uninitialized),
     m_elapsedLogTime(0),
     m_sourceStepInto(false),
@@ -669,15 +668,10 @@ bool CdbEngine::launchCDB(const DebuggerStartParameters &sp, QString *errorMessa
         return false;
     }
 
-    m_cdbIs64Bit =
-#ifdef Q_OS_WIN
-            Utils::winIs64BitBinary(executable);
-#else
-            false;
-#endif
-    if (!m_cdbIs64Bit)
+    bool cdbIs64Bit = Utils::is64BitWindowsBinary(executable);
+    if (!cdbIs64Bit)
         m_wow64State = noWow64Stack;
-    const QFileInfo extensionFi(CdbEngine::extensionLibraryName(m_cdbIs64Bit));
+    const QFileInfo extensionFi(CdbEngine::extensionLibraryName(cdbIs64Bit));
     if (!extensionFi.isFile()) {
         *errorMessage = QString::fromLatin1("Internal error: The extension %1 cannot be found.\n"
                                             "If you build Qt Creator from sources, check out "
diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h
index ff790032e5f..6bca2573904 100644
--- a/src/plugins/debugger/cdb/cdbengine.h
+++ b/src/plugins/debugger/cdb/cdbengine.h
@@ -271,7 +271,6 @@ private:
     bool m_verboseLog;
     bool m_notifyEngineShutdownOnTermination;
     bool m_hasDebuggee;
-    bool m_cdbIs64Bit;
     enum Wow64State {
         wow64Uninitialized,
         noWow64Stack,
diff --git a/src/plugins/debugger/debuggeroptionspage.cpp b/src/plugins/debugger/debuggeroptionspage.cpp
index 6fe0a191350..b56918398bf 100644
--- a/src/plugins/debugger/debuggeroptionspage.cpp
+++ b/src/plugins/debugger/debuggeroptionspage.cpp
@@ -139,11 +139,7 @@ void DebuggerItemConfigWidget::setItem(const DebuggerItem &item)
     QString text;
     QString versionCommand;
     if (item.engineType() == CdbEngineType) {
-#ifdef Q_OS_WIN
-        const bool is64bit = winIs64BitSystem();
-#else
-        const bool is64bit = false;
-#endif
+        const bool is64bit = is64BitWindowsSystem();
         const QString versionString = is64bit ? tr("64-bit version") : tr("32-bit version");
         //: Label text for path configuration. %2 is "x-bit version".
         text = tr("<html><body><p>Specify the path to the "
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index b88a1a6a268..2ea8a67fa57 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -106,9 +106,7 @@
 #include <utils/styledbar.h>
 #include <utils/proxyaction.h>
 #include <utils/statuslabel.h>
-#ifdef Q_OS_WIN
-#  include <utils/winutils.h>
-#endif
+#include <utils/winutils.h>
 
 #include <QComboBox>
 #include <QDockWidget>
@@ -588,13 +586,11 @@ public:
     // On a 64bit OS, prefer a 64bit debugger.
     static Kit *findUniversalCdbKit()
     {
-#ifdef Q_OS_WIN
-        if (Utils::winIs64BitSystem()) {
+        if (Utils::is64BitWindowsSystem()) {
             CdbMatcher matcher64(64);
             if (Kit *cdb64Kit = KitManager::find(matcher64))
                 return cdb64Kit;
         }
-#endif
         CdbMatcher matcher;
         return KitManager::find(matcher);
     }
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 224bff04a53..91bd58cc1c9 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -40,10 +40,7 @@
 #include "debuggerstringutils.h"
 #include "debuggertooltipmanager.h"
 #include "breakhandler.h"
-
-#ifdef Q_OS_WIN
-#  include "shared/peutils.h"
-#endif
+#include "shared/peutils.h"
 
 #include <projectexplorer/localapplicationrunconfiguration.h> // For LocalApplication*
 #include <projectexplorer/environmentaspect.h> // For the environment
diff --git a/src/plugins/projectexplorer/devicesupport/desktopprocesssignaloperation.cpp b/src/plugins/projectexplorer/devicesupport/desktopprocesssignaloperation.cpp
index a2e6a07b5c1..032245eeb5a 100644
--- a/src/plugins/projectexplorer/devicesupport/desktopprocesssignaloperation.cpp
+++ b/src/plugins/projectexplorer/devicesupport/desktopprocesssignaloperation.cpp
@@ -34,6 +34,7 @@
 
 #include <QCoreApplication>
 #include <QDir>
+#include <QProcess>
 
 #ifdef Q_OS_WIN
 #define _WIN32_WINNT 0x0502
@@ -123,10 +124,10 @@ void DesktopProcessSignalOperation::interruptProcessSilently(int pid)
 #ifdef Q_OS_WIN
     enum SpecialInterrupt { NoSpecialInterrupt, Win32Interrupt, Win64Interrupt };
 
-    bool is64BitSystem = Utils::winIs64BitSystem();
+    bool is64BitSystem = Utils::is64BitWindowsSystem();
     SpecialInterrupt si = NoSpecialInterrupt;
     if (is64BitSystem)
-        si = Utils::winIs64BitBinary(m_debuggerCommand) ? Win64Interrupt : Win32Interrupt;
+        si = Utils::is64BitWindowsBinary(m_debuggerCommand) ? Win64Interrupt : Win32Interrupt;
     /*
     Windows 64 bit has a 32 bit subsystem (WOW64) which makes it possible to run a
     32 bit application inside a 64 bit environment.
@@ -167,7 +168,7 @@ GDB 32bit | Api             | Api             | N/A             | Win32
                                      + Utils::winErrorMessage(GetLastError()));
             break;
         }
-        bool creatorIs64Bit = Utils::winIs64BitBinary(qApp->applicationFilePath());
+        bool creatorIs64Bit = Utils::is64BitWindowsBinary(qApp->applicationFilePath());
         if (!is64BitSystem
                 || si == NoSpecialInterrupt
                 || si == Win64Interrupt && creatorIs64Bit
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
index d7c1a8543f4..eceab59ca2d 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
@@ -43,10 +43,7 @@
 
 #include <utils/fileutils.h>
 #include <utils/qtcprocess.h>
-
-#ifdef Q_OS_WIN
 #include <utils/winutils.h>
-#endif
 
 using namespace Core;
 using namespace QmlProjectManager::Internal;
diff --git a/src/plugins/qtsupport/gettingstartedwelcomepage.cpp b/src/plugins/qtsupport/gettingstartedwelcomepage.cpp
index bd8f045762f..f5b9c68acd0 100644
--- a/src/plugins/qtsupport/gettingstartedwelcomepage.cpp
+++ b/src/plugins/qtsupport/gettingstartedwelcomepage.cpp
@@ -33,10 +33,7 @@
 #include "screenshotcropper.h"
 
 #include <utils/pathchooser.h>
-
-#ifdef Q_OS_WIN
 #include <utils/winutils.h>
-#endif
 
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/documentmanager.h>
diff --git a/src/plugins/valgrind/valgrindprocess.cpp b/src/plugins/valgrind/valgrindprocess.cpp
index cb0e9e62349..de746324415 100644
--- a/src/plugins/valgrind/valgrindprocess.cpp
+++ b/src/plugins/valgrind/valgrindprocess.cpp
@@ -35,11 +35,6 @@
 #include <QFileInfo>
 
 #include <utils/qtcassert.h>
-#include <utils/winutils.h>
-
-#ifdef Q_OS_WIN
-#    include <qt_windows.h>
-#endif
 
 namespace Valgrind {
 
diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp
index 989649757ee..37297cde4e6 100644
--- a/src/plugins/welcome/welcomeplugin.cpp
+++ b/src/plugins/welcome/welcomeplugin.cpp
@@ -46,10 +46,6 @@
 #include <utils/iwelcomepage.h>
 #include <utils/networkaccessmanager.h>
 
-#ifdef Q_OS_WIN
-#include <utils/winutils.h>
-#endif
-
 #include <QScrollArea>
 #include <QDesktopServices>
 #include <QPainter>
-- 
GitLab