forked from qt-creator/qt-creator
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 <aurindam.jana@qt.io>
This commit is contained in:
committed by
Aurindam Jana
parent
2c112a51c3
commit
7d14132c8c
@@ -199,9 +199,10 @@ void PackageOptions::updateStatus()
|
|||||||
}
|
}
|
||||||
|
|
||||||
BoardOptions::BoardOptions(const QString &model, const QString &toolChainFileName,
|
BoardOptions::BoardOptions(const QString &model, const QString &toolChainFileName,
|
||||||
const QVector<PackageOptions*> &packages)
|
const QString &qulPlatform, const QVector<PackageOptions*> &packages)
|
||||||
: m_model(model)
|
: m_model(model)
|
||||||
, m_toolChainFile(toolChainFileName)
|
, m_toolChainFile(toolChainFileName)
|
||||||
|
, m_qulPlatform(qulPlatform)
|
||||||
, m_packages(packages)
|
, m_packages(packages)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -216,6 +217,11 @@ QString BoardOptions::toolChainFile() const
|
|||||||
return m_toolChainFile;
|
return m_toolChainFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString BoardOptions::qulPlatform() const
|
||||||
|
{
|
||||||
|
return m_qulPlatform;
|
||||||
|
}
|
||||||
|
|
||||||
QVector<PackageOptions *> BoardOptions::packages() const
|
QVector<PackageOptions *> BoardOptions::packages() const
|
||||||
{
|
{
|
||||||
return m_packages;
|
return m_packages;
|
||||||
@@ -342,15 +348,18 @@ McuSupportOptions::McuSupportOptions(QObject *parent)
|
|||||||
qulPackage};
|
qulPackage};
|
||||||
auto nxpPackages = {armGccPackage, evkbImxrt1050SdkPackage, seggerJLinkPackage,
|
auto nxpPackages = {armGccPackage, evkbImxrt1050SdkPackage, seggerJLinkPackage,
|
||||||
qulPackage};
|
qulPackage};
|
||||||
|
auto desktopPackages = {qulPackage};
|
||||||
packages = {armGccPackage, stm32CubeFwF7SdkPackage, stm32CubeProgrammerPackage,
|
packages = {armGccPackage, stm32CubeFwF7SdkPackage, stm32CubeProgrammerPackage,
|
||||||
evkbImxrt1050SdkPackage, seggerJLinkPackage, qulPackage};
|
evkbImxrt1050SdkPackage, seggerJLinkPackage, qulPackage};
|
||||||
|
|
||||||
boards.append(new BoardOptions(
|
boards.append(new BoardOptions(
|
||||||
"stm32f7508", "CMake/stm32f7508-discovery.cmake", stmPackages));
|
"stm32f7508", "CMake/stm32f7508-discovery.cmake", "", stmPackages));
|
||||||
boards.append(new BoardOptions(
|
boards.append(new BoardOptions(
|
||||||
"stm32f769i", "CMake/stm32f769i-discovery.cmake", stmPackages));
|
"stm32f769i", "CMake/stm32f769i-discovery.cmake", "", stmPackages));
|
||||||
boards.append(new BoardOptions(
|
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)
|
for (auto package : packages)
|
||||||
connect(package, &PackageOptions::changed, [this](){
|
connect(package, &PackageOptions::changed, [this](){
|
||||||
@@ -400,6 +409,11 @@ static ProjectExplorer::ToolChain* armGccToolchain(const Utils::FilePath &path,
|
|||||||
return toolChain;
|
return toolChain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool isDesktop(const BoardOptions* board)
|
||||||
|
{
|
||||||
|
return board->qulPlatform() == "Qt";
|
||||||
|
}
|
||||||
|
|
||||||
static void setKitProperties(ProjectExplorer::Kit *k, const BoardOptions* board)
|
static void setKitProperties(ProjectExplorer::Kit *k, const BoardOptions* board)
|
||||||
{
|
{
|
||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
@@ -407,11 +421,12 @@ static void setKitProperties(ProjectExplorer::Kit *k, const BoardOptions* board)
|
|||||||
k->setUnexpandedDisplayName("Qt MCU - " + board->model());
|
k->setUnexpandedDisplayName("Qt MCU - " + board->model());
|
||||||
k->setValue(Constants::KIT_BOARD_MODEL_KEY, board->model());
|
k->setValue(Constants::KIT_BOARD_MODEL_KEY, board->model());
|
||||||
k->setAutoDetected(false);
|
k->setAutoDetected(false);
|
||||||
k->setIrrelevantAspects({
|
if (!isDesktop(board)) {
|
||||||
SysRootKitAspect::id(),
|
k->setIrrelevantAspects({SysRootKitAspect::id(),
|
||||||
"QtSupport.QtInformation" // QtKitAspect::id()
|
"QtSupport.QtInformation" // QtKitAspect::id()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void setKitToolchains(ProjectExplorer::Kit *k, const QString &armGccPath)
|
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;
|
using namespace CMakeProjectManager;
|
||||||
|
|
||||||
CMakeConfig config = CMakeConfigurationKitAspect::configuration(k);
|
CMakeConfig config = CMakeConfigurationKitAspect::configuration(k);
|
||||||
|
if (!board->toolChainFile().isEmpty())
|
||||||
config.append(CMakeConfigItem("CMAKE_TOOLCHAIN_FILE",
|
config.append(CMakeConfigItem("CMAKE_TOOLCHAIN_FILE",
|
||||||
("%{CurrentBuild:Env:Qul_DIR}/" +
|
("%{CurrentBuild:Env:Qul_DIR}/" +
|
||||||
board->toolChainFile()).toUtf8()));
|
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);
|
CMakeConfigurationKitAspect::setConfiguration(k, config);
|
||||||
if (Utils::HostOsInfo::isWindowsHost())
|
if (Utils::HostOsInfo::isWindowsHost())
|
||||||
CMakeGeneratorKitAspect::setGenerator(k, "NMake Makefiles JOM");
|
CMakeGeneratorKitAspect::setGenerator(k, "NMake Makefiles JOM");
|
||||||
@@ -504,9 +525,11 @@ ProjectExplorer::Kit *McuSupportOptions::kit(const BoardOptions* board)
|
|||||||
KitGuard kitGuard(k);
|
KitGuard kitGuard(k);
|
||||||
|
|
||||||
setKitProperties(k, board);
|
setKitProperties(k, board);
|
||||||
|
if (!isDesktop(board)) {
|
||||||
setKitToolchains(k, armGccPath);
|
setKitToolchains(k, armGccPath);
|
||||||
setKitDebugger(k, armGccPath);
|
setKitDebugger(k, armGccPath);
|
||||||
setKitDevice(k);
|
setKitDevice(k);
|
||||||
|
}
|
||||||
setKitEnvironment(k, board);
|
setKitEnvironment(k, board);
|
||||||
setKitCMakeOptions(k, board);
|
setKitCMakeOptions(k, board);
|
||||||
|
|
||||||
|
@@ -101,16 +101,19 @@ class BoardOptions : public QObject
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BoardOptions(const QString &model, const QString &toolChainFile,
|
BoardOptions(const QString &model, const QString &toolChainFile, const QString &qulPlatform,
|
||||||
const QVector<PackageOptions *> &packages);
|
const QVector<PackageOptions *> &packages);
|
||||||
|
|
||||||
QString model() const;
|
QString model() const;
|
||||||
QString toolChainFile() const;
|
QString toolChainFile() const;
|
||||||
|
QString qulPlatform() const;
|
||||||
QVector<PackageOptions *> packages() const;
|
QVector<PackageOptions *> packages() const;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const QString m_model;
|
const QString m_model;
|
||||||
const QString m_toolChainFile;
|
const QString m_toolChainFile;
|
||||||
|
const QString m_qulPlatform;
|
||||||
const QVector<PackageOptions*> m_packages;
|
const QVector<PackageOptions*> m_packages;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -108,14 +108,14 @@ void McuSupportOptionsWidget::updateStatus()
|
|||||||
{
|
{
|
||||||
const QVector<BoardOptions*> validBoards = m_options->validBoards();
|
const QVector<BoardOptions*> validBoards = m_options->validBoards();
|
||||||
m_statusLabel->setText(validBoards.isEmpty()
|
m_statusLabel->setText(validBoards.isEmpty()
|
||||||
? McuSupportOptionsPage::tr("No devices and kits can currently be generated. "
|
? McuSupportOptionsPage::tr("No kits can currently be generated. "
|
||||||
"Select a board and provide the package paths. "
|
"Select a target and provide the package paths. "
|
||||||
"Afterwards, press Apply to generate device and kit for "
|
"Afterwards, press Apply to generate a kit for "
|
||||||
"your board.")
|
"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 "
|
"%1 "
|
||||||
"Press Apply to generate device and kit for "
|
"Press Apply to generate a kit for "
|
||||||
"your board.").arg(ulOfBoardModels(validBoards)));
|
"your target.").arg(ulOfBoardModels(validBoards)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void McuSupportOptionsWidget::showBoardPackages(int boardIndex)
|
void McuSupportOptionsWidget::showBoardPackages(int boardIndex)
|
||||||
|
Reference in New Issue
Block a user