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,
|
||||
const QVector<PackageOptions*> &packages)
|
||||
const QString &qulPlatform, const QVector<PackageOptions*> &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<PackageOptions *> 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,11 +421,12 @@ 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(),
|
||||
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);
|
||||
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);
|
||||
if (!isDesktop(board)) {
|
||||
setKitToolchains(k, armGccPath);
|
||||
setKitDebugger(k, armGccPath);
|
||||
setKitDevice(k);
|
||||
}
|
||||
setKitEnvironment(k, board);
|
||||
setKitCMakeOptions(k, board);
|
||||
|
||||
|
@@ -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<PackageOptions *> &packages);
|
||||
|
||||
QString model() const;
|
||||
QString toolChainFile() const;
|
||||
QString qulPlatform() const;
|
||||
QVector<PackageOptions *> packages() const;
|
||||
|
||||
|
||||
private:
|
||||
const QString m_model;
|
||||
const QString m_toolChainFile;
|
||||
const QString m_qulPlatform;
|
||||
const QVector<PackageOptions*> m_packages;
|
||||
};
|
||||
|
||||
|
@@ -108,14 +108,14 @@ void McuSupportOptionsWidget::updateStatus()
|
||||
{
|
||||
const QVector<BoardOptions*> 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)
|
||||
|
Reference in New Issue
Block a user