Commit Graph

35 Commits

Author SHA1 Message Date
Oswald Buddenhagen
66802ef8bf implement simple VFS to support caching during project parsing
this tremendously speeds up loading of qt 5.1 based projects (including
qt itself) under mac os, as these look up the sdk dynamically, and use
caching to avoid doing that in every subproject.

Change-Id: I833253f81c3159056fab2ff888f293b36cc2ef56
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2013-06-04 15:42:13 +02:00
Oswald Buddenhagen
6a0a13f601 remove the entirely insane whitespace compression
it was merely an artifact of using QString::simplified() on the
unparsed (!) project code. there is no reason why anyone should actually
rely on it, so just remove it.

Change-Id: If9b957c4b1263f3990a2331f8851bb1c06154ea8
Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
(cherry picked from qtbase/c3c4f1eb5301a4fda17a9a48012df45f9a0ee7a3)
2013-05-17 14:52:23 +02:00
Oswald Buddenhagen
aa2508ba41 Fix qmake's pro file cache to interact correctly with write_file
When writing a file with write_file() we have to inform the pro file parser
cache to discard the file if it's existent in the cache, to ensure that
calling include() after write_file() always works.

Change-Id: I7d09269a57de55ca30b0e11dd40770de9f919f64
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
(cherry picked from qtbase/f45d6414ad6ef1d75f049a61411cd954bcae29c3)
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2013-05-17 14:52:06 +02:00
Oswald Buddenhagen
98fe30e297 permit returning from files
this allows skipping an entire feature file if a condition is not
fulfilled, without putting the whole body inside a conditional.

Change-Id: I84fe9c94dda58c794fb52c3f163b40563b0db30a
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
(cherry picked from qtbase/525eb337670f61078383c20ad9be274dcf2d0928)
2013-05-17 14:50:57 +02:00
Oswald Buddenhagen
1fda2111d4 Merge remote-tracking branch 'origin/2.6'
Conflicts:
	src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.pluginspec.in
	src/plugins/debugger/qtmessageloghandler.cpp
	src/plugins/debugger/qtmessagelogwindow.cpp
	src/plugins/madde/maemodeployconfigurationwidget.cpp
	src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
	src/plugins/qmldesigner/designercore/include/widgetqueryview.h
	src/plugins/qmldesigner/designercore/metainfo/metainfoparser.cpp
	src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp
	src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.h
	src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp
	src/plugins/qnx/bardescriptormagicmatcher.h
	src/plugins/qt4projectmanager/profilekeywords.cpp
	src/plugins/remotelinux/deployablefilesperprofile.cpp
	src/plugins/remotelinux/deployablefilesperprofile.h
	src/plugins/remotelinux/deploymentinfo.cpp
	src/plugins/remotelinux/deploymentsettingsassistant.cpp
	src/plugins/remotelinux/profilesupdatedialog.cpp
	tests/auto/icheckbuild/ichecklib.cpp
	tests/auto/icheckbuild/parsemanager.cpp
	tests/auto/icheckbuild/parsemanager.h

Change-Id: Ie465a578446a089e1c502d1cb1096e84ca058104
2013-01-31 16:25:33 +01:00
Robert Loehning
298531e370 Incremented year in copyright info
Change-Id: Ic6a9ff0359625021ebc061d22db6811814534205
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-01-29 16:27:03 +01:00
hjk
52be02d1cb QMakeParser: save one ByteArray construction
Change-Id: I2845fdefb8b32de227f08017e0e3ad98923d1c87
Reviewed-by: hjk <hjk121@nokiamail.com>
2013-01-24 10:41:24 +01:00
Orgad Shaneh
29a93998df Remove braces for single lines of conditions
#!/usr/bin/env ruby

Dir.glob('**/*.cpp') { |file|
  # skip ast (excluding paste, astpath, and canv'ast'imer)
  next if file =~ /ast[^eip]|keywords\.|qualifiers|preprocessor|names.cpp/i
  s = File.read(file)
  next if s.include?('qlalr')
  orig = s.dup
  s.gsub!(/\n *if [^\n]*{\n[^\n]*\n\s+}(\s+else if [^\n]* {\n[^\n]*\n\s+})*(\s+else {\n[^\n]*\n\s+})?\n/m) { |m|
    res = $&
    if res =~ /^\s*(\/\/|[A-Z_]{3,})/ # C++ comment or macro (Q_UNUSED, SDEBUG), do not touch braces
      res
    else
      res.gsub!('} else', 'else')
      res.gsub!(/\n +} *\n/m, "\n")
      res.gsub(/ *{$/, '')
    end
  }
  s.gsub!(/ *$/, '')
  File.open(file, 'wb').write(s) if s != orig
}

