xref: /aosp_15_r20/external/bsdiff/Android.bp (revision a3a45f308bd90ef1a6e6a5e8fb92fe449b895909)
1*a3a45f30SXin Li// Copyright (C) 2008 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 Lipackage {
16*a3a45f30SXin Li    default_applicable_licenses: ["external_bsdiff_license"],
17*a3a45f30SXin Li}
18*a3a45f30SXin Li
19*a3a45f30SXin Lilicense {
20*a3a45f30SXin Li    name: "external_bsdiff_license",
21*a3a45f30SXin Li    visibility: [":__subpackages__"],
22*a3a45f30SXin Li    license_kinds: ["SPDX-license-identifier-Apache-2.0","SPDX-license-identifier-BSD"],
23*a3a45f30SXin Li    license_text: ["LICENSE"],
24*a3a45f30SXin Li}
25*a3a45f30SXin Li
26*a3a45f30SXin Licc_defaults {
27*a3a45f30SXin Li    name: "bsdiff_defaults",
28*a3a45f30SXin Li    host_supported: true,
29*a3a45f30SXin Li    static_libs: ["libbz", "libbrotli"],
30*a3a45f30SXin Li    // Allow internal includes to be referenced with the "bsdiff/" prefix in the
31*a3a45f30SXin Li    // path.
32*a3a45f30SXin Li    include_dirs: ["external"],
33*a3a45f30SXin Li    export_include_dirs: ["include"],
34*a3a45f30SXin Li    cflags: [
35*a3a45f30SXin Li        "-D_FILE_OFFSET_BITS=64",
36*a3a45f30SXin Li        "-Wall",
37*a3a45f30SXin Li        "-Werror",
38*a3a45f30SXin Li        "-Wextra",
39*a3a45f30SXin Li        "-Wno-unused-parameter",
40*a3a45f30SXin Li    ],
41*a3a45f30SXin Li}
42*a3a45f30SXin Li
43*a3a45f30SXin Li// Host and target static libraries.
44*a3a45f30SXin Licc_library_static {
45*a3a45f30SXin Li    name: "libbspatch",
46*a3a45f30SXin Li    defaults: ["bsdiff_defaults"],
47*a3a45f30SXin Li    vendor_available: true,
48*a3a45f30SXin Li    recovery_available: true,
49*a3a45f30SXin Li
50*a3a45f30SXin Li    visibility: [
51*a3a45f30SXin Li        "//bootable/recovery:__subpackages__",
52*a3a45f30SXin Li        "//bootable/deprecated-ota:__subpackages__",
53*a3a45f30SXin Li        "//external/puffin:__subpackages__",
54*a3a45f30SXin Li        "//system/update_engine:__subpackages__",
55*a3a45f30SXin Li        "//system/core/fs_mgr/libsnapshot:__subpackages__",
56*a3a45f30SXin Li    ],
57*a3a45f30SXin Li
58*a3a45f30SXin Li    srcs: [
59*a3a45f30SXin Li        "brotli_decompressor.cc",
60*a3a45f30SXin Li        "bspatch.cc",
61*a3a45f30SXin Li        "bz2_decompressor.cc",
62*a3a45f30SXin Li        "buffer_file.cc",
63*a3a45f30SXin Li        "decompressor_interface.cc",
64*a3a45f30SXin Li        "extents.cc",
65*a3a45f30SXin Li        "extents_file.cc",
66*a3a45f30SXin Li        "file.cc",
67*a3a45f30SXin Li        "logging.cc",
68*a3a45f30SXin Li        "memory_file.cc",
69*a3a45f30SXin Li        "patch_reader.cc",
70*a3a45f30SXin Li        "sink_file.cc",
71*a3a45f30SXin Li        "utils.cc",
72*a3a45f30SXin Li    ],
73*a3a45f30SXin Li}
74*a3a45f30SXin Li
75*a3a45f30SXin Licc_library_static {
76*a3a45f30SXin Li    name: "libbsdiff",
77*a3a45f30SXin Li    recovery_available: true,
78*a3a45f30SXin Li    defaults: ["bsdiff_defaults"],
79*a3a45f30SXin Li
80*a3a45f30SXin Li    srcs: [
81*a3a45f30SXin Li        "brotli_compressor.cc",
82*a3a45f30SXin Li        "bsdiff.cc",
83*a3a45f30SXin Li        "bz2_compressor.cc",
84*a3a45f30SXin Li        "compressor_buffer.cc",
85*a3a45f30SXin Li        "diff_encoder.cc",
86*a3a45f30SXin Li        "endsley_patch_writer.cc",
87*a3a45f30SXin Li        "logging.cc",
88*a3a45f30SXin Li        "patch_writer.cc",
89*a3a45f30SXin Li        "patch_writer_factory.cc",
90*a3a45f30SXin Li        "split_patch_writer.cc",
91*a3a45f30SXin Li        "suffix_array_index.cc",
92*a3a45f30SXin Li    ],
93*a3a45f30SXin Li    static_libs: [
94*a3a45f30SXin Li        "libdivsufsort64",
95*a3a45f30SXin Li        "libdivsufsort",
96*a3a45f30SXin Li        "libbrotli",
97*a3a45f30SXin Li    ],
98*a3a45f30SXin Li}
99*a3a45f30SXin Li
100*a3a45f30SXin Li// Host executables: bsdiff and bspatch are only built for the host.
101*a3a45f30SXin Licc_binary_host {
102*a3a45f30SXin Li    name: "bspatch",
103*a3a45f30SXin Li    defaults: ["bsdiff_defaults"],
104*a3a45f30SXin Li
105*a3a45f30SXin Li    srcs: ["bspatch_main.cc"],
106*a3a45f30SXin Li    static_libs: [
107*a3a45f30SXin Li        "libbspatch",
108*a3a45f30SXin Li        "libbz",
109*a3a45f30SXin Li        "libbrotli",
110*a3a45f30SXin Li    ],
111*a3a45f30SXin Li}
112*a3a45f30SXin Li
113*a3a45f30SXin Licc_binary_host {
114*a3a45f30SXin Li    name: "bsdiff",
115*a3a45f30SXin Li    defaults: ["bsdiff_defaults"],
116*a3a45f30SXin Li
117*a3a45f30SXin Li    srcs: [
118*a3a45f30SXin Li        "bsdiff_arguments.cc",
119*a3a45f30SXin Li        "bsdiff_main.cc",
120*a3a45f30SXin Li    ],
121*a3a45f30SXin Li    static_libs: [
122*a3a45f30SXin Li        "libbsdiff",
123*a3a45f30SXin Li        "libdivsufsort64",
124*a3a45f30SXin Li        "libdivsufsort",
125*a3a45f30SXin Li        "libbz",
126*a3a45f30SXin Li        "libbrotli",
127*a3a45f30SXin Li    ],
128*a3a45f30SXin Li}
129*a3a45f30SXin Li
130*a3a45f30SXin Li// Unit tests.
131*a3a45f30SXin Licc_test {
132*a3a45f30SXin Li    name: "bsdiff_unittest",
133*a3a45f30SXin Li    defaults: ["bsdiff_defaults"],
134*a3a45f30SXin Li    test_suites: ["device-tests"],
135*a3a45f30SXin Li    srcs: [
136*a3a45f30SXin Li        "brotli_compressor_unittest.cc",
137*a3a45f30SXin Li        "brotli_decompressor_unittest.cc",
138*a3a45f30SXin Li        "bsdiff_arguments.cc",
139*a3a45f30SXin Li        "bsdiff_arguments_unittest.cc",
140*a3a45f30SXin Li        "bsdiff_unittest.cc",
141*a3a45f30SXin Li        "bspatch_unittest.cc",
142*a3a45f30SXin Li        "bz2_decompressor_unittest.cc",
143*a3a45f30SXin Li        "diff_encoder_unittest.cc",
144*a3a45f30SXin Li        "endsley_patch_writer_unittest.cc",
145*a3a45f30SXin Li        "extents_file_unittest.cc",
146*a3a45f30SXin Li        "extents_unittest.cc",
147*a3a45f30SXin Li        "patch_reader_unittest.cc",
148*a3a45f30SXin Li        "patch_writer_unittest.cc",
149*a3a45f30SXin Li        "split_patch_writer_unittest.cc",
150*a3a45f30SXin Li        "suffix_array_index_unittest.cc",
151*a3a45f30SXin Li        "test_utils.cc",
152*a3a45f30SXin Li        "testrunner.cc",
153*a3a45f30SXin Li    ],
154*a3a45f30SXin Li    static_libs: [
155*a3a45f30SXin Li        "libbsdiff",
156*a3a45f30SXin Li        "libbspatch",
157*a3a45f30SXin Li        "libgmock",
158*a3a45f30SXin Li        "libdivsufsort64",
159*a3a45f30SXin Li        "libdivsufsort",
160*a3a45f30SXin Li        "libbz",
161*a3a45f30SXin Li        "libbrotli",
162*a3a45f30SXin Li    ],
163*a3a45f30SXin Li    target: {
164*a3a45f30SXin Li        android: {
165*a3a45f30SXin Li            cflags: ["-DBSDIFF_TARGET_UNITTEST"],
166*a3a45f30SXin Li        },
167*a3a45f30SXin Li    },
168*a3a45f30SXin Li    test_options: {
169*a3a45f30SXin Li        unit_test: true,
170*a3a45f30SXin Li    },
171*a3a45f30SXin Li}
172