summaryrefslogtreecommitdiff
path: root/CC/foreign/RULES
diff options
context:
space:
mode:
Diffstat (limited to 'CC/foreign/RULES')
-rw-r--r--CC/foreign/RULES162
1 files changed, 0 insertions, 162 deletions
diff --git a/CC/foreign/RULES b/CC/foreign/RULES
deleted file mode 100644
index e6463f8..0000000
--- a/CC/foreign/RULES
+++ /dev/null
@@ -1,162 +0,0 @@
-{ "defaults":
- { "doc":
- [ "A rule to provide defaults for foreign rules."
- , "All foreign rules take their defaults for MAKE, CMAKE, etc from"
- , "the target [\"CC/foreign\", \"defaults\"]."
- ]
- , "target_fields": ["base", "toolchain"]
- , "string_fields": ["MAKE", "CMAKE", "PATH", "SYSTEM_TOOLS"]
- , "field_doc":
- { "base": ["Other targets (using the same rule) to inherit values from."]
- , "toolchain":
- [ "Optional toolchain directory. A collection of artifacts that provide"
- , "the tools MAKE, CMAKE. Note that only artifacts of"
- , "the specified targets are considered (no runfiles etc.). Specifying"
- , "this field extends artifacts from \"base\"."
- ]
- , "MAKE": ["The make binary to use"]
- , "CMAKE": ["The cmake binary to use"]
- , "SYSTEM_TOOLS":
- [ "List of tools (\"MAKE\", \"CMAKE\") that should be taken from"
- , "the system instead of from \"toolchain\" (if specified)."
- ]
- , "PATH":
- [ "Path for looking up the tools. Individual paths are joined with"
- , "with \":\". Specifying this field extends values from \"base\"."
- ]
- }
- , "config_vars": ["ARCH", "HOST_ARCH"]
- , "imports":
- { "base-provides": ["./", "..", "defaults-base-provides"]
- , "base-provides-++": ["./", "..", "defaults-base-provides-++"]
- , "base-provides-list": ["./", "..", "defaults-base-provides-list"]
- , "artifacts_list": ["./", "../..", "field_artifacts_list"]
- , "for host": ["transitions", "for host"]
- }
- , "config_transitions":
- {"toolchain": [{"type": "CALL_EXPRESSION", "name": "for host"}]}
- , "expression":
- { "type": "let*"
- , "bindings":
- [ ["MAKE", {"type": "FIELD", "name": "MAKE"}]
- , ["CMAKE", {"type": "FIELD", "name": "CMAKE"}]
- , ["PATH", {"type": "FIELD", "name": "PATH"}]
- , ["provider", "MAKE"]
- , [ "MAKE"
- , { "type": "if"
- , "cond": {"type": "var", "name": "MAKE"}
- , "then": {"type": "var", "name": "MAKE"}
- , "else": {"type": "CALL_EXPRESSION", "name": "base-provides"}
- }
- ]
- , ["provider", "CMAKE"]
- , [ "CMAKE"
- , { "type": "if"
- , "cond": {"type": "var", "name": "CMAKE"}
- , "then": {"type": "var", "name": "CMAKE"}
- , "else": {"type": "CALL_EXPRESSION", "name": "base-provides"}
- }
- ]
- , ["provider", "PATH"]
- , [ "PATH"
- , { "type": "nub_left"
- , "$1":
- { "type": "++"
- , "$1":
- [ {"type": "var", "name": "PATH"}
- , {"type": "CALL_EXPRESSION", "name": "base-provides-++"}
- ]
- }
- }
- ]
- , ["provider", "ENV"]
- , ["default", {"type": "empty_map"}]
- , ["ENV", {"type": "CALL_EXPRESSION", "name": "base-provides"}]
- , ["provider", "NON_SYSTEM_TOOLS"]
- , ["default", {"type": "empty_map"}]
- , [ "NON_SYSTEM_TOOLS"
- , { "type": "map_union"
- , "$1":
- { "type": "++"
- , "$1":
- [ {"type": "CALL_EXPRESSION", "name": "base-provides-list"}
- , { "type": "if"
- , "cond": {"type": "FIELD", "name": "MAKE"}
- , "then":
- [ { "type": "singleton_map"
- , "key": "MAKE"
- , "value":
- { "type": "if"
- , "cond": {"type": "FIELD", "name": "toolchain"}
- , "then": true
- , "else": false
- }
- }
- ]
- }
- , { "type": "if"
- , "cond": {"type": "FIELD", "name": "CMAKE"}
- , "then":
- [ { "type": "singleton_map"
- , "key": "CMAKE"
- , "value":
- { "type": "if"
- , "cond": {"type": "FIELD", "name": "toolchain"}
- , "then": true
- , "else": false
- }
- }
- ]
- }
- , { "type": "foreach"
- , "range": {"type": "FIELD", "name": "SYSTEM_TOOLS"}
- , "var": "tool"
- , "body":
- { "type": "singleton_map"
- , "key": {"type": "var", "name": "tool"}
- , "value": false
- }
- }
- ]
- }
- }
- ]
- , ["provider", "TOOLCHAIN"]
- , ["default", {"type": "empty_map"}]
- , [ "TOOLCHAIN"
- , { "type": "disjoint_map_union"
- , "msg": "toolchain artifacts may not overlap"
- , "$1":
- { "type": "++"
- , "$1":
- [ {"type": "CALL_EXPRESSION", "name": "base-provides-list"}
- , { "type": "if"
- , "cond": {"type": "FIELD", "name": "toolchain"}
- , "then":
- { "type": "let*"
- , "bindings":
- [ ["fieldname", "toolchain"]
- , [ "transition"
- , {"type": "CALL_EXPRESSION", "name": "for host"}
- ]
- ]
- , "body":
- {"type": "CALL_EXPRESSION", "name": "artifacts_list"}
- }
- }
- ]
- }
- }
- ]
- ]
- , "body":
- { "type": "RESULT"
- , "provides":
- { "type": "env"
- , "vars":
- ["MAKE", "CMAKE", "PATH", "ENV", "TOOLCHAIN", "NON_SYSTEM_TOOLS"]
- }
- }
- }
- }
-}