# Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# This file is included to modify the configurations to build third-party
# code from BoringSSL.
# This code is C code, not C++, and is not warning-free, so we need to remove
# C++-specific flags, and add flags to supress the warnings in the code.
{
  'variables': {
    # Used by third_party/nss, which is from Chromium.
    # Include the built-in set of root certificate authorities.
    'exclude_nss_root_certs': 0,
    'os_posix%': 1,
    'os_bsd%': 0,
    'chromeos%': 0,
    'clang%': 0,
  },
  'target_defaults': {
    'cflags': [
      '-w',
      '-UHAVE_CVAR_BUILT_ON_SEM',
    ],
    # Removes these flags from the list cflags.
    'cflags!': [
      # NSS code from upstream mozilla builds with warnings,
      # so we must allow warnings without failing.
      '-Werror',
      '-Wall',
      '-ansi',
      # Not supported for C, only for C++.
      '-Wnon-virtual-dtor',
      '-Wno-conversion-null',
      '-fno-rtti',
      '-fvisibility-inlines-hidden',
      '-Woverloaded-virtual',
    ],
    'configurations': {
      'Dart_Base': {
        'xcode_settings': {
          'WARNING_CFLAGS': [
            '-w',
          ],
          'WARNING_CFLAGS!': [
            '-Wall',
            '-Wextra',
          ],
        },
      },
      # Dart_Macos_Debug and Dart_Macos_Release are merged after
      # Dart_Macos_Base, so we can override the 'ansi' and '-Werror' flags set
      # at the global level in tools/gyp/configurations_xcode.gypi.
      'Dart_Macos_Debug': {
        'abstract': 1,
        'xcode_settings': {
          # Remove 'ansi' setting.
          'GCC_C_LANGUAGE_STANDARD': 'c99',
          'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO', # -Werror off
        },
      },
      'Dart_Macos_Release': {
        'abstract': 1,
        'xcode_settings': {
          # Remove 'ansi' setting.
          'GCC_C_LANGUAGE_STANDARD': 'c99',
          'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO', # -Werror off
        },
      },
      # Disable hand-coded assembly routines on ARMv6 and ARMv5TE.
      'Dart_armv6_Base': {
        'abstract': 1,
        'defines': [
          'OPENSSL_NO_ASM',
        ],
      },
      'Dart_armv5te_Base': {
        'abstract': 1,
        'defines': [
          'OPENSSL_NO_ASM',
        ],
      },
      # TODO(24321): Also disable temporarily on arm64. Reenable after the next
      # roll.
      'Dart_arm64_Base': {
        'abstract': 1,
        'defines': [
          'OPENSSL_NO_ASM',
        ],
      },
      # Android 64-bit dbc build is for arm64, disable temporarily as well.
      'Dart_Android_arm64_Base': {
        'abstract': 1,
        'defines': [
          'OPENSSL_NO_ASM',
        ],
      },
      # When being built for Android nss expects __linux__ to be defined.
      'Dart_Android_Base': {
        'target_conditions': [
          ['_toolset=="host"', {
            'defines!': [
              'ANDROID',
            ],
            # Define __linux__ on Android build for NSS.
            'defines': [
              '__linux__',
            ],
            'cflags!': [
              '-U__linux__',
            ],
          }],
          ['_toolset=="target"', {
            'defines': [
              '__linux__',
              'CHECK_FORK_GETPID',  # Android does not provide pthread_atfork.
              '__USE_LARGEFILE64',
            ],
            # Define __linux__ on Android build for NSS.
            'cflags!': [
              '-U__linux__',
            ],
          }]
        ],
      },
    },
  },
}
