diff options
| author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 | 
|---|---|---|
| committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 | 
| commit | 114a878c64ce6f8223cfd22d76a20eb16d177e5e (patch) | |
| tree | acaf47eb0fa12142d3896416a69e74cbf5a72242 /languages/cpp/setuphelper.cpp | |
| download | tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.tar.gz tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.zip | |
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
Diffstat (limited to 'languages/cpp/setuphelper.cpp')
| -rw-r--r-- | languages/cpp/setuphelper.cpp | 91 | 
1 files changed, 91 insertions, 0 deletions
| 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 <kdebug.h> +#include "ktempfile.h" /* defines [function] KTempDir */ +#include "kstandarddirs.h" /* defines [function] locateLocal */ +#include "qdir.h" /* defines QDir */ +#include <stdio.h> + +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; +} + +} | 
