aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@petroules.com>2015-05-09 00:50:18 -0700
committerJake Petroules <jake.petroules@petroules.com>2015-05-19 15:38:54 +0000
commit53b8fb9889a4aeb231642a6646bb8024744e03c7 (patch)
treed71870226b5c2d8f8d0555d6870dab1269fe4c72 /src
parent55169d88a36af5ecd2b1649e7f8b99e75632f598 (diff)
Add support for building internal executables (libexec) as part of Qbs.
This will be used by the upcoming Java output artifact scanner. Change-Id: I04dd36ee6a6a7913b604bdda73c14879b2854721 Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/app/qbs/commandlinefrontend.cpp2
-rw-r--r--src/app/qbs/qbs.pro2
-rw-r--r--src/app/qbs/qbs.qbs1
-rw-r--r--src/lib/corelib/language/moduleloader.cpp2
-rw-r--r--src/lib/corelib/tools/setupprojectparameters.cpp18
-rw-r--r--src/lib/corelib/tools/setupprojectparameters.h3
-rw-r--r--src/libexec/libexec.pro1
-rw-r--r--src/libexec/libexec.qbs6
-rw-r--r--src/src.qbs1
9 files changed, 36 insertions, 0 deletions
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp
index e6fa0c725..b8138a39f 100644
--- a/src/app/qbs/commandlinefrontend.cpp
+++ b/src/app/qbs/commandlinefrontend.cpp
@@ -157,6 +157,8 @@ void CommandLineFrontend::start()
+ QLatin1String("/" QBS_RELATIVE_SEARCH_PATH))));
params.setPluginPaths(prefs.pluginPaths(QDir::cleanPath(QCoreApplication::applicationDirPath()
+ QLatin1String("/" QBS_RELATIVE_PLUGINS_PATH))));
+ params.setLibexecPath(QDir::cleanPath(QCoreApplication::applicationDirPath()
+ + QLatin1String("/" QBS_RELATIVE_LIBEXEC_PATH)));
params.setTopLevelProfile(profileName);
params.setBuildVariant(buildVariant);
params.setBuildRoot(buildDirectory(profileName));
diff --git a/src/app/qbs/qbs.pro b/src/app/qbs/qbs.pro
index 37eda9373..783dabd6d 100644
--- a/src/app/qbs/qbs.pro
+++ b/src/app/qbs/qbs.pro
@@ -20,7 +20,9 @@ HEADERS += \
qbstool.h
include(../../library_dirname.pri)
+isEmpty(QBS_RELATIVE_LIBEXEC_PATH):QBS_RELATIVE_LIBEXEC_PATH=../libexec
isEmpty(QBS_RELATIVE_PLUGINS_PATH):QBS_RELATIVE_PLUGINS_PATH=../$${QBS_LIBRARY_DIRNAME}
isEmpty(QBS_RELATIVE_SEARCH_PATH):QBS_RELATIVE_SEARCH_PATH=..
+DEFINES += QBS_RELATIVE_LIBEXEC_PATH=\\\"$${QBS_RELATIVE_LIBEXEC_PATH}\\\"
DEFINES += QBS_RELATIVE_PLUGINS_PATH=\\\"$${QBS_RELATIVE_PLUGINS_PATH}\\\"
DEFINES += QBS_RELATIVE_SEARCH_PATH=\\\"$${QBS_RELATIVE_SEARCH_PATH}\\\"
diff --git a/src/app/qbs/qbs.qbs b/src/app/qbs/qbs.qbs
index 39a5559e6..e56e97960 100644
--- a/src/app/qbs/qbs.qbs
+++ b/src/app/qbs/qbs.qbs
@@ -7,6 +7,7 @@ QbsApp {
targetName: "qbs"
cpp.defines: base.concat([
'QBS_VERSION="' + QbsFunctions.qbsVersion() + '"',
+ 'QBS_RELATIVE_LIBEXEC_PATH="' + project.relativeLibexecPath + '"',
'QBS_RELATIVE_SEARCH_PATH="' + project.relativeSearchPath + '"',
'QBS_RELATIVE_PLUGINS_PATH="' + project.relativePluginsPath + '"'
])
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index 73ea5e7fb..527d07e4a 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -1126,6 +1126,8 @@ void ModuleLoader::setupBaseModulePrototype(Item *prototype)
BuiltinValue::create(BuiltinValue::CanonicalArchitectureFunction));
prototype->setProperty(QLatin1String("rfc1034Identifier"),
BuiltinValue::create(BuiltinValue::Rfc1034IdentifierFunction));
+ prototype->setProperty(QLatin1String("libexecPath"),
+ VariantValue::create(m_parameters.libexecPath()));
const Version qbsVersion = Version::qbsVersion();
prototype->setProperty(QLatin1String("versionMajor"),
diff --git a/src/lib/corelib/tools/setupprojectparameters.cpp b/src/lib/corelib/tools/setupprojectparameters.cpp
index 991962e59..30499fe41 100644
--- a/src/lib/corelib/tools/setupprojectparameters.cpp
+++ b/src/lib/corelib/tools/setupprojectparameters.cpp
@@ -63,6 +63,7 @@ public:
QString buildRoot;
QStringList searchPaths;
QStringList pluginPaths;
+ QString libexecPath;
QString settingsBaseDir;
QVariantMap overriddenValues;
QVariantMap buildConfiguration;
@@ -209,6 +210,23 @@ void SetupProjectParameters::setPluginPaths(const QStringList &pluginPaths)
}
/*!
+ * \brief Where to look for internal binaries.
+ */
+QString SetupProjectParameters::libexecPath() const
+{
+ return d->libexecPath;
+}
+
+/*!
+ * \brief Sets the information about where to look for internal binaries.
+ * \note \p libexecPath must be an absolute path.
+ */
+void SetupProjectParameters::setLibexecPath(const QString &libexecPath)
+{
+ d->libexecPath = libexecPath;
+}
+
+/*!
* \brief The base directory for qbs settings.
* This value is used to locate profiles and preferences.
*/
diff --git a/src/lib/corelib/tools/setupprojectparameters.h b/src/lib/corelib/tools/setupprojectparameters.h
index 0c084a40f..8cc83e125 100644
--- a/src/lib/corelib/tools/setupprojectparameters.h
+++ b/src/lib/corelib/tools/setupprojectparameters.h
@@ -73,6 +73,9 @@ public:
QStringList pluginPaths() const;
void setPluginPaths(const QStringList &pluginPaths);
+ QString libexecPath() const;
+ void setLibexecPath(const QString &libexecPath);
+
QString settingsDirectory() const;
void setSettingsDirectory(const QString &settingsBaseDir);
diff --git a/src/libexec/libexec.pro b/src/libexec/libexec.pro
new file mode 100644
index 000000000..967108504
--- /dev/null
+++ b/src/libexec/libexec.pro
@@ -0,0 +1 @@
+TEMPLATE = subdirs
diff --git a/src/libexec/libexec.qbs b/src/libexec/libexec.qbs
new file mode 100644
index 000000000..489864a26
--- /dev/null
+++ b/src/libexec/libexec.qbs
@@ -0,0 +1,6 @@
+import qbs
+
+Project {
+ references: [
+ ]
+}
diff --git a/src/src.qbs b/src/src.qbs
index 04ce2d6ba..c501cb437 100644
--- a/src/src.qbs
+++ b/src/src.qbs
@@ -4,6 +4,7 @@ Project {
references: [
"app/apps.qbs",
"lib/libs.qbs",
+ "libexec/libexec.qbs",
"plugins/plugins.qbs"
]
}