summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libs/libs.pro3
-rw-r--r--src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp26
-rw-r--r--src/plugins/qbsprojectmanager/qbsconstants.h16
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.cpp9
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectmanager.cpp45
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectmanager.h3
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectmanager.pro6
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectmanager.qbs7
m---------src/shared/qbs0
-rw-r--r--src/src.qbs2
10 files changed, 57 insertions, 60 deletions
diff --git a/src/libs/libs.pro b/src/libs/libs.pro
index bac0d4ecad..0e895000f3 100644
--- a/src/libs/libs.pro
+++ b/src/libs/libs.pro
@@ -24,7 +24,8 @@ SUBDIRS += \
utils/process_stub.pro
QBS_DIRS = \
- ../shared/qbs/src/lib \
+ ../shared/qbs/src/lib/corelib \
+ ../shared/qbs/src/lib/qtprofilesetup \
../shared/qbs/src/plugins \
../shared/qbs/static.pro
diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp
index 699ab0d5d9..28b0ad3158 100644
--- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp
+++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp
@@ -46,31 +46,6 @@ QVariantMap DefaultPropertyProvider::properties(const ProjectExplorer::Kit *k, c
{
QTC_ASSERT(k, return defaultData);
QVariantMap data = defaultData;
- QtSupport::BaseQtVersion *qt = QtSupport::QtKitInformation::qtVersion(k);
- if (qt) {
- data.insert(QLatin1String(QTCORE_BINPATH), qt->binPath().toUserOutput());
- QStringList builds;
- if (qt->hasDebugBuild())
- builds << QLatin1String("debug");
- if (qt->hasReleaseBuild())
- builds << QLatin1String("release");
- data.insert(QLatin1String(QTCORE_BUILDVARIANT), builds);
- data.insert(QLatin1String(QTCORE_DOCPATH), qt->docsPath().toUserOutput());
- data.insert(QLatin1String(QTCORE_INCPATH), qt->headerPath().toUserOutput());
- data.insert(QLatin1String(QTCORE_LIBPATH), qt->libraryPath().toUserOutput());
- data.insert(QLatin1String(QTCORE_PLUGINPATH), qt->pluginPath().toUserOutput());
- Utils::FileName mkspecPath = qt->mkspecsPath();
- mkspecPath.appendPath(qt->mkspec().toString());
- data.insert(QLatin1String(QTCORE_MKSPEC), mkspecPath.toUserOutput());
- data.insert(QLatin1String(QTCORE_NAMESPACE), qt->qtNamespace());
- data.insert(QLatin1String(QTCORE_LIBINFIX), qt->qtLibInfix());
- data.insert(QLatin1String(QTCORE_VERSION), qt->qtVersionString());
- if (qt->isFrameworkBuild())
- data.insert(QLatin1String(QTCORE_FRAMEWORKBUILD), true);
- data.insert(QLatin1String(QTCORE_CONFIG), qt->configValues());
- data.insert(QLatin1String(QTCORE_QTCONFIG), qt->qtConfigValues());
- }
-
if (ProjectExplorer::SysRootKitInformation::hasSysRoot(k))
data.insert(QLatin1String(QBS_SYSROOT), ProjectExplorer::SysRootKitInformation::sysRoot(k).toUserOutput());
@@ -96,6 +71,7 @@ QVariantMap DefaultPropertyProvider::properties(const ProjectExplorer::Kit *k, c
: QStringList() << QLatin1String("msvc"));
} else if (targetAbi.os() == ProjectExplorer::Abi::MacOS) {
const char IOSQT[] = "Qt4ProjectManager.QtVersion.Ios"; // from Ios::Constants (include header?)
+ const QtSupport::BaseQtVersion * const qt = QtSupport::QtKitInformation::qtVersion(k);
if (qt && qt->type() == QLatin1String(IOSQT)) {
QStringList targetOS;
if (targetAbi.architecture() == ProjectExplorer::Abi::X86Architecture)
diff --git a/src/plugins/qbsprojectmanager/qbsconstants.h b/src/plugins/qbsprojectmanager/qbsconstants.h
index 526de096dd..40f8f4767d 100644
--- a/src/plugins/qbsprojectmanager/qbsconstants.h
+++ b/src/plugins/qbsprojectmanager/qbsconstants.h
@@ -33,22 +33,6 @@
namespace QbsProjectManager {
namespace Constants {
-// Qt related settings:
-const char QTCORE_BINPATH[] = "Qt.core.binPath";
-const char QTCORE_BUILDVARIANT[] = "Qt.core.buildVariant";
-const char QTCORE_DOCPATH[] = "Qt.core.docPath";
-const char QTCORE_INCPATH[] = "Qt.core.incPath";
-const char QTCORE_LIBPATH[] = "Qt.core.libPath";
-const char QTCORE_PLUGINPATH[] = "Qt.core.pluginPath";
-const char QTCORE_VERSION[] = "Qt.core.version";
-const char QTCORE_NAMESPACE[] = "Qt.core.namespace";
-const char QTCORE_LIBINFIX[] = "Qt.core.libInfix";
-const char QTCORE_MKSPEC[] = "Qt.core.mkspecPath";
-const char QTCORE_FRAMEWORKBUILD[] = "Qt.core.frameworkBuild";
-const char QTCORE_CONFIG[] = "Qt.core.config";
-const char QTCORE_QTCONFIG[] = "Qt.core.qtConfig";
-
-
// Toolchain related settings:
const char QBS_TARGETOS[] = "qbs.targetOS";
const char QBS_SYSROOT[] = "qbs.sysroot";
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index ff95a5d2fb..87f5fa205d 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -423,7 +423,8 @@ void QbsProject::parse(const QVariantMap &config, const Environment &env, const
QVariantMap baseConfig;
QVariantMap userConfig = config;
QString specialKey = QLatin1String(Constants::QBS_CONFIG_PROFILE_KEY);
- baseConfig.insert(specialKey, userConfig.take(specialKey));
+ const QString profileName = userConfig.take(specialKey).toString();
+ baseConfig.insert(specialKey, profileName);
specialKey = QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY);
baseConfig.insert(specialKey, userConfig.take(specialKey));
params.setBuildConfiguration(baseConfig);
@@ -460,10 +461,10 @@ void QbsProject::parse(const QVariantMap &config, const Environment &env, const
params.setProjectFilePath(m_fileName);
params.setIgnoreDifferentProjectFilePath(false);
params.setEnvironment(env.toProcessEnvironment());
- qbs::Preferences *prefs = QbsManager::preferences();
+ const qbs::Preferences prefs(QbsManager::settings(), profileName);
const QString qbsDir = qbsDirectory();
- params.setSearchPaths(prefs->searchPaths(qbsDir));
- params.setPluginPaths(prefs->pluginPaths(qbsDir));
+ params.setSearchPaths(prefs.searchPaths(qbsDir));
+ params.setPluginPaths(prefs.pluginPaths(qbsDir));
// Do the parsing:
prepareForParsing();
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
index d444acc173..717c24efca 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
@@ -35,15 +35,19 @@
#include "qbsprojectmanagerconstants.h"
#include "qbsprojectmanagerplugin.h"
+#include <coreplugin/messagemanager.h>
#include <extensionsystem/pluginmanager.h>
#include <projectexplorer/kit.h>
#include <projectexplorer/kitmanager.h>
#include <projectexplorer/projectexplorer.h>
#include <qmljstools/qmljstoolsconstants.h>
+#include <qtsupport/baseqtversion.h>
+#include <qtsupport/qtkitinformation.h>
#include <QVariantMap>
#include <qbs.h>
+#include <qtprofilesetup.h>
#include <tools/profile.h> // TODO: Do this in qbs.h.
const QChar sep = QLatin1Char('.');
@@ -54,14 +58,12 @@ static QString qtcProfilePrefix() { return qtcProfileGroup() + sep; }
namespace QbsProjectManager {
qbs::Settings *QbsManager::m_settings = 0;
-qbs::Preferences *QbsManager::m_preferences = 0;
QbsManager::QbsManager(Internal::QbsProjectManagerPlugin *plugin) :
m_plugin(plugin),
m_defaultPropertyProvider(new DefaultPropertyProvider)
{
m_settings = new qbs::Settings(QLatin1String("QtProject"), QLatin1String("qbs"));
- m_preferences = new qbs::Preferences(m_settings);
setObjectName(QLatin1String("QbsProjectManager"));
connect(ProjectExplorer::KitManager::instance(), SIGNAL(kitsChanged()), this, SLOT(pushKitsToQbs()));
@@ -87,7 +89,6 @@ QbsManager::~QbsManager()
{
delete m_defaultPropertyProvider;
delete m_settings;
- delete m_preferences;
}
QString QbsManager::mimeType() const
@@ -124,11 +125,6 @@ qbs::Settings *QbsManager::settings()
return m_settings;
}
-qbs::Preferences *QbsManager::preferences()
-{
- return m_preferences;
-}
-
void QbsManager::addProfile(const QString &name, const QVariantMap &data)
{
qbs::Profile profile(name, settings());
@@ -146,11 +142,44 @@ void QbsManager::removeCreatorProfiles()
}
}
+void QbsManager::addQtProfileFromKit(const QString &profileName, const ProjectExplorer::Kit *k)
+{
+ const QtSupport::BaseQtVersion * const qt = QtSupport::QtKitInformation::qtVersion(k);
+ if (!qt)
+ return;
+
+ qbs::QtEnvironment qtEnv;
+ qtEnv.binaryPath = qt->binPath().toString();
+ if (qt->hasDebugBuild())
+ qtEnv.buildVariant << QLatin1String("debug");
+ if (qt->hasReleaseBuild())
+ qtEnv.buildVariant << QLatin1String("release");
+ qtEnv.documentationPath = qt->docsPath().toString();
+ qtEnv.includePath = qt->headerPath().toString();
+ qtEnv.libraryPath = qt->libraryPath().toString();
+ qtEnv.pluginPath = qt->pluginPath().toString();
+ qtEnv.mkspecBasePath = qt->mkspecsPath().toString();
+ qtEnv.mkspecName = qt->mkspec().toString();
+ qtEnv.mkspecPath = qt->mkspecPath().toString();
+ qtEnv.qtNameSpace = qt->qtNamespace();
+ qtEnv.qtLibInfix = qt->qtLibInfix();
+ qtEnv.qtVersion = qt->qtVersionString();
+ qtEnv.frameworkBuild = qt->isFrameworkBuild();
+ qtEnv.configItems = qt->configValues();
+ qtEnv.qtConfigItems = qt->qtConfigValues();
+ const qbs::ErrorInfo errorInfo = qbs::setupQtProfile(profileName, settings(), qtEnv);
+ if (errorInfo.hasError()) {
+ Core::MessageManager::write(tr("Failed to set up kit for qbs: %1")
+ .arg(errorInfo.toString()), Core::MessageManager::ModeSwitch);
+ }
+}
+
void QbsManager::addProfileFromKit(const ProjectExplorer::Kit *k)
{
const QString name = ProjectExplorer::Project::makeUnique(
QString::fromLatin1("qtc_") + k->fileSystemFriendlyName(), m_settings->profiles());
setProfileForKit(name, k);
+ addQtProfileFromKit(name, k);
// set up properties:
QVariantMap data = m_defaultPropertyProvider->properties(k, QVariantMap());
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.h b/src/plugins/qbsprojectmanager/qbsprojectmanager.h
index ebbea9c14e..ff137f61c9 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.h
@@ -74,7 +74,6 @@ public:
void setProfileForKit(const QString &name, const ProjectExplorer::Kit *k);
static qbs::Settings *settings();
- static qbs::Preferences *preferences();
Internal::QbsLogSink *logSink() { return m_logSink; }
private slots:
@@ -83,12 +82,12 @@ private slots:
private:
void addProfile(const QString &name, const QVariantMap &data);
void removeCreatorProfiles();
+ void addQtProfileFromKit(const QString &profileName, const ProjectExplorer::Kit *k);
void addProfileFromKit(const ProjectExplorer::Kit *k);
Internal::QbsProjectManagerPlugin *m_plugin;
Internal::QbsLogSink *m_logSink;
static qbs::Settings *m_settings;
- static qbs::Preferences *m_preferences;
DefaultPropertyProvider *m_defaultPropertyProvider;
};
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.pro b/src/plugins/qbsprojectmanager/qbsprojectmanager.pro
index 3b8da1c508..6b50595ed2 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.pro
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.pro
@@ -4,10 +4,12 @@ include(../../qtcreatorplugin.pri)
isEmpty(QBS_INSTALL_DIR): QBS_INSTALL_DIR = $$(QBS_INSTALL_DIR)
isEmpty(QBS_INSTALL_DIR) {
QBS_SOURCE_DIR = $$PWD/../../shared/qbs
- include($$QBS_SOURCE_DIR/src/lib/use.pri)
+ include($$QBS_SOURCE_DIR/src/lib/corelib/use_corelib.pri)
+ include($$QBS_SOURCE_DIR/src/lib/qtprofilesetup/use_qtprofilesetup.pri)
macx:QMAKE_LFLAGS += -Wl,-rpath,@loader_path/../ # Mac: fix rpath for qbscore soname
} else {
- include($${QBS_INSTALL_DIR}/include/qbs/use_installed.pri)
+ include($${QBS_INSTALL_DIR}/include/qbs/use_installed_corelib.pri)
+ include($${QBS_INSTALL_DIR}/include/qbs/use_installed_qtprofilesetup.pri)
}
QBS_INSTALL_DIR_FWD_SLASHES = $$replace(QBS_INSTALL_DIR, \\\\, /)
DEFINES += QBS_INSTALL_DIR=\\\"$$QBS_INSTALL_DIR_FWD_SLASHES\\\"
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.qbs b/src/plugins/qbsprojectmanager/qbsprojectmanager.qbs
index b4e8ab2420..69cf233d72 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.qbs
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.qbs
@@ -38,9 +38,14 @@ QtcPlugin {
Depends { name: "QtSupport" }
Depends { name: "QmlJS" }
Depends { name: "QmlJSTools" }
+ property bool useInternalQbsProducts: project.qbsSubModuleExists && !project.useExternalQbs
Depends {
name: "qbscore"
- condition: project.qbsSubModuleExists && !project.useExternalQbs
+ condition: product.useInternalQbsProducts
+ }
+ Depends {
+ name: "qbsqtprofilesetup"
+ condition: product.useInternalQbsProducts
}
cpp.defines: base.concat([
diff --git a/src/shared/qbs b/src/shared/qbs
-Subproject 2c1a305295f05f35527b0cceb500d013e12752e
+Subproject f64c7492a3ba5cd73994be810be7ff529a19f37
diff --git a/src/src.qbs b/src/src.qbs
index 11853ff7c5..d0aa9a4957 100644
--- a/src/src.qbs
+++ b/src/src.qbs
@@ -29,7 +29,7 @@ Project {
property path resourcesInstallDir: project.ide_data_path + "/qbs"
references: [
- qbsBaseDir + "/src/lib/lib.qbs",
+ qbsBaseDir + "/src/lib/libs.qbs",
qbsBaseDir + "/src/plugins/plugins.qbs",
qbsBaseDir + "/share/share.qbs"
]