blob: 2c70778aea1cc7091362e468436a4139fa50a2fd [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 {
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
Aaron Wisnerdb511202018-06-26 15:38:35 -050045cc_library_host_static {
46 name: "libfastboot2",
47
48 //host_supported: true,
49
50 compile_multilib: "first",
51 srcs: [
Dan Willemsenab971b52018-08-29 14:58:02 -070052 "bootimg_utils.cpp",
53 "fs.cpp",
54 "socket.cpp",
55 "tcp.cpp",
56 "udp.cpp",
57 "util.cpp",
Yifan Honge71fe242021-02-22 15:00:15 -080058 "vendor_boot_img_utils.cpp",
Dan Willemsenab971b52018-08-29 14:58:02 -070059 "fastboot_driver.cpp",
Aaron Wisnerdb511202018-06-26 15:38:35 -050060 ],
61
62 static_libs: [
Dan Willemsenab971b52018-08-29 14:58:02 -070063 "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",
David Anderson89569642018-11-16 15:53:35 -080075 "liblp",
Aaron Wisnerdb511202018-06-26 15:38:35 -050076 ],
77
78 header_libs: [
Yifan Honge71fe242021-02-22 15:00:15 -080079 "avb_headers",
Dan Willemsenab971b52018-08-29 14:58:02 -070080 "bootimg_headers",
Yifan Hong17d469b2021-02-18 15:15:46 -080081 "libstorage_literals_headers",
Aaron Wisnerdb511202018-06-26 15:38:35 -050082 ],
83
84 export_header_lib_headers: [
Dan Willemsenab971b52018-08-29 14:58:02 -070085 "bootimg_headers",
Aaron Wisnerdb511202018-06-26 15:38:35 -050086 ],
87
Aaron Wisnerdb511202018-06-26 15:38:35 -050088 target: {
Dan Willemsenab971b52018-08-29 14:58:02 -070089 linux: {
90 srcs: ["usb_linux.cpp"],
91 },
Aaron Wisnera5ad20a2018-08-24 09:59:50 -050092
Dan Willemsenab971b52018-08-29 14:58:02 -070093 darwin: {
94 srcs: ["usb_osx.cpp"],
Aaron Wisnera5ad20a2018-08-24 09:59:50 -050095
Dan Willemsenab971b52018-08-29 14:58:02 -070096 host_ldlibs: [
97 "-framework CoreFoundation",
98 "-framework IOKit",
99 ],
100 },
Aaron Wisnera5ad20a2018-08-24 09:59:50 -0500101
Dan Willemsenab971b52018-08-29 14:58:02 -0700102 windows: {
103 srcs: ["usb_windows.cpp"],
Aaron Wisnera5ad20a2018-08-24 09:59:50 -0500104
Dan Willemsenab971b52018-08-29 14:58:02 -0700105 host_ldlibs: [
106 "-lws2_32",
107 ],
108 },
Aaron Wisnerdb511202018-06-26 15:38:35 -0500109 },
110
111 cflags: [
Dan Willemsenab971b52018-08-29 14:58:02 -0700112 "-Wall",
113 "-Wextra",
114 "-Werror",
115 "-Wunreachable-code",
Aaron Wisnerdb511202018-06-26 15:38:35 -0500116 ],
117
118 export_include_dirs: ["."],
119
120}
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700121
122cc_defaults {
123 name: "fastboot_defaults",
124
125 cflags: [
126 "-Wall",
127 "-Wextra",
128 "-Werror",
129 "-Wvla",
Yifan Hong07e947f2021-03-22 19:21:34 -0700130 "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700131 ],
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
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",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700157 "device/usb_client.cpp",
Hongguang Chen1e239282020-04-22 14:25:45 -0700158 "device/tcp_client.cpp",
Hridya Valsaraju31d2c262018-07-20 13:35:50 -0700159 "device/utility.cpp",
160 "device/variables.cpp",
Hongguang Chen1e239282020-04-22 14:25:45 -0700161 "socket.cpp",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700162 ],
163
164 shared_libs: [
Hridya Valsaraju31d2c262018-07-20 13:35:50 -0700165 "android.hardware.boot@1.0",
David Andersonab8f4662019-10-21 16:45:59 -0700166 "android.hardware.boot@1.1",
josephjang29069752020-09-23 16:28:03 +0800167 "android.hardware.fastboot@1.1",
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700168 "android.hardware.health@2.0",
Tao Baob71eedf2018-08-06 19:13:38 -0700169 "libasyncio",
170 "libbase",
171 "libbootloader_message",
172 "libcutils",
David Anderson0d4277d2018-07-31 13:27:37 -0700173 "libext2_uuid",
Tao Baob71eedf2018-08-06 19:13:38 -0700174 "libext4_utils",
175 "libfs_mgr",
David Anderson1d504e32019-01-15 14:38:20 -0800176 "libgsi",
Tao Baob71eedf2018-08-06 19:13:38 -0700177 "libhidlbase",
Tao Baob71eedf2018-08-06 19:13:38 -0700178 "liblog",
David Anderson88ef0b12018-08-09 10:40:00 -0700179 "liblp",
David Anderson220ddb12019-10-31 18:02:41 -0700180 "libprotobuf-cpp-lite",
Tao Baob71eedf2018-08-06 19:13:38 -0700181 "libsparse",
182 "libutils",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700183 ],
184
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700185 static_libs: [
David Anderson0b903f92021-04-07 21:43:03 -0700186 "libc++fs",
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700187 "libhealthhalutils",
David Andersonaca0bea2020-09-21 16:34:25 -0700188 "libsnapshot_cow",
David Anderson220ddb12019-10-31 18:02:41 -0700189 "libsnapshot_nobinder",
Yifan Hong66f01152020-04-16 11:05:16 -0700190 "update_metadata-protos",
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700191 ],
Yifan Hong0e13bba2019-08-29 16:29:22 -0700192
193 header_libs: [
Steve Mucklea9b34432020-05-12 16:21:41 -0700194 "avb_headers",
Elliott Hughes02a83242021-04-20 15:22:02 -0700195 "libgtest_prod_headers",
Yifan Hong0e13bba2019-08-29 16:29:22 -0700196 "libsnapshot_headers",
Yifan Honga4eb4752021-02-16 19:37:21 -0800197 "libstorage_literals_headers",
198 ],
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700199}
Dan Willemsenab971b52018-08-29 14:58:02 -0700200
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",
Yifan Hong58532df2021-03-22 16:39:13 -0700211 "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION",
Yifan Hongc8715002021-03-23 10:27:01 -0700212 "-D_FILE_OFFSET_BITS=64"
Dan Willemsenab971b52018-08-29 14:58:02 -0700213 ],
214
215 target: {
216 darwin: {
217 cflags: ["-Wno-unused-parameter"],
218 host_ldlibs: [
219 "-lpthread",
220 "-framework CoreFoundation",
221 "-framework IOKit",
Dan Willemsenab971b52018-08-29 14:58:02 -0700222 ],
223 },
224 windows: {
225 enabled: true,
226
227 host_ldlibs: ["-lws2_32"],
228 },
David Anderson89569642018-11-16 15:53:35 -0800229 not_windows: {
230 static_libs: [
231 "libext4_utils",
232 ],
233 },
Dan Willemsenab971b52018-08-29 14:58:02 -0700234 },
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
Chin-Ting Kuodf6a7802019-09-16 11:23:55 +0800243 header_libs: [
244 "avb_headers",
245 "bootimg_headers",
246 ],
247
Dan Willemsenab971b52018-08-29 14:58:02 -0700248 static_libs: [
249 "libziparchive",
250 "libsparse",
251 "libutils",
252 "liblog",
253 "libz",
254 "libdiagnose_usb",
255 "libbase",
256 "libcutils",
257 "libgtest_host",
David Anderson89569642018-11-16 15:53:35 -0800258 "liblp",
259 "libcrypto",
Dan Willemsenab971b52018-08-29 14:58:02 -0700260 ],
261}
262
263//
264// Build host libfastboot.
265//
266
267cc_library_host_static {
268 name: "libfastboot",
269 defaults: ["fastboot_host_defaults"],
270
Dan Willemsenab971b52018-08-29 14:58:02 -0700271 srcs: [
272 "bootimg_utils.cpp",
Dan Willemsenab971b52018-08-29 14:58:02 -0700273 "fastboot.cpp",
274 "fs.cpp",
275 "socket.cpp",
276 "tcp.cpp",
277 "udp.cpp",
278 "util.cpp",
Yifan Honge71fe242021-02-22 15:00:15 -0800279 "vendor_boot_img_utils.cpp",
Dan Willemsenab971b52018-08-29 14:58:02 -0700280 "fastboot_driver.cpp",
281 ],
282
283 // Only version the final binaries
284 use_version_lib: false,
285 static_libs: ["libbuildversion"],
Yifan Hong17d469b2021-02-18 15:15:46 -0800286 header_libs: [
Yifan Honge71fe242021-02-22 15:00:15 -0800287 "avb_headers",
Yifan Hong17d469b2021-02-18 15:15:46 -0800288 "libstorage_literals_headers",
289 ],
Dan Willemsenab971b52018-08-29 14:58:02 -0700290
291 generated_headers: ["platform_tools_version"],
292
Chih-Hung Hsieh84006f52021-02-19 18:30:29 -0800293 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
Dan Willemsenab971b52018-08-29 14:58:02 -0700299 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 },
Jiyong Parkfd890282020-08-20 18:04:01 +0900308 linux: {
Dan Willemsenab971b52018-08-29 14:58:02 -0700309 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",
Jaegeuk Kima3896102020-07-17 20:30:41 -0700328 "make_f2fs_casefold",
Dan Willemsenab971b52018-08-29 14:58:02 -0700329 ],
Dan Willemsen3f439a72018-11-19 19:11:35 -0800330 dist: {
331 targets: [
332 "dist_files",
333 "sdk",
334 "win_sdk",
335 ],
336 },
Dan Willemsenab971b52018-08-29 14:58:02 -0700337
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}
Yifan Honge71fe242021-02-22 15:00:15 -0800381
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}