summaryrefslogtreecommitdiff
path: root/rules/CC/EXPRESSIONS
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2024-05-28 12:50:25 +0200
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2024-06-03 16:56:47 +0200
commit20e8433b1b4661c9dd1bd02f6ba17d35763da2fb (patch)
tree93ef1611736d3a8e971a562b808156986795914c /rules/CC/EXPRESSIONS
parent7a41812c3acb2b39b5f59a7db00bf24791c22537 (diff)
downloadrules-cc-20e8433b1b4661c9dd1bd02f6ba17d35763da2fb.tar.gz
debug rule: Fix staging of headers
For libraries the headers of private dependencies were wrongly skipped from staging. For binaries, no headers were passed at all in the provides map. To fix these issues, an additional field is added in the provides map to ensure we collect, and then properly stage, all needed headers for both libraries and binaries.
Diffstat (limited to 'rules/CC/EXPRESSIONS')
-rw-r--r--rules/CC/EXPRESSIONS135
1 files changed, 119 insertions, 16 deletions
diff --git a/rules/CC/EXPRESSIONS b/rules/CC/EXPRESSIONS
index f2259b6..0e1e4b9 100644
--- a/rules/CC/EXPRESSIONS
+++ b/rules/CC/EXPRESSIONS
@@ -212,11 +212,13 @@
}
}
}
-, "debug-srcs":
- { "doc": ["Collect debug dependencies (sources) from given target_fields"]
- , "vars": ["deps-fieldnames", "deps-transition"]
+, "debug-deps":
+ { "doc":
+ ["Collect debug dependencies (sources/headers) from given target_fields"]
+ , "vars": ["deps-provider", "deps-fieldnames", "deps-transition"]
, "vars_doc":
- { "deps-fieldnames":
+ { "deps-provider": ["Name of provider to use (debug-srcs/debug-hdrs)."]
+ , "deps-fieldnames":
["List of target_field names to collect dependencies from."]
, "deps-transition":
["The optional configuration transition for the targets."]
@@ -235,7 +237,7 @@
, "$1":
{ "type": "let*"
, "bindings":
- [ ["provider", "debug-srcs"]
+ [ ["provider", {"type": "var", "name": "deps-provider"}]
, ["transition", {"type": "var", "name": "deps-transition"}]
, ["default", {"type": "empty_map"}]
]
@@ -1193,7 +1195,7 @@
, "cflags-files-deps": "cflags-files-deps"
, "ldflags-files-deps": "ldflags-files-deps"
, "lib artifact": "lib artifact"
- , "debug-srcs": "debug-srcs"
+ , "debug-deps": "debug-deps"
}
, "expression":
{ "type": "let*"
@@ -1245,8 +1247,29 @@
, "then":
{ "type": "map_union"
, "$1":
- [ {"type": "CALL_EXPRESSION", "name": "debug-srcs"}
+ [ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-srcs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
, {"type": "var", "name": "srcs"}
+ , {"type": "var", "name": "private-hdrs"}
+ , {"type": "var", "name": "hdrs"}
+ ]
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
+ , [ "debug-hdrs"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "DEBUG"}
+ , "then":
+ { "type": "map_union"
+ , "$1":
+ [ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-hdrs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
+ , {"type": "var", "name": "hdrs"}
]
}
, "else": {"type": "empty_map"}
@@ -1293,6 +1316,7 @@
, "run-libs-args"
, "package"
, "debug-srcs"
+ , "debug-hdrs"
]
}
, { "type": "var"
@@ -1548,7 +1572,7 @@
, "cflags-files-deps": "cflags-files-deps"
, "ldflags-files-deps": "ldflags-files-deps"
, "shared artifact": "shared artifact"
- , "debug-srcs": "debug-srcs"
+ , "debug-deps": "debug-deps"
}
, "expression":
{ "type": "let*"
@@ -1595,8 +1619,29 @@
, "then":
{ "type": "map_union"
, "$1":
- [ {"type": "CALL_EXPRESSION", "name": "debug-srcs"}
+ [ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-srcs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
, {"type": "var", "name": "srcs"}
+ , {"type": "var", "name": "private-hdrs"}
+ , {"type": "var", "name": "hdrs"}
+ ]
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
+ , [ "debug-hdrs"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "DEBUG"}
+ , "then":
+ { "type": "map_union"
+ , "$1":
+ [ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-hdrs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
+ , {"type": "var", "name": "hdrs"}
]
}
, "else": {"type": "empty_map"}
@@ -1683,6 +1728,7 @@
, "run-libs-args"
, "package"
, "debug-srcs"
+ , "debug-hdrs"
]
}
, { "type": "var"
@@ -1828,7 +1874,7 @@
, "cflags-files-deps": "cflags-files-deps"
, "ldflags-files-deps": "ldflags-files-deps"
, "object artifacts": "object artifacts"
- , "debug-srcs": "debug-srcs"
+ , "debug-deps": "debug-deps"
}
, "expression":
{ "type": "let*"
@@ -1880,8 +1926,29 @@
, "then":
{ "type": "map_union"
, "$1":
- [ {"type": "CALL_EXPRESSION", "name": "debug-srcs"}
+ [ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-srcs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
, {"type": "var", "name": "srcs"}
+ , {"type": "var", "name": "private-hdrs"}
+ , {"type": "var", "name": "hdrs"}
+ ]
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
+ , [ "debug-hdrs"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "DEBUG"}
+ , "then":
+ { "type": "map_union"
+ , "$1":
+ [ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-hdrs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
+ , {"type": "var", "name": "hdrs"}
]
}
, "else": {"type": "empty_map"}
@@ -1928,6 +1995,7 @@
, "run-libs-args"
, "package"
, "debug-srcs"
+ , "debug-hdrs"
]
}
, { "type": "var"
@@ -2152,7 +2220,7 @@
, "cflags-files-deps": "cflags-files-deps"
, "ldflags-files-deps": "ldflags-files-deps"
, "binary": "bin artifact"
- , "debug-srcs": "debug-srcs"
+ , "debug-deps": "debug-deps"
}
, "expression":
{ "type": "let*"
@@ -2196,19 +2264,36 @@
, "then":
{ "type": "map_union"
, "$1":
- [ {"type": "CALL_EXPRESSION", "name": "debug-srcs"}
+ [ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-srcs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
, {"type": "var", "name": "srcs"}
+ , {"type": "var", "name": "private-hdrs"}
]
}
, "else": {"type": "empty_map"}
}
]
+ , [ "debug-hdrs"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "DEBUG"}
+ , "then":
+ { "type": "let*"
+ , "bindings": [["deps-provider", "debug-hdrs"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "debug-deps"}
+ }
+ , "else": {"type": "empty_map"}
+ }
+ ]
]
, "body":
{ "type": "RESULT"
, "artifacts": {"type": "CALL_EXPRESSION", "name": "binary"}
, "provides":
- {"type": "env", "vars": ["run-libs", "package", "debug-srcs"]}
+ { "type": "env"
+ , "vars": ["run-libs", "package", "debug-srcs", "debug-hdrs"]
+ }
}
}
}
@@ -2277,6 +2362,18 @@
}
}
]
+ , [ "debug-hdrs"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "skip-debug-stage"}
+ , "then": {"type": "empty_map"}
+ , "else":
+ { "type": "DEP_PROVIDES"
+ , "dep": {"type": "var", "name": "target"}
+ , "provider": "debug-hdrs"
+ , "default": {"type": "empty_map"}
+ }
+ }
+ ]
]
, "body":
{ "type": "if"
@@ -2432,7 +2529,13 @@
}
, { "type": "to_subdir"
, "subdir": "include"
- , "$1": {"type": "var", "name": "headers"}
+ , "$1":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "headers"}
+ , {"type": "var", "name": "debug-hdrs"}
+ ]
+ }
}
, { "type": "to_subdir"
, "subdir": "lib"
@@ -2445,7 +2548,7 @@
, "$1": {"type": "var", "name": "pkg-config"}
}
, { "type": "to_subdir"
- , "subdir": "debug-src"
+ , "subdir": "work"
, "$1": {"type": "var", "name": "debug-srcs"}
}
]