blob: f6df14b107f4e1675f61c6bbb239af8962204a6a [file] [log] [blame]
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//common-mk/pkg_config.gni")
import("//common-mk/proto_library.gni")
group("all") {
deps = [
":libpuffin-proto",
":libpuffdiff",
":libpuffpatch",
":puffin",
]
if (use.test) {
deps += [ ":puffin_test" ]
}
if (use.fuzzer) {
deps += [ ":puffin_fuzzer" ]
}
}
pkg_config("target_defaults") {
pkg_deps = [
"libchrome-${libbase_ver}",
"libbrillo-${libbase_ver}",
"protobuf-lite",
]
cflags = [ "-Wextra" ]
cflags_cc = [ "-Wnon-virtual-dtor" ]
include_dirs = [ "src/include" ]
defines = [
"USE_BRILLO",
"_FILE_OFFSET_BITS=64",
]
}
proto_library("libpuffin-proto") {
proto_in_dir = "src"
proto_out_dir = "include/puffin/src"
sources = [
"src/puffin.proto",
]
}
pkg_config("libpuffpatch_config") {
pkg_deps = [
"libbspatch",
]
}
static_library("libpuffpatch") {
configs += [
"//common-mk:nouse_thin_archive",
":target_defaults",
":libpuffpatch_config",
]
configs -= [ "//common-mk:use_thin_archive" ]
complete_static_lib = true
deps = [ ":libpuffin-proto" ]
sources = [
"src/bit_reader.cc",
"src/bit_writer.cc",
"src/huffer.cc",
"src/huffman_table.cc",
"src/puff_reader.cc",
"src/puff_writer.cc",
"src/puffer.cc",
"src/puffin_stream.cc",
"src/puffpatch.cc",
]
}
pkg_config("libpuffdiff_config") {
pkg_deps = [
"libbsdiff",
]
}
static_library("libpuffdiff") {
configs += [
"//common-mk:nouse_thin_archive",
":target_defaults",
":libpuffdiff_config",
]
configs -= [ "//common-mk:use_thin_archive" ]
deps = [
":libpuffpatch",
]
sources = [
"src/file_stream.cc",
"src/memory_stream.cc",
"src/puffdiff.cc",
"src/utils.cc",
]
}
executable("puffin") {
configs += [
":target_defaults",
]
deps = [
":libpuffdiff",
]
sources = [
"src/extent_stream.cc",
"src/main.cc",
]
}
if (use.test) {
executable("puffin_test") {
configs += [
"//common-mk:test",
":target_defaults",
]
sources = [
"src/bit_io_unittest.cc",
"src/extent_stream.cc",
"src/patching_unittest.cc",
"src/puff_io_unittest.cc",
"src/puffin_unittest.cc",
"src/stream_unittest.cc",
"src/unittest_common.cc",
"src/utils_unittest.cc",
]
deps = [
"//common-mk/testrunner",
":libpuffdiff",
]
}
}
if (use.fuzzer) {
executable("puffin_fuzzer") {
configs += [
"//common-mk/common_fuzzer",
":target_defaults",
]
deps = [
":libpuffdiff",
]
sources = [
"src/fuzzer.cc",
]
}
}