summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qglobal.h
Commit message (Collapse)AuthorAgeFilesLines
* Q_STATIC_ASSERT: use __COUNTER__ instead of __LINE__ if the compiler supports itMarc Mutz2013-09-221-0/+5
| | | | | | | | | | | When using __LINE__ to construct unique names, use of Q_STATIC_ASSERT is limited to one instance per line of code. On compilers that support __COUNTER__ (GCC and MSVC, probably others), we can get around that limitation by using that one to always get a new unique number, so use it. Change-Id: I89bcfaa32376b7a665f03e4275e89b13fa3e650d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add Mac type conversion functions to QtCoreMorten Johan Sørvig2013-09-211-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* QT_NO_PROCESS for WinRTOliver Wolff2013-09-201-0/+4
| | | | | | | | | | | As Windows Runtime does not really support the use of spawning processes QT_NO_PROCESS is defined for winrt builds and the corresponding sources are excluded from build. Change-Id: I79263417c985b23678c55ac44a5591a9a69d3c13 Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* WinRT: Basic global supportAndrew Knight2013-09-201-1/+1
| | | | | | | | Various global changes, primarily preprocessor flow, to support the WinRT platform. Change-Id: I3fa9cf91d5fb24019362e88fcf205e31b4f810b5 Reviewed-by: Andrew Knight <andrew.knight@digia.com>
* Fix cross-compiling V4 for Android on WindowsEskil Abrahamsen Blomfeldt2013-09-091-0/+2
| | | | | | | | | | The QT_POINTER_SIZE is not detected on Windows. We can safely set this to 32 bit for Android since we only support 32 bit builds on Windows. Task-number: QTBUG-33397 Change-Id: I891cf01444d1ba9216ed2c3ba33ef40c61d50dd9 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-271-4/+0
|\ | | | | | | | | | | | | Conflicts: examples/widgets/doc/src/addressbook-fr.qdoc Change-Id: Id1196e8e0c6445f1616c3f29234c974d809f8e48
| * Revert "Fix compilation for Android ARMv5"Eskil Abrahamsen Blomfeldt2013-08-271-4/+0
| | | | | | | | | | | | | | | | | | | | This reverts commit 9fa1bdeeb2bca6f9ba370fce594a47a066a7e81a which is no longer needed because the Android NDK now contains a toolchain without the bug for which it was a work-around. Task-number: QTBUG-31051 Change-Id: I601ba2fccb927ee7e818644de4474700e2eec8f1 Reviewed-by: BogDan Vatra <bogdan@kde.org>
| * Bump Qt version to 5.1.2Sergio Ahumada2013-07-231-2/+2
| | | | | | | | | | Change-Id: Ibe3e6a37a874b75ea9a20e0a9ed8aa5f21bf6be2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
| * Bump Qt version to 5.1.1Sergio Ahumada2013-05-291-2/+2
| | | | | | | | | | Change-Id: Id5e2e1c69f09e43460e45d8ccf7a430f3052149b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Mark qFuzzy* and qIsNull as Q_REQUIRED_RESULTGiuseppe D'Angelo2013-08-211-0/+6
| | | | | | | | | | | | | | | | | | | | Calling them and not using the return value makes no sense. And it's even worse -- in autotests people might call those functions without wrapping them in QVERIFY(), effectively not testing anything. Change-Id: I2c90d1c85963ff1f35f00653d536a9252c2fcc48 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Add a Mach-O decoder to the QPluginLoaderThiago Macieira2013-07-201-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We already had an ELF decoder, which helped us greatly to find the metadata and that catches most Unix systems (Solaris, QNX, HP-UXi, and all of the free Unixes). On other Unix systems, aside from Mac OS X, we simply scanned the entire file for the signature. On Windows, even without a COFF-PE decoder, we use a LoadLibrary trick to load the plugin without loading the dependent libraries. In most cases, that works. Unfortunately, on Mac OS X we didn't have a decoder and nor could we do the file scan: because Mac OS X binaries could be fat binaries, we wouldn't know which architecture's signature we had found. No more. This adds a full Mach-O decoder to QtCore. It is also capable of finding the boundaries of the architecture's binary, but that functionality is disabled since all Qt 5 plugins have plugin metadata sections. Change-Id: I2d5c04c5ecf024864b8a43f31ab6b7e6c5eae9ce Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-05-231-0/+4
|\| | | | | | | | | | | | | | | | | | | | | 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
| * Fix compilation for Android ARMv5Eskil Abrahamsen Blomfeldt2013-05-071-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have to use the 4.4.3 compiler toolchain for producing binaries for ARMv5 on Android, since the 4.7 toolchain has a regression for this architecture. The regression has been fixed, but the fix has not been released yet, so until it has, we need to use the 4.4.3. However, the 4.4.3 toolchain has a different bug, which breaks compilation in qtimageformats with a message about redefinition of uint. This works around that bug for Android builds. When the patched compiler has been released, we can revert this. Task-number: QTBUG-30921 Change-Id: I620c186c6e932413a4de1dd331fbf4b9401f2e72 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | Sanitize QT_COMPILER_SUPPORTS_xxx in qcompilerdetection.hTor Arne Vestbø2013-05-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... 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>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-04-031-2/+2
|\| | | | | | | Change-Id: Id96d4076610366a7cc66c8d8382ca25c33eaa71d
| * Reduce the likelihood of underflows in qFuzzyComparehjk2013-04-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | As indicated in the discussion of the bug report, this does not address the real problem but only reduces the frequency it occurs. Task-number: QTBUG-26453 Change-Id: I20ac3f41f52effb674bee6924ccdfd2f641576ef Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Bump Qt version to 5.2.0Sergio Ahumada2013-03-291-2/+2
|/ | | | | Change-Id: Id2a4b8fb00837154a7fc1bf96060c0cdc808f13d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Whitespace cleanup: remove trailing whitespaceAxel Waggershauser2013-03-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Remove all trailing whitespace from the following list of files: *.cpp *.h *.conf *.qdoc *.pro *.pri *.mm *.rc *.pl *.qps *.xpm *.txt *README excluding 3rdparty, test-data and auto generated code. Note A): the only non 3rdparty c++-files that still have trailing whitespace after this change are: * src/corelib/codecs/cp949codetbl_p.h * src/corelib/codecs/qjpunicode.cpp * src/corelib/codecs/qbig5codec.cpp * src/corelib/xml/qxmlstream_p.h * src/tools/qdoc/qmlparser/qqmljsgrammar.cpp * src/tools/uic/ui4.cpp * tests/auto/other/qtokenautomaton/tokenizers/* * tests/benchmarks/corelib/tools/qstring/data.cpp * util/lexgen/tokenizer.cpp Note B): in about 30 files some overlapping 'leading tab' and 'TAB character in non-leading whitespace' issues have been fixed to make the sanity bot happy. Plus some general ws-fixes here and there as asked for during review. Change-Id: Ia713113c34d82442d6ce4d93d8b1cf545075d11d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Introduce macros for simplifying platform checks on Mac OS and iOSTor Arne Vestbø2013-02-181-0/+10
| | | | | Change-Id: Ibab8486e1e6d7e4d8922fce96add055e60c6095c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add qunsetenv(), next to qputenv() and friends.David Faure2013-02-071-0/+1
| | | | | | | | | | | | | | | | | The existing tst_qgetputenv shows that qputenv with an empty value doesn't lead to the same result on Windows and on Unix, and there was no way to fully delete an env var on Unix (which is needed for some env vars where not-set and empty are different, such as TZ, see `man tzset`). This is also why qglobal has qEnvironmentVariableIsSet() vs qEnvironmentVariableIsEmpty(), on the getter side. Qt4's ifdefs around unsetenv in qapplication_x11.cpp show that this is needed within Qt too (although this particular startup notification code has to be re-imported into Qt5 still). Change-Id: I631c8cddbcf933d4b9008f11aefc59f5a3c7c866 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add note about QT_{BEGIN,END}_HEADER removal for Qt 6Sergio Ahumada2013-02-061-0/+1
| | | | | | | | This macro usage has been removed from most of the Qt 5 code, so adding a note to be completely removed in Qt 6. Change-Id: I19a90db78745f3cacbcbf206e8642c7d7c36e04a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add QT_{BEGIN,END}_HEADER definition backSergio Ahumada2013-02-051-0/+3
| | | | | | | | This commit partially reverts 07e3bcdc106ac42703ae0fb88b6cac2d2bfdd072 The empty macro defition was not supposed to be removed yet. Change-Id: Ie83b2adbe2328b83c70a70274a401e1e6c74498f Reviewed-by: David Faure (KDE) <faure@kde.org>
* Remove QT_{BEGIN,END}_HEADER macro usageSergio Ahumada2013-01-291-6/+0
| | | | | | | | | | | The macro was made empty in ba3dc5f3b56d1fab6fe37fe7ae08096d7dc68bcb and is no longer necessary or used. Discussed-on: http://lists.qt-project.org/pipermail/development/2013-January/009284.html Change-Id: Id2bb2e2cabde059305d4af5f12593344ba30f001 Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: hjk <hjk121@nokiamail.com>
* Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Frederik Gladhorn2013-01-231-1/+1
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-01-221-1/+1
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qsavefile_p.h src/corelib/tools/qregularexpression.cpp src/gui/util/qvalidator.cpp src/gui/util/qvalidator.h Change-Id: I58fdf0358bd86e2fad5d9ad0556f3d3f1f535825
| | * Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | | | | | | | | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Add a new Q_GLOBAL_STATIC implementationThiago Macieira2013-01-221-119/+3
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unlike the previous implementation, this implementation is locked: only one initialisation is ever run at the same time. It is exception-safe, meaning that a throwing constructor will restart the process. Also, start using the thread-safe behaviour that GCC has offered for a long time and C++11 requires. Change-Id: I20db44f57d258923df64c0051358fd0d9a5ccd51 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: David Faure (KDE) <faure@kde.org> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* / Bump Qt version to 5.1.0Frederik Gladhorn2013-01-151-2/+2
|/ | | | | | Change-Id: I6d372c933e48eeda921fe781b073bf4e05b31585 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: David Faure (KDE) <faure@kde.org>
* Bump Qt version to 5.0.1Sergio Ahumada2012-12-211-2/+2
| | | | | Change-Id: Ie8f437b8dfe8a67c7b34321439dd988a02612437 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove the TRUE and FALSE macrosDavid Faure2012-12-061-11/+0
| | | | | | | | | | They are completely unused in Qt, and are a potential source of compilation errors in application code. Change-Id: I6dfe2891f3b2365a30048f99c31e8e3a2425e62b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Ignore the QT_NAMESPACE for moc runsLars Knoll2012-09-251-1/+1
| | | | | | | | | | Moc should not see a defined QT_NAMESPACE, to keep the names of all symbols consistent with an un-namespaced Qt. Change-Id: Ia72afabaa0820b02a0863148510122ce942a5082 Reviewed-by: Lars Knoll <lars.knoll@digia.com> 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>
* don't require a fake qconfig.h for the configure bootstrapOswald Buddenhagen2012-09-191-1/+1
| | | | | Change-Id: I3d1224ad19b9e5278e35cf7c5142a29ccb589140 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Let qVersion() be extern "C" if this is not a namespace buildThiago Macieira2012-09-181-1/+13
| | | | | | | | | | | This allows one to even dlopen() QtCore and call qVersion, to figure out which version it is. A bit crazy, but someone might want to do it. Change-Id: I932460515d07bed3f0e41c8ab2b46fc268ca73ff Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* don't require (dummy) qconfig.h for qmake buildOswald Buddenhagen2012-09-111-1/+1
| | | | | | Change-Id: I22a2c9aa1366ff858b3bb646617543968c810136 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Move the non-C++ parts of qglobal.h outside of __cplusplusThiago Macieira2012-09-101-135/+134
| | | | | | | | This allows some more goodies to be available in C mode. Change-Id: I5c8a19b6150081a20aae8d3d9d8d7cb30d750536 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Move the constructor and destruction function macros to the C++ partThiago Macieira2012-09-101-22/+22
| | | | | | | | | These macros expand to C++ code, so there's no point in having them defined in the non-C++ part of qglobal.h. Change-Id: Ic5763196391798e362d33466114969818e7e6793 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Make the default Qt API be Qt 5.0'sThiago Macieira2012-09-081-2/+1
| | | | | | | | | | | | This means user applications will default to Qt 5.0's API. Higher versions or Qt 4 compatibility are opt-in. Also set the default for Qt's own build to be 5.0 on all platforms except Windows. On Windows, we need to set it to 4.9. Task-number: QTBUG-25053 Change-Id: I603e0fda4785e64e1413cd82153a89e48005aa40 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QtGlobal: mark qVersion() and qSharedBuild() as nothrowMarc Mutz2012-09-071-2/+2
| | | | | Change-Id: Id9dcf71363754cf6aae94012b22d144455e213eb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove the package macros from qglobal.hThiago Macieira2012-09-031-4/+0
| | | | | | | It's the wrong place to have these. Change-Id: I3b716317ba02ea2baf0f7053c8b16128e4c88e17 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fix warning when compliling with -Wconversion.Frederik Gladhorn2012-08-281-2/+2
| | | | | | Change-Id: I90bf9f9a1860cabb67bc92599e7ccce94496d134 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Do not consider sign in qIsNull.Mitch Curtis2012-08-221-4/+4
| | | | | | | | | | | | | | | The current implementation of qIsNull only returns true if the value is positive zero. This behaviour is not useful for use cases like QPointF::isNull, where QPointF(-0, -0).isNull() will return false. There doesn't seem to be a reason why the function exhibits this behaviour (-0.0 is not accounted for in the unit tests), and for the case of QSizeF::scale it causes a bug: qIsNull is used to check for division by 0.0 before it proceeds, which fails in the case of -0.0. Task-number: QTBUG-7303 Change-Id: I767e5280bd26614e8e78ae62b274eb9bc4ade385 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* QtGlobal: (new) qEnvironmentVariableIs{Set,Empty}()Marc Mutz2012-08-091-0/+3
| | | | | | | | | | | | | These functions are a faster version of {,!}qgetenv().is{Null,Empty}(), a common pattern in Qt code. Their main advantage is that they don't need to allocate memory, so they can be used in noexcept functions, or dynamic initialisation of namespace-scope statics, because throwing in these contexts invokes std::terminate(). Change-Id: I651c5bd72f450b5d7df76590f8791572fe992af5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Logging: mark qt_assert()/qt_assert_x()/qFatal() as nothrowMarc Mutz2012-08-091-2/+9
| | | | | | | | | | | | | | | | | | | | | | These functions are not supposed to return, not even by exception. qt_message() _can_ throw, but we're fine with the compiler calling std::terminate() then, since the backtrace will still include the assertion location. This behaviour is ensured by a new macro, QT_TERMINATE_ON_EXCEPTION, which expands to something like try { expr; } catch(...) { std::terminate(); } if the compiler doesn't support Q_DECL_NOEXCEPT (but maybe Q_DECL_NOTHROW), and to something like just expr; otherwise (including in the QT_NO_EXCEPTION case). The real macro preserves scopes in all cases, and aims to work even if <exception> isn't included in the TU it's used in, so is a little bit more complex than that. Change-Id: Ie6a2b7776e6aa77e57bd9aea6e184e5fa1cec81c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove unnecessary extra indentation in the EXPORT macrosThiago Macieira2012-08-091-23/+22
| | | | | Change-Id: I54585fa7e38ea1984018c5cbff9bc4626016bace Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Remove the Q_xxx_EXPORT macros of other modules from qglobal.hThiago Macieira2012-08-091-31/+0
| | | | | | | The macros have been moved to their respective modules. Change-Id: I653668b608cd3b79824a25b0e7b1c238330c0007 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Clean up the EXPORT macros in qglobal.h.Thiago Macieira2012-06-291-56/+3
| | | | | | | | | | | | | | | | | | | | QtPlatformSupport is a static library. It should never export anything, so Q_PLATFORMSUPPORT_EXPORT is unnecessary. QtSql, QtXml, QtDBus, QtOpenGL and QtPrintSupport now have the macros on their own source trees. It's possible these modules might be separated out from qtbase in the future. For QtDBus, the macros are moving back to where they used to be. This also leaves qglobal.h only creating the macros for QtCore, QtGui, QtWidgets and QtNetwork, the core libraries. Q_CANVAS_EXPORT, Q_OPENVG_EXPORT and Q_COMPAT_EXPORT aren't used anywhere in the Qt sources, so simply delete them. And the Q_QUICK1_EXPORT macro in the static section was wrong, so remove it too. Change-Id: I50bdf86e783338f814903b25979721f788a7becf Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Update the macros for shared/DLL and static buildsThiago Macieira2012-06-281-80/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Up until now, we had a mess of different macros used for building DLLs, for building shared libraries on Unix systems and for building static libraries. Some of the macros were contradictory and did not work. From now on, there shall be only: - QT_STATIC: indicates that it's a static Qt build and the export macros should expand to empty - QT_SHARED: indicates that it's a shared / dynamic Qt build and the export macros should expand to Q_DECL_EXPORT or Q_DECL_IMPORT, depending on whether the macro corresponds to the current module being built (the QT_BUILD_XXXX_LIB macro comes from the module's .pro file) QT_BOOTSTRAPPED implies QT_STATIC since the bootstrapped tools link statically to some source code. QT_STATIC is recorded in qconfig.h by configure when Qt is configured for static builds. Nothing is recorded for a shared / dynamic build, so QT_SHARED is implied if nothing is defined. This allows for the existence of a static_and_shared build: with nothing recorded, defining QT_STATIC before qglobal.h causes the export macros to be that of the static form. Linking to the static libraries is out of the scope of this change (something for the buildsystem and linker to figure out). From this commit on, the proper way of declaring the export macros for a module called QtFoo is: #ifndef QT_STATIC # ifdef QT_BUILD_FOO_LIB # define Q_FOO_EXPORT Q_DECL_EXPORT # else # define Q_FOO_EXPORT Q_DECL_IMPORT # endif #else # define Q_FOO_EXPORT #endif The type of the Qt build is recorded in QT_CONFIG (in qconfig.pri) so all Qt modules build by default the same type of library. The keywords are "static" and "shared", used in both QT_CONFIG and CONFIG. The previous keyword of "staticlib" is deprecated and should not be used. Discussed-on: http://lists.qt-project.org/pipermail/development/2012-April/003172.html Change-Id: I127896607794795b681c98d08467efd8af49bcf3 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix compile-time error macro when building with -fPIEGabor Ballabas2012-06-201-1/+1
| | | | | | | | This macro causes a compile-time error using LLVM with Clang when the target that includes qglobal.h is built with -fPIE. Change-Id: I2e82e1a8feed9009c814f187b06501b26ea3b3b7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Unconditionally enable Q_OF_ELF for any ELF platformPino Toscano2012-06-011-3/+1
| | | | | | | Just enable ELF stuff on any platform which uses ELF format, instead of a selected subsets of those. Change-Id: I0753c020c718bc67b4b50c3957fe8dc10afd2c61 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>