From 0aaeae97c6e56ea64667e6b0712ee368bcd57141 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 3 Nov 2010 09:05:14 +0100 Subject: [PATCH] Qt4ProjectManager: Do not include windows.h in qtversionmanager. Move 64bit-binary detection into Utils library. --- src/libs/utils/winutils.cpp | 21 ++++++++++++++++ src/libs/utils/winutils.h | 3 +++ .../qt4projectmanager/qtversionmanager.cpp | 24 +++---------------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/libs/utils/winutils.cpp b/src/libs/utils/winutils.cpp index 22fff734d0e..3f3bde6fa99 100644 --- a/src/libs/utils/winutils.cpp +++ b/src/libs/utils/winutils.cpp @@ -28,6 +28,7 @@ **************************************************************************/ #include "winutils.h" +#include "qtcassert.h" // Enable WinAPI Windows XP and later #define _WIN32_WINNT 0x0501 @@ -38,6 +39,7 @@ #include #include #include +#include namespace Utils { @@ -173,4 +175,23 @@ QTCREATOR_UTILS_EXPORT bool winIs64BitSystem() || systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64; } +QTCREATOR_UTILS_EXPORT bool winIs64BitBinary(const QString &binaryIn) +{ + QTC_ASSERT(!binaryIn.isEmpty(), return false; ) +#ifdef Q_OS_WIN32 +# ifdef __GNUC__ // MinGW lacking some definitions/winbase.h +# define SCS_64BIT_BINARY 6 +# endif + bool isAmd64 = false; + DWORD binaryType = 0; + const QString binary = QDir::toNativeSeparators(binaryIn); + bool success = GetBinaryTypeW(reinterpret_cast(binary.utf16()), &binaryType) != 0; + if (success && binaryType == SCS_64BIT_BINARY) + isAmd64=true; + return isAmd64; +#else + return false; +#endif +} + } // namespace Utils diff --git a/src/libs/utils/winutils.h b/src/libs/utils/winutils.h index 6c3a2af8f70..1edb193d407 100644 --- a/src/libs/utils/winutils.h +++ b/src/libs/utils/winutils.h @@ -58,5 +58,8 @@ QTCREATOR_UTILS_EXPORT unsigned long winQPidToPid(const Q_PID qpid); QTCREATOR_UTILS_EXPORT bool winIs64BitSystem(); +// Check for a 64bit binary. +QTCREATOR_UTILS_EXPORT bool winIs64BitBinary(const QString &binary); + } // namespace Utils #endif // WINUTILS_H diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index 33d789510e4..3d9f37f4d3a 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #include #include @@ -61,10 +62,6 @@ #include #include -#ifdef Q_OS_WIN32 -#include -#endif - using namespace Qt4ProjectManager; using namespace Qt4ProjectManager::Internal; @@ -1772,23 +1769,8 @@ QString QtVersion::examplesPath() const bool QtVersion::isQt64Bit() const { - const QString make = qmakeCommand(); -// qDebug() << make; - bool isAmd64 = false; -#ifdef Q_OS_WIN32 -# ifdef __GNUC__ // MinGW lacking some definitions/winbase.h -# define SCS_64BIT_BINARY 6 -# endif - DWORD binaryType = 0; - bool success = GetBinaryTypeW(reinterpret_cast(make.utf16()), &binaryType) != 0; - if (success && binaryType == SCS_64BIT_BINARY) - isAmd64=true; -// qDebug() << "isAmd64:" << isAmd64 << binaryType; - return isAmd64; -#else - Q_UNUSED(isAmd64) - return false; -#endif + const QString qmake = qmakeCommand(); + return qmake.isEmpty() ? false : Utils::winIs64BitBinary(qmake); } bool QtVersion::buildDebuggingHelperLibrary(QFutureInterface &future,