diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..3abc8f844dafe326d60f99b36af4df1f43e560b9
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "qbs"]
+	path = src/shared/qbs
+	url = ../../qt-labs/qbs.git
diff --git a/qtcreator.qbs b/qtcreator.qbs
index b3356c921ec6a5370e41efbedf3993ef0bc7d70a..6a7a5f0fbf4a175827780a9449b85b646eb0d559 100644
--- a/qtcreator.qbs
+++ b/qtcreator.qbs
@@ -1,4 +1,4 @@
-import qbs.base 1.0
+Import qbs.base 1.0
 import qbs.fileinfo 1.0 as FileInfo
 import "qbs/defaults.js" as Defaults
 
diff --git a/src/libs/libs.pro b/src/libs/libs.pro
index 9a1da2d4ebe980b581b3ae179c4ee5fabb63307f..4598fd4c8bbcd77e0b3831c1382af43502ebed5f 100644
--- a/src/libs/libs.pro
+++ b/src/libs/libs.pro
@@ -16,6 +16,12 @@ SUBDIRS   = \
     qtcomponents/styleitem \
     ssh \
     zeroconf
+
+exists(../shared/qbs/qbs.pro):SUBDIRS += \
+    ../shared/qbs/src/lib \
+    ../shared/qbs/src/plugins \
+    ../shared/qbs/static.pro
+
 win32:SUBDIRS += utils/process_ctrlc_stub.pro
 
 # Windows: Compile Qt Creator CDB extension if Debugging tools can be detected.    
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index 987ca8d4f0cf693f1385ffee6119506bbda4e847..2a8628ceeb976008c745a9cb9d3746c696277ab6 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -48,13 +48,7 @@ SUBDIRS   = plugin_coreplugin \
             plugin_todo \
             plugin_qnx
 
-# Look for qbs in the environment...
-isEmpty(QBS_SOURCE_DIR): QBS_SOURCE_DIR = $$(QBS_SOURCE_DIR)
-isEmpty(QBS_BUILD_DIR): QBS_BUILD_DIR = $$(QBS_BUILD_DIR)
-
-!isEmpty(QBS_SOURCE_DIR):!isEmpty(QBS_BUILD_DIR) {
-    SUBDIRS += plugin_qbsprojectmanager
-}
+exists(../shared/qbs/qbs.pro):SUBDIRS += plugin_qbsprojectmanager
 
 isEmpty(IDE_PACKAGE_MODE) {
     SUBDIRS += plugin_helloworld \
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.pro b/src/plugins/qbsprojectmanager/qbsprojectmanager.pro
index d179d8aa36b2634bc8491de062ff1c8e0ab20544..5cbbc02d7ba659755d8059473c3cef0ed9297f53 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.pro
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.pro
@@ -6,16 +6,14 @@ include(../../libs/qmljs/qmljs.pri)
 include(qbsprojectmanager_dependencies.pri)
 
 # Look for qbs in the environment (again)
-isEmpty(QBS_SOURCE_DIR): QBS_SOURCE_DIR = $$(QBS_SOURCE_DIR)
-isEmpty(QBS_BUILD_DIR): QBS_BUILD_DIR = $$(QBS_BUILD_DIR)
+QBS_SOURCE_DIR = $$PWD/../../shared/qbs
+QBS_BUILD_DIR = $$IDE_BUILD_TREE/src/shared/qbs
 
 QBSLIBDIR = $$QBS_BUILD_DIR/lib
 include($$QBS_SOURCE_DIR/src/lib/use.pri)
 linux-*:QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$$QBSLIBDIR\'
 macx:QMAKE_LFLAGS += -Wl,-rpath,$$QBSLIBDIR
 
-QBS_SOURCE_DIR_FWD_SLASHES = $$replace(QBS_SOURCE_DIR, \\\\, /)
-DEFINES += QBS_SOURCE_DIR=\\\"$$QBS_SOURCE_DIR_FWD_SLASHES\\\"
 QBS_BUILD_DIR_FWD_SLASHES = $$replace(QBS_BUILD_DIR, \\\\, /)
 DEFINES += QBS_BUILD_DIR=\\\"$$QBS_BUILD_DIR_FWD_SLASHES\\\"
 DEFINES += \
@@ -56,4 +54,3 @@ FORMS = \
     qbsbuildstepconfigwidget.ui \
     qbscleanstepconfigwidget.ui \
     qbsstepconfigwidget.ui
-
diff --git a/src/shared/qbs b/src/shared/qbs
new file mode 160000
index 0000000000000000000000000000000000000000..35f153400efc3303ac9f9c54506c6bbc5bc5c988
--- /dev/null
+++ b/src/shared/qbs
@@ -0,0 +1 @@
+Subproject commit 35f153400efc3303ac9f9c54506c6bbc5bc5c988