diff options
-rw-r--r-- | rules/CC/foreign/cmake/EXPRESSIONS | 44 | ||||
-rw-r--r-- | rules/CC/foreign/cmake/RULES | 59 | ||||
-rw-r--r-- | rules/CC/foreign/make/EXPRESSIONS | 44 | ||||
-rw-r--r-- | rules/CC/foreign/make/RULES | 59 |
4 files changed, 196 insertions, 10 deletions
diff --git a/rules/CC/foreign/cmake/EXPRESSIONS b/rules/CC/foreign/cmake/EXPRESSIONS index 9b264d8..ee7c595 100644 --- a/rules/CC/foreign/cmake/EXPRESSIONS +++ b/rules/CC/foreign/cmake/EXPRESSIONS @@ -45,17 +45,37 @@ , "foreign-PATH": ["CC/foreign", "default-PATH"] , "foreign-TOOLCHAIN": ["CC/foreign", "default-TOOLCHAIN"] , "foreign-NON_SYSTEM_TOOLS": ["CC/foreign", "default-NON_SYSTEM_TOOLS"] + , "map_provider": ["", "field_map_provider"] + , "sh": ["shell", "sh"] + , "sh-PATH": ["shell", "PATH"] } , "expression": { "type": "let*" , "bindings": [ ["TOOLCHAIN_DIR", "toolchain"] + , [ "shell TOOLCHAIN" + , { "type": "let*" + , "bindings": + [ ["fieldname", "shell defaults"] + , ["provider", "TOOLCHAIN"] + , ["default", {"type": "empty_map"}] + ] + , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"} + } + ] + , [ "sh" + , { "type": "let*" + , "bindings": [["fieldname", "shell defaults"]] + , "body": {"type": "CALL_EXPRESSION", "name": "sh"} + } + ] , [ "TOOLCHAIN" , { "type": "disjoint_map_union" , "msg": "Toolchain trees may not overlap" , "$1": [ {"type": "CALL_EXPRESSION", "name": "foreign-TOOLCHAIN"} , {"type": "CALL_EXPRESSION", "name": "default-TOOLCHAIN"} + , {"type": "var", "name": "shell TOOLCHAIN"} ] } ] @@ -183,6 +203,27 @@ } } ] + , [ "sh-PATH" + , { "type": "join" + , "separator": ":" + , "$1": + { "type": "let*" + , "bindings": [["fieldname", "shell defaults"]] + , "body": {"type": "CALL_EXPRESSION", "name": "sh-PATH"} + } + } + ] + , [ "sh-ENV" + , { "type": "if" + , "cond": {"type": "var", "name": "sh-PATH"} + , "then": + { "type": "singleton_map" + , "key": "PATH" + , "value": {"type": "var", "name": "sh-PATH"} + } + , "else": {"type": "empty_map"} + } + ] , [ "PATH" , { "type": "join" , "separator": ":" @@ -217,6 +258,7 @@ , "CMAKE" ] } + , {"type": "var", "name": "sh-ENV"} , {"type": "CALL_EXPRESSION", "name": "default-ENV"} , {"type": "CALL_EXPRESSION", "name": "foreign-ENV"} , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} @@ -385,7 +427,7 @@ , "cmd": { "type": "++" , "$1": - [ [ "sh" + [ [ {"type": "var", "name": "sh"} , "run_cmake.sh" , {"type": "var", "name": "CMAKE_SUBDIR"} , {"type": "var", "name": "AR"} diff --git a/rules/CC/foreign/cmake/RULES b/rules/CC/foreign/cmake/RULES index 166e2d6..b7fd406 100644 --- a/rules/CC/foreign/cmake/RULES +++ b/rules/CC/foreign/cmake/RULES @@ -39,6 +39,7 @@ , "implicit": { "defaults": [["CC", "defaults"]] , "foreign-defaults": [["CC/foreign", "defaults"]] + , "shell defaults": [["shell", "defaults"]] , "expand_exec": [["./", "..", "expand_exec"]] } , "field_doc": @@ -158,6 +159,8 @@ , "cmake-build": "cmake-build" , "strip-prefix": ["./", "..", "strip-prefix"] , "for host": ["transitions", "for host"] + , "map_provider": ["", "field_map_provider"] + , "sh": ["shell", "sh"] } , "config_transitions": { "defaults": @@ -224,10 +227,33 @@ , [ "full_install_dir" , {"type": "CALL_EXPRESSION", "name": "cmake-build"} ] + , ["TOOLCHAIN_DIR", "toolchain"] + , [ "shell TOOLCHAIN" + , { "type": "let*" + , "bindings": + [ ["fieldname", "shell defaults"] + , ["provider", "TOOLCHAIN"] + , ["default", {"type": "empty_map"}] + ] + , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"} + } + ] + , [ "sh" + , { "type": "let*" + , "bindings": [["fieldname", "shell defaults"]] + , "body": {"type": "CALL_EXPRESSION", "name": "sh"} + } + ] , [ "install_dir" , { "type": "ACTION" - , "inputs": {"type": "var", "name": "full_install_dir"} - , "cmd": ["/bin/sh", "-c", ":"] + , "inputs": + { "type": "map_union" + , "$1": + [ {"type": "var", "name": "shell TOOLCHAIN"} + , {"type": "var", "name": "full_install_dir"} + ] + } + , "cmd": [{"type": "var", "name": "sh"}, "-c", ":"] , "outs": {"type": "var", "name": "installed_out_files"} , "out_dirs": {"type": "var", "name": "installed_out_dirs"} } @@ -318,6 +344,7 @@ , "implicit": { "defaults": [["CC", "defaults"]] , "foreign-defaults": [["CC/foreign", "defaults"]] + , "shell defaults": [["shell", "defaults"]] , "config_reader": [["CC", "prebuilt/read_pkgconfig.py"]] , "expand_exec": [["./", "..", "expand_exec"]] } @@ -479,6 +506,8 @@ , "prebuilt result": ["CC/prebuilt", "prebuilt result"] , "install-deps": ["CC", "install-with-deps stage"] , "for host": ["transitions", "for host"] + , "map_provider": ["", "field_map_provider"] + , "sh": ["shell", "sh"] } , "config_transitions": { "defaults": @@ -633,10 +662,32 @@ , [ "full_install_dir" , {"type": "CALL_EXPRESSION", "name": "cmake-build"} ] + , [ "shell TOOLCHAIN" + , { "type": "let*" + , "bindings": + [ ["fieldname", "shell defaults"] + , ["provider", "TOOLCHAIN"] + , ["default", {"type": "empty_map"}] + ] + , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"} + } + ] + , [ "sh" + , { "type": "let*" + , "bindings": [["fieldname", "shell defaults"]] + , "body": {"type": "CALL_EXPRESSION", "name": "sh"} + } + ] , [ "install_dir" , { "type": "ACTION" - , "inputs": {"type": "var", "name": "full_install_dir"} - , "cmd": ["/bin/sh", "-c", ":"] + , "inputs": + { "type": "map_union" + , "$1": + [ {"type": "var", "name": "shell TOOLCHAIN"} + , {"type": "var", "name": "full_install_dir"} + ] + } + , "cmd": [{"type": "var", "name": "sh"}, "-c", ":"] , "outs": {"type": "var", "name": "installed_files"} , "out_dirs": {"type": "var", "name": "installed_dirs"} } diff --git a/rules/CC/foreign/make/EXPRESSIONS b/rules/CC/foreign/make/EXPRESSIONS index 5556f20..5f80fd8 100644 --- a/rules/CC/foreign/make/EXPRESSIONS +++ b/rules/CC/foreign/make/EXPRESSIONS @@ -46,17 +46,37 @@ , "foreign-PATH": ["CC/foreign", "default-PATH"] , "foreign-TOOLCHAIN": ["CC/foreign", "default-TOOLCHAIN"] , "foreign-NON_SYSTEM_TOOLS": ["CC/foreign", "default-NON_SYSTEM_TOOLS"] + , "map_provider": ["", "field_map_provider"] + , "sh": ["shell", "sh"] + , "sh-PATH": ["shell", "PATH"] } , "expression": { "type": "let*" , "bindings": [ ["TOOLCHAIN_DIR", "toolchain"] + , [ "shell TOOLCHAIN" + , { "type": "let*" + , "bindings": + [ ["fieldname", "shell defaults"] + , ["provider", "TOOLCHAIN"] + , ["default", {"type": "empty_map"}] + ] + , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"} + } + ] + , [ "sh" + , { "type": "let*" + , "bindings": [["fieldname", "shell defaults"]] + , "body": {"type": "CALL_EXPRESSION", "name": "sh"} + } + ] , [ "TOOLCHAIN" , { "type": "disjoint_map_union" , "msg": "Toolchain trees may not overlap" , "$1": [ {"type": "CALL_EXPRESSION", "name": "foreign-TOOLCHAIN"} , {"type": "CALL_EXPRESSION", "name": "default-TOOLCHAIN"} + , {"type": "var", "name": "shell TOOLCHAIN"} ] } ] @@ -160,6 +180,27 @@ , "else": {"type": "var", "name": "PREFIX", "default": "/"} } ] + , [ "sh-PATH" + , { "type": "join" + , "separator": ":" + , "$1": + { "type": "let*" + , "bindings": [["fieldname", "shell defaults"]] + , "body": {"type": "CALL_EXPRESSION", "name": "sh-PATH"} + } + } + ] + , [ "sh-ENV" + , { "type": "if" + , "cond": {"type": "var", "name": "sh-PATH"} + , "then": + { "type": "singleton_map" + , "key": "PATH" + , "value": {"type": "var", "name": "sh-PATH"} + } + , "else": {"type": "empty_map"} + } + ] , [ "PATH" , { "type": "join" , "separator": ":" @@ -194,6 +235,7 @@ , "PREFIX" ] } + , {"type": "var", "name": "sh-ENV"} , {"type": "CALL_EXPRESSION", "name": "default-ENV"} , {"type": "CALL_EXPRESSION", "name": "foreign-ENV"} , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} @@ -348,7 +390,7 @@ , "cmd": { "type": "++" , "$1": - [ ["sh", "run_make.sh"] + [ [{"type": "var", "name": "sh"}, "run_make.sh"] , [{"type": "var", "name": "SUBDIR"}] , {"type": "var", "name": "make_options"} , { "type": "if" diff --git a/rules/CC/foreign/make/RULES b/rules/CC/foreign/make/RULES index e3c28db..cf67998 100644 --- a/rules/CC/foreign/make/RULES +++ b/rules/CC/foreign/make/RULES @@ -42,6 +42,7 @@ , "implicit": { "defaults": [["CC", "defaults"]] , "foreign-defaults": [["CC/foreign", "defaults"]] + , "shell defaults": [["shell", "defaults"]] , "expand_exec": [["./", "..", "expand_exec"]] } , "field_doc": @@ -174,6 +175,8 @@ , "make-build": "make-build" , "strip-prefix": ["./", "..", "strip-prefix"] , "for host": ["transitions", "for host"] + , "map_provider": ["", "field_map_provider"] + , "sh": ["shell", "sh"] } , "config_transitions": { "defaults": @@ -240,10 +243,33 @@ } ] , ["full_install_dir", {"type": "CALL_EXPRESSION", "name": "make-build"}] + , ["TOOLCHAIN_DIR", "toolchain"] + , [ "shell TOOLCHAIN" + , { "type": "let*" + , "bindings": + [ ["fieldname", "shell defaults"] + , ["provider", "TOOLCHAIN"] + , ["default", {"type": "empty_map"}] + ] + , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"} + } + ] + , [ "sh" + , { "type": "let*" + , "bindings": [["fieldname", "shell defaults"]] + , "body": {"type": "CALL_EXPRESSION", "name": "sh"} + } + ] , [ "install_dir" , { "type": "ACTION" - , "inputs": {"type": "var", "name": "full_install_dir"} - , "cmd": ["/bin/sh", "-c", ":"] + , "inputs": + { "type": "map_union" + , "$1": + [ {"type": "var", "name": "shell TOOLCHAIN"} + , {"type": "var", "name": "full_install_dir"} + ] + } + , "cmd": [{"type": "var", "name": "sh"}, "-c", ":"] , "outs": {"type": "var", "name": "installed_out_files"} , "out_dirs": {"type": "var", "name": "installed_out_dirs"} } @@ -338,6 +364,7 @@ , "implicit": { "defaults": [["CC", "defaults"]] , "foreign-defaults": [["CC/foreign", "defaults"]] + , "shell defaults": [["shell", "defaults"]] , "config_reader": [["CC", "prebuilt/read_pkgconfig.py"]] , "expand_exec": [["./", "..", "expand_exec"]] } @@ -509,6 +536,8 @@ , "prebuilt result": ["CC/prebuilt", "prebuilt result"] , "install-deps": ["CC", "install-with-deps stage"] , "for host": ["transitions", "for host"] + , "map_provider": ["", "field_map_provider"] + , "sh": ["shell", "sh"] } , "config_transitions": { "defaults": @@ -664,10 +693,32 @@ } ] , ["full_install_dir", {"type": "CALL_EXPRESSION", "name": "make-build"}] + , [ "shell TOOLCHAIN" + , { "type": "let*" + , "bindings": + [ ["fieldname", "shell defaults"] + , ["provider", "TOOLCHAIN"] + , ["default", {"type": "empty_map"}] + ] + , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"} + } + ] + , [ "sh" + , { "type": "let*" + , "bindings": [["fieldname", "shell defaults"]] + , "body": {"type": "CALL_EXPRESSION", "name": "sh"} + } + ] , [ "install_dir" , { "type": "ACTION" - , "inputs": {"type": "var", "name": "full_install_dir"} - , "cmd": ["/bin/sh", "-c", ":"] + , "inputs": + { "type": "map_union" + , "$1": + [ {"type": "var", "name": "shell TOOLCHAIN"} + , {"type": "var", "name": "full_install_dir"} + ] + } + , "cmd": [{"type": "var", "name": "sh"}, "-c", ":"] , "outs": {"type": "var", "name": "installed_files"} , "out_dirs": {"type": "var", "name": "installed_dirs"} } |