diff --git a/qtcreator.pro b/qtcreator.pro
index f43df3032db3746e5ca14cb0815a33e22cf04de7..1b8a7523fcdf8c83c3fb6c38bad8f632d421997f 100644
--- a/qtcreator.pro
+++ b/qtcreator.pro
@@ -61,6 +61,13 @@ exists(src/shared/qbs/qbs.pro) {
     cache(QBS_APPS_DESTDIR)
     QBS_APPS_INSTALL_DIR = $${QTC_PREFIX}/bin
     cache(QBS_APPS_INSTALL_DIR)
+    QBS_LIBEXEC_DESTDIR = $${IDE_LIBEXEC_PATH}
+    cache(QBS_LIBEXEC_DESTDIR)
+    QBS_LIBEXEC_INSTALL_DIR = $${QTC_PREFIX}/bin
+    cache(QBS_LIBEXEC_INSTALL_DIR)
+    QBS_RELATIVE_LIBEXEC_PATH = $$relative_path($$QBS_LIBEXEC_DESTDIR, $$QBS_APPS_DESTDIR)
+    isEmpty(QBS_RELATIVE_LIBEXEC_PATH):QBS_RELATIVE_LIBEXEC_PATH = .
+    cache(QBS_RELATIVE_LIBEXEC_PATH)
     QBS_RELATIVE_PLUGINS_PATH = $$relative_path($$QBS_PLUGINS_BUILD_DIR, $$QBS_APPS_DESTDIR$$)
     cache(QBS_RELATIVE_PLUGINS_PATH)
     QBS_RELATIVE_SEARCH_PATH = $$relative_path($$QBS_RESOURCES_BUILD_DIR, $$QBS_APPS_DESTDIR)
diff --git a/qtcreator.qbs b/qtcreator.qbs
index 012720bb11b99c817826b4671b500556e4f8d1ac..ed18dbf37d6ab3b8562e6ef22719d84a139166bf 100644
--- a/qtcreator.qbs
+++ b/qtcreator.qbs
@@ -1,6 +1,7 @@
 import qbs 1.0
 
 Project {
+    name: "Qt Creator"
     minimumQbsVersion: "1.4"
     property bool withAutotests: qbs.buildVariant === "debug"
     property string ide_version_major: '3'
@@ -56,6 +57,7 @@ Project {
         "QT_NO_CAST_FROM_ASCII"
     ].concat(testsEnabled ? ["WITH_TESTS"] : [])
     qbsSearchPaths: "qbs"
+    property bool enableQbsJavaSupport: false
 
     references: [
         "src/src.qbs",
diff --git a/src/plugins/qbsprojectmanager/qbsprojectparser.cpp b/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
index 33de434ef918dfe953b5c56e175061b2bf75f6a2..484bae73ca1ab8dd0b0a10372378ba07ae66b6a4 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
@@ -100,6 +100,7 @@ void QbsProjectParser::parse(const QVariantMap &config, const Environment &env,
     const qbs::Preferences prefs(QbsManager::settings(), profileName);
     params.setSearchPaths(prefs.searchPaths(resourcesBaseDirectory()));
     params.setPluginPaths(prefs.pluginPaths(pluginsBaseDirectory()));
+    params.setLibexecPath(libExecDirectory());
 
     m_qbsSetupProjectJob = m_project.setupProject(params, QbsManager::logSink(), 0);
 
@@ -163,6 +164,14 @@ QString QbsProjectParser::resourcesBaseDirectory() const
     return Core::ICore::resourcePath() + QLatin1String("/qbs");
 }
 
+QString QbsProjectParser::libExecDirectory() const
+{
+    const QString qbsInstallDir = QLatin1String(QBS_INSTALL_DIR);
+    if (!qbsInstallDir.isEmpty())
+        return qbsInstallDir + QLatin1String("/libexec");
+    return Core::ICore::libexecPath();
+}
+
 QString QbsProjectParser::pluginsBaseDirectory() const
 {
     const QString qbsInstallDir = QLatin1String(QBS_INSTALL_DIR);
diff --git a/src/plugins/qbsprojectmanager/qbsprojectparser.h b/src/plugins/qbsprojectmanager/qbsprojectparser.h
index 6d6319394a9674840764f8f1366664e453412a25..8603205213306eda9e91aa030c52bad34a76ff2b 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectparser.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectparser.h
@@ -69,6 +69,7 @@ private slots:
 private:
     QString pluginsBaseDirectory() const;
     QString resourcesBaseDirectory() const;
+    QString libExecDirectory() const;
 
     QString m_projectFilePath;
     qbs::SetupProjectJob *m_qbsSetupProjectJob;
diff --git a/src/src.pro b/src/src.pro
index ea996ee839d0b3a4e359b18cbb70fb4fbdf517fd..ee25d3dbc5d44f233b6fbb8df64e31d9af89b8a7 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -7,6 +7,7 @@ QBS_DIRS = \
     qbscorelib \
     qbsqtprofilesetup \
     qbsapps \
+    qbslibexec \
     qbsplugins \
     qbsstatic
 
@@ -15,6 +16,8 @@ qbsqtprofilesetup.subdir = shared/qbs/src/lib/qtprofilesetup
 qbsqtprofilesetup.depends = qbscorelib
 qbsapps.subdir = shared/qbs/src/app
 qbsapps.depends = qbsqtprofilesetup
+qbslibexec.subdir = shared/qbs/src/libexec
+qbslibexec.depends = qbscorelib
 qbsplugins.subdir = shared/qbs/src/plugins
 qbsstatic.file = shared/qbs/static.pro
 
diff --git a/src/src.qbs b/src/src.qbs
index 48bf9fc2dff32a933310f49cc08b92f34de16e9a..bcb6f2a86516a4f74e445c1d1f55960a50e8a348 100644
--- a/src/src.qbs
+++ b/src/src.qbs
@@ -33,12 +33,16 @@ Project {
         property string resourcesInstallDir: project.ide_data_path + "/qbs"
         property string pluginsInstallDir: project.ide_plugin_path
         property string appInstallDir: project.ide_bin_path
+        property string libexecInstallDir: project.ide_libexec_path
+        property string relativeLibexecPath: FileInfo.relativePath(appInstallDir, libexecInstallDir)
         property string relativePluginsPath: FileInfo.relativePath(appInstallDir, pluginsInstallDir)
         property string relativeSearchPath: FileInfo.relativePath(appInstallDir,
                                                                   resourcesInstallDir)
+        property bool enableJava: project.enableQbsJavaSupport
 
         references: [
             qbsBaseDir + "/src/lib/libs.qbs",
+            qbsBaseDir + "/src/libexec/libexec.qbs",
             qbsBaseDir + "/src/plugins/plugins.qbs",
             qbsBaseDir + "/share/share.qbs",
             qbsBaseDir + "/src/app/apps.qbs",