diff options
-rw-r--r-- | CC/EXPRESSIONS | 49 | ||||
-rw-r--r-- | CC/RULES | 14 | ||||
-rw-r--r-- | CC/test/RULES | 14 |
3 files changed, 29 insertions, 48 deletions
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": []} ] } @@ -406,6 +406,7 @@ { "artifacts": ["./", "..", "field_artifacts"] , "compile-deps": "compile-deps" , "link-deps": "link-deps" + , "link-args-deps": "link-args-deps" , "objects": "objects" , "compiler": "compiler" , "flags": "flags" @@ -500,18 +501,7 @@ { "type": "++" , "$1": [ {"type": "keys", "$1": {"type": "var", "name": "objects"}} - , { "type": "++" - , "$1": - { "type": "foreach" - , "var": "dep" - , "range": {"type": "FIELD", "name": "deps"} - , "body": - { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "dep"} - , "provider": "link-args" - } - } - } + , {"type": "CALL_EXPRESSION", "name": "link-args-deps"} , {"type": "FIELD", "name": "link external"} ] } diff --git a/CC/test/RULES b/CC/test/RULES index 3f8e236..93d7706 100644 --- a/CC/test/RULES +++ b/CC/test/RULES @@ -61,6 +61,7 @@ , "runfiles_list": ["./", "../..", "field_runfiles_list"] , "compile-deps": ["./", "..", "compile-deps"] , "link-deps": ["./", "..", "link-deps"] + , "link-args-deps": ["./", "..", "link-args-deps"] , "objects": ["./", "..", "objects"] , "default-CXX": ["./", "..", "default-CXX"] , "default-CXXFLAGS": ["./", "..", "default-CXXFLAGS"] @@ -152,18 +153,7 @@ { "type": "++" , "$1": [ {"type": "keys", "$1": {"type": "var", "name": "objects"}} - , { "type": "++" - , "$1": - { "type": "foreach" - , "var": "dep" - , "range": {"type": "FIELD", "name": "deps"} - , "body": - { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "dep"} - , "provider": "link-args" - } - } - } + , {"type": "CALL_EXPRESSION", "name": "link-args-deps"} ] } } |