Commit Graph

240 Commits

Author SHA1 Message Date
Oswald Buddenhagen
19877a0507 automatically exclude generated headers from syncqt checks
Change-Id: I349a132745165f8873eda351e86bf15c90156aaf
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-18 17:11:06 +00:00
Oswald Buddenhagen
a5bb91c2b8 make it possible to exclude private headers from syncqt include check
the limitation to public headers seemed pretty arbitrary.

Change-Id: I0f2290fe09c8a6a70d056ec250b902be7049790e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-08-18 17:11:02 +00:00
Oswald Buddenhagen
f93032848e Merge remote-tracking branch 'origin/5.6.0' into 5.7
Change-Id: Idcda6d52266f557ce4a819b6669f6797473a48a2
2016-03-07 17:08:56 +01:00
Simon Hausmann
38944d662e Fix syncqt.pl not respecting #pragma qt_no_master_include in files with Windows line endings
We need to do the same chop trick that we do further down the file.

Change-Id: If4f832f375a11473e66adfcfa76a3b4504b3d406
Task-number: QTBUG-51324
Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-25 16:25:37 +00:00
Thiago Macieira
cfe891eeb8 Add Intel copyright to files that Intel has had non-trivial contribution
I wrote a script to help find the files, but I reviewed the
contributions manually to be sure I wasn't claiming copyright for search
& replace, adding Q_DECL_NOTHROW or adding "We mean it" headers.

Change-Id: I7a9e11d7b64a4cc78e24ffff142b506368fc8842
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-21 22:44:21 +00:00
Jani Heikkinen
1a88b2f768 Updated license headers
From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/

Updated license headers to use new LGPL header instead of LGPL21 one
(in those files which will be under LGPL v3)

Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-15 12:25:24 +00:00
Thiago Macieira
3304ea8f0e syncqt.pl: say "ERROR" when it's an error
Change-Id: I0f2ce894387048f78465ffff141cdae9ea760175
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-12-08 06:32:24 +00:00
Thiago Macieira
dae77465d1 syncqt: print errors and warnings to stderr
Change-Id: Ib056b47dde3341ef9a52ffff13ef5f6b8d21aeab
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-12-05 00:05:24 +00:00
Joerg Bornemann
ad963ef05b syncqt: fix false positives in header check
Restore the condition for deciding what a private header is from
fe383e04 to not check *_pch.h files and third party headers.
This amends commit eddb938c.

Change-Id: Idc55269478e7f2c98fb7debceef8a53c3cb5c657
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-12-02 15:05:56 +00:00
Joerg Bornemann
eddb938c39 Remove duplicated header iteration code
Do not iterate separately over all header files. This removes
duplicated header iteration code which already was out of sync.
As a side-effect, we do run the header check only on header files that
are considered part of the module, if moduleheaders is set in
sync.profile.

Change-Id: Iec4c8febe9128139d2f377a1da8ce08c24110a77
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-11-27 17:28:47 +00:00
Joerg Bornemann
779d2aa5fc Factor header check out into a separate function
Another step towards the removal of the duplicated loop over header
files.

Change-Id: I542782627d8742a515a42034264e4569a2355823
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-11-27 17:28:39 +00:00
Joerg Bornemann
1dd1e48e73 Simplify tests whether to run header checks
Turn lists into hashes and check for existence of an element using key
lookup. This leads to simpler testing code and is potentially faster.

Change-Id: Ibbf4f03ec64d6c295cc5e1664dfa73cd0ce8c272
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-11-27 17:28:32 +00:00
Oswald Buddenhagen
ded63fbb94 make a proper header-only module for QtZlib
that way other modules can use the headers without hacks.

this required making the base directory for paths in headers.pri
configurable in syncqt.

Change-Id: Id35cfe05bcf4c576d3f2d0d8d09590a5e23d21d3
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-11-17 20:22:17 +00:00
Thiago Macieira
c9e2763909 syncqt: complain if a public header includes a private one
We should even cause syncqt to exit, but that would cause developers
trying to test something to be unable to. So leave it just with an
"ERROR" message. That is hopefully enough.

