summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CC/EXPRESSIONS49
-rw-r--r--CC/RULES14
-rw-r--r--CC/test/RULES14
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": []}
]
}
diff --git a/CC/RULES b/CC/RULES
index 0c87721..cb13f98 100644
--- a/CC/RULES
+++ b/CC/RULES
@@ -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"}
]
}
}