Merge remote-tracking branch 'origin/11.0'

Change-Id: Ib798dc9922c01b7667388ca03d3a248610f73028
This commit is contained in:
Eike Ziller
2023-06-20 10:36:06 +02:00
118 changed files with 504 additions and 2188 deletions

View File

@@ -1462,10 +1462,18 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
// Android magic:
if (DeviceTypeKitAspect::deviceTypeId(k) == Android::Constants::ANDROID_DEVICE_TYPE) {
auto addUniqueKeyToCmd = [&cmd] (const QString &prefix, const QString &value) -> bool {
const bool isUnique =
!Utils::contains(cmd.splitArguments(), [&prefix] (const QString &arg) {
return arg.startsWith(prefix); });
if (isUnique)
cmd.addArg(prefix + value);
return isUnique;
};
buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
const auto bs = buildSteps()->steps().constLast();
cmd.addArg("-DANDROID_PLATFORM:STRING="
+ bs->data(Android::Constants::AndroidNdkPlatform).toString());
addUniqueKeyToCmd("-DANDROID_PLATFORM:STRING=",
bs->data(Android::Constants::AndroidNdkPlatform).toString());
auto ndkLocation = bs->data(Android::Constants::NdkLocation).value<FilePath>();
cmd.addArg("-DANDROID_NDK:PATH=" + ndkLocation.path());

View File

@@ -159,7 +159,7 @@ Qt::ItemFlags CMakeTargetItem::flags(int) const
// CMakeBuildStep
static QString initialStagingDir()
static QString initialStagingDir(Kit *kit)
{
// Avoid actual file accesses.
auto rg = QRandomGenerator::global();
@@ -167,6 +167,9 @@ static QString initialStagingDir()
char buf[sizeof(rand)];
memcpy(&buf, &rand, sizeof(rand));
const QByteArray ba = QByteArray(buf, sizeof(buf)).toHex();
IDeviceConstPtr buildDevice = BuildDeviceKitAspect::device(kit);
if (buildDevice && buildDevice->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)
return TemporaryDirectory::masterDirectoryPath() + "/staging-" + ba;
return QString::fromUtf8("/tmp/Qt-Creator-staging-" + ba);
}
@@ -200,7 +203,7 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Id id) :
m_stagingDir = addAspect<FilePathAspect>();
m_stagingDir->setSettingsKey(STAGING_DIR_KEY);
m_stagingDir->setLabelText(Tr::tr("Staging directory:"));
m_stagingDir->setDefaultValue(initialStagingDir());
m_stagingDir->setDefaultValue(initialStagingDir(kit()));
Kit *kit = buildConfiguration()->kit();
if (CMakeBuildConfiguration::isIos(kit)) {