# Copyright (c) 2018 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.

# absl specific compiler flags.
#
# Flags specified here must not impact ABI. Code compiled with and without these
# opts will be linked together, and in some cases headers compiled with and
# without these options will be part of the same program.

group("default") {
  deps = [
    "absl/types:any",
    "absl/types:bad_any_cast",
    "absl/types:span",
    "absl/types:optional",
    "absl/types:bad_optional_access",
  ]
}

config("absl_include_config") {
  include_dirs = ["."]
}

config("absl_define_config") {
  defines = [ "ABSL_ALLOCATOR_NOTHROW=1" ]
}

config("absl_default_cflags_cc") {
  if (is_clang) {
    cflags_cc = [
      # All warnings are treated as errors by implicit -Werror flag
      "-Wall",
      "-Wextra",
      "-Weverything",
      # Abseil does not support C++98
      "-Wno-c++98-compat-pedantic",
      # Turns off all implicit conversion warnings. Most are re-enabled below.
      "-Wno-conversion",
      "-Wno-covered-switch-default",
      "-Wno-deprecated",
      "-Wno-disabled-macro-expansion",
      "-Wno-double-promotion",
      ###
      # Turned off as they include valid C++ code.
      "-Wno-comma",
      "-Wno-extra-semi",
      "-Wno-packed",
      "-Wno-padded",
      ###
      "-Wno-float-conversion",
      "-Wno-float-equal",
      "-Wno-format-nonliteral",
      # Too aggressive: warns on Clang extensions enclosed in Clang-only
      # compilation paths.
      "-Wno-gcc-compat",
      ###
      # Some internal globals are necessary. Don't do this at home.
      "-Wno-global-constructors",
      "-Wno-exit-time-destructors",
      ###
      "-Wno-nested-anon-types",
      "-Wno-non-modular-include-in-module",
      "-Wno-old-style-cast",
      # Warns on preferred usage of non-POD types such as string_view
      "-Wno-range-loop-analysis",
      "-Wno-reserved-id-macro",
      "-Wno-shorten-64-to-32",
      "-Wno-switch-enum",
      "-Wno-thread-safety-negative",
      "-Wno-undef",
      "-Wno-unknown-warning-option",
      "-Wno-unreachable-code",
      # Causes warnings on include guards
      "-Wno-unused-macros",
      "-Wno-weak-vtables",
      ###
      # Implicit conversion warnings turned off by -Wno-conversion
      # which are re-enabled below.
      "-Wbitfield-enum-conversion",
      "-Wbool-conversion",
      "-Wconstant-conversion",
      "-Wenum-conversion",
      "-Wint-conversion",
      "-Wliteral-conversion",
      "-Wnon-literal-null-conversion",
      "-Wnull-conversion",
      "-Wobjc-literal-conversion",
      "-Wno-sign-conversion",
      "-Wstring-conversion",
      ###
    ]
  } else {
    if (is_linux) {
      # GCC flags:
      cflags_cc = [
        "-Wall",
        "-Wextra",
        "-Wcast-qual",
        "-Wconversion-null",
        "-Wmissing-declarations",
        "-Woverlength-strings",
        "-Wpointer-arith",
        "-Wunused-local-typedefs",
        "-Wunused-result",
        "-Wvarargs",
        "-Wvla",  # variable-length array
        "-Wwrite-strings",
        # Google style does not use unsigned integers, though STL containers
        # have unsigned types.
        "-Wno-sign-compare",
      ]
    }
    if (is_win) {
      # MSVC flags:
      cflags_cc = [
        "/W3",
        "/WX",
        "/wd4005",  # macro-redefinition
        "/wd4068",  # unknown pragma
        # conversion from 'type1' to 'type2', possible loss of data
        "/wd4244",
        # conversion from 'size_t' to 'type', possible loss of data
        "/wd4267",
        # forcing value to bool 'true' or 'false' (performance warning)
        "/wd4800",
        # Don't define min and max macros (windows.h)
        "/DNOMINMAX",
        # Don't bloat namespace with incompatible winsock versions.
        "/DWIN32_LEAN_AND_MEAN",
        # Don't warn about usage of insecure C functions
        "/D_CRT_SECURE_NO_WARNINGS",
      ]
    }
  }
}

config("absl_test_cflags_cc") {
  if (is_clang) {
    cflags_cc = [
      "-Wno-c99-extensions",
      "-Wno-missing-noreturn",
      "-Wno-missing-prototypes",
      "-Wno-null-conversion",
      "-Wno-shadow",
      "-Wno-shift-sign-overflow",
      "-Wno-sign-compare",
      "-Wno-unused-function",
      "-Wno-unused-member-function",
      "-Wno-unused-parameter",
      "-Wno-unused-private-field",
      "-Wno-unused-template",
      "-Wno-used-but-marked-unused",
      "-Wno-zero-as-null-pointer-constant",
    ]
  } else {
    if (is_linux) {
      # GCC flags:
      cflags_cc = [
        "-Wno-conversion-null",
        "-Wno-missing-declarations",
        "-Wno-sign-compare",
        "-Wno-unused-function",
        "-Wno-unused-parameter",
        "-Wno-unused-private-field",
      ]
    }
    if (is_win) {
      # MSVC flags:
      cflags_cc = [
        "/wd4018",  # signed/unsigned mismatch
        "/wd4101",  # unreferenced local variable
        "/wd4503",  # decorated name length exceeded, name was truncated
      ]
    }
  }
}
