diff -urN qt-creator-opensource-src-3.2.0.orig/src/plugins/autotoolsprojectmanager/autogenstep.cpp qt-creator-opensource-src-3.2.0/src/plugins/autotoolsprojectmanager/autogenstep.cpp
--- qt-creator-opensource-src-3.2.0.orig/src/plugins/autotoolsprojectmanager/autogenstep.cpp	2014-09-01 23:56:38.469655300 +0100
+++ qt-creator-opensource-src-3.2.0/src/plugins/autotoolsprojectmanager/autogenstep.cpp	2014-09-02 00:08:54.375746700 +0100
@@ -177,11 +177,11 @@
     const QString projectDir(bc->target()->project()->projectDirectory().toString());
     const QFileInfo configureInfo(projectDir + "/configure");
     const QFileInfo configureAcInfo(projectDir + "/configure.ac");
-    const QFileInfo makefileAmInfo(projectDir + "/Makefile.am");
+    const QFileInfo makefileInfo(bc->target()->project()->projectFilePath().toFileInfo());
 
     if (!configureInfo.exists()
         || configureInfo.lastModified() < configureAcInfo.lastModified()
-        || configureInfo.lastModified() < makefileAmInfo.lastModified()) {
+        || configureInfo.lastModified() < makefileInfo.lastModified()) {
         m_runAutogen = true;
     }
 
diff -urN qt-creator-opensource-src-3.2.0.orig/src/plugins/autotoolsprojectmanager/makefileparser.cpp qt-creator-opensource-src-3.2.0/src/plugins/autotoolsprojectmanager/makefileparser.cpp
--- qt-creator-opensource-src-3.2.0.orig/src/plugins/autotoolsprojectmanager/makefileparser.cpp	2014-08-18 08:52:02.000000000 +0100
+++ qt-creator-opensource-src-3.2.0/src/plugins/autotoolsprojectmanager/makefileparser.cpp	2014-09-01 23:16:11.672850400 +0100
@@ -163,13 +163,13 @@
 
     if (id == QLatin1String("AM_DEFAULT_SOURCE_EXT"))
         return AmDefaultSourceExt;
-    if (id == QLatin1String("bin_PROGRAMS"))
+    if (id == QLatin1String("bin_PROGRAMS") || id == QLatin1String("PROG"))
         return BinPrograms;
     if (id == QLatin1String("BUILT_SOURCES"))
         return BuiltSources;
     if (id == QLatin1String("SUBDIRS") || id == QLatin1String("DIST_SUBDIRS"))
         return SubDirs;
-    if (id.endsWith(QLatin1String("_SOURCES")))
+    if (id.endsWith(QLatin1String("_SOURCES")) || id == QLatin1String("SRCS"))
         return Sources;
 
     return Undefined;
@@ -177,7 +177,8 @@
 
 void MakefileParser::parseBinPrograms()
 {
-    QTC_ASSERT(m_line.contains(QLatin1String("bin_PROGRAMS")), return);
+    QTC_ASSERT(   m_line.contains(QLatin1String("bin_PROGRAMS"))
+               || m_line.startsWith(QLatin1String("PROG")), return);
     const QStringList binPrograms = targetValues();
 
     // TODO: are multiple values possible?
@@ -189,7 +190,8 @@
 
 void MakefileParser::parseSources()
 {
-    QTC_ASSERT(m_line.contains(QLatin1String("_SOURCES")), return);
+    QTC_ASSERT(   m_line.contains(QLatin1String("_SOURCES"))
+               || m_line.startsWith(QLatin1String("SRCS")), return);
 
     bool hasVariables = false;
     m_sources.append(targetValues(&hasVariables));
