xref: /aosp_15_r20/external/bsdiff/BUILD.gn (revision a3a45f308bd90ef1a6e6a5e8fb92fe449b895909)
1*a3a45f30SXin Li# Copyright (C) 2018 The Android Open Source Project
2*a3a45f30SXin Li#
3*a3a45f30SXin Li# Licensed under the Apache License, Version 2.0 (the "License");
4*a3a45f30SXin Li# you may not use this file except in compliance with the License.
5*a3a45f30SXin Li# You may obtain a copy of the License at
6*a3a45f30SXin Li#
7*a3a45f30SXin Li#      http://www.apache.org/licenses/LICENSE-2.0
8*a3a45f30SXin Li#
9*a3a45f30SXin Li# Unless required by applicable law or agreed to in writing, software
10*a3a45f30SXin Li# distributed under the License is distributed on an "AS IS" BASIS,
11*a3a45f30SXin Li# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*a3a45f30SXin Li# See the License for the specific language governing permissions and
13*a3a45f30SXin Li# limitations under the License.
14*a3a45f30SXin Li
15*a3a45f30SXin Liimport("//common-mk/pkg_config.gni")
16*a3a45f30SXin Li
17*a3a45f30SXin Ligroup("all") {
18*a3a45f30SXin Li  deps = [
19*a3a45f30SXin Li    ":bsdiff",
20*a3a45f30SXin Li    ":bspatch",
21*a3a45f30SXin Li    ":libbsdiff",
22*a3a45f30SXin Li    ":libbspatch",
23*a3a45f30SXin Li  ]
24*a3a45f30SXin Li  if (use.test) {
25*a3a45f30SXin Li    deps += [ ":bsdiff_test" ]
26*a3a45f30SXin Li  }
27*a3a45f30SXin Li  if (use.fuzzer) {
28*a3a45f30SXin Li    deps += [ ":bspatch_fuzzer" ]
29*a3a45f30SXin Li  }
30*a3a45f30SXin Li}
31*a3a45f30SXin Li
32*a3a45f30SXin Liconfig("target_defaults") {
33*a3a45f30SXin Li  cflags = [
34*a3a45f30SXin Li    "-Wextra",
35*a3a45f30SXin Li    "-Wno-unused-parameter",
36*a3a45f30SXin Li  ]
37*a3a45f30SXin Li  cflags_cc = [ "-Wnon-virtual-dtor" ]
38*a3a45f30SXin Li  defines = [ "_FILE_OFFSET_BITS=64" ]
39*a3a45f30SXin Li  include_dirs = [
40*a3a45f30SXin Li      "include",
41*a3a45f30SXin Li      # We need this include dir because we include all the local code as
42*a3a45f30SXin Li      # "bsdiff/...".
43*a3a45f30SXin Li      "${platform2_root}/../aosp/external",
44*a3a45f30SXin Li  ]
45*a3a45f30SXin Li  libs = [ "bz2" ]
46*a3a45f30SXin Li}
47*a3a45f30SXin Li
48*a3a45f30SXin Lipkg_config("libbspatch_config") {
49*a3a45f30SXin Li  pkg_deps = [ "libbrotlidec" ]
50*a3a45f30SXin Li}
51*a3a45f30SXin Li
52*a3a45f30SXin Listatic_library("libbspatch") {
53*a3a45f30SXin Li  configs += [
54*a3a45f30SXin Li   "//common-mk:nouse_thin_archive",
55*a3a45f30SXin Li   ":target_defaults",
56*a3a45f30SXin Li   ":libbspatch_config"
57*a3a45f30SXin Li  ]
58*a3a45f30SXin Li  configs -= [ "//common-mk:use_thin_archive" ]
59*a3a45f30SXin Li  sources = [
60*a3a45f30SXin Li    "brotli_decompressor.cc",
61*a3a45f30SXin Li    "bspatch.cc",
62*a3a45f30SXin Li    "buffer_file.cc",
63*a3a45f30SXin Li    "bz2_decompressor.cc",
64*a3a45f30SXin Li    "decompressor_interface.cc",
65*a3a45f30SXin Li    "extents.cc",
66*a3a45f30SXin Li    "extents_file.cc",
67*a3a45f30SXin Li    "file.cc",
68*a3a45f30SXin Li    "logging.cc",
69*a3a45f30SXin Li    "memory_file.cc",
70*a3a45f30SXin Li    "patch_reader.cc",
71*a3a45f30SXin Li    "sink_file.cc",
72*a3a45f30SXin Li    "utils.cc",
73*a3a45f30SXin Li  ]
74*a3a45f30SXin Li}
75*a3a45f30SXin Li
76*a3a45f30SXin Liexecutable("bspatch") {
77*a3a45f30SXin Li  configs += [ ":target_defaults" ]
78*a3a45f30SXin Li  deps = [ ":libbspatch" ]
79*a3a45f30SXin Li  sources = [
80*a3a45f30SXin Li    "bspatch_main.cc",
81*a3a45f30SXin Li  ]
82*a3a45f30SXin Li}
83*a3a45f30SXin Li
84*a3a45f30SXin Lipkg_config("libbsdiff_config") {
85*a3a45f30SXin Li  pkg_deps = [
86*a3a45f30SXin Li    "libbrotlienc",
87*a3a45f30SXin Li    "libdivsufsort",
88*a3a45f30SXin Li    "libdivsufsort64",
89*a3a45f30SXin Li  ]
90*a3a45f30SXin Li}
91*a3a45f30SXin Li
92*a3a45f30SXin Listatic_library("libbsdiff") {
93*a3a45f30SXin Li  configs += [
94*a3a45f30SXin Li    "//common-mk:nouse_thin_archive",
95*a3a45f30SXin Li    ":target_defaults",
96*a3a45f30SXin Li    ":libbsdiff_config",
97*a3a45f30SXin Li  ]
98*a3a45f30SXin Li  configs -= [ "//common-mk:use_thin_archive" ]
99*a3a45f30SXin Li  sources = [
100*a3a45f30SXin Li    "brotli_compressor.cc",
101*a3a45f30SXin Li    "bsdiff.cc",
102*a3a45f30SXin Li    "bz2_compressor.cc",
103*a3a45f30SXin Li    "compressor_buffer.cc",
104*a3a45f30SXin Li    "diff_encoder.cc",
105*a3a45f30SXin Li    "endsley_patch_writer.cc",
106*a3a45f30SXin Li    "logging.cc",
107*a3a45f30SXin Li    "patch_writer.cc",
108*a3a45f30SXin Li    "patch_writer_factory.cc",
109*a3a45f30SXin Li    "split_patch_writer.cc",
110*a3a45f30SXin Li    "suffix_array_index.cc",
111*a3a45f30SXin Li  ]
112*a3a45f30SXin Li}
113*a3a45f30SXin Li
114*a3a45f30SXin Liexecutable("bsdiff") {
115*a3a45f30SXin Li  configs += [ ":target_defaults" ]
116*a3a45f30SXin Li  deps = [ ":libbsdiff" ]
117*a3a45f30SXin Li  sources = [
118*a3a45f30SXin Li    "bsdiff_arguments.cc",
119*a3a45f30SXin Li    "bsdiff_main.cc",
120*a3a45f30SXin Li  ]
121*a3a45f30SXin Li}
122*a3a45f30SXin Li
123*a3a45f30SXin Liif (use.test) {
124*a3a45f30SXin Li  executable("bsdiff_test") {
125*a3a45f30SXin Li    configs += [
126*a3a45f30SXin Li      "//common-mk:test",
127*a3a45f30SXin Li      ":target_defaults",
128*a3a45f30SXin Li    ]
129*a3a45f30SXin Li    deps = [
130*a3a45f30SXin Li      "//common-mk/testrunner",
131*a3a45f30SXin Li      ":libbspatch",
132*a3a45f30SXin Li      ":libbsdiff",
133*a3a45f30SXin Li    ]
134*a3a45f30SXin Li    sources = [
135*a3a45f30SXin Li      "brotli_compressor_unittest.cc",
136*a3a45f30SXin Li      "brotli_decompressor_unittest.cc",
137*a3a45f30SXin Li      "bsdiff_arguments.cc",
138*a3a45f30SXin Li      "bsdiff_arguments_unittest.cc",
139*a3a45f30SXin Li      "bsdiff_unittest.cc",
140*a3a45f30SXin Li      "bspatch_unittest.cc",
141*a3a45f30SXin Li      "bz2_decompressor_unittest.cc",
142*a3a45f30SXin Li      "diff_encoder_unittest.cc",
143*a3a45f30SXin Li      "endsley_patch_writer_unittest.cc",
144*a3a45f30SXin Li      "extents_file_unittest.cc",
145*a3a45f30SXin Li      "extents_unittest.cc",
146*a3a45f30SXin Li      "patch_reader_unittest.cc",
147*a3a45f30SXin Li      "patch_writer_unittest.cc",
148*a3a45f30SXin Li      "split_patch_writer_unittest.cc",
149*a3a45f30SXin Li      "suffix_array_index_unittest.cc",
150*a3a45f30SXin Li      "test_utils.cc",
151*a3a45f30SXin Li    ]
152*a3a45f30SXin Li  }
153*a3a45f30SXin Li}
154*a3a45f30SXin Li
155*a3a45f30SXin Liif (use.fuzzer) {
156*a3a45f30SXin Li  executable("bspatch_fuzzer") {
157*a3a45f30SXin Li    configs += [
158*a3a45f30SXin Li      "//common-mk/common_fuzzer",
159*a3a45f30SXin Li      ":target_defaults",
160*a3a45f30SXin Li    ]
161*a3a45f30SXin Li    deps = [ ":libbspatch" ]
162*a3a45f30SXin Li    sources = [
163*a3a45f30SXin Li      "bspatch_fuzzer.cc",
164*a3a45f30SXin Li    ]
165*a3a45f30SXin Li  }
166*a3a45f30SXin Li}
167