blob: 460aa58ec05dd76c0d9345a91fa50f6ccc224095 [file] [log] [blame]
Amin Hassanie2022882018-10-03 14:47:27 -07001# Copyright 2018 The Chromium OS 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
5import("//common-mk/pkg_config.gni")
6import("//common-mk/proto_library.gni")
7
8group("all") {
9 deps = [
10 ":libpuffin-proto",
11 ":libpuffdiff",
12 ":libpuffpatch",
13 ":puffin",
14 ]
15 if (use.test) {
16 deps += [ ":puffin_test" ]
17 }
18 if (use.fuzzer) {
Amin Hassaniba2b2a92019-10-09 16:00:58 -070019 deps += [
20 ":puffin_huff_fuzzer",
21 ":puffin_puff_fuzzer",
22 ":puffin_puffpatch_fuzzer",
23 ]
Amin Hassanie2022882018-10-03 14:47:27 -070024 }
25}
26
27pkg_config("target_defaults") {
28 pkg_deps = [
Qijiang Fan1e4473b2020-10-27 16:29:52 +090029 "libchrome",
Amin Hassanie2022882018-10-03 14:47:27 -070030 ]
Manoj Gupta3204c842020-01-18 11:06:34 -080031 if (use.fuzzer) {
32 # Link against protobuf for fuzzers so we can use libprotobuf-mutator.
33 pkg_deps += [ "protobuf" ]
34 } else {
35 pkg_deps += [ "protobuf-lite" ]
36 }
Amin Hassanie2022882018-10-03 14:47:27 -070037 cflags = [ "-Wextra" ]
38 cflags_cc = [ "-Wnon-virtual-dtor" ]
39 include_dirs = [ "src/include" ]
40 defines = [
41 "USE_BRILLO",
42 "_FILE_OFFSET_BITS=64",
43 ]
44}
45
46proto_library("libpuffin-proto") {
47 proto_in_dir = "src"
48 proto_out_dir = "include/puffin/src"
49 sources = [
50 "src/puffin.proto",
51 ]
52}
53
54pkg_config("libpuffpatch_config") {
55 pkg_deps = [
56 "libbspatch",
57 ]
58}
59
60static_library("libpuffpatch") {
61 configs += [
62 "//common-mk:nouse_thin_archive",
63 ":target_defaults",
64 ":libpuffpatch_config",
65 ]
66 configs -= [ "//common-mk:use_thin_archive" ]
67 complete_static_lib = true
68 deps = [ ":libpuffin-proto" ]
69 sources = [
70 "src/bit_reader.cc",
71 "src/bit_writer.cc",
72 "src/huffer.cc",
73 "src/huffman_table.cc",
74 "src/puff_reader.cc",
75 "src/puff_writer.cc",
76 "src/puffer.cc",
77 "src/puffin_stream.cc",
78 "src/puffpatch.cc",
79 ]
80}
81
82pkg_config("libpuffdiff_config") {
83 pkg_deps = [
84 "libbsdiff",
85 ]
86}
87static_library("libpuffdiff") {
88 configs += [
89 "//common-mk:nouse_thin_archive",
90 ":target_defaults",
91 ":libpuffdiff_config",
92 ]
93 configs -= [ "//common-mk:use_thin_archive" ]
94 deps = [
95 ":libpuffpatch",
96 ]
97 sources = [
98 "src/file_stream.cc",
99 "src/memory_stream.cc",
100 "src/puffdiff.cc",
101 "src/utils.cc",
102 ]
103}
104
Amin Hassanie8232e12019-01-04 10:49:59 -0800105pkg_config("libbrillo") {
106 pkg_deps = [
Qijiang Fane41898f2020-07-13 22:05:17 +0900107 "libbrillo",
Amin Hassanie8232e12019-01-04 10:49:59 -0800108 ]
109}
110
Amin Hassanie2022882018-10-03 14:47:27 -0700111executable("puffin") {
112 configs += [
Amin Hassanie8232e12019-01-04 10:49:59 -0800113 ":libbrillo",
Amin Hassanie2022882018-10-03 14:47:27 -0700114 ":target_defaults",
115 ]
116 deps = [
117 ":libpuffdiff",
118 ]
119 sources = [
120 "src/extent_stream.cc",
121 "src/main.cc",
122 ]
123}
124
125if (use.test) {
126 executable("puffin_test") {
127 configs += [
128 "//common-mk:test",
Amin Hassanie8232e12019-01-04 10:49:59 -0800129 ":libbrillo",
Amin Hassanie2022882018-10-03 14:47:27 -0700130 ":target_defaults",
131 ]
132 sources = [
133 "src/bit_io_unittest.cc",
134 "src/extent_stream.cc",
135 "src/patching_unittest.cc",
136 "src/puff_io_unittest.cc",
137 "src/puffin_unittest.cc",
138 "src/stream_unittest.cc",
139 "src/unittest_common.cc",
140 "src/utils_unittest.cc",
141 ]
142 deps = [
143 "//common-mk/testrunner",
144 ":libpuffdiff",
145 ]
146 }
147}
148
149if (use.fuzzer) {
Amin Hassaniba2b2a92019-10-09 16:00:58 -0700150 executable("puffin_huff_fuzzer") {
151 configs += [
152 "//common-mk/common_fuzzer",
153 ":libbrillo",
154 ":target_defaults",
155 ]
156 deps = [
157 ":libpuffpatch",
158 ]
159 sources = [
160 "src/fuzzer_huff.cc",
161 ]
162 }
163 executable("puffin_puff_fuzzer") {
164 configs += [
165 "//common-mk/common_fuzzer",
166 ":libbrillo",
167 ":target_defaults",
168 ]
169 deps = [
170 ":libpuffpatch",
171 ]
172 sources = [
173 "src/fuzzer_puff.cc",
174 ]
175 }
176 executable("puffin_puffpatch_fuzzer") {
Amin Hassanie2022882018-10-03 14:47:27 -0700177 configs += [
178 "//common-mk/common_fuzzer",
Amin Hassanie8232e12019-01-04 10:49:59 -0800179 ":libbrillo",
Amin Hassanie2022882018-10-03 14:47:27 -0700180 ":target_defaults",
181 ]
182 deps = [
183 ":libpuffdiff",
184 ]
185 sources = [
Amin Hassaniba2b2a92019-10-09 16:00:58 -0700186 "src/fuzzer_puffpatch.cc",
Amin Hassanie2022882018-10-03 14:47:27 -0700187 ]
188 }
189}