diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 331a882a32f..b036dbc6a55 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -70,6 +70,8 @@ QT_END_NAMESPACE namespace Utils { +static std::function s_remoteRunProcessHook; + /*! \class Utils::QtcProcess @@ -704,6 +706,12 @@ void QtcProcess::setUseCtrlCStub(bool enabled) void QtcProcess::start() { + if (m_commandLine.executable().needsDevice()) { + QTC_ASSERT(s_remoteRunProcessHook, return); + s_remoteRunProcessHook(*this); + return; + } + Environment env; const OsType osType = HostOsInfo::hostOs(); if (m_haveEnv) { @@ -1230,6 +1238,11 @@ QString QtcProcess::expandMacros(const QString &str, AbstractMacroExpander *mx, return ret; } +void QtcProcess::setRemoteStartProcessHook(const std::function &hook) +{ + s_remoteRunProcessHook = hook; +} + #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) void QtcProcess::setupChildProcess() { diff --git a/src/libs/utils/qtcprocess.h b/src/libs/utils/qtcprocess.h index 4b2590ca649..b89af21a73f 100644 --- a/src/libs/utils/qtcprocess.h +++ b/src/libs/utils/qtcprocess.h @@ -141,6 +141,11 @@ public: ArgIterator m_ait; }; + const CommandLine &commandLine() const { return m_commandLine; } + const Environment &environment() const { return m_environment; } + + static void setRemoteStartProcessHook(const std::function &hook); + private: #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) void setupChildProcess() override;