diff options
| author | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2013-10-30 16:20:15 +0100 |
|---|---|---|
| committer | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2013-10-30 16:20:15 +0100 |
| commit | 004d5eb78260067c98381e90fc2dd7148697c157 (patch) | |
| tree | 01e5fac8e7d5f841b641bb5da1136d5c012126c2 /share | |
| parent | 3f0aeb76451682cdc1bd0569611b2ba7f45dcf9e (diff) | |
| parent | 521d595f6a0c3b4cec0f0488cb31947778bf1a3f (diff) | |
| download | qbs-004d5eb78260067c98381e90fc2dd7148697c157.tar.gz | |
Merge remote-tracking branch 'origin/1.1'
Diffstat (limited to 'share')
| -rw-r--r-- | share/qbs/modules/cpp/CppModule.qbs | 17 | ||||
| -rw-r--r-- | share/qbs/modules/cpp/DarwinGCC.qbs | 37 | ||||
| -rw-r--r-- | share/qbs/modules/cpp/GenericGCC.qbs | 16 | ||||
| -rw-r--r-- | share/qbs/modules/cpp/gcc.js | 2 | ||||
| -rw-r--r-- | share/qbs/modules/cpp/ios-gcc.qbs | 3 | ||||
| -rw-r--r-- | share/qbs/modules/cpp/windows-mingw.qbs | 2 | ||||
| -rw-r--r-- | share/qbs/modules/cpp/windows-msvc.qbs | 8 | ||||
| -rw-r--r-- | share/qbs/modules/utils.js | 11 | ||||
| -rw-r--r-- | share/share.qbs | 6 |
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 { |
