This directory is used to store GN arg mapping for Chrome OS boards.

Files in this directory are populated by running `gclient sync` with specific
arguments set in the .gclient file. Specifically:
* The file must have a top-level variable set: `target_os = ["chromeos"]`
* The `"custom_vars"` parameter of the chromium/src.git solution must include
  the parameter: `"cros_boards": "{BOARD_NAMES}"` where `{BOARD_NAMES}` is a
  colon-separated list of boards you'd like to checkout.
* If you'd like to a checkout a QEMU-bootable image for a given board, include
  it in the `cros_boards_with_qemu_images` var rather than the `cros_boards`
  var.

A typical .gclient file is a sibling of the src/ directory, and might look like
this:
```
solutions = [
  {
    "url": "https://chromium.googlesource.com/chromium/src.git",
    "managed": False,
    "name": "src",
    "custom_deps": {},
    "custom_vars" : {
        "checkout_src_internal": True,
        "cros_boards": "eve:kevin",
        # If a QEMU-bootable image is desired for any board, move it from
        # the previous var to the following:
        "cros_boards_with_qemu_images": "amd64-generic",
    },
  },
]
target_os = ["chromeos"]
```

To use these files in a build, simply add the following line to your GN args:
```
import("//build/args/chromeos/${some_board}.gni")
```

That will produce a Chrome OS build of Chrome very similar to what is shipped
for that device. You can also supply additional args or even overwrite ones
supplied in the .gni file after the `import()` line. For example, the following
args will produce a debug build of Chrome for board=eve using goma:
```
import("//build/args/chromeos/eve.gni")

is_debug = true
use_goma = true
goma_dir = "/path/to/goma/"
```

TODO(bpastene): Make 'cros_boards' a first class citizen in gclient and replace
it with 'target_boards' instead.
