diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2021-06-29 17:42:02 +0300 |
---|---|---|
committer | Denis Shienkov <denis.shienkov@gmail.com> | 2021-10-05 19:17:04 +0000 |
commit | 52a1842c3920440695ff8ffb548bb17ceb15231d (patch) | |
tree | d63a919016f3997f5440fde6155027c485676eaa | |
parent | 042753fb25be4080258601e196eb2496e62409b2 (diff) |
Use more common functions from cpp.js for GCC and MSVC toolchains
It makes sense to use the {assembler|compiler}OutputTags() and
the {assembler|compiler}OutputArtifacts() functions also in GCC
and MSVC toolchains, that simplifies and unifies a code.
Change-Id: Ie8cfd185c30322139fb8871b75ea69a888c1f471
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
-rw-r--r-- | share/qbs/modules/cpp/GenericGCC.qbs | 29 | ||||
-rw-r--r-- | share/qbs/modules/cpp/cpp.js | 20 | ||||
-rw-r--r-- | share/qbs/modules/cpp/windows-msvc-base.qbs | 36 |
3 files changed, 22 insertions, 63 deletions
diff --git a/share/qbs/modules/cpp/GenericGCC.qbs b/share/qbs/modules/cpp/GenericGCC.qbs index 33f66e278..5060af2d6 100644 --- a/share/qbs/modules/cpp/GenericGCC.qbs +++ b/share/qbs/modules/cpp/GenericGCC.qbs @@ -611,37 +611,16 @@ CppModule { inputs: ["cpp", "c", "objcpp", "objc", "asm_cpp"] auxiliaryInputs: ["hpp"] explicitlyDependsOn: ["c_pch", "cpp_pch", "objc_pch", "objcpp_pch"] - - outputFileTags: ["obj", "c_obj", "cpp_obj", "intermediate_obj"] - outputArtifacts: { - var tags; - if (input.fileTags.contains("cpp_intermediate_object")) - tags = ["intermediate_obj"]; - else - tags = ["obj"]; - if (inputs.c || inputs.objc) - tags.push("c_obj"); - if (inputs.cpp || inputs.objcpp) - tags.push("cpp_obj"); - return [{ - fileTags: tags, - filePath: FileInfo.joinPaths(Utilities.getHash(input.baseDir), - input.fileName + input.cpp.objectSuffix) - }]; - } - + outputFileTags: Cpp.compilerOutputTags(false).concat(["c_obj", "cpp_obj"]) + outputArtifacts: Cpp.compilerOutputArtifacts(input, inputs) prepare: Gcc.prepareCompiler.apply(Gcc, arguments) } Rule { name: "assembler" inputs: ["asm"] - - Artifact { - fileTags: ["obj"] - filePath: FileInfo.joinPaths(Utilities.getHash(input.baseDir), input.fileName + input.cpp.objectSuffix) - } - + outputFileTags: Cpp.assemblerOutputTags(false) + outputArtifacts: Cpp.assemblerOutputArtifacts(input) prepare: Gcc.prepareAssembler.apply(Gcc, arguments) } diff --git a/share/qbs/modules/cpp/cpp.js b/share/qbs/modules/cpp/cpp.js index c8120738b..315b902ee 100644 --- a/share/qbs/modules/cpp/cpp.js +++ b/share/qbs/modules/cpp/cpp.js @@ -78,7 +78,7 @@ function assemblerOutputTags(needsListingFiles) { } function compilerOutputTags(needsListingFiles) { - var tags = ["obj"]; + var tags = ["obj", "intermediate_obj"]; if (needsListingFiles) tags.push("lst"); return tags; @@ -127,13 +127,21 @@ function assemblerOutputArtifacts(input) { return artifacts; } -function compilerOutputArtifacts(input) { - var artifacts = []; - artifacts.push({ - fileTags: ["obj"], +function compilerOutputArtifacts(input, inputs) { + var objTags = input.fileTags.contains("cpp_intermediate_object") + ? ["intermediate_obj"] + : ["obj"]; + if (inputs) { + if (inputs.c || inputs.objc) + objTags.push("c_obj"); + if (inputs.cpp || inputs.objcpp) + objTags.push("cpp_obj"); + } + var artifacts = [{ + fileTags: objTags, filePath: FileInfo.joinPaths(Utilities.getHash(input.baseDir), input.fileName + input.cpp.objectSuffix) - }); + }]; if (input.cpp.generateCompilerListingFiles) { artifacts.push({ fileTags: ["lst"], diff --git a/share/qbs/modules/cpp/windows-msvc-base.qbs b/share/qbs/modules/cpp/windows-msvc-base.qbs index df5211152..d188d53f3 100644 --- a/share/qbs/modules/cpp/windows-msvc-base.qbs +++ b/share/qbs/modules/cpp/windows-msvc-base.qbs @@ -147,33 +147,8 @@ CppModule { inputs: ["cpp", "c"] auxiliaryInputs: ["hpp"] explicitlyDependsOn: ["c_pch", "cpp_pch"] - - outputFileTags: { - var tags = ["obj", "intermediate_obj"]; - if (generateCompilerListingFiles) - tags.push("lst"); - return tags; - } - outputArtifacts: { - var tags = input.fileTags.contains("cpp_intermediate_object") - ? ["intermediate_obj"] - : ["obj"]; - var artifacts = []; - artifacts.push({ - fileTags: tags, - filePath: FileInfo.joinPaths(Utilities.getHash(input.baseDir), - input.fileName + input.cpp.objectSuffix) - }); - if (input.cpp.generateCompilerListingFiles) { - artifacts.push({ - fileTags: ["lst"], - filePath: FileInfo.joinPaths(Utilities.getHash(input.baseDir), - input.fileName + input.cpp.compilerListingSuffix) - }); - } - return artifacts; - } - + outputFileTags: Cpp.compilerOutputTags(generateCompilerListingFiles) + outputArtifacts: Cpp.compilerOutputArtifacts(input) prepare: MSVC.prepareCompiler.apply(MSVC, arguments) } @@ -342,11 +317,8 @@ CppModule { Rule { inputs: ["asm"] - Artifact { - filePath: FileInfo.joinPaths(Utilities.getHash(input.baseDir), - input.completeBaseName + input.cpp.objectSuffix) - fileTags: ["obj"] - } + outputFileTags: Cpp.assemblerOutputTags(false) + outputArtifacts: Cpp.assemblerOutputArtifacts(input) prepare: { var args = ["/nologo", "/c", "/Fo" + FileInfo.toWindowsSeparators(output.filePath), |