summaryrefslogtreecommitdiff
path: root/src/plugins/autotoolsprojectmanager
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@gmail.com>2015-07-09 01:28:04 +0200
committerhjk <hjk@theqtcompany.com>2015-07-09 14:18:18 +0000
commit2f017c071edd35dd19cfb8c2d49c70b99a50760e (patch)
tree6ca1fb21194603826b2773eceb3bfc7cd32785d6 /src/plugins/autotoolsprojectmanager
parent7901601eb0d03cba1d665e05dd4bf7a580b2a963 (diff)
downloadqt-creator-2f017c071edd35dd19cfb8c2d49c70b99a50760e.tar.gz
AutoTools: Handle (abs_)?top_srcdir, and (abs_)?top_builddir
in include paths taken from the Autotools project. These are widely used in include paths. Change-Id: I78d5e1f6ce6cd7bfe92bb670b73e276cb558b9eb Reviewed-by: hjk <hjk@theqtcompany.com>
Diffstat (limited to 'src/plugins/autotoolsprojectmanager')
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsproject.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
index 25d454ca76..5af16f3e4f 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
@@ -402,6 +402,24 @@ QList<Node *> AutotoolsProject::nodes(FolderNode *parent) const
return list;
}
+static QStringList filterIncludes(const QString &absSrc, const QString &absBuild,
+ const QStringList &in)
+{
+ QStringList result;
+ foreach (const QString i, in) {
+ QString out = i;
+ out.replace(QLatin1String("$(top_srcdir)"), absSrc);
+ out.replace(QLatin1String("$(abs_top_srcdir)"), absSrc);
+
+ out.replace(QLatin1String("$(top_builddir)"), absBuild);
+ out.replace(QLatin1String("$(abs_top_builddir)"), absBuild);
+
+ result << out;
+ }
+
+ return result;
+}
+
void AutotoolsProject::updateCppCodeModel()
{
CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance();
@@ -427,7 +445,12 @@ void AutotoolsProject::updateCppCodeModel()
ppBuilder.setCFlags(cflags);
ppBuilder.setCxxFlags(cxxflags);
- ppBuilder.setIncludePaths(m_makefileParserThread->includePaths());
+ const QString absSrc = projectDirectory().toString();
+ const Target *target = activeTarget();
+ const QString absBuild = (target && target->activeBuildConfiguration())
+ ? target->activeBuildConfiguration()->buildDirectory().toString() : QString();
+
+ ppBuilder.setIncludePaths(filterIncludes(absSrc, absBuild, m_makefileParserThread->includePaths()));
ppBuilder.setDefines(m_makefileParserThread->defines());
const QList<Core::Id> languages = ppBuilder.createProjectPartsForFiles(m_files);