diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2021-05-29 16:33:13 +0200 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2021-06-03 09:09:28 +0000 |
commit | a98006288795848c91bddcecf72d654fc92b4330 (patch) | |
tree | b117ddb655d4641faab90bd816bd4386cd7a7261 /share | |
parent | 2f8a1b03cb047d95b74aab4301f78eaf7cbdee12 (diff) |
Avoid copy&pasting code in gcc.js/darwin.js
Copy&paste leaded to 2 bugs in separating debug info, thus it makes
sense to avoid code duplication.
Change-Id: I031b9b7da937d35014f2c1c0a804ca13111dad12
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'share')
-rw-r--r-- | share/qbs/modules/cpp/darwin.js | 21 | ||||
-rw-r--r-- | share/qbs/modules/cpp/gcc.js | 96 |
2 files changed, 61 insertions, 56 deletions
diff --git a/share/qbs/modules/cpp/darwin.js b/share/qbs/modules/cpp/darwin.js index 98497a050..e4f740dbe 100644 --- a/share/qbs/modules/cpp/darwin.js +++ b/share/qbs/modules/cpp/darwin.js @@ -172,25 +172,8 @@ function prepareLipo(project, product, inputs, outputs, input, output) { commands.push(cmd); } - var debugInfo = outputs.debuginfo_app || outputs.debuginfo_dll - || outputs.debuginfo_loadablemodule; - if (debugInfo) { - var dsymPath = debugInfo[0].filePath; - if (outputs.debuginfo_bundle && outputs.debuginfo_bundle[0]) - dsymPath = outputs.debuginfo_bundle[0].filePath; - var flags = ModUtils.moduleProperty(product, "dsymutilFlags") || []; - var files = outputs.primary.map(function (f) { return f.filePath; }); - cmd = new Command(ModUtils.moduleProperty(product, "dsymutilPath"), flags.concat([ - "-o", dsymPath - ]).concat(files)); - cmd.description = "generating dSYM for " + product.name; - commands.push(cmd); - - // strip debug info - cmd = new Command(ModUtils.moduleProperty(product, "stripPath"), ["-S"].concat(files)); - cmd.silent = true; - commands.push(cmd); - } + commands = commands.concat( + Gcc.separateDebugInfoCommandsDarwin(product, outputs, outputs.primary)); if (outputs.dynamiclibrary_symbols) Array.prototype.push.apply(commands, Gcc.createSymbolCheckingCommands(product, outputs)); diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js index 010878d18..0df0b14cc 100644 --- a/share/qbs/modules/cpp/gcc.js +++ b/share/qbs/modules/cpp/gcc.js @@ -1228,6 +1228,59 @@ function createSymbolCheckingCommands(product, outputs) { return commands; } +function separateDebugInfoCommands(product, outputs, primaryOutput) { + var commands = []; + + var debugInfo = outputs.debuginfo_app || outputs.debuginfo_dll + || outputs.debuginfo_loadablemodule; + + if (debugInfo) { + var objcopy = product.cpp.objcopyPath; + + var cmd = new Command(objcopy, ["--only-keep-debug", primaryOutput.filePath, + debugInfo[0].filePath]); + cmd.silent = true; + commands.push(cmd); + + cmd = new Command(objcopy, ["--strip-debug", primaryOutput.filePath]); + cmd.silent = true; + commands.push(cmd); + + cmd = new Command(objcopy, ["--add-gnu-debuglink=" + debugInfo[0].filePath, + primaryOutput.filePath]); + cmd.silent = true; + commands.push(cmd); + } + + return commands; +} + +function separateDebugInfoCommandsDarwin(product, outputs, primaryOutputs) { + var commands = []; + + var debugInfo = outputs.debuginfo_app || outputs.debuginfo_dll + || outputs.debuginfo_loadablemodule; + if (debugInfo) { + var dsymPath = debugInfo[0].filePath; + if (outputs.debuginfo_bundle && outputs.debuginfo_bundle[0]) + dsymPath = outputs.debuginfo_bundle[0].filePath; + + var flags = product.cpp.dsymutilFlags || []; + var files = primaryOutputs.map(function (f) { return f.filePath; }); + var cmd = new Command(product.cpp.dsymutilPath, + flags.concat(["-o", dsymPath].concat(files))); + cmd.description = "generating dSYM for " + product.name; + commands.push(cmd); + + // strip debug info + cmd = new Command(product.cpp.stripPath, ["-S"].concat(files)); + cmd.silent = true; + commands.push(cmd); + } + + return commands; +} + function prepareLinker(project, product, inputs, outputs, input, output) { var i, primaryOutput, cmd, commands = []; @@ -1274,44 +1327,13 @@ function prepareLinker(project, product, inputs, outputs, input, output) { setResponseFileThreshold(cmd, product); commands.push(cmd); - var debugInfo = outputs.debuginfo_app || outputs.debuginfo_dll - || outputs.debuginfo_loadablemodule; - if (debugInfo) { - if (product.qbs.targetOS.contains("darwin")) { - if (!product.aggregate) { - var dsymPath = debugInfo[0].filePath; - if (outputs.debuginfo_bundle && outputs.debuginfo_bundle[0]) - dsymPath = outputs.debuginfo_bundle[0].filePath; - var flags = product.cpp.dsymutilFlags || []; - cmd = new Command(product.cpp.dsymutilPath, flags.concat([ - "-o", dsymPath, primaryOutput.filePath - ])); - cmd.description = "generating dSYM for " + product.name; - commands.push(cmd); - - // strip debug info - cmd = new Command(product.cpp.stripPath, - ["-S", primaryOutput.filePath]); - cmd.silent = true; - commands.push(cmd); - } - } else { - var objcopy = product.cpp.objcopyPath; - - cmd = new Command(objcopy, ["--only-keep-debug", primaryOutput.filePath, - debugInfo[0].filePath]); - cmd.silent = true; - commands.push(cmd); - - cmd = new Command(objcopy, ["--strip-debug", primaryOutput.filePath]); - cmd.silent = true; - commands.push(cmd); - - cmd = new Command(objcopy, ["--add-gnu-debuglink=" + debugInfo[0].filePath, - primaryOutput.filePath]); - cmd.silent = true; - commands.push(cmd); + if (product.qbs.targetOS.contains("darwin")) { + if (!product.aggregate) { + commands = commands.concat(separateDebugInfoCommandsDarwin( + product, outputs, [primaryOutput])); } + } else { + commands = commands.concat(separateDebugInfoCommands(product, outputs, primaryOutput)); } if (outputs.dynamiclibrary) { |