Change-Id: I3b30ee60df0986f66c02132c65fc38a3fbb6bbdc
Reviewed-by: hjk <qthjk@ovi.com>
2013-01-08 10:48:18 +01:00
Eike Ziller
6fd252b0a5 Merge remote-tracking branch 'origin/2.6'
Conflicts:
	share/qtcreator/qml/qmlpuppet/commands/endpuppetcommand.cpp
	share/qtcreator/qml/qmlpuppet/commands/endpuppetcommand.h
	src/plugins/debugger/qtmessageloghandler.cpp
	src/plugins/debugger/qtmessageloghandler.h
	src/plugins/debugger/qtmessagelogwindow.cpp
	src/plugins/madde/maemodeployconfigurationwidget.cpp
	src/plugins/madde/maemodeployconfigurationwidget.h
	src/plugins/remotelinux/deployablefilesperprofile.cpp
	src/plugins/remotelinux/deployablefilesperprofile.h
	src/plugins/remotelinux/deploymentinfo.cpp
	src/plugins/remotelinux/deploymentinfo.h
	src/plugins/remotelinux/deploymentsettingsassistant.cpp
	src/plugins/remotelinux/profilesupdatedialog.cpp
	src/plugins/remotelinux/remotelinuxdeploymentdatamodel.h
	tests/auto/icheckbuild/ichecklib.cpp
	tests/auto/icheckbuild/ichecklib_global.h
	tests/auto/icheckbuild/parsemanager.cpp
	tests/auto/icheckbuild/parsemanager.h
	tests/manual/ssh/tunnel/tunnel.h

Change-Id: I04d7761df6bd936ad00e0547974284c967d39580
2012-10-05 21:20:50 +02:00
hjk
386ca7c8dd Adjust license headers
Change-Id: Ice592c6de9951ee3b2c4cb52ed0bb3b6770e0825
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2012-10-05 17:12:56 +02:00
Oswald Buddenhagen
e730e2bb8a Merge remote-tracking branch 'gerrit/2.6'
Conflicts:
	src/libs/utils/environment.cpp
	src/plugins/android/androidtoolchain.cpp
	src/plugins/projectexplorer/gcctoolchain.cpp
	src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
	src/plugins/qtsupport/baseqtversion.cpp
	src/shared/proparser/qmakeevaluator.cpp

Change-Id: I554e96445a4d2b9ba0cc173ecd766091ee921aa2
2012-09-12 17:27:37 +02:00
Oswald Buddenhagen
f53ed6c4b3 don't pretend that break()/next()/return() are functions
it's a pretty braindead thing to implement control flow statements as
(built-in) functions.

as a "side effect", this fixes return() value handling for lists.

Change-Id: I59c8efa0e4d65329327115f7f8ed20719e7f7546
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-09-12 17:05:20 +02:00
Oswald Buddenhagen
00c0d0d5e4 improve parse error recovery paths
to reduce collateral damage from parse errors.

Change-Id: Ic59700d657069d3b15372509b4bff966057d27a9
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-09-12 17:05:17 +02:00
Eike Ziller
5ac721dd58 Merge remote-tracking branch 'origin/2.6'
Conflicts:
	qtcreator.pri
	qtcreator.qbp
	src/libs/utils/utils.pro

Change-Id: I6f0aba746f915d8c51dcf9372f7d9f593562fc2b
2012-09-11 14:02:03 +02:00
Oswald Buddenhagen
f24c986530 update size calculations for assignment statements
this was forgotten when the value lists were extended by a size hint.

Change-Id: I6f9b55ed671224a9b8735c8d937f94aac4a73a42
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-09-07 19:59:04 +02:00
Oswald Buddenhagen
8f9f655a0c namespace ProFileEvaluatorInternal => QMakeInternal
Change-Id: I0ffa76e802c0cc00d1866e7fe09ae54a6f535a6f
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-09-04 12:10:52 +02:00
Oswald Buddenhagen
ed74556444 add QMakeParser::ValueGrammar
this is a reduced RHS grammar to be used with
expandVariablesReferences() to implement the expansions in
QMAKE_SUBSTITUTES.
using the parser+evaluator for that is consistently up to 25% slower
than a purely interpreted approach - except for plain strings (with some
quoting), which happens to be exactly what is found in the template
files to substitute.

Change-Id: I219266460b970c6ddcb43cf85a914fbde6540271
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-09-03 19:44:27 +02:00
Oswald Buddenhagen
98afdc9279 compile without CamelCase headers
for faster bootstrapping of qmake

