GN: Do not serialize builds on targets with no public deps.

When binary target A does not have a public header, a binary target B that
depends on A does not need to wait for A's hard deps to finish. But,
in current GN, it does.

Such dependencies unnecessarily serialize the build and sometimes long compile
task significantly impact the overall build speed. This CL deserializes
the dependencies so that B does not wait on A.

This is an implementation of
https://groups.google.com/a/chromium.org/d/msg/gn-dev/1DiphV5ZnqU/c85P4ctvAQAJ

We will use this to optimize the build dependencies, especially for the
dependencies between v8 and chrome.

Bug: 578477
Change-Id: If3dffc68557a365f034e74033fa88b5b7bbdbd53
Reviewed-on: https://chromium-review.googlesource.com/1032320
Commit-Queue: Takuto Ikuta <tikuta@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Reviewed-by: Brett Wilson <brettw@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#554896}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 94042177671bb236911fc042b651fa34eb5bd939
4 files changed
tree: b7df56a00cb1d1bb2e05c36ee23fe9df5d8c4537
  1. tools/