diff --git a/README.md b/README.md index 303c62f77fb..b5f183b4e25 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ The standalone binary packages support the following platforms: * Windows 7 or later * (K)Ubuntu Linux 16.04 (64-bit) or later -* macOS 10.8 or later +* macOS 10.10 or later ## Compiling Qt Creator diff --git a/doc/src/overview/creator-supported-platforms.qdoc b/doc/src/overview/creator-supported-platforms.qdoc index dda8caee098..43118e4c8de 100644 --- a/doc/src/overview/creator-supported-platforms.qdoc +++ b/doc/src/overview/creator-supported-platforms.qdoc @@ -97,7 +97,7 @@ \endlist - \li \macos 10.8 or later with the following: + \li \macos 10.10 or later with the following: \list diff --git a/qbs/imports/QtcProduct.qbs b/qbs/imports/QtcProduct.qbs index d89dbd1635a..ea9fb30163a 100644 --- a/qbs/imports/QtcProduct.qbs +++ b/qbs/imports/QtcProduct.qbs @@ -8,6 +8,7 @@ Product { version: qtc.qtcreator_version property bool install: true property string installDir + property string installSourceBase property stringList installTags: type property string fileName: FileInfo.fileName(sourceDirectory) + ".qbs" property bool useNonGuiPchFile: false @@ -37,6 +38,7 @@ Product { fileTagsFilter: installTags qbs.install: install qbs.installDir: installDir + qbs.installSourceBase: installSourceBase } Group { diff --git a/qtcreator.qbs b/qtcreator.qbs index 3394719939e..97ed38a4686 100644 --- a/qtcreator.qbs +++ b/qtcreator.qbs @@ -4,7 +4,7 @@ import qbs.FileInfo Project { name: "Qt Creator" - minimumQbsVersion: "1.6.0" + minimumQbsVersion: "1.7.0" property string minimumMacosVersion: "10.8" property bool withAutotests: qbs.buildVariant === "debug" property path ide_source_tree: path diff --git a/src/app/Info.plist b/src/app/Info.plist index 6d31c52d266..8447dd66d4a 100644 --- a/src/app/Info.plist +++ b/src/app/Info.plist @@ -253,6 +253,6 @@ CFBundleShortVersionString @SHORT_VERSION@ LSMinimumSystemVersion - 10.8 + @MACOSX_DEPLOYMENT_TARGET@ diff --git a/src/app/app.pro b/src/app/app.pro index fee710e99d7..58dca7ba050 100644 --- a/src/app/app.pro +++ b/src/app/app.pro @@ -53,7 +53,12 @@ win32 { INSTALLS += icns } } - QMAKE_INFO_PLIST = Info.plist + + infoplist = $$cat($$PWD/Info.plist, blob) + infoplist = $$replace(infoplist, @MACOSX_DEPLOYMENT_TARGET@, $$QMAKE_MACOSX_DEPLOYMENT_TARGET) + write_file($$OUT_PWD/Info.plist, infoplist) + + QMAKE_INFO_PLIST = $$OUT_PWD/Info.plist } target.path = $$INSTALL_APP_PATH diff --git a/src/app/app.qbs b/src/app/app.qbs index 2eac52ac64a..0af41ca20d9 100644 --- a/src/app/app.qbs +++ b/src/app/app.qbs @@ -20,7 +20,9 @@ QtcProduct { targetName: qtc.ide_app_target version: qtc.qtcreator_version - installDir: qtc.ide_bin_path + installDir: bundle.isBundle ? qtc.ide_app_path : qtc.ide_bin_path + installTags: bundle.isBundle ? ["bundle.content"] : base + installSourceBase: bundle.isBundle ? buildDirectory : base property bool qtcRunnable: true cpp.rpaths: qbs.targetOS.contains("macos") ? ["@executable_path/../Frameworks"] @@ -72,11 +74,4 @@ QtcProduct { "../shared/qtlockedfile/qtlockedfile_win.cpp" ] } - - Group { - condition: qbs.targetOS.contains("macos") - fileTagsFilter: ["aggregate_infoplist", "pkginfo", "compiled_assetcatalog"] - qbs.install: true - qbs.installSourceBase: product.buildDirectory - } } diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index cb2aead5a35..0e9fccead2d 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -952,7 +952,7 @@ ClassOrNamespace *ClassOrNamespace::lookupType_helper(const Name *name, return this; } - if (ClassOrNamespace *e = nestedType(name, origin)) + if (ClassOrNamespace *e = nestedType(name, processed, origin)) return e; if (_templateId) { @@ -1074,7 +1074,9 @@ ClassOrNamespace *ClassOrNamespace::findOrCreateNestedAnonymousType( } } -ClassOrNamespace *ClassOrNamespace::nestedType(const Name *name, ClassOrNamespace *origin) +ClassOrNamespace *ClassOrNamespace::nestedType(const Name *name, + QSet *processed, + ClassOrNamespace *origin) { Q_ASSERT(name != 0); Q_ASSERT(name->isNameId() || name->isTemplateNameId() || name->isAnonymousNameId()); @@ -1184,11 +1186,11 @@ ClassOrNamespace *ClassOrNamespace::nestedType(const Name *name, ClassOrNamespac instantiation->_name = templId; instantiation->_templateId = templId; - QSet processed; + QSet otherProcessed; while (!origin->_symbols.isEmpty() && origin->_symbols[0]->isBlock()) { - if (processed.contains(origin)) + if (otherProcessed.contains(origin)) break; - processed.insert(origin); + otherProcessed.insert(origin); origin = origin->parent(); } @@ -1310,7 +1312,7 @@ ClassOrNamespace *ClassOrNamespace::nestedType(const Name *name, ClassOrNamespac // Another template that uses the dependent name. // Ex.: template class A : public B {}; if (baseTemplId->identifier() != templId->identifier()) - baseBinding = nestedType(baseName, origin); + baseBinding = nestedType(baseName, processed, origin); } else if (const QualifiedNameId *qBaseName = baseName->asQualifiedNameId()) { // Qualified names in general. // Ex.: template class A : public B::Type {}; @@ -1361,7 +1363,8 @@ ClassOrNamespace *ClassOrNamespace::nestedType(const Name *name, ClassOrNamespac } if (binding) { - ClassOrNamespace * baseBinding = binding->lookupType(baseName); + ClassOrNamespace * baseBinding + = binding->lookupType_helper(baseName, processed, true, this); if (baseBinding && !knownUsings.contains(baseBinding)) reference->addUsing(baseBinding); } @@ -1518,7 +1521,8 @@ ClassOrNamespace *ClassOrNamespace::findOrCreateType(const Name *name, ClassOrNa return findOrCreateType(q->base(), origin)->findOrCreateType(q->name(), origin, clazz); } else if (name->isNameId() || name->isTemplateNameId() || name->isAnonymousNameId()) { - ClassOrNamespace *e = nestedType(name, origin); + QSet processed; + ClassOrNamespace *e = nestedType(name, &processed, origin); if (! e) { e = _factory->allocClassOrNamespace(this); diff --git a/src/libs/cplusplus/LookupContext.h b/src/libs/cplusplus/LookupContext.h index 7273fe57d02..b13df5da29a 100644 --- a/src/libs/cplusplus/LookupContext.h +++ b/src/libs/cplusplus/LookupContext.h @@ -121,7 +121,8 @@ class CPLUSPLUS_EXPORT ClassOrNamespace ClassOrNamespace *findBlock_helper(Block *block, QSet *processed, bool searchInEnclosingScope); - ClassOrNamespace *nestedType(const Name *name, ClassOrNamespace *origin); + ClassOrNamespace *nestedType(const Name *name, QSet *processed, + ClassOrNamespace *origin); void instantiateNestedClasses(ClassOrNamespace *enclosingTemplateClass, Clone &cloner,