From f0226d9644e7936cc12109448490047ae52bc320 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 30 Nov 2018 11:10:02 +0100 Subject: [PATCH] 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 Reviewed-by: hjk Reviewed-by: Robert Loehning (cherry picked from commit 383f0b9fcc6f2e6faad002d01560a81df0ca1813) --- src/plugins/projectexplorer/abi.cpp | 21 +++++++++++++++++++ src/plugins/projectexplorer/abi.h | 4 ++++ .../qmakeprojectmanager/qmakeproject.cpp | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp index bc8c9efa4ec..69d87fd1b09 100644 --- a/src/plugins/projectexplorer/abi.cpp +++ b/src/plugins/projectexplorer/abi.cpp @@ -547,6 +547,27 @@ Abi Abi::abiFromTargetTriplet(const QString &triple) 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 { const QStringList dn = {toString(m_architecture), toString(m_os), toString(m_osFlavor), diff --git a/src/plugins/projectexplorer/abi.h b/src/plugins/projectexplorer/abi.h index 09cc284a5ca..e49df3348f8 100644 --- a/src/plugins/projectexplorer/abi.h +++ b/src/plugins/projectexplorer/abi.h @@ -27,6 +27,8 @@ #include "projectexplorer_export.h" +#include + #include #include @@ -112,6 +114,8 @@ public: 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 isCompatibleWith(const Abi &other) const; diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 25477977806..2ec401c1725 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -1347,7 +1347,7 @@ QString QmakeProject::executableFor(const QmakeProFile *file) } else { const QString extension = file->singleVariableValue(Variable::TargetExt); if (extension.isEmpty()) - target = HostOsInfo::withExecutableSuffix(ti.target); + target = OsSpecificAspects::withExecutableSuffix(Abi::abiOsToOsType(tc->targetAbi().os()), ti.target); else target = ti.target + extension; }