diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 9f06947fe952abd646c03651802bb2581accc0a5..2cf19f84217d83c76db278093606907651991deb 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -345,8 +345,12 @@ void QMakeStepConfigWidget::qmakeBuildConfigChanged()
 {
     Qt4BuildConfiguration *bc = m_step->qt4BuildConfiguration();
     bool debug = bc->qmakeBuildConfiguration() & QtVersion::DebugBuild;
+    int index = debug ? 0 : 1;
+    if (bc->qmakeBuildConfiguration() & QtVersion::BuildAll)
+        index = 2;
     m_ignoreChange = true;
-    m_ui.buildConfigurationComboBox->setCurrentIndex(debug? 0 : 1);
+    m_ui.buildConfigurationComboBox->setCurrentIndex(index);
+
     m_ignoreChange = false;
     updateSummaryLabel();
     updateEffectiveQMakeCall();
@@ -379,11 +383,18 @@ void QMakeStepConfigWidget::buildConfigurationSelected()
         return;
     Qt4BuildConfiguration *bc = m_step->qt4BuildConfiguration();
     QtVersion::QmakeBuildConfigs buildConfiguration = bc->qmakeBuildConfiguration();
-    if (m_ui.buildConfigurationComboBox->currentIndex() == 0) { // debug
-        buildConfiguration = buildConfiguration | QtVersion::DebugBuild;
-    } else {
-        buildConfiguration = buildConfiguration & ~QtVersion::DebugBuild;
+    switch (m_ui.buildConfigurationComboBox->currentIndex()) {
+    case 0:
+        buildConfiguration = QtVersion::DebugBuild;
+        break;
+    case 1:
+        buildConfiguration = 0;
+        break;
+    case 2:
+        buildConfiguration = QtVersion::BuildAll;
+        break;
     }
+
     m_ignoreChange = true;
     bc->setQMakeBuildConfiguration(buildConfiguration);
     m_ignoreChange = false;
diff --git a/src/plugins/qt4projectmanager/qmakestep.ui b/src/plugins/qt4projectmanager/qmakestep.ui
index 16618e9ae7b206be2f6411427eff80b328e71200..cf2214062d622fa154cab1eeb7c71950976b478d 100644
--- a/src/plugins/qt4projectmanager/qmakestep.ui
+++ b/src/plugins/qt4projectmanager/qmakestep.ui
@@ -39,6 +39,11 @@
        <string>Release</string>
       </property>
      </item>
+     <item>
+      <property name="text">
+       <string>Debug and release</string>
+      </property>
+     </item>
     </widget>
    </item>
    <item row="1" column="0">
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
index 1e70599ebe0f19881058f9e4830290ac5245bf57..67c525a1db05da6dcf00233fa95826e4806abe99 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
@@ -390,9 +390,13 @@ void Qt4BuildConfiguration::getConfigCommandLineArguments(QStringList *addedUser
     if (addedUserConfigs) {
         if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (userBuildConfiguration & QtVersion::BuildAll))
             (*addedUserConfigs) << "debug_and_release";
-        if ((defaultBuildConfiguration & QtVersion::DebugBuild) && !(userBuildConfiguration & QtVersion::DebugBuild))
+        if ((defaultBuildConfiguration & QtVersion::DebugBuild)
+             && !(userBuildConfiguration & QtVersion::DebugBuild)
+             && !(userBuildConfiguration & QtVersion::BuildAll))
             (*addedUserConfigs) << "release";
-        if (!(defaultBuildConfiguration & QtVersion::DebugBuild) && (userBuildConfiguration & QtVersion::DebugBuild))
+        if (!(defaultBuildConfiguration & QtVersion::DebugBuild)
+            && (userBuildConfiguration & QtVersion::DebugBuild)
+            && !(userBuildConfiguration & QtVersion::BuildAll))
             (*addedUserConfigs) << "debug";
     }
 }
diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
index 81fc09337ed8a5303bf5326afbf0003b3cd6a3f9..f1b1a53ccb2db6e488411d5525cfdfdab49c1033 100644
--- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
+++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
@@ -34,6 +34,7 @@
 #include "qt4project.h"
 #include "qt4projectmanagerconstants.h"
 #include "qt4target.h"
+#include "qtversionmanager.h"
 
 #include <extensionsystem/pluginmanager.h>
 #include <projectexplorer/task.h>
@@ -231,8 +232,10 @@ bool TargetSetupPage::setupProject(Qt4ProjectManager::Qt4Project *project)
                 info.isTemporary = false;
             }
 
-            if ((info.buildConfig | QtVersion::DebugBuild) != info.buildConfig)
-                targetInfos.append(BuildConfigurationInfo(info.version, QtVersion::QmakeBuildConfigs(info.buildConfig | QtVersion::DebugBuild),
+            // If we have buildAll, then we want to havbe two BCs set up, one to build debug,
+            // the other to build release.
+            if (info.buildConfig & QtVersion::BuildAll)
+                targetInfos.append(BuildConfigurationInfo(info.version, info.buildConfig & ~(info.buildConfig & QtVersion::DebugBuild),
                                                           info.additionalArguments, info.directory));
             targetInfos.append(BuildConfigurationInfo(info.version, info.buildConfig,
                                                       info.additionalArguments, info.directory));
@@ -506,10 +509,22 @@ void TargetSetupPage::updateVersionItem(QTreeWidgetItem *versionItem, int index)
     ImportInfo &info = m_infos[index];
     QPair<QIcon, QString> issues = reportIssues(info.version);
 
+    //: We are going to build debug and release
+    QString buildType = tr("debug and release");
+    if ((info.buildConfig & QtVersion::BuildAll) == 0) {
+        if (info.buildConfig & QtVersion::DebugBuild)
+            //: Debug build
+            buildType = tr("debug");
+        else
+            //: release build
+            buildType = tr("release");
+    }
     QString toolTip = QLatin1String("<nobr>");
     toolTip = toolTip.append(info.version->displayName());
-    toolTip.append(tr("<br>using %1", "%1: qmake used (incl. full path)").
-            arg(QDir::toNativeSeparators(info.version->qmakeCommand())));
+    //: %1: qmake used (incl. full path), %2: "debug", "release" or "debug and release"
+    toolTip.append(tr("<br>using %1 (%2)").
+            arg(QDir::toNativeSeparators(info.version->qmakeCommand())).
+                   arg(buildType));
     if (!issues.second.isEmpty())
         toolTip.append(QString::fromLatin1("<br><br>%1").arg(issues.second));