# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/lto/config.gni")
import("//build/toolchain/variant.gni")

# This config is added unconditionally by BUILDCONFIG.gn to pick up the
# global `use_lto` build argument.  For fine-grained control, leave
# `use_lto=false` and use `select_variant` to choose the `lto` or `thinlto`
# variant for some components.
config("default") {
  if (use_lto) {
    if (use_thinlto) {
      configs = [ ":thinlto" ]
    } else {
      configs = [ ":lto" ]
    }
  }
}

variant("lto") {
  common_flags = [
    "-flto",

    # Enable whole-program devirtualization and virtual constant propagation.
    "-fwhole-program-vtables",
  ]
}

variant("thinlto") {
  common_flags = [ "-flto=thin" ]
  ldflags = [
    # The ThinLTO driver launches a number of threads in parallel whose
    # number is by default equivalent to the number of cores.  We need
    # to limit the parallelism to avoid aggressive competition between
    # different linker jobs.
    "-Wl,--thinlto-jobs=$thinlto_jobs",

    # Set the ThinLTO cache directory which is used to cache native
    # object files for ThinLTO incremental builds.  This directory is
    # not managed by Ninja and has to be cleaned manually, but it is
    # periodically garbage-collected by the ThinLTO driver.
    "-Wl,--thinlto-cache-dir=$thinlto_cache_dir",
  ]
}
