From d2fa5912a44a30602e6a4b14cdb99402a4e72a42 Mon Sep 17 00:00:00 2001 From: Oliver Reiche Date: Wed, 27 Apr 2022 13:18:53 +0200 Subject: rules: Add "link-args-deps" expression ... for collecting link-args from dependencies. By consistently using this expression, we fix an issue with C++ binary and test, which both did not collect the linker arguments from their proto-deps. --- CC/EXPRESSIONS | 49 +++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 24 deletions(-) (limited to 'CC/EXPRESSIONS') diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS index 23c28d7..6fa222b 100644 --- a/CC/EXPRESSIONS +++ b/CC/EXPRESSIONS @@ -203,6 +203,29 @@ } } } +, "link-args-deps": + { "doc": ["Collect linker arguments from given target_fields"] + , "vars": ["deps-fieldnames", "transition"] + , "vars_doc": + { "deps-fieldnames": + ["List of target_field names to collect arguments from."] + , "transition": ["The optional configuration transition for the targets."] + } + , "imports": {"list_provider": ["./", "..", "field_list_provider"]} + , "expression": + { "type": "++" + , "$1": + { "type": "foreach" + , "var": "fieldname" + , "range": {"type": "var", "name": "deps-fieldnames"} + , "body": + { "type": "let*" + , "bindings": [["provider", "link-args"]] + , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"} + } + } + } + } , "objects": { "vars": ["CXX", "CXXFLAGS", "ENV", "srcs", "compile-deps", "local hdrs"] , "expression": @@ -361,6 +384,7 @@ { "artifacts": ["./", "..", "field_artifacts"] , "compile-deps": "compile-deps" , "link-deps": "link-deps" + , "link-args-deps": "link-args-deps" , "compiler": "compiler" , "flags": "flags" , "objects": "objects" @@ -453,30 +477,7 @@ { "type": "++" , "$1": [ {"type": "keys", "$1": {"type": "var", "name": "lib"}} - , { "type": "++" - , "$1": - { "type": "foreach" - , "var": "dep" - , "range": {"type": "FIELD", "name": "deps"} - , "body": - { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "dep"} - , "provider": "link-args" - } - } - } - , { "type": "++" - , "$1": - { "type": "foreach" - , "var": "dep" - , "range": {"type": "FIELD", "name": "proto-deps"} - , "body": - { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "dep"} - , "provider": "link-args" - } - } - } + , {"type": "CALL_EXPRESSION", "name": "link-args-deps"} , {"type": "var", "name": "link external", "default": []} ] } -- cgit v1.2.3