summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qcompilerdetection.h
Commit message (Collapse)AuthorAgeFilesLines
* Add list of C++11 features supported by MSVC 2013Thiago Macieira2013-11-211-0/+14
| | | | | | | | | | Task-number: QTBUG-34705 Change-Id: I22caecdf30c417d323fbc80e7a1fd66e4253cec4 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Yuchen Deng <loaden@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* qcompilerdetection.h: add Q_COMPILER_UNIFORM_INITMarc Mutz2013-11-151-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Up to now, the feature classe Uniform Initialization was subsumed by the Q_COMPILER_INITIALIZER_LISTS flag together with support for std::initializer_list. This caused at least two problems: 1. On QNX, the standard libray does not ship <initializer_list>, even though the compiler (a GCC 4.6, IIRC) supports it. But since there was only one Q_COMPILER flag for both, support for the compiler-only part of the feature had to be disabled, too. 2. MSVC 2013 supports initializer lists, but has a bug that renders full uniform initialization support, as required for QUuid, useless. By splitting the feature into two, we can separate them better, and do so in QUuid, which is the only class that currently takes advantage of uniform initialization (to provide constexpr constructors). Since Q_COMPILER_INITIALIZER_LISTS worked as a flag for uniform initialization so far, with the two known exceptions above, UNIFORM_INIT is defined whenever INITIALIZER_LIST is, except that I don't revert UNIFORM_INIT on QNX as I do for INITIALIZER_LISTS and that I expect the MSVC 2013 features to set INITIALIZER_LIST, but not UNIFORM_INIT. Task-number: QTBUG-34705 Change-Id: I81916e950a0f3aab3de7977e0326d2de3d31b14c Reviewed-by: Yuchen Deng <loaden@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Move the Apple Clang specific features outside of the C++11 sectionThiago Macieira2013-10-161-8/+7
| | | | | | | | | Those are not related to C++11, so move them to the Clang detection block. Change-Id: I80b298e1df5f74a865d743625895e0f01cb5fd6b Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Remove compatibility support for sealed/override in C++/CLIThiago Macieira2013-10-151-0/+5
| | | | | | | | | | | | | | | Those features have slightly different behavior as the C++11 keywords that MSVC 2012 officially supports. When compiling in C++/CLI mode, the "virtual" keyword must be present too. We have not actually tested whether the official MSVC 2012 support for C++/CLI still requires the virtual keyword. This is just going on the assumption that C++/CLI follows the C++11 spec. Task-number: QTBUG-34019 Change-Id: I148a443bfbff985033c555f5a9cfcd5be7f5f106 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Add Mac type conversion functions to QtCoreMorten Johan Sørvig2013-09-211-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New API: static QString QString::fromCFString(CFStringRef string); CFStringRef QString::toCFString() const; static QString QString::fromNSString(const NSString *string); NSString *QString::toNSString() const; static QUrl QUrl::fromCFURL(CFURLRef url); CFURLRef QUrl::toCFURL() const; static QUrl QUrl::fromNSURL(const NSURL *url); NSURL * QUrl::toNSURL() const; Add Q_OS_MAC-protected function declarations to header files, add implementation to _mm files. CF and NS types are forward-declared in the header files to avoid including the CoreFoundation and Foundation headers. This prevents accidental use of native types in application code. Add helper macros for forward- declaration to qglobal.h Add cf_returns_retained/ns_returns_autoreleased attributes to toCFString() and toNSURL(). These attributes assists the clang static analyzer. Add Q_DECL_ helper macros to qcompilerdetection.h. Add test functions (in _mac.mm files) to the QString and QUrl tests. Split out the test class declarations into a separate headers files. Change-Id: I60fd5e93f042316196284c3db0595835fe8c4ad4 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* ICC 13.0 supports atomicsThiago Macieira2013-09-141-0/+1
| | | | | | | See http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler Change-Id: I45ba6aa640f82df4d06fd4412264892bfd58ffc3 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Remove the empty definition of Q_PACKEDThiago Macieira2013-09-131-3/+0
| | | | | | | | | | Structs defined with Q_PACKED *need* to be packed in all platforms. Having an empty define means errors might go unnoticed for a long time. Change-Id: I9c388358fed27a8e018465f05375e4bbbee3484c Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Remove Q_NO_PACKED_REFERENCEThiago Macieira2013-09-131-2/+0
| | | | | | | | Leftover. It's not used anywhere. Change-Id: I023a390d84c9ed5dacd2699145f183e8a2317153 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Add detection for C++11 explicit conversion operators.Marcel Krems2013-09-091-0/+5
| | | | | Change-Id: Ib33049b538f072079c0f840bc10adf0899217199 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add C++11 features supported by the Intel Compiler 14.0Thiago Macieira2013-09-061-0/+9
| | | | | | Change-Id: Ib9789223d487c29c5ce0830afa1f74b66ea6adfe Reviewed-by: Guillermo A. Amaral <gamaral@kdab.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* ICC supports __builtin_unreachable(), so use itThiago Macieira2013-09-051-1/+1
| | | | | | | __assume(0) is not strong enough in some cases. Change-Id: Ifac42a58af891d636e3e0b2fa476da787bd0d1ce Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-141-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/macx-xcode/Info.plist.app mkspecs/macx-xcode/Info.plist.lib qmake/doc/qmake.qdocconf src/corelib/global/qglobal.h tests/auto/other/exceptionsafety/exceptionsafety.pro tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp Change-Id: I3c769a4a82dc2e99a12c69123fbf17613fd2ac2a
| * Fix clang detection of thread_local variablesThiago Macieira2013-08-061-1/+1
| | | | | | | | | | | | | | | | The "0" must have been added because there was no __has_feature for the feature back in the day. Now it exists. Change-Id: I50f0544ae82a8be54a8d26da400e31c1906dad9e Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Merge branch 'stable' into devSergio Ahumada2013-07-111-1/+1
|\| | | | | | | | | | | | | | | | | | | Conflicts: qmake/generators/mac/pbuilder_pbx.cpp src/corelib/json/qjsonwriter.cpp src/corelib/kernel/qeventdispatcher_blackberry.cpp src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm Change-Id: I24df576c4cbd18fa51b03122f71e32bb83b9028f
| * Fix win32-icc build: _CHAR16T is not an indication of C++11 supportThiago Macieira2013-06-261-1/+1
| | | | | | | | | | | | | | | | | | | | The macro comes from MSVC's yvals.h header and it actually indicates absence of C++11 support in MSVC. It is defined if _HAS_CHAR16_T_LANGUAGE_SUPPORT isn't defined, which is a C++11 feature. Task-number: QTBUG-31701 Change-Id: I155b8e764f786e95a08de660f70094b2bee38937 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-05-231-1/+5
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qdatastream.cpp src/corelib/io/qdatastream.h src/corelib/json/qjsonwriter.cpp src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/xcb/qxcbkeyboard.cpp Change-Id: I46fef1455f5a9f2ce1ec394a3c65881093c51b62
| * Defer enabling std::atomic on GCC until GCC 4.7Thiago Macieira2013-05-101-1/+5
| | | | | | | | | | | | | | | | | | | | The implementation that GCC came with from 4.4 to 4.6 used external locks for most platforms, other than x86. It's unsuitable to be called "atomic" at all. More importantly, it's not behaviour-compatible with Qt's own QBasicAtomic classes. Change-Id: I92a0beab58504e6bd7cd236d358fef905c69821c Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Sanitize QT_COMPILER_SUPPORTS_xxx in qcompilerdetection.hTor Arne Vestbø2013-05-101-0/+22
|/ | | | | | | | | | | | | | | | | ... instead of scoping the defines in qconfig.h, which relied on the Q_PROCESSOR_xxx defines and meant that we had to include qconfig.h after qprocessordetection.h, which added a whole bunch of other dependency issues. We now let configure write QT_COMPILER_SUPPORTS_xxx to qconfig.h as before, without any scoping, and then undefine the ones that don't apply for the given processor. This means we need to include qprocessordetection.h before qcompilerdetection.h in qglobal.h, but the former does not depend on the latter, so this should be fine. Change-Id: If00c00d405463e9626fa0f7f5e6b17f68778904f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Oops: bugfix support for ref qualifiers in GCC 4.8.1Thiago Macieira2013-05-011-1/+1
| | | | | | | | 51ee309a7946f5377e26da23ae52171711e59461 introduced this check, but it was supposed to be >= (it's available in 4.8.1, not after 4.8.1) Change-Id: Id993b128de5c3500684833aea8ef556b31aac5f2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Mark that GCC 4.8.1 has support for C++11 member reference qualifiersThiago Macieira2013-04-201-0/+4
| | | | | | | | | | | | | This also marks it feature-complete for C++11 (at least, language features). See http://gcc.gnu.org/gcc-4.8/cxx0x_status.html and http://gcc.gnu.org/projects/cxx0x.html. Support for the C++11 features in the Standard Library is still incomplete, but we don't try to detect those features anyway (see http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011). Change-Id: I55702ef48f757b536ebbf17e921442ff5bfc29f8 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-03-061-0/+1
|\ | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/qnx/qqnxscreen.cpp src/plugins/platforms/windows/qwindowsdialoghelpers.cpp Change-Id: Ib64f21c077b54f2291d19187590bfe869b98477a
| * Silence warning about an unused variable in Q_ASSUME.Jędrzej Nowacki2013-03-061-0/+1
| | | | | | | | | | Change-Id: Ia7dd537d1f0dadb1dc41b8123fda0da82e83598b Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Fix build with older Clang versions without __has_extensionTor Arne Vestbø2013-03-051-0/+4
| | | | | | | | | | Change-Id: I505d3e4ad2fcd56ee229935d8543811a43923273 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add Q_DECL_UNUSED, marking functions or variables unusedThiago Macieira2013-02-121-0/+4
|/ | | | | | | It's similar to Q_UNUSED, but this is to be added in the declaration Change-Id: I2f664129fb1f34f7913ef371d45c2c0fec958174 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Protect Q_UNREACHABLE and Q_ASSUME by Q_ASSERT.Jędrzej Nowacki2013-01-101-12/+25
| | | | | | | | | Both Q_UNREACHABLE and Q_ASSUME with an invalid condition can produce really weird side effects and crashes. Change-Id: I4d808c705ae98388ef5853e6539b70bd5e5ad34b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Define Q_COMPILER_AUTO_FUNCTION for MVSCThiago Macieira2013-01-081-0/+1
| | | | | | | | | This definition was missing. It's clear MSVC supports this feature because it has been in use in qtconcurrentrun.h under an #ifdef Q_COMPILER_DECLTYPE, which is defined for MSVC. Change-Id: Id76198b2be8bba13fd00c65d6d4f73d3ef601449 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Disable Q_COMPILER_RVALUE_REFS on QNXRafael Roquetto2013-01-041-0/+3
| | | | | | | std::forward and std::move are not yet supported by the NDK. Change-Id: I1df1b5e88717c0d27a280862b98eb68262927f2b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove redundant Q_OS_BLACKBERRY define check.Rafael Roquetto2013-01-041-2/+2
| | | | | | | Q_OS_QNX is always implied by Q_OS_BLACKBERRY Change-Id: Ic07a967ab9a45b3c6c088aa8399bab823b9a413e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add the GCC 4.8 C++11 feature listThiago Macieira2012-11-101-0/+7
| | | | | | | | | This list is current at the time of writing. Since GCC 4.8 hasn't finished development, it may still change before the final 4.8.0 release. Change-Id: Ie4a6809bc6680cafcdd0c7a6a2fd6f8be790c8d2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* throw() is C++, so don't use it in C modeThiago Macieira2012-09-141-1/+3
| | | | | | | | Q_DECL_NOTHROW is used by qVersion(), which can be extern "C". Change-Id: If71f3bc3a0df3e8321237e5ac9f3bea82380c1e4 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Add support for the Intel Composer XE 2013.Thiago Macieira2012-09-081-0/+6
| | | | | | | ICC 13.0 adds some new C++11 features that we can now support. Change-Id: Ia870a3bb0172ff124983725300e8f9bf2e325ec6 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* qcompilerdetection.h: set Q_DECL_OVERRIDE/Q_DECL_FINAL for 2005 <= MSVC <= 2010Marc Mutz2012-08-271-3/+18
| | | | | | | | | This enables Q_DECL_FINAL and Q_DECL_OVERRIDE backed by VC's non-standard extensions from VC 2005 on. VC 2012 will support the standard-compliant version, so use that there. Change-Id: I96874fe3d36fcaa283d2d1f53d5eb6825e55f259 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QtGlobal: remove Q_DECL_FINAL_CLASSMarc Mutz2012-08-261-6/+0
| | | | | | | | | | | Now that qvariant_p.h's HasIsNullMethod check is fixed so that it doesn't require Q_COMPILER_DECLTYPE anymore to be able to deal with final classes, there's no point in distinguishing Q_DECL_FINAL and Q_DECL_FINAL_CLASS anymore, so remove the latter. Change-Id: I31de5b63e7d2e44171a13e928997c946d93e05c9 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* qcompilerdetection.h: add MSVC 2012 featuresMarc Mutz2012-08-261-0/+7
| | | | | | | | These are taken from the table at http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx Change-Id: Ifd2f88ca5d92092a6a025bef3da36fde0a802a66 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* qcompilerdetection.h: stream-line MSVC feature detectionMarc Mutz2012-08-261-6/+9
| | | | | | | | | | | | | | | | | Reformat the MSVC feature detection to be similar to other compilers, ie. 1. Inside the C++11 features section instead of where the compilers are detected 2. In one block for the compiler, with sub-blocks for the version. However, it's now not 100% compatible with the previous version, since Q_CC_INTEL is now explicitly excluded while before it was implicitly included in the MSVC case. I have no idea whether that matters, since Q_CC_INTEL is handled for itself further up already. Change-Id: Id9e8da0a5394ad5643bcb29493f14bc6e8264c13 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Try to work around GCC 4.6's noexcept bugs, againThiago Macieira2012-08-211-6/+3
| | | | | | | | | | | | | | | | Commit 7315296e9c94c38c842728aed199ac286a3ef174 blacklisted GCC 4.6.0 and 4.6.1 on the grounds that the bug regarding noexcept was fixed in 4.6.2. However, we have evidence of the issue remaining in 4.6.3, so it looks like it was not the issue that the GCC team fixed. For that reason, declare noexcept support in GCC 4.6 fatally broken and enable it only for 4.7. It has been working fine for a month for me on 4.7.1. Change-Id: Ic5a542235867f20657db12e0e809b83522dc7d23 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Disable C++11 noexcept support in GCC 4.6.0 and 4.6.1Thiago Macieira2012-08-201-0/+5
| | | | | | | | See report: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50309 Change-Id: I5ab3ab1dea42b03ea22dbfbe5f7039c537dabd33 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Q_DECL_NOTHROW: stronger and more widely available version of Q_DECL_NOEXCEPTMarc Mutz2012-08-071-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 1adca807 defined Q_DECL_NOEXCEPT to be the same as throw() for the Microsoft compiler. However, the two are not equivalent: - C++11 noexcept is defined to call std::terminate() if a noexcept function nevertheless encounters an exception. - MSVC throw() has essentially undefined behaviour in this situation: http://msdn.microsoft.com/en-us/library/wfa0edys%28v=vs.100%29 "Due to code optimizations that might be performed by the C++ compiler [...] if a function does throw an exception, the program may not execute correctly." So define two macros: 1. Q_DECL_NOEXCEPT/Q_DECL_NOEXCEPT_EXPR always have C++11 behaviour. This is expected to be the more efficient implementation if the function can actually throw. 2. Q_DECL_NOTHROW means that the function gives the nothrow guarantee. It is stronger than noexcept, but not all functions that can be marked Q_DECL_NOEXCEPT can be marked Q_DECL_NOTHROW. In general Q_DECL_NOTHROW functions need to use a try/catch block in order to prevent exceptions from leaving the functions, unless you can proove that none of the operations can throw. For the caller, both macros are equivalent: it can be relied on that no exception leaves the function. Change-Id: I32f822a82e06a31cb71d38db438387aee5ec3334 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* Remove extra Q_COMPILER_xxx defines from the MSVC section.Thiago Macieira2012-08-061-11/+0
| | | | | | | | Those are defined below, after the list that describes the macros and the papers. Change-Id: I1f2df0e33c84eb17ebbb0147662f560defed182c Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* MSVC's throw() behaviour matches the C++11 noexcept, so use itThiago Macieira2012-08-061-1/+5
| | | | | | | | | | | | This allows code using methods marked Q_DECL_NOEXCEPT to benefit from optimisations before MSVC supports the C++11 keyword. Even MSVC 2012 doesn't have it yet. Using throw() in other compilers is not a good idea because they might actually be implementing the C++ standard -- which is broken. Change-Id: Id07ab4fe40a641583d5285d5abb536998bc419ba Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* QNX: QtGlobal: compile as a C header againMarc Mutz2012-07-091-1/+3
| | | | | | | | | | | <utility> is a C++ header, only execute the check for the Dinkumware standard library if we're compiling under a C++ compiler. Change-Id: I1b24e76f20bfc03b70a330f9da96b4f815106e61 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QNX: fix compilation with C++11 enabledMarc Mutz2012-07-031-0/+12
| | | | | | | | | | | | | | | | | | | | QNX uses GCC, but by default not libstdc++ as the standard library, but 'libcpp', a Dinkumware-derived implementation that doesn't sport many of the C++11 features, yet. Thus, the compiler detection sets Q_COMPILER_INITIALIZER_LIST, which is true, in a way, but we're lacking stdlib support, so the next \#include <initializer_list> will fail. So, simply don't define Q_COMPILER_INITIALIZER_LIST if we're on QNX and detect a Dinkumware signature (taken from Boost.Config). This is a hot-fix. I'm also preparing a more comprehensive solution (qstdlibdetection.h). Change-Id: Ieeb147251c2935517faba61f75d1580a9e1649c4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Add detection for C++11 noexceptThiago Macieira2012-06-291-0/+13
| | | | | | | | | | | | | | | | | The Q_COMPILER_NOEXCEPT feature indicates whether this compiler has support for noexcept. Note that the GCC C++11 status page does not list this feature, but investigation into the source code as well as testing reveals it's supported since GCC 4.6. Also add Q_DECL_NOEXCEPT, to be used to declare that a function throws no exceptions, and Q_DECL_NOEXCEPT_EXPR(x), which declares that the function throws no exceptions if x evaluates to true. In C++98 mode, these macros expand to empty -- the old C++98 and C++03 exception specification is deprecated and considered harmful. Change-Id: Ic84901d13eceb06dcc7f025a4b7fc8b250769be9 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Add qMove macro to support std::moveOlivier Goffart2012-06-201-0/+6
| | | | | Change-Id: I373e07f479c11b172dab35ed7e5b62724aa50a1a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Clean up some QT_HAVE_xxx macros in qcompilerdetection.hThiago Macieira2012-05-181-9/+0
| | | | | | | | | | | | | | We no longer have code doing MMX or 3dNow! on Qt 5, so nothing defines those macros. If nothing defines them, we don't need to undef them. Note that the SSE case is a mislabel: the old "SSE" code on Qt 4 wasn't real SSE, it was MMX with some instructions added at the same time as SSE was added. It's MMX that Windows 64 doesn't support. As for QT_HAVE_ARMV6, this macro is replaced by the sub-arch detection in qprocessordetection.h. Change-Id: Ic3b00e1533e6b4cea32ba7824233de0a5c0fb32b Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Split Q_COMPILER_DEFAULT_DELETE_MEMBERSBradley T. Hughes2012-05-151-6/+23
| | | | | | | | | | | | | | | | Based on reviewer comments on https://codereview.qt-project.org/#change,25992, split Q_COMPILER_DEFAULT_DELETE_MEMBERS into Q_COMPILER_DEFAULT_MEMBERS and Q_COMPILER_DELETE_MEMBERS. Clang provides 2 separate feature checks for these, all other compilers always define both. Keep the Q_COMPILER_DEFAULT_DELETE_MEMBERS define, though, for any existing code that may be using it. Change-Id: I8969e10989c776a822da153152cfecb99dda8cb9 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* clang: Use __has_feature() to detect C++11 featuresBradley T. Hughes2012-05-141-21/+74
| | | | | | | | | | | | | | Apple's clang version is often reported as the next official clang version, but Apple clang does not support all the features that the final official clang does. Instead of using version based feature detection, use the __has_feature() built-in instead, so that we correctly #define the various Q_COMPILER_* macros. Task-number: QTBUG-25554 Change-Id: I2195401dbf6cd8574c30aa1bd6f7cf1cf537dae7 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Avoid macro re-definition warning for QT_NO_EXCEPTIONSStephen Kelly2012-05-021-1/+3
| | | | | Change-Id: I0c4b2d00dd567af17f22b733b93032ff1056fcbd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>