From 42ccbea1fd79e19dc3df1b7891a8023b21f6c501 Mon Sep 17 00:00:00 2001 From: William Gallafent Date: Tue, 18 Sep 2012 14:02:48 +0100 Subject: [PATCH] Correct dynamic library suffix for Apple, and fix some bugs where it was assumed that suffix is always three characters long --- share/qbs/modules/cpp/GenericGCC.qbs | 18 ++++++------------ share/qbs/modules/cpp/gcc.js | 6 ++++++ share/qbs/modules/cpp/mac-gcc.qbs | 1 + 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/share/qbs/modules/cpp/GenericGCC.qbs b/share/qbs/modules/cpp/GenericGCC.qbs index ecd01f4..0a4d6f8 100644 --- a/share/qbs/modules/cpp/GenericGCC.qbs +++ b/share/qbs/modules/cpp/GenericGCC.qbs @@ -87,10 +87,7 @@ CppModule { for (i in inputs.dynamiclibrary) { libraryPaths.push(FileInfo.path(inputs.dynamiclibrary[i].fileName)) var fileName = FileInfo.fileName(inputs.dynamiclibrary[i].fileName) - if (product.modules.qbs.toolchain == 'mingw') - fileName = fileName.substr(0, fileName.length - 4) - else - fileName = fileName.substr(3, fileName.length - 6) + fileName = Gcc.fileNameToLibName (fileName, product.module.dynamicLibraryPrefix) dynamicLibrariesI.push(fileName) } dynamicLibrariesI = dynamicLibrariesI.concat(dynamicLibraries); @@ -100,7 +97,7 @@ CppModule { fileName = inputs.framework[i].fileName; frameworkPaths.push(FileInfo.path(fileName)); fileName = FileInfo.fileName(fileName); - fileName = fileName.substr(3, fileName.length - 6); + fileName = Gcc.fileNameToLibName (fileName, product.module.dynamicLibraryPrefix) frameworksI.push(fileName); } @@ -202,11 +199,11 @@ CppModule { var dynamicLibrariesI = []; for (i in dynamicLibraries) { - if (dynamicLibraries[i].match("lib.*\\.so$") != null) { + if (dynamicLibraries[i].match("lib.*\\"+product.module.dynamicLibrarySuffix+"$") != null) { // shared object filename found var libDir = FileInfo.path(dynamicLibraries[i]) var libName = FileInfo.fileName(dynamicLibraries[i]) - libName = libName.substr(3, libName.length - 6) + libName = Gcc.fileNameToLibName (libName, product.module.dynamicLibraryPrefix) libraryPaths.push(libDir) dynamicLibrariesI.push(libName) } else { @@ -225,10 +222,7 @@ CppModule { for (i in inputs.dynamiclibrary) { libraryPaths.push(FileInfo.path(inputs.dynamiclibrary[i].fileName)) var fileName = FileInfo.fileName(inputs.dynamiclibrary[i].fileName) - if (product.modules.qbs.toolchain == 'mingw') - fileName = fileName.substr(0, fileName.length - 4) - else - fileName = fileName.substr(3, fileName.length - 6) + fileName = Gcc.fileNameToLibName (fileName, product.module.dynamicLibraryPrefix) dynamicLibrariesI.push(fileName) } @@ -237,7 +231,7 @@ CppModule { fileName = inputs.framework[i].fileName; frameworkPaths.push(FileInfo.path(fileName)); fileName = FileInfo.fileName(fileName); - fileName = fileName.substr(3, fileName.length - 6); + fileName = Gcc.fileNameToLibName (fileName, product.module.dynamicLibraryPrefix) frameworksI.push(fileName); } diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js index 4de993e..4bdcf92 100644 --- a/share/qbs/modules/cpp/gcc.js +++ b/share/qbs/modules/cpp/gcc.js @@ -59,3 +59,9 @@ function describe(cmd, input, output) { cmd.description += FileInfo.fileName(input); } + +function fileNameToLibName(fn, prefix) +{ + // Remove the "lib" (or whatever) from the start and the ".so" (or ".dylib", etc.) from the end + return fn.slice (prefix.length, fn.lastIndexOf(".")) +} \ No newline at end of file diff --git a/share/qbs/modules/cpp/mac-gcc.qbs b/share/qbs/modules/cpp/mac-gcc.qbs index 63cc572..79ea4e2 100644 --- a/share/qbs/modules/cpp/mac-gcc.qbs +++ b/share/qbs/modules/cpp/mac-gcc.qbs @@ -4,6 +4,7 @@ UnixGCC { condition: qbs.hostOS === 'mac' && qbs.targetOS === 'mac' && qbs.toolchain === 'gcc' compilerDefines: ["__GNUC__", "__APPLE__"] + dynamicLibrarySuffix: ".dylib" Rule { multiplex: true -- 1.7.11.5