diff options
author | Jake Petroules <jake.petroules@petroules.com> | 2014-04-07 15:03:55 -0400 |
---|---|---|
committer | Jake Petroules <jake.petroules@petroules.com> | 2014-04-14 17:27:33 +0200 |
commit | 51a1d99445aa07cc6b63d78701585a9389e62a87 (patch) | |
tree | 78138042078025b12d22f012a003638ccb3fde59 /share | |
parent | 66c391892c92b69fb922193d6f7702dde71d7ed2 (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.js | 14 | ||||
-rw-r--r-- | share/qbs/imports/qbs/UnixUtils/unix-utils.js | 18 | ||||
-rw-r--r-- | share/qbs/modules/cpp/GenericGCC.qbs | 3 | ||||
-rw-r--r-- | share/qbs/modules/cpp/gcc.js | 48 |
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) { |