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