# Copyright 2017 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/coverage/coverage.gni")

config("default_coverage") {
  if (use_clang_coverage) {
    cflags = [
      "-fprofile-instr-generate",
      "-fcoverage-mapping",

      # Following experimental flags removes unused header functions from the
      # coverage mapping data embedded in the test binaries, and the reduction
      # of binary size enables building Chrome's large unit test targets on
      # MacOS. Please refer to crbug.com/796290 for more details.
      "-mllvm",
      "-limited-coverage-experimental=true",
    ]

    ldflags = []
    if (!is_win) {
      ldflags += [ "-fprofile-instr-generate" ]
      cflags += [ "-fno-use-cxa-atexit" ]
    } else {
      # Windows directly calls link.exe instead of the compiler driver when
      # linking.  Hence, pass the runtime libraries instead of
      # -fsanitize=address.
      # TODO(rnk): Come up with a more uniform approach for linking against
      # compiler-rt for sanitizers and coverage.
      if (target_cpu == "x64") {
        ldflags += [ "clang_rt.profile-x86_64.lib" ]
      } else if (target_cpu == "x86") {
        ldflags += [ "clang_rt.profile-i386.lib" ]
      } else {
        assert(false &&
               "use_clang_coverage=true not supported yet for this target_cpu")
      }
    }
  }
}
