From 49f338d40181baa587d47d627fbad90cbfcfc36e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Andr=C3=A9=20Vadla=20Ravn=C3=A5s?= Date: Sun, 17 Apr 2011 12:00:45 +0200 Subject: [PATCH 01/10] Add support for building with WDK CRT This means that the resulting QT binaries will only depend on msvcrt.dll shipped with all versions of Windows since XP. --- mkspecs/win32-msvc2005/qplatformdefs.h | 10 ++++ mkspecs/win32-msvc2010/qmake.conf | 16 +++--- qmake/Makefile.win32 | 8 ++-- qmake/generators/makefiledeps.cpp | 8 ++-- qmake/generators/symbian/symmake_sbsv2.cpp | 7 +-- .../javascriptcore/JavaScriptCore/config.h | 2 +- .../JavaScriptCore/wtf/CurrentTime.h | 2 +- .../javascriptcore/JavaScriptCore/wtf/TypeTraits.h | 4 +- src/3rdparty/sqlite/sqlite3.c | 3 +- src/3rdparty/webkit/JavaScriptCore/config.h | 2 +- .../webkit/JavaScriptCore/wtf/CurrentTime.h | 2 +- .../webkit/JavaScriptCore/wtf/TypeTraits.h | 4 +- src/corelib/global/qglobal.cpp | 49 +++++++++++++++++++- src/corelib/global/qglobal.h | 2 + src/corelib/io/qfsfileengine_win.cpp | 4 ++ src/corelib/io/qprocess.cpp | 18 ++------ src/corelib/io/qtemporaryfile.cpp | 4 +- src/corelib/tools/qdatetime.cpp | 8 ++- src/corelib/tools/qlocale.cpp | 2 +- tools/qdoc3/cppcodemarker.cpp | 2 + 20 files changed, 107 insertions(+), 50 deletions(-) diff --git a/mkspecs/win32-msvc2005/qplatformdefs.h b/mkspecs/win32-msvc2005/qplatformdefs.h index 4a5a75d..b12e87f 100644 --- a/mkspecs/win32-msvc2005/qplatformdefs.h +++ b/mkspecs/win32-msvc2005/qplatformdefs.h @@ -120,15 +120,25 @@ #undef QT_FTELL #undef QT_OFF_T +#if defined(QT_CRT_WDK) +#define QT_FSEEK(fh, ofs, orig) ::_lseeki64(::_fileno(fh), ofs, orig) +#define QT_FTELL(fh) ::_telli64(::_fileno(fh)) +#else #define QT_FSEEK ::_fseeki64 #define QT_FTELL ::_ftelli64 +#endif #define QT_OFF_T __int64 #endif #define QT_SIGNAL_ARGS int +#if defined(QT_CRT_WDK) +#define QT_VSNPRINTF(buffer, count, format, arg) \ + _vsnprintf_s(buffer, count, count-1, format, arg) +#else #define QT_VSNPRINTF(buffer, count, format, arg) \ vsnprintf_s(buffer, count, count-1, format, arg) +#endif #define QT_SNPRINTF ::_snprintf diff --git a/mkspecs/win32-msvc2010/qmake.conf b/mkspecs/win32-msvc2010/qmake.conf index 44e460e..0242bb7 100644 --- a/mkspecs/win32-msvc2010/qmake.conf +++ b/mkspecs/win32-msvc2010/qmake.conf @@ -6,9 +6,9 @@ MAKEFILE_GENERATOR = MSBUILD TEMPLATE = app -CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target embed_manifest_dll embed_manifest_exe +CONFIG += qt warn_on release flat link_prl precompile_header autogen_precompile_source copy_dir_files release_target QT += core gui -DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT +DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT QT_CRT_WDK QMAKE_COMPILER_DEFINES += _MSC_VER=1600 WIN32 QMAKE_CC = cl @@ -16,18 +16,18 @@ QMAKE_LEX = flex QMAKE_LEXFLAGS = QMAKE_YACC = byacc QMAKE_YACCFLAGS = -d -QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t- +QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t- -Fd$$[QT_INSTALL_LIBS]\\$(QMAKE_TARGET).pdb QMAKE_CFLAGS_WARN_ON = -W3 QMAKE_CFLAGS_WARN_OFF = -W0 -QMAKE_CFLAGS_RELEASE = -O2 -MD -QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi +QMAKE_CFLAGS_RELEASE = -O1 -Os -Gy -MD -Zi +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O1 -Os -Gy -MD -Zi QMAKE_CFLAGS_DEBUG = -Zi -MDd QMAKE_CFLAGS_YACC = QMAKE_CFLAGS_LTCG = -GL QMAKE_CFLAGS_MP = -MP QMAKE_CXX = $$QMAKE_CC -QMAKE_CXXFLAGS = $$QMAKE_CFLAGS +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -D_STL70_ -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON -w34100 -w34189 QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE @@ -55,8 +55,8 @@ QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ $< QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<< QMAKE_LINK = link -QMAKE_LFLAGS = /NOLOGO -QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO +QMAKE_LFLAGS = /NOLOGO msvcrt_winxp.obj ntstc_msvcrt.lib +QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /DEBUG /OPT:REF QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF QMAKE_LFLAGS_DEBUG = /DEBUG QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32 index c04bcb2..61ac034 100644 --- a/qmake/Makefile.win32 +++ b/qmake/Makefile.win32 @@ -29,7 +29,7 @@ CFLAGS_EXTRA = /MP !endif CFLAGS_BARE = -c -Fo./ \ - -W3 -nologo -O2 \ + -W3 -nologo -Os -Gy -MD \ $(CFLAGS_EXTRA) \ -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -Igenerators\symbian \ -I$(BUILD_PATH)\include -I$(BUILD_PATH)\include\QtCore \ @@ -41,14 +41,14 @@ CFLAGS_BARE = -c -Fo./ \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL \ -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP -DQT_BUILD_QMAKE -DQT_NO_THREAD \ -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_NO_PCRE -DQT_BOOTSTRAPPED \ - -DQLIBRARYINFO_EPOCROOT + -DQLIBRARYINFO_EPOCROOT -DQT_CRT_WDK CFLAGS = -Yuqmake_pch.h -FIqmake_pch.h -Fpqmake_pch.pch $(CFLAGS_BARE) $(CFLAGS) CXXFLAGS_BARE = $(CFLAGS_BARE) CXXFLAGS = $(CFLAGS) -LFLAGS = -LIBS = ole32.lib advapi32.lib +LFLAGS = /OPT:REF +LIBS = ole32.lib advapi32.lib msvcrt_winxp.obj LINKQMAKE = $(LINK) $(LFLAGS) -OUT:qmake.exe $(OBJS) $(QTOBJS) $(LIBS) ADDCLEAN = vc60.pdb vc70.pdb qmake.pdb qmake.ilk diff --git a/qmake/generators/makefiledeps.cpp b/qmake/generators/makefiledeps.cpp index d6dab0b..a0d0890 100644 --- a/qmake/generators/makefiledeps.cpp +++ b/qmake/generators/makefiledeps.cpp @@ -380,7 +380,7 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file) const QMakeLocalFileName sourceFile = fixPathForFile(file->file, true); - struct stat fst; + QT_STATBUF fst; char *buffer = 0; int buffer_len = 0; { @@ -392,7 +392,7 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file) #else fd = open(sourceFile.local().toLatin1().constData(), O_RDONLY); #endif - if(fd == -1 || fstat(fd, &fst) || S_ISDIR(fst.st_mode)) + if(fd == -1 || QT_FSTAT(fd, &fst) || S_ISDIR(fst.st_mode)) return false; buffer = getBuffer(fst.st_size); for(int have_read = 0; @@ -692,7 +692,7 @@ bool QMakeSourceFileInfo::findMocs(SourceFile *file) int buffer_len; char *buffer = 0; { - struct stat fst; + QT_STATBUF fst; int fd; #if defined(_MSC_VER) && _MSC_VER >= 1400 if (_sopen_s(&fd, fixPathForFile(file->file, true).local().toLocal8Bit().constData(), @@ -701,7 +701,7 @@ bool QMakeSourceFileInfo::findMocs(SourceFile *file) #else fd = open(fixPathForFile(file->file, true).local().toLocal8Bit().constData(), O_RDONLY); #endif - if(fd == -1 || fstat(fd, &fst) || S_ISDIR(fst.st_mode)) + if(fd == -1 || QT_FSTAT(fd, &fst) || S_ISDIR(fst.st_mode)) return false; //shouldn't happen buffer = getBuffer(fst.st_size); for(int have_read = buffer_len = 0; diff --git a/qmake/generators/symbian/symmake_sbsv2.cpp b/qmake/generators/symbian/symmake_sbsv2.cpp index ad25e8a..3740164 100644 --- a/qmake/generators/symbian/symmake_sbsv2.cpp +++ b/qmake/generators/symbian/symmake_sbsv2.cpp @@ -68,10 +68,6 @@ static QString armPlatformPrefix; static QString gccePlatform; static QString sbsRvctPrefix; -#if defined(Q_OS_UNIX) - extern char **environ; -#endif - static void fixFlmCmd(QString *cmdLine, const QMap &commandsToReplace) { // If commandItem starts with any $$QMAKE_* commands, do a replace for SBS equivalent. @@ -144,7 +140,8 @@ void SymbianSbsv2MakefileGenerator::findInstalledCompilerVersions(const QString char *entry = 0; int count = 0; QRegExp matcher(matchExpression); - while ((entry = environ[count++])) { + char **entries = _qEnviron(); + while ((entry = entries[count++])) { if (matcher.exactMatch(QString::fromLocal8Bit(entry)) && fileInfo(matcher.cap(matcher.captureCount())).exists()) { // First capture (index 0) is the whole match, which is skipped. diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/config.h b/src/3rdparty/javascriptcore/JavaScriptCore/config.h index 2af2e71..4d5f997 100644 --- a/src/3rdparty/javascriptcore/JavaScriptCore/config.h +++ b/src/3rdparty/javascriptcore/JavaScriptCore/config.h @@ -44,7 +44,7 @@ #define max max #define min min -#if !COMPILER(MSVC7) && !OS(WINCE) +#if !COMPILER(MSVC7) && !OS(WINCE) && !defined(QT_CRT_WDK) // We need to define this before the first #include of stdlib.h or it won't contain rand_s. #ifndef _CRT_RAND_S #define _CRT_RAND_S diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/CurrentTime.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/CurrentTime.h index 334a6e9..57ee755 100644 --- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/CurrentTime.h +++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/CurrentTime.h @@ -49,7 +49,7 @@ namespace WTF { inline void getLocalTime(const time_t* localTime, struct tm* localTM) { - #if COMPILER(MSVC7) || COMPILER(MINGW) || OS(WINCE) + #if COMPILER(MSVC7) || COMPILER(MINGW) || OS(WINCE) || defined(QT_CRT_WDK) *localTM = *localtime(localTime); #elif COMPILER(MSVC) localtime_s(localTM, localTime); diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h index 7ba487f..13a0d18 100644 --- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h +++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h @@ -24,7 +24,7 @@ #include "Platform.h" -#if (defined(__GLIBCXX__) && (__GLIBCXX__ >= 20070724) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && (_MSC_VER >= 1600)) +#if (defined(__GLIBCXX__) && (__GLIBCXX__ >= 20070724) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && (_MSC_VER >= 1600) && !defined(QT_CRT_WDK)) #include #endif @@ -166,7 +166,7 @@ namespace WTF { typedef T Type; }; -#if (defined(__GLIBCXX__) && (__GLIBCXX__ >= 20070724) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && (_MSC_VER >= 1600)) +#if (defined(__GLIBCXX__) && (__GLIBCXX__ >= 20070724) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && (_MSC_VER >= 1600) && !defined(QT_CRT_WDK)) // GCC's libstdc++ 20070724 and later supports C++ TR1 type_traits in the std namespace. // VC10 (VS2010) and later support C++ TR1 type_traits in the std::tr1 namespace. diff --git a/src/3rdparty/sqlite/sqlite3.c b/src/3rdparty/sqlite/sqlite3.c index 27a8d18..4ec799c 100644 --- a/src/3rdparty/sqlite/sqlite3.c +++ b/src/3rdparty/sqlite/sqlite3.c @@ -11052,7 +11052,8 @@ SQLITE_API int sqlite3_db_status( ** localtime_s(). */ #if !defined(HAVE_LOCALTIME_R) && !defined(HAVE_LOCALTIME_S) && \ - defined(_MSC_VER) && defined(_CRT_INSECURE_DEPRECATE) + defined(_MSC_VER) && defined(_CRT_INSECURE_DEPRECATE) && \ + !defined(QT_CRT_WDK) #define HAVE_LOCALTIME_S 1 #endif diff --git a/src/3rdparty/webkit/JavaScriptCore/config.h b/src/3rdparty/webkit/JavaScriptCore/config.h index acc162a..24abfc2 100644 --- a/src/3rdparty/webkit/JavaScriptCore/config.h +++ b/src/3rdparty/webkit/JavaScriptCore/config.h @@ -44,7 +44,7 @@ #define max max #define min min -#if !COMPILER(MSVC7_OR_LOWER) && !OS(WINCE) +#if !COMPILER(MSVC7_OR_LOWER) && !OS(WINCE) && !defined(QT_CRT_WDK) // We need to define this before the first #include of stdlib.h or it won't contain rand_s. #ifndef _CRT_RAND_S #define _CRT_RAND_S diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h b/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h index dcb1f6c..dab763e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h @@ -49,7 +49,7 @@ namespace WTF { inline void getLocalTime(const time_t* localTime, struct tm* localTM) { - #if COMPILER(MSVC7_OR_LOWER) || COMPILER(MINGW) || OS(WINCE) + #if COMPILER(MSVC7) || COMPILER(MINGW) || OS(WINCE) || defined(QT_CRT_WDK) *localTM = *localtime(localTime); #elif COMPILER(MSVC) localtime_s(localTM, localTime); diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.h b/src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.h index 62dbc49..aedc399 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.h @@ -24,7 +24,7 @@ #include "Platform.h" -#if (defined(__GLIBCXX__) && (__GLIBCXX__ >= 20070724) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && (_MSC_VER >= 1600)) +#if (defined(__GLIBCXX__) && (__GLIBCXX__ >= 20070724) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && (_MSC_VER >= 1600) && !defined(QT_CRT_WDK)) #include #endif @@ -166,7 +166,7 @@ namespace WTF { typedef T Type; }; -#if (defined(__GLIBCXX__) && (__GLIBCXX__ >= 20070724) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && (_MSC_VER >= 1600)) +#if (defined(__GLIBCXX__) && (__GLIBCXX__ >= 20070724) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && (_MSC_VER >= 1600) && !defined(QT_CRT_WDK)) // GCC's libstdc++ 20070724 and later supports C++ TR1 type_traits in the std namespace. // VC10 (VS2010) and later support C++ TR1 type_traits in the std::tr1 namespace. diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 283cb02..c580afc 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -91,6 +91,53 @@ _LIT(qt_symbianSystemInstallDir, "z:\\system\\install\\"); QT_BEGIN_NAMESPACE +#if defined(QT_CRT_WDK) + +class QCrtWrapper +{ +public: + typedef char ***(*CrtEnvironFunc)(); + + QCrtWrapper() + { + HMODULE module = GetModuleHandleA("msvcrt.dll"); + environImpl = reinterpret_cast(GetProcAddress(module, "__p__environ")); + } + + char **environ() + { + return *environImpl(); + } + +private: + CrtEnvironFunc environImpl; +}; + +char **_qEnviron() +{ + QCrtWrapper wrapper; + return wrapper.environ(); +} + +#else + +# ifdef Q_OS_MAC +# include +# define environ (*_NSGetEnviron()) +# elif defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN) + static char *qt_empty_environ[] = { 0 }; +# define environ qt_empty_environ +# elif !defined(Q_OS_WIN) + extern char **environ; +# endif + +char **_qEnviron() +{ + return environ; +} + +#endif + /*! \class QFlag @@ -2538,7 +2585,7 @@ void qFatal(const char *msg, ...) */ QByteArray qgetenv(const char *varName) { -#if defined(_MSC_VER) && _MSC_VER >= 1400 +#if defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(QT_CRT_WDK) size_t requiredSize = 0; QByteArray buffer; getenv_s(&requiredSize, 0, 0, varName); diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index b8f3bb0..403f6d0 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -2677,6 +2677,8 @@ QT_LICENSED_MODULE(DBus) # define QT_NO_PROCESS #endif +char **_qEnviron(); + QT_END_NAMESPACE QT_END_HEADER diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp index e48b727..175958a 100644 --- a/src/corelib/io/qfsfileengine_win.cpp +++ b/src/corelib/io/qfsfileengine_win.cpp @@ -86,6 +86,10 @@ typedef INT_PTR intptr_t; # define INVALID_FILE_ATTRIBUTES (DWORD (-1)) #endif +#ifndef PATH_MAX +#define PATH_MAX MAX_PATH +#endif + #if !defined(Q_OS_WINCE) # if !defined(REPARSE_DATA_BUFFER_HEADER_SIZE) typedef struct _REPARSE_DATA_BUFFER { diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index eb16b71..2461aae 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -2232,18 +2232,6 @@ bool QProcess::startDetached(const QString &program) return QProcessPrivate::startDetached(prog, args); } -QT_BEGIN_INCLUDE_NAMESPACE -#ifdef Q_OS_MAC -# include -# define environ (*_NSGetEnviron()) -#elif defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN) - static char *qt_empty_environ[] = { 0 }; -#define environ qt_empty_environ -#elif !defined(Q_OS_WIN) - extern char **environ; -#endif -QT_END_INCLUDE_NAMESPACE - /*! \since 4.1 @@ -2268,7 +2256,8 @@ QStringList QProcess::systemEnvironment() QStringList tmp; char *entry = 0; int count = 0; - while ((entry = environ[count++])) + char **entries = _qEnviron(); + while ((entry = entries[count++])) tmp << QString::fromLocal8Bit(entry); return tmp; } @@ -2293,7 +2282,8 @@ QProcessEnvironment QProcessEnvironment::systemEnvironment() { QProcessEnvironment env; const char *entry; - for (int count = 0; (entry = environ[count]); ++count) { + char **entries = _qEnviron(); + for (int count = 0; (entry = entries[count]); ++count) { const char *equal = strchr(entry, '='); if (!equal) continue; diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp index 4b0c6a4..4b67e98 100644 --- a/src/corelib/io/qtemporaryfile.cpp +++ b/src/corelib/io/qtemporaryfile.cpp @@ -134,8 +134,8 @@ static int _gettemp(char *path, int *doopen, int domkdir, int slen) errno = EINVAL; return 0; } -#if defined(Q_OS_WIN) && defined(_MSC_VER) && _MSC_VER >= 1400 - pid = _getpid(); +#if defined(Q_OS_WIN) + pid = GetCurrentProcessId(); #elif defined(Q_OS_VXWORKS) pid = (pid_t) taskIdCurrent; #else diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 726b9aa..822a18a 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -77,6 +77,10 @@ #include #endif +#if defined(_MSC_VER) && !defined(QT_CRT_WDK) +#define time_t __time64_t +#endif + QT_BEGIN_NAMESPACE enum { @@ -4031,7 +4035,7 @@ static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time) tzset(); tm res; brokenDown = localtime_r(&secsSince1Jan1970UTC, &res); -#elif defined(_MSC_VER) && _MSC_VER >= 1400 +#elif defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(QT_CRT_WDK) tm res; if (!_localtime64_s(&res, &secsSince1Jan1970UTC)) brokenDown = &res; @@ -4121,7 +4125,7 @@ static void localToUtc(QDate &date, QTime &time, int isdst) // use the reentrant version of gmtime() where available tm res; brokenDown = gmtime_r(&secsSince1Jan1970UTC, &res); -#elif defined(_MSC_VER) && _MSC_VER >= 1400 +#elif defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(QT_CRT_WDK) tm res; if (!_gmtime64_s(&res, &secsSince1Jan1970UTC)) brokenDown = &res; diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index 09c6d70..ca8fa60 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -2743,7 +2743,7 @@ static QString timeZone() return QString::fromWCharArray(info.StandardName); #elif defined(Q_OS_WIN) _tzset(); -# if defined(_MSC_VER) && _MSC_VER >= 1400 +# if defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(QT_CRT_WDK) size_t returnSize = 0; char timeZoneName[512]; if (_get_tzname(&returnSize, timeZoneName, 512, 1)) diff --git a/tools/qdoc3/cppcodemarker.cpp b/tools/qdoc3/cppcodemarker.cpp index 9591801..b3dc31a 100644 --- a/tools/qdoc3/cppcodemarker.cpp +++ b/tools/qdoc3/cppcodemarker.cpp @@ -49,6 +49,8 @@ #include "text.h" #include "tree.h" +#include + QT_BEGIN_NAMESPACE /*! -- 1.7.2.3.msysgit.0