diff options
-rw-r--r-- | CC/EXPRESSIONS | 137 | ||||
-rw-r--r-- | CC/RULES | 1 | ||||
-rw-r--r-- | CC/test/RULES | 1 |
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" @@ -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"}] |