forked from qt-creator/qt-creator
Qmake: Use target-specific extension for deployment
Add file extensions to execatables about to be deployed based on the
OS found in the toolchain's targetAbi instead of using the hostOs().
This should fix deployment from windows to non-windows machines.
Task-number: QTCREATORBUG-21608
Change-Id: I83678bda1d56ff24848b7b498b95081d00b5a5f0
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
(cherry picked from commit 383f0b9fcc
)
This commit is contained in:
committed by
Eike Ziller
parent
185f8985c6
commit
f0226d9644
@@ -547,6 +547,27 @@ Abi Abi::abiFromTargetTriplet(const QString &triple)
|
|||||||
return Abi(arch, os, flavor, format, width);
|
return Abi(arch, os, flavor, format, width);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Utils::OsType Abi::abiOsToOsType(const Abi::OS os)
|
||||||
|
{
|
||||||
|
switch (os) {
|
||||||
|
case ProjectExplorer::Abi::LinuxOS:
|
||||||
|
return Utils::OsType::OsTypeLinux;
|
||||||
|
case ProjectExplorer::Abi::DarwinOS:
|
||||||
|
return Utils::OsType::OsTypeMac;
|
||||||
|
case ProjectExplorer::Abi::BsdOS:
|
||||||
|
case ProjectExplorer::Abi::UnixOS:
|
||||||
|
return Utils::OsType::OsTypeOtherUnix;
|
||||||
|
case ProjectExplorer::Abi::WindowsOS:
|
||||||
|
return Utils::OsType::OsTypeWindows;
|
||||||
|
case ProjectExplorer::Abi::VxWorks:
|
||||||
|
case ProjectExplorer::Abi::QnxOS:
|
||||||
|
case ProjectExplorer::Abi::BareMetalOS:
|
||||||
|
case ProjectExplorer::Abi::UnknownOS:
|
||||||
|
return Utils::OsType::OsTypeOther;
|
||||||
|
}
|
||||||
|
return Utils::OsType::OsTypeOther;
|
||||||
|
}
|
||||||
|
|
||||||
QString Abi::toString() const
|
QString Abi::toString() const
|
||||||
{
|
{
|
||||||
const QStringList dn = {toString(m_architecture), toString(m_os), toString(m_osFlavor),
|
const QStringList dn = {toString(m_architecture), toString(m_os), toString(m_osFlavor),
|
||||||
|
@@ -27,6 +27,8 @@
|
|||||||
|
|
||||||
#include "projectexplorer_export.h"
|
#include "projectexplorer_export.h"
|
||||||
|
|
||||||
|
#include <utils/osspecificaspects.h>
|
||||||
|
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
|
|
||||||
@@ -112,6 +114,8 @@ public:
|
|||||||
|
|
||||||
static Abi abiFromTargetTriplet(const QString &machineTriple);
|
static Abi abiFromTargetTriplet(const QString &machineTriple);
|
||||||
|
|
||||||
|
static Utils::OsType abiOsToOsType(const OS os);
|
||||||
|
|
||||||
bool operator != (const Abi &other) const;
|
bool operator != (const Abi &other) const;
|
||||||
bool operator == (const Abi &other) const;
|
bool operator == (const Abi &other) const;
|
||||||
bool isCompatibleWith(const Abi &other) const;
|
bool isCompatibleWith(const Abi &other) const;
|
||||||
|
@@ -1347,7 +1347,7 @@ QString QmakeProject::executableFor(const QmakeProFile *file)
|
|||||||
} else {
|
} else {
|
||||||
const QString extension = file->singleVariableValue(Variable::TargetExt);
|
const QString extension = file->singleVariableValue(Variable::TargetExt);
|
||||||
if (extension.isEmpty())
|
if (extension.isEmpty())
|
||||||
target = HostOsInfo::withExecutableSuffix(ti.target);
|
target = OsSpecificAspects::withExecutableSuffix(Abi::abiOsToOsType(tc->targetAbi().os()), ti.target);
|
||||||
else
|
else
|
||||||
target = ti.target + extension;
|
target = ti.target + extension;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user