# 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) {
    ldflags = []
    if (!is_win) {
      ldflags += [ "-fprofile-instr-generate" ]
    } 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")
      }
    }

    # Coverage flags are only on by default when instrument all source files.
    # Otherwise, coverage flags are dynamically passed to the compile command
    # via the //build/toolchain/clang_code_coverage_wrapper.py script.
    if (coverage_instrumentation_input_file == "") {
      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",
      ]

      if (!is_win) {
        cflags += [ "-fno-use-cxa-atexit" ]
      }
    }
  }
}
