Index: sdch/BUILD.gn |
diff --git a/sdch/BUILD.gn b/sdch/BUILD.gn |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3ceeeb47b054c9dd609819bf006889a8e0660bda |
--- /dev/null |
+++ b/sdch/BUILD.gn |
@@ -0,0 +1,99 @@ |
+# 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/google/vcencoder.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/jsonwriter.cc", |
+ "open-vcdiff/src/jsonwriter.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/src/vcencoder.cc", |
+ "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, |
+ ] |
+ } |
+} |