# Copyright (c) 2013 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("clang.gni")
import("//build/config/chromecast_build.gni")

config("find_bad_constructs") {
  if (clang_use_chrome_plugins) {
    cflags = []

    # On Windows, the plugin is built directly into clang, so there's
    # no need to load it dynamically.

    if (is_mac || is_ios) {
      cflags += [
        "-Xclang",
        "-load",
        "-Xclang",
        rebase_path(
            "//third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.dylib",
            root_build_dir),
      ]
    } else if (is_linux || is_android) {
      cflags += [
        "-Xclang",
        "-load",
        "-Xclang",
        rebase_path(
            "//third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so",
            root_build_dir),
      ]
    }

    cflags += [
      "-Xclang",
      "-add-plugin",
      "-Xclang",
      "find-bad-constructs",
      "-Xclang",
      "-plugin-arg-find-bad-constructs",
      "-Xclang",
      "check-templates",
      "-Xclang",
      "-plugin-arg-find-bad-constructs",
      "-Xclang",
      "follow-macro-expansion",
      "-Xclang",
      "-plugin-arg-find-bad-constructs",
      "-Xclang",
      "check-implicit-copy-ctors",
    ]

    if ((is_linux || is_android) && !is_chromecast) {
      cflags += [
        "-Xclang",
        "-plugin-arg-find-bad-constructs",
        "-Xclang",
        "check-ipc",
      ]
    }
  }
}

# Enables some extra Clang-specific warnings. Some third-party code won't
# compile with these so may want to remove this config.
config("extra_warnings") {
  cflags = [
    "-Wheader-hygiene",

    # Warns when a const char[] is converted to bool.
    "-Wstring-conversion",
  ]
}
