summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CC/EXPRESSIONS137
-rw-r--r--CC/RULES1
-rw-r--r--CC/test/RULES1
3 files changed, 73 insertions, 66 deletions
diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS
index 48fb4b3..efaf577 100644
--- a/CC/EXPRESSIONS
+++ b/CC/EXPRESSIONS
@@ -128,86 +128,90 @@
}
}
, "compile-deps":
- { "expression":
+ { "doc": ["Collect compile dependencies (headers) from given target_fields"]
+ , "vars": ["deps-fieldnames"]
+ , "vars_doc":
+ { "deps-fieldnames":
+ ["List of target_field names to collect dependencies from."]
+ }
+ , "expression":
{ "type": "disjoint_map_union"
, "$1":
{ "type": "++"
, "$1":
- [ { "type": "foreach"
- , "var": "dep"
- , "range": {"type": "FIELD", "name": "deps"}
- , "body":
- { "type": "DEP_PROVIDES"
- , "dep": {"type": "var", "name": "dep"}
- , "provider": "compile-deps"
- , "default": {"type": "empty_map"}
- }
- }
- , { "type": "foreach"
- , "var": "dep"
- , "range": {"type": "FIELD", "name": "deps"}
- , "body":
- {"type": "DEP_RUNFILES", "dep": {"type": "var", "name": "dep"}}
- }
- , { "type": "foreach"
- , "var": "dep"
- , "range": {"type": "FIELD", "name": "proto-deps"}
- , "body":
- { "type": "DEP_PROVIDES"
- , "dep": {"type": "var", "name": "dep"}
- , "provider": "compile-deps"
- , "default": {"type": "empty_map"}
- }
- }
- , { "type": "foreach"
- , "var": "dep"
- , "range": {"type": "FIELD", "name": "proto-deps"}
- , "body":
- {"type": "DEP_RUNFILES", "dep": {"type": "var", "name": "dep"}}
+ { "type": "foreach"
+ , "var": "fieldname"
+ , "range": {"type": "var", "name": "deps-fieldnames"}
+ , "body":
+ { "type": "++"
+ , "$1":
+ [ { "type": "foreach"
+ , "var": "target"
+ , "range":
+ {"type": "FIELD", "name": {"type": "var", "name": "fieldname"}}
+ , "body":
+ { "type": "DEP_PROVIDES"
+ , "dep": {"type": "var", "name": "target"}
+ , "provider": "compile-deps"
+ , "default": {"type": "empty_map"}
+ }
+ }
+ , { "type": "foreach"
+ , "var": "target"
+ , "range":
+ {"type": "FIELD", "name": {"type": "var", "name": "fieldname"}}
+ , "body":
+ { "type": "DEP_RUNFILES"
+ , "dep": {"type": "var", "name": "target"}
+ }
+ }
+ ]
}
- ]
+ }
}
}
}
, "link-deps":
- { "expression":
+ { "doc": ["Collect link dependencies (libraries) from given target_fields"]
+ , "vars": ["deps-fieldnames"]
+ , "vars_doc":
+ { "deps-fieldnames":
+ ["List of target_field names to collect dependencies from."]
+ }
+ , "expression":
{ "type": "disjoint_map_union"
, "$1":
{ "type": "++"
, "$1":
- [ { "type": "foreach"
- , "var": "dep"
- , "range": {"type": "FIELD", "name": "deps"}
- , "body":
- { "type": "DEP_PROVIDES"
- , "dep": {"type": "var", "name": "dep"}
- , "provider": "link-deps"
- , "default": {"type": "empty_map"}
- }
- }
- , { "type": "foreach"
- , "var": "dep"
- , "range": {"type": "FIELD", "name": "deps"}
- , "body":
- {"type": "DEP_ARTIFACTS", "dep": {"type": "var", "name": "dep"}}
- }
- , { "type": "foreach"
- , "var": "dep"
- , "range": {"type": "FIELD", "name": "proto-deps"}
- , "body":
- { "type": "DEP_PROVIDES"
- , "dep": {"type": "var", "name": "dep"}
- , "provider": "link-deps"
- , "default": {"type": "empty_map"}
- }
- }
- , { "type": "foreach"
- , "var": "dep"
- , "range": {"type": "FIELD", "name": "proto-deps"}
- , "body":
- {"type": "DEP_ARTIFACTS", "dep": {"type": "var", "name": "dep"}}
+ { "type": "foreach"
+ , "var": "fieldname"
+ , "range": {"type": "var", "name": "deps-fieldnames"}
+ , "body":
+ { "type": "++"
+ , "$1":
+ [ { "type": "foreach"
+ , "var": "target"
+ , "range":
+ {"type": "FIELD", "name": {"type": "var", "name": "fieldname"}}
+ , "body":
+ { "type": "DEP_PROVIDES"
+ , "dep": {"type": "var", "name": "target"}
+ , "provider": "link-deps"
+ , "default": {"type": "empty_map"}
+ }
+ }
+ , { "type": "foreach"
+ , "var": "target"
+ , "range":
+ {"type": "FIELD", "name": {"type": "var", "name": "fieldname"}}
+ , "body":
+ { "type": "DEP_ARTIFACTS"
+ , "dep": {"type": "var", "name": "target"}
+ }
+ }
+ ]
}
- ]
+ }
}
}
}
@@ -408,6 +412,7 @@
}
}
]
+ , ["deps-fieldnames", ["deps", "proto-deps"]]
, ["compile-deps", {"type": "CALL_EXPRESSION", "name": "compile-deps"}]
, ["link-deps", {"type": "CALL_EXPRESSION", "name": "link-deps"}]
, [ "local hdrs"
diff --git a/CC/RULES b/CC/RULES
index cfe1ae3..d1925e6 100644
--- a/CC/RULES
+++ b/CC/RULES
@@ -474,6 +474,7 @@
}
}
]
+ , ["deps-fieldnames", ["deps", "proto-deps"]]
, ["compile-deps", {"type": "CALL_EXPRESSION", "name": "compile-deps"}]
, ["link-deps", {"type": "CALL_EXPRESSION", "name": "link-deps"}]
, ["objects", {"type": "CALL_EXPRESSION", "name": "objects"}]
diff --git a/CC/test/RULES b/CC/test/RULES
index 50d0dce..af20510 100644
--- a/CC/test/RULES
+++ b/CC/test/RULES
@@ -121,6 +121,7 @@
}
}
]
+ , ["deps-fieldnames", ["deps", "proto-deps"]]
, ["compile-deps", {"type": "CALL_EXPRESSION", "name": "compile-deps"}]
, ["link-deps", {"type": "CALL_EXPRESSION", "name": "link-deps"}]
, ["objects", {"type": "CALL_EXPRESSION", "name": "objects"}]