diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
index 3d7122c36950e834c90eaa3a87fdf1c74a107da2..d8d733605fe036ad13e459e55588d0d4403837f2 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
@@ -184,6 +184,12 @@ bool Qt4DesktopTargetFactory::isMobileTarget(const QString &id)
     return false;
 }
 
+bool Qt4DesktopTargetFactory::supportsShadowBuilds(const QString &id)
+{
+    Q_UNUSED(id);
+    return true;
+}
+
 ProjectExplorer::Target *Qt4DesktopTargetFactory::create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos)
 {
     if (!canCreate(parent, id))
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h
index 4cd939c60d0c68d9b443ead60c6cc55a6c5268c8..8f3b75039a15df8494e775cd9fc3984ffc04b967 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h
@@ -58,6 +58,7 @@ public:
 
     Qt4TargetSetupWidget *createTargetSetupWidget(const QString &id, const QString &proFilePath, const QtVersionNumber &minimumQtVersion, bool importEnabled, QList<BuildConfigurationInfo> importInfos);
     bool isMobileTarget(const QString &id);
+    bool supportsShadowBuilds(const QString &id);
     QList<BuildConfigurationInfo> availableBuildConfigurations(const QString &id, const QString &proFilePath, const QtVersionNumber &minimumQtVersion);
     ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id);
     ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos);
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp
index 4bbdfb6f94d0f9042b0251b2d42b416e05266f3a..a56f0ef053484acdee59d9c6f6769aec71a653f9 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp
@@ -152,6 +152,12 @@ bool Qt4SimulatorTargetFactory::isMobileTarget(const QString &id)
     return true;
 }
 
+bool Qt4SimulatorTargetFactory::supportsShadowBuilds(const QString &id)
+{
+    Q_UNUSED(id);
+    return true;
+}
+
 ProjectExplorer::Target *Qt4SimulatorTargetFactory::create(ProjectExplorer::Project *parent, const QString &id)
 {
     if (!canCreate(parent, id))
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h
index 096f03039b9285c479e8f7cd5a2a97371a23e322..dfdb2a84fce581a7cec1953d95de377cebbe3749 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h
@@ -61,6 +61,7 @@ public:
 
     QList<BuildConfigurationInfo> availableBuildConfigurations(const QString &id, const QString &proFilePath, const QtVersionNumber &minimumQtVersion);
     bool isMobileTarget(const QString &id);
+    bool supportsShadowBuilds(const QString &id);
     ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id);
     ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos);
 };
diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.cpp b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.cpp
index c0d0ce2135ba4f2dc0e82499645953f5aeab360a..05330426793228f680c298b074d416d361cfc612 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.cpp
@@ -176,6 +176,16 @@ bool Qt4MaemoTargetFactory::isMobileTarget(const QString &id)
     return true;
 }
 
+bool Qt4MaemoTargetFactory::supportsShadowBuilds(const QString &id)
+{
+    Q_UNUSED(id);
+#ifdef Q_OS_WIN
+    return false;
+#else
+    return true;
+#endif
+}
+
 ProjectExplorer::Target *Qt4MaemoTargetFactory::create(ProjectExplorer::Project *parent, const QString &id)
 {
     if (!canCreate(parent, id))
diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.h b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.h
index 010eb34faa37f0d968b3f9ba2688cc9779048e65..6723f0e6e1de4182a9233bd8666a979230256875 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.h
@@ -62,6 +62,7 @@ public:
 
     QList<BuildConfigurationInfo> availableBuildConfigurations(const QString &id, const QString &proFilePath, const QtVersionNumber &minimumQtVersion);
     bool isMobileTarget(const QString &id);
+    bool supportsShadowBuilds(const QString &id);
 };
 
 } // namespace Internal
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
index bdf0dc532db490c863ea3608fe546c88e7677db5..90ca2bf7f28bad070e78ca2455806c6babeef931 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
@@ -192,6 +192,12 @@ bool Qt4SymbianTargetFactory::isMobileTarget(const QString &id)
     return true;
 }
 
+bool Qt4SymbianTargetFactory::supportsShadowBuilds(const QString &id)
+{
+    Q_UNUSED(id);
+    return false;
+}
+
 ProjectExplorer::Target *Qt4SymbianTargetFactory::create(ProjectExplorer::Project *parent, const QString &id)
 {
     if (!canCreate(parent, id))
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h
index 0cf1920557fe6e44821419c8d4b228927aab15d9..c2c6cef625ca2ba7b2a3c5ca733fe6920631d574 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h
+++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h
@@ -62,6 +62,7 @@ public:
     QList<ProjectExplorer::Task> reportIssues(const QString &proFile);
     QList<BuildConfigurationInfo> availableBuildConfigurations(const QString &id, const QString &proFilePath, const QtVersionNumber &minimumQtVersion);
     bool isMobileTarget(const QString &id);
+    bool supportsShadowBuilds(const QString &id);
 };
 
 } // namespace Internal