Change-Id: Ib056b47dde3341ef9a52ffff13ef5f8588b62b99
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-10-15 16:20:37 +00:00
Thiago Macieira
2d2cb6434f Move the official Qt version from qglobal.h to .qmake.conf
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>
2015-10-14 20:12:57 +00:00
Thiago Macieira
fe383e045b syncqt: scan private headers for the "We mean it" comment
Change-Id: Ib056b47dde3341ef9a52ffff13ef5f50c72d753d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-10-02 16:48:01 +00:00
Friedemann Kleint
e1350c56c1 fixqt4headers.pl: Improve detection of Qt 5 location.
Obtain the location of the include files by querying
the qmake variable QT_INSTALL_HEADERS by default, which
can be overridden by the command line option.

Task-number: QTBUG-45662
Change-Id: I03a781e9b98f5e2980dbaef86eedd05aec0103ce
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-04-22 10:23:41 +00:00
Thiago Macieira
6668f5becf Implement a more direct headersclean check
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>
2015-04-17 00:54:45 +00:00
Jani Heikkinen
cb95fff1c7 Fixed license headers
Change-Id: Ibebe1318d1c2de97601aa07269705c87737083ee
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-17 18:46:09 +00:00
Oswald Buddenhagen
b6f0060f60 support spaces in build and install dirs
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>
2015-02-17 18:28:00 +00:00
Jani Heikkinen
83a5694dc2 Update copyright headers
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.

Outdated header.LGPL removed (use header.LGPL21 instead)

Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing
combination. New header.LGPL-COMM taken in the use file which were
using old header.LGPL3 (src/plugins/platforms/android/extract.cpp)

Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license
combination

Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe
Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
2015-02-11 06:49:51 +00:00
Thiago Macieira
1eb7005850 Use the new warning enabling/disabling macros in qtbase
Change-Id: I91ff06644e8047c2ca483f9768b46c1372eb6171
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-12-03 18:09:17 +01:00
Olivier Goffart
84e189502a syncqt: Fix regexp capturing class names of partial specialisation
Example with this code:
"template <class Key> struct QHashNode<Key, QHashDummyValue> {"

The previous regexp would take "QHashNode<Key," as some keyword,
and "QHashDummyValue>" as the class name.  By forbidding '<' in the
keyword, we avoid such mistake

Change-Id: I5d5077b9e5e764e91899bcaef137d99214ea5d63
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-07-08 16:12:44 +02:00
Oswald Buddenhagen
c9be7743cd nuke findtr script
it's a precursor of lupdate from the stone age.

[ChangeLog][Tools] The obsolete findtr script was removed.

Task-number: QTBUG-30900
Change-Id: Ic3efdc44df084573aec2512d8f86101832253d77
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-05-21 13:41:30 +02:00
Oswald Buddenhagen
f8c5dd9857 automate handling of generated headers some more
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>
2014-02-28 03:17:11 +01:00
Oswald Buddenhagen
46feffea1b de-duplicate header install source calculation
Change-Id: I7c26d70fdfceac6d3c562e704cc725fad80c4f59
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-02-28 03:17:11 +01:00
Oswald Buddenhagen
e8b2ff63ec remove duplicated nested condition
Change-Id: I433773dbf21a7a7625d4f763b3cebe75c746aa1f
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-02-28 03:17:11 +01:00
Oswald Buddenhagen
40babf8b4a un-pluralize code
since ever we've thrown out the phonon hack, each header is synced to
only one location (CamelCase headers notwithstanding).

Change-Id: Idfef33db9410908aefe309bc7a3edeae5fc5a671
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-02-28 03:17:11 +01:00
Oswald Buddenhagen
6571aaf1c4 merge %explicitheaders into %classnames
no need to have two mechanisms for the same thing.

the values of %classnames can be comma-separated lists now, so one
header can have multiple classes assigned. conversely, if an extracted
class name reverse-maps to a different file name, it is omitted.

Change-Id: Ia0a35d64764b6376f33b77bbfe59e1df70a3cf1a
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-02-28 03:17:11 +01:00
Oswald Buddenhagen
3d50a09645 remove vestiges of uic class map code
amends ad52be1ac.

Change-Id: I2bfb10908217708c4f046d0d315dadd1b626da12
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-02-28 03:17:11 +01:00
Frederik Gladhorn
e5bcf68d30 Merge "Merge remote-tracking branch 'origin/release' into stable" into refs/staging/stable 2013-06-15 22:39:25 +02:00
Oswald Buddenhagen
af2f1e14f6 don't touch deprecated headers unless they actually change
Change-Id: Iabeec90c2a6549cf92b3b8369a41764a576fd0aa
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-12 13:03:06 +02:00
Oswald Buddenhagen
ad52be1acc purge dead uic class map code.
Change-Id: I9b67924a66c847cd4cf2ce9f2996017ae7eb61a4
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-12 13:03:01 +02:00
Oswald Buddenhagen
f5a5272bc7 remove unused symlinkFile() function
Change-Id: Ie235fe65020ed7c4870d9c8784a181bf880b9e28
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-12 13:02:58 +02:00
Oswald Buddenhagen
150408e37d don't process ANGLE and zlib headers like real qt modules
we run syncqt on them only to get normal forwarding headers and the
headers.pri file. the module master include header and the module
version header are useless, and scanning for qt class names just wastes
time.

Change-Id: I58e8d1eb36cea5c31cbd46ce673438316d1963dc
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-10 21:12:05 +02:00
Oswald Buddenhagen
96557bc389 move module master header generation back to syncqt
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>
2013-06-03 17:59:42 +02:00
Oswald Buddenhagen
8d69232b28 let configure create the forwarding qconfig.h again
this avoids that syncqt needs to forward to a yet unexisting file (which
will have a yet unknown location, when syncqt is run at packaging time
already).

the %inject_headers syncqt config variable remains, so it can be told
not to purge "foreign" files.

Change-Id: I127ff6e0b7d5702fb0acaee9a5b7940b482d3608
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-03 17:59:31 +02:00
Oswald Buddenhagen
5d8b8eed90 move module version header generation back to syncqt
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>
2013-06-03 17:59:25 +02:00
Oswald Buddenhagen
5c555e3a29 factor out writeFile() function
Change-Id: I8e3e1665d7628c3210d000c46dfffa9f1af71009
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-06-03 17:59:19 +02:00
Oswald Buddenhagen
6b38524bba get rid of syncqt wrapper scripts
instead, rename it to syncqt.pl and rely on qtPrepareTool()'s new
ability to correctly invoke it as a perl script even under windows.
the wrappers themselves have been trivial at this point, so there is no
added value in keeping them, either.

Change-Id: I77cf65edbcfaa48ed1900defe940d4eb4b82d5b9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-05-13 21:54:48 +02:00
Andrew Knight
a27877c8e9 Handle more drive fix situations in syncqt
Normalize paths that begin with <drive_letter>:/ as well.

Task-number: QTBUG-30638
Change-Id: Icdc7ee9782a358771d06ae2500d32e59e6bbe866
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-04-20 11:35:10 +02:00
Oswald Buddenhagen
52cad781d3 restore compat with older perl versions
the // operator is a tad too new.

Task-number: QTBUG-30637
Change-Id: I3672d41a4a17937ffea251f0937b09045d6c386d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-04-19 20:10:46 +02:00
Oswald Buddenhagen
6c9e8e611f don't complain about missing macros in <module>version.h
we just generated them, and they really don't need QT_{BEGIN,END}_*.

Change-Id: Ib7b2454ae80762e644d9667106960cc7632f90fc
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-04-02 18:58:28 +02:00
Samuel Rødal
2ab9b747fc Merge remote-tracking branch 'gerrit/release' into stable
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
2013-03-21 08:49:01 +01:00
Oswald Buddenhagen
e79e1c1a16 pass module version to syncqt
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>
2013-03-20 19:03:45 +01:00
Ray Donnelly
7d408c543f syncqt: Use /usr/bin/env perl not /usr/bin/perl
This is because on some systems, /usr/bin/perl is too old to
run syncqt. MSYS is one such system.

