From e3904d45fa9c4c64139cf944cda031703c274ff5 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 8 Nov 2016 15:43:51 +0100 Subject: [PATCH 1/9] Update qbs submodule To HEAD of 1.6 branch. Change-Id: Ia1ef808a80e36529cb81167acb8d3109f5f058ea Reviewed-by: Joerg Bornemann --- src/shared/qbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/qbs b/src/shared/qbs index 738ed8e5c0d..d0516e84733 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 738ed8e5c0de334d780659bbef8a360154a87221 +Subproject commit d0516e847335e7f432f137bf4774a05b0c007569 From d121fefaa9631fa482bca534cf3d8d0f15b5ffc3 Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Thu, 10 Nov 2016 02:44:08 -0800 Subject: [PATCH 2/9] Qbs: fix Xcode SDK detection The Xcode related properties in the cpp module no longer exist. Use the correct ones, and be a little stricter about extracting the constituent components from the sysroot. Change-Id: I6ceaebf529764e69e1e04af6650a2920b139fac2 Reviewed-by: Christian Kandeler Reviewed-by: Eike Ziller --- .../defaultpropertyprovider.cpp | 26 +++++++++---------- src/plugins/qbsprojectmanager/qbsconstants.h | 6 ++--- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp index 88273086bfb..32c19f2ff35 100644 --- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp +++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp @@ -219,20 +219,20 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor data.insert(QLatin1String(QBS_TOOLCHAIN), toolchain); if (targetAbi.os() == ProjectExplorer::Abi::MacOS) { - // Set Xcode SDK name and version - required by Qbs if a sysroot is present - // Ideally this would be done in a better way... - const QRegExp sdkNameRe(QLatin1String("(macosx|iphoneos|iphonesimulator)([0-9]+\\.[0-9]+)")); - const QRegExp sdkVersionRe(QLatin1String("([0-9]+\\.[0-9]+)")); - QDir sysrootdir(sysroot); + // Reverse engineer Xcode developer path and canonical SDK name from sysroot + QDir sysrootdir(QDir::cleanPath(sysroot)); const QSettings sdkSettings(sysrootdir.absoluteFilePath(QLatin1String("SDKSettings.plist")), QSettings::NativeFormat); - const QString sdkName(sdkSettings.value(QLatin1String("CanonicalName")).toString()); - const QString sdkVersion(sdkSettings.value(QLatin1String("Version")).toString()); - if (sdkNameRe.exactMatch(sdkName) && sdkVersionRe.exactMatch(sdkVersion)) { - for (int i = 3; i > 0; --i) - sysrootdir.cdUp(); - data.insert(QLatin1String(CPP_PLATFORMPATH), sysrootdir.absolutePath()); - data.insert(QLatin1String(CPP_XCODESDKNAME), sdkName); - data.insert(QLatin1String(CPP_XCODESDKVERSION), sdkVersion); + const QString sdkCanonicalName(sdkSettings.value(QLatin1String("CanonicalName")).toString()); + if (!sdkCanonicalName.isEmpty()) { + const QRegularExpression re(QStringLiteral("^(?.*)/Platforms/(?MacOSX|(?:(?:iPhone|AppleTV|Watch)(?:OS|Simulator)))\\.platform/Developer/SDKs/(?MacOSX|(?:(?:iPhone|AppleTV|Watch)(?:OS|Simulator)))(?:[0-9]+\\.[0-9]+)\\.sdk/?$")); + const QRegularExpressionMatch match = re.match(sysrootdir.absolutePath()); + if (match.hasMatch() && + match.captured(QStringLiteral("platform")) == + match.captured(QStringLiteral("sdkplatform"))) { + data.insert(QLatin1String(XCODE_DEVELOPERPATH), + match.captured(QStringLiteral("developerpath"))); + data.insert(QLatin1String(XCODE_SDK), sdkCanonicalName); + } } } diff --git a/src/plugins/qbsprojectmanager/qbsconstants.h b/src/plugins/qbsprojectmanager/qbsconstants.h index dbcf3e76f79..3bdde156a06 100644 --- a/src/plugins/qbsprojectmanager/qbsconstants.h +++ b/src/plugins/qbsprojectmanager/qbsconstants.h @@ -43,9 +43,9 @@ const char CPP_COMPILERVERSIONPATCH[] = "cpp.compilerVersionPatch"; const char CPP_LINKERNAME[] = "cpp.linkerName"; const char CPP_PLATFORMCOMMONCOMPILERFLAGS[] = "cpp.platformCommonCompilerFlags"; const char CPP_PLATFORMLINKERFLAGS[] = "cpp.platformLinkerFlags"; -const char CPP_PLATFORMPATH[] = "cpp.platformPath"; -const char CPP_XCODESDKNAME[] = "cpp.xcodeSdkName"; -const char CPP_XCODESDKVERSION[] = "cpp.xcodeSdkVersion"; + +const char XCODE_DEVELOPERPATH[] = "xcode.developerPath"; +const char XCODE_SDK[] = "xcode.sdk"; // Settings page const char QBS_SETTINGS_CATEGORY[] = "YM.qbs"; From 2380757199b616129dc95b78139b6448c9fe6f9a Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 11 Nov 2016 06:49:52 +0100 Subject: [PATCH 3/9] QbsProjectManager: Fix missing include Avoid compile issue when using gcc 4.8. (error: variable 'const QRegularExpression re' has initializer but incomplete type) Change-Id: Ic89f9afdf0a6854948a21103a64ec8b8f4ad1681 Reviewed-by: Jake Petroules --- src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp index 32c19f2ff35..6488b81d6f9 100644 --- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp +++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp @@ -44,6 +44,7 @@ #include #include +#include #include namespace QbsProjectManager { From a8bb2af30e1b4454ee81518a3b268ee78739ba04 Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Thu, 10 Nov 2016 23:18:05 -0800 Subject: [PATCH 4/9] Qbs: fix Xcode SDK detection (take 2) This adds xcode to the toolchain list, which is required to load the Xcode module. It also uses the compiler path as the mechanism to find the developer path, and then extracts the canonical SDK name using the sysroot if it's a valid one for the previously extracted developer path. amends d121fefaa9631fa482bca534cf3d8d0f15b5ffc3 Change-Id: I73cf1a50acd6b99a9fc3b6003bcc6dc23c2a04ab Reviewed-by: Eike Ziller Reviewed-by: Christian Kandeler --- .../defaultpropertyprovider.cpp | 56 ++++++++++++------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp index 6488b81d6f9..93371294fa0 100644 --- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp +++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp @@ -216,26 +216,6 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor data.insert(QLatin1String(QBS_TARGETOS), targetOS); QStringList toolchain = toolchainList(tc); - if (!toolchain.isEmpty()) - data.insert(QLatin1String(QBS_TOOLCHAIN), toolchain); - - if (targetAbi.os() == ProjectExplorer::Abi::MacOS) { - // Reverse engineer Xcode developer path and canonical SDK name from sysroot - QDir sysrootdir(QDir::cleanPath(sysroot)); - const QSettings sdkSettings(sysrootdir.absoluteFilePath(QLatin1String("SDKSettings.plist")), QSettings::NativeFormat); - const QString sdkCanonicalName(sdkSettings.value(QLatin1String("CanonicalName")).toString()); - if (!sdkCanonicalName.isEmpty()) { - const QRegularExpression re(QStringLiteral("^(?.*)/Platforms/(?MacOSX|(?:(?:iPhone|AppleTV|Watch)(?:OS|Simulator)))\\.platform/Developer/SDKs/(?MacOSX|(?:(?:iPhone|AppleTV|Watch)(?:OS|Simulator)))(?:[0-9]+\\.[0-9]+)\\.sdk/?$")); - const QRegularExpressionMatch match = re.match(sysrootdir.absolutePath()); - if (match.hasMatch() && - match.captured(QStringLiteral("platform")) == - match.captured(QStringLiteral("sdkplatform"))) { - data.insert(QLatin1String(XCODE_DEVELOPERPATH), - match.captured(QStringLiteral("developerpath"))); - data.insert(QLatin1String(XCODE_SDK), sdkCanonicalName); - } - } - } Utils::FileName cxx = tc->compilerCommand(); const QFileInfo cxxFileInfo = cxx.toFileInfo(); @@ -262,6 +242,42 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor data.insert(QLatin1String(CPP_PLATFORMLINKERFLAGS), gcc->platformLinkerFlags()); } + if (targetAbi.os() == ProjectExplorer::Abi::MacOS) { + // Reverse engineer the Xcode developer path from the compiler path + const QRegularExpression compilerRe( + QStringLiteral("^(?.*)/Toolchains/(?:.+)\\.xctoolchain/usr/bin$")); + const QRegularExpressionMatch compilerReMatch = compilerRe.match(cxxFileInfo.absolutePath()); + if (compilerReMatch.hasMatch()) { + const QString developerPath = compilerReMatch.captured(QStringLiteral("developerpath")); + data.insert(QLatin1String(XCODE_DEVELOPERPATH), developerPath); + toolchain.insert(0, QStringLiteral("xcode")); + + // If the sysroot is part of this developer path, set the canonical SDK name + const QDir sysrootdir(QDir::cleanPath(sysroot)); + const QString sysrootAbs = sysrootdir.absolutePath(); + const QSettings sdkSettings( + sysrootdir.absoluteFilePath(QStringLiteral("SDKSettings.plist")), + QSettings::NativeFormat); + const QString version( + sdkSettings.value(QStringLiteral("Version")).toString()); + QString canonicalName( + sdkSettings.value(QStringLiteral("CanonicalName")).toString()); + canonicalName.chop(version.size()); + if (!canonicalName.isEmpty() && !version.isEmpty() + && sysrootAbs.startsWith(developerPath)) { + if (sysrootAbs.toLower().endsWith(QStringLiteral("/%1.sdk") + .arg(canonicalName + version))) + data.insert(QLatin1String(XCODE_SDK), canonicalName + version); + if (sysrootAbs.toLower().endsWith(QStringLiteral("/%1.sdk") + .arg(canonicalName))) + data.insert(QLatin1String(XCODE_SDK), canonicalName); + } + } + } + + if (!toolchain.isEmpty()) + data.insert(QLatin1String(QBS_TOOLCHAIN), toolchain); + return data; } From d1c2a841afdb06fc158f6aec5d3ccfa22fbd7af0 Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Thu, 10 Nov 2016 23:19:19 -0800 Subject: [PATCH 5/9] Qbs: don't set cpp.linkerName This is unnecessary (and counterproductive) with automatic linker mode in Qbs 1.6. Change-Id: I808effead885eeba0d524fa27989b8a54b8c655f Reviewed-by: Eike Ziller Reviewed-by: Christian Kandeler --- src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp | 4 ---- src/plugins/qbsprojectmanager/qbsconstants.h | 1 - 2 files changed, 5 deletions(-) diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp index 93371294fa0..4026ba0ca7c 100644 --- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp +++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp @@ -231,10 +231,6 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor } else { data.insert(QLatin1String(CPP_CXXCOMPILERNAME), compilerName); } - if (targetAbi.os() != ProjectExplorer::Abi::WindowsOS - || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMSysFlavor) { - data.insert(QLatin1String(CPP_LINKERNAME), compilerName); - } data.insert(QLatin1String(CPP_TOOLCHAINPATH), cxxFileInfo.absolutePath()); if (ProjectExplorer::GccToolChain *gcc = dynamic_cast(tc)) { diff --git a/src/plugins/qbsprojectmanager/qbsconstants.h b/src/plugins/qbsprojectmanager/qbsconstants.h index 3bdde156a06..98742098222 100644 --- a/src/plugins/qbsprojectmanager/qbsconstants.h +++ b/src/plugins/qbsprojectmanager/qbsconstants.h @@ -40,7 +40,6 @@ const char CPP_CXXCOMPILERNAME[] = "cpp.cxxCompilerName"; const char CPP_COMPILERVERSIONMAJOR[] = "cpp.compilerVersionMajor"; const char CPP_COMPILERVERSIONMINOR[] = "cpp.compilerVersionMinor"; const char CPP_COMPILERVERSIONPATCH[] = "cpp.compilerVersionPatch"; -const char CPP_LINKERNAME[] = "cpp.linkerName"; const char CPP_PLATFORMCOMMONCOMPILERFLAGS[] = "cpp.platformCommonCompilerFlags"; const char CPP_PLATFORMLINKERFLAGS[] = "cpp.platformLinkerFlags"; From 9389f745ff8697286bb36ff266eecb9df4f4ea5f Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 10 Nov 2016 11:27:58 +0100 Subject: [PATCH 6/9] Add missing change log entries Change-Id: I57a8792cc6dc9c03f682f6cd98ac640c6559e828 Reviewed-by: Leena Miettinen --- dist/changes-4.1.1.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dist/changes-4.1.1.md b/dist/changes-4.1.1.md index 938843162be..096afd22f29 100644 --- a/dist/changes-4.1.1.md +++ b/dist/changes-4.1.1.md @@ -45,6 +45,8 @@ Debugging * CDB * Fixed display order of vectors in vectors (QTCREATORBUG-16813) * Fixed display of QList contents (QTCREATORBUG-16750) +* QML + * Fixed that expansion state was reset when stepping QML Profiler @@ -69,4 +71,12 @@ Android iOS +* Fixed simulator support with Xcode 8 (QTCREATORBUG-16942) + Known issue: Qt Creator is blocked until simulator finishes starting +* Fixed that standard paths reported by QStandardPaths were wrong when + running on simulator (QTCREATORBUG-13655) * Fixed QML debugging on device (QTCREATORBUG-15812) + +QNX + +* Fixed QML debugging (QTCREATORBUG-17208) From b892d82086132f12c0aa432376b696d9616b6cca Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Mon, 14 Nov 2016 08:09:51 +0100 Subject: [PATCH 7/9] QbsProjectManager: Fix compile with gcc 4.8 Change-Id: I3be0349c9af1f8ed51f04c04ce97983409dd7512 Reviewed-by: Christian Kandeler --- src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp index 4026ba0ca7c..0d8796e9262 100644 --- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp +++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp @@ -263,7 +263,7 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor && sysrootAbs.startsWith(developerPath)) { if (sysrootAbs.toLower().endsWith(QStringLiteral("/%1.sdk") .arg(canonicalName + version))) - data.insert(QLatin1String(XCODE_SDK), canonicalName + version); + data.insert(QLatin1String(XCODE_SDK), QString(canonicalName + version)); if (sysrootAbs.toLower().endsWith(QStringLiteral("/%1.sdk") .arg(canonicalName))) data.insert(QLatin1String(XCODE_SDK), canonicalName); From e50c9afce996d5fdc6298819ba289d0e63d4342c Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Thu, 10 Nov 2016 23:20:44 -0800 Subject: [PATCH 8/9] Qbs: filter out -arch compiler flags from platformCompiler/LinkerFlags -arch is not allowed in compiler flags as it's automatically handled by the qbs.architecture property, and is an error in current versions of Qbs. If the architecture was successfully detected, remove the flags. Change-Id: I85cce7b7f4ef5a92f857ec624a912861bcb267f5 Reviewed-by: Eike Ziller Reviewed-by: Christian Kandeler --- .../defaultpropertyprovider.cpp | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp index 0d8796e9262..ba24c94fb9f 100644 --- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp +++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp @@ -171,6 +171,20 @@ static MSVCVersion msvcCompilerVersion(const ProjectExplorer::Abi &abi) return v; } +static void filterCompilerLinkerFlags(const ProjectExplorer::Abi &targetAbi, QStringList &flags) +{ + for (int i = 0; i < flags.size(); ) { + if (targetAbi.architecture() != ProjectExplorer::Abi::UnknownArchitecture + && flags[i] == QStringLiteral("-arch") + && i + 1 < flags.size()) { + flags.removeAt(i); + flags.removeAt(i); + } else { + ++i; + } + } +} + QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplorer::Kit *k, const QVariantMap &defaultData) const { @@ -234,8 +248,13 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor data.insert(QLatin1String(CPP_TOOLCHAINPATH), cxxFileInfo.absolutePath()); if (ProjectExplorer::GccToolChain *gcc = dynamic_cast(tc)) { - data.insert(QLatin1String(CPP_PLATFORMCOMMONCOMPILERFLAGS), gcc->platformCodeGenFlags()); - data.insert(QLatin1String(CPP_PLATFORMLINKERFLAGS), gcc->platformLinkerFlags()); + QStringList compilerFlags = gcc->platformCodeGenFlags(); + filterCompilerLinkerFlags(targetAbi, compilerFlags); + data.insert(QLatin1String(CPP_PLATFORMCOMMONCOMPILERFLAGS), compilerFlags); + + QStringList linkerFlags = gcc->platformLinkerFlags(); + filterCompilerLinkerFlags(targetAbi, linkerFlags); + data.insert(QLatin1String(CPP_PLATFORMLINKERFLAGS), linkerFlags); } if (targetAbi.os() == ProjectExplorer::Abi::MacOS) { From bc6f90cb2a811269d3559c948ad4e7dce7757c63 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 14 Nov 2016 12:57:32 +0100 Subject: [PATCH 9/9] Update qbs submodule To HEAD of 1.6 branch. Change-Id: I311ae7c1e1523bdda86efd3c92149261f8d69129 Reviewed-by: Joerg Bornemann --- src/shared/qbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/qbs b/src/shared/qbs index d0516e84733..0649b77b020 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit d0516e847335e7f432f137bf4774a05b0c007569 +Subproject commit 0649b77b020b02436a843ee72a5941f2f875c846