From 383f0b9fcc6f2e6faad002d01560a81df0ca1813 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 --- 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 8989c4ecee2..8c2ded5acd6 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -1348,7 +1348,7 @@ QString QmakeProject::executableFor(const QmakeProFileNode *node) } 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; }