Change-Id: I3e1aa2db557cc3919618350775e7218ae05aa93f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-02-20 22:19:43 +01:00
Frederik Gladhorn
e65cd6f379 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/concurrent/doc/qtconcurrent.qdocconf
	src/corelib/doc/qtcore.qdocconf
	src/corelib/global/qglobal.h
	src/dbus/doc/qtdbus.qdocconf
	src/dbus/qdbusmessage.h
	src/gui/doc/qtgui.qdocconf
	src/gui/image/qimagereader.cpp
	src/network/doc/qtnetwork.qdocconf
	src/opengl/doc/qtopengl.qdocconf
	src/opengl/qgl.h
	src/plugins/platforms/windows/qwindowswindow.cpp
	src/printsupport/doc/qtprintsupport.qdocconf
	src/sql/doc/qtsql.qdocconf
	src/testlib/doc/qttestlib.qdocconf
	src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf
	src/widgets/doc/qtwidgets.qdocconf
	src/xml/doc/qtxml.qdocconf

Change-Id: Ie9a1fa2cc44bec22a0b942e817a1095ca3414629
2013-02-14 14:24:57 +01:00
Aaron McCarthy
0114a99bad Fix missing namespace macro warnings when building Qt Addon modules.
Addon modules may not be in the standard Qt namespace and therefore do
not use the QT_{BEGIN,END}_NAMESPACE macros.  Instead module specific
QT_{BEGIN,END}_NAMESPACE_FOO macros are used.  Extend the syncqt test
to allow for this and ensure that the QT_END_NAMESPACE suffix matches
the QT_BEGIN_NAMESPACE suffix.

Change-Id: I33110c01118b0fb4376307db7447f747fc38bb29
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-02-11 10:58:25 +01:00
Oswald Buddenhagen
d1965abaa1 purge broken line continuation parsing
it would have taken only the last line, which is clearly wrong. as
nobody noticed this, the handling is clearly not needed.

Change-Id: I6f4f45ce8c90cb9b0ef60abbaa5ed49b54d8b47d
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-01-30 13:50:33 +01:00
Sergio Ahumada
9d20f4b629 syncqt: Don't check for QT_{BEGIN,END}_HEADER macros
The QT_{BEGIN,END}_HEADER macros have never worked and
might be potentially removed.

Also removing the list of blacklisted files from sync.profile

Change-Id: I601969cf8eddf3908c3ad46f63af9434670d4046
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-01-26 18:18:46 +01:00
Luís Pereira
f9f83e1ef7 fixqt4headers: Fix typo in QtMultimedia headers module name
Commit 003860b5 introduced QtMultimedia, but with a typo. It broke the
script.

Change-Id: Ie3fd536d90f52419818f36ba1b28d437b965dcdc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-01-18 17:58:48 +01:00
Sergio Ahumada
48e0c4df23 Update copyright year in Digia's license headers
Change-Id: Ic804938fc352291d011800d21e549c10acac66fb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-01-18 09:07:35 +01:00
Oswald Buddenhagen
cc90d4a563 fix installation of aux headers
the source paths need to be made relative to the main source dir

Change-Id: I98d74eca7e54d1179ab602bb87b96b66f3193ce4
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-12-13 09:11:03 +01:00
Oswald Buddenhagen
a8b7553e46 remove phonon vestiges
Change-Id: Id345fdd986dd60d4e7212fde265bd7357794bd9a
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-12-13 09:10:49 +01:00
Oswald Buddenhagen
4b819803f6 don't check modules which were not requested
Change-Id: I4928b37239af21dfc6edc84f1e989a2717614629
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-12-05 17:29:46 +01:00
Oswald Buddenhagen
24f623beda support flagging all headers from a particular source directory as privates
Change-Id: Ia893abc95b358d8a8ffd690563f2f02bc20fd98d
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-12-04 13:57:51 +01:00
Oswald Buddenhagen
2274bef6b2 fix support for multiple source directories per module
Change-Id: I040cb928e016c3a8257a1bcbf20627d67f07c84d
Reviewed-by: Liang Qi <liang.qi@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-12-04 13:57:48 +01:00
Oswald Buddenhagen
27b66e43c0 remove vestiges of QT_MODULE() checking code
Change-Id: Icf863c3ca7218af54cb5698d848db786d49481cc
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-12-04 13:57:45 +01:00
Oswald Buddenhagen
4315545f89 remove support for hand-written module pri files
all modules have been migrated to auto-generation

