tree: fefd26762e0e94c3340c99a209df571e353be5d6 [path history] [tgz]
  1. README.md
build/args/chromeos/README.md

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.