diff options
Diffstat (limited to 'rules/CC')
-rw-r--r-- | rules/CC/EXPRESSIONS | 82 | ||||
-rw-r--r-- | rules/CC/RULES | 7 |
2 files changed, 75 insertions, 14 deletions
diff --git a/rules/CC/EXPRESSIONS b/rules/CC/EXPRESSIONS index 437758e4..f3188c0d 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"}] ] @@ -1106,7 +1108,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*" @@ -1151,8 +1153,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"} @@ -1197,6 +1220,7 @@ , "link-args" , "package" , "debug-srcs" + , "debug-hdrs" ] } , { "type": "var" @@ -1396,7 +1420,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*" @@ -1436,18 +1460,34 @@ , "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": ["package", "debug-srcs"]} + , "provides": + {"type": "env", "vars": ["package", "debug-srcs", "debug-hdrs"]} } } } @@ -1508,6 +1548,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" @@ -1650,7 +1702,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" @@ -1663,7 +1721,7 @@ , "$1": {"type": "var", "name": "pkg-config"} } , { "type": "to_subdir" - , "subdir": "debug-src" + , "subdir": "work" , "$1": {"type": "var", "name": "debug-srcs"} } ] diff --git a/rules/CC/RULES b/rules/CC/RULES index 4d906ff7..05653fad 100644 --- a/rules/CC/RULES +++ b/rules/CC/RULES @@ -462,7 +462,8 @@ [ "List of strings that have to be added to the command line for linking actions" , "in targets depending on this library" ] - , "debug-srcs": ["Map of all dependencies' sources needed for debugging."] + , "debug-srcs": ["Map of all sources needed for debugging."] + , "debug-hdrs": ["Map of all additional headers needed for debugging."] } , "anonymous": { "proto-deps": @@ -642,7 +643,9 @@ , "artifacts_doc": ["The final binary, staged to the given directory"] , "runfiles_doc": ["None"] , "provides_doc": - {"debug-srcs": ["Map of all dependencies' sources needed for debugging."]} + { "debug-srcs": ["Map of all sources needed for debugging."] + , "debug-hdrs": ["Map of all additional headers needed for debugging."] + } , "anonymous": { "private-proto-deps": { "target": "private-proto" |