Change-Id: Ie7b3ebfd735a22f8e0b0339909b6385508d7a6b3
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2012-12-03 15:56:28 +01:00
Lars Knoll
003860b5a7 fixqt4headers: Remove QtQuick1 and add QtMultimedia
QtQuick1 is QtDeclarative again, so there's no header
file renaming needed. But Multimedia got renamed from
multimediakit and this needs to be included.

Change-Id: Ie787d6841f0525e1dc290f7ca8d9cae148308e32
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2012-11-28 16:21:57 +01:00
Thiago Macieira
c67a5df8d8 Rename the syncqt -qtdir to -mkspecsdir
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>
2012-10-19 00:44:54 +02:00
Oswald Buddenhagen
0986448647 restore compat with old perl: don't use \h in regexps
Task-number: QTBUG-27543
Change-Id: I94a1368de69faeabe359e2c5e1f22879e9e96cc8
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-10-16 17:31:31 +02:00
Friedemann Kleint
69d1a4edb9 syncqt: Fix warnings about missing QT_BEGIN_HEADER/NAMESPACE.
Do not print warnings when stop-processing pragma was encountered.

Change-Id: I0dd3b317b3a685afe613527988eb137325037e16
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-10-13 05:51:19 +02:00
Iikka Eklund
be15856f61 Change copyrights from Nokia to Digia
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>
2012-09-22 19:20:11 +02:00
Oswald Buddenhagen
695051f3be move the module validation below the loading of sync.profile
otherwise the -module option will always die.

Change-Id: I023ea5681a03a2848e1084eedbbcc66f8d060b69
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-09-19 19:54:44 +02:00
Oswald Buddenhagen
cef552a741 remove setcepaths.bat
we don't need it any more, as the makefiles are self-contained now.

Change-Id: I1a560a8331856e246e03c55ec1b1dd1a5cb112e4
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-09-11 17:24:15 +02:00
Oswald Buddenhagen
8d97eb298d introduce -minimal mode to syncqt and use it for bootstrapping
the bootstrap does not need CamelCase includes, deprecated headers and
whatnot, so just don't do it. the full thing will be run on qtbase by
qmake.

Change-Id: Idffdd4750a73574c8c32ee75d00080abfe37e03c
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-09-11 17:23:27 +02:00
Oswald Buddenhagen
8a879a6148 de-duplicate code
Change-Id: Ic3f2bfeb5a16da86b1cd471b55dfc79f12dfadee
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-08-28 20:47:11 +02:00
Marc Mutz
d811b2434b syncqt: parse classes that use Q_DECL_FINAL|final|sealed
I've introduced a variable $post_kw (post-class-keywords) that
contains the patterns which are expected after a class name.
This variable is used both for a negative look-ahead assertion
in the class-name capture (so the regex doesn't parse the
keywords as the class-name), as well as to carry the parser
over the keywords into the subclass clauses.

Change-Id: Ia534ca01a511e1c773d007f1b0b4f448e8d009d0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-26 14:29:51 +02:00
Lars Knoll
a70eb262c1 Skip doc subfolders when checking includes.
This removes the bogus warnings when running
syncqt from configure about snippets in the doc/
folders.

Change-Id: I8e3d258238c1cd1e763ce63b895d58b68bbc06f3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 15:37:46 +02:00
Oswald Buddenhagen
444cbd53e2 make sure that the stale header removal works the first time around
sort backwards by ascii, so that the lowercase headers come first -
otherwise the camelcase headers would survive the first round, as they
include the lowercase forwarding headers which were not deleted yet.

Change-Id: Iece2788206d31a11428f38da8d8f9f4d0b6dc992
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-27 16:19:43 +02:00
Oswald Buddenhagen
28d5967e68 generate the module version header directly in the include directory
... instead of having a forward from the include dir to the (shadowed)
source dir of the module.

