# Copyright 2019 The Chromium 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/chromeos/ui_mode.gni")

assert(is_chromeos_ash)

declare_args() {
  # The location to a file used to dump symbols ordered by Call-Chain Clustering (C3)
  # https://research.fb.com/wp-content/uploads/2017/01/cgo2017-hfsort-final1.pdf?
  # to a file, used for generating orderfiles in Chrome OS
  dump_call_chain_clustering_order = ""
}

declare_args() {
  # Whether or not we're using new pass manager to build and link Chrome
  use_new_pass_manager = dump_call_chain_clustering_order != ""
}

config("print_orderfile") {
  if (dump_call_chain_clustering_order != "") {
    _output_orderfile =
        rebase_path(dump_call_chain_clustering_order, root_build_dir)
    ldflags = [ "-Wl,--print-symbol-order=$_output_orderfile" ]
  }
}

config("compiler") {
  if (use_new_pass_manager) {
    cflags = [ "-fexperimental-new-pass-manager" ]
    ldflags = [ "-fexperimental-new-pass-manager" ]
  }
}
