forked from qt-creator/qt-creator
Remove MakeSpy tool
Ancient and unused Change-Id: I474173dd4471b1b3de43be861fefe2704604bb37 Reviewed-by: hjk <hjk121@nokiamail.com>
This commit is contained in:
@@ -1,206 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of Qt Creator.
|
||||
**
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include <QApplication>
|
||||
#include <QDebug>
|
||||
#include <QDir>
|
||||
#include <QProcess>
|
||||
#include <QStringList>
|
||||
#include <QTextStream>
|
||||
#include <QTextEdit>
|
||||
|
||||
class Process : public QProcess
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
Process();
|
||||
|
||||
QString output() const { return m_output; }
|
||||
QString error() const { return m_error; }
|
||||
|
||||
private slots:
|
||||
void standardErrorReady();
|
||||
void standardOutputReady();
|
||||
|
||||
private:
|
||||
QString m_output;
|
||||
QString m_error;
|
||||
};
|
||||
|
||||
Process::Process()
|
||||
{
|
||||
connect(this, SIGNAL(readyReadStandardError()),
|
||||
this, SLOT(standardErrorReady()));
|
||||
connect(this, SIGNAL(readyReadStandardOutput()),
|
||||
this, SLOT(standardOutputReady()));
|
||||
}
|
||||
|
||||
void Process::standardErrorReady()
|
||||
{
|
||||
m_error += readAllStandardError();
|
||||
}
|
||||
|
||||
void Process::standardOutputReady()
|
||||
{
|
||||
m_output += readAllStandardOutput();
|
||||
}
|
||||
|
||||
|
||||
class MakeProcess : public Process
|
||||
{
|
||||
public:
|
||||
void handleOutput();
|
||||
|
||||
private:
|
||||
void handleMakeLine(const QString &line);
|
||||
void handleGccLine(const QString &line);
|
||||
|
||||
QStringList m_dirStack;
|
||||
|
||||
QVector<QString> m_options;
|
||||
QStringList m_sourceFiles;
|
||||
QStringList m_headerFiles;
|
||||
};
|
||||
|
||||
void MakeProcess::handleOutput()
|
||||
{
|
||||
QStringList lines = output().split('\n');
|
||||
m_dirStack.clear();
|
||||
m_dirStack.append(workingDirectory());
|
||||
foreach (const QString &line, lines) {
|
||||
qDebug() << "LINE : " << line;
|
||||
if (line.startsWith("make["))
|
||||
handleMakeLine(line);
|
||||
else if (line.startsWith("gcc") || line.startsWith("g++"))
|
||||
handleGccLine(line);
|
||||
else
|
||||
qDebug() << "IGNORE: " << line;
|
||||
}
|
||||
}
|
||||
|
||||
void MakeProcess::handleMakeLine(const QString &line)
|
||||
{
|
||||
int pos1 = line.indexOf('`');
|
||||
int pos2 = line.indexOf('\'');
|
||||
if (pos1 >= 0 && pos2 >= 0) {
|
||||
QString dir = line.mid(pos1 + 1, pos2 - pos1 - 1);
|
||||
qDebug() << "MAKE" << pos1 << pos2 << dir;
|
||||
if (line.contains(": Entering directory")) {
|
||||
qDebug() << "ENTER: " << dir;
|
||||
m_dirStack.append(dir);
|
||||
} else if (line.contains(": Leaving directory")) {
|
||||
qDebug() << "LEAVE: " << dir;
|
||||
Q_ASSERT(m_dirStack.last() == dir);
|
||||
(void) m_dirStack.takeLast();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QStringList parseLine(const QString &line)
|
||||
{
|
||||
QStringList result;
|
||||
QString word;
|
||||
bool quoted = false;
|
||||
bool escaped = false;
|
||||
for (int i = 0; i != line.size(); ++i) {
|
||||
char c = line.at(i).unicode();
|
||||
if (c == '\'') {
|
||||
escaped = true;
|
||||
continue;
|
||||
}
|
||||
if (c == '\"' && !escaped) {
|
||||
quoted = !quoted;
|
||||
} else if (c == ' ' && !quoted) {
|
||||
if (!word.isEmpty())
|
||||
result.append(word);
|
||||
word.clear();
|
||||
} else {
|
||||
word += c;
|
||||
}
|
||||
}
|
||||
if (!word.isEmpty())
|
||||
result.append(word);
|
||||
return result;
|
||||
}
|
||||
|
||||
void MakeProcess::handleGccLine(const QString &line)
|
||||
{
|
||||
QStringList args = parseLine(line);
|
||||
qDebug() << "GCC: " << args;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
QStringList args = app.arguments();
|
||||
QString buildName = ".makespybuild/gdb";
|
||||
//args << "
|
||||
|
||||
QDir oldDir = QDir::current();
|
||||
QDir buildDir("/home/apoenitz/gdb/archer");
|
||||
buildDir.mkdir(buildName);
|
||||
buildDir.cd(buildName);
|
||||
QDir::setCurrent(buildDir.absolutePath());
|
||||
|
||||
/*
|
||||
Process configure;
|
||||
configure.setWorkingDirectory(buildDir.absolutePath());
|
||||
configure.start("../configure", QStringList());
|
||||
configure.waitForFinished();
|
||||
qDebug() << configure.errorString();
|
||||
qDebug() << configure.error();
|
||||
qDebug() << configure.output();
|
||||
*/
|
||||
MakeProcess make;
|
||||
make.setWorkingDirectory(buildDir.absolutePath());
|
||||
make.start("make", QStringList());
|
||||
make.waitForFinished();
|
||||
make.handleOutput();
|
||||
qDebug() << make.errorString();
|
||||
qDebug() << make.error();
|
||||
qDebug() << make.output();
|
||||
|
||||
Process clean;
|
||||
clean.setWorkingDirectory(buildDir.absolutePath());
|
||||
clean.start("make", QStringList() << "clean");
|
||||
clean.waitForFinished();
|
||||
qDebug() << clean.errorString();
|
||||
qDebug() << clean.error();
|
||||
qDebug() << clean.output();
|
||||
|
||||
QTextEdit edit;
|
||||
edit.setText(make.error() + make.output());
|
||||
edit.resize(800, 600);
|
||||
edit.show();
|
||||
|
||||
return app.exec();
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include "main.moc"
|
@@ -1,6 +0,0 @@
|
||||
TARGET = MakeSpy
|
||||
CONFIG += console
|
||||
CONFIG -= app_bundle
|
||||
TEMPLATE = app
|
||||
SOURCES += main.cpp
|
||||
HEADERS +=
|
Reference in New Issue
Block a user