diff --git a/src/libs/utils/buildablehelperlibrary.cpp b/src/libs/utils/buildablehelperlibrary.cpp index 24e8f5e90b6aeba5f5b5a7a0d68961532364261c..dd05b7ffffc164e5e598a2a3eb1088ea389d2aca 100644 --- a/src/libs/utils/buildablehelperlibrary.cpp +++ b/src/libs/utils/buildablehelperlibrary.cpp @@ -223,58 +223,58 @@ static bool runBuildProcess(QProcess &proc, } -bool BuildableHelperLibrary::buildHelper(const QString &helperName, const QString &proFilename, - const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, - const Utils::Environment &env, const QString &targetMode, - const QStringList &qmakeArguments, QString *output, - QString *errorMessage) +bool BuildableHelperLibrary::buildHelper(const BuildHelperArguments &arguments, + QString *log, QString *errorMessage) { const QChar newline = QLatin1Char('\n'); // Setup process QProcess proc; - proc.setEnvironment(env.toStringList()); - proc.setWorkingDirectory(directory); + proc.setEnvironment(arguments.environment.toStringList()); + proc.setWorkingDirectory(arguments.directory); proc.setProcessChannelMode(QProcess::MergedChannels); - output->append(QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", - "Building helper '%1' in %2\n").arg(helperName, directory)); - output->append(newline); + log->append(QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", + "Building helper '%1' in %2\n").arg(arguments.helperName, + arguments.directory)); + log->append(newline); - const QString makeFullPath = env.searchInPath(makeCommand); - if (QFileInfo(directory + QLatin1String("/Makefile")).exists()) { + const QString makeFullPath = arguments.environment.searchInPath(arguments.makeCommand); + if (QFileInfo(arguments.directory + QLatin1String("/Makefile")).exists()) { if (makeFullPath.isEmpty()) { *errorMessage = QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", - "%1 not found in PATH\n").arg(makeCommand); + "%1 not found in PATH\n").arg(arguments.makeCommand); return false; } const QString cleanTarget = QLatin1String("distclean"); - output->append(QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", + log->append(QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", "Running %1 %2...\n").arg(makeFullPath, cleanTarget)); - if (!runBuildProcess(proc, makeFullPath, QStringList(cleanTarget), 30000, true, output, errorMessage)) + if (!runBuildProcess(proc, makeFullPath, QStringList(cleanTarget), 30000, true, log, errorMessage)) return false; } QStringList qmakeArgs; - if (!targetMode.isEmpty()) - qmakeArgs << targetMode; - if (!mkspec.isEmpty()) - qmakeArgs << QLatin1String("-spec") << mkspec; - qmakeArgs << proFilename; - qmakeArgs << qmakeArguments; + if (!arguments.targetMode.isEmpty()) + qmakeArgs << arguments.targetMode; + if (!arguments.mkspec.isEmpty()) + qmakeArgs << QLatin1String("-spec") << arguments.mkspec; + qmakeArgs << arguments.proFilename; + qmakeArgs << arguments.qmakeArguments; - output->append(newline); - output->append(QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", "Running %1 %2 ...\n").arg(qmakeCommand, - qmakeArgs.join(" "))); + log->append(newline); + log->append(QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", + "Running %1 %2 ...\n").arg(arguments.qmakeCommand, + arguments.qmakeArguments.join(" "))); - if (!runBuildProcess(proc, qmakeCommand, qmakeArgs, 30000, false, output, errorMessage)) + if (!runBuildProcess(proc, arguments.qmakeCommand, arguments.qmakeArguments, 30000, false, log, errorMessage)) return false; - output->append(newline); + log->append(newline); if (makeFullPath.isEmpty()) { - *errorMessage = QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", "%1 not found in PATH\n").arg(makeCommand); + *errorMessage = QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", + "%1 not found in PATH\n").arg(arguments.makeCommand); return false; } - output->append(QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", "Running %1 ...\n").arg(makeFullPath)); - if (!runBuildProcess(proc, makeFullPath, QStringList(), 120000, false, output, errorMessage)) + log->append(QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", + "Running %1 ...\n").arg(makeFullPath)); + if (!runBuildProcess(proc, makeFullPath, QStringList(), 120000, false, log, errorMessage)) return false; return true; } diff --git a/src/libs/utils/buildablehelperlibrary.h b/src/libs/utils/buildablehelperlibrary.h index ea4eefdcce99f162bfca1d7e3ad00ab1c100a642..d6a8227eb7283d4b83b7f0a37884c0a227e8f839 100644 --- a/src/libs/utils/buildablehelperlibrary.h +++ b/src/libs/utils/buildablehelperlibrary.h @@ -34,6 +34,7 @@ #define BUILDABLEHELPERLIBRARY_H #include "utils_global.h" +#include <utils/environment.h> #include <QtCore/QString> @@ -67,12 +68,22 @@ public: static bool copyFiles(const QString &sourcePath, const QStringList &files, const QString &targetDirectory, QString *errorMessage); - static bool buildHelper(const QString &helperName, const QString &proFilename, - const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, - const Utils::Environment &env, const QString &targetMode, - const QStringList &qmakeArguments, QString *output, - QString *errorMessage); + struct BuildHelperArguments { + QString helperName; + QString directory; + Utils::Environment environment; + + QString qmakeCommand; + QString targetMode; + QString mkspec; + QString proFilename; + QStringList qmakeArguments; + + QString makeCommand; + }; + + static bool buildHelper(const BuildHelperArguments &arguments, + QString *log, QString *errorMessage); static bool getHelperFileInfoFor(const QStringList &validBinaryFilenames, const QString &directory, QFileInfo* info); diff --git a/src/plugins/projectexplorer/debugginghelper.cpp b/src/plugins/projectexplorer/debugginghelper.cpp index 57cf1add651aa5f063b4a9b3c77f6c711c43fd34..9b3add8beee532378e45509dd6407c817bb63a71 100644 --- a/src/plugins/projectexplorer/debugginghelper.cpp +++ b/src/plugins/projectexplorer/debugginghelper.cpp @@ -125,13 +125,10 @@ QString DebuggingHelperLibrary::copy(const QString &qtInstallData, return QString(); } -bool DebuggingHelperLibrary::build(const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, - const Utils::Environment &env, const QString &targetMode, - const QStringList &qmakeArguments, QString *output, - QString *errorMessage) +bool DebuggingHelperLibrary::build(BuildHelperArguments arguments, QString *log, QString *errorMessage) { - return buildHelper(QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", - "GDB helper"), QLatin1String("gdbmacros.pro"), directory, - makeCommand, qmakeCommand, mkspec, env, targetMode, qmakeArguments, output, errorMessage); + arguments.proFilename = QLatin1String("gdbmacros.pro"); + arguments.helperName = QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", + "GDB helper"); + return buildHelper(arguments, log, errorMessage); } diff --git a/src/plugins/projectexplorer/debugginghelper.h b/src/plugins/projectexplorer/debugginghelper.h index 158c2455c9c832e18a97924a236f56535f613274..459d2199e83062df5e17f8f00823e41acab2da5a 100644 --- a/src/plugins/projectexplorer/debugginghelper.h +++ b/src/plugins/projectexplorer/debugginghelper.h @@ -50,10 +50,7 @@ public: static QStringList locationsByInstallData(const QString &qtInstallData); // Build the helpers and return the output log/errormessage. - static bool build(const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, - const Utils::Environment &env, const QString &targetMode, - const QStringList &qmakeArguments, QString *output, QString *errorMessage); + static bool build(BuildHelperArguments arguments, QString *log, QString *errorMessage); // Copy the source files to a target location and return the chosen target location. static QString copy(const QString &qtInstallData, QString *errorMessage); diff --git a/src/plugins/qt4projectmanager/debugginghelperbuildtask.cpp b/src/plugins/qt4projectmanager/debugginghelperbuildtask.cpp index eb6dd2b8ea748d0de6a88083e12bef8b9f6221a4..fc6c407081e89b62488672eb4fb413d242dae8ee 100644 --- a/src/plugins/qt4projectmanager/debugginghelperbuildtask.cpp +++ b/src/plugins/qt4projectmanager/debugginghelperbuildtask.cpp @@ -143,24 +143,28 @@ void DebuggingHelperBuildTask::run(QFutureInterface<void> &future) bool DebuggingHelperBuildTask::buildDebuggingHelper(QFutureInterface<void> &future, QString *output) { + Utils::BuildableHelperLibrary::BuildHelperArguments arguments; + arguments.makeCommand = m_makeCommand; + arguments.qmakeCommand = m_qmakeCommand; + arguments.targetMode = m_target; + arguments.mkspec = m_mkspec; + arguments.environment = m_environment; + if (m_tools & GdbDebugging) { - const QString gdbHelperDirectory = DebuggingHelperLibrary::copy(m_qtInstallData, - &m_errorMessage); - if (gdbHelperDirectory.isEmpty()) + arguments.directory = DebuggingHelperLibrary::copy(m_qtInstallData, &m_errorMessage); + if (arguments.directory.isEmpty()) return false; - if (!DebuggingHelperLibrary::build(gdbHelperDirectory, m_makeCommand, - m_qmakeCommand, m_mkspec, m_environment, - m_target, QStringList(), output, &m_errorMessage)) + + if (!DebuggingHelperLibrary::build(arguments, output, &m_errorMessage)) return false; } future.setProgressValue(2); if (m_tools & QmlDump) { - const QString qmlDumpToolDirectory = QmlDumpTool::copy(m_qtInstallData, &m_errorMessage); - if (qmlDumpToolDirectory.isEmpty()) + arguments.directory = QmlDumpTool::copy(m_qtInstallData, &m_errorMessage); + if (arguments.directory.isEmpty()) return false; - if (!QmlDumpTool::build(qmlDumpToolDirectory, m_makeCommand, m_qmakeCommand, m_mkspec, - m_environment, m_target, QStringList(), output, &m_errorMessage)) + if (!QmlDumpTool::build(arguments, output, &m_errorMessage)) return false; } future.setProgressValue(3); @@ -170,25 +174,21 @@ bool DebuggingHelperBuildTask::buildDebuggingHelper(QFutureInterface<void> &futu qmlDebuggingDirectory = QmlDebuggingLibrary::copy(m_qtInstallData, &m_errorMessage); if (qmlDebuggingDirectory.isEmpty()) return false; - if (!QmlDebuggingLibrary::build(qmlDebuggingDirectory, m_makeCommand, - m_qmakeCommand, m_mkspec, m_environment, - m_target, QStringList(), output, &m_errorMessage)) + arguments.directory = qmlDebuggingDirectory; + if (!QmlDebuggingLibrary::build(arguments, output, &m_errorMessage)) return false; } future.setProgressValue(4); if (m_tools & QmlObserver) { - const QString qmlObserverDirectory = QmlObserverTool::copy(m_qtInstallData, - &m_errorMessage); - if (qmlObserverDirectory.isEmpty()) + arguments.directory = QmlObserverTool::copy(m_qtInstallData, &m_errorMessage); + if (arguments.directory.isEmpty()) return false; - QStringList qmakeArgs; - qmakeArgs << QLatin1String("INCLUDEPATH+=\"\\\"") + qmlDebuggingDirectory + "include\\\"\""; - qmakeArgs << QLatin1String("LIBS+=-L\"\\\"") + qmlDebuggingDirectory + QLatin1String("\\\"\""); + arguments.qmakeArguments << QLatin1String("INCLUDEPATH+=\"\\\"") + qmlDebuggingDirectory + "include\\\"\""; + arguments.qmakeArguments << QLatin1String("LIBS+=-L\"\\\"") + qmlDebuggingDirectory + QLatin1String("\\\"\""); - if (!QmlObserverTool::build(qmlObserverDirectory, m_makeCommand, m_qmakeCommand, m_mkspec, - m_environment, m_target, qmakeArgs, output, &m_errorMessage)) + if (!QmlObserverTool::build(arguments, output, &m_errorMessage)) return false; } future.setProgressValue(5); diff --git a/src/plugins/qt4projectmanager/qmldebugginglibrary.cpp b/src/plugins/qt4projectmanager/qmldebugginglibrary.cpp index 379275c73b5dcfe9fbf8625320293f1e2e082d70..ce3485af7555ae9069a6d290c07169ab699f67de 100644 --- a/src/plugins/qt4projectmanager/qmldebugginglibrary.cpp +++ b/src/plugins/qt4projectmanager/qmldebugginglibrary.cpp @@ -70,15 +70,11 @@ bool QmlDebuggingLibrary::canBuild(const QtVersion *qtVersion) return qtVersion->qtVersion() >= QtVersionNumber(4, 7, 1); } -bool QmlDebuggingLibrary::build(const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, - const Utils::Environment &env, const QString &targetMode, - const QStringList &qmakeArguments, QString *output, QString *errorMessage) +bool QmlDebuggingLibrary::build(BuildHelperArguments arguments, QString *log, QString *errorMessage) { - return buildHelper(QCoreApplication::translate("Qt4ProjectManager::QmlDebuggingLibrary", "QML Debugging"), - QLatin1String("qmljsdebugger.pro"), - directory, makeCommand, qmakeCommand, mkspec, env, targetMode, - qmakeArguments, output, errorMessage); + arguments.helperName = QCoreApplication::translate("Qt4ProjectManager::QmlDebuggingLibrary", "QML Debugging"); + arguments.proFilename = QLatin1String("qmljsdebugger.pro"); + return buildHelper(arguments, log, errorMessage); } static inline bool mkpath(const QString &targetDirectory, QString *errorMessage) diff --git a/src/plugins/qt4projectmanager/qmldebugginglibrary.h b/src/plugins/qt4projectmanager/qmldebugginglibrary.h index ae4066fb5dd3ff07ca8ee070c1531b0d301c58d3..08edc3c66d97b345091f475b45a4ef1dee6f7dfd 100644 --- a/src/plugins/qt4projectmanager/qmldebugginglibrary.h +++ b/src/plugins/qt4projectmanager/qmldebugginglibrary.h @@ -56,10 +56,7 @@ public: static QString libraryByInstallData(const QString &qtInstallData, bool debugBuild); static bool canBuild(const QtVersion *qtVersion); - static bool build(const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, - const Utils::Environment &env, const QString &targetMode, - const QStringList &qmakeArguments, QString *output, QString *errorMessage); + static bool build(BuildHelperArguments arguments, QString *log, QString *errorMessage); static QString copy(const QString &qtInstallData, QString *errorMessage); private: diff --git a/src/plugins/qt4projectmanager/qmldumptool.cpp b/src/plugins/qt4projectmanager/qmldumptool.cpp index 84dc13a48ab1e2a9ee858f036c1780ee71d3f951..81fd3b456c920c52a8b145d4acd13a1a8cf23977 100644 --- a/src/plugins/qt4projectmanager/qmldumptool.cpp +++ b/src/plugins/qt4projectmanager/qmldumptool.cpp @@ -290,14 +290,11 @@ QStringList QmlDumpTool::locationsByInstallData(const QString &qtInstallData, bo return result; } -bool QmlDumpTool::build(const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, - const Utils::Environment &env, const QString &targetMode, - const QStringList &qmakeArguments, QString *output, QString *errorMessage) +bool QmlDumpTool::build(BuildHelperArguments arguments, QString *log, QString *errorMessage) { - return buildHelper(QCoreApplication::translate("Qt4ProjectManager::QmlDumpTool", "qmldump"), QLatin1String("qmldump.pro"), - directory, makeCommand, qmakeCommand, mkspec, env, targetMode, - qmakeArguments, output, errorMessage); + arguments.helperName = QCoreApplication::translate("Qt4ProjectManager::QmlDumpTool", "qmldump"); + arguments.proFilename = QLatin1String("qmldump.pro"); + return buildHelper(arguments, log, errorMessage); } QString QmlDumpTool::copy(const QString &qtInstallData, QString *errorMessage) diff --git a/src/plugins/qt4projectmanager/qmldumptool.h b/src/plugins/qt4projectmanager/qmldumptool.h index c60c2bc4f99947e97a872e9d76286de0fa7e870c..217ef0e37db55acef57ad06bead7296787b5857b 100644 --- a/src/plugins/qt4projectmanager/qmldumptool.h +++ b/src/plugins/qt4projectmanager/qmldumptool.h @@ -58,10 +58,7 @@ public: static QStringList locationsByInstallData(const QString &qtInstallData, bool debugDump); // Build the helpers and return the output log/errormessage. - static bool build(const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, - const Utils::Environment &env, const QString &targetMode, - const QStringList &qmakeArguments, QString *output, QString *errorMessage); + static bool build(BuildHelperArguments arguments, QString *log, QString *errorMessage); // Copy the source files to a target location and return the chosen target location. static QString copy(const QString &qtInstallData, QString *errorMessage); diff --git a/src/plugins/qt4projectmanager/qmlobservertool.cpp b/src/plugins/qt4projectmanager/qmlobservertool.cpp index 42295a4a55915372278240dde851c4ad7d7dc9d3..04b66b387c8b1942ef6d71d4d07019fcb6d52ba6 100644 --- a/src/plugins/qt4projectmanager/qmlobservertool.cpp +++ b/src/plugins/qt4projectmanager/qmlobservertool.cpp @@ -101,16 +101,12 @@ QStringList QmlObserverTool::locationsByInstallData(const QString &qtInstallData return result; } -bool QmlObserverTool::build(const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, - const Utils::Environment &env, const QString &targetMode, - const QStringList &qmakeArguments, QString *output, - QString *errorMessage) +bool QmlObserverTool::build(BuildHelperArguments arguments, QString *log, QString *errorMessage) { - return buildHelper(QCoreApplication::translate("Qt4ProjectManager::QmlObserverTool", "QMLObserver"), - QLatin1String("qmlobserver.pro"), - directory, makeCommand, qmakeCommand, mkspec, env, targetMode, - qmakeArguments, output, errorMessage); + arguments.helperName = QCoreApplication::translate("Qt4ProjectManager::QmlObserverTool", "QMLObserver"); + arguments.proFilename = QLatin1String("qmlobserver.pro"); + + return buildHelper(arguments, log, errorMessage); } static inline bool mkpath(const QString &targetDirectory, QString *errorMessage) diff --git a/src/plugins/qt4projectmanager/qmlobservertool.h b/src/plugins/qt4projectmanager/qmlobservertool.h index bd98e0a6a83256ee2cfcec2636a11c4283d92e67..779a3b22150cb6d788918d378e10efad24cbadbc 100644 --- a/src/plugins/qt4projectmanager/qmlobservertool.h +++ b/src/plugins/qt4projectmanager/qmlobservertool.h @@ -59,10 +59,7 @@ public: static QStringList locationsByInstallData(const QString &qtInstallData); // Build the helpers and return the output log/errormessage. - static bool build(const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, - const Utils::Environment &env, const QString &targetMode, - const QStringList &qmakeArguments, QString *output, QString *errorMessage); + static bool build(BuildHelperArguments arguments, QString *out, QString *err); // Copy the source files to a target location and return the chosen target location. static QString copy(const QString &qtInstallData, QString *errorMessage);