diff options
Diffstat (limited to 'share/qbs/modules/cpp')
-rw-r--r-- | share/qbs/modules/cpp/GenericGCC.qbs | 9 | ||||
-rw-r--r-- | share/qbs/modules/cpp/gcc.js | 7 | ||||
-rw-r--r-- | share/qbs/modules/cpp/msvc.js | 3 | ||||
-rw-r--r-- | share/qbs/modules/cpp/windows-msvc-base.qbs | 10 |
4 files changed, 27 insertions, 2 deletions
diff --git a/share/qbs/modules/cpp/GenericGCC.qbs b/share/qbs/modules/cpp/GenericGCC.qbs index 5ededc512..63d5db7b8 100644 --- a/share/qbs/modules/cpp/GenericGCC.qbs +++ b/share/qbs/modules/cpp/GenericGCC.qbs @@ -561,7 +561,7 @@ CppModule { inputsFromDependencies: ["dynamiclibrary_symbols", "dynamiclibrary_import", "staticlibrary"] outputFileTags: ["bundle.input", "application", "debuginfo_app","debuginfo_bundle", - "debuginfo_plist"] + "debuginfo_plist", "mem_map"] outputArtifacts: { var app = { filePath: FileInfo.joinPaths(product.destinationDirectory, @@ -575,6 +575,13 @@ CppModule { var artifacts = [app]; if (!product.aggregate) artifacts = artifacts.concat(Gcc.debugInfoArtifacts(product, undefined, "app")); + if (product.cpp.generateLinkerMapFile) { + artifacts.push({ + filePath: FileInfo.joinPaths(product.destinationDirectory, + product.targetName + ".map"), + fileTags: ["mem_map"] + }); + } return artifacts; } diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js index 0913b27d0..639191da6 100644 --- a/share/qbs/modules/cpp/gcc.js +++ b/share/qbs/modules/cpp/gcc.js @@ -514,6 +514,13 @@ function linkerFlags(project, product, inputs, outputs, primaryOutput, linkerPat if (importLibs) escapableLinkerFlags.push("--out-implib", importLibs[0].filePath); + if (outputs.application && product.cpp.generateLinkerMapFile) { + if (isDarwin) + escapableLinkerFlags.push("-map", outputs.mem_map[0].filePath); + else + escapableLinkerFlags.push("-Map=" + outputs.mem_map[0].filePath); + } + var escapedLinkerFlags = escapeLinkerFlags(product, inputs, escapableLinkerFlags); Array.prototype.push.apply(escapedLinkerFlags, args); var driverLinkerFlags = useCompilerDriver ? product.cpp.driverLinkerFlags : undefined; diff --git a/share/qbs/modules/cpp/msvc.js b/share/qbs/modules/cpp/msvc.js index 02facf30a..b67ab811f 100644 --- a/share/qbs/modules/cpp/msvc.js +++ b/share/qbs/modules/cpp/msvc.js @@ -470,6 +470,9 @@ function prepareLinker(project, product, inputs, outputs, input, output) { if (product.cpp.entryPoint) args.push("/ENTRY:" + product.cpp.entryPoint); + if (outputs.application && product.cpp.generateLinkerMapFile) + args.push("/MAP:" + outputs.mem_map[0].filePath); + args.push('/OUT:' + linkerOutputNativeFilePath) var libraryPaths = product.cpp.libraryPaths; if (libraryPaths) diff --git a/share/qbs/modules/cpp/windows-msvc-base.qbs b/share/qbs/modules/cpp/windows-msvc-base.qbs index ae105abe2..aa1c8256c 100644 --- a/share/qbs/modules/cpp/windows-msvc-base.qbs +++ b/share/qbs/modules/cpp/windows-msvc-base.qbs @@ -176,7 +176,7 @@ CppModule { inputs: ['obj', 'native.pe.manifest'] inputsFromDependencies: ['staticlibrary', 'dynamiclibrary_import', "debuginfo_app"] - outputFileTags: ["application", "debuginfo_app"] + outputFileTags: ["application", "debuginfo_app", "mem_map"] outputArtifacts: { var app = { fileTags: ["application"], @@ -192,6 +192,14 @@ CppModule { + product.cpp.debugInfoSuffix }); } + if (product.cpp.generateLinkerMapFile) { + artifacts.push({ + fileTags: ["mem_map"], + filePath: FileInfo.joinPaths( + product.destinationDirectory, + product.targetName + ".map") + }); + } return artifacts; } |