1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5{
6  'variables': {
7    'chromium_code': 1,
8  },
9  'targets': [
10    {
11      'target_name': 'sdch',
12      'type': 'static_library',
13      'dependencies': [
14        '../base/base.gyp:base',
15        '../third_party/zlib/zlib.gyp:zlib',
16      ],
17      'sources': [
18        'logging_forward.h',
19        'open-vcdiff/src/addrcache.cc',
20        'open-vcdiff/src/blockhash.cc',
21        'open-vcdiff/src/blockhash.h',
22        'open-vcdiff/src/checksum.h',
23        'open-vcdiff/src/codetable.cc',
24        'open-vcdiff/src/codetable.h',
25        'open-vcdiff/src/compile_assert.h',
26        'open-vcdiff/src/decodetable.cc',
27        'open-vcdiff/src/decodetable.h',
28        'open-vcdiff/src/encodetable.cc',
29        'open-vcdiff/src/encodetable.h',
30        'open-vcdiff/src/google/output_string.h',
31        'open-vcdiff/src/google/vcdecoder.h',
32        'open-vcdiff/src/google/vcencoder.h',
33        'open-vcdiff/src/headerparser.cc',
34        'open-vcdiff/src/headerparser.h',
35        'open-vcdiff/src/instruction_map.cc',
36        'open-vcdiff/src/instruction_map.h',
37        'open-vcdiff/src/jsonwriter.h',
38        'open-vcdiff/src/jsonwriter.cc',
39        'open-vcdiff/src/rolling_hash.h',
40        'open-vcdiff/src/testing.h',
41        'open-vcdiff/src/varint_bigendian.cc',
42        'open-vcdiff/src/varint_bigendian.h',
43        'open-vcdiff/src/vcdecoder.cc',
44        'open-vcdiff/src/vcencoder.cc',
45        'open-vcdiff/src/vcdiff_defs.h',
46        'open-vcdiff/src/vcdiffengine.cc',
47        'open-vcdiff/src/vcdiffengine.h',
48        'open-vcdiff/vsprojects/config.h',
49        'open-vcdiff/vsprojects/stdint.h',
50      ],
51      'include_dirs': [
52        'open-vcdiff/src',
53      ],
54      'direct_dependent_settings': {
55        'include_dirs': [
56          'open-vcdiff/src',
57        ],
58      },
59      'conditions': [
60        [ 'OS == "linux" or OS == "android"', { 'include_dirs': [ 'linux' ] } ],
61        [ 'os_bsd==1 or OS=="solaris"', { 'include_dirs': [ 'bsd' ] } ],
62        [ 'OS == "ios"', { 'include_dirs': [ 'ios' ] } ],
63        [ 'OS == "mac"', { 'include_dirs': [ 'mac' ] } ],
64        [ 'OS == "win"', { 'include_dirs': [ 'win' ] } ],
65      ],
66      # open-vcdiff's logging.h introduces static initializers. This was
67      # reported upstream years ago (
68      # https://code.google.com/p/open-vcdiff/issues/detail?id=33 ). Since
69      # upstream won't fix this, work around it on the chromium side:
70      # Inject a header that forwards to base/logging.h instead (which doesn't
71      # introduce static initializers, and which prevents open-vcdiff's
72      # logging.h from being used).
73      'variables': {
74        'logging_path': 'logging_forward.h',
75        'conditions': [
76          # gyp leaves unspecified what the cwd is when running the compiler,
77          # and gyp/linux doesn't have a built-in way for forcing an include.
78          # So hardcode the base directory. If this spreads, provide native
79          # support in gyp, like we have for gyp/mac and gyp/windows.
80          # path.
81          ['"<(GENERATOR)"=="ninja"', { 'logging_dir': '../..' },
82                                      { 'logging_dir': '.' }
83          ],
84        ],
85      },
86      # GCC_PREFIX_HEADER is relative to the current directory,
87      # ForcedIncludeFiles is relative to include_dirs, cflags relative to the
88      # build directory.
89      'xcode_settings': { 'GCC_PREFIX_HEADER': '<(logging_path)' },
90      'msvs_settings': {
91        'VCCLCompilerTool': {
92          'ForcedIncludeFiles': [
93            'sdch/<(logging_path)',
94          ]
95        }
96      },
97      'cflags': [
98        '-include', '<(logging_dir)/sdch/<(logging_path)',
99        # TODO(mostynb): remove this if open-vcdiff is ever updated for c++11:
100        '-Wno-deprecated-declarations',
101      ],
102    },
103  ],
104}
105