diff options
author | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-01-29 10:08:39 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-01-29 13:07:05 +0000 |
commit | 739cc9f053e08b8b873680385ac4c8638d51946a (patch) | |
tree | 74283f053248979f9a253f5991c930ac3dd1f2ad /src/tools/cplusplus-tools-utils/cplusplus-tools-utils.cpp | |
parent | c001e98da8c11a5aa3dfe3ee85701e788411aec4 (diff) | |
download | qt-creator-739cc9f053e08b8b873680385ac4c8638d51946a.tar.gz |
C++: Clean up dev tools
* Move cplusplus-frontend to src/tools
* Make them depend on libs/cplusplus instead of building that lib again
* Put the binaries into bin of the qtcreator build directory
* Unify *.pro files
* Build them all if BUILD_CPLUSPLUS_TOOLS is set
Change-Id: I8f9cd731625cbf9f41d5f6464c6cd946ffd6e141
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/tools/cplusplus-tools-utils/cplusplus-tools-utils.cpp')
-rw-r--r-- | src/tools/cplusplus-tools-utils/cplusplus-tools-utils.cpp | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/src/tools/cplusplus-tools-utils/cplusplus-tools-utils.cpp b/src/tools/cplusplus-tools-utils/cplusplus-tools-utils.cpp deleted file mode 100644 index 0a549d3ac0..0000000000 --- a/src/tools/cplusplus-tools-utils/cplusplus-tools-utils.cpp +++ /dev/null @@ -1,146 +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://www.qt.io/licensing. For further information -** use the contact form at http://www.qt.io/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 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** 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 "cplusplus-tools-utils.h" - -#include <utils/environment.h> - -#include <QDebug> -#include <QDir> -#include <QFile> -#include <QProcess> - -namespace CplusplusToolsUtils { - -QString portableExecutableName(const QString &executable) -{ -#if defined(Q_OS_WIN) - return executable + QLatin1String(".exe"); -#else - return executable; -#endif -} - -void executeCommand(const QString &command, const QStringList &arguments, const QString &outputFile, - bool verbose) -{ - QTextStream out(stderr); - if (command.isEmpty()) { - out << "Error: " << Q_FUNC_INFO << "Got empty command to execute." << endl; - exit(EXIT_FAILURE); - } - - const QString fullCommand = command + QLatin1Char(' ') + arguments.join(QLatin1Char(' ')); - if (verbose) - out << "Executing: " << fullCommand << endl; - - QProcess process; - if (!outputFile.isEmpty()) - process.setStandardOutputFile(outputFile, QIODevice::Truncate); - process.start(command, arguments); - if (!process.waitForStarted()) { - out << QString::fromLatin1("Error: Process \"%1\" did not start within timeout: %2.") - .arg(fullCommand, process.errorString()) - << endl; - exit(EXIT_FAILURE); - } - if (!process.waitForFinished()) { - if (!verbose) - out << process.readAll() << endl; - out << QString::fromLatin1("Error: Process \"%1\" did not finish within timeout.") - .arg(fullCommand) - << endl; - exit(EXIT_FAILURE); - } - const int exitCode = process.exitCode(); - if (exitCode != 0) { - out << process.readAllStandardError() << endl; - out << QString::fromLatin1("Error: Process \"%1\" finished with non zero exit value %2") - .arg(fullCommand, exitCode) << endl; - exit(EXIT_FAILURE); - } -} - -SystemPreprocessor::SystemPreprocessor(bool verbose) - : m_verbose(verbose) -{ - m_knownCompilers[portableExecutableName(QLatin1String("gcc"))] - = QLatin1String("-DCPLUSPLUS_WITHOUT_QT -U__BLOCKS__ -xc++ -E -include"); - m_knownCompilers[portableExecutableName(QLatin1String("cl"))] - = QLatin1String("/DCPLUSPLUS_WITHOUT_QT /U__BLOCKS__ /TP /E /I . /FI"); - - QMapIterator<QString, QString> i(m_knownCompilers); - while (i.hasNext()) { - i.next(); - const Utils::FileName executablePath - = Utils::Environment::systemEnvironment().searchInPath(i.key()); - if (!executablePath.isEmpty()) { - m_compiler = i.key(); - m_compilerArguments = i.value().split(QLatin1Char(' '), QString::SkipEmptyParts); - m_compilerArguments - << QDir::toNativeSeparators(QLatin1String(PATH_PREPROCESSOR_CONFIG)); - break; - } - } -} - -void SystemPreprocessor::check() const -{ - QTextStream out(stderr); - if (!QFile::exists(QLatin1String(PATH_PREPROCESSOR_CONFIG))) { - out << QString::fromLatin1("Error: File \"%1\" does not exist.") - .arg(QLatin1String(PATH_PREPROCESSOR_CONFIG)) - << endl; - exit(EXIT_FAILURE); - } - if (m_compiler.isEmpty()) { - const QString triedCompilers - = QStringList(m_knownCompilers.keys()).join(QLatin1String(", ")); - out << QString::fromLatin1("Error: No compiler found. Tried %1.").arg(triedCompilers) - << endl; - exit(EXIT_FAILURE); - } -} - -void SystemPreprocessor::preprocessFile(const QString &inputFile, const QString &outputFile) const -{ - check(); - if (!QFile::exists(inputFile)) { - QTextStream out(stderr); - out << QString::fromLatin1("Error: File \"%1\" does not exist.").arg(inputFile) << endl; - exit(EXIT_FAILURE); - } - const QStringList arguments = QStringList(m_compilerArguments) - << QDir::toNativeSeparators(inputFile); - executeCommand(m_compiler, arguments, outputFile, m_verbose); -} - -} // namespace |