From 114a878c64ce6f8223cfd22d76a20eb16d177e5e Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdevelop@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- languages/cpp/setuphelper.cpp | 91 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 languages/cpp/setuphelper.cpp (limited to 'languages/cpp/setuphelper.cpp') diff --git a/languages/cpp/setuphelper.cpp b/languages/cpp/setuphelper.cpp new file mode 100644 index 00000000..deab6135 --- /dev/null +++ b/languages/cpp/setuphelper.cpp @@ -0,0 +1,91 @@ + +/*************************************************************************** +* Copyright (C) 2006 by Andras Mantia * +* amantia@kde.org * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +***************************************************************************/ + +#include "setuphelper.h" +#include "blockingkprocess.h" +#include "driver.h" +#include +#include "ktempfile.h" /* defines [function] KTempDir */ +#include "kstandarddirs.h" /* defines [function] locateLocal */ +#include "qdir.h" /* defines QDir */ +#include + +namespace SetupHelper { + +QString getGccIncludePath(bool *ok) +{ + *ok = true; + QString processStdout; + BlockingKProcess proc; + proc << "gcc" ; + proc << "-print-file-name=include" ; + if ( !proc.start(KProcess::NotifyOnExit, KProcess::Stdout) ) { + kdWarning(9007) << "Couldn't start gcc" << endl; + *ok = false; + return QString(); + } + processStdout = proc.stdOut(); + + return processStdout; +} + +QString getVerboseGccIncludePath(bool *ok) +{ + *ok = false; + ///Create temp file + KTempFile tempFile(locateLocal("tmp", "kdevelop_temp"), ".cpp"); + tempFile.setAutoDelete(true); + if( tempFile.status() != 0 ) + return QString();//Failed to create temp file + + QString path = tempFile.name(); + QFileInfo pathInfo( path ); + + char fileText[] = "//This source-file is empty"; + fwrite(fileText, strlen(fileText), 1, tempFile.fstream() ); + tempFile.close(); + + BlockingKProcess proc; + proc.setUseShell(true); + proc.setWorkingDirectory(pathInfo.dir(true).path()); + proc << "gcc -v " + pathInfo.fileName() + " 2>&1"; + if ( !proc.start(KProcess::NotifyOnExit, KProcess::Stdout) ) { + kdWarning(9007) << "Couldn't start gcc" << endl; + *ok = false; + return QString(); + } + *ok = true; + return proc.stdOut(); +} + +QStringList getGccMacros(bool *ok) +{ + *ok = true; + QString processStdout; + BlockingKProcess proc; + proc << "gcc"; + proc << "-E"; + proc << "-dM"; + proc << "-ansi" ; + proc << "-"; + if ( !proc.start(KProcess::NotifyOnExit, KProcess::Stdout) ) { + kdWarning(9007) << "Couldn't start gcc" << endl; + *ok = false; + return QStringList(); + } + proc.closeStdin(); + processStdout = proc.stdOut(); + QStringList lines = QStringList::split('\n', processStdout); + return lines; +} + +} -- cgit v1.2.1