Introduce structured build variables in Crosstool

This cl adds a 3rd type of build variable - structs. Structs have fields, which
can hold any build variable type (including structs). In the CROSSTOOl, the
fields are accessed by the dot-notation, e.g.:

    flag_group {
      iterate_over: "libraries_to_link
      flag_group {
        iterate_over: "libraries_to_link.libraries"
        flag: "-L%{libraries_to_link.libraries.directory}"
      }
    }

As a memory optimization, we also add StructureSequences. These save us from
the overhead of individual StructureValue objects.

RELNOTES: NONE
PiperOrigin-RevId: 138851774
1 file changed
tree: becd39e5dbd59df25cabf6be7ae9a36a76158e7b
  1. third_party/