summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qcompilerdetection.h
Commit message (Collapse)AuthorAgeFilesLines
* Fix detection of C++11 Unicode strings with icl.exeThiago Macieira2014-12-201-2/+4
| | | | | | | | | | | | Even though the compiler supports it, the MSVC headers might do something wrong and make compilation fail later due to attempting to overload unsigned short with char16_t. The _CHAR16_T definition comes from <cstddef>, so include that instead of <stddef.h> in C++ mode. Change-Id: Ifaeb1c92bde2db4ed4129507462391904afd6510 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Unbreak the build with the Intel compiler on WindowsThiago Macieira2014-12-201-1/+11
| | | | | | | | icl.exe behaves like cl.exe (MSVC), so we should use the MSVC-style of __pragma instead of _Pragma. Change-Id: Ieee740c430589c3bb1b964138f8bf7f58b8d2892 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Remove Q_NO_USING_KEYWORDThiago Macieira2014-12-201-12/+0
| | | | | | | | | | | | | | | | | | | There's a lot of code now requiring it. Any compiler that doesn't support the keyword is too old for Qt now. The last time anyone asked about this macro was for QTBUG-27393 and we don't know which compiler that was. As a necessity, this patch contains a reversal of a0c3a57aed5cde37017733e7cf5e41cc6a1174aa [ChangeLog][Compiler Specific Changes] Qt 5.5 now unconditionally uses the "using" keyword. Compilers that do not support this keyword are deprecated and will not be able to build Qt. Previous versions of Qt may or may not compile, as no testing was done to ensure it worked. Change-Id: Ief042f34aba555a095d1f342a0ee7ee9feadf42d Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into devSimon Hausmann2014-12-181-6/+6
|\ | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qglobal.h src/platformsupport/platformcompositor/qopenglcompositor.cpp src/platformsupport/platformcompositor/qopenglcompositorbackingstore.cpp tests/auto/gui/kernel/qwindow/tst_qwindow.cpp Change-Id: I5422868500be695584a496dbbbc719d146bc572d
| * Fix the Apple build version numbers for ClangThiago Macieira2014-12-121-6/+6
| | | | | | | | | | | | | | | | A bunch of zeroes were missing. And not to the left. Task-number: QTBUG-43279 Change-Id: I1a710cf572099547b2ade7b2574a7e0a61649758 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
* | Add the C++11 features supported by Visual Studio 2015Thiago Macieira2014-12-131-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tested with the November 2014 Preview. There are three C++11 features that aren't supported as of MSVC2015: - attributes - constexpr - uniform initialization Microsoft recognizes that constexpr support in this compiler is partial, so we don't enable it yet. Attributes are not implemented at all. As for uniform initialization, Microsoft's feature list says initalizer_list is supported, but we still see compile errors trying to initialize arrays in constructor initialization lists. Change-Id: Id686ccb6b4b2ecd63f16d308552174db1f05f2c5 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Add macros for enabling/disabling warningsThiago Macieira2014-12-031-1/+45
| | | | | | | | | | | | | | | | | | | | This allows us to avoid the ugly #if for compiler versions. We might still need for when a warning only occurs in one compiler version, but otherwise the code will be much cleaner. Change-Id: Ibc941d898b3dad2e3d87c11378f29139c31f0fff Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-11-241-19/+47
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qiodevice.cpp src/plugins/bearer/linux_common/qofonoservice_linux.cpp src/plugins/bearer/linux_common/qofonoservice_linux_p.h src/plugins/platforms/android/qandroidplatformtheme.cpp src/tools/bootstrap/bootstrap.pro src/widgets/styles/qmacstyle_mac.mm Change-Id: Ia02aab6c4598ce74e9c30bb4666d5e2ef000f99b
| * Define the Intel compiler and Microsoft C++ versions in the Q_CC_ macrosThiago Macieira2014-11-051-3/+3
| | | | | | | | | | | | | | | | | | This is for completeness, since we've done the same for Q_CC_GNU and Q_CC_CLANG. We won't really use the macros like this because both __INTEL_COMPILER and _MSC_VER are readily usable. Change-Id: I669c60166fa4839d43f84f339e6896321d62817f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * Store the GCC version number in Q_CC_GNUThiago Macieira2014-11-051-12/+12
| | | | | | | | | | | | | | | | | | | | | | The sequence of (__GNUC__ * 100 + __GNUC_MINOR__) was used in quite a few places. Simplify it to make the code more readable. This follows the change done for Clang, which was quite necessary since Apple's version of Clang has different build numbers. Change-Id: I886271a5a5f21ae59485ecf8d140527723345a46 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * Define Q_CC_CLANG to be the version of upstream Clang that's in useTor Arne Vestbø2014-11-051-3/+22
| | | | | | | | | | | | | | | | | | | | | | | | We map the Apple Clang versions to upstream, so that we have one define to compare against. Fixes build break on iOS due to qbasicatomic.h not defining QT_BASIC_ATOMIC_HAS_CONSTRUCTORS on Apple Clang versions, which is needed after 1e9db9f5e18123f2e686c10b Change-Id: I17493c0187c20abc5d22e71944d62bfd16afbad2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Enable C++11 atomics with ClangThiago Macieira2014-10-311-1/+3
| | | | | | | | | | | | | | | | I don't know why it was an #if 0. The __has_feature has been there for a while. But, just to be sure, we check the presence of the header too. Change-Id: I36e34c9e8fd4ce55c98966d2fad246b77eb16597 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| * Fix compilation of <atomic> with ICC and libc++Thiago Macieira2014-10-311-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | The libc++ header does this: #if !__has_feature(cxx_atomic) #error <atomic> is not implemented So we can't enable the feature until the compiler reports true for that test. Change-Id: I96f1c7eea8b93d93bd721fe5a85fa987339d091f Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Add Q_DECL_RELAXED_CONSTEXPR macroOlivier Goffart2014-10-241-1/+10
|/ | | | | | | | | Expands to constexpr if C++14 relaxed constepxr are supported by the compiler [ChangeLog][QtCore] Added Q_DECL_RELAXED_CONSTEXPR for the corresponding C++14 feature Change-Id: Id6b56b3a17da2ff838c80795e528e1247dc13f63 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Gcc 4.5.* build fix.Tomasz Olszak2014-10-101-2/+5
| | | | | | | | | | | | | | | Q_COMPILER_DEFAULT_MEMBERS and Q_COMPILER_DELETE_MEMBERS are now set starting from gcc 4.6. Pre-4.6 compilers implement a non-final snapshot of N2346, hence default and delete functions are supported only if they are public. Starting from 4.6, GCC handles final version - the access modifier is not relevant. Compiler error: qsharedpointer_impl.h:717:31: error: 'QEnableSharedFromThis<T>::QEnableSharedFromThis()' declared with non-public access cannot be defaulted in the class body Change-Id: If1d3d4696f91912a09ca72bd4aa1fb07f491a0cb Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Do not use Q_COMPILER_CLASS_ENUM for gcc 4.4hjk2014-09-291-1/+1
| | | | | | | | | | | | | It breaks the compiler self-test: tst_compiler.cpp:754: error: no matching function for call to ‘qCompare(tst_Compiler::cxx11_class_enum()::X&, tst_Compiler::cxx11_class_enum()::X, const char [2], const char [13], const char [17], int)’ We not should assume it is safe to use, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064 and https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37946. Change-Id: I72c9c56e3e4f62bdfdfa133b6b0a2e610b5331c8 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Update license headers and add new license filesMatti Paaso2014-09-241-18/+10
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* Bump Q_COMPILER_INITIALIZER_LISTS to GCC 4.5Adam Majer2014-09-061-1/+3
| | | | | | | | | | | | | | | | | | | | | | While GCC 4.4 has the required header, it is missing important typedefs requiring use of pointers instead. This is acceptable if only used in one or two places, but a quick search through the source code lists quite a few usages of const_iterator typedef. $ git grep -c initializer_list\<.\*\>::const_iterator src/corelib/global/qflags.h:2 src/corelib/json/qjsonarray.h:1 src/corelib/json/qjsonobject.h:1 src/corelib/tools/qhash.h:2 src/corelib/tools/qmap.h:2 src/corelib/tools/qset.h:1 The lesser-evil is to bump Q_COMPILER_INITIALIZER_LISTS to version GCC 4.5 and retain usage of required (by standard) initializer_list typedefs. Change-Id: I38d6fa0ef3dc7d958587b406d33e3e3a7378c026 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove the last remnants of iWMMXt in QtThiago Macieira2014-08-051-1/+0
| | | | | | | | This code hasn't been tested for at least 4 years. It's not maintained and probably doesn't work. Change-Id: I4b9a5179e34111b400914f91caa6b741b69771bb Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Add a few missing Neon constructsThiago Macieira2014-08-051-0/+1
| | | | | | | | | | | The #undef in qcompilerdetection.h was missing. And apparently we can detect Neon since Windows Mobile 6 too. Change-Id: I38a5f71b2704a29a706183e39f43db3a78a729db Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Introduce Q_DECL_UNUSED_MEMBER for clangKai Koehne2014-07-231-1/+11
| | | | | | | | | | | | | | | | Since version 3.2, clang warns about unused member variables (-Wunused-private-field). Marking such members with Q_DECL_UNUSED_MEMBER will silence this warning. This is a cleaner way than using Q_UNUSED() somewhere in the class methods (like we did previously in qloggingcategory.cpp). It mirrors Q_DECL_UNUSED for unused variables, which however can't be used unconditionally for member variables because e.g. gcc will complain. Change-Id: I2afff683a7c3bae3bdcd684e5085a643887bb2a0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: hjk <hjk121@nokiamail.com>
* Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-141-1/+2
|\ | | | | | | | | | | | | Conflicts: src/gui/text/qfontengine_qpf2.cpp Change-Id: Ib04f92c41d0edd55d3aef8fb1708d917fba0f2a8
| * Work around ICC bug in brace initializations containing constexprThiago Macieira2014-07-121-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ICC miscompiles this: struct Inner { int i; constexpr Inner(int i) : i(i) {}}; struct Outer { Inner i; }; const Outer x = { -1 }; (Inner = QBasicAtomicInt; Outer = QtPrivate::RefCount, then again for QListData::Data) We expect x to be placed in read-only memory and require no load-time constructor. ICC unfortunately does not do that. By adding a constexpr constructor to Outer, it starts behaving like we expect it to, but falls apart again if you do "const Outer x[]" (the QArrayData statics). The solution is to probably make the varaibles constexpr too, but that's a job for the development branch. Intel issue Id: 6000056211 Intel bug: DPD200534796 Change-Id: Ie9fb5428106486254b7329403890754f300d58c1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Remove QT_STATIC_CONSTThiago Macieira2014-07-071-12/+0
| | | | | | | | | | | | | | | | | | | | | | This macro is no longer used. It was introduced probably by mistake, due to MSVC not following the strict string requirement of the C and C++ standards by default (you can assign a string literal to a non-const char*). Change-Id: I4b221dd435191b0eea689dbed35915cf3206648b Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Add Q_COMPILER_THREADSAFE_STATICS (a.k.a. "Magic Statics")Thiago Macieira2014-06-271-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | It had been so far only supported by GNU-style compilers due to the IA-64 portable C++ ABI. But it's mandated by C++11, so let's add the macro and use it in Q_GLOBAL_STATIC. Looks like Visual Studio "14" will support it. Change-Id: I9710b5146606c7e494c43413f49900419396cfe0 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: David Faure <david.faure@kdab.com>
* | Update MSVC compiler features according to testingThiago Macieira2014-06-251-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Looks like a few extra features have been supported for a while and we had never noticed. That includes the C++98 template friends, C++11 extern templates and C++11 nullptr. They've been supported since at least MSVC 2010, possibly even earlier, but I don't have MSVC 2008 to test with. Testing also indicates that MSVC 2012 and 2013 have a bug in their support for the range for construct. The following code fails to compile: for (int i : l) do { (void)0; } while (0); test.cpp(2) : error C2059: syntax error : '}' Reported as https://connect.microsoft.com/VisualStudio/feedback/details/903999/c-11-range-for-construct-fails-to-compile-when-body-is-a-do-while-block Change-Id: I5d0156f4c847c45fa1f6f5b9ee4ddbdacb8ab59b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Only define the MSVC C++11 feature macros in C++Thiago Macieira2014-06-251-0/+2
| | | | | | | | | | | | | | | | Don't define them if qcompilerdetection.h was compiled in C mode. Change-Id: I080b62ef7c68bb582e55e9e3a1dff4e6c1bb48bd Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Deprecate the C++14 compiler feature macrosThiago Macieira2014-06-191-26/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's now a C++ standards Standing Document that defines preprocessor macros in the same way that we used to. So we no longer need to define them ourselves. The current macros are kept for compatibility purposes, for the compilers where they used to be defined. The list will not be extended with new macros or for new compiler versions. [ChangeLog][Deprecation Notice] The Q_COMPILER_xxx macros for C++14 compiler features introduced in Qt 5.3 are deprecated and will not be updated for new compilers either. User code should be changed to use the macros from Standing Document 6 instead: http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations. This does not affect C++11 feature macros. Change-Id: I246afb84263f3d7ff72ccc0bc44bf86a6fc7cd96 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Add the C++11 feature macros for ICC 15 and complete for 14Thiago Macieira2014-06-181-0/+9
| | | | | | | | | | | | | | | | | | | | ICC 14 (Intel Composer XE 2013) already supported range for and explicit conversions, but looks like we missed adding them. ICC 15 (Intel Composer XE 2015) is C++11 language feature complete. Change-Id: I6eb8a3059f5df3604716666311aa01a6cf01918d Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-05-061-8/+15
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/qnx-x86-qcc/qplatformdefs.h src/corelib/global/qglobal.h src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp src/opengl/qgl.cpp src/opengl/qglpixelbuffer.cpp src/opengl/qglshaderprogram.cpp tests/auto/opengl/qglthreads/tst_qglthreads.cpp Change-Id: Iaba137884d3526a139000ca26fee02bb27b5cdb5
| * Disable C++11 initializer lists and rvalue refs for old libstdc++Thiago Macieira2014-04-141-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This can happen if you're using a recent compiler other than GCC (that is, Clang or Intel) and using an older version of the GCC headers. The check is not strictly correct: we're disabling for libstdc++ that came with GCC 4.2 and enabling for everything afterwards, even though both of those features were not present in GCC 4.3. However, the __GLIBC_LIBSTD__ macro only exists on Apple's patched version of libstdc++ and they're not going to update it anyway. libstdc++ does not provide a version macro that we can use. Task-number: QTBUG-38193 Change-Id: I34d38a2f2e5b4ac51bce35c30ec0fcf19de9cdf4 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
| * Disable all C++11 rvalue refs with Dinkumware C++ library tooThiago Macieira2014-04-141-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Our code assumes that Q_COMPILER_REF_QUALIFIERS implies Q_COMPILER_RVALUE_REFS. Technically, it should check both macros, but the only point of ref qualifiers is to have both lvalue- and rvalue- reference member functions. We might then use std::move without a check to see if the standard library does provide it. Change-Id: Ia3eedd298c2218f100aee2e41bdea6e2c5c07a15 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
| * Remove the #ifdef check just before #undefThiago Macieira2014-04-141-6/+2
| | | | | | | | | | | | | | | | No warning is printed anyway. This code is only for one compiler (GCC on QNX, a.k.a. QCC). Change-Id: I28d085c72ab5a957146efab0a36c72f213d9d2c3 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-04-111-2/+8
|\| | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/qnx-armv7le-qcc/qplatformdefs.h src/printsupport/kernel/qcups.cpp src/widgets/styles/qstyle.h tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp Change-Id: Ia41e13051169a6d4a8a1267548e7d47b859bb267
| * Only define Q_COMPILER_INITIALIZER_LISTS for MSVC 12 SP 2Frederik Gladhorn2014-04-091-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | Nested initialization is broken before SP2, so just disable the whole feature as tst_qvector crashes(release)/fails(debug) Done-with: Jedrzej Nowacki Task-number: QTBUG-38186 Change-Id: I9c5c9e55c75854fc1f05a59fab2ac7dce9b37fbb Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| * Mark Variable Length Arrays as a TS feature for C++14Thiago Macieira2014-04-081-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | The feature was removed from the C++14 draft standard and moved instead to a Technical Specification. Since we don't know how to enable TS features in GCC 4.9 yet, remove it from the definition. The Clang definition is probably safe, since it is behind an #if __has_extension. Change-Id: Ibc32b35657b046680078b39a7678bd8e1e5395d2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | Merge remote-tracking branch 'origin/stable' into devSergio Ahumada2014-03-131-1/+1
|\| | | | | | | Change-Id: Idec54e19963e8d88c711cb179cffc81596323899
| * Make Q_NULLPTR be NULL on C++98Thiago Macieira2014-03-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some compilers actually have a C++11-like null pointer constant in C++98 mode: $ gcc -dM -E -include stddef.h -xc++ /dev/null | grep NULL #define NULL __null $ icc -dM -E -include stddef.h -xc++ /dev/null | grep NULL #define NULL __null $ clang -dM -E -include stddef.h -xc++ /dev/null | grep NULL #define NULL __null Change-Id: Ie0bcaf36fed6ad27e761a0a24332817129128571 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Introduce Q_DECL_CONST_FUNCTION and Q_DECL_PURE_FUNCTIONGiuseppe D'Angelo2014-03-031-0/+8
|/ | | | | | | | | | | That expand to __attribute__((const)) and ((pure)). A "const" function is a function allowed to examine only its arguments, without modifying them. A "pure" function is also allowed to read memory. Currently working only on GCC/ICC/Clang, MSVC lacks these. Change-Id: Ie60a0847b193fb88e116f61611dc571296a3df1c Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Loosen checks for Q_COMPILER_VARIADIC_MACROSKai Koehne2014-02-201-3/+16
| | | | | | | | | | | | | | | | | | | | So far we did bind the definition of Q_COMPILER_VARIADIC_MACROS to C++11 (so gcc, clang will not define it in default gnu++98 standard). However, variadic macros are a feature of the gcc preprocessor since version 2.97, and are enabled in the default configurations on gcc, clang, icc. This might cause warnings and errors though if one enables additional warnings in gcc, clang (e.g. by -pedantic). Anyhow, as a precedent qglobal.h already relies on 'long long' ... The warning can be disabled by adding '-Wno-variadic-macros'. [ChangeLog][Compiler Specific Changes] Variadic macros are now enabled more liberally for gcc, clang, icc. If you have warnings (because you e.g. compile with -pedantic), disable them by -Wno-variadic-macros. Change-Id: Ie979b85809508ad70cab75e6981f20496429f463 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Initial support for the Intel Compiler 14.0 on OS XThiago Macieira2014-02-161-1/+1
| | | | | | | | | | | ICC 8 and 9 are positively ancient. I doubt anyone is using them for Qt, let alone Qt 5. ICC 11 through 13 haven't supported OS X. ICC now masquerades as Clang, so we need to let qmake and qcompilerdetection.h know about it. Change-Id: If0d2bd8b6a4a45250c15c9472c062effc76f17de Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Work around ICC 14 bug: __attribute__((deprecated)) with textThiago Macieira2014-02-161-1/+1
| | | | | | | | Apparently it doesn't like the text. Change-Id: If8e14df84f0d9915018eac94df16bf1b679155e0 Reviewed-by: Keith Gardner <kreios4004@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove "thread_local" support from the Intel CompilerThiago Macieira2014-02-141-1/+0
| | | | | | | | | | | | | | | The docs said it supports the feature, but now that we've tried to use it, we can't. It might have been referring to the non-C++11 extension from GCC (__thread). qlogging.cpp(1253): error #303: explicit type is missing ("int" assumed) static thread_local bool msgHandlerGrabbed = false; ^ Change-Id: I9343cf61bd3b2eacac686e602cc0ffea2d4a7a22 Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Mehdi Fekari <mfekari@blackberry.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* Optimize drawing to and from generic formatsAllan Sandfeld Jensen2014-01-311-0/+2
| | | | | | | | | | | | | | | | | When drawing to and from the less common formats most of the cpu time is spend in conversion. The conversion method is rather slow due to using variable shifts and masks that the compiler does not have a chance to optimize. This patch changes the conversion methods to being templates fed by constexpr methods. This allows the compiler to fully optimize the methods yielding 2x->5x speedups. The reliance on constexpr however means the optimized methods are only used under C++11. Change-Id: I2ec77c4c1c03f12ee463a694a2b59db0f0b52db1 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-01-201-3/+3
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qglobal.h src/corelib/tools/qstring.cpp src/gui/image/image.pri src/gui/image/qimage.cpp src/plugins/platforms/cocoa/qcocoawindow.h src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/eglfs/qeglfshooks_stub.cpp tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp Change-Id: I3b9ba029c8f2263b011f204fdf68c3231c6d4ce5
| * Fix some typosKurt Pattyn2014-01-151-3/+3
| | | | | | | | | | Change-Id: I673ad09e458438b921fa093190bd983e8f9749b4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Remove last traces of QT_COMPILER_SUPPORTS_NEONTor Arne Vestbø2014-01-161-1/+0
| | | | | | | | | | | | | | | | | | | | | | Fixes ARM build, as the NEON drawhelpers and image conversion functions were ifdef'ed out. Follow-up to 1b12c0608be2359baa2f96ae28b135a84abd388c. Change-Id: I0b5e89c8f445741432db2dfe1f8d971b971c8605 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add detection of C++1y features (probably C++14)Thiago Macieira2014-01-161-0/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I've added the most interesting features. I've skipped three features that GCC and Clang will support: N3323 contextual conversion tweaks N3653 member initialisers and aggregates N3664 clarifying memory allocation Of those, only N3653 brings a new syntax, so it could be added later. Change-Id: I8314d81e028c9fb22052f73961c81cdc69c1461e Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-11-261-1/+20
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For the conflicts in msvc_nmake.cpp the ifdefs are extended since we need to support windows phone in the target branch while it is not there in the current stable branch (as of Qt 5.2). Conflicts: configure qmake/generators/win32/msvc_nmake.cpp src/3rdparty/angle/src/libEGL/Surface.cpp src/angle/src/common/common.pri src/corelib/global/qglobal.h src/corelib/io/qstandardpaths.cpp src/plugins/platforms/qnx/qqnxintegration.cpp src/plugins/platforms/qnx/qqnxscreeneventhandler.h src/plugins/platforms/xcb/qglxintegration.h src/widgets/kernel/win.pri tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp tools/configure/configureapp.cpp Change-Id: I00b579eefebaf61d26ab9b00046d2b5bd5958812
| * 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>