From 7d14132c8c212263b9537631e4918f74a5a6be7c Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Sat, 2 Nov 2019 06:19:51 +0100 Subject: [PATCH] McuSupport: Create a Qul-Desktop kit First, hacky step towards supporting the "Qt" target. Such a target now gets created with correct environment variables and CMake options. Device type is for now Desktop, but portale thinks we will have a Qul/ Desktop target at some point. Compiler and Qt version are randomly preselected and certainly need to be adjusted by the user (for now). Change-Id: Ie3f6a6e3ce1a46c35687e20a7550ff51b6b1b7c7 Reviewed-by: Aurindam Jana --- src/plugins/mcusupport/mcusupportoptions.cpp | 51 ++++++++++++++----- src/plugins/mcusupport/mcusupportoptions.h | 5 +- .../mcusupport/mcusupportoptionspage.cpp | 12 ++--- 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index 9cbd8a5a834..ec4717f53f6 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -199,9 +199,10 @@ void PackageOptions::updateStatus() } BoardOptions::BoardOptions(const QString &model, const QString &toolChainFileName, - const QVector &packages) + const QString &qulPlatform, const QVector &packages) : m_model(model) , m_toolChainFile(toolChainFileName) + , m_qulPlatform(qulPlatform) , m_packages(packages) { } @@ -216,6 +217,11 @@ QString BoardOptions::toolChainFile() const return m_toolChainFile; } +QString BoardOptions::qulPlatform() const +{ + return m_qulPlatform; +} + QVector BoardOptions::packages() const { return m_packages; @@ -342,15 +348,18 @@ McuSupportOptions::McuSupportOptions(QObject *parent) qulPackage}; auto nxpPackages = {armGccPackage, evkbImxrt1050SdkPackage, seggerJLinkPackage, qulPackage}; + auto desktopPackages = {qulPackage}; packages = {armGccPackage, stm32CubeFwF7SdkPackage, stm32CubeProgrammerPackage, evkbImxrt1050SdkPackage, seggerJLinkPackage, qulPackage}; boards.append(new BoardOptions( - "stm32f7508", "CMake/stm32f7508-discovery.cmake", stmPackages)); + "stm32f7508", "CMake/stm32f7508-discovery.cmake", "", stmPackages)); boards.append(new BoardOptions( - "stm32f769i", "CMake/stm32f769i-discovery.cmake", stmPackages)); + "stm32f769i", "CMake/stm32f769i-discovery.cmake", "", stmPackages)); boards.append(new BoardOptions( - "evkbimxrt1050", "CMake/evkbimxrt1050-toolchain.cmake", nxpPackages)); + "evkbimxrt1050", "CMake/evkbimxrt1050-toolchain.cmake", "", nxpPackages)); + boards.append(new BoardOptions( + "Desktop", "", "Qt", desktopPackages)); for (auto package : packages) connect(package, &PackageOptions::changed, [this](){ @@ -400,6 +409,11 @@ static ProjectExplorer::ToolChain* armGccToolchain(const Utils::FilePath &path, return toolChain; } +static bool isDesktop(const BoardOptions* board) +{ + return board->qulPlatform() == "Qt"; +} + static void setKitProperties(ProjectExplorer::Kit *k, const BoardOptions* board) { using namespace ProjectExplorer; @@ -407,10 +421,11 @@ static void setKitProperties(ProjectExplorer::Kit *k, const BoardOptions* board) k->setUnexpandedDisplayName("Qt MCU - " + board->model()); k->setValue(Constants::KIT_BOARD_MODEL_KEY, board->model()); k->setAutoDetected(false); - k->setIrrelevantAspects({ - SysRootKitAspect::id(), - "QtSupport.QtInformation" // QtKitAspect::id() - }); + if (!isDesktop(board)) { + k->setIrrelevantAspects({SysRootKitAspect::id(), + "QtSupport.QtInformation" // QtKitAspect::id() + }); + } } static void setKitToolchains(ProjectExplorer::Kit *k, const QString &armGccPath) @@ -483,9 +498,15 @@ static void setKitCMakeOptions(ProjectExplorer::Kit *k, const BoardOptions* boar using namespace CMakeProjectManager; CMakeConfig config = CMakeConfigurationKitAspect::configuration(k); - config.append(CMakeConfigItem("CMAKE_TOOLCHAIN_FILE", - ("%{CurrentBuild:Env:Qul_DIR}/" + - board->toolChainFile()).toUtf8())); + if (!board->toolChainFile().isEmpty()) + config.append(CMakeConfigItem("CMAKE_TOOLCHAIN_FILE", + ("%{CurrentBuild:Env:Qul_DIR}/" + + board->toolChainFile()).toUtf8())); + if (!board->qulPlatform().isEmpty()) + config.append(CMakeConfigItem("QUL_PLATFORM", + board->qulPlatform().toUtf8())); + if (isDesktop(board)) // TODO: Hack! Implement color depth variants of all targets + config.append(CMakeConfigItem("QUL_COLOR_DEPTH", "32")); CMakeConfigurationKitAspect::setConfiguration(k, config); if (Utils::HostOsInfo::isWindowsHost()) CMakeGeneratorKitAspect::setGenerator(k, "NMake Makefiles JOM"); @@ -504,9 +525,11 @@ ProjectExplorer::Kit *McuSupportOptions::kit(const BoardOptions* board) KitGuard kitGuard(k); setKitProperties(k, board); - setKitToolchains(k, armGccPath); - setKitDebugger(k, armGccPath); - setKitDevice(k); + if (!isDesktop(board)) { + setKitToolchains(k, armGccPath); + setKitDebugger(k, armGccPath); + setKitDevice(k); + } setKitEnvironment(k, board); setKitCMakeOptions(k, board); diff --git a/src/plugins/mcusupport/mcusupportoptions.h b/src/plugins/mcusupport/mcusupportoptions.h index 3df2d065aba..9798e94d3cd 100644 --- a/src/plugins/mcusupport/mcusupportoptions.h +++ b/src/plugins/mcusupport/mcusupportoptions.h @@ -101,16 +101,19 @@ class BoardOptions : public QObject Q_OBJECT public: - BoardOptions(const QString &model, const QString &toolChainFile, + BoardOptions(const QString &model, const QString &toolChainFile, const QString &qulPlatform, const QVector &packages); QString model() const; QString toolChainFile() const; + QString qulPlatform() const; QVector packages() const; + private: const QString m_model; const QString m_toolChainFile; + const QString m_qulPlatform; const QVector m_packages; }; diff --git a/src/plugins/mcusupport/mcusupportoptionspage.cpp b/src/plugins/mcusupport/mcusupportoptionspage.cpp index 9057e2a054b..02c2044cf40 100644 --- a/src/plugins/mcusupport/mcusupportoptionspage.cpp +++ b/src/plugins/mcusupport/mcusupportoptionspage.cpp @@ -108,14 +108,14 @@ void McuSupportOptionsWidget::updateStatus() { const QVector validBoards = m_options->validBoards(); m_statusLabel->setText(validBoards.isEmpty() - ? McuSupportOptionsPage::tr("No devices and kits can currently be generated. " - "Select a board and provide the package paths. " - "Afterwards, press Apply to generate device and kit for " + ? McuSupportOptionsPage::tr("No kits can currently be generated. " + "Select a target and provide the package paths. " + "Afterwards, press Apply to generate a kit for " "your board.") - : McuSupportOptionsPage::tr("Devices and kits for the following boards can be generated: " + : McuSupportOptionsPage::tr("Kits for the following targets can be generated: " "%1 " - "Press Apply to generate device and kit for " - "your board.").arg(ulOfBoardModels(validBoards))); + "Press Apply to generate a kit for " + "your target.").arg(ulOfBoardModels(validBoards))); } void McuSupportOptionsWidget::showBoardPackages(int boardIndex)