Change-Id: I967227950e8aeb1b9f62befbf9fff3746a0486b6
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-07-18 19:48:59 +02:00
Oswald Buddenhagen
311fe0e811 remove support for forwarding module pri creation via syncqt
now that all modules have migrated, this dead code can be removed.

Change-Id: I5e9c7dd3fb271346d1b5f0e2930874da3e4d2d57
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
2012-07-16 18:34:06 +02:00
Oswald Buddenhagen
b175e7b7c9 remove support for syncqt-based config tests
now that all modules have migrated, dispose of the clutter.

Change-Id: Ib8937c1452536f645b76c0097b927df1108afc1a
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-07-12 17:18:36 +02:00
Girish Ramakrishnan
037238022f Make QWindowSystemInterface part of QPA API
As discussed on mailing list and QtCS 2012.

Any file starting with qwindowsystem is now marked as
QPA API.

This change drops _qpa from the filenames and adds gui-private
where required for the code to compile. This change is backward
compatible otherwise and compat headers are created for
the old inclusion headers.

Change-Id: I72ea0f394dee74f46e614fcf11ab5500ac9fef2a
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2012-07-03 01:55:37 +02:00
Oswald Buddenhagen
a56ef02b2d let default_pre add modules to the qmake path
that way qmake is made aware of the forwarding pris which are generated
for this module even when a top-level .qmake.cache prevents the module's
root from being found automatically.
the path is also added to the cache, so that subsequent partial
qmake-ing of the tree will still find the module.

this also makes the -cache-module-fwd parameter of syncqt useless, so
remove it.

Change-Id: I2afbc52a465c0b3260e9bcaf032c43a82ae8061f
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:03 +02:00
Oswald Buddenhagen
32042413f2 move generation of module master headers to qt_module_headers
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>
2012-06-19 16:46:01 +02:00
Oswald Buddenhagen
8dba9e50ac make master phonon compat header a forwarding header
instead of writing the same file twice, just forward to the compat
header, like it is done for every other header.

Change-Id: I8c908f80149aff4720cca6d51ab5b550c31f78b1
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:46:01 +02:00
Oswald Buddenhagen
2d8dd9a6c9 do not route qtmodule-configtests invocation through syncqt
there is completely no reason to do it.

Change-Id: Ie186ef4c1bbd12c256acb2fe374d12ebe777d6c9
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:45:57 +02:00
Oswald Buddenhagen
0b76b7ab8a auto-generate module pris
Change-Id: I654428771034221ccf424be34d5d9c7764daf3b4
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:06 +02:00
Oswald Buddenhagen
95b2e051f9 move creation of module version header to qt_module_headers
Change-Id: I650b495ec1789eb03b31d796f9f475ba01aab2d3
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:05 +02:00
Oswald Buddenhagen
e0839abbb4 create module version headers in build dir, not source dir
Change-Id: I07bf4dbeba2d35284ecf55542f9cd457b2e49b80
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:05 +02:00
Oswald Buddenhagen
3c69bb8291 make %inject_headers a per-module config value
it's module-specific.
on the way, fix it to actually support multiple files.

Change-Id: I796b0e98e38a54754022e0e2fa48cecb54d06ff4
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:05 +02:00
Oswald Buddenhagen
61bcd838fa automatically add the module version headers to %classnames
Change-Id: I7706a0d54e704320e9e1e480b387e46417739ccf
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:05 +02:00
Oswald Buddenhagen
94bd205575 make sure that forwards for injected headers are not garbage-collected
qmake-generated version headers don't exist yet at the time syncqt runs,
so the forwarding headers would be deleted - just to be re-created a
moment later, thus changing the timestamp for no good reason.

Change-Id: I1b4c2f05f57c2315adf4b8dd726ea413ede1be5b
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:04 +02:00
Oswald Buddenhagen
912f7efbd4 fix status output for generated headers
Change-Id: I92c250037eb1b1838998cddbaea6ca065153e86e
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:04 +02:00
Oswald Buddenhagen
a8ad1e77ba generate fwd-pris in qt_module_config, not in syncqt
the forwarding pri is loaded even if it was still created by syncqt, so a
top-level qmake -r will still catch it even in the future.

