aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@petroules.com>2014-04-07 15:03:55 -0400
committerJake Petroules <jake.petroules@petroules.com>2014-04-14 17:27:33 +0200
commit51a1d99445aa07cc6b63d78701585a9389e62a87 (patch)
tree78138042078025b12d22f012a003638ccb3fde59 /share
parent66c391892c92b69fb922193d6f7702dde71d7ed2 (diff)
Refactor JavaScript functions into more sensible locations.
NOTE: Gcc.removePrefixAndSuffix had no callers and was removed. Change-Id: I9668ba213953698bc438ef3777cef77665a09072 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'share')
-rw-r--r--share/qbs/imports/qbs/PathTools/path-tools.js14
-rw-r--r--share/qbs/imports/qbs/UnixUtils/unix-utils.js18
-rw-r--r--share/qbs/modules/cpp/GenericGCC.qbs3
-rw-r--r--share/qbs/modules/cpp/gcc.js48
4 files changed, 39 insertions, 44 deletions
diff --git a/share/qbs/imports/qbs/PathTools/path-tools.js b/share/qbs/imports/qbs/PathTools/path-tools.js
index 3f519d832..b6c25a555 100644
--- a/share/qbs/imports/qbs/PathTools/path-tools.js
+++ b/share/qbs/imports/qbs/PathTools/path-tools.js
@@ -89,3 +89,17 @@ function dwarfDsymFileName(product) {
else
return product.targetName + ".dSYM";
}
+
+// Returns whether the string looks like a library filename
+function isLibraryFileName(product, fileName, prefix, suffixes, isShared) {
+ var suffix, i;
+ var os = product.moduleProperty("qbs", "targetOS");
+ for (i = 0; i < suffixes.length; ++i) {
+ suffix = suffixes[i];
+ if (isShared && os.contains("unix") && !os.contains("darwin"))
+ suffix += "(\\.[0-9]+){0,3}";
+ if (fileName.match("^" + prefix + ".+?\\" + suffix + "$"))
+ return true;
+ }
+ return false;
+}
diff --git a/share/qbs/imports/qbs/UnixUtils/unix-utils.js b/share/qbs/imports/qbs/UnixUtils/unix-utils.js
new file mode 100644
index 000000000..d9491b53e
--- /dev/null
+++ b/share/qbs/imports/qbs/UnixUtils/unix-utils.js
@@ -0,0 +1,18 @@
+var FileInfo = loadExtension("qbs.FileInfo");
+
+function soname(product, outputFilePath) {
+ function majorVersion(version, defaultValue) {
+ var n = parseInt(version, 10);
+ return isNaN(n) ? defaultValue : n;
+ }
+
+ var outputFileName = FileInfo.fileName(outputFilePath);
+ if (product.version) {
+ var major = majorVersion(product.version);
+ if (major) {
+ return outputFileName.substr(0, outputFileName.length - product.version.length)
+ + major;
+ }
+ }
+ return outputFileName;
+}
diff --git a/share/qbs/modules/cpp/GenericGCC.qbs b/share/qbs/modules/cpp/GenericGCC.qbs
index 772dc0782..410e072f5 100644
--- a/share/qbs/modules/cpp/GenericGCC.qbs
+++ b/share/qbs/modules/cpp/GenericGCC.qbs
@@ -4,6 +4,7 @@ import qbs.FileInfo
import qbs.ModUtils
import qbs.PathTools
import qbs.Process
+import qbs.UnixUtils
import 'gcc.js' as Gcc
CppModule {
@@ -121,7 +122,7 @@ CppModule {
args = args.concat([
'-Wl,--hash-style=gnu',
'-Wl,--as-needed',
- '-Wl,-soname=' + Gcc.soname(product, libFilePath)
+ '-Wl,-soname=' + UnixUtils.soname(product, libFilePath)
]);
} else if (product.moduleProperty("qbs", "targetOS").contains('darwin')) {
var installNamePrefix = product.moduleProperty("cpp", "installNamePrefix");
diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js
index 96488d930..279f9b4a8 100644
--- a/share/qbs/modules/cpp/gcc.js
+++ b/share/qbs/modules/cpp/gcc.js
@@ -1,3 +1,4 @@
+var PathTools = loadExtension("qbs.PathTools");
var WindowsUtils = loadExtension("qbs.WindowsUtils");
function linkerFlags(product, inputs)
@@ -38,8 +39,8 @@ function linkerFlags(product, inputs)
prefix = ModUtils.moduleProperty(product, "staticLibraryPrefix");
suffixes = ModUtils.moduleProperty(product, "supportedStaticLibrarySuffixes");
for (i in staticLibraries) {
- if (isLibraryFileName(product, FileInfo.fileName(staticLibraries[i]), prefix, suffixes,
- false)) {
+ if (PathTools.isLibraryFileName(product, FileInfo.fileName(staticLibraries[i]), prefix,
+ suffixes, false)) {
args.push(staticLibraries[i]);
} else {
args.push('-l' + staticLibraries[i]);
@@ -49,8 +50,8 @@ function linkerFlags(product, inputs)
prefix = ModUtils.moduleProperty(product, "dynamicLibraryPrefix");
suffix = ModUtils.moduleProperty(product, "dynamicLibrarySuffix");
for (i in dynamicLibraries) {
- if (isLibraryFileName(product, FileInfo.fileName(dynamicLibraries[i]), prefix, [suffix],
- true)) {
+ if (PathTools.isLibraryFileName(product, FileInfo.fileName(dynamicLibraries[i]), prefix,
+ [suffix], true)) {
args.push(dynamicLibraries[i]);
} else {
args.push('-l' + dynamicLibraries[i]);
@@ -92,21 +93,6 @@ function linkerFlags(product, inputs)
return args;
}
-// Returns whether the string looks like a library filename
-function isLibraryFileName(product, fileName, prefix, suffixes, isShared)
-{
- var suffix, i;
- var os = product.moduleProperty("qbs", "targetOS");
- for (i = 0; i < suffixes.length; ++i) {
- suffix = suffixes[i];
- if (isShared && os.contains("unix") && !os.contains("darwin"))
- suffix += "(\\.[0-9]+){0,3}";
- if (fileName.match("^" + prefix + ".+?\\" + suffix + "$"))
- return true;
- }
- return false;
-}
-
// for compiler AND linker
function configFlags(config) {
var args = [];
@@ -143,11 +129,6 @@ function configFlags(config) {
return args;
}
-function removePrefixAndSuffix(str, prefix, suffix)
-{
- return str.substr(prefix.length, str.length - prefix.length - suffix.length);
-}
-
// ### what we actually need here is something like product.usedFileTags
// that contains all fileTags that have been used when applying the rules.
function additionalCompilerFlags(product, input, output)
@@ -247,25 +228,6 @@ function additionalCompilerAndLinkerFlags(product) {
return args
}
-function majorVersion(version, defaultValue)
-{
- var n = parseInt(product.version, 10);
- return isNaN(n) ? defaultValue : n;
-}
-
-function soname(product, outputFilePath)
-{
- var outputFileName = FileInfo.fileName(outputFilePath);
- if (product.version) {
- var major = majorVersion(product.version);
- if (major) {
- return outputFileName.substr(0, outputFileName.length - product.version.length)
- + major;
- }
- }
- return outputFileName;
-}
-
// Returns the GCC language name equivalent to fileTag, accepted by the -x argument
function languageName(fileTag)
{