Change-Id: I602a023f4acbac276219bfc125863749ad96f754
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-09-03 19:43:49 +02:00
Oswald Buddenhagen
f8b33bdd28 warn about missing names in expansions
Change-Id: Ic571837c56c725e332bf504c4b2dd2dde2ac32e2
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-09-03 19:41:54 +02:00
Oswald Buddenhagen
00e9be4246 make messages from dynamic code tell a useful location
"(eval)" does not exactly help to find the error source.

Change-Id: Iecd03e6a4909ca6d7eab846844ca4415ebfa3429
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-09-03 17:56:24 +02:00
Oswald Buddenhagen
26e9f25a3e reject utf-8 boms
... like qmake does

Change-Id: I0724d1981278d0e7c4d7b4d4cfa435adaf3622ee
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-09-03 17:56:03 +02:00
Oswald Buddenhagen
c865baa2be slightly more elegant eof signalling
we don't really use the current character at this point, so don't fake
it and use the cur pointer as a flag.

Change-Id: I0dd31ff07fafe0748b88b3a573d25b689f0c3748
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:45:17 +02:00
Oswald Buddenhagen
e739841c63 implement if() by means of precompilation
the performance is about the same (depending on the expression type it's
better or worse), but a lot of code just disappears.

Change-Id: I60eb9b87f23cc811d3f9577841c38966ecfd8e43
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:44:55 +02:00
Oswald Buddenhagen
75cc8575b4 save a memory reallocation for short-lived parse results
everything which is not stored in the parser cache is assumed to be
disposed of rather soon anyway.
this increases peak memory usage per evaluator by a few kilobytes
(something in the order of five times the file size). as only manual
spec parsing and eval() statemenents in projects use non-cached parsers,
the impact is pretty much insignificant.

Change-Id: I326f312f4dd98b30b692d219de7ae092b6ad3584
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:44:36 +02:00
Oswald Buddenhagen
7c10134437 add support for option(host_build)
Change-Id: I7b16d13b0f94d0a2e4b4743a40dad9bd8b8b9698
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:38:09 +02:00
Oswald Buddenhagen
a93e24fd0d implement qmake language and deprecation warnings
Change-Id: Ia5dd0c408ace4e779da898ffb60e9ca12a383225
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-08-01 16:09:49 +02:00
Oswald Buddenhagen
0af96c128a revamp message callbacks
instead of having a bazillion different callbacks, have only one with a
type parameter. the drain typically multiplexes all into one stream anyway.

Change-Id: I963daefc5a266c91334a4cc599570ed26b603d5d
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-08-01 16:09:33 +02:00
Eike Ziller
e0e8cf3ada Contact -> qt-project.org
Change-Id: I7134d7de30bcf9f9dcfad42520dd45ee083a852d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-19 13:23:21 +02:00
Oswald Buddenhagen
4d3c58dee5 make the file error message a bit more informative
Change-Id: If6be3a280e0509541df0354f41a3ed1dad100239
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-07-13 19:30:11 +02:00
Oswald Buddenhagen
9067399e37 refactor relation between parsedProBlock() & parsedProFile()
this is clearer and not necessarily more code.

Change-Id: Ic698a8076658ae986d0dbdeebb1f4760dd806e35
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:18:22 +02:00
Oswald Buddenhagen
da26368d9e make qmake property map ProString-based
Change-Id: I3c25642b885171a47e8fd27e39e5d470d9f24db3
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-09 21:14:40 +02:00
Oswald Buddenhagen
f361579f92 remove stale code
with the removal of the skip jump label some time ago, this condition
became insatisfiable.

Change-Id: I4fc52ca8a38e048fd37c2ae6bfaae69acf09ada0
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-04 14:05:51 +02:00
Oswald Buddenhagen
c7596fa00d delete bogus FIXME
in the context of possibly using the same parse result for multiple
build configurations, resolving env variables already during parsing
would be just wrong.

Change-Id: I49367b5eff5868a38c026b8bd74148e0b359fffb
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-07-04 14:05:37 +02:00
Oswald Buddenhagen
55cad4a424 resolve some variables already at parse time
they are "compiler defines", with no dependency on the evaluation context.

Change-Id: I25bf006347ecd2edb501a344820e2ac11ff389e9
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-04 12:44:28 +02:00
Oswald Buddenhagen
888c187dd5 ProFileParser => QMakeParser
more natural name

Change-Id: I38d2a2fc785686aa5777afe41452b53f2c24adf8
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-07-04 12:05:03 +02:00