summaryrefslogtreecommitdiff
path: root/rules/CC/EXPRESSIONS
diff options
context:
space:
mode:
Diffstat (limited to 'rules/CC/EXPRESSIONS')
-rw-r--r--rules/CC/EXPRESSIONS176
1 files changed, 138 insertions, 38 deletions
diff --git a/rules/CC/EXPRESSIONS b/rules/CC/EXPRESSIONS
index e97ed76..b718f76 100644
--- a/rules/CC/EXPRESSIONS
+++ b/rules/CC/EXPRESSIONS
@@ -6,9 +6,7 @@
, "bindings":
[ ["fieldname", "defaults"]
, ["provider", "CC"]
- , [ "transition"
- , {"type": "var", "name": "defaults-transition", "default": null}
- ]
+ , ["transition", {"type": "var", "name": "defaults-transition"}]
]
, "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
@@ -21,9 +19,7 @@
, "bindings":
[ ["fieldname", "defaults"]
, ["provider", "CXX"]
- , [ "transition"
- , {"type": "var", "name": "defaults-transition", "default": null}
- ]
+ , ["transition", {"type": "var", "name": "defaults-transition"}]
]
, "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
@@ -36,9 +32,7 @@
, "bindings":
[ ["fieldname", "defaults"]
, ["provider", "AR"]
- , [ "transition"
- , {"type": "var", "name": "defaults-transition", "default": null}
- ]
+ , ["transition", {"type": "var", "name": "defaults-transition"}]
]
, "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
@@ -51,9 +45,7 @@
, "bindings":
[ ["fieldname", "defaults"]
, ["provider", "CFLAGS"]
- , [ "transition"
- , {"type": "var", "name": "defaults-transition", "default": null}
- ]
+ , ["transition", {"type": "var", "name": "defaults-transition"}]
]
, "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
@@ -66,9 +58,7 @@
, "bindings":
[ ["fieldname", "defaults"]
, ["provider", "CXXFLAGS"]
- , [ "transition"
- , {"type": "var", "name": "defaults-transition", "default": null}
- ]
+ , ["transition", {"type": "var", "name": "defaults-transition"}]
]
, "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
@@ -81,9 +71,7 @@
, "bindings":
[ ["fieldname", "defaults"]
, ["provider", "LDFLAGS"]
- , [ "transition"
- , {"type": "var", "name": "defaults-transition", "default": null}
- ]
+ , ["transition", {"type": "var", "name": "defaults-transition"}]
]
, "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
}
@@ -96,14 +84,25 @@
, "bindings":
[ ["fieldname", "defaults"]
, ["provider", "ENV"]
- , [ "transition"
- , {"type": "var", "name": "defaults-transition", "default": null}
- ]
+ , ["transition", {"type": "var", "name": "defaults-transition"}]
, ["default", {"type": "empty_map"}]
]
, "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
}
}
+, "default-PATH":
+ { "vars": ["defaults-transition"]
+ , "imports": {"list_provider": ["./", "..", "field_list_provider"]}
+ , "expression":
+ { "type": "let*"
+ , "bindings":
+ [ ["fieldname", "defaults"]
+ , ["provider", "PATH"]
+ , ["transition", {"type": "var", "name": "defaults-transition"}]
+ ]
+ , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
+ }
+ }
, "default-TOOLCHAIN":
{ "vars": ["defaults-transition"]
, "imports": {"map_provider": ["./", "..", "field_map_provider"]}
@@ -112,9 +111,7 @@
, "bindings":
[ ["fieldname", "defaults"]
, ["provider", "TOOLCHAIN"]
- , [ "transition"
- , {"type": "var", "name": "defaults-transition", "default": null}
- ]
+ , ["transition", {"type": "var", "name": "defaults-transition"}]
, ["default", {"type": "empty_map"}]
]
, "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
@@ -142,29 +139,39 @@
}
}
}
-, "defaults-base-provides":
- { "doc": ["Query list-provider from 'base' targets (last wins)"]
+, "defaults-base-provides-list":
+ { "doc": ["Query list of providers from 'base' targets"]
, "vars": ["provider", "default"]
, "vars_doc":
- { "provider": ["The name of the list-provider in the provides map."]
+ { "provider": ["The name of the provider in the provides map."]
, "default": ["The default if provider is missing (default: [])."]
}
, "imports": {"provider_list": ["./", "..", "field_provider_list"]}
, "expression":
{ "type": "let*"
, "bindings": [["fieldname", "base"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "provider_list"}
+ }
+ }
+, "defaults-base-provides":
+ { "doc": ["Query provider from 'base' targets (last wins)"]
+ , "vars": ["provider", "default"]
+ , "vars_doc":
+ { "provider": ["The name of the provider in the provides map."]
+ , "default": ["The default if provider is missing (default: [])."]
+ }
+ , "imports": {"base-provides-list": "defaults-base-provides-list"}
+ , "expression":
+ { "type": "foldl"
+ , "var": "next"
+ , "start": {"type": "var", "name": "default", "default": []}
+ , "accum_var": "curr"
+ , "range": {"type": "CALL_EXPRESSION", "name": "base-provides-list"}
, "body":
- { "type": "foldl"
- , "var": "next"
- , "start": {"type": "var", "name": "default", "default": []}
- , "accum_var": "curr"
- , "range": {"type": "CALL_EXPRESSION", "name": "provider_list"}
- , "body":
- { "type": "if"
- , "cond": {"type": "var", "name": "next"}
- , "then": {"type": "var", "name": "next"}
- , "else": {"type": "var", "name": "curr"}
- }
+ { "type": "if"
+ , "cond": {"type": "var", "name": "next"}
+ , "then": {"type": "var", "name": "next"}
+ , "else": {"type": "var", "name": "curr"}
}
}
}
@@ -900,6 +907,7 @@
, "objects": "objects"
, "default-AR": "default-AR"
, "default-ENV": "default-ENV"
+ , "default-PATH": "default-PATH"
, "default-TOOLCHAIN": "default-TOOLCHAIN"
, "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS"
}
@@ -957,6 +965,36 @@
]
}
]
+ , [ "ENV_PATH"
+ , { "type": "lookup"
+ , "map": {"type": "var", "name": "ENV"}
+ , "key": "PATH"
+ }
+ ]
+ , [ "ENV"
+ , { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "ENV"}
+ , { "type": "singleton_map"
+ , "key": "PATH"
+ , "value":
+ { "type": "join"
+ , "separator": ":"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ {"type": "CALL_EXPRESSION", "name": "default-PATH"}
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "ENV_PATH"}
+ , "then": [{"type": "var", "name": "ENV_PATH"}]
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ ]
, ["objects", {"type": "CALL_EXPRESSION", "name": "objects"}]
, [ "base name"
, { "type": "if"
@@ -1185,6 +1223,7 @@
, "flags": "flags"
, "objects": "objects"
, "default-ENV": "default-ENV"
+ , "default-PATH": "default-PATH"
, "default-LDFLAGS": "default-LDFLAGS"
, "default-TOOLCHAIN": "default-TOOLCHAIN"
, "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS"
@@ -1233,6 +1272,36 @@
]
}
]
+ , [ "ENV_PATH"
+ , { "type": "lookup"
+ , "map": {"type": "var", "name": "ENV"}
+ , "key": "PATH"
+ }
+ ]
+ , [ "ENV"
+ , { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "ENV"}
+ , { "type": "singleton_map"
+ , "key": "PATH"
+ , "value":
+ { "type": "join"
+ , "separator": ":"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ {"type": "CALL_EXPRESSION", "name": "default-PATH"}
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "ENV_PATH"}
+ , "then": [{"type": "var", "name": "ENV_PATH"}]
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ ]
, ["objects", {"type": "CALL_EXPRESSION", "name": "objects"}]
, [ "base name"
, { "type": "if"
@@ -1517,6 +1586,7 @@
, "flags": "flags"
, "objects": "objects"
, "default-ENV": "default-ENV"
+ , "default-PATH": "default-PATH"
, "default-LDFLAGS": "default-LDFLAGS"
, "default-TOOLCHAIN": "default-TOOLCHAIN"
, "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS"
@@ -1564,6 +1634,36 @@
]
}
]
+ , [ "ENV_PATH"
+ , { "type": "lookup"
+ , "map": {"type": "var", "name": "ENV"}
+ , "key": "PATH"
+ }
+ ]
+ , [ "ENV"
+ , { "type": "map_union"
+ , "$1":
+ [ {"type": "var", "name": "ENV"}
+ , { "type": "singleton_map"
+ , "key": "PATH"
+ , "value":
+ { "type": "join"
+ , "separator": ":"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ {"type": "CALL_EXPRESSION", "name": "default-PATH"}
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "ENV_PATH"}
+ , "then": [{"type": "var", "name": "ENV_PATH"}]
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ ]
, ["hdrs", {"type": "empty_map"}]
, ["objects", {"type": "CALL_EXPRESSION", "name": "objects"}]
, [ "link-args"