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

# Copyright (c) 2012, 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 a modified copy of src/third_party/zlib/zlib.gyp from Chromium.
# Revision 169195 (this should agree with "nss_rev" in DEPS).
{
  # Added by Dart. All Dart comments refer to the following block or line.
  'includes': [
    '../../tools/gyp/runtime-configurations.gypi',
    '../../tools/gyp/nss_configurations.gypi',
  ],
  'variables': {
    # Added by Dart.
    'zlib_path': '../../../third_party/zlib',
    'conditions': [
      [ 'OS=="none"', {
        # Because we have a patched zlib, we cannot use the system libz.
        # TODO(pvalchev): OpenBSD is purposefully left out, as the system
        # zlib brings up an incompatibility that breaks rendering.
        'use_system_zlib%': 1,
      }, {
        'use_system_zlib%': 0,
      }],
    ],
    'use_system_minizip%': 0,
  },
  # Added by Dart.  We do not indent, so diffs with the original are clearer.
  'conditions': [[ 'dart_io_support==1', {
  'targets': [
    {
      'target_name': 'zlib_dart',  # Added by Dart (the _dart postfix)
      'type': 'static_library',
      'conditions': [
        ['use_system_zlib==0', {
          # Changed by Dart: '<(zlib_directory)/' added to all paths.
          'sources': [
            '<(zlib_path)/adler32.c',
            '<(zlib_path)/compress.c',
            '<(zlib_path)/crc32.c',
            '<(zlib_path)/crc32.h',
            '<(zlib_path)/deflate.c',
            '<(zlib_path)/deflate.h',
            '<(zlib_path)/gzio.c',
            '<(zlib_path)/infback.c',
            '<(zlib_path)/inffast.c',
            '<(zlib_path)/inffast.h',
            '<(zlib_path)/inffixed.h',
            '<(zlib_path)/inflate.c',
            '<(zlib_path)/inflate.h',
            '<(zlib_path)/inftrees.c',
            '<(zlib_path)/inftrees.h',
            '<(zlib_path)/mozzconf.h',
            '<(zlib_path)/trees.c',
            '<(zlib_path)/trees.h',
            '<(zlib_path)/uncompr.c',
            '<(zlib_path)/zconf.h',
            '<(zlib_path)/zlib.h',
            '<(zlib_path)/zutil.c',
            '<(zlib_path)/zutil.h',
          ],
          'include_dirs': [
            '<(zlib_path)/.',
          ],
          'direct_dependent_settings': {
            'include_dirs': [
              '<(zlib_path)/.',
            ],
          },
          'conditions': [
            ['OS!="win"', {
              'product_name': 'chrome_zlib',
            }], ['OS=="android"', {
              'toolsets': ['target', 'host'],
            }],
          ],
        }, {
          'direct_dependent_settings': {
            'defines': [
              'USE_SYSTEM_ZLIB',
            ],
          },
          'defines': [
            'USE_SYSTEM_ZLIB',
          ],
          'link_settings': {
            'libraries': [
              '-lz',
            ],
          },
        }],
      ],
    },
    {
      'target_name': 'minizip_dart',  # Added by Dart (the _dart postfix)
      'type': 'static_library',
      'conditions': [
        ['use_system_minizip==0', {
          'sources': [
            '<(zlib_path)/contrib/minizip/ioapi.c',
            '<(zlib_path)/contrib/minizip/ioapi.h',
            '<(zlib_path)/contrib/minizip/iowin32.c',
            '<(zlib_path)/contrib/minizip/iowin32.h',
            '<(zlib_path)/contrib/minizip/unzip.c',
            '<(zlib_path)/contrib/minizip/unzip.h',
            '<(zlib_path)/contrib/minizip/zip.c',
            '<(zlib_path)/contrib/minizip/zip.h',
          ],
          'include_dirs': [
            '<(zlib_path)/.',
            '<(zlib_path)/../..',
          ],
          'direct_dependent_settings': {
            'include_dirs': [
              '<(zlib_path)/.',
            ],
          },
          'conditions': [
            ['OS!="win"', {
              'sources!': [
                '<(zlib_path)/contrib/minizip/iowin32.c'
              ],
            }],
            ['OS=="android"', {
              'toolsets': ['target', 'host'],
            }],
          ],
        }, {
          'direct_dependent_settings': {
            'defines': [
              'USE_SYSTEM_MINIZIP',
            ],
          },
          'defines': [
            'USE_SYSTEM_MINIZIP',
          ],
          'link_settings': {
            'libraries': [
              '-lminizip',
            ],
          },
        }],
        ['OS=="mac" or OS=="ios" or os_bsd==1 or OS=="android"', {
          # Mac, Android and the BSDs don't have fopen64, ftello64, or
          # fseeko64. We use fopen, ftell, and fseek instead on these
          # systems.
          'defines': [
            'USE_FILE32API'
          ],
        }],
        ['clang==1', {
          'xcode_settings': {
            'WARNING_CFLAGS': [
              # zlib uses `if ((a == b))` for some reason.
              '-Wno-parentheses-equality',
            ],
          },
          'cflags': [
            '-Wno-parentheses-equality',
          ],
        }],
      ],
    }
  ],
  }]],
}
