diff options
author | hjk <hjk@qt.io> | 2020-05-18 15:31:13 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-05-19 13:04:38 +0000 |
commit | f3038bce08cf30fd35209cc6ac4bea02c102b7d1 (patch) | |
tree | dc7dcea6865dc24a4583c9684f36a98bb2ca6f42 /src/plugins/android/androidrunnerworker.cpp | |
parent | 8d3fd8d0deb4e94e32f4658d2ba10f162e7046ff (diff) |
Android: Search LLDB in new SDK location
Amends 3e79c7da48b6ad.
Change-Id: I6db991bc4d82000e0bb9860d85676bf1fdfb09a6
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/android/androidrunnerworker.cpp')
-rw-r--r-- | src/plugins/android/androidrunnerworker.cpp | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index 849fec6781a..28f7fd746f3 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -49,6 +49,8 @@ #include <utils/url.h> #include <utils/fileutils.h> +#include <QDir> +#include <QDirIterator> #include <QFileInfo> #include <QLoggingCategory> #include <QTcpServer> @@ -186,11 +188,35 @@ static QString lldbServerArch(const QString &androidAbi) return androidAbi; // arm64-v8a, x86, x86_64 } -static FilePath lldbServer(const QString &androidAbi) +static QString lldbServerArch2(const QString &androidAbi) +{ + if (androidAbi == "armeabi-v7a") + return {"arm"}; + if (androidAbi == "x86") + return {"i386"}; + if (androidAbi == "arm64-v8a") + return {"aarch64"}; + // Correct for "x86_64" a and best guess at anything that will evolve: + return androidAbi; // arm64-v8a +} + +static FilePath lldbServer(const QString &androidAbi, const QtSupport::BaseQtVersion *qtVersion) { const AndroidConfig &config = AndroidConfigurations::currentConfig(); + const FilePath prebuilt = config.ndkLocation(qtVersion) / "toolchains/llvm/prebuilt"; + const QString abiNeedle = lldbServerArch2(androidAbi); + + // The new, built-in LLDB. + QDirIterator it(prebuilt.toString(), QDir::Files|QDir::Executable, QDirIterator::Subdirectories); + while (it.hasNext()) { + it.next(); + const QString filePath = it.filePath(); + if (filePath.endsWith(abiNeedle + "/lldb-server")) { + return FilePath::fromString(filePath); + } + } - // Find LLDB version. sdk_definitions.json contains something like "lldb;3.1". Use that. + // Older: Find LLDB version. sdk_definitions.json contains something like "lldb;3.1". Use that. const QStringList packages = config.defaultEssentials(); for (const QString &package : packages) { if (package.startsWith("lldb;")) { @@ -282,7 +308,7 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa QString preferredAbi = AndroidManager::apkDevicePreferredAbi(target); if (!preferredAbi.isEmpty()) { if (m_useLldb) - m_debugServerPath = lldbServer(preferredAbi).toString(); + m_debugServerPath = lldbServer(preferredAbi, version).toString(); else m_debugServerPath = gdbServer(preferredAbi, version).toString(); } |