#
# Copyright 2014 The LibYuv Project Authors. All rights reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

# This is a copy of WebRTC's BUILD.gn.

if (is_win) {
  gflags_gen_arch_root = "gen/win"
} else {
  gflags_gen_arch_root = "gen/posix"
}

config("gflags_config") {
  include_dirs = [
    "$gflags_gen_arch_root/include",  # For configured files.
    "src/src",  # For everything else.
  ]

  defines = [
    # These macros exist so flags and symbols are properly exported when
    # building DLLs. Since we don't build DLLs, we need to disable them.
    "GFLAGS_DLL_DECL=",
    "GFLAGS_DLL_DECLARE_FLAG=",
    "GFLAGS_DLL_DEFINE_FLAG=",
  ]

  # GN orders flags on a target before flags from configs. The default config
  # adds -Wall, and this flag have to be after -Wall -- so they need to
  # come from a config and can't be on the target directly.
  if (is_clang) {
    cflags = [ "-Wno-unused-local-typedef" ]
  }
}

source_set("gflags") {
  cflags = []
  sources = [
    "src/src/gflags.cc",
    "src/src/gflags_completions.cc",
    "src/src/gflags_reporting.cc",
  ]
  if (is_win) {
    sources += [ "src/src/windows_port.cc" ]

    cflags += [
      "/wd4005",  # WIN32_LEAN_AND_MEAN.
      "/wd4267",  # Conversion from size_t to "type".
    ]
  }

  include_dirs = [
    "$gflags_gen_arch_root/include/gflags",  # For configured files.
    "$gflags_gen_arch_root/include/private",  # For config.h
  ]

  public_configs = [ ":gflags_config" ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]

  if (is_win) {
    configs -= [ "//build/config/win:unicode" ]
  }

  if (is_clang) {
    # TODO(andrew): Look into fixing this warning upstream:
    # http://code.google.com/p/webrtc/issues/detail?id=760
    configs -= [ "//build/config/clang:extra_warnings" ]
    cflags += [ "-Wno-microsoft-include" ]
  }
}
