{ "default-PROTOC": { "vars": ["defaults-transition"] , "imports": {"list_provider": ["./", "../..", "field_list_provider"]} , "expression": { "type": "let*" , "bindings": [ ["fieldname", "proto-defaults"] , ["provider", "PROTOC"] , ["transition", {"type": "var", "name": "defaults-transition"}] ] , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"} } } , "default-PROTOCFLAGS": { "vars": ["defaults-transition"] , "imports": {"list_provider": ["./", "../..", "field_list_provider"]} , "expression": { "type": "let*" , "bindings": [ ["fieldname", "proto-defaults"] , ["provider", "PROTOCFLAGS"] , ["transition", {"type": "var", "name": "defaults-transition"}] ] , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"} } } , "default-LDFLAGS": { "vars": ["defaults-transition"] , "imports": {"list_provider": ["./", "../..", "field_list_provider"]} , "expression": { "type": "let*" , "bindings": [ ["fieldname", "proto-defaults"] , ["provider", "LDFLAGS"] , ["transition", {"type": "var", "name": "defaults-transition"}] ] , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"} } } , "default-GRPC_PLUGIN": { "vars": ["defaults-transition"] , "imports": {"list_provider": ["./", "../..", "field_list_provider"]} , "expression": { "type": "let*" , "bindings": [ ["fieldname", "proto-defaults"] , ["provider", "GRPC_PLUGIN"] , ["transition", {"type": "var", "name": "defaults-transition"}] ] , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"} } } , "default-ENV": { "vars": ["defaults-transition"] , "imports": {"map_provider": ["./", "../..", "field_map_provider"]} , "expression": { "type": "let*" , "bindings": [ ["fieldname", "proto-defaults"] , ["provider", "ENV"] , ["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", "proto-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"]} , "expression": { "type": "let*" , "bindings": [ ["fieldname", "proto-defaults"] , ["provider", "TOOLCHAIN"] , ["transition", {"type": "var", "name": "defaults-transition"}] , ["default", {"type": "empty_map"}] ] , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"} } } , "default-NON_SYSTEM_TOOLS": { "vars": ["defaults-transition"] , "expression": { "type": "map_union" , "$1": { "type": "foreach" , "var": "x" , "range": {"type": "FIELD", "name": "proto-defaults"} , "body": { "type": "DEP_PROVIDES" , "dep": {"type": "var", "name": "x"} , "provider": "NON_SYSTEM_TOOLS" , "transition": { "type": "var" , "name": "defaults-transition" , "default": {"type": "empty_map"} } , "default": {"type": "empty_map"} } } } } , "protoc-deps": { "imports": {"map_provider": ["./", "../..", "field_map_provider"]} , "expression": { "type": "let*" , "bindings": [["fieldname", "deps"], ["provider", "protoc-deps"]] , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"} } } , "protoc-compile": { "vars": [ "CXX" , "CXXFLAGS" , "ADD_CXXFLAGS" , "AR" , "ENV" , "DEBUG" , "name" , "stage" , "service support" , "public-fieldnames" , "private-fieldnames" ] , "imports": { "stage": ["", "stage_singleton_field"] , "result": ["./", "..", "lib result"] , "runfiles": ["./", "../..", "field_runfiles"] , "artifacts_list": ["./", "../..", "field_artifacts_list"] , "protoc-deps": "protoc-deps" , "default-PROTOC": "default-PROTOC" , "default-PROTOCFLAGS": "default-PROTOCFLAGS" , "default-LDFLAGS": "default-LDFLAGS" , "default-GRPC_PLUGIN": "default-GRPC_PLUGIN" , "default-ENV": "default-ENV" , "default-PATH": "default-PATH" , "default-TOOLCHAIN": "default-TOOLCHAIN" , "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS" } , "expression": { "type": "let*" , "bindings": [ ["pure C", false] , ["TOOLCHAIN_DIR", "toolchain"] , ["TOOLCHAIN", {"type": "CALL_EXPRESSION", "name": "default-TOOLCHAIN"}] , [ "TOOLCHAIN" , { "type": "to_subdir" , "subdir": {"type": "var", "name": "TOOLCHAIN_DIR"} , "$1": {"type": "var", "name": "TOOLCHAIN"} } ] , [ "NON_SYSTEM_TOOLS" , {"type": "CALL_EXPRESSION", "name": "default-NON_SYSTEM_TOOLS"} ] , [ "PROTOC" , { "type": "join" , "$1": { "type": "++" , "$1": [ { "type": "if" , "cond": { "type": "lookup" , "key": "PROTOC" , "map": {"type": "var", "name": "NON_SYSTEM_TOOLS"} } , "then": ["./", {"type": "var", "name": "TOOLCHAIN_DIR"}, "/"] } , {"type": "CALL_EXPRESSION", "name": "default-PROTOC"} ] } } ] , [ "GRPC_PLUGIN" , { "type": "join" , "$1": { "type": "++" , "$1": [ { "type": "if" , "cond": { "type": "lookup" , "key": "GRPC_PLUGIN" , "map": {"type": "var", "name": "NON_SYSTEM_TOOLS"} } , "then": ["./", {"type": "var", "name": "TOOLCHAIN_DIR"}, "/"] } , {"type": "CALL_EXPRESSION", "name": "default-GRPC_PLUGIN"} ] } } ] , [ "ENV" , { "type": "map_union" , "$1": [ {"type": "CALL_EXPRESSION", "name": "default-ENV"} , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} ] } ] , [ "ENV_PATH" , { "type": "lookup" , "map": {"type": "var", "name": "ENV"} , "key": "PATH" } ] , [ "protoc-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"}] } ] } } } ] } ] , ["protoc-deps", {"type": "CALL_EXPRESSION", "name": "protoc-deps"}] , [ "proto srcs" , { "type": "disjoint_map_union" , "msg": "Sources may not conflict" , "$1": { "type": "let*" , "bindings": [["fieldname", "srcs"]] , "body": {"type": "CALL_EXPRESSION", "name": "artifacts_list"} } } ] , [ "all proto srcs" , { "type": "disjoint_map_union" , "msg": "Conflict with proto files of dependencies" , "$1": [ {"type": "var", "name": "protoc-deps"} , {"type": "var", "name": "proto srcs"} ] } ] , [ "staged srcs" , { "type": "to_subdir" , "subdir": "work" , "$1": {"type": "var", "name": "proto srcs"} } ] , [ "staged all proto srcs" , { "type": "to_subdir" , "subdir": "work" , "$1": {"type": "var", "name": "all proto srcs"} } ] , [ "outs" , { "type": "++" , "$1": { "type": "foreach" , "var": "f" , "range": {"type": "keys", "$1": {"type": "var", "name": "staged srcs"}} , "body": { "type": "++" , "$1": [ [ { "type": "change_ending" , "$1": {"type": "var", "name": "f"} , "ending": ".pb.h" } , { "type": "change_ending" , "$1": {"type": "var", "name": "f"} , "ending": ".pb.cc" } ] , { "type": "if" , "cond": {"type": "var", "name": "service support"} , "then": [ { "type": "change_ending" , "$1": {"type": "var", "name": "f"} , "ending": ".grpc.pb.h" } , { "type": "change_ending" , "$1": {"type": "var", "name": "f"} , "ending": ".grpc.pb.cc" } ] , "else": [] } ] } } } ] , [ "cmd" , { "type": "++" , "$1": [ [{"type": "var", "name": "PROTOC"}] , {"type": "CALL_EXPRESSION", "name": "default-PROTOCFLAGS"} , ["--proto_path=work", "--cpp_out=work"] , { "type": "if" , "cond": {"type": "var", "name": "service support"} , "then": [ "--grpc_out=work" , { "type": "join" , "$1": [ "--plugin=protoc-gen-grpc=" , {"type": "var", "name": "GRPC_PLUGIN"} ] } ] , "else": [] } , {"type": "keys", "$1": {"type": "var", "name": "staged srcs"}} ] } ] , [ "generated" , { "type": "ACTION" , "inputs": { "type": "map_union" , "$1": [ {"type": "var", "name": "staged all proto srcs"} , {"type": "var", "name": "TOOLCHAIN"} ] } , "outs": {"type": "var", "name": "outs"} , "cmd": {"type": "var", "name": "cmd"} , "env": {"type": "var", "name": "protoc-ENV"} } ] , [ "srcs" , { "type": "map_union" , "$1": { "type": "foreach" , "var": "name" , "range": {"type": "keys", "$1": {"type": "var", "name": "proto srcs"}} , "body": { "type": "map_union" , "$1": [ { "type": "singleton_map" , "key": { "type": "change_ending" , "$1": {"type": "var", "name": "name"} , "ending": ".pb.cc" } , "value": { "type": "lookup" , "map": {"type": "var", "name": "generated"} , "key": { "type": "join" , "$1": [ "work/" , { "type": "change_ending" , "$1": {"type": "var", "name": "name"} , "ending": ".pb.cc" } ] } } } , { "type": "if" , "cond": {"type": "var", "name": "service support"} , "then": { "type": "singleton_map" , "key": { "type": "change_ending" , "$1": {"type": "var", "name": "name"} , "ending": ".grpc.pb.cc" } , "value": { "type": "lookup" , "map": {"type": "var", "name": "generated"} , "key": { "type": "join" , "$1": [ "work/" , { "type": "change_ending" , "$1": {"type": "var", "name": "name"} , "ending": ".grpc.pb.cc" } ] } } } , "else": {"type": "empty_map"} } ] } } } ] , [ "hdrs" , { "type": "map_union" , "$1": { "type": "foreach" , "var": "name" , "range": {"type": "keys", "$1": {"type": "var", "name": "proto srcs"}} , "body": { "type": "map_union" , "$1": [ { "type": "singleton_map" , "key": { "type": "change_ending" , "$1": {"type": "var", "name": "name"} , "ending": ".pb.h" } , "value": { "type": "lookup" , "map": {"type": "var", "name": "generated"} , "key": { "type": "join" , "$1": [ "work/" , { "type": "change_ending" , "$1": {"type": "var", "name": "name"} , "ending": ".pb.h" } ] } } } , { "type": "if" , "cond": {"type": "var", "name": "service support"} , "then": { "type": "singleton_map" , "key": { "type": "change_ending" , "$1": {"type": "var", "name": "name"} , "ending": ".grpc.pb.h" } , "value": { "type": "lookup" , "map": {"type": "var", "name": "generated"} , "key": { "type": "join" , "$1": [ "work/" , { "type": "change_ending" , "$1": {"type": "var", "name": "name"} , "ending": ".grpc.pb.h" } ] } } } , "else": {"type": "empty_map"} } ] } } } ] , ["private-hdrs", {"type": "empty_map"}] , [ "extra-provides" , { "type": "singleton_map" , "key": "protoc-deps" , "value": {"type": "var", "name": "all proto srcs"} } ] , ["cflags", []] , ["private-cflags", []] , [ "private-ldflags" , {"type": "CALL_EXPRESSION", "name": "default-LDFLAGS"} ] ] , "body": {"type": "CALL_EXPRESSION", "name": "result"} } } }