blob: f85d1dea4427037d869577094486ed3d47859bca [file] [log] [blame]
Hridya Valsarajudea91b42018-07-17 11:14:01 -07001// 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
Aaron Wisnera5ad20a2018-08-24 09:59:50 -050015// 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)
Bob Badourd69ad692021-02-16 19:02:14 -080017package {
Hridya Valsaraju99373792022-01-18 13:58:46 -080018 default_applicable_licenses: [
19 "system_core_fastboot_license",
20 "Android-Apache-2.0",
21 ],
Bob Badourd69ad692021-02-16 19:02:14 -080022}
23
24// Added automatically by a large-scale-change that took the approach of
25// 'apply every license found to every target'. While this makes sure we respect
26// every license restriction, it may not be entirely correct.
27//
28// e.g. GPL in an MIT project might only apply to the contrib/ directory.
29//
30// Please consider splitting the single license below into multiple licenses,
31// taking care not to lose any license_kind information, and overriding the
32// default license using the 'licenses: [...]' property on targets as needed.
33//
34// For unused files, consider creating a 'fileGroup' with "//visibility:private"
35// to attach the license to, and including a comment whether the files may be
36// used in the current project.
37// See: http://go/android-license-faq
38license {
39 name: "system_core_fastboot_license",
40 visibility: [":__subpackages__"],
41 license_kinds: [
Bob Badourd69ad692021-02-16 19:02:14 -080042 "SPDX-license-identifier-BSD",
43 ],
Hridya Valsaraju99373792022-01-18 13:58:46 -080044 license_text: ["LICENSE"],
Bob Badourd69ad692021-02-16 19:02:14 -080045}
46
Aaron Wisnerdb511202018-06-26 15:38:35 -050047cc_library_host_static {
48 name: "libfastboot2",
49
50 //host_supported: true,
51
52 compile_multilib: "first",
53 srcs: [
Dan Willemsenab971b52018-08-29 14:58:02 -070054 "bootimg_utils.cpp",
55 "fs.cpp",
56 "socket.cpp",
57 "tcp.cpp",
58 "udp.cpp",
59 "util.cpp",
Yifan Honge71fe242021-02-22 15:00:15 -080060 "vendor_boot_img_utils.cpp",
Dan Willemsenab971b52018-08-29 14:58:02 -070061 "fastboot_driver.cpp",
Aaron Wisnerdb511202018-06-26 15:38:35 -050062 ],
63
64 static_libs: [
Dan Willemsenab971b52018-08-29 14:58:02 -070065 "libziparchive",
66 "libsparse",
67 "libutils",
68 "liblog",
69 "libz",
70 "libdiagnose_usb",
71 "libbase",
72 "libcutils",
73 "libgtest",
74 "libgtest_main",
75 "libbase",
76 "libadb_host",
David Anderson89569642018-11-16 15:53:35 -080077 "liblp",
Aaron Wisnerdb511202018-06-26 15:38:35 -050078 ],
79
80 header_libs: [
Yifan Honge71fe242021-02-22 15:00:15 -080081 "avb_headers",
Dan Willemsenab971b52018-08-29 14:58:02 -070082 "bootimg_headers",
Yifan Hong17d469b2021-02-18 15:15:46 -080083 "libstorage_literals_headers",
Aaron Wisnerdb511202018-06-26 15:38:35 -050084 ],
85
86 export_header_lib_headers: [
Dan Willemsenab971b52018-08-29 14:58:02 -070087 "bootimg_headers",
Aaron Wisnerdb511202018-06-26 15:38:35 -050088 ],
89
Aaron Wisnerdb511202018-06-26 15:38:35 -050090 target: {
Dan Willemsenab971b52018-08-29 14:58:02 -070091 linux: {
92 srcs: ["usb_linux.cpp"],
93 },
Aaron Wisnera5ad20a2018-08-24 09:59:50 -050094
Dan Willemsenab971b52018-08-29 14:58:02 -070095 darwin: {
96 srcs: ["usb_osx.cpp"],
Aaron Wisnera5ad20a2018-08-24 09:59:50 -050097
Dan Willemsenab971b52018-08-29 14:58:02 -070098 host_ldlibs: [
99 "-framework CoreFoundation",
100 "-framework IOKit",
101 ],
102 },
Aaron Wisnera5ad20a2018-08-24 09:59:50 -0500103
Dan Willemsenab971b52018-08-29 14:58:02 -0700104 windows: {
105 srcs: ["usb_windows.cpp"],
Aaron Wisnera5ad20a2018-08-24 09:59:50 -0500106
Dan Willemsenab971b52018-08-29 14:58:02 -0700107 host_ldlibs: [
108 "-lws2_32",
109 ],
110 },
Aaron Wisnerdb511202018-06-26 15:38:35 -0500111 },
112
113 cflags: [
Dan Willemsenab971b52018-08-29 14:58:02 -0700114 "-Wall",
115 "-Wextra",
116 "-Werror",
117 "-Wunreachable-code",
Aaron Wisnerdb511202018-06-26 15:38:35 -0500118 ],
119
120 export_include_dirs: ["."],
121
122}
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700123
124cc_defaults {
125 name: "fastboot_defaults",
126
127 cflags: [
128 "-Wall",
129 "-Wextra",
130 "-Werror",
131 "-Wvla",
Yifan Hong07e947f2021-03-22 19:21:34 -0700132 "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION",
Alix96403392022-04-21 03:03:27 +0000133 "-Wthread-safety",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700134 ],
135 rtti: true,
136
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700137}
138
139cc_binary {
140 name: "fastbootd",
141 defaults: ["fastboot_defaults"],
142
143 recovery: true,
144
Yifan Hongb299cb72021-02-17 13:44:49 -0800145 product_variables: {
146 debuggable: {
147 cppflags: ["-DFB_ENABLE_FETCH"],
148 },
149 },
150
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700151 srcs: [
152 "device/commands.cpp",
153 "device/fastboot_device.cpp",
David Anderson12211d12018-07-24 15:21:20 -0700154 "device/flashing.cpp",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700155 "device/main.cpp",
Josh Gao08718242020-03-27 18:09:56 -0700156 "device/usb.cpp",
Kelvin Zhang682e5b52022-07-12 17:37:54 -0700157 "device/usb_iouring.cpp",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700158 "device/usb_client.cpp",
Hongguang Chen1e239282020-04-22 14:25:45 -0700159 "device/tcp_client.cpp",
Hridya Valsaraju31d2c262018-07-20 13:35:50 -0700160 "device/utility.cpp",
161 "device/variables.cpp",
Hongguang Chen1e239282020-04-22 14:25:45 -0700162 "socket.cpp",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700163 ],
164
165 shared_libs: [
Hridya Valsaraju31d2c262018-07-20 13:35:50 -0700166 "android.hardware.boot@1.0",
David Andersonab8f4662019-10-21 16:45:59 -0700167 "android.hardware.boot@1.1",
Kelvin Zhang6befe782022-06-21 14:20:54 -0700168 "android.hardware.boot-V1-ndk",
169 "libboot_control_client",
josephjang29069752020-09-23 16:28:03 +0800170 "android.hardware.fastboot@1.1",
Sandeep Dhavale2534d482022-11-08 22:30:05 +0000171 "android.hardware.fastboot-V1-ndk",
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700172 "android.hardware.health@2.0",
Jack Wu06357942022-11-30 12:46:08 +0800173 "android.hardware.health-V2-ndk",
Tao Baob71eedf2018-08-06 19:13:38 -0700174 "libasyncio",
175 "libbase",
Yifan Hong4cb88dc2021-12-02 18:58:02 -0800176 "libbinder_ndk",
Tao Baob71eedf2018-08-06 19:13:38 -0700177 "libbootloader_message",
178 "libcutils",
David Anderson0d4277d2018-07-31 13:27:37 -0700179 "libext2_uuid",
Tao Baob71eedf2018-08-06 19:13:38 -0700180 "libext4_utils",
181 "libfs_mgr",
David Anderson1d504e32019-01-15 14:38:20 -0800182 "libgsi",
Tao Baob71eedf2018-08-06 19:13:38 -0700183 "libhidlbase",
Tao Baob71eedf2018-08-06 19:13:38 -0700184 "liblog",
David Anderson88ef0b12018-08-09 10:40:00 -0700185 "liblp",
David Anderson220ddb12019-10-31 18:02:41 -0700186 "libprotobuf-cpp-lite",
Tao Baob71eedf2018-08-06 19:13:38 -0700187 "libsparse",
188 "libutils",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700189 ],
190
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700191 static_libs: [
Yifan Hong4cb88dc2021-12-02 18:58:02 -0800192 "android.hardware.health-translate-ndk",
David Anderson0b903f92021-04-07 21:43:03 -0700193 "libc++fs",
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700194 "libhealthhalutils",
Yifan Hong4cb88dc2021-12-02 18:58:02 -0800195 "libhealthshim",
Sandeep Dhavale2534d482022-11-08 22:30:05 +0000196 "libfastbootshim",
David Andersonaca0bea2020-09-21 16:34:25 -0700197 "libsnapshot_cow",
Kelvin Zhang5cb1b022022-04-11 17:29:27 -0700198 "liblz4",
Kelvin Zhang32dcac72023-02-15 16:23:46 -0800199 "libzstd",
David Anderson220ddb12019-10-31 18:02:41 -0700200 "libsnapshot_nobinder",
Yifan Hong66f01152020-04-16 11:05:16 -0700201 "update_metadata-protos",
Kelvin Zhang682e5b52022-07-12 17:37:54 -0700202 "liburing",
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700203 ],
Kelvin Zhang682e5b52022-07-12 17:37:54 -0700204 include_dirs: ["bionic/libc/kernel"],
Yifan Hong0e13bba2019-08-29 16:29:22 -0700205
206 header_libs: [
Steve Mucklea9b34432020-05-12 16:21:41 -0700207 "avb_headers",
Elliott Hughes02a83242021-04-20 15:22:02 -0700208 "libgtest_prod_headers",
Yifan Hong0e13bba2019-08-29 16:29:22 -0700209 "libsnapshot_headers",
Yifan Honga4eb4752021-02-16 19:37:21 -0800210 "libstorage_literals_headers",
211 ],
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700212}
Dan Willemsenab971b52018-08-29 14:58:02 -0700213
214cc_defaults {
215 name: "fastboot_host_defaults",
216
217 use_version_lib: true,
218
219 cflags: [
220 "-Wall",
221 "-Wextra",
222 "-Werror",
223 "-Wunreachable-code",
Yifan Hong58532df2021-03-22 16:39:13 -0700224 "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION",
Alix96403392022-04-21 03:03:27 +0000225 "-D_FILE_OFFSET_BITS=64",
Dan Willemsenab971b52018-08-29 14:58:02 -0700226 ],
227
228 target: {
229 darwin: {
230 cflags: ["-Wno-unused-parameter"],
231 host_ldlibs: [
232 "-lpthread",
233 "-framework CoreFoundation",
234 "-framework IOKit",
Dan Willemsenab971b52018-08-29 14:58:02 -0700235 ],
236 },
237 windows: {
238 enabled: true,
239
240 host_ldlibs: ["-lws2_32"],
241 },
David Anderson89569642018-11-16 15:53:35 -0800242 not_windows: {
243 static_libs: [
244 "libext4_utils",
245 ],
246 },
Dan Willemsenab971b52018-08-29 14:58:02 -0700247 },
248
249 stl: "libc++_static",
250
251 // Don't add anything here, we don't want additional shared dependencies
252 // on the host fastboot tool, and shared libraries that link against libc++
253 // will violate ODR.
254 shared_libs: [],
255
Chin-Ting Kuodf6a7802019-09-16 11:23:55 +0800256 header_libs: [
257 "avb_headers",
258 "bootimg_headers",
259 ],
260
Dan Willemsenab971b52018-08-29 14:58:02 -0700261 static_libs: [
262 "libziparchive",
263 "libsparse",
264 "libutils",
265 "liblog",
Kelvin Zhang5cb1b022022-04-11 17:29:27 -0700266 "liblz4",
Dan Willemsenab971b52018-08-29 14:58:02 -0700267 "libz",
268 "libdiagnose_usb",
269 "libbase",
270 "libcutils",
271 "libgtest_host",
David Anderson89569642018-11-16 15:53:35 -0800272 "liblp",
273 "libcrypto",
Dan Willemsenab971b52018-08-29 14:58:02 -0700274 ],
275}
276
277//
278// Build host libfastboot.
279//
280
281cc_library_host_static {
282 name: "libfastboot",
283 defaults: ["fastboot_host_defaults"],
284
Dan Willemsenab971b52018-08-29 14:58:02 -0700285 srcs: [
286 "bootimg_utils.cpp",
Dmitrii Merkurev91297172023-02-09 02:08:14 +0000287 "fastboot_driver.cpp",
Dan Willemsenab971b52018-08-29 14:58:02 -0700288 "fastboot.cpp",
Dmitrii Merkurev91297172023-02-09 02:08:14 +0000289 "filesystem.cpp",
Dan Willemsenab971b52018-08-29 14:58:02 -0700290 "fs.cpp",
291 "socket.cpp",
Dmitrii Merkurev91297172023-02-09 02:08:14 +0000292 "storage.cpp",
David Anderson667b1ef2023-01-27 21:11:11 -0800293 "super_flash_helper.cpp",
Dan Willemsenab971b52018-08-29 14:58:02 -0700294 "tcp.cpp",
295 "udp.cpp",
296 "util.cpp",
Yifan Honge71fe242021-02-22 15:00:15 -0800297 "vendor_boot_img_utils.cpp",
Daniel Zheng0d307182023-01-31 21:07:53 +0000298 "task.cpp",
Dan Willemsenab971b52018-08-29 14:58:02 -0700299 ],
300
301 // Only version the final binaries
302 use_version_lib: false,
303 static_libs: ["libbuildversion"],
Yifan Hong17d469b2021-02-18 15:15:46 -0800304 header_libs: [
Yifan Honge71fe242021-02-22 15:00:15 -0800305 "avb_headers",
Yifan Hong17d469b2021-02-18 15:15:46 -0800306 "libstorage_literals_headers",
307 ],
Dan Willemsenab971b52018-08-29 14:58:02 -0700308
309 generated_headers: ["platform_tools_version"],
310
Chih-Hung Hsieh84006f52021-02-19 18:30:29 -0800311 tidy_flags: [
312 // DO NOT add quotes around header-filter flag regex argument,
313 // because build/soong will add quotes around the whole flag.
314 "-header-filter=(system/core/fastboot/|development/host/windows/usb/api/)",
315 ],
316
Dan Willemsenab971b52018-08-29 14:58:02 -0700317 target: {
318 windows: {
319 srcs: ["usb_windows.cpp"],
320
321 include_dirs: ["development/host/windows/usb/api"],
322 },
323 darwin: {
324 srcs: ["usb_osx.cpp"],
325 },
Jiyong Parkfd890282020-08-20 18:04:01 +0900326 linux: {
Dan Willemsenab971b52018-08-29 14:58:02 -0700327 srcs: ["usb_linux.cpp"],
328 },
329 },
330}
331
332//
333// Build host fastboot / fastboot.exe
334//
335
336cc_binary_host {
337 name: "fastboot",
338 defaults: ["fastboot_host_defaults"],
339
340 srcs: ["main.cpp"],
341 static_libs: ["libfastboot"],
342
343 required: [
344 "mke2fs",
345 "make_f2fs",
Jaegeuk Kima3896102020-07-17 20:30:41 -0700346 "make_f2fs_casefold",
Dan Willemsenab971b52018-08-29 14:58:02 -0700347 ],
Dan Willemsen3f439a72018-11-19 19:11:35 -0800348 dist: {
349 targets: [
350 "dist_files",
351 "sdk",
Shaju Mathew6c27f232022-10-06 22:12:10 +0000352 "sdk-repo-platform-tools",
353 "sdk_repo",
Dan Willemsen3f439a72018-11-19 19:11:35 -0800354 "win_sdk",
355 ],
356 },
Dan Willemsenab971b52018-08-29 14:58:02 -0700357
358 target: {
359 not_windows: {
360 required: [
Dan Willemsenab971b52018-08-29 14:58:02 -0700361 "mke2fs.conf",
Dan Willemsenab971b52018-08-29 14:58:02 -0700362 ],
363 },
364 windows: {
365 required: ["AdbWinUsbApi"],
366 shared_libs: ["AdbWinApi"],
367 },
368 },
369}
370
371//
372// Build host fastboot_test.
373//
374
375cc_test_host {
376 name: "fastboot_test",
377 defaults: ["fastboot_host_defaults"],
378
379 srcs: [
David Andersone6d8dd32023-02-13 14:09:16 -0800380 "fastboot_driver_test.cpp",
Dan Willemsenab971b52018-08-29 14:58:02 -0700381 "fastboot_test.cpp",
382 "socket_mock.cpp",
383 "socket_test.cpp",
David Andersonada87182023-02-08 22:06:56 -0800384 "super_flash_helper_test.cpp",
Daniel Zheng76aa2572023-03-30 15:48:23 -0700385 "task_test.cpp",
Dan Willemsenab971b52018-08-29 14:58:02 -0700386 "tcp_test.cpp",
387 "udp_test.cpp",
388 ],
389
David Andersone6d8dd32023-02-13 14:09:16 -0800390 static_libs: [
391 "libfastboot",
392 "libgmock",
393 ],
Dan Willemsenab971b52018-08-29 14:58:02 -0700394
395 target: {
396 windows: {
397 shared_libs: ["AdbWinApi"],
398 },
399 windows_x86_64: {
400 // Avoid trying to build for win64
401 enabled: false,
402 },
403 },
David Anderson86e869a2023-02-08 13:58:40 -0800404
405 test_suites: ["general-tests"],
David Andersonada87182023-02-08 22:06:56 -0800406
407 data: [
408 "testdata/super.img",
409 "testdata/super_empty.img",
410 "testdata/system.img",
411 ],
Dan Willemsenab971b52018-08-29 14:58:02 -0700412}
Yifan Honge71fe242021-02-22 15:00:15 -0800413
414cc_test_host {
415 name: "fastboot_vendor_boot_img_utils_test",
416 srcs: ["vendor_boot_img_utils_test.cpp"],
417 static_libs: [
418 "libbase",
419 "libc++fs",
420 "libfastboot",
421 "libgmock",
422 "liblog",
423 ],
424 header_libs: [
425 "avb_headers",
426 "bootimg_headers",
427 ],
428 cflags: [
429 "-Wall",
430 "-Werror",
431 ],
432 data: [
433 ":fastboot_test_dtb",
434 ":fastboot_test_bootconfig",
435 ":fastboot_test_vendor_ramdisk_none",
436 ":fastboot_test_vendor_ramdisk_platform",
437 ":fastboot_test_vendor_ramdisk_replace",
438 ":fastboot_test_vendor_boot_v3",
439 ":fastboot_test_vendor_boot_v4_without_frag",
Alix96403392022-04-21 03:03:27 +0000440 ":fastboot_test_vendor_boot_v4_with_frag",
Yifan Honge71fe242021-02-22 15:00:15 -0800441 ],
442}
Ayushi Khopkarce5c0332021-09-20 12:00:21 +0530443
444cc_library_headers {
445 name: "fastboot_headers",
446 host_supported: true,
447 export_include_dirs: ["."],
448}
William Hesterbdf0b1b2023-10-24 16:53:24 -0700449
450python_test_host {
451 name: "fastboot_integration_test",
452 main: "test_fastboot.py",
453 srcs: ["test_fastboot.py"],
454 data: [":fastboot"],
455 test_config: "fastboot_integration_test.xml",
456 test_options: {
457 unit_test: false,
458 },
459}