aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2021-06-29 17:42:02 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2021-10-05 19:17:04 +0000
commit52a1842c3920440695ff8ffb548bb17ceb15231d (patch)
treed63a919016f3997f5440fde6155027c485676eaa
parent042753fb25be4080258601e196eb2496e62409b2 (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.qbs29
-rw-r--r--share/qbs/modules/cpp/cpp.js20
-rw-r--r--share/qbs/modules/cpp/windows-msvc-base.qbs36
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),