• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (C) 2018 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// This is required because no Android.bp can include a library defined in an
16// Android.mk. Eventually should kill libfastboot (defined in Android.mk)
17package {
18    default_applicable_licenses: ["system_core_fastboot_license"],
19}
20
21// Added automatically by a large-scale-change that took the approach of
22// 'apply every license found to every target'. While this makes sure we respect
23// every license restriction, it may not be entirely correct.
24//
25// e.g. GPL in an MIT project might only apply to the contrib/ directory.
26//
27// Please consider splitting the single license below into multiple licenses,
28// taking care not to lose any license_kind information, and overriding the
29// default license using the 'licenses: [...]' property on targets as needed.
30//
31// For unused files, consider creating a 'fileGroup' with "//visibility:private"
32// to attach the license to, and including a comment whether the files may be
33// used in the current project.
34// See: http://go/android-license-faq
35license {
36    name: "system_core_fastboot_license",
37    visibility: [":__subpackages__"],
38    license_kinds: [
39        "SPDX-license-identifier-Apache-2.0",
40        "SPDX-license-identifier-BSD",
41    ],
42    // large-scale-change unable to identify any license_text files
43}
44
45cc_library_host_static {
46    name: "libfastboot2",
47
48    //host_supported: true,
49
50    compile_multilib: "first",
51    srcs: [
52        "bootimg_utils.cpp",
53        "fs.cpp",
54        "socket.cpp",
55        "tcp.cpp",
56        "udp.cpp",
57        "util.cpp",
58        "vendor_boot_img_utils.cpp",
59        "fastboot_driver.cpp",
60    ],
61
62    static_libs: [
63        "libziparchive",
64        "libsparse",
65        "libutils",
66        "liblog",
67        "libz",
68        "libdiagnose_usb",
69        "libbase",
70        "libcutils",
71        "libgtest",
72        "libgtest_main",
73        "libbase",
74        "libadb_host",
75        "liblp",
76    ],
77
78    header_libs: [
79        "avb_headers",
80        "bootimg_headers",
81        "libstorage_literals_headers",
82    ],
83
84    export_header_lib_headers: [
85        "bootimg_headers",
86    ],
87
88    target: {
89        linux: {
90            srcs: ["usb_linux.cpp"],
91        },
92
93        darwin: {
94            srcs: ["usb_osx.cpp"],
95
96            host_ldlibs: [
97                "-framework CoreFoundation",
98                "-framework IOKit",
99            ],
100        },
101
102        windows: {
103            srcs: ["usb_windows.cpp"],
104
105            host_ldlibs: [
106                "-lws2_32",
107            ],
108        },
109    },
110
111    cflags: [
112        "-Wall",
113        "-Wextra",
114        "-Werror",
115        "-Wunreachable-code",
116    ],
117
118    export_include_dirs: ["."],
119
120}
121
122cc_defaults {
123    name: "fastboot_defaults",
124
125    cflags: [
126        "-Wall",
127        "-Wextra",
128        "-Werror",
129        "-Wvla",
130        "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION",
131    ],
132    rtti: true,
133
134    clang_cflags: [
135        "-Wthread-safety",
136    ],
137}
138
139cc_binary {
140    name: "fastbootd",
141    defaults: ["fastboot_defaults"],
142
143    recovery: true,
144
145    product_variables: {
146        debuggable: {
147            cppflags: ["-DFB_ENABLE_FETCH"],
148        },
149    },
150
151    srcs: [
152        "device/commands.cpp",
153        "device/fastboot_device.cpp",
154        "device/flashing.cpp",
155        "device/main.cpp",
156        "device/usb.cpp",
157        "device/usb_client.cpp",
158        "device/tcp_client.cpp",
159        "device/utility.cpp",
160        "device/variables.cpp",
161        "socket.cpp",
162    ],
163
164    shared_libs: [
165        "android.hardware.boot@1.0",
166        "android.hardware.boot@1.1",
167        "android.hardware.fastboot@1.1",
168        "android.hardware.health@2.0",
169        "libasyncio",
170        "libbase",
171        "libbootloader_message",
172        "libcutils",
173        "libext2_uuid",
174        "libext4_utils",
175        "libfs_mgr",
176        "libgsi",
177        "libhidlbase",
178        "liblog",
179        "liblp",
180        "libprotobuf-cpp-lite",
181        "libsparse",
182        "libutils",
183    ],
184
185    static_libs: [
186        "libc++fs",
187        "libhealthhalutils",
188        "libsnapshot_cow",
189        "libsnapshot_nobinder",
190        "update_metadata-protos",
191    ],
192
193    header_libs: [
194        "avb_headers",
195        "libgtest_prod_headers",
196        "libsnapshot_headers",
197        "libstorage_literals_headers",
198    ],
199}
200
201cc_defaults {
202    name: "fastboot_host_defaults",
203
204    use_version_lib: true,
205
206    cflags: [
207        "-Wall",
208        "-Wextra",
209        "-Werror",
210        "-Wunreachable-code",
211        "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION",
212        "-D_FILE_OFFSET_BITS=64"
213    ],
214
215    target: {
216        darwin: {
217            cflags: ["-Wno-unused-parameter"],
218            host_ldlibs: [
219                "-lpthread",
220                "-framework CoreFoundation",
221                "-framework IOKit",
222            ],
223        },
224        windows: {
225            enabled: true,
226
227            host_ldlibs: ["-lws2_32"],
228        },
229        not_windows: {
230            static_libs: [
231                "libext4_utils",
232            ],
233        },
234    },
235
236    stl: "libc++_static",
237
238    // Don't add anything here, we don't want additional shared dependencies
239    // on the host fastboot tool, and shared libraries that link against libc++
240    // will violate ODR.
241    shared_libs: [],
242
243    header_libs: [
244        "avb_headers",
245        "bootimg_headers",
246    ],
247
248    static_libs: [
249        "libziparchive",
250        "libsparse",
251        "libutils",
252        "liblog",
253        "libz",
254        "libdiagnose_usb",
255        "libbase",
256        "libcutils",
257        "libgtest_host",
258        "liblp",
259        "libcrypto",
260    ],
261}
262
263//
264// Build host libfastboot.
265//
266
267cc_library_host_static {
268    name: "libfastboot",
269    defaults: ["fastboot_host_defaults"],
270
271    srcs: [
272        "bootimg_utils.cpp",
273        "fastboot.cpp",
274        "fs.cpp",
275        "socket.cpp",
276        "tcp.cpp",
277        "udp.cpp",
278        "util.cpp",
279        "vendor_boot_img_utils.cpp",
280        "fastboot_driver.cpp",
281    ],
282
283    // Only version the final binaries
284    use_version_lib: false,
285    static_libs: ["libbuildversion"],
286    header_libs: [
287        "avb_headers",
288        "libstorage_literals_headers",
289    ],
290
291    generated_headers: ["platform_tools_version"],
292
293    tidy_flags: [
294        // DO NOT add quotes around header-filter flag regex argument,
295        // because build/soong will add quotes around the whole flag.
296        "-header-filter=(system/core/fastboot/|development/host/windows/usb/api/)",
297    ],
298
299    target: {
300        windows: {
301            srcs: ["usb_windows.cpp"],
302
303            include_dirs: ["development/host/windows/usb/api"],
304        },
305        darwin: {
306            srcs: ["usb_osx.cpp"],
307        },
308        linux: {
309            srcs: ["usb_linux.cpp"],
310        },
311    },
312}
313
314//
315// Build host fastboot / fastboot.exe
316//
317
318cc_binary_host {
319    name: "fastboot",
320    defaults: ["fastboot_host_defaults"],
321
322    srcs: ["main.cpp"],
323    static_libs: ["libfastboot"],
324
325    required: [
326        "mke2fs",
327        "make_f2fs",
328        "make_f2fs_casefold",
329    ],
330    dist: {
331        targets: [
332            "dist_files",
333            "sdk",
334            "win_sdk",
335        ],
336    },
337
338    target: {
339        not_windows: {
340            required: [
341                "e2fsdroid",
342                "mke2fs.conf",
343                "sload_f2fs",
344            ],
345        },
346        windows: {
347            required: ["AdbWinUsbApi"],
348            shared_libs: ["AdbWinApi"],
349        },
350    },
351}
352
353//
354// Build host fastboot_test.
355//
356
357cc_test_host {
358    name: "fastboot_test",
359    defaults: ["fastboot_host_defaults"],
360
361    srcs: [
362        "fastboot_test.cpp",
363        "socket_mock.cpp",
364        "socket_test.cpp",
365        "tcp_test.cpp",
366        "udp_test.cpp",
367    ],
368
369    static_libs: ["libfastboot"],
370
371    target: {
372        windows: {
373            shared_libs: ["AdbWinApi"],
374        },
375        windows_x86_64: {
376            // Avoid trying to build for win64
377            enabled: false,
378        },
379    },
380}
381
382cc_test_host {
383    name: "fastboot_vendor_boot_img_utils_test",
384    srcs: ["vendor_boot_img_utils_test.cpp"],
385    static_libs: [
386        "libbase",
387        "libc++fs",
388        "libfastboot",
389        "libgmock",
390        "liblog",
391    ],
392    header_libs: [
393        "avb_headers",
394        "bootimg_headers",
395    ],
396    cflags: [
397        "-Wall",
398        "-Werror",
399    ],
400    data: [
401        ":fastboot_test_dtb",
402        ":fastboot_test_bootconfig",
403        ":fastboot_test_vendor_ramdisk_none",
404        ":fastboot_test_vendor_ramdisk_platform",
405        ":fastboot_test_vendor_ramdisk_replace",
406        ":fastboot_test_vendor_boot_v3",
407        ":fastboot_test_vendor_boot_v4_without_frag",
408        ":fastboot_test_vendor_boot_v4_with_frag"
409    ],
410}
411