Support more configurability in GN toolchains

This uses substitution patterns in toolchains to allow the toolchain to specify more flexibly how files are to be named and generated at each step. The toolchain now has control over the naming of object and executable files, for example, where before these were hardcoded.

This removes most of the OS-specific logic hardcoded into the GN tool. There is still a bunch in action invocation; this will be done in a followup.

R=jamesr@chromium.org

Review URL: https://codereview.chromium.org/440333002

Cr-Original-Commit-Position: refs/heads/master@{#290685}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 0dfcae783a9285e3a3099f7098f076ef7b093f6e
81 files changed
tree: ffa7549dbbcbe31129fdc19439af5eceb10438b1
  1. tools/