summaryrefslogtreecommitdiffstats
path: root/src/corelib/global
Commit message (Collapse)AuthorAgeFilesLines
* Clean up WINVER, _WIN32_WINNT macros for MinGW.Friedemann Kleint2016-03-071-14/+6
| | | | | | | | | | | Define WINVER, _WIN32_WINNT as 0x501 (Windows XP) in qt_windows.h. Remove definitions of the same/lower versions and unneeded definitions in other places. Remove definition for Borland compiler. Task-number: QTBUG-51673 Change-Id: I2a344a7f7cf78b2afbf45dcdf8bf2a19b93f0a07 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* QNX: Fix logging of QtDebugMsg in slog2 backendKai Koehne2016-03-071-1/+1
| | | | | | | | | | | | | With the introduction of QtInfoMsg in commit ef6279fd we also changed the mapping of Qt to slog2 levels: QtInfoMsg now ends up as SLOG2_DEBUG1, instead of SLOG2_INFO. Anyhow, we didn't change the default buffer verbosity level accordingly. Task-number: QTBUG-51378 Change-Id: Ia464f9e5a31e19413902e877d4f2be0ba6d340db Reviewed-by: Dan Cape <dcape@qnx.com> Reviewed-by: Janne Koskinen <janne.p.koskinen@theqtcompany.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* Check if WINAPI_FAMILY_PC_APP is defined before using itOliver Wolff2016-03-041-0/+3
| | | | | | | | | | | Not all Windows compilers (e.g. MinGW 4.9.2) have WINAPI_FAMILY_PC_APP defined in their headers and report build failures in several Qt modules including QtActiveQt. This is fixed by defining the needed values before they are used. Task-number: QTBUG-49971 Change-Id: Ib7bac1fe07eb76c64d66fa152427918ee39a2eef Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
* Track target widget when wheel events are receivedGabriel de Dietrich2016-02-292-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This issue is reproducible on OS X when using a Magic Mouse or a combination of Magic Trackpad and regular mouse. In these cases it's possible to start a scrolling gesture on one widget and move the mouse cursor over another widget. Although we send the wheel event phase information, we never made any use of it. This means that a widget would start scrolling even though it never received a ScrollBegin event. In this patch, we make sure the scrolling cycle is respected and that once a widget starts scrolling, it'll be recieving all the wheel events until a ScrollEnd event reaches the application. For those input devices not supporting a proper phase cycle, we introduce a new (undocumented) phase value, NoScrollPhase. If the wheel event phase is NoScrollPhase, then we ignore the current scroll widget and proceed as usual. This value is the default for wheel events. It's up to the platform plugin to set the proper phase value according to the data received from the OS. Finally, we fix a few of QWheelEvent constructors to properly initialize the phase and source properties. Task-number: QTBUG-50199 Change-Id: I3773729a9c757e2d2fcc5100dcd79f0ed26cb808 Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
* Win: Prevent crash in qt_message_fatal()Kai Koehne2016-02-261-1/+2
| | | | | | | | | The source argument can be nullptr, e.g. if debug information has been stripped out. Task-number: QTBUG-51195 Change-Id: Ie229c82278c420200cad33c19e8c3f52ab7f12c3 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Search for libsystemd first, fall back to libsystemd-journalHeiko Becker2016-02-151-1/+4
| | | | | | | | | | | | | | systemd >= 209 merged the individual libraries libsystemd-journal, libsystemd-login, libsystemd-id128 and libsystemd-daemon into a single library, libsystemd. To ease the transition one could pass an option to its build to generate stub libraries and matching pkg-config files. With systemd >= 229 this option has now been removed, causing the build to fail when the journald option is enabled. Change-Id: I26670f207f1a9e79c16be5ce8c8a49353143c5ba Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Merge remote-tracking branch 'origin/5.6.0' into 5.6Liang Qi2016-02-151-5/+1
|\ | | | | | | Change-Id: I0b190005377a23a91da3563428e223b8a3b18333
| * Work around Clang < 3.7 integrated assembler bug PC-relative relocsThiago Macieira2016-02-021-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The qversiontagging.h inline assembly expands to: .long qt_version_tag@GOTPCREL Which, with GCC, Clang >= 3.7 and with the option -no-integrated-as in previous versions, produces the proper relocation (a R_X86_64_GOTPCREL). With Clang < 3.7, it instead produces a R_X86_64_32, which is unsuitable for use in shared libraries: 32-bit displacement is insufficiently wide and would produce linker errors like obj/qftp.o: requires dynamic R_X86_64_32 reloc against 'qt_version_tag' which may overflow at runtime; recompile with -fPIC Instead, force a 64-bit relocation (an R_X86_64_GOT64), which like the 32-bit version is simply an offset into the GOT of where the address of the symbol is stored. Task-number: QTBUG-50749 Change-Id: I7a9e11d7b64a4cc78e24ffff142e039c172b802c Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Deconfuse some heavy use of the preprocessor.Edward Welbourne2016-02-021-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One #if...#endif started in one function's body and ended in another's, which is worth remarking on in comments at both ends. A later #if...#else... opened blocks in both halves, that were closed just after their #endif, leading to simplistic brace-matching failure; so move that closing brace to inside both halves, so each half is brace-balanced and the function, as a whole, brace-balances simply. Commented on each #endif that was distant from its #if. Change-Id: I74d97b6dc4b291ec05053d299077a61cecf41ca1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | Correct usage of Apple-related #if-ery.Edward Welbourne2016-02-021-4/+4
|/ | | | | | | | As requested by sanity-bot. Change-Id: I8f6793a26f5cf600d4e6225ca219496cfbb25799 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Bump copyright year to 2016Kai Koehne2016-01-291-1/+1
| | | | | | | | | | Bump copyright year in tool output and user visible strings to 2016. Task-number: QTBUG-50578 Change-Id: I2f4aa9089c6672726f554cba7e6009b425d27683 Reviewed-by: Liang Qi <liang.qi@theqtcompany.com> Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com> Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
* QNX: Fix -developer-buildRafael Roquetto2016-01-221-4/+4
| | | | | | | | | | | | | | | | | | | | | | | -developer-build enables -Werror=undef, which uncovered a bug inside qcompilerdetection.h. According to the Dinkum headers, it is necessary to account for three different states concerning the values of the _HAS_* macros: 1. undefined 2. 0 3. 1 Therefore, it is necessary to check both whether it is defined and if it is not 0. Only checking whether a given macro is 0 will generate a trap by -Werror=undef. (__GLIBCXX__ is the sole exception). Change-Id: Ib95e485698ee38858a1671d930d7e960b75bb041 Reviewed-by: James McDonnell <jmcdonnell@qnx.com> Reviewed-by: Dan Cape <dcape@qnx.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix the use of R_X86_64_GOTPCREL on a 64-bit field: it should be 32-bitThiago Macieira2016-01-211-5/+7
| | | | | | | | | | | The ABI says that PC-relative displacements should be on 32-bit fields, even on 64-bit builds. For -mcmodel=large, it should use R_X86_64_GOT64 relocations, like 32-bit. Task-number: QTBUG-50537 Change-Id: I1041122c530b4f5bbaabffff142ade5b3cbfc4c5 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Doc: mention that Qt::AA_X11InitThreads isn't used anymoreDavid Faure2016-01-111-3/+1
| | | | | | | | Whether or not to call XInitThreads() doesn't apply since Qt-5.0's switch to XCB. Change-Id: I5f1e5e664a251c98af6357c87fc9a6bb03a46ce3 Reviewed-by: Martin Smith <martin.smith@theqtcompany.com> Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
* winrt: Use winsock2 API for hostname resolution on WinRT/WinPhoneOliver Wolff2016-01-052-53/+2
| | | | | | | | | | | | | | | That API has been available for WinRT and Windows Phone for some time now. By using it to get the machine name and for hostname resolution we can get rid of some winrt-only code and use qhostinfo_win.cpp on WinRT and Windows phone as well. Additionally the required capability was added to tst_qhostinfo so that this auto test can be run without any manual editing. Change-Id: I63fa5521bf8cdb0c919bd5a0100ea977c865622a Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* WinRT: Add camera button events on Windows PhoneSamuel Nevala2016-01-051-2/+2
| | | | | | | | | | | | | | Windows Phone 8.1 provides access to the camera button and press/release events get passed as Key_CameraFocus and Key_Camera. Unfortunately a release does not provide what has been pressed before, hence this information needs to be cached when the press happens. Done-with: Maurice Kalinowski<maurice.kalinowski@theqtcompany.com> Task-number: QTBUG-39115 Change-Id: I6ce58a1f07a6bf7183b8d99a26e5cd7b0d32d6db Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com> Reviewed-by: Samuel Nevala <samuel.nevala@intopalo.com> Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
* qprocessordetection.h: Fix detection of 32-bit ARMv8Thiago Macieira2015-12-211-20/+27
| | | | | | | | | | | | | | This is more future-proof. It fixes the detection of 32-bit on ARMv8-A processors since it uses the __ARM_ARCH macro that GCC and Clang define. For MSVC, we use _M_ARM, which also contains the architecture version. MSVC does not currently support ARMv8 code, but when it does, this commit should make the support automatic. I don't know which compiler defines __TARGET_ARM_ARCH, but support it too. Change-Id: I8de47ed6c7be4847b99bffff141c8ede54a849eb Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
* Q_UNIMPLEMENTED: remove explicit file, line and funcinfo informationMarc Mutz2015-12-071-1/+1
| | | | | | | | This information is already registered by the QMessageLogger ctor. Change-Id: Iac378777675f00ad5d07b938605484b1466aa5c5 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix overflow-checking additions and multiplication on MinGWMatt Hoosier2015-12-021-1/+1
| | | | | | | | | Intrinsics headers are associated with compilers, not OS's. This change fixes a broken MinGW build triggered by 29bc68cf169b8cf87d306a1c72e12eb9b6fbfce7. Change-Id: Ib9e4ea3e25bf49d38a754a246b9433bc078bbb18 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: Omit default argument in describing a function callTopi Reinio2015-11-301-1/+1
| | | | | | | | | | | | | | | QKeySequence::PortableText is the default value for argument passed to QKeySequence::toString(), and it doesn't need to be mentioned specifically in description for Qt::AA_MacDontSwapCtrlAndMeta enum value. Dropping the parameter shortens the text string, allows browser to better wrap the table text, and gets rid of the automatic horizontal scrollbar in online style. This improves readability for the entire table. Change-Id: I7051f5415a7a100b8c76f23b06b6cb9a2b0699ef Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
* Add support for the C++11 features fixed in MSVC 2015 Update 1Thiago Macieira2015-11-181-0/+7
| | | | | | | | | | This brings MSVC 2015 support to almost C++11 feature completion. Constexpr support still has one annoying bug, for which the fix is promised for Update 2. Change-Id: I92c2ee6638625c61e3a16690563434e32d853368 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Docs: Add a note clarifying that Q_MOVABLE_TYPE is not about move semanticsOlivier Goffart2015-11-131-1/+2
| | | | | Change-Id: Ib1fb9ac00c0437ed2312c46e3e97d7ece05ba8e8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Workaround part 2: don't use the version tagging symbols on AndroidThiago Macieira2015-11-041-1/+1
| | | | | | | | | | | | | | Commit d020e0781cf8647d87f7088350e40adf4f0cf8fe added a workaround to the QtCore build due to a qmake bug in handling the extra target on a Windows host. The workaround removed the tagging symbols from QtCore. This commit removes the using of those symbols from everywhere else. Task-number: QTBUG-49208 Change-Id: Idba8c29717f34c70a58fffff14133399f9f0b7f2 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com> Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Update high-DPI scaling enablers.Morten Johan Sørvig2015-11-042-3/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Make it possible to enable and disable both at the environment variable level and at the source code level. This applies to scaling done by Qt using display density information provided by the operating system. Disabling is done with a 'veto' system: both the environment and source code my prevent the other for enabling scaling. This covers use cases of 'my system does not provide correct display metrics' and 'my application needs access to display pixels', respectively. On the environment, scaling is now enabled with QT_AUTO_SCREEN_SCALE_FACTOR=1 and disabled with QT_AUTO_SCREEN_SCALE_FACTOR=0. In source code the corresponding application attributes are AA_EnableHighDpiScaling and AA_DisapleHighDpiScaling. Not setting any of these indicates 'no preference'. The global scale factor set by QT_SCALE_FACTOR is not affected by any if the disablers. Task-number: QTBUG-46615 Change-Id: If18607d4b56ace1914a710e5aa60b2f0968e0010 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
* Fix C++11 compiler detection for QNX.Rafael Roquetto2015-10-291-7/+9
| | | | | | | | | | 1. _HAS_DINKUM_CLIB is defined whenever a C header is included, even when Dinkum is disabled. 2. _HAS_* macros are always defined, as either 0 or 1. Change-Id: I727b854a6a733e2028e6facc327e264d0c4c9e90 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Workaround: don't create ELF version scripts for AndroidThiago Macieira2015-10-291-1/+1
| | | | | | | | | | | | | Somehow qmake doesn't add the correct rules for the Android makefiles, so the build fails when cross-compiling from Windows. The reason for that is unknown (could be related to that "qt_android_deps" config, but that isn't used anywhere in qmake or the buildsystem). This isn't likely to be a problem, since there are no global installs of Qt on Android. Change-Id: I1d0f78915b5942aab07cffff140f95ce32324030 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Move pointer size detection entirely to qprocessordetection.hThiago Macieira2015-10-263-23/+28
| | | | | | | | | | | | | | | | This commit removes the legacy ptrsize check, which was deficient because it did not work for multiarch systems (when we supported fat OS X binaries) and did not work for bootstrap builds because the size might be different when cross-compiling. Instead, let's rely on the predefined preprocessor macros to detect correctly. As a nice side-effect, this fixes 64-bit Android builds cross-compiled from Windows. Task-number: QTBUG-48932 Change-Id: I1d0f78915b5942aab07cffff140f9a52b9342f23 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
* Add an automatic use of the ELF-versioned QtCore symbolThiago Macieira2015-10-203-1/+89
| | | | | | | | | | | | | | | | | | | | | | See the comment in the header for an explanation of what it does. This trick is enabled for every single .o that is compiled, unless QT_NO_VERSION_TAGGING is defined. The assembly expands to a COMDAT section, which is mergeable by the linker, so only one copy of the output is present in the ELF module. This is enabled only for Linux and x86 / x86-64 / x32 due to the requirement of writing assembly and relocations, so it needs to be tested on each platform, which I have not done. It might work on Solaris/x86, but again it requires testing. Support for other architectures requires different assembly output and relocations and can be added as needed, but they are not as important since this trick is has most value on desktop systems. Change-Id: I049a653beeb5454c9539ffff13e3ff5782a8cb86 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Rex Dieter <rdieter@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Update qversiontagging.cpp not to use too much assembler magicThiago Macieira2015-10-202-57/+50
| | | | | | | | | | | | | | | The only reason I had used them in the first place was because C preprocessor macros cannot call themselves recursively. But the magic was too magic and caused issues with some builds, so let's choose the safer option. Anyway, this solution now works for all ELF architectures, independent of the processor, whereas previously it was restricted to x86 and Linux/ FreeBSD. However, this does not apply to the assembly in qversiontagging.h. Change-Id: I42e7ef1a481840699a8dffff1404f032fc5cacb8 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* winrt: use correct winapi family defines in mkspecs and system detectionAndrew Knight2015-10-201-1/+1
| | | | | | | | WINAPI_FAMILY_APP is deprecated, so use WINAPI_FAMILY_PC_APP instead. Also, open up the phone partition for use on MSVC2015. Change-Id: I7476d71c31395b2914f5a1439e8088341976bf2f Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* Move the official Qt version from qglobal.h to .qmake.confThiago Macieira2015-10-141-2/+2
| | | | | | | | | It's easier to parse than qglobal.h. The objective is actually to have macros with parts of the version number, so the major or minor numbers could be used in other preprocessor macros. Change-Id: I42e7ef1a481840699a8dffff1404eda1dd5c308d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2015-10-131-0/+3
|\ | | | | | | | | | | | | | | | | Conflicts: src/network/socket/qabstractsocket.cpp src/plugins/platforms/winrt/qwinrtscreen.cpp src/sql/drivers/mysql/qsql_mysql.cpp Change-Id: Ifb73623d09f53340ee5e10283f1f86b580998902
| * ICC on Windows: Disable ref-qualified member functions in MSVC <= 2013Thiago Macieira2015-09-231-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | Like MSVC, ICC on Windows in debug mode always makes calls to dllexported functions instead of inlining them. Since MSVC 2013 doesn't know about ref-qualification of member functions, this creates an incompatibility between DLL creation and DLL use. Task-number: QTBUG-48349 Change-Id: I42e7ef1a481840699a8dffff14053b594810fb42 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Add static assert checking QT_POINTER_SIZE.Friedemann Kleint2015-10-071-1/+3
| | | | | | | | | | | | | | | | | | | | QT_POINTER_SIZE is determined by the configure test ptrsize, which has been observed to fail due to unrelated build issues. Add a check to verify the correct size. Task-number: QTBUG-48525 Change-Id: I4fcb9761b54370b39c0d3e1e0a6d0aa3c0223f40 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | Add missing "We mean it" comments to private headers.Friedemann Kleint2015-10-051-0/+11
| | | | | | | | | | Change-Id: If81a5e1db0fe93377e7cc54a78b01c50b44abe57 Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
* | Remove extra semicolon in declaration of QMacAutoReleasePoolTor Arne Vestbø2015-10-021-1/+1
| | | | | | | | | | Change-Id: Ie7f92fae5f80fc2a8b4dae58f6688ea47dbcb95b Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Merge "Merge remote-tracking branch 'origin/5.5' into 5.6" into refs/staging/5.6Liang Qi2015-10-021-0/+11
|\ \
| * | Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2015-10-021-0/+11
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: qmake/doc/src/qmake-manual.qdoc src/corelib/tools/qstring.h src/gui/image/qimagereader.cpp src/network/access/qnetworkaccessmanager.cpp src/tools/qdoc/doc/examples/examples.qdoc src/widgets/accessible/qaccessiblewidgetfactory_p.h src/widgets/doc/qtwidgets.qdocconf Change-Id: I8fae62283aebefe24e5ca4b4abd97386560c0fcb
| | * Doc: Added enums in qnamespace.qdocNico Vertriest2015-09-041-0/+11
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-43810 Change-Id: Ib756382833fabecaae2526a413d046646f3e443e Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Martin Smith <martin.smith@digia.com>
* | | Doc: replace \target with \keyword if at start of pageNico Vertriest2015-10-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A \target whose purpose is to link to the top of a page (and not to a section within a page) works better as a \keyword, because \target generates a new html anchor which, in this case, is not tied to any title element on the page. A \keyword links to the page itself, as expected. Task-number: QTBUG-48482 Change-Id: I957551edd0eb7e665358d04b37dab41e2686b851 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | | Doc: Update obsolete URLs to external documentationTopi Reinio2015-10-021-1/+1
| | | | | | | | | | | | | | | | | | | | | Change-Id: I199de83971701c14e903e712fcdcd29aaff95c6d Task-number: QTBUG-48420 Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com> Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
* | | Doc: Use correct image in Qt::BusyCursor documentationTopi Reinio2015-10-021-1/+1
|/ / | | | | | | | | | | Change-Id: I54e832808a37d46f5520c57ceb2a270685ed3f94 Task-number: QTBUG-48445 Reviewed-by: Martin Smith <martin.smith@digia.com>
* | Remove QT_WARNING_DISABLE_GCC for ClangThiago Macieira2015-09-251-1/+1
| | | | | | | | | | | | | | | | There's QT_WARNING_DISABLE_CLANG for when a warning applies to a Clang build. Change-Id: I42e7ef1a481840699a8dffff1406ac36b6a6eac3 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* | Add code to perform overflow-checking additions and multiplicationThiago Macieira2015-09-232-0/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most processors have carry flags which they set on addition overflow, so it's a good idea to access them whenever possible. Most of them also have widening multiply instructions that can be used to detect overflow of the non-widening version. Tested to compile on: Architecture Compiler x86 GCC 4.9, GCC 5*, Clang 3.6*, ICC 16 beta x86-64 GCC 4.9, GCC 5*, Clang 3.6*, ICC 16 beta x86-64 ILP32 GCC 4.9, GCC 5*, Clang 3.6* IA-64 LP64 GCC 4.8 ARMv7-A GCC 4.9, Clang 3.6* AArch64 Clang 3.6* MIPS GCC 4.9, Clang 3.6* MIPS64 GCC 4.9, Clang 3.6* PowerPC GCC 4.9, Clang 3.6* PowerPC 64 GCC 4.9, Clang 3.6* SPARC Clang 3.6* SPARCv9 Clang 3.6* [*] supports the intrinsics If the compiler does not offer a way to detect an overflow, we do it by hand. For unsigned additions, that's easy, since the C++ language specifies the behavior of the overflow. That's also the reason why this code is implemented only for unsigned integers. For the multiplication, if the compiler does not support widening multiplications, we do it with a division instead. This is necessary for GCC < 4.5 and compilers not compatible with GCC or MSVC. Change-Id: I049a653beeb5454c9539ffff13e637de0f1338c1 Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com> Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Clean up some Apple-related includes and declarations.Jake Petroules2015-09-221-23/+0
| | | | | | | | | | Change-Id: I92db9691c2243ae72ecd4e11dd4640afaf4bf822 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
* | Fix QtCore compilation with clangThiago Macieira2015-09-212-6/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The .altmacro is not supported with Clang's integrated assembly. The worst part is that I had this fixed, but apparently I never pushed the update to Gerrit and then we staged the old version. This commit brings back the fixes. Incidentally, it also makes things work with freebsd-clang. Change-Id: Id2a5d90d07d7ee470fcb9ad9696a9a0f9ced7ea7 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Use the proper macro to detect the compiler as part of the NDKAleix Pol2015-09-151-1/+1
| | | | | | | | | | | | | | | | | | | | The correct macros can be easily checked by running: .../arm-linux-androideabi-gcc -E -dM - < /dev/null | grep -i ANDR Otherwise we're just relying on the user to set up explicitly the toolchain to target Android Change-Id: I7b68521f43031c13da99b07626360d0702bff4ca Reviewed-by: BogDan Vatra <bogdan@kde.org>
* | Add a qt_version_tag symbol to QtCore that uses ELF versionsThiago Macieira2015-09-132-1/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This symbol will exist with different ELF versions, allowing us to know which version of Qt a given library or application was linked against. When this symbol gets used, automatic packaging tools will extract the dependency. The trick here is that the application uses qt_version_tag without knowing which version is current, but the linker resolves it to the current version and records that. For example, if this were used with Qt 5.5, RPM's find-requires on an application using QtCore would print: libQt5Core.so.5()(64bit) libQt5Core.so.5(Qt_5.5)(64bit) libQt5Core.so.5(Qt_5)(64bit) Whereas find-provides on QtCore would print: libQt5Core.so.5()(64bit) libQt5Core.so.5(libQt5Core.so.5)(64bit) libQt5Core.so.5(Qt_5.0)(64bit) libQt5Core.so.5(Qt_5.1)(64bit) libQt5Core.so.5(Qt_5.2)(64bit) libQt5Core.so.5(Qt_5.3)(64bit) libQt5Core.so.5(Qt_5.4)(64bit) libQt5Core.so.5(Qt_5.5)(64bit) libQt5Core.so.5(Qt_5)(64bit) Therefore, automatic dependency resolution would have the information it needs to conclude that the application requires Qt >= 5.5. Change-Id: I049a653beeb5454c9539ffff13e3fec9aeb50197 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Fix QSysInfo::windowsVersion() for good.Jake Petroules2015-09-061-83/+56
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-38439 Task-number: QTBUG-43444 Change-Id: I9870200806f2ca378b0977dee0674d89e2c6836c Reviewed-by: Andrew Knight <andrew.knight@intopalo.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge "Merge remote-tracking branch 'origin/5.5' into 5.6" into refs/staging/5.6Simon Hausmann2015-08-271-0/+1
|\ \