summaryrefslogtreecommitdiff
path: root/CC/IDE/RULES
blob: dc4b607af12bf1754d6337571217b6ede42ff3be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
{ "headers":
  { "doc": ["Transitive public headers of C++ target"]
  , "target_fields": ["proto", "deps"]
  , "string_fields": ["stage"]
  , "field_doc":
    { "proto": ["The proto source files for creating cc bindings."]
    , "deps": ["The targets to obtain the headers from."]
    , "stage":
      [ "The logical location of the header files. Individual directory"
      , "components are joined with \"/\"."
      ]
    }
  , "anonymous":
    { "proto-deps":
      { "target": "proto"
      , "provider": "proto"
      , "rule_map":
        { "library": ["./", "../proto", "library"]
        , "service library": ["./", "../proto", "service library"]
        }
      }
    }
  , "imports": {"runfiles_list": ["./", "../..", "field_runfiles_list"]}
  , "expression":
    { "type": "let*"
    , "bindings":
      [ [ "stage"
        , { "type": "join"
          , "separator": "/"
          , "$1": {"type": "FIELD", "name": "stage"}
          }
        ]
      , [ "artifacts"
        , { "type": "to_subdir"
          , "subdir": {"type": "var", "name": "stage"}
          , "$1":
            { "type": "map_union"
            , "$1":
              { "type": "++"
              , "$1":
                [ { "type": "let*"
                  , "bindings": [["fieldname", "proto-deps"]]
                  , "body":
                    {"type": "CALL_EXPRESSION", "name": "runfiles_list"}
                  }
                , { "type": "foreach"
                  , "var": "x"
                  , "range": {"type": "FIELD", "name": "proto-deps"}
                  , "body":
                    { "type": "DEP_PROVIDES"
                    , "provider": "compile-deps"
                    , "dep": {"type": "var", "name": "x"}
                    , "default":
                      { "type": "fail"
                      , "msg":
                        [ "Expected a library target, but got:"
                        , {"type": "var", "name": "x"}
                        ]
                      }
                    }
                  }
                , { "type": "let*"
                  , "bindings": [["fieldname", "deps"]]
                  , "body":
                    {"type": "CALL_EXPRESSION", "name": "runfiles_list"}
                  }
                , { "type": "foreach"
                  , "var": "x"
                  , "range": {"type": "FIELD", "name": "deps"}
                  , "body":
                    { "type": "DEP_PROVIDES"
                    , "provider": "compile-deps"
                    , "dep": {"type": "var", "name": "x"}
                    , "default":
                      { "type": "fail"
                      , "msg":
                        [ "Expected a library target, but got:"
                        , {"type": "var", "name": "x"}
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      ]
    , "body":
      { "type": "RESULT"
      , "artifacts": {"type": "var", "name": "artifacts"}
      , "runfiles": {"type": "var", "name": "artifacts"}
      }
    }
  }
}