summaryrefslogtreecommitdiff
path: root/rules/transitions/EXPRESSIONS
diff options
context:
space:
mode:
Diffstat (limited to 'rules/transitions/EXPRESSIONS')
-rw-r--r--rules/transitions/EXPRESSIONS122
1 files changed, 122 insertions, 0 deletions
diff --git a/rules/transitions/EXPRESSIONS b/rules/transitions/EXPRESSIONS
new file mode 100644
index 0000000..d1ecefa
--- /dev/null
+++ b/rules/transitions/EXPRESSIONS
@@ -0,0 +1,122 @@
+{ "for host":
+ { "vars": ["ARCH", "HOST_ARCH", "TARGET_ARCH"]
+ , "expression":
+ { "type": "let*"
+ , "bindings":
+ [ [ "BUILD_ARCH"
+ , { "type": "var"
+ , "name": "TARGET_ARCH"
+ , "default": {"type": "var", "name": "ARCH"}
+ }
+ ]
+ , [ "TARGET_ARCH"
+ , { "type": "var"
+ , "name": "HOST_ARCH"
+ , "default": {"type": "var", "name": "ARCH"}
+ }
+ ]
+ ]
+ , "body": {"type": "env", "vars": ["BUILD_ARCH", "TARGET_ARCH"]}
+ }
+ }
+, "with fPIC":
+ { "doc":
+ [ "Transition that enables BUILD_POSITION_INDEPENDENT if config_field"
+ , "\"shared\" is not empty."
+ ]
+ , "var": ["BUILD_OBJECT_ONLY"]
+ , "expression":
+ { "type": "if"
+ , "cond":
+ { "type": "and"
+ , "$1":
+ [ {"type": "FIELD", "name": "shared"}
+ , {"type": "not", "$1": {"type": "var", "name": "BUILD_OBJECT_ONLY"}}
+ ]
+ }
+ , "then":
+ { "type": "singleton_map"
+ , "key": "BUILD_POSITION_INDEPENDENT"
+ , "value": true
+ }
+ , "else": {"type": "empty_map"}
+ }
+ }
+, "with fPIC, not object-only":
+ { "doc": ["Like \"with fPIC\", but also clearing BUILD_OBJECT_ONLY"]
+ , "var": ["BUILD_OBJECT_ONLY"]
+ , "imports": {"with fPIC": "with fPIC"}
+ , "expression":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "CALL_EXPRESSION", "name": "with fPIC"}
+ , {"type": "singleton_map", "key": "BUILD_OBJECT_ONLY", "value": null}
+ , { "type": "singleton_map"
+ , "key": "BUILD_OBJECT_ONLY_DROP_OBJECT_LINKING"
+ , "value": null
+ }
+ ]
+ }
+ }
+, "with fPIC, object-only":
+ { "doc":
+ ["Like \"with fPIC\", but also unconditionally setting BUILD_OBJECT_ONLY"]
+ , "var": ["BUILD_OBJECT_ONLY"]
+ , "imports": {"with fPIC": "with fPIC"}
+ , "expression":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "CALL_EXPRESSION", "name": "with fPIC"}
+ , {"type": "singleton_map", "key": "BUILD_OBJECT_ONLY", "value": true}
+ , { "type": "singleton_map"
+ , "key": "BUILD_OBJECT_ONLY_DROP_OBJECT_LINKING"
+ , "value": true
+ }
+ ]
+ }
+ }
+, "target properties":
+ { "vars": ["ARCH", "TARGET_ARCH", "ARCH_DISPATCH"]
+ , "expression":
+ { "type": "let*"
+ , "bindings":
+ [ [ "TARGET_ARCH"
+ , { "type": "var"
+ , "name": "TARGET_ARCH"
+ , "default": {"type": "var", "name": "ARCH"}
+ }
+ ]
+ ]
+ , "body":
+ { "type": "if"
+ , "cond":
+ { "type": "=="
+ , "$1": {"type": "var", "name": "TARGET_ARCH"}
+ , "$2": null
+ }
+ , "then": {"type": "empty_map"}
+ , "else":
+ { "type": "lookup"
+ , "map":
+ { "type": "var"
+ , "name": "ARCH_DISPATCH"
+ , "default": {"type": "empty_map"}
+ }
+ , "key": {"type": "var", "name": "TARGET_ARCH"}
+ , "default": {"type": "empty_map"}
+ }
+ }
+ }
+ }
+, "maybe for host":
+ { "vars": ["ARCH", "HOST_ARCH", "TARGET_ARCH", "ARCH_DISPATCH"]
+ , "imports":
+ {"target properties": "target properties", "for host": "for host"}
+ , "expression":
+ { "type": "if"
+ , "cond": {"type": "CALL_EXPRESSION", "name": "target properties"}
+ , "then": {"type": "empty_map"}
+ , "else": {"type": "CALL_EXPRESSION", "name": "for host"}
+ }
+ }
+}