summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/qt_module_headers.prf
Commit message (Collapse)AuthorAgeFilesLines
...
* disable automatic PCH compilation for headers-only modulesOswald Buddenhagen2015-04-211-1/+1
| | | | | | | | there is neither a point in building a PCH that will never be used, nor does it even work with the aux TEMPLATE. Change-Id: I2fe11f951f81adf5e15066ed60f983003c76b451 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* Implement a more direct headersclean checkThiago Macieira2015-04-171-0/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Test each include file directly, instead of doing a large #include. This verifies that each header is compilable on its own. One big advantage of doing it via a special compiler in qmake is that we skip pre-compiled headers, which has hidden build errors in the past. This solution is implemented by making syncqt produce a second list of headers. This list is the same as the list of headers in the source code to be installed, minus the headers that declare themselves to be unclean, via the pragma: #pragma qt_sync_skip_header_check This mechanism is applied only for public libraries (skipping QtPlatformSupport, an internal_module). This test is enabled only for -developer-builds of Qt because it increases the compilation time. On QtTest: the library only links to QtCore, but it has two headers that provide inline-only functionality by including QtGui and QtWidgets headers (namely, qtest_gui.h and qtest_widget.h). If those two modules aren't getting compiled due to -no-gui or -no-widgets to configure, we need to remove the respective headers from the list of headers to be checked. If they are being built, then we need to make QtTest's build wait for the headers to be generated and that happens when qmake is first run inside the src/gui and src/widgets directories. Change-Id: I57d64bd697a92367c8464c073a42e4d142a9a15f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* support spaces in build and install dirsOswald Buddenhagen2015-02-171-1/+1
| | | | | | | | spaces in the source dir are not supported for now, as that requires some more profound refactoring of the bootstrap makefiles. Change-Id: Ie0c07a1558b8326f642f2ea144bc1cd85ee761af Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* add support for explicitly declaring the module master headerOswald Buddenhagen2014-10-291-1/+3
| | | | | | | | | | | | when a module delegates to another module (as the activeqt ones do), it doesn't have a master header to be included. we could derive the real master header by doing a transitive dependency resolution and some filtering, but that seems unnecessarily complex. Task-number: QTBUG-41892 Change-Id: Ie7ce51a837ac06e929b204ec734206c11b3ae241 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* use correct quoting style when running syncqt under mingwOswald Buddenhagen2014-09-301-1/+1
| | | | | | | | | | to this end, add a mode to qtPrepareTool() which prepares the primary variable for system() use (instead of use in makefiles). Task-number: QTBUG-41032 Change-Id: If6aa6c206a70ecdbc2ea05bbb3cb470414fb02b1 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Disable automatic use of pch for MinGWKai Koehne2014-06-261-1/+6
| | | | | | | | | Revert cb09e1e88944e1ab9b0d0 for MinGW. gcc on Windows reproducably crashes when the pre-compiled header becomes big enough ... Change-Id: Icd5a3dfbe59f5ff5c78832e7b4436d0f1cfa1031 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* qmake: Guard module depends with __cplusplusHolger Hans Peter Freyther2014-06-201-0/+2
| | | | | | | | | | | | When qtbase has been compiled with PCH and trying to compile the disassembler in QtDeclarative creating the PCH for "C" is failing due the C++ includes. Guard the includes with __cplusplus to be "usable" on C code. This guard is proposed for the "stable.h" in the qmake precompiledheaders documentation. Change-Id: I7a8fb9e59c666a2e1535d988fd71c5cd67d0587d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Automatically enable precompiled headers for Qt modulesThiago Macieira2014-05-271-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We'll use the master depends header for the module as the precompilation header. We could use the master include, but tests show that precompilation benefits taper off for big precompiled headers. The important part is to get the Standard Library headers precompiled. Each module can still override which header to precompile by setting PRECOMPILED_HEADER after load(qt_modules). It can also turn off precompiled headers by setting that to empty or by CONFIG -= precompile_header. Testing a few build times shows the following improvements (GCC 4.8 with -O3 and C++11): QtPrintSupport: 14.7% QtOpenGL: 22.7% QtDBus: 29.5% QtSvg: -2.4% QtXmlPatterns: 26.1% QtQml: 21.6% QtQuick: 25.0% QtMultimedia: 9.0% QtSerialPort: -30.0% QtHelp: 5.6% The numbers also show that precompilation is worse for small modules. Change-Id: I3793fafcedaff5456527cd6b3777ffd162975c36 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* automate handling of generated headers some moreOswald Buddenhagen2014-02-281-0/+14
| | | | | | | | | | | | | | let the syncqt + qt_module_header.prf pair handle generation of forwarding headers. in qtbase this is ineffective to some degree, as the need to create QtCore's forwarding headers early for QtBootstrap requires qtbase.pro already doing the real work, but at least we get the verification that nothing breaks. Other Modules (TM) will need the full functionality. Change-Id: Ifd3dfa05c4c8a91698a365160edb6dabc84e553f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* reshuffle path setupOswald Buddenhagen2013-06-101-3/+3
| | | | | | | | | | | | | rename MODULE_PROFILE_DIR to MODULE_BASE_INDIR. force MODULE_BASE_OUTDIR to be always the shadow of the above. rename MODULE_BASE_DIR to MODULE_SYNCQT_DIR (the former is still recognized for backwards compat with webkit). the idea behind these changes is making the variable names and override possibilities reflect their actual use. Change-Id: Ica4062d7231a0ce13241670e0d0f43e6b1b97160 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* run syncqt only for builds from gitOswald Buddenhagen2013-06-031-2/+6
| | | | | | | | | | | | | | | | | the logic in the configures was even trying to express that, only that nowadays we always ship syncqt, so the tests were kinda pointless. this frees us from the perl dependency for non-developer builds of packaged modules (except for webkit, which needs almost every scripting language on earth anyway). obviously, this requires that the packaging scripts run syncqt in the source dir before tarring up the sources. note that for repositories other than qtbase, the -version argument needs to be passed to syncqt. Task-number: QTBUG-29465 Change-Id: Ic929ab17a5de4b30fbf48b3aa9bfa3b4d2ef37d6 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* move module master header generation back to syncqtOswald Buddenhagen2013-06-031-25/+0
| | | | | | | | | | now that we split out the part that depends on the project file, we can do it cleanly here. this way we can generate these headers at pre-build time already. and for git builds, perl is probably faster than qmake at this task. Change-Id: I343255c6de22329471a3ae2c2aac9ebeb160a501 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* split out dependencies from module master headerOswald Buddenhagen2013-06-031-5/+14
| | | | | | | | this will allow us the create the dependency list in a different way than the rest of the master header. Change-Id: Ib083fbbf6194cd9a161d669f860aaf32fd96d9d4 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* move module version header generation back to syncqtOswald Buddenhagen2013-06-031-29/+0
| | | | | | | | | | | there is no particular reason for it being done by qmake. avoids that the logic is distributed over two source files, and allows us to generate these headers at pre-build time already, including not forwarding to a yet unexisting file (which would have a yet unknown location). Change-Id: I9c78ab425cf6f01d076c86fd1ee602626f231487 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Merge remote-tracking branch 'gerrit/release' into stableSamuel Rødal2013-03-211-2/+1
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/features/qt_module_headers.prf mkspecs/features/qt_tool.prf src/angle/angle.pro src/tools/bootstrap/bootstrap.pro tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp Change-Id: Ide5759fe419a50f1c944211a48f7c66f662684e0
| * pass module version to syncqtOswald Buddenhagen2013-03-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this is cleaner than having it parse qmake project files. the only remaining built-in version extraction is the fallback to qglobal.h needed for bootstrapping. as a "side effect", this fixes the build of modules with mismatched versions centralized in .qmake.conf, as this was simply not handled so far. the -mkspecsdir syncqt option goes away, as there is no use case for it any more. Task-number: QTBUG-29838 Change-Id: I6912a38f0e93a26bc267a9e3d738506fd3ad431b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | consolidate syncqt invocationsOswald Buddenhagen2013-03-131-3/+12
|/ | | | | | Change-Id: Ic28ea95201501b05c4a62366d1f70fa120161927 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* mark a bunch of features as internalOswald Buddenhagen2012-12-121-0/+11
| | | | | Change-Id: I5ad28827ff317985414e859263af85ceec31207c Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* expose a little less of the build host's file system structureOswald Buddenhagen2012-11-301-2/+5
| | | | | Change-Id: I6fc675b9aeae0744c3308cd20ffd8c115c271c58 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* make it possible to name include dir differently from library nameOswald Buddenhagen2012-11-301-5/+5
| | | | | | | ActiveQt needs that Change-Id: Ib9f69d19e8042c1ab0f211eebb9237bc2fb77aa3 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* kill $$mod_component_base & $$mod_qmake_baseOswald Buddenhagen2012-10-291-3/+3
| | | | | | | | | | use $$MODULE_BASE_OUTDIR & $$MODULE_QMAKE_OUTDIR directly. this is a no-op, except that now module pris will be built in qtbase for all modules when building without -prefix - which is only consistent with all other artifacts. Change-Id: I2965b2c7a15aa9e82ba6017f5f4c0daa14b6e6fe Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* centralize module directory calculationOswald Buddenhagen2012-10-291-5/+1
| | | | | Change-Id: I5db529676b3287013008f28623a541fee1cde6a0 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Rename the syncqt -qtdir to -mkspecsdirThiago Macieira2012-10-191-1/+1
| | | | | | | | | It's actually looking for the mkspecs (so it can read qconfig.pri to get the Qt version), so give it exactly what it wants. Change-Id: I2957b2d93a8837b8492d313209d45ff3ec01704c Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* move syncqt call to qt_module_headers.prfOswald Buddenhagen2012-09-211-0/+9
| | | | | | | | | | | | | for one, the syncqt invocation is qt module magic and thus simply does not belong into the generic default_pre file. second, this way the forwarding header generation is now linked to the rest of the build magic for a particular module, which is way less confusing for the unsuspecting developer. Change-Id: Idc8e420d3faf173d7fff4a41e6e1c59af15c3023 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* put the include/ of all modules into qtbase when doing non-prefix buildOswald Buddenhagen2012-07-181-2/+8
| | | | | | | | | all other build artifacts go into qtbase's build directory anyway. this asymmetry was confusing and causes cmake users some grief. Change-Id: I4d7f7b2318f6c5300eb00360664785cb2c8217b7 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* move generation of module master headers to qt_module_headersOswald Buddenhagen2012-06-191-0/+28
| | | | | | | | | this has the advantage that the %mastercontent assignments in sync.profile are not necessary any more. as it happens, most modules got them wrong anyway. Change-Id: Ibdf689be408f18e1d90c44ef4ecacd7c24b1f1c9 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* move creation of module version header to qt_module_headersOswald Buddenhagen2012-06-191-0/+20
| | | | | Change-Id: I650b495ec1789eb03b31d796f9f475ba01aab2d3 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* automatically add the version header to HEADERSOswald Buddenhagen2012-06-191-0/+9
| | | | | Change-Id: I7c2e1d852ebdbc5cca7a3a31ab2b4c9ab9faffd9 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* factor out qt_module_headers.prfOswald Buddenhagen2012-06-191-0/+4
this doesn't make too much sense as such, but the file will grow. Change-Id: Iceaecdc24f83b3dafb40c8d2f1b6cddafa2d70a1 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>