2012-04-18 20:30:57 +03:00
|
|
|
/**************************************************************************
|
|
|
|
|
**
|
2013-01-28 17:12:19 +01:00
|
|
|
** Copyright (c) 2013 BogDan Vatra <bog_dan_ro@yahoo.com>
|
2012-10-02 09:12:39 +02:00
|
|
|
** Contact: http://www.qt-project.org/legal
|
2012-04-18 20:30:57 +03:00
|
|
|
**
|
2012-10-02 09:12:39 +02:00
|
|
|
** This file is part of Qt Creator.
|
2012-04-18 20:30:57 +03:00
|
|
|
**
|
2012-10-02 09:12:39 +02:00
|
|
|
** Commercial License Usage
|
|
|
|
|
** Licensees holding valid commercial Qt licenses may use this file in
|
|
|
|
|
** accordance with the commercial license agreement provided with the
|
|
|
|
|
** Software or, alternatively, in accordance with the terms contained in
|
|
|
|
|
** a written agreement between you and Digia. For licensing terms and
|
|
|
|
|
** conditions see http://qt.digia.com/licensing. For further information
|
|
|
|
|
** use the contact form at http://qt.digia.com/contact-us.
|
2012-04-18 20:30:57 +03:00
|
|
|
**
|
|
|
|
|
** GNU Lesser General Public License Usage
|
2012-10-02 09:12:39 +02:00
|
|
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
|
|
|
** General Public License version 2.1 as published by the Free Software
|
|
|
|
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
|
|
|
** packaging of this file. Please review the following information to
|
|
|
|
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
|
|
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
|
|
|
**
|
|
|
|
|
** In addition, as a special exception, Digia gives you certain additional
|
|
|
|
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
2012-04-18 20:30:57 +03:00
|
|
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
|
|
|
**
|
2012-10-02 09:12:39 +02:00
|
|
|
****************************************************************************/
|
2012-04-18 20:30:57 +03:00
|
|
|
|
|
|
|
|
#include "androidtoolchain.h"
|
|
|
|
|
#include "androidconstants.h"
|
|
|
|
|
#include "androidconfigurations.h"
|
|
|
|
|
#include "androidqtversion.h"
|
2013-01-25 16:49:22 +01:00
|
|
|
#include "androidconfigurations.h"
|
2012-12-07 19:52:56 +02:00
|
|
|
|
|
|
|
|
#include <qtsupport/qtkitinformation.h>
|
|
|
|
|
#include <qtsupport/qtversionmanager.h>
|
|
|
|
|
|
2012-07-03 16:57:44 +03:00
|
|
|
#include <projectexplorer/target.h>
|
2012-04-18 20:30:57 +03:00
|
|
|
#include <projectexplorer/toolchainmanager.h>
|
|
|
|
|
#include <projectexplorer/projectexplorer.h>
|
2012-09-03 18:31:44 +02:00
|
|
|
#include <qtsupport/qtkitinformation.h>
|
2012-04-18 20:30:57 +03:00
|
|
|
|
|
|
|
|
#include <utils/environment.h>
|
2012-08-23 15:53:58 +02:00
|
|
|
#include <utils/hostosinfo.h>
|
2012-04-18 20:30:57 +03:00
|
|
|
|
|
|
|
|
#include <QDir>
|
2013-01-25 16:49:22 +01:00
|
|
|
#include <QDirIterator>
|
2012-08-16 15:59:10 +02:00
|
|
|
#include <QFormLayout>
|
2012-04-18 20:30:57 +03:00
|
|
|
#include <QLabel>
|
|
|
|
|
#include <QVBoxLayout>
|
|
|
|
|
|
2013-01-25 16:49:22 +01:00
|
|
|
namespace {
|
|
|
|
|
const QLatin1String NDKGccVersionRegExp("-\\d[\\.\\d]+");
|
|
|
|
|
}
|
|
|
|
|
|
2012-04-18 20:30:57 +03:00
|
|
|
namespace Android {
|
|
|
|
|
namespace Internal {
|
|
|
|
|
|
2012-08-09 01:56:51 +02:00
|
|
|
using namespace ProjectExplorer;
|
2012-08-23 15:53:58 +02:00
|
|
|
using namespace Utils;
|
2012-04-18 20:30:57 +03:00
|
|
|
|
|
|
|
|
static const char ANDROID_QT_VERSION_KEY[] = "Qt4ProjectManager.Android.QtVersion";
|
2013-01-25 16:49:22 +01:00
|
|
|
static const char ANDROID_NDK_TC_VERION[] = "Qt4ProjectManager.Android.NDK_TC_VERION";
|
2012-04-18 20:30:57 +03:00
|
|
|
|
2013-01-25 16:49:22 +01:00
|
|
|
AndroidToolChain::AndroidToolChain(Abi::Architecture arch, const QString &ndkToolChainVersion, bool autodetected)
|
|
|
|
|
: GccToolChain(QLatin1String(Constants::ANDROID_TOOLCHAIN_ID), autodetected),
|
|
|
|
|
m_ndkToolChainVersion(ndkToolChainVersion)
|
|
|
|
|
{
|
|
|
|
|
ProjectExplorer::Abi abi = ProjectExplorer::Abi(arch, ProjectExplorer::Abi::LinuxOS,
|
|
|
|
|
ProjectExplorer::Abi::AndroidLinuxFlavor, ProjectExplorer::Abi::ElfFormat,
|
|
|
|
|
32);
|
|
|
|
|
setTargetAbi(abi);
|
|
|
|
|
setDisplayName(QString::fromLatin1("Android GCC (%1-%2)")
|
|
|
|
|
.arg(Abi::toString(targetAbi().architecture()))
|
|
|
|
|
.arg(ndkToolChainVersion));
|
|
|
|
|
}
|
2012-04-18 20:30:57 +03:00
|
|
|
|
2013-01-25 16:49:22 +01:00
|
|
|
// for fromMap
|
|
|
|
|
AndroidToolChain::AndroidToolChain()
|
|
|
|
|
: GccToolChain(QLatin1String(Constants::ANDROID_TOOLCHAIN_ID), false)
|
|
|
|
|
{
|
|
|
|
|
}
|
2012-04-18 20:30:57 +03:00
|
|
|
|
|
|
|
|
AndroidToolChain::AndroidToolChain(const AndroidToolChain &tc) :
|
2013-01-25 16:49:22 +01:00
|
|
|
GccToolChain(tc), m_ndkToolChainVersion(tc.m_ndkToolChainVersion)
|
2012-04-18 20:30:57 +03:00
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
AndroidToolChain::~AndroidToolChain()
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
QString AndroidToolChain::type() const
|
|
|
|
|
{
|
2013-01-25 16:49:22 +01:00
|
|
|
return QLatin1String(Android::Constants::ANDROID_TOOLCHAIN_TYPE);
|
2012-04-18 20:30:57 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString AndroidToolChain::typeDisplayName() const
|
|
|
|
|
{
|
|
|
|
|
return AndroidToolChainFactory::tr("Android GCC");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool AndroidToolChain::isValid() const
|
|
|
|
|
{
|
2013-02-27 12:33:21 +01:00
|
|
|
return GccToolChain::isValid() && targetAbi().isValid() && !m_ndkToolChainVersion.isEmpty()
|
|
|
|
|
&& compilerCommand().isChildOf(AndroidConfigurations::instance().config().ndkLocation);
|
2012-04-18 20:30:57 +03:00
|
|
|
}
|
|
|
|
|
|
2012-08-23 15:53:58 +02:00
|
|
|
void AndroidToolChain::addToEnvironment(Environment &env) const
|
2012-04-18 20:30:57 +03:00
|
|
|
{
|
|
|
|
|
|
|
|
|
|
// TODO this vars should be configurable in projects -> build tab
|
|
|
|
|
// TODO invalidate all .pro files !!!
|
|
|
|
|
|
2012-08-23 15:53:58 +02:00
|
|
|
QString ndkHost;
|
|
|
|
|
switch (HostOsInfo::hostOs()) {
|
|
|
|
|
case HostOsInfo::HostOsLinux:
|
|
|
|
|
ndkHost = QLatin1String("linux-x86");
|
|
|
|
|
break;
|
|
|
|
|
case HostOsInfo::HostOsWindows:
|
|
|
|
|
ndkHost = QLatin1String("windows");
|
|
|
|
|
break;
|
|
|
|
|
case HostOsInfo::HostOsMac:
|
|
|
|
|
ndkHost = QLatin1String("darwin-x86");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
env.set(QLatin1String("ANDROID_NDK_HOST"), ndkHost);
|
2012-04-18 20:30:57 +03:00
|
|
|
env.set(QLatin1String("ANDROID_NDK_TOOLCHAIN_PREFIX"), AndroidConfigurations::toolchainPrefix(targetAbi().architecture()));
|
|
|
|
|
env.set(QLatin1String("ANDROID_NDK_TOOLS_PREFIX"), AndroidConfigurations::toolsPrefix(targetAbi().architecture()));
|
2013-01-25 16:49:22 +01:00
|
|
|
env.set(QLatin1String("ANDROID_NDK_TOOLCHAIN_VERSION"), m_ndkToolChainVersion);
|
2012-04-18 20:30:57 +03:00
|
|
|
}
|
|
|
|
|
|
2012-08-09 01:56:51 +02:00
|
|
|
bool AndroidToolChain::operator ==(const ToolChain &tc) const
|
2012-04-18 20:30:57 +03:00
|
|
|
{
|
2013-01-25 16:49:22 +01:00
|
|
|
if (!GccToolChain::operator ==(tc))
|
2012-04-18 20:30:57 +03:00
|
|
|
return false;
|
|
|
|
|
|
2013-01-25 16:49:22 +01:00
|
|
|
return m_ndkToolChainVersion == static_cast<const AndroidToolChain &>(tc).m_ndkToolChainVersion;
|
2012-04-18 20:30:57 +03:00
|
|
|
}
|
|
|
|
|
|
2012-08-09 01:56:51 +02:00
|
|
|
ToolChainConfigWidget *AndroidToolChain::configurationWidget()
|
2012-04-18 20:30:57 +03:00
|
|
|
{
|
|
|
|
|
return new AndroidToolChainConfigWidget(this);
|
|
|
|
|
}
|
|
|
|
|
|
2013-01-25 16:49:22 +01:00
|
|
|
FileName AndroidToolChain::suggestedDebugger() const
|
|
|
|
|
{
|
|
|
|
|
return AndroidConfigurations::instance().gdbPath(targetAbi().architecture(), m_ndkToolChainVersion);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FileName AndroidToolChain::suggestedGdbServer() const
|
|
|
|
|
{
|
|
|
|
|
Utils::FileName path = AndroidConfigurations::instance().config().ndkLocation;
|
|
|
|
|
path.appendPath(QString::fromLatin1("prebuilt/android-%1/gdbserver/gdbserver")
|
|
|
|
|
.arg(Abi::toString(targetAbi().architecture())));
|
|
|
|
|
if (path.toFileInfo().exists())
|
|
|
|
|
return path;
|
|
|
|
|
path = AndroidConfigurations::instance().config().ndkLocation;
|
|
|
|
|
path.appendPath(QString::fromLatin1("toolchains/%1-%2/prebuilt/gdbserver")
|
|
|
|
|
.arg(AndroidConfigurations::toolchainPrefix(targetAbi().architecture()))
|
|
|
|
|
.arg(m_ndkToolChainVersion));
|
|
|
|
|
if (path.toFileInfo().exists())
|
|
|
|
|
return path;
|
|
|
|
|
|
|
|
|
|
return Utils::FileName();
|
|
|
|
|
}
|
|
|
|
|
|
2012-04-18 20:30:57 +03:00
|
|
|
QVariantMap AndroidToolChain::toMap() const
|
|
|
|
|
{
|
|
|
|
|
QVariantMap result = GccToolChain::toMap();
|
2013-01-25 16:49:22 +01:00
|
|
|
result.insert(QLatin1String(ANDROID_NDK_TC_VERION), m_ndkToolChainVersion);
|
2012-04-18 20:30:57 +03:00
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool AndroidToolChain::fromMap(const QVariantMap &data)
|
|
|
|
|
{
|
|
|
|
|
if (!GccToolChain::fromMap(data))
|
|
|
|
|
return false;
|
|
|
|
|
|
2013-01-25 16:49:22 +01:00
|
|
|
if (data.contains(QLatin1String(ANDROID_QT_VERSION_KEY))) {
|
|
|
|
|
QString command = compilerCommand().toString();
|
|
|
|
|
QString ndkPath = AndroidConfigurations::instance().config().ndkLocation.toString();
|
|
|
|
|
if (!command.startsWith(ndkPath))
|
|
|
|
|
return false;
|
|
|
|
|
command = command.mid(ndkPath.length());
|
|
|
|
|
if (!command.startsWith(QLatin1String("/toolchains/")))
|
|
|
|
|
return false;
|
|
|
|
|
command = command.mid(12);
|
|
|
|
|
int index = command.indexOf(QLatin1Char('/'));
|
|
|
|
|
if (index == -1)
|
|
|
|
|
return false;
|
|
|
|
|
command = command.left(index);
|
|
|
|
|
QRegExp versionRegExp(NDKGccVersionRegExp);
|
|
|
|
|
index = versionRegExp.indexIn(command);
|
|
|
|
|
if (index == -1)
|
|
|
|
|
return false;
|
|
|
|
|
m_ndkToolChainVersion = command.mid(index + 1);
|
|
|
|
|
QString platform = command.left(index);
|
|
|
|
|
Abi::Architecture arch = AndroidConfigurations::architectureForToolChainPrefix(platform);
|
|
|
|
|
ProjectExplorer::Abi abi = ProjectExplorer::Abi(arch, ProjectExplorer::Abi::LinuxOS,
|
|
|
|
|
ProjectExplorer::Abi::AndroidLinuxFlavor, ProjectExplorer::Abi::ElfFormat,
|
|
|
|
|
32);
|
|
|
|
|
setTargetAbi(abi);
|
|
|
|
|
} else {
|
|
|
|
|
m_ndkToolChainVersion = data.value(QLatin1String(ANDROID_NDK_TC_VERION)).toString();
|
|
|
|
|
}
|
2012-04-18 20:30:57 +03:00
|
|
|
|
|
|
|
|
return isValid();
|
|
|
|
|
}
|
|
|
|
|
|
2012-08-23 15:53:58 +02:00
|
|
|
QList<FileName> AndroidToolChain::suggestedMkspecList() const
|
2012-04-18 20:30:57 +03:00
|
|
|
{
|
2012-08-23 15:53:58 +02:00
|
|
|
return QList<FileName>()<< FileName::fromString(QLatin1String("android-g++"));
|
2012-04-18 20:30:57 +03:00
|
|
|
}
|
|
|
|
|
|
2012-09-11 15:59:17 +02:00
|
|
|
QString AndroidToolChain::makeCommand(const Utils::Environment &env) const
|
2012-04-18 20:30:57 +03:00
|
|
|
{
|
2012-09-12 17:27:37 +02:00
|
|
|
QString make = HostOsInfo::isWindowsHost()
|
|
|
|
|
? QLatin1String("ma-make.exe") : QLatin1String("make");
|
2012-09-11 15:59:17 +02:00
|
|
|
QString tmp = env.searchInPath(make);
|
|
|
|
|
return tmp.isEmpty() ? make : tmp;
|
2012-04-18 20:30:57 +03:00
|
|
|
}
|
|
|
|
|
|
2013-01-25 16:49:22 +01:00
|
|
|
QString AndroidToolChain::ndkToolChainVersion()
|
2012-04-18 20:30:57 +03:00
|
|
|
{
|
2013-01-25 16:49:22 +01:00
|
|
|
return m_ndkToolChainVersion;
|
2012-04-18 20:30:57 +03:00
|
|
|
}
|
|
|
|
|
|
2012-08-09 01:56:51 +02:00
|
|
|
QList<Abi> AndroidToolChain::detectSupportedAbis() const
|
2012-04-18 20:30:57 +03:00
|
|
|
{
|
2013-01-25 16:49:22 +01:00
|
|
|
return QList<Abi>() << targetAbi();
|
2012-04-18 20:30:57 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
|
// ToolChainConfigWidget
|
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
AndroidToolChainConfigWidget::AndroidToolChainConfigWidget(AndroidToolChain *tc) :
|
2012-08-09 01:56:51 +02:00
|
|
|
ToolChainConfigWidget(tc)
|
2012-04-18 20:30:57 +03:00
|
|
|
{
|
2012-08-16 15:59:10 +02:00
|
|
|
QLabel *label = new QLabel(AndroidConfigurations::instance().config().ndkLocation.toUserOutput());
|
|
|
|
|
m_mainLayout->addRow(tr("NDK Root:"), label);
|
2012-04-18 20:30:57 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
|
// ToolChainFactory
|
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
AndroidToolChainFactory::AndroidToolChainFactory() :
|
2012-08-09 01:56:51 +02:00
|
|
|
ToolChainFactory()
|
2012-04-18 20:30:57 +03:00
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
QString AndroidToolChainFactory::displayName() const
|
|
|
|
|
{
|
|
|
|
|
return tr("Android GCC");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString AndroidToolChainFactory::id() const
|
|
|
|
|
{
|
|
|
|
|
return QLatin1String(Constants::ANDROID_TOOLCHAIN_ID);
|
|
|
|
|
}
|
|
|
|
|
|
2012-08-09 01:56:51 +02:00
|
|
|
QList<ToolChain *> AndroidToolChainFactory::autoDetect()
|
2012-04-18 20:30:57 +03:00
|
|
|
{
|
2013-01-25 16:49:22 +01:00
|
|
|
return createToolChainsForNdk(AndroidConfigurations::instance().config().ndkLocation);
|
2012-04-18 20:30:57 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool AndroidToolChainFactory::canRestore(const QVariantMap &data)
|
|
|
|
|
{
|
|
|
|
|
return idFromMap(data).startsWith(QLatin1String(Constants::ANDROID_TOOLCHAIN_ID) + QLatin1Char(':'));
|
|
|
|
|
}
|
|
|
|
|
|
2012-08-09 01:56:51 +02:00
|
|
|
ToolChain *AndroidToolChainFactory::restore(const QVariantMap &data)
|
2012-04-18 20:30:57 +03:00
|
|
|
{
|
2013-01-25 16:49:22 +01:00
|
|
|
AndroidToolChain *tc = new AndroidToolChain();
|
2012-04-18 20:30:57 +03:00
|
|
|
if (tc->fromMap(data))
|
|
|
|
|
return tc;
|
|
|
|
|
|
|
|
|
|
delete tc;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2013-02-14 15:51:59 +01:00
|
|
|
QList<AndroidToolChainFactory::AndroidToolChainInformation> AndroidToolChainFactory::toolchainPathsForNdk(const Utils::FileName &ndkPath)
|
|
|
|
|
{
|
|
|
|
|
QList<AndroidToolChainInformation> result;
|
|
|
|
|
if (ndkPath.isEmpty())
|
|
|
|
|
return result;
|
|
|
|
|
QRegExp versionRegExp(NDKGccVersionRegExp);
|
|
|
|
|
FileName path = ndkPath;
|
|
|
|
|
QDirIterator it(path.appendPath(QLatin1String("toolchains")).toString(),
|
|
|
|
|
QStringList() << QLatin1String("*"), QDir::Dirs);
|
|
|
|
|
while (it.hasNext()) {
|
|
|
|
|
const QString &fileName = QFileInfo(it.next()).fileName();
|
|
|
|
|
int idx = versionRegExp.indexIn(fileName);
|
|
|
|
|
if (idx == -1)
|
|
|
|
|
continue;
|
|
|
|
|
AndroidToolChainInformation ati;
|
|
|
|
|
ati.version = fileName.mid(idx + 1);
|
|
|
|
|
QString platform = fileName.left(idx);
|
|
|
|
|
ati.architecture = AndroidConfigurations::architectureForToolChainPrefix(platform);
|
|
|
|
|
if (ati.architecture == Abi::UnknownArchitecture) // e.g. mipsel which is not yet supported
|
|
|
|
|
continue;
|
|
|
|
|
// AndroidToolChain *tc = new AndroidToolChain(arch, version, true);
|
|
|
|
|
ati.compilerCommand = ndkPath;
|
|
|
|
|
ati.compilerCommand.appendPath(QString::fromLatin1("toolchains/%1/prebuilt/%3/bin/%4")
|
|
|
|
|
.arg(fileName)
|
|
|
|
|
.arg(ToolchainHost)
|
|
|
|
|
.arg(AndroidConfigurations::toolsPrefix(ati.architecture)));
|
|
|
|
|
ati.compilerCommand.append(QLatin1String("-gcc" QTC_HOST_EXE_SUFFIX));
|
|
|
|
|
// tc->setCompilerCommand(compilerPath);
|
|
|
|
|
result.append(ati);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
2013-01-25 16:49:22 +01:00
|
|
|
QList<ToolChain *> AndroidToolChainFactory::createToolChainsForNdk(const Utils::FileName &ndkPath)
|
2012-04-18 20:30:57 +03:00
|
|
|
{
|
2012-08-09 01:56:51 +02:00
|
|
|
QList<ToolChain *> result;
|
2013-01-25 16:49:22 +01:00
|
|
|
if (ndkPath.isEmpty())
|
|
|
|
|
return result;
|
|
|
|
|
QRegExp versionRegExp(NDKGccVersionRegExp);
|
|
|
|
|
FileName path = ndkPath;
|
|
|
|
|
QDirIterator it(path.appendPath(QLatin1String("toolchains")).toString(),
|
|
|
|
|
QStringList() << QLatin1String("*"), QDir::Dirs);
|
|
|
|
|
while (it.hasNext()) {
|
|
|
|
|
const QString &fileName = QFileInfo(it.next()).fileName();
|
|
|
|
|
int idx = versionRegExp.indexIn(fileName);
|
|
|
|
|
if (idx == -1)
|
2012-04-18 20:30:57 +03:00
|
|
|
continue;
|
2013-01-25 16:49:22 +01:00
|
|
|
QString version = fileName.mid(idx + 1);
|
|
|
|
|
QString platform = fileName.left(idx);
|
|
|
|
|
Abi::Architecture arch = AndroidConfigurations::architectureForToolChainPrefix(platform);
|
|
|
|
|
if (arch == Abi::UnknownArchitecture) // e.g. mipsel which is not yet supported
|
|
|
|
|
continue;
|
|
|
|
|
AndroidToolChain *tc = new AndroidToolChain(arch, version, true);
|
|
|
|
|
FileName compilerPath = ndkPath;
|
|
|
|
|
compilerPath.appendPath(QString::fromLatin1("toolchains/%1/prebuilt/%3/bin/%4")
|
|
|
|
|
.arg(fileName)
|
|
|
|
|
.arg(ToolchainHost)
|
|
|
|
|
.arg(AndroidConfigurations::toolsPrefix(arch)));
|
|
|
|
|
compilerPath.append(QLatin1String("-gcc" QTC_HOST_EXE_SUFFIX));
|
|
|
|
|
tc->setCompilerCommand(compilerPath);
|
|
|
|
|
result.append(tc);
|
2012-04-18 20:30:57 +03:00
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace Internal
|
|
|
|
|
} // namespace Android
|