Change-Id: I2e4b556cd06eb88be9ee378662a2e6e1bff67ad7
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:03 +02:00
Oswald Buddenhagen
45711a8b73 write forwarding pris to $outpath/mkspecs/modules
this makes qmake find them automatically now.
consequently, also do not write QMAKE_EXTRA_MODULE_FORWARDS to
.qmake.cache. still write the cache file, though, as otherwise a
top-level cache would mess up the module root detection.

Change-Id: I998b94fcc73ca3f8bf1af09a394ff8d40cf1fb76
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
2012-06-19 16:40:01 +02:00
Oswald Buddenhagen
ab9f0e694f move $QTDIR handling out of syncqt
instead, always pass -qtdir (which, btw, is a slight misnomer - it
should be -qtdatadir) with the correct path. this centralizes the
relevant logic in default_pre.prf.

Change-Id: Icc788d3f3e5f7b68b444e63e181efdea3b4ef160
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
2012-06-19 16:39:59 +02:00
Oswald Buddenhagen
c98b223567 rewrite fixPaths()
now the phonon paths are actually normalized.
just relying on File::Spec for the path relativization, so the code is
much shorter.

Change-Id: I69d6bac73e366ed0f754e1282a375871ce5559c4
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
2012-06-19 16:39:53 +02:00
Oswald Buddenhagen
800aef3424 remove dead variable
Change-Id: Ic37c2a0da6346f044df10c7d8b5ee1a95efcc29c
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
2012-06-19 16:39:53 +02:00
Oswald Buddenhagen
208184071e don't use abs_path on input arguments
for one, the input paths are already absolute.
second, if a path does not exists, abs_path will fail, which makes the
fallback code which tries to create them rather pointless.

Change-Id: Ie56ff09313e48e82e8bc8e8f06eca384644de464
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
2012-06-19 16:39:53 +02:00
Joerg Bornemann
6375cbf99a make syncqt work with MSys Perl and MSVC
The common root dir detection was broken, because
of an inconsistent root drive path style:
    <srcbase> = /c/dev/qt/5.0/qtbase
    <outbase> = C:/dev/qt/5.0/qtbase

Now we don't need ActivePerl anymore.
The Perl that comes with msysgit is enough.

After every Perl function call that returns a file path
we need to normalize it to bring it into a form that can
be used by
    - Perl functions that take a path as parameter,
    - C++ sources as include file path,
    - qmake's .pro files as include file path.

Task-number: QTBUG-25912
Change-Id: If1cf56cc7246a9d6535cd3867222f225d1617712
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-06-01 18:26:18 +02:00
Girish Ramakrishnan
33edd606ae Fix qpa legacy headers installation
syncqt is run twice when using the top level configure (as in
the CI system). The pri_install_files and pri_install_pfiles
variables are not populated if the file already exists when
generating the compatibility headers.

Therefore, headers.pri ends up with different content in
each syncqt run. In the first run, the compatibility headers
are part of SYNCQT.HEADER_FILES. In the second run, they
are not part of it since the header files already exist.

Change-Id: I4908fb934a639a3c9f6af1796d56a40fd4df2d50
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@nokia.com>
2012-05-09 06:42:25 +02:00
Girish Ramakrishnan
4a58853aea Fix qpa files installation
qpa header files were not installed under qpa/.