diff --git a/src/plugins/qt4projectmanager/qt4basetargetfactory.h b/src/plugins/qt4projectmanager/qt4basetargetfactory.h
index 2be2ebc5bcae87519fdf676672f2f76d84d4b0ff..d04926bf87437fdec8bcf31447b459454b7fb538 100644
--- a/src/plugins/qt4projectmanager/qt4basetargetfactory.h
+++ b/src/plugins/qt4projectmanager/qt4basetargetfactory.h
@@ -69,6 +69,7 @@ public:
     virtual QIcon iconForId(const QString &id) const = 0;
 
     virtual bool isMobileTarget(const QString &id) = 0;
+    virtual bool supportsShadowBuilds(const QString &id) = 0;
 
     virtual ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id) = 0;
     virtual ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id, const QList<BuildConfigurationInfo> &infos) = 0;
diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index 793348b5690d6b825c7e497d5dae2f8a427c5a5b..9e837cff51b7cf507e3ff1bcf36abc66440bdd3c 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -83,7 +83,9 @@ Qt4TargetSetupWidget *Qt4BaseTargetFactory::createTargetSetupWidget(const QStrin
     QList<BuildConfigurationInfo> infos = this->availableBuildConfigurations(id, proFilePath, number);
     if (infos.isEmpty())
         return 0;
-    return new Qt4DefaultTargetSetupWidget(this, id, proFilePath, infos, number, importEnabled, importInfos);
+    Qt4DefaultTargetSetupWidget *widget = new Qt4DefaultTargetSetupWidget(this, id, proFilePath, infos, number, importEnabled, importInfos);
+    widget->setShadowBuildSupported(supportsShadowBuilds(id));
+    return widget;
 }
 
 ProjectExplorer::Target *Qt4BaseTargetFactory::create(ProjectExplorer::Project *parent, const QString &id, Qt4TargetSetupWidget *widget)
@@ -374,7 +376,6 @@ Qt4DefaultTargetSetupWidget::Qt4DefaultTargetSetupWidget(Qt4BaseTargetFactory *f
 
     m_shadowBuildEnabled = new QCheckBox;
     m_shadowBuildEnabled->setText(tr("Use Shadow Building"));
-    m_shadowBuildEnabled->setChecked(true);
     m_shadowBuildEnabled->setVisible(false);
     layout->addWidget(m_shadowBuildEnabled);
 
@@ -395,6 +396,8 @@ Qt4DefaultTargetSetupWidget::Qt4DefaultTargetSetupWidget(Qt4BaseTargetFactory *f
         m_importEnabled << true;
     }
 
+    m_shadowBuildEnabled->setChecked(!m_hasInSourceBuild);
+
     m_selected += m_importInfos.size();
 
     setupImportWidgets();
@@ -456,10 +459,15 @@ void Qt4DefaultTargetSetupWidget::setProFilePath(const QString &proFilePath)
     setBuildConfigurationInfos(m_factory->availableBuildConfigurations(m_id, proFilePath, m_minimumQtVersion), false);
 }
 
+void Qt4DefaultTargetSetupWidget::setShadowBuildSupported(bool b)
+{
+    // if shadow building is supported we want to enable it, unless we have a in source build
+    m_shadowBuildEnabled->setChecked(b && !m_hasInSourceBuild);
+}
+
 void Qt4DefaultTargetSetupWidget::setShadowBuildCheckBoxVisible(bool b)
 {
     m_shadowBuildEnabled->setVisible(b);
-    m_shadowBuildEnabled->setChecked(!m_hasInSourceBuild);
 }
 
 QList<BuildConfigurationInfo> Qt4DefaultTargetSetupWidget::buildConfigurationInfos() const
diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h
index b8262f7b6a1288198833f0e393aa3cab187d6e89..8c01e617ea5831a89320525193dc3168df61a1cb 100644
--- a/src/plugins/qt4projectmanager/qt4target.h
+++ b/src/plugins/qt4projectmanager/qt4target.h
@@ -124,6 +124,7 @@ public:
     QList<BuildConfigurationInfo> buildConfigurationInfos() const;
     void setProFilePath(const QString &proFilePath);
 
+    void setShadowBuildSupported(bool b);
     void setShadowBuildCheckBoxVisible(bool b);
 
 public slots: