| # Copyright 2014 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. |
| |
| config("sdch_config") { |
| include_dirs = [ "open-vcdiff/src" ] |
| } |
| |
| static_library("sdch") { |
| sources = [ |
| "logging_forward.h", |
| "open-vcdiff/src/addrcache.cc", |
| "open-vcdiff/src/blockhash.cc", |
| "open-vcdiff/src/blockhash.h", |
| "open-vcdiff/src/checksum.h", |
| "open-vcdiff/src/codetable.cc", |
| "open-vcdiff/src/codetable.h", |
| "open-vcdiff/src/compile_assert.h", |
| "open-vcdiff/src/decodetable.cc", |
| "open-vcdiff/src/decodetable.h", |
| "open-vcdiff/src/encodetable.cc", |
| "open-vcdiff/src/encodetable.h", |
| "open-vcdiff/src/google/output_string.h", |
| "open-vcdiff/src/google/vcdecoder.h", |
| "open-vcdiff/src/headerparser.cc", |
| "open-vcdiff/src/headerparser.h", |
| "open-vcdiff/src/instruction_map.cc", |
| "open-vcdiff/src/instruction_map.h", |
| "open-vcdiff/src/rolling_hash.h", |
| "open-vcdiff/src/testing.h", |
| "open-vcdiff/src/varint_bigendian.cc", |
| "open-vcdiff/src/varint_bigendian.h", |
| "open-vcdiff/src/vcdecoder.cc", |
| "open-vcdiff/src/vcdiff_defs.h", |
| "open-vcdiff/src/vcdiffengine.cc", |
| "open-vcdiff/src/vcdiffengine.h", |
| "open-vcdiff/vsprojects/config.h", |
| "open-vcdiff/vsprojects/stdint.h", |
| ] |
| |
| public_configs = [ ":sdch_config" ] |
| |
| deps = [ |
| "//base", |
| "//third_party/zlib", |
| ] |
| |
| # gn orders flags on a target before flags from configs. The default config |
| # adds -Wall, and these flags have to be after -Wall -- so they need to come |
| # from a config and can't be on the target directly. |
| config("sdch_warnings") { |
| cflags = [] |
| if (is_linux) { |
| # TODO(mostynb): remove this if open-vcdiff is ever updated for c++11: |
| cflags += [ "-Wno-deprecated-declarations" ] |
| } |
| |
| if (is_clang) { |
| # sdch uses the pre-c++11 typedef-as-static_assert hack. |
| # https://code.google.com/p/open-vcdiff/issues/detail?id=44 |
| cflags += [ "-Wno-unused-local-typedef" ] |
| } |
| } |
| configs += [ ":sdch_warnings" ] |
| |
| if (is_linux || is_android) { |
| include_dirs = [ "linux" ] |
| } else if (is_ios) { |
| include_dirs = [ "ios" ] |
| } else if (is_mac) { |
| include_dirs = [ "mac" ] |
| } else if (is_win) { |
| include_dirs = [ "win" ] |
| } |
| |
| # open-vcdiff's logging.h introduces static initializers. This was |
| # reported upstream years ago ( |
| # https://code.google.com/p/open-vcdiff/issues/detail?id=33 ). Since |
| # upstream won't fix this, work around it on the chromium side: |
| # Inject a header that forwards to base/logging.h instead (which doesn't |
| # introduce static initializers, and which prevents open-vcdiff's |
| # logging.h from being used). |
| if (is_win) { |
| cflags = [ |
| "/FI", "sdch/logging_forward.h", |
| ] |
| } else { |
| logging_file = rebase_path("logging_forward.h", root_build_dir) |
| cflags = [ "-include", logging_file ] |
| } |
| } |