summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@digia.com>2013-10-30 16:20:15 +0100
committerOswald Buddenhagen <oswald.buddenhagen@digia.com>2013-10-30 16:20:15 +0100
commit004d5eb78260067c98381e90fc2dd7148697c157 (patch)
tree01e5fac8e7d5f841b641bb5da1136d5c012126c2 /share
parent3f0aeb76451682cdc1bd0569611b2ba7f45dcf9e (diff)
parent521d595f6a0c3b4cec0f0488cb31947778bf1a3f (diff)
downloadqbs-004d5eb78260067c98381e90fc2dd7148697c157.tar.gz
Merge remote-tracking branch 'origin/1.1'
Diffstat (limited to 'share')
-rw-r--r--share/qbs/modules/cpp/CppModule.qbs17
-rw-r--r--share/qbs/modules/cpp/DarwinGCC.qbs37
-rw-r--r--share/qbs/modules/cpp/GenericGCC.qbs16
-rw-r--r--share/qbs/modules/cpp/gcc.js2
-rw-r--r--share/qbs/modules/cpp/ios-gcc.qbs3
-rw-r--r--share/qbs/modules/cpp/windows-mingw.qbs2
-rw-r--r--share/qbs/modules/cpp/windows-msvc.qbs8
-rw-r--r--share/qbs/modules/utils.js11
-rw-r--r--share/share.qbs6
9 files changed, 60 insertions, 42 deletions
diff --git a/share/qbs/modules/cpp/CppModule.qbs b/share/qbs/modules/cpp/CppModule.qbs
index e9bf4bcd6..4b6ec8870 100644
--- a/share/qbs/modules/cpp/CppModule.qbs
+++ b/share/qbs/modules/cpp/CppModule.qbs
@@ -92,6 +92,7 @@ Module {
property string dynamicLibrarySuffix
property stringList supportedStaticLibrarySuffixes: [staticLibrarySuffix]
property string executableSuffix
+ property bool createSymlinks: true
property stringList dynamicLibraries // list of names, will be linked with -lname
property stringList staticLibraries // list of static library files
property stringList frameworks // list of frameworks, will be linked with '-framework <name>'
@@ -161,6 +162,22 @@ Module {
property stringList platformObjcxxFlags
property stringList platformLinkerFlags
+ // OS X and iOS properties
+ property path infoPlistFile
+ property var infoPlist
+ property bool processInfoPlist: true
+ property string infoPlistFormat: {
+ if (qbs.targetOS.contains("osx"))
+ return infoPlistFile ? "same-as-input" : "xml1"
+ else if (qbs.targetOS.contains("ios"))
+ return "binary1"
+ }
+ property bool buildDsym: qbs.buildVariant === "release"
+ property bool buildIpa: !qbs.targetOS.contains('ios-simulator')
+
+ property string signingIdentity
+ property string provisionFile
+
FileTagger {
pattern: "*.c"
fileTags: ["c"]
diff --git a/share/qbs/modules/cpp/DarwinGCC.qbs b/share/qbs/modules/cpp/DarwinGCC.qbs
index bdcaa2082..381174d78 100644
--- a/share/qbs/modules/cpp/DarwinGCC.qbs
+++ b/share/qbs/modules/cpp/DarwinGCC.qbs
@@ -13,29 +13,6 @@ UnixGCC {
compilerDefines: ["__GNUC__", "__APPLE__"]
dynamicLibrarySuffix: ".dylib"
- property path infoPlistFile
- property var infoPlist
- property bool processInfoPlist: true
- property string infoPlistFormat: {
- if (qbs.targetOS.contains("osx"))
- return infoPlistFile ? "same-as-input" : "xml1"
- else if (qbs.targetOS.contains("ios"))
- return "binary1"
- }
- property bool buildDsym: qbs.buildVariant === "release"
- property var buildEnv: {
- var env = {
- "EXECUTABLE_NAME": product.targetName,
- "LANG": "en_US.US-ASCII",
- "PRODUCT_NAME": product.name
- }
- if (minimumIosVersion)
- env["IPHONEOS_DEPLOYMENT_TARGET"] = minimumIosVersion;
- if (minimumOsxVersion)
- env["MACOSX_DEPLOYMENT_TARGET"] = minimumOsxVersion;
- return env;
- }
-
setupBuildEnvironment: {
var v = new ModUtils.EnvironmentVariable("PATH", ":", false);
if (platformPath) {
@@ -54,6 +31,20 @@ UnixGCC {
}
}
+ // private properties
+ readonly property var buildEnv: {
+ var env = {
+ "EXECUTABLE_NAME": product.targetName,
+ "LANG": "en_US.US-ASCII",
+ "PRODUCT_NAME": product.name
+ }
+ if (minimumIosVersion)
+ env["IPHONEOS_DEPLOYMENT_TARGET"] = minimumIosVersion;
+ if (minimumOsxVersion)
+ env["MACOSX_DEPLOYMENT_TARGET"] = minimumOsxVersion;
+ return env;
+ }
+
readonly property var defaultInfoPlist: {
var dict = {
CFBundleDevelopmentRegion: "en", // default localization
diff --git a/share/qbs/modules/cpp/GenericGCC.qbs b/share/qbs/modules/cpp/GenericGCC.qbs
index 95105ef0b..d07c6e69d 100644
--- a/share/qbs/modules/cpp/GenericGCC.qbs
+++ b/share/qbs/modules/cpp/GenericGCC.qbs
@@ -32,11 +32,9 @@ CppModule {
compilerPath: toolchainPathPrefix + compilerName
property path archiverPath: { return toolchainPathPrefix + archiverName }
- property bool createSymlinks: true
-
readonly property bool shouldCreateSymlinks: {
return createSymlinks && product.version &&
- !type.contains("frameworkbundle") && qbs.targetOS.contains("unix");
+ !product.type.contains("frameworkbundle") && qbs.targetOS.contains("unix");
}
readonly property string internalVersion: {
@@ -71,9 +69,9 @@ CppModule {
var result = []
for (var i in inputs.dynamiclibrary) {
var lib = inputs.dynamiclibrary[i]
- result.push(lib.fileName)
var impliedLibs = ModUtils.moduleProperties(lib, 'transitiveSOs')
- result = result.concat(impliedLibs)
+ var libsToAdd = impliedLibs.concat([lib.fileName]);
+ result = ModUtils.uniqueConcat(result, libsToAdd);
}
return result
}
@@ -81,21 +79,18 @@ CppModule {
// libfoo
Artifact {
- condition: product.shouldCreateSymlinks
fileName: product.destinationDirectory + "/" + PathTools.dynamicLibraryFileName(undefined, 0)
fileTags: ["dynamiclibrary_symlink"]
}
// libfoo.1
Artifact {
- condition: product.shouldCreateSymlinks
fileName: product.destinationDirectory + "/" + PathTools.dynamicLibraryFileName(undefined, 1)
fileTags: ["dynamiclibrary_symlink"]
}
// libfoo.1.0
Artifact {
- condition: product.shouldCreateSymlinks
fileName: product.destinationDirectory + "/" + PathTools.dynamicLibraryFileName(undefined, 2)
fileTags: ["dynamiclibrary_symlink"]
}
@@ -256,8 +251,9 @@ CppModule {
if (product.moduleProperty("qbs", "targetOS").contains('linux')) {
var transitiveSOs = ModUtils.modulePropertiesFromArtifacts(product, inputs.dynamiclibrary, 'cpp', 'transitiveSOs')
- for (i in transitiveSOs) {
- args.push("-Wl,-rpath-link=" + FileInfo.path(transitiveSOs[i]))
+ var uniqueSOs = ModUtils.uniqueConcat([], transitiveSOs)
+ for (i in uniqueSOs) {
+ args.push("-Wl,-rpath-link=" + FileInfo.path(uniqueSOs[i]))
}
}
diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js
index ce0cf5b8d..453b2b31e 100644
--- a/share/qbs/modules/cpp/gcc.js
+++ b/share/qbs/modules/cpp/gcc.js
@@ -167,7 +167,7 @@ function additionalCompilerFlags(product, input, output)
var cppFlags = ModUtils.moduleProperties(input, 'cppFlags');
for (i in cppFlags)
args.push('-Wp,' + cppFlags[i])
- var platformDefines = ModUtils.moduleProperties(input, 'platformDefines');
+ var platformDefines = ModUtils.moduleProperty(input, 'platformDefines');
for (i in platformDefines)
args.push('-D' + platformDefines[i]);
var defines = ModUtils.moduleProperties(input, 'defines');
diff --git a/share/qbs/modules/cpp/ios-gcc.qbs b/share/qbs/modules/cpp/ios-gcc.qbs
index d685939a9..2ea1adcd9 100644
--- a/share/qbs/modules/cpp/ios-gcc.qbs
+++ b/share/qbs/modules/cpp/ios-gcc.qbs
@@ -8,9 +8,6 @@ import 'bundle-tools.js' as BundleTools
DarwinGCC {
condition: qbs.hostOS.contains('osx') && qbs.targetOS.contains('ios') && qbs.toolchain.contains('gcc')
- property string signingIdentity
- property string provisionFile
- property bool buildIpa: !qbs.targetOS.contains('ios-simulator')
visibility: "hidden"
optimization: {
if (qbs.buildVariant === "debug")
diff --git a/share/qbs/modules/cpp/windows-mingw.qbs b/share/qbs/modules/cpp/windows-mingw.qbs
index 024f887ab..2cb80ca6b 100644
--- a/share/qbs/modules/cpp/windows-mingw.qbs
+++ b/share/qbs/modules/cpp/windows-mingw.qbs
@@ -45,7 +45,7 @@ GenericGCC {
}
prepare: {
- var platformDefines = ModUtils.moduleProperties(input, 'platformDefines');
+ var platformDefines = ModUtils.moduleProperty(input, 'platformDefines');
var defines = ModUtils.moduleProperties(input, 'defines');
var includePaths = ModUtils.moduleProperties(input, 'includePaths');
var systemIncludePaths = ModUtils.moduleProperties(input, 'systemIncludePaths');
diff --git a/share/qbs/modules/cpp/windows-msvc.qbs b/share/qbs/modules/cpp/windows-msvc.qbs
index 419a6f922..079795558 100644
--- a/share/qbs/modules/cpp/windows-msvc.qbs
+++ b/share/qbs/modules/cpp/windows-msvc.qbs
@@ -85,7 +85,7 @@ CppModule {
fileName: ".obj/" + product.name + "/" + product.name + '_c.pch'
}
prepare: {
- var platformDefines = ModUtils.moduleProperties(input, 'platformDefines');
+ var platformDefines = ModUtils.moduleProperty(input, 'platformDefines');
var defines = ModUtils.moduleProperties(input, 'defines');
var includePaths = ModUtils.moduleProperties(input, 'includePaths');
var systemIncludePaths = ModUtils.moduleProperties(input, 'systemIncludePaths');
@@ -112,7 +112,7 @@ CppModule {
fileName: ".obj/" + product.name + "/" + product.name + '_cpp.pch'
}
prepare: {
- var platformDefines = ModUtils.moduleProperties(input, 'platformDefines');
+ var platformDefines = ModUtils.moduleProperty(input, 'platformDefines');
var defines = ModUtils.moduleProperties(input, 'defines');
var includePaths = ModUtils.moduleProperties(input, 'includePaths');
var systemIncludePaths = ModUtils.moduleProperties(input, 'systemIncludePaths');
@@ -134,7 +134,7 @@ CppModule {
}
prepare: {
- var platformDefines = ModUtils.moduleProperties(input, 'platformDefines');
+ var platformDefines = ModUtils.moduleProperty(input, 'platformDefines');
var defines = ModUtils.moduleProperties(input, 'defines');
var includePaths = ModUtils.moduleProperties(input, 'includePaths');
var systemIncludePaths = ModUtils.moduleProperties(input, 'systemIncludePaths');
@@ -245,7 +245,7 @@ CppModule {
}
prepare: {
- var platformDefines = ModUtils.moduleProperties(input, 'platformDefines');
+ var platformDefines = ModUtils.moduleProperty(input, 'platformDefines');
var defines = ModUtils.moduleProperties(input, 'defines');
var includePaths = ModUtils.moduleProperties(input, 'includePaths');
var systemIncludePaths = ModUtils.moduleProperties(input, 'systemIncludePaths');
diff --git a/share/qbs/modules/utils.js b/share/qbs/modules/utils.js
index 8ee1f399a..9d187d01f 100644
--- a/share/qbs/modules/utils.js
+++ b/share/qbs/modules/utils.js
@@ -136,6 +136,17 @@ function dumpObject(obj, description)
traverseObject(obj, dumpProperty)
}
+function uniqueConcat(array1, array2)
+{
+ var result = array1;
+ for (i in array2) {
+ var elem = array2[i];
+ if (result.indexOf(elem) === -1)
+ result.push(elem);
+ }
+ return result;
+}
+
//////////////////////////////////////////////////////////
// The EnvironmentVariable class
diff --git a/share/share.qbs b/share/share.qbs
index 66fc5f4d4..1086dede5 100644
--- a/share/share.qbs
+++ b/share/share.qbs
@@ -9,6 +9,12 @@ Product {
qbs.installDir: project.resourcesInstallDir + "/share"
}
+ Group {
+ files: "../examples"
+ qbs.install: true
+ qbs.installDir: project.resourcesInstallDir + "/share/qbs"
+ }
+
Transformer {
inputs: "qbs"
Artifact {