summaryrefslogtreecommitdiff
path: root/rules/CC/auto
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2022-12-16 16:33:02 +0100
committerOliver Reiche <oliver.reiche@huawei.com>2022-12-16 16:33:02 +0100
commit81d2bf3484f23035a7d919c2c22d0485f13d8857 (patch)
tree7993c764830615f85d9d812372842949bda8be58 /rules/CC/auto
parent86144c718100d4b424d95a187c3ed4b9ffb04e8d (diff)
parent0712694ea67f84a30058109d41f37ff96c37558d (diff)
downloadrules-cc-81d2bf3484f23035a7d919c2c22d0485f13d8857.tar.gz
Merge commit '0712694ea67f84a30058109d41f37ff96c37558d' into rules-cc
Diffstat (limited to 'rules/CC/auto')
-rw-r--r--rules/CC/auto/RULES852
1 files changed, 373 insertions, 479 deletions
diff --git a/rules/CC/auto/RULES b/rules/CC/auto/RULES
index ea885cd..4f38504 100644
--- a/rules/CC/auto/RULES
+++ b/rules/CC/auto/RULES
@@ -48,14 +48,14 @@
[ "The flags to add to the default ones for CXX"
, "taken from the [\"CC\", \"defaults\"] target"
]
- , "ENV": ["The environment for running file/symbol/type checks."]
+ , "ENV": ["The environment for running file/symbol/type/size checks."]
, "defines":
[ "Set a define to a specific value unless its value is \"null\". Must"
, "contain a list of pairs. The first element of each pair is the define"
, "name and the second argument is the value to set. Strings must be"
, "properly escaped. Defines generated from this field are added last,"
- , "so that they can refer to defines from other \"defines*\" and"
- , "\"have_*\" values."
+ , "so that they can refer to defines from other \"defines*\", "
+ , "\"have_*\", and \"size_*\" values."
]
, "defines1":
[ "Set a define to \"1\" unless its value is untrue. Must contain a list"
@@ -112,14 +112,14 @@
, "pairs. The first element of each pair is the define name and the"
, "second argument is another pair. This pair's first value is the C"
, "type to check for and the second value is a list with possible sizes"
- , "as numbers. If non of the specified sizes matches, the action fails."
+ , "as numbers. If none of the specified sizes matches, the action fails."
]
, "size_cxxtype":
[ "Set a define to size of the specified C++ type. Must contain a list of"
, "pairs. The first element of each pair is the define name and the"
, "second argument is another pair. This pair's first value is the C++"
, "type to check for and the second value is a list with possible sizes"
- , "as numbers. If non of the specified sizes matches, the action fails."
+ , "as numbers. If none of the specified sizes matches, the action fails."
]
}
, "string_fields": ["name", "stage", "guard"]
@@ -149,10 +149,10 @@
, "last": "last_list_entry"
, "artifacts": ["./", "../..", "field_artifacts"]
, "compile-deps": ["./", "..", "compile-deps"]
- , "default-CC": ["./", "..", "default-CC"]
- , "default-CXX": ["./", "..", "default-CXX"]
- , "default-CFLAGS": ["./", "..", "default-CFLAGS"]
- , "default-CXXFLAGS": ["./", "..", "default-CXXFLAGS"]
+ , "compiler-cc": ["./", "..", "compiler-cc"]
+ , "compiler-cxx": ["./", "..", "compiler-cxx"]
+ , "flags-cc": ["./", "..", "flags-cc"]
+ , "flags-cxx": ["./", "..", "flags-cxx"]
, "default-ENV": ["./", "..", "default-ENV"]
}
, "implicit": {"defaults": [["./", "..", "defaults"]]}
@@ -195,42 +195,10 @@
}
}
]
- , [ "CC"
- , { "type": "var"
- , "name": "CC"
- , "default": {"type": "CALL_EXPRESSION", "name": "default-CC"}
- }
- ]
- , [ "CXX"
- , { "type": "var"
- , "name": "CXX"
- , "default": {"type": "CALL_EXPRESSION", "name": "default-CXX"}
- }
- ]
- , [ "CFLAGS"
- , { "type": "++"
- , "$1":
- [ { "type": "var"
- , "name": "CFLAGS"
- , "default":
- {"type": "CALL_EXPRESSION", "name": "default-CFLAGS"}
- }
- , {"type": "var", "name": "ADD_CFLAGS", "default": []}
- ]
- }
- ]
- , [ "CXXFLAGS"
- , { "type": "++"
- , "$1":
- [ { "type": "var"
- , "name": "CXXFLAGS"
- , "default":
- {"type": "CALL_EXPRESSION", "name": "default-CXXFLAGS"}
- }
- , {"type": "var", "name": "ADD_CXXFLAGS", "default": []}
- ]
- }
- ]
+ , ["CC", {"type": "CALL_EXPRESSION", "name": "compiler-cc"}]
+ , ["CXX", {"type": "CALL_EXPRESSION", "name": "compiler-cxx"}]
+ , ["CFLAGS", {"type": "CALL_EXPRESSION", "name": "flags-cc"}]
+ , ["CXXFLAGS", {"type": "CALL_EXPRESSION", "name": "flags-cxx"}]
, [ "ENV"
, { "type": "map_union"
, "$1":
@@ -279,8 +247,7 @@
, "DEFINE=\"/* #undef $DEF */\""
, "echo \"#include \\\"$HDR\\\"\" > test.$LANG"
, "if $CC @$LANG.flags -c test.$LANG -I ./include 2>/dev/null; then DEFINE=\"#define $DEF 1\"; fi"
- , "if [ -f in/${LANG}files.def ]; then cat in/${LANG}files.def > ${LANG}files.def; fi"
- , "echo \"$DEFINE\n\" >> ${LANG}files.def"
+ , "echo \"$DEFINE\n\" > out.def"
]
}
}
@@ -310,8 +277,7 @@
, " break"
, " fi"
, "done"
- , "if [ -f in/${LANG}types.def ]; then cat in/${LANG}types.def > ${LANG}types.def; fi"
- , "echo \"$DEFINE\n\" >> ${LANG}types.def"
+ , "echo \"$DEFINE\n\" > out.def"
]
}
}
@@ -345,8 +311,7 @@
, " break"
, " fi"
, "done"
- , "if [ -f in/${LANG}symbols.def ]; then cat in/${LANG}symbols.def > ${LANG}symbols.def; fi"
- , "echo \"$DEFINE\n\" >> ${LANG}symbols.def"
+ , "echo \"$DEFINE\n\" > out.def"
]
}
}
@@ -378,10 +343,7 @@
, "EOF"
, " if $CC @$LANG.flags -c test.$LANG -I ./include 2>/dev/null; then"
, " DEFINE=\"#define $DEF $SIZE\""
- , " if [ -f in/${LANG}sizes.def ]; then"
- , " cat in/${LANG}sizes.def > ${LANG}sizes.def"
- , " fi"
- , " echo \"$DEFINE\n\" >> ${LANG}sizes.def"
+ , " echo \"$DEFINE\n\" > out.def"
, " exit 0"
, " fi"
, " done"
@@ -392,73 +354,65 @@
}
]
, [ "guard.def"
- , { "type": "singleton_map"
- , "key": "guard.def"
- , "value":
- { "type": "BLOB"
- , "data":
- { "type": "join"
- , "separator": "\n"
- , "$1":
- [ { "type": "join"
- , "separator": " "
- , "$1": ["#ifndef", {"type": "var", "name": "guard"}]
- }
- , { "type": "join"
- , "separator": " "
- , "$1": ["#define", {"type": "var", "name": "guard"}]
- }
- , "\n\n"
- ]
- }
+ , { "type": "BLOB"
+ , "data":
+ { "type": "join"
+ , "separator": "\n"
+ , "$1":
+ [ { "type": "join"
+ , "separator": " "
+ , "$1": ["#ifndef", {"type": "var", "name": "guard"}]
+ }
+ , { "type": "join"
+ , "separator": " "
+ , "$1": ["#define", {"type": "var", "name": "guard"}]
+ }
+ , "\n\n"
+ ]
}
}
]
, [ "plain.def"
- , { "type": "singleton_map"
- , "key": "plain.def"
- , "value":
- { "type": "BLOB"
- , "data":
- { "type": "join"
- , "$1":
- { "type": "foreach"
- , "range": {"type": "var", "name": "defines", "default": []}
- , "var": "pair"
- , "body":
- { "type": "let*"
- , "bindings":
- [ ["list", {"type": "var", "name": "pair"}]
- , [ "def"
- , { "type": "assert_non_empty"
- , "msg": "Define name in 'defines' may not be empty"
- , "$1": {"type": "CALL_EXPRESSION", "name": "first"}
- }
- ]
- , ["val", {"type": "CALL_EXPRESSION", "name": "last"}]
+ , { "type": "BLOB"
+ , "data":
+ { "type": "join"
+ , "$1":
+ { "type": "foreach"
+ , "range": {"type": "var", "name": "defines", "default": []}
+ , "var": "pair"
+ , "body":
+ { "type": "let*"
+ , "bindings":
+ [ ["list", {"type": "var", "name": "pair"}]
+ , [ "def"
+ , { "type": "assert_non_empty"
+ , "msg": "Define name in 'defines' may not be empty"
+ , "$1": {"type": "CALL_EXPRESSION", "name": "first"}
+ }
]
- , "body":
- { "type": "join"
- , "separator": " "
- , "$1":
- { "type": "case*"
- , "expr": {"type": "var", "name": "val"}
- , "case":
- [ [ null
- , [ "/* #undef"
- , {"type": "var", "name": "def"}
- , "*/\n\n"
- ]
+ , ["val", {"type": "CALL_EXPRESSION", "name": "last"}]
+ ]
+ , "body":
+ { "type": "join"
+ , "separator": " "
+ , "$1":
+ { "type": "case*"
+ , "expr": {"type": "var", "name": "val"}
+ , "case":
+ [ [ null
+ , [ "/* #undef"
+ , {"type": "var", "name": "def"}
+ , "*/\n\n"
]
]
- , "default":
- [ "#define"
- , {"type": "var", "name": "def"}
- , { "type": "join"
- , "$1": [{"type": "var", "name": "val"}, "\n\n"]
- }
- ]
- }
+ ]
+ , "default":
+ [ "#define"
+ , {"type": "var", "name": "def"}
+ , { "type": "join"
+ , "$1": [{"type": "var", "name": "val"}, "\n\n"]
+ }
+ ]
}
}
}
@@ -467,39 +421,35 @@
}
]
, [ "int1.def"
- , { "type": "singleton_map"
- , "key": "int1.def"
- , "value":
- { "type": "BLOB"
- , "data":
- { "type": "join"
- , "$1":
- { "type": "foreach"
- , "range": {"type": "var", "name": "defines1", "default": []}
- , "var": "pair"
- , "body":
- { "type": "let*"
- , "bindings":
- [ ["list", {"type": "var", "name": "pair"}]
- , [ "def"
- , { "type": "assert_non_empty"
- , "msg": "Define name in 'defines1' may not be empty"
- , "$1": {"type": "CALL_EXPRESSION", "name": "first"}
- }
- ]
- , ["val", {"type": "CALL_EXPRESSION", "name": "last"}]
- ]
- , "body":
- { "type": "join"
- , "separator": " "
- , "$1":
- { "type": "if"
- , "cond": {"type": "var", "name": "val"}
- , "then":
- ["#define", {"type": "var", "name": "def"}, "1\n\n"]
- , "else":
- ["/* #undef", {"type": "var", "name": "def"}, "*/\n\n"]
+ , { "type": "BLOB"
+ , "data":
+ { "type": "join"
+ , "$1":
+ { "type": "foreach"
+ , "range": {"type": "var", "name": "defines1", "default": []}
+ , "var": "pair"
+ , "body":
+ { "type": "let*"
+ , "bindings":
+ [ ["list", {"type": "var", "name": "pair"}]
+ , [ "def"
+ , { "type": "assert_non_empty"
+ , "msg": "Define name in 'defines1' may not be empty"
+ , "$1": {"type": "CALL_EXPRESSION", "name": "first"}
}
+ ]
+ , ["val", {"type": "CALL_EXPRESSION", "name": "last"}]
+ ]
+ , "body":
+ { "type": "join"
+ , "separator": " "
+ , "$1":
+ { "type": "if"
+ , "cond": {"type": "var", "name": "val"}
+ , "then":
+ ["#define", {"type": "var", "name": "def"}, "1\n\n"]
+ , "else":
+ ["/* #undef", {"type": "var", "name": "def"}, "*/\n\n"]
}
}
}
@@ -508,56 +458,46 @@
}
]
, [ "int01.def"
- , { "type": "singleton_map"
- , "key": "int01.def"
- , "value":
- { "type": "BLOB"
- , "data":
- { "type": "join"
- , "$1":
- { "type": "foreach"
- , "range": {"type": "var", "name": "defines01", "default": []}
- , "var": "pair"
+ , { "type": "BLOB"
+ , "data":
+ { "type": "join"
+ , "$1":
+ { "type": "foreach"
+ , "range": {"type": "var", "name": "defines01", "default": []}
+ , "var": "pair"
+ , "body":
+ { "type": "let*"
+ , "bindings":
+ [ ["list", {"type": "var", "name": "pair"}]
+ , [ "def"
+ , { "type": "assert_non_empty"
+ , "msg": "Define name in 'defines01' may not be empty"
+ , "$1": {"type": "CALL_EXPRESSION", "name": "first"}
+ }
+ ]
+ , ["val", {"type": "CALL_EXPRESSION", "name": "last"}]
+ ]
, "body":
- { "type": "let*"
- , "bindings":
- [ ["list", {"type": "var", "name": "pair"}]
- , [ "def"
- , { "type": "assert_non_empty"
- , "msg": "Define name in 'defines01' may not be empty"
- , "$1": {"type": "CALL_EXPRESSION", "name": "first"}
- }
- ]
- , ["val", {"type": "CALL_EXPRESSION", "name": "last"}]
+ { "type": "join"
+ , "separator": " "
+ , "$1":
+ [ "#define"
+ , {"type": "var", "name": "def"}
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "val"}
+ , "then": "1\n\n"
+ , "else": "0\n\n"
+ }
]
- , "body":
- { "type": "join"
- , "separator": " "
- , "$1":
- [ "#define"
- , {"type": "var", "name": "def"}
- , { "type": "if"
- , "cond": {"type": "var", "name": "val"}
- , "then": "1\n\n"
- , "else": "0\n\n"
- }
- ]
- }
}
}
}
}
}
]
- , [ "cfiles.def"
- , { "type": "foldl"
+ , [ "cfile-defs"
+ , { "type": "foreach"
, "range": {"type": "var", "name": "have_cfile", "default": []}
- , "start":
- { "type": "singleton_map"
- , "key": "cfiles.def"
- , "value": {"type": "BLOB", "data": ""}
- }
- , "accum_var": "cfiles.def"
, "var": "pair"
, "body":
{ "type": "let*"
@@ -572,41 +512,35 @@
, ["val", {"type": "CALL_EXPRESSION", "name": "last"}]
]
, "body":
- { "type": "ACTION"
- , "inputs":
- { "type": "map_union"
- , "$1":
- [ { "type": "to_subdir"
- , "subdir": "in"
- , "$1": {"type": "var", "name": "cfiles.def"}
- }
- , {"type": "env", "vars": ["file_check.sh", "c.flags"]}
- , {"type": "var", "name": "includes"}
+ { "type": "lookup"
+ , "key": "out.def"
+ , "map":
+ { "type": "ACTION"
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "env", "vars": ["file_check.sh", "c.flags"]}
+ , {"type": "var", "name": "includes"}
+ ]
+ }
+ , "cmd":
+ [ "sh"
+ , "./file_check.sh"
+ , {"type": "var", "name": "CC"}
+ , "c"
+ , {"type": "var", "name": "def"}
+ , {"type": "var", "name": "val"}
]
+ , "env": {"type": "var", "name": "ENV"}
+ , "outs": ["out.def"]
}
- , "cmd":
- [ "sh"
- , "./file_check.sh"
- , {"type": "var", "name": "CC"}
- , "c"
- , {"type": "var", "name": "def"}
- , {"type": "var", "name": "val"}
- ]
- , "env": {"type": "var", "name": "ENV"}
- , "outs": ["cfiles.def"]
}
}
}
]
- , [ "cxxfiles.def"
- , { "type": "foldl"
+ , [ "cxxfile-defs"
+ , { "type": "foreach"
, "range": {"type": "var", "name": "have_cxxfile", "default": []}
- , "start":
- { "type": "singleton_map"
- , "key": "cxxfiles.def"
- , "value": {"type": "BLOB", "data": ""}
- }
- , "accum_var": "cxxfiles.def"
, "var": "pair"
, "body":
{ "type": "let*"
@@ -621,41 +555,35 @@
, ["val", {"type": "CALL_EXPRESSION", "name": "last"}]
]
, "body":
- { "type": "ACTION"
- , "inputs":
- { "type": "map_union"
- , "$1":
- [ { "type": "to_subdir"
- , "subdir": "in"
- , "$1": {"type": "var", "name": "cxxfiles.def"}
- }
- , {"type": "env", "vars": ["file_check.sh", "cxx.flags"]}
- , {"type": "var", "name": "includes"}
+ { "type": "lookup"
+ , "key": "out.def"
+ , "map":
+ { "type": "ACTION"
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "env", "vars": ["file_check.sh", "cxx.flags"]}
+ , {"type": "var", "name": "includes"}
+ ]
+ }
+ , "cmd":
+ [ "sh"
+ , "./file_check.sh"
+ , {"type": "var", "name": "CXX"}
+ , "cxx"
+ , {"type": "var", "name": "def"}
+ , {"type": "var", "name": "val"}
]
+ , "env": {"type": "var", "name": "ENV"}
+ , "outs": ["out.def"]
}
- , "cmd":
- [ "sh"
- , "./file_check.sh"
- , {"type": "var", "name": "CXX"}
- , "cxx"
- , {"type": "var", "name": "def"}
- , {"type": "var", "name": "val"}
- ]
- , "env": {"type": "var", "name": "ENV"}
- , "outs": ["cxxfiles.def"]
}
}
}
]
- , [ "ctypes.def"
- , { "type": "foldl"
+ , [ "ctype-defs"
+ , { "type": "foreach"
, "range": {"type": "var", "name": "have_ctype", "default": []}
- , "start":
- { "type": "singleton_map"
- , "key": "ctypes.def"
- , "value": {"type": "BLOB", "data": ""}
- }
- , "accum_var": "ctypes.def"
, "var": "pair"
, "body":
{ "type": "let*"
@@ -670,41 +598,35 @@
, ["type", {"type": "CALL_EXPRESSION", "name": "last"}]
]
, "body":
- { "type": "ACTION"
- , "inputs":
- { "type": "map_union"
- , "$1":
- [ { "type": "to_subdir"
- , "subdir": "in"
- , "$1": {"type": "var", "name": "ctypes.def"}
- }
- , {"type": "env", "vars": ["type_check.sh", "c.flags"]}
- , {"type": "var", "name": "includes"}
+ { "type": "lookup"
+ , "key": "out.def"
+ , "map":
+ { "type": "ACTION"
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "env", "vars": ["type_check.sh", "c.flags"]}
+ , {"type": "var", "name": "includes"}
+ ]
+ }
+ , "cmd":
+ [ "sh"
+ , "./type_check.sh"
+ , {"type": "var", "name": "CC"}
+ , "c"
+ , {"type": "var", "name": "def"}
+ , {"type": "var", "name": "type"}
]
+ , "env": {"type": "var", "name": "ENV"}
+ , "outs": ["out.def"]
}
- , "cmd":
- [ "sh"
- , "./type_check.sh"
- , {"type": "var", "name": "CC"}
- , "c"
- , {"type": "var", "name": "def"}
- , {"type": "var", "name": "type"}
- ]
- , "env": {"type": "var", "name": "ENV"}
- , "outs": ["ctypes.def"]
}
}
}
]
- , [ "cxxtypes.def"
- , { "type": "foldl"
+ , [ "cxxtype-defs"
+ , { "type": "foreach"
, "range": {"type": "var", "name": "have_cxxtype", "default": []}
- , "start":
- { "type": "singleton_map"
- , "key": "cxxtypes.def"
- , "value": {"type": "BLOB", "data": ""}
- }
- , "accum_var": "cxxtypes.def"
, "var": "pair"
, "body":
{ "type": "let*"
@@ -719,41 +641,35 @@
, ["type", {"type": "CALL_EXPRESSION", "name": "last"}]
]
, "body":
- { "type": "ACTION"
- , "inputs":
- { "type": "map_union"
- , "$1":
- [ { "type": "to_subdir"
- , "subdir": "in"
- , "$1": {"type": "var", "name": "cxxtypes.def"}
- }
- , {"type": "env", "vars": ["type_check.sh", "cxx.flags"]}
- , {"type": "var", "name": "includes"}
+ { "type": "lookup"
+ , "key": "out.def"
+ , "map":
+ { "type": "ACTION"
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "env", "vars": ["type_check.sh", "cxx.flags"]}
+ , {"type": "var", "name": "includes"}
+ ]
+ }
+ , "cmd":
+ [ "sh"
+ , "./type_check.sh"
+ , {"type": "var", "name": "CXX"}
+ , "cxx"
+ , {"type": "var", "name": "def"}
+ , {"type": "var", "name": "type"}
]
+ , "env": {"type": "var", "name": "ENV"}
+ , "outs": ["out.def"]
}
- , "cmd":
- [ "sh"
- , "./type_check.sh"
- , {"type": "var", "name": "CXX"}
- , "cxx"
- , {"type": "var", "name": "def"}
- , {"type": "var", "name": "type"}
- ]
- , "env": {"type": "var", "name": "ENV"}
- , "outs": ["cxxtypes.def"]
}
}
}
]
- , [ "csymbols.def"
- , { "type": "foldl"
+ , [ "csymbol-defs"
+ , { "type": "foreach"
, "range": {"type": "var", "name": "have_csymbol", "default": []}
- , "start":
- { "type": "singleton_map"
- , "key": "csymbols.def"
- , "value": {"type": "BLOB", "data": ""}
- }
- , "accum_var": "csymbols.def"
, "var": "pair"
, "body":
{ "type": "let*"
@@ -770,46 +686,40 @@
, ["hdrs", {"type": "CALL_EXPRESSION", "name": "last"}]
]
, "body":
- { "type": "ACTION"
- , "inputs":
- { "type": "map_union"
- , "$1":
- [ { "type": "to_subdir"
- , "subdir": "in"
- , "$1": {"type": "var", "name": "csymbols.def"}
- }
- , {"type": "env", "vars": ["symbol_check.sh", "c.flags"]}
- , {"type": "var", "name": "includes"}
- ]
- }
- , "cmd":
- { "type": "++"
- , "$1":
- [ [ "sh"
- , "./symbol_check.sh"
- , {"type": "var", "name": "CC"}
- , "c"
- , {"type": "var", "name": "def"}
- , {"type": "var", "name": "sym"}
+ { "type": "lookup"
+ , "key": "out.def"
+ , "map":
+ { "type": "ACTION"
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "env", "vars": ["symbol_check.sh", "c.flags"]}
+ , {"type": "var", "name": "includes"}
]
- , {"type": "var", "name": "hdrs"}
- ]
+ }
+ , "cmd":
+ { "type": "++"
+ , "$1":
+ [ [ "sh"
+ , "./symbol_check.sh"
+ , {"type": "var", "name": "CC"}
+ , "c"
+ , {"type": "var", "name": "def"}
+ , {"type": "var", "name": "sym"}
+ ]
+ , {"type": "var", "name": "hdrs"}
+ ]
+ }
+ , "env": {"type": "var", "name": "ENV"}
+ , "outs": ["out.def"]
}
- , "env": {"type": "var", "name": "ENV"}
- , "outs": ["csymbols.def"]
}
}
}
]
- , [ "cxxsymbols.def"
- , { "type": "foldl"
+ , [ "cxxsymbol-defs"
+ , { "type": "foreach"
, "range": {"type": "var", "name": "have_cxxsymbol", "default": []}
- , "start":
- { "type": "singleton_map"
- , "key": "cxxsymbols.def"
- , "value": {"type": "BLOB", "data": ""}
- }
- , "accum_var": "cxxsymbols.def"
, "var": "pair"
, "body":
{ "type": "let*"
@@ -826,46 +736,40 @@
, ["hdrs", {"type": "CALL_EXPRESSION", "name": "last"}]
]
, "body":
- { "type": "ACTION"
- , "inputs":
- { "type": "map_union"
- , "$1":
- [ { "type": "to_subdir"
- , "subdir": "in"
- , "$1": {"type": "var", "name": "cxxsymbols.def"}
- }
- , {"type": "env", "vars": ["symbol_check.sh", "cxx.flags"]}
- , {"type": "var", "name": "includes"}
- ]
- }
- , "cmd":
- { "type": "++"
- , "$1":
- [ [ "sh"
- , "./symbol_check.sh"
- , {"type": "var", "name": "CXX"}
- , "cxx"
- , {"type": "var", "name": "def"}
- , {"type": "var", "name": "sym"}
+ { "type": "lookup"
+ , "key": "out.def"
+ , "map":
+ { "type": "ACTION"
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "env", "vars": ["symbol_check.sh", "cxx.flags"]}
+ , {"type": "var", "name": "includes"}
]
- , {"type": "var", "name": "hdrs"}
- ]
+ }
+ , "cmd":
+ { "type": "++"
+ , "$1":
+ [ [ "sh"
+ , "./symbol_check.sh"
+ , {"type": "var", "name": "CXX"}
+ , "cxx"
+ , {"type": "var", "name": "def"}
+ , {"type": "var", "name": "sym"}
+ ]
+ , {"type": "var", "name": "hdrs"}
+ ]
+ }
+ , "env": {"type": "var", "name": "ENV"}
+ , "outs": ["out.def"]
}
- , "env": {"type": "var", "name": "ENV"}
- , "outs": ["cxxsymbols.def"]
}
}
}
]
- , [ "csizes.def"
- , { "type": "foldl"
+ , [ "csize-defs"
+ , { "type": "foreach"
, "range": {"type": "var", "name": "size_ctype", "default": []}
- , "start":
- { "type": "singleton_map"
- , "key": "csizes.def"
- , "value": {"type": "BLOB", "data": ""}
- }
- , "accum_var": "csizes.def"
, "var": "pair"
, "body":
{ "type": "let*"
@@ -882,53 +786,47 @@
, ["sizes", {"type": "CALL_EXPRESSION", "name": "last"}]
]
, "body":
- { "type": "ACTION"
- , "inputs":
- { "type": "map_union"
- , "$1":
- [ { "type": "to_subdir"
- , "subdir": "in"
- , "$1": {"type": "var", "name": "csizes.def"}
- }
- , {"type": "env", "vars": ["size_check.sh", "c.flags"]}
- , {"type": "var", "name": "includes"}
- ]
- }
- , "cmd":
- { "type": "++"
- , "$1":
- [ [ "sh"
- , "./size_check.sh"
- , {"type": "var", "name": "CC"}
- , "c"
- , {"type": "var", "name": "def"}
- , {"type": "var", "name": "type"}
+ { "type": "lookup"
+ , "key": "out.def"
+ , "map":
+ { "type": "ACTION"
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "env", "vars": ["size_check.sh", "c.flags"]}
+ , {"type": "var", "name": "includes"}
]
- , { "type": "foreach"
- , "var": "size"
- , "range": {"type": "var", "name": "sizes"}
- , "body":
- { "type": "json_encode"
- , "$1": {"type": "var", "name": "size"}
+ }
+ , "cmd":
+ { "type": "++"
+ , "$1":
+ [ [ "sh"
+ , "./size_check.sh"
+ , {"type": "var", "name": "CC"}
+ , "c"
+ , {"type": "var", "name": "def"}
+ , {"type": "var", "name": "type"}
+ ]
+ , { "type": "foreach"
+ , "var": "size"
+ , "range": {"type": "var", "name": "sizes"}
+ , "body":
+ { "type": "json_encode"
+ , "$1": {"type": "var", "name": "size"}
+ }
}
- }
- ]
+ ]
+ }
+ , "env": {"type": "var", "name": "ENV"}
+ , "outs": ["out.def"]
}
- , "env": {"type": "var", "name": "ENV"}
- , "outs": ["csizes.def"]
}
}
}
]
- , [ "cxxsizes.def"
- , { "type": "foldl"
+ , [ "cxxsize-defs"
+ , { "type": "foreach"
, "range": {"type": "var", "name": "size_cxxtype", "default": []}
- , "start":
- { "type": "singleton_map"
- , "key": "cxxsizes.def"
- , "value": {"type": "BLOB", "data": ""}
- }
- , "accum_var": "cxxsizes.def"
, "var": "pair"
, "body":
{ "type": "let*"
@@ -945,73 +843,72 @@
, ["sizes", {"type": "CALL_EXPRESSION", "name": "last"}]
]
, "body":
- { "type": "ACTION"
- , "inputs":
- { "type": "map_union"
- , "$1":
- [ { "type": "to_subdir"
- , "subdir": "in"
- , "$1": {"type": "var", "name": "cxxsizes.def"}
- }
- , {"type": "env", "vars": ["size_check.sh", "cxx.flags"]}
- , {"type": "var", "name": "includes"}
- ]
- }
- , "cmd":
- { "type": "++"
- , "$1":
- [ [ "sh"
- , "./size_check.sh"
- , {"type": "var", "name": "CXX"}
- , "cxx"
- , {"type": "var", "name": "def"}
- , {"type": "var", "name": "type"}
+ { "type": "lookup"
+ , "key": "out.def"
+ , "map":
+ { "type": "ACTION"
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ {"type": "env", "vars": ["size_check.sh", "cxx.flags"]}
+ , {"type": "var", "name": "includes"}
]
- , { "type": "foreach"
- , "var": "size"
- , "range": {"type": "var", "name": "sizes"}
- , "body":
- { "type": "json_encode"
- , "$1": {"type": "var", "name": "size"}
+ }
+ , "cmd":
+ { "type": "++"
+ , "$1":
+ [ [ "sh"
+ , "./size_check.sh"
+ , {"type": "var", "name": "CXX"}
+ , "cxx"
+ , {"type": "var", "name": "def"}
+ , {"type": "var", "name": "type"}
+ ]
+ , { "type": "foreach"
+ , "var": "size"
+ , "range": {"type": "var", "name": "sizes"}
+ , "body":
+ { "type": "json_encode"
+ , "$1": {"type": "var", "name": "size"}
+ }
}
- }
- ]
+ ]
+ }
+ , "env": {"type": "var", "name": "ENV"}
+ , "outs": ["out.def"]
}
- , "env": {"type": "var", "name": "ENV"}
- , "outs": ["cxxsizes.def"]
}
}
}
]
- , [ "end.def"
- , { "type": "singleton_map"
- , "key": "end.def"
- , "value": {"type": "BLOB", "data": "\n#endif\n"}
+ , ["end.def", {"type": "BLOB", "data": "\n#endif\n"}]
+ , [ "definitions"
+ , { "type": "enumerate"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ [ {"type": "var", "name": "guard.def"}
+ , {"type": "var", "name": "int1.def"}
+ , {"type": "var", "name": "int01.def"}
+ ]
+ , {"type": "var", "name": "cfile-defs"}
+ , {"type": "var", "name": "cxxfile-defs"}
+ , {"type": "var", "name": "ctype-defs"}
+ , {"type": "var", "name": "cxxtype-defs"}
+ , {"type": "var", "name": "csymbol-defs"}
+ , {"type": "var", "name": "cxxsymbol-defs"}
+ , {"type": "var", "name": "csize-defs"}
+ , {"type": "var", "name": "cxxsize-defs"}
+ , [ {"type": "var", "name": "plain.def"}
+ , {"type": "var", "name": "end.def"}
+ ]
+ ]
+ }
}
]
- , [ "outname"
- , {"type": "join", "$1": ["out/", {"type": "var", "name": "name"}]}
- ]
, [ "outfile"
, { "type": "ACTION"
- , "inputs":
- { "type": "map_union"
- , "$1":
- [ {"type": "var", "name": "guard.def"}
- , {"type": "var", "name": "plain.def"}
- , {"type": "var", "name": "int1.def"}
- , {"type": "var", "name": "int01.def"}
- , {"type": "var", "name": "cfiles.def"}
- , {"type": "var", "name": "cxxfiles.def"}
- , {"type": "var", "name": "ctypes.def"}
- , {"type": "var", "name": "cxxtypes.def"}
- , {"type": "var", "name": "csymbols.def"}
- , {"type": "var", "name": "cxxsymbols.def"}
- , {"type": "var", "name": "csizes.def"}
- , {"type": "var", "name": "cxxsizes.def"}
- , {"type": "var", "name": "end.def"}
- ]
- }
+ , "inputs": {"type": "var", "name": "definitions"}
, "cmd":
[ "sh"
, "-c"
@@ -1019,35 +916,32 @@
, "separator": " "
, "$1":
[ "cat"
- , "guard.def"
- , "int1.def"
- , "int01.def"
- , "cfiles.def"
- , "cxxfiles.def"
- , "ctypes.def"
- , "cxxtypes.def"
- , "csymbols.def"
- , "cxxsymbols.def"
- , "csizes.def"
- , "cxxsizes.def"
- , "plain.def"
- , "end.def"
- , ">"
, { "type": "join_cmd"
- , "$1": [{"type": "var", "name": "outname"}]
+ , "$1":
+ { "type": "keys"
+ , "$1": {"type": "var", "name": "definitions"}
+ }
}
+ , "> out"
]
}
]
- , "outs": [{"type": "var", "name": "outname"}]
+ , "outs": ["out"]
, "env": {"type": "var", "name": "ENV"}
}
]
, [ "outfile"
, { "type": "to_subdir"
, "subdir": {"type": "var", "name": "stage"}
- , "flat": true
- , "$1": {"type": "var", "name": "outfile"}
+ , "$1":
+ { "type": "singleton_map"
+ , "key": {"type": "var", "name": "name"}
+ , "value":
+ { "type": "lookup"
+ , "key": "out"
+ , "map": {"type": "var", "name": "outfile"}
+ }
+ }
}
]
]