From a97d4dcb24a9fc69ee57c5607005a4e8b85d3b32 Mon Sep 17 00:00:00 2001 From: Casper van Donderen Date: Mon, 4 Jul 2011 10:30:18 +0200 Subject: Remove references to QT_INSTALL_DEMOS & DemosPath. The distinction between 'examples' and 'demos' is completely blurred at this point. We've decided, with the SDK people, to scrap the existing terminology in favor of the word 'example' only -- distinguishing between code snippets, walkthroughs, "demonstrations" can be done via keywords or some other method. Removing QT_INSTALL_DEMOS from all .pro files in Qt is still in progress. Change-Id: I86fc0e40d54baa54c5641fc6acbd8b67e4ad2789 Reviewed-on: http://codereview.qt.nokia.com/1034 Reviewed-by: Qt Sanity Bot Reviewed-by: Marius Storm-Olsen --- qmake/option.h | 1 - qmake/property.cpp | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'qmake') diff --git a/qmake/option.h b/qmake/option.h index 83e9687cba..73a3e807aa 100644 --- a/qmake/option.h +++ b/qmake/option.h @@ -219,7 +219,6 @@ public: DataPath, TranslationsPath, SettingsPath, - DemosPath, ExamplesPath, ImportsPath }; diff --git a/qmake/property.cpp b/qmake/property.cpp index 33e5fa5c0a..24312287a4 100644 --- a/qmake/property.cpp +++ b/qmake/property.cpp @@ -104,7 +104,7 @@ QMakeProperty::value(QString v, bool just_check) else if(v == "QT_INSTALL_EXAMPLES") return QLibraryInfo::location(QLibraryInfo::ExamplesPath); else if(v == "QT_INSTALL_DEMOS") - return QLibraryInfo::location(QLibraryInfo::DemosPath); + return QLibraryInfo::location(QLibraryInfo::ExamplesPath); else if(v == "QMAKE_MKSPECS") return qmake_mkspec_paths().join(Option::dirlist_sep); else if(v == "QMAKE_VERSION") -- cgit v1.2.3 From 968596588b2b919aeccef64c2f932dca3e12b72a Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 11 Jul 2011 15:24:55 +0200 Subject: make the non-bootstrapped build work again Change-Id: I48d33bea7fd3081461e6edcf7077bfb749e2d2b7 Reviewed-on: http://codereview.qt.nokia.com/1433 Reviewed-by: Qt Sanity Bot Reviewed-by: Marius Storm-Olsen --- qmake/qmake.pri | 2 ++ qmake/qmake.pro | 1 + 2 files changed, 3 insertions(+) (limited to 'qmake') diff --git a/qmake/qmake.pri b/qmake/qmake.pri index d6c5f09107..79794e751c 100644 --- a/qmake/qmake.pri +++ b/qmake/qmake.pri @@ -68,6 +68,7 @@ bootstrap { #Qt code qlist.cpp \ qlinkedlist.cpp \ qlocale.cpp \ + qlocale_tools.cpp \ qmalloc.cpp \ qmap.cpp \ qmetatype.cpp \ @@ -111,6 +112,7 @@ bootstrap { #Qt code qlist.h \ qlinkedlist.h \ qlocale.h \ + qlocale_tools_p.h \ qmalloc.h \ qmap.h \ qmetatype.h \ diff --git a/qmake/qmake.pro b/qmake/qmake.pro index ac52bd8dd0..6c7d0d2f19 100644 --- a/qmake/qmake.pro +++ b/qmake/qmake.pro @@ -25,6 +25,7 @@ INCLUDEPATH += . \ generators/win32 \ generators/mac \ generators/symbian \ + generators/integrity \ $$QT_SOURCE_TREE/include \ $$QT_SOURCE_TREE/include/QtCore \ $$QT_SOURCE_TREE/include/QtCore/$$QT_VERSION \ -- cgit v1.2.3 From a84c87f1adea0981d6dce9cd82761ef21b2fa4d2 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 11 Jul 2011 16:55:53 +0200 Subject: make 1st argument of $$resolve_depends a variable this is braindead, but it's consistent with the rest of qmake and more performant. and the argument error message claimed it already anyway. Change-Id: I973368acc6ffbff17107085ccd68b0334cc3e681 Reviewed-on: http://codereview.qt.nokia.com/1436 Reviewed-by: Qt Sanity Bot Reviewed-by: Marius Storm-Olsen --- qmake/project.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'qmake') diff --git a/qmake/project.cpp b/qmake/project.cpp index 99aa0d3ae2..f6a45204f8 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -2285,7 +2285,7 @@ QMakeProject::doProjectExpand(QString func, QList args_list, fprintf(stderr, "%s:%d: resolve_depends(var, prefix) requires one or two arguments.\n", parser.file.toLatin1().constData(), parser.line_no); } else { - ret += resolveDepends(args[0].split(QString(Option::field_sep)), + ret += resolveDepends(values(args[0], place), (args.count() != 2 ? QString() : args[1]), place); } -- cgit v1.2.3 From fc42ffa15af3bc70a93b9def27282a046c00f809 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 11 Jul 2011 17:13:19 +0200 Subject: invert the output order of $$resolve_depends() it needs to go from highest order to lowest order. that's not relevant unless doing static linking. Change-Id: Ieb69e3949b4d9cc2d2a62f5661f31e3dc88ac882 Reviewed-on: http://codereview.qt.nokia.com/1454 Reviewed-by: Qt Sanity Bot Reviewed-by: Marius Storm-Olsen --- qmake/project.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'qmake') diff --git a/qmake/project.cpp b/qmake/project.cpp index f6a45204f8..feff736480 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -1815,7 +1815,7 @@ void calculateDeps(QStringList &sortedList, const QString &item, const QString & } if (org.contains(item)) { - sortedList += item; + sortedList.prepend(item); org.removeAll(item); } } -- cgit v1.2.3 From 1aa9affcf1cd177b91e0a92a18e937f8ae892af2 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 11 Jul 2011 17:17:18 +0200 Subject: fix misnomer: $$resolve_depends() => $$sort_depends() ... and re-add a real $$resolve_depends(), just in case. Change-Id: I489d6056546340ce95280fe7fd571e30c14470e7 Reviewed-on: http://codereview.qt.nokia.com/1455 Reviewed-by: Qt Sanity Bot Reviewed-by: Marius Storm-Olsen --- qmake/project.cpp | 23 +++++++++++++---------- qmake/project.h | 3 ++- 2 files changed, 15 insertions(+), 11 deletions(-) (limited to 'qmake') diff --git a/qmake/project.cpp b/qmake/project.cpp index feff736480..4a3d7b5737 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -81,7 +81,7 @@ enum ExpandFunc { E_MEMBER=1, E_FIRST, E_LAST, E_CAT, E_FROMFILE, E_EVAL, E_LIST E_SPRINTF, E_JOIN, E_SPLIT, E_BASENAME, E_DIRNAME, E_SECTION, E_FIND, E_SYSTEM, E_UNIQUE, E_QUOTE, E_ESCAPE_EXPAND, E_UPPER, E_LOWER, E_FILES, E_PROMPT, E_RE_ESCAPE, E_REPLACE, - E_SIZE, E_GENERATE_UID, E_RESOLVE_DEPENDS }; + E_SIZE, E_GENERATE_UID, E_SORT_DEPENDS, E_RESOLVE_DEPENDS }; QMap qmake_expandFunctions() { static QMap *qmake_expand_functions = 0; @@ -114,6 +114,7 @@ QMap qmake_expandFunctions() qmake_expand_functions->insert("replace", E_REPLACE); qmake_expand_functions->insert("size", E_SIZE); qmake_expand_functions->insert("generate_uid", E_GENERATE_UID); + qmake_expand_functions->insert("sort_depends", E_SORT_DEPENDS); qmake_expand_functions->insert("resolve_depends", E_RESOLVE_DEPENDS); } return *qmake_expand_functions; @@ -1803,32 +1804,32 @@ extern QString generate_test_uid(const QString& target); void calculateDeps(QStringList &sortedList, const QString &item, const QString &prefix, - QStringList &org, QMap &place) + QStringList &org, bool resolve, QMap &place) { if (sortedList.contains(item)) return; foreach(QString dep, place.value(prefix + item + ".depends")) { - calculateDeps(sortedList, dep, prefix, org, place); - if (org.isEmpty()) + calculateDeps(sortedList, dep, prefix, org, resolve, place); + if (!resolve && org.isEmpty()) break; } - if (org.contains(item)) { + if (resolve || org.contains(item)) { sortedList.prepend(item); org.removeAll(item); } } QStringList -QMakeProject::resolveDepends(const QStringList &deps, const QString &prefix, +QMakeProject::resolveDepends(const QStringList &deps, const QString &prefix, bool resolve, QMap &place) { QStringList sortedList; QStringList org = deps; foreach(QString item, deps) { - calculateDeps(sortedList, item, prefix, org, place); - if (org.isEmpty()) + calculateDeps(sortedList, item, prefix, org, resolve, place); + if (!resolve && org.isEmpty()) break; } return sortedList; @@ -2280,13 +2281,15 @@ QMakeProject::doProjectExpand(QString func, QList args_list, ret += generate_test_uid(args.first()); } break; + case E_SORT_DEPENDS: case E_RESOLVE_DEPENDS: { if(args.count() < 1 || args.count() > 2) { - fprintf(stderr, "%s:%d: resolve_depends(var, prefix) requires one or two arguments.\n", - parser.file.toLatin1().constData(), parser.line_no); + fprintf(stderr, "%s:%d: %s(var, prefix) requires one or two arguments.\n", + parser.file.toLatin1().constData(), parser.line_no, func.toLatin1().constData()); } else { ret += resolveDepends(values(args[0], place), (args.count() != 2 ? QString() : args[1]), + (func_t == E_RESOLVE_DEPENDS), place); } break; } diff --git a/qmake/project.h b/qmake/project.h index ec5e8930a4..5581d1fc00 100644 --- a/qmake/project.h +++ b/qmake/project.h @@ -107,7 +107,8 @@ class QMakeProject QStringList doVariableReplaceExpand(const QString &str, QMap &place, bool *ok=0); void init(QMakeProperty *, const QMap *); QStringList &values(const QString &v, QMap &place); - QStringList resolveDepends(const QStringList &deps, const QString &prefix, QMap &place); + QStringList resolveDepends(const QStringList &deps, const QString &prefix, bool resolve, + QMap &place); void validateModes(); public: -- cgit v1.2.3 From 0f32f596eaa06737c5362f47d1cafef7edf2fa5f Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 11 Jul 2011 17:44:27 +0200 Subject: inline resoveDepends() that's common practice for the expand functions, and that one isn't even particularly big Change-Id: I66c22e11edb66bd00d211fc1282eb75f5dd4832d Reviewed-on: http://codereview.qt.nokia.com/1456 Reviewed-by: Marius Storm-Olsen --- qmake/project.cpp | 27 +++++++++------------------ qmake/project.h | 2 -- 2 files changed, 9 insertions(+), 20 deletions(-) (limited to 'qmake') diff --git a/qmake/project.cpp b/qmake/project.cpp index 4a3d7b5737..4a4b73f11e 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -1821,20 +1821,6 @@ void calculateDeps(QStringList &sortedList, const QString &item, const QString & } } -QStringList -QMakeProject::resolveDepends(const QStringList &deps, const QString &prefix, bool resolve, - QMap &place) -{ - QStringList sortedList; - QStringList org = deps; - foreach(QString item, deps) { - calculateDeps(sortedList, item, prefix, org, resolve, place); - if (!resolve && org.isEmpty()) - break; - } - return sortedList; -} - QStringList QMakeProject::doProjectExpand(QString func, QList args_list, QMap &place) @@ -2287,10 +2273,15 @@ QMakeProject::doProjectExpand(QString func, QList args_list, fprintf(stderr, "%s:%d: %s(var, prefix) requires one or two arguments.\n", parser.file.toLatin1().constData(), parser.line_no, func.toLatin1().constData()); } else { - ret += resolveDepends(values(args[0], place), - (args.count() != 2 ? QString() : args[1]), - (func_t == E_RESOLVE_DEPENDS), - place); + bool resolve = (func_t == E_RESOLVE_DEPENDS); + QString prefix = (args.count() != 2 ? QString() : args[1]); + QStringList deps = values(args[0], place); + QStringList org = deps; + foreach(const QString &item, deps) { + calculateDeps(ret, item, prefix, org, resolve, place); + if (!resolve && org.isEmpty()) + break; + } } break; } default: { diff --git a/qmake/project.h b/qmake/project.h index 5581d1fc00..68110a8448 100644 --- a/qmake/project.h +++ b/qmake/project.h @@ -107,8 +107,6 @@ class QMakeProject QStringList doVariableReplaceExpand(const QString &str, QMap &place, bool *ok=0); void init(QMakeProperty *, const QMap *); QStringList &values(const QString &v, QMap &place); - QStringList resolveDepends(const QStringList &deps, const QString &prefix, bool resolve, - QMap &place); void validateModes(); public: -- cgit v1.2.3 From fe9cb4a5088a5aa760df02bbe8d6c7e06e28b073 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 11 Jul 2011 17:19:45 +0200 Subject: fix $$resolve_depends() make it a proper topological sort. before, it could not resolve diamonds correctly. Change-Id: I17ffd81020ab36e7e5dbcfd120793ba8d9c6cf18 Reviewed-on: http://codereview.qt.nokia.com/1435 Reviewed-by: Qt Sanity Bot Reviewed-by: Marius Storm-Olsen --- qmake/project.cpp | 60 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 24 deletions(-) (limited to 'qmake') diff --git a/qmake/project.cpp b/qmake/project.cpp index 4a4b73f11e..ff5957765a 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -1802,23 +1802,25 @@ QMakeProject::doProjectExpand(QString func, QStringList args, // defined in symbian generator extern QString generate_test_uid(const QString& target); - -void calculateDeps(QStringList &sortedList, const QString &item, const QString &prefix, - QStringList &org, bool resolve, QMap &place) +static void +populateDeps(const QStringList &deps, const QString &prefix, + QHash > &dependencies, QHash &dependees, + QStringList &rootSet, QMap &place) { - if (sortedList.contains(item)) - return; - - foreach(QString dep, place.value(prefix + item + ".depends")) { - calculateDeps(sortedList, dep, prefix, org, resolve, place); - if (!resolve && org.isEmpty()) - break; - } - - if (resolve || org.contains(item)) { - sortedList.prepend(item); - org.removeAll(item); - } + foreach (const QString &item, deps) + if (!dependencies.contains(item)) { + QSet &dset = dependencies[item]; // Always create entry + QStringList depends = place.value(prefix + item + ".depends"); + if (depends.isEmpty()) { + rootSet << item; + } else { + foreach (const QString &dep, depends) { + dset.insert(dep); + dependees[dep] << item; + } + populateDeps(depends, prefix, dependencies, dependees, rootSet, place); + } + } } QStringList @@ -2273,14 +2275,24 @@ QMakeProject::doProjectExpand(QString func, QList args_list, fprintf(stderr, "%s:%d: %s(var, prefix) requires one or two arguments.\n", parser.file.toLatin1().constData(), parser.line_no, func.toLatin1().constData()); } else { - bool resolve = (func_t == E_RESOLVE_DEPENDS); - QString prefix = (args.count() != 2 ? QString() : args[1]); - QStringList deps = values(args[0], place); - QStringList org = deps; - foreach(const QString &item, deps) { - calculateDeps(ret, item, prefix, org, resolve, place); - if (!resolve && org.isEmpty()) - break; + QHash > dependencies; + QHash dependees; + QStringList rootSet; + + QStringList orgList = values(args[0], place); + populateDeps(orgList, (args.count() != 2 ? QString() : args[1]), + dependencies, dependees, rootSet, place); + + for (int i = 0; i < rootSet.size(); ++i) { + const QString &item = rootSet.at(i); + if ((func_t == E_RESOLVE_DEPENDS) || orgList.contains(item)) + ret.prepend(item); + foreach (const QString &dep, dependees[item]) { + QSet &dset = dependencies[dep]; + dset.remove(item); + if (dset.isEmpty()) + rootSet << dep; + } } } break; } -- cgit v1.2.3