diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 41b32669a124b23b34f44d950deb157cd0475ead..a83a4f7ee710321b7dded22d7a127f078e9754f1 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -116,7 +116,7 @@ bool QMakeStep::init(const QString &name)
     if (QDir(workingDirectory).exists(QLatin1String("Makefile"))) {
         QString qtPath = QtVersionManager::findQtVersionFromMakefile(workingDirectory);
         if (qtVersion->path() == qtPath) {
-            needToRunQMake = m_pro->compareBuildConfigurationToImportFrom(name, workingDirectory);
+            needToRunQMake = !m_pro->compareBuildConfigurationToImportFrom(name, workingDirectory);
         }
     }
 
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index aff561c9433358a33e477480774a41a6b0c64645..957ef65116335b2356881b5eea25de2d07e0c773 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -724,7 +724,7 @@ void Qt4Project::addDefaultBuild()
         // Migrate settings
         QMakeStep *qs = qmakeStep();
         foreach (const QString &buildConfiguration, buildConfigurations()) {
-            QVariant v = qs->value(buildConfiguration, "buildConfiguration");
+            QVariant v = qs ? qs->value(buildConfiguration, "buildConfiguration") : QVariant();
             if (v.isValid()) {
                 qs->setValue(buildConfiguration, "buildConfiguration", QVariant());
                 setValue(buildConfiguration, "buildConfiguration", v);
@@ -736,6 +736,7 @@ void Qt4Project::addDefaultBuild()
             }
         }
 
+
         // Restoring configuration
         foreach(const QString &bc, buildConfigurations()) {
             setValue(bc, "addQDumper", QVariant());
@@ -1137,9 +1138,11 @@ QString Qt4Project::extractSpecFromArgumentList(const QStringList &list)
         return QString();
 }
 
+// returns true if both are equal
 bool Qt4Project::compareBuildConfigurationToImportFrom(const QString &buildConfiguration, const QString &workingDirectory)
 {
-    if (QDir(workingDirectory).exists(QLatin1String("Makefile"))) {
+    QMakeStep *qs = qmakeStep();
+    if (QDir(workingDirectory).exists(QLatin1String("Makefile")) && qs) {
         QString qtPath = QtVersionManager::findQtVersionFromMakefile(workingDirectory);
         QtVersion *version = qtVersion(buildConfiguration);
         if (version->path() == qtPath) {
@@ -1151,7 +1154,7 @@ bool Qt4Project::compareBuildConfigurationToImportFrom(const QString &buildConfi
                 // now compare arguments lists
                 // we have to compare without the spec/platform cmd argument
                 // and compare that on its own
-                QString actualSpec = extractSpecFromArgumentList(qmakeStep()->value(buildConfiguration, "qmakeArgs").toStringList());
+                QString actualSpec = extractSpecFromArgumentList(qs->value(buildConfiguration, "qmakeArgs").toStringList());
                 if (actualSpec.isEmpty())
                     actualSpec = version->mkspec();
                 QString parsedSpec = extractSpecFromArgumentList(result.second);
@@ -1176,7 +1179,7 @@ bool Qt4Project::compareBuildConfigurationToImportFrom(const QString &buildConfi
                 if (QFileInfo(parsedSpec).isRelative())
                     parsedSpec = QDir::cleanPath(workingDirectory + "/" + parsedSpec);
 
-                QStringList actualArgs = removeSpecFromArgumentList(qmakeStep()->value(buildConfiguration, "qmakeArgs").toStringList());
+                QStringList actualArgs = removeSpecFromArgumentList(qs->value(buildConfiguration, "qmakeArgs").toStringList());
                 QStringList parsedArgs = removeSpecFromArgumentList(result.second);
 
 #ifdef Q_OS_WIN
@@ -1190,11 +1193,11 @@ bool Qt4Project::compareBuildConfigurationToImportFrom(const QString &buildConfi
                 qDebug()<<"Parsed spec:"<<parsedSpec;
 
                 if (actualArgs == parsedArgs && actualSpec == parsedSpec)
-                    return false;
+                    return true;
             }
         }
     }
-    return true;
+    return false;
 }
 
 
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index e3bb5c6dafa75a18111e43de17b50daa1d5d51a2..9b39de9fdb1092c682ebb9d9019b933d14b8325f 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -201,16 +201,23 @@ void Qt4ProjectConfigWidget::updateImportLabel()
 {
     bool visible = false;
 
-    QString qtPath = QtVersionManager::findQtVersionFromMakefile(m_pro->buildDirectory(m_buildConfiguration));
-    QtVersion *version = m_pro->qtVersion(m_buildConfiguration);
-    if (!qtPath.isEmpty()) {
-        if (qtPath != (version ? version->path() : QString())) {
-            visible = true;
+    // we only show if we actually have a qmake and makestep
+    if (m_pro->qmakeStep() && m_pro->makeStep()) {
+        QString qtPath = QtVersionManager::findQtVersionFromMakefile(m_pro->buildDirectory(m_buildConfiguration));
+        QtVersion *version = m_pro->qtVersion(m_buildConfiguration);
+        // check that there's a makefile
+        if (!qtPath.isEmpty()) {
+            // and that the makefile path is different from the current version
+            if (qtPath != (version ? version->path() : QString())) {
+                // import enable
+                visible = true;
+            } else {
+                // check that the qmake flags, arguments match
+                visible = !m_pro->compareBuildConfigurationToImportFrom(m_buildConfiguration, m_pro->buildDirectory(m_buildConfiguration));
+            }
         } else {
-            visible = !m_pro->compareBuildConfigurationToImportFrom(m_buildConfiguration, m_pro->buildDirectory(m_buildConfiguration));
+            visible = false;
         }
-    } else {
-        visible = false;
     }
 
     m_ui->importLabel->setVisible(visible);
@@ -231,6 +238,8 @@ void Qt4ProjectConfigWidget::shadowBuildLineEditTextChanged()
 
 void Qt4ProjectConfigWidget::importLabelClicked()
 {
+    if (!m_pro->qmakeStep() || !m_pro->makeStep())
+        return;
     QString directory = m_pro->buildDirectory(m_buildConfiguration);
     if (!directory.isEmpty()) {
         QString qtPath = QtVersionManager::findQtVersionFromMakefile(directory);