Change-Id: I243c3a7e83a342f7485791a1a29b65c9a8f25d6b
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
2012-05-08 20:03:49 +02:00
Girish Ramakrishnan
36547f4eff Expose QPA API under qpa/*
The main reasons for doing this are:
1. _qpa.h end up in the master QtGui include file. QtGui is meant for
userland applications. qpa code is neither binary nor source compatible.
Inadvertant use of QPA api makes the user code binary-incompatible.
2. syncqt creates forwarding headers for non-private header files. This
gives people the impression that this is public API.

As discussed on the mailing list, even though QPA api is internal and subject
to change, it needs to  treated differently from private headers since they
will be used by  in-qtbase and out-of-qtbase plugins.

This commit does the following:
1. The _qpa in QPA header files is dropped.
2. syncqt now treats any file with qplatform prefix as a special file and
moves it to qpa/ directory. The recommended way of using QPA API in plugins
is: #include <qpa/qplatformfoo.h>. This allows the user include QPA API
from multiple modules (for example, qplatformfoo might be in QtPrintSupport)
3. The user needs to explicitly add QT += <module>-private to get access to
the qpa api.
4. Creates compat headers for the olden style qplatformfoo_qpa.h and QPlatformFoo
includes.

This commit does not change the cpp filenames. This requires a more careful
merging of existing non qpa cpp files and existing cpp files on a case by
case basis. This can be done at anytime.

The following files are not renamed as part of this changed but will be fixed
as part of a future change:
src/gui/kernel/qgenericpluginfactory_qpa.h
src/gui/kernel/qgenericplugin_qpa.h
src/gui/kernel/qwindowsysteminterface_qpa.h

files were renamed using

    for x in `find . -name "qplatform*_qpa.h"`; do git mv $x "${x/_qpa.h/.h}"; done
    for x in `find . -name "qplatform*_qpa_p.h"`; do git mv $x "${x/_qpa_p.h/_p.h}"; done

includes were renamed using script

for file in `find . -name "*.h" -or -name "*.cpp" -or -name "*.mm"`; do
    sed -i -e 's,.*#.*include.*<\(Qt.*/\)\?\(QPlatform.*\)>,#include <qpa/\L\2.h>,g' \
        -e 's,.*#.*include.*"\(Qt.*/\)\?\(QPlatform.*\)",#include <qpa/\L\2.h>,g' \
        -e 's,.*#.*include.* "\(qplatform.*\)_qpa.h",#include <qpa/\L\1.h>,g' \
        -e 's,.*#.*include.*"\(qplatform.*\)_qpa_p.h",#include <qpa/\L\1_p.h>,g' \
        -e 's,.*#.*include.*<\(Qt.*/\|Qt.*/private/\|private/\)\?\(qplatform.*\)_qpa\(.*\)>,#include <qpa/\2\3>,g' \
        -e 's,.*#.*include.*"\(Qt.*/\|Qt.*/private/\|private/\)\?\(qplatform.*\)_qpa\(.*\)",#include <qpa/\2\3>,g' \
        $file
done

Change-Id: I04a350314a45746e3911f54b3b21ad03315afb67
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
2012-05-07 20:25:24 +02:00
Lars Knoll
eef3f8c58a Ignore moduledir/doc in syncqt
When modularizing our documentation, module level
documentation is supposed to go into a doc
subfolder in the modules sources. Since this folder
also contains header files (snippets), we need to ignore
it in syncqt.

Change-Id: If8159816b042a1a6c810eaa0b6dbd99bf58d8ffa
Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-04-17 23:16:51 +02:00
Denis Dzyubenko
8692326629 Fixed syncqt to ignore all lines that define Qt namespace
That includes non-standard macroses for QtAddOns, e.g. for QtJsonDb addon the
macro looks like QT_BEGIN_NAMESPACE_JSONDB - by default syncqt doesn't
recognize the macro and concantenates it with the next line in the header file,
which breaks forward include generation if that next line is the class
definition.

Change-Id: Ia269f8a091113e4951d6a2615ef392b21bd5e3a3
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
2012-04-11 01:42:12 +02:00
Girish Ramakrishnan
1e13160a00 Fix qtmodule-configtests to honor error codes
The test is marked as fail if qmake or make fails.

Change-Id: I565c68af4a9271d7aa36fb592ac399aa728ba4d8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
2012-03-08 23:52:34 +01:00
Matthew Vogt
1f80ce8135 Report failure to open deprecated header file
If a deprecated header file is not writable, report the error message.
The existing error message statement is not processed due to an
operator precedence issue.

Change-Id: Ifb2d4e234c64e560d05c021c621966bce19ce215
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
2012-02-23 04:04:59 +01:00