From e33d6fe5dc51507c0fa3b73b6bf5122e463647e7 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Wed, 20 Dec 2023 10:35:51 +0100 Subject: [PATCH] CMake: Expose information about Appman packages as Project extraData Change-Id: I54c449f5bc7211271cecbef05045dd1490066bd6 Reviewed-by: Reviewed-by: Cristian Adam Reviewed-by: hjk --- .../cmakeprojectmanager/cmakebuildsystem.cpp | 33 +++++++++++++++++++ .../appmanagerconstants.h | 2 ++ 2 files changed, 35 insertions(+) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 10df3f13d27..24aa055905c 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -37,6 +37,8 @@ #include +#include + #include #include @@ -1473,6 +1475,37 @@ void CMakeBuildSystem::updateCMakeConfiguration(QString &errorMessage) project()->setExtraData(Android::Constants::UseAndroidBuildTargetDir, QVariant::fromValue(useAndroidTargetBuildDir)); + QVariantList packageTargets; + for (const CMakeBuildTarget &buildTarget : buildTargets()) { + bool isBuiltinPackage = false; + bool isInstallablePackage = false; + for (const ProjectExplorer::FolderNode::LocationInfo &bs : buildTarget.backtrace) { + if (bs.displayName == "qt6_am_create_builtin_package") + isBuiltinPackage = true; + else if (bs.displayName == "qt6_am_create_installable_package") + isInstallablePackage = true; + } + + if (!isBuiltinPackage && !isInstallablePackage) + continue; + + QVariantMap packageTarget; + for (const FilePath &sourceFile : buildTarget.sourceFiles) { + if (sourceFile.fileName() == "info.yaml") { + packageTarget.insert("manifestFilePath", QVariant::fromValue(sourceFile.absoluteFilePath())); + packageTarget.insert("cmakeTarget", buildTarget.title); + packageTarget.insert("isBuiltinPackage", isBuiltinPackage); + for (const FilePath &osf : buildTarget.sourceFiles) { + if (osf.fileName().endsWith(".ampkg.rule")) { + packageTarget.insert("packageFilePath", QVariant::fromValue(osf.absoluteFilePath().chopped(5))); + } + } + } + } + packageTargets.append(packageTarget); + } + project()->setExtraData(AppManager::Constants::APPMAN_PACKAGE_TARGETS, packageTargets); + setConfigurationFromCMake(cmakeConfig); } diff --git a/src/plugins/qtapplicationmanager/appmanagerconstants.h b/src/plugins/qtapplicationmanager/appmanagerconstants.h index 524ea764ed9..5be069fe1f1 100644 --- a/src/plugins/qtapplicationmanager/appmanagerconstants.h +++ b/src/plugins/qtapplicationmanager/appmanagerconstants.h @@ -21,6 +21,8 @@ const char DEPLOY_PACKAGE_STEP_ID[] = "ApplicationManagerPlugin.Deploy.DeployPac const char INSTALL_PACKAGE_STEP_ID[] = "ApplicationManagerPlugin.Deploy.InstallPackageStep"; const char RUNCONFIGURATION_ID[] = "ApplicationManagerPlugin.Run.Configuration"; +const char APPMAN_PACKAGE_TARGETS[] = "ApplicationmanagerPackageTargets"; + const char QMAKE_AM_MANIFEST_VARIABLE[] = "AM_MANIFEST"; const char QMAKE_AM_PACKAGE_DIR_VARIABLE[] = "AM_PACKAGE_DIR";