blob: 92169eba3b0bc001b1cd800eb86b010a24414678 [file] [log] [blame]
# Copyright 2017 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.
{
'target_defaults': {
'variables': {
'deps': [
'libbrillo-<(libbase_ver)',
'libchrome-<(libbase_ver)',
],
},
'cflags': [
'-Wextra',
],
'cflags_cc': [
'-Wnon-virtual-dtor',
],
'include_dirs': [
'src/include',
],
'defines': [
'USE_BRILLO=1',
],
},
'targets': [
# libpuffin-proto library
{
'target_name': 'libpuffin-proto',
'type': 'static_library',
'variables': {
'proto_in_dir': 'src',
'proto_out_dir': 'include/puffin/src',
},
'cflags!': ['-fPIE'],
'cflags': ['-fPIC'],
'all_dependent_settings': {
'variables': {
'deps': [
'protobuf-lite',
],
},
},
'sources': [
'<(proto_in_dir)/puffin.proto',
],
'includes': ['../../platform2/common-mk/protoc.gypi'],
},
# puffpatch static library. The reason to do one static and one shared is to
# be able to run the unittest.
{
'target_name': 'libpuffpatch-static',
'type': 'static_library',
'cflags!': ['-fPIE'],
'cflags': ['-fPIC'],
'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',
],
'all_dependent_settings': {
'link_settings': {
'libraries': [
'-lbspatch',
],
},
},
},
# puffdiff static library.
{
'target_name': 'libpuffdiff-static',
'type': 'static_library',
'cflags!': ['-fPIE'],
'cflags': ['-fPIC'],
'sources': [
'src/file_stream.cc',
'src/memory_stream.cc',
'src/puffdiff.cc',
'src/utils.cc',
],
'all_dependent_settings': {
'link_settings': {
'libraries': [
'-lbsdiff',
],
},
},
},
# puffpatch shared library.
{
'target_name': 'libpuffpatch',
'type': 'shared_library',
'dependencies': [
'libpuffin-proto',
'libpuffpatch-static',
],
},
# puffdiff shared library.
{
'target_name': 'libpuffdiff',
'type': 'shared_library',
'dependencies': [
'libpuffin-proto',
'libpuffdiff-static',
'libpuffpatch-static',
],
},
# Puffin executable. We don't use the shared libraries because then we have
# to export symbols that shouldn't be exported otherwise.
{
'target_name': 'puffin',
'type': 'executable',
'dependencies': [
'libpuffin-proto',
'libpuffdiff-static',
'libpuffpatch-static',
],
'sources': [
'src/extent_stream.cc',
'src/main.cc',
],
},
],
# unit tests.
'conditions': [
['USE_test == 1', {
'targets': [
# Samples generator.
{
'target_name': 'libsample_generator',
'type': 'static_library',
'sources': [
'src/sample_generator.cc',
],
'all_dependent_settings': {
'variables': {
'deps': [
'zlib',
],
},
},
},
# Unit tests.
{
'target_name': 'puffin_unittest',
'type': 'executable',
'dependencies': [
'libpuffin-proto',
'libpuffdiff-static',
'libpuffpatch-static',
'libsample_generator',
'../../platform2/common-mk/testrunner.gyp:testrunner',
],
'includes': ['../../platform2/common-mk/common_test.gypi'],
'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/utils_unittest.cc',
],
},
],
}],
],
}