diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp index 6e8906ccd1e..9f2de4e23fc 100644 --- a/src/plugins/mcusupport/mcusupportsdk.cpp +++ b/src/plugins/mcusupport/mcusupportsdk.cpp @@ -145,21 +145,34 @@ static McuPackage *createEvkbImxrt1050SdkPackage() return result; } -static McuPackage *createSeggerJLinkPackage() +static McuPackage *createMcuXpressoIdePackage() { - QString defaultPath = QString("%{Env:SEGGER_JLINK_SOFTWARE_AND_DOCUMENTATION_PATH}"); - if (Utils::HostOsInfo::isWindowsHost()) { - const QString programPath = findInProgramFiles("/SEGGER/JLink"); - if (!programPath.isEmpty()) - defaultPath = programPath; + const char envVar[] = "MCUXpressoIDE_PATH"; + + QString defaultPath; + if (qEnvironmentVariableIsSet(envVar)) { + defaultPath = qEnvironmentVariable(envVar); + } else if (Utils::HostOsInfo::isWindowsHost()) { + defaultPath = QDir::rootPath() + "nxp"; + if (QFileInfo::exists(defaultPath)) { + // If default dir has exactly one sub dir that could be the IDE path, pre-select that. + const QFileInfoList subDirs = + QDir(defaultPath).entryInfoList({QLatin1String("MCUXpressoIDE*")}, + QDir::Dirs | QDir::NoDotAndDotDot); + if (subDirs.count() == 1) + defaultPath = subDirs.first().filePath() + '/'; + } + } else { + defaultPath = "/usr/local/mcuxpressoide/"; } + auto result = new McuPackage( - McuPackage::tr("SEGGER JLink"), + "MCUXpresso IDE", defaultPath, - Utils::HostOsInfo::withExecutableSuffix("JLink"), - "SeggerJLink"); - result->setDownloadUrl("https://www.segger.com/downloads/jlink"); - result->setEnvironmentVariableName("SEGGER_JLINK_SOFTWARE_AND_DOCUMENTATION_PATH"); + Utils::HostOsInfo::withExecutableSuffix("ide/binaries/crt_emu_cm_redlink"), + "MCUXpressoIDE"); + result->setDownloadUrl("https://www.nxp.com/mcuxpresso/ide"); + result->setEnvironmentVariableName(envVar); return result; } @@ -171,18 +184,18 @@ void hardcodedTargetsAndPackages(const Utils::FilePath &dir, QVector stmEvalPackages = { armGccPackage, stm32CubeProgrammerPackage}; QVector nxpEvalPackages = { - armGccPackage, seggerJLinkPackage}; + armGccPackage, mcuXpressoIdePackage}; QVector renesasEvalPackages = { - armGccPackage, seggerJLinkPackage}; + armGccPackage, mcuXpressoIdePackage}; QVector desktopPackages = {}; *packages = { armGccPackage, desktopToolChainPackage, stm32CubeFwF7SdkPackage, stm32CubeProgrammerPackage, - evkbImxrt1050SdkPackage, seggerJLinkPackage}; + evkbImxrt1050SdkPackage, mcuXpressoIdePackage}; const QString vendorStm = "STM"; const QString vendorNxp = "NXP";