1# Copyright 2014 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
5config("sdch_config") {
6  include_dirs = [ "open-vcdiff/src" ]
7}
8
9static_library("sdch") {
10  sources = [
11    "logging_forward.h",
12    "open-vcdiff/src/addrcache.cc",
13    "open-vcdiff/src/blockhash.cc",
14    "open-vcdiff/src/blockhash.h",
15    "open-vcdiff/src/checksum.h",
16    "open-vcdiff/src/codetable.cc",
17    "open-vcdiff/src/codetable.h",
18    "open-vcdiff/src/compile_assert.h",
19    "open-vcdiff/src/decodetable.cc",
20    "open-vcdiff/src/decodetable.h",
21    "open-vcdiff/src/encodetable.cc",
22    "open-vcdiff/src/encodetable.h",
23    "open-vcdiff/src/google/output_string.h",
24    "open-vcdiff/src/google/vcdecoder.h",
25    "open-vcdiff/src/headerparser.cc",
26    "open-vcdiff/src/headerparser.h",
27    "open-vcdiff/src/instruction_map.cc",
28    "open-vcdiff/src/instruction_map.h",
29    "open-vcdiff/src/rolling_hash.h",
30    "open-vcdiff/src/testing.h",
31    "open-vcdiff/src/varint_bigendian.cc",
32    "open-vcdiff/src/varint_bigendian.h",
33    "open-vcdiff/src/vcdecoder.cc",
34    "open-vcdiff/src/vcdiff_defs.h",
35    "open-vcdiff/src/vcdiffengine.cc",
36    "open-vcdiff/src/vcdiffengine.h",
37    "open-vcdiff/vsprojects/config.h",
38    "open-vcdiff/vsprojects/stdint.h",
39  ]
40
41  public_configs = [ ":sdch_config" ]
42
43  deps = [
44    "//base",
45    "//third_party/zlib",
46  ]
47
48  if (is_linux || is_android) {
49    include_dirs = [ "linux" ]
50  } else if (is_ios) {
51    include_dirs = [ "ios" ]
52  } else if (is_mac) {
53    include_dirs = [ "mac" ]
54  } else if (is_win) {
55    include_dirs = [ "win" ]
56  }
57
58  # open-vcdiff's logging.h introduces static initializers. This was
59  # reported upstream years ago (
60  # https://code.google.com/p/open-vcdiff/issues/detail?id=33 ). Since
61  # upstream won't fix this, work around it on the chromium side:
62  # Inject a header that forwards to base/logging.h instead (which doesn't
63  # introduce static initializers, and which prevents open-vcdiff's
64  # logging.h from being used).
65  if (is_win) {
66    cflags = [
67      "/FI", "sdch/logging_forward.h",
68    ]
69  } else {
70    logging_file = rebase_path("logging_forward.h", root_build_dir)
71    cflags = [ "-include", logging_file ]
72    if (is_linux) {
73      # TODO(mostynb): remove this if open-vcdiff is ever updated for c++11:
74      cflags += [ "-Wno-deprecated-declarations" ]
75    }
76  }
77}
78