blob: 847c869ebeef96c76ae0a068e0e062d0b3e200de [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)
Aaron Wisnerdb511202018-06-26 15:38:35 -050017cc_library_host_static {
18 name: "libfastboot2",
19
20 //host_supported: true,
21
22 compile_multilib: "first",
23 srcs: [
Dan Willemsenab971b52018-08-29 14:58:02 -070024 "bootimg_utils.cpp",
25 "fs.cpp",
26 "socket.cpp",
27 "tcp.cpp",
28 "udp.cpp",
29 "util.cpp",
30 "fastboot_driver.cpp",
Aaron Wisnerdb511202018-06-26 15:38:35 -050031 ],
32
33 static_libs: [
Dan Willemsenab971b52018-08-29 14:58:02 -070034 "libziparchive",
35 "libsparse",
36 "libutils",
37 "liblog",
38 "libz",
39 "libdiagnose_usb",
40 "libbase",
41 "libcutils",
42 "libgtest",
43 "libgtest_main",
44 "libbase",
45 "libadb_host",
David Anderson89569642018-11-16 15:53:35 -080046 "liblp",
Aaron Wisnerdb511202018-06-26 15:38:35 -050047 ],
48
49 header_libs: [
Dan Willemsenab971b52018-08-29 14:58:02 -070050 "bootimg_headers",
Aaron Wisnerdb511202018-06-26 15:38:35 -050051 ],
52
53 export_header_lib_headers: [
Dan Willemsenab971b52018-08-29 14:58:02 -070054 "bootimg_headers",
Aaron Wisnerdb511202018-06-26 15:38:35 -050055 ],
56
Aaron Wisnerdb511202018-06-26 15:38:35 -050057 target: {
Dan Willemsenab971b52018-08-29 14:58:02 -070058 linux: {
59 srcs: ["usb_linux.cpp"],
60 },
Aaron Wisnera5ad20a2018-08-24 09:59:50 -050061
Dan Willemsenab971b52018-08-29 14:58:02 -070062 darwin: {
63 srcs: ["usb_osx.cpp"],
Aaron Wisnera5ad20a2018-08-24 09:59:50 -050064
Dan Willemsenab971b52018-08-29 14:58:02 -070065 host_ldlibs: [
66 "-framework CoreFoundation",
67 "-framework IOKit",
68 ],
69 },
Aaron Wisnera5ad20a2018-08-24 09:59:50 -050070
Dan Willemsenab971b52018-08-29 14:58:02 -070071 windows: {
72 srcs: ["usb_windows.cpp"],
Aaron Wisnera5ad20a2018-08-24 09:59:50 -050073
Dan Willemsenab971b52018-08-29 14:58:02 -070074 host_ldlibs: [
75 "-lws2_32",
76 ],
77 },
Aaron Wisnerdb511202018-06-26 15:38:35 -050078 },
79
80 cflags: [
Dan Willemsenab971b52018-08-29 14:58:02 -070081 "-Wall",
82 "-Wextra",
83 "-Werror",
84 "-Wunreachable-code",
Aaron Wisnerdb511202018-06-26 15:38:35 -050085 ],
86
87 export_include_dirs: ["."],
88
89}
Hridya Valsarajudea91b42018-07-17 11:14:01 -070090
91cc_defaults {
92 name: "fastboot_defaults",
93
94 cflags: [
95 "-Wall",
96 "-Wextra",
97 "-Werror",
98 "-Wvla",
99 ],
100 rtti: true,
101
102 clang_cflags: [
103 "-Wthread-safety",
104 ],
105}
106
107cc_binary {
108 name: "fastbootd",
109 defaults: ["fastboot_defaults"],
110
111 recovery: true,
112
113 srcs: [
114 "device/commands.cpp",
115 "device/fastboot_device.cpp",
David Anderson12211d12018-07-24 15:21:20 -0700116 "device/flashing.cpp",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700117 "device/main.cpp",
Josh Gao08718242020-03-27 18:09:56 -0700118 "device/usb.cpp",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700119 "device/usb_client.cpp",
Hongguang Chen1e239282020-04-22 14:25:45 -0700120 "device/tcp_client.cpp",
Hridya Valsaraju31d2c262018-07-20 13:35:50 -0700121 "device/utility.cpp",
122 "device/variables.cpp",
Hongguang Chen1e239282020-04-22 14:25:45 -0700123 "socket.cpp",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700124 ],
125
126 shared_libs: [
Hridya Valsaraju31d2c262018-07-20 13:35:50 -0700127 "android.hardware.boot@1.0",
David Andersonab8f4662019-10-21 16:45:59 -0700128 "android.hardware.boot@1.1",
josephjang29069752020-09-23 16:28:03 +0800129 "android.hardware.fastboot@1.1",
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700130 "android.hardware.health@2.0",
Tao Baob71eedf2018-08-06 19:13:38 -0700131 "libasyncio",
132 "libbase",
133 "libbootloader_message",
134 "libcutils",
David Anderson0d4277d2018-07-31 13:27:37 -0700135 "libext2_uuid",
Tao Baob71eedf2018-08-06 19:13:38 -0700136 "libext4_utils",
137 "libfs_mgr",
David Anderson1d504e32019-01-15 14:38:20 -0800138 "libgsi",
Tao Baob71eedf2018-08-06 19:13:38 -0700139 "libhidlbase",
Tao Baob71eedf2018-08-06 19:13:38 -0700140 "liblog",
David Anderson88ef0b12018-08-09 10:40:00 -0700141 "liblp",
David Anderson220ddb12019-10-31 18:02:41 -0700142 "libprotobuf-cpp-lite",
Tao Baob71eedf2018-08-06 19:13:38 -0700143 "libsparse",
144 "libutils",
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700145 ],
146
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700147 static_libs: [
Hongguang Chen1e239282020-04-22 14:25:45 -0700148 "libgtest_prod",
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700149 "libhealthhalutils",
David Andersonaca0bea2020-09-21 16:34:25 -0700150 "libsnapshot_cow",
David Anderson220ddb12019-10-31 18:02:41 -0700151 "libsnapshot_nobinder",
Yifan Hong66f01152020-04-16 11:05:16 -0700152 "update_metadata-protos",
Hridya Valsaraju47658ca2018-09-28 11:41:22 -0700153 ],
Yifan Hong0e13bba2019-08-29 16:29:22 -0700154
155 header_libs: [
Steve Mucklea9b34432020-05-12 16:21:41 -0700156 "avb_headers",
Yifan Hong0e13bba2019-08-29 16:29:22 -0700157 "libsnapshot_headers",
158 ]
Hridya Valsarajudea91b42018-07-17 11:14:01 -0700159}
Dan Willemsenab971b52018-08-29 14:58:02 -0700160
161cc_defaults {
162 name: "fastboot_host_defaults",
163
164 use_version_lib: true,
165
166 cflags: [
167 "-Wall",
168 "-Wextra",
169 "-Werror",
170 "-Wunreachable-code",
171 ],
172
173 target: {
174 darwin: {
175 cflags: ["-Wno-unused-parameter"],
176 host_ldlibs: [
177 "-lpthread",
178 "-framework CoreFoundation",
179 "-framework IOKit",
Dan Willemsenab971b52018-08-29 14:58:02 -0700180 ],
181 },
182 windows: {
183 enabled: true,
184
185 host_ldlibs: ["-lws2_32"],
186 },
David Anderson89569642018-11-16 15:53:35 -0800187 not_windows: {
188 static_libs: [
189 "libext4_utils",
190 ],
191 },
Dan Willemsenab971b52018-08-29 14:58:02 -0700192 },
193
194 stl: "libc++_static",
195
196 // Don't add anything here, we don't want additional shared dependencies
197 // on the host fastboot tool, and shared libraries that link against libc++
198 // will violate ODR.
199 shared_libs: [],
200
Chin-Ting Kuodf6a7802019-09-16 11:23:55 +0800201 header_libs: [
202 "avb_headers",
203 "bootimg_headers",
204 ],
205
Dan Willemsenab971b52018-08-29 14:58:02 -0700206 static_libs: [
207 "libziparchive",
208 "libsparse",
209 "libutils",
210 "liblog",
211 "libz",
212 "libdiagnose_usb",
213 "libbase",
214 "libcutils",
215 "libgtest_host",
David Anderson89569642018-11-16 15:53:35 -0800216 "liblp",
217 "libcrypto",
Dan Willemsenab971b52018-08-29 14:58:02 -0700218 ],
219}
220
221//
222// Build host libfastboot.
223//
224
225cc_library_host_static {
226 name: "libfastboot",
227 defaults: ["fastboot_host_defaults"],
228
Dan Willemsenab971b52018-08-29 14:58:02 -0700229 srcs: [
230 "bootimg_utils.cpp",
Dan Willemsenab971b52018-08-29 14:58:02 -0700231 "fastboot.cpp",
232 "fs.cpp",
233 "socket.cpp",
234 "tcp.cpp",
235 "udp.cpp",
236 "util.cpp",
237 "fastboot_driver.cpp",
238 ],
239
240 // Only version the final binaries
241 use_version_lib: false,
242 static_libs: ["libbuildversion"],
243
244 generated_headers: ["platform_tools_version"],
245
Chih-Hung Hsieh84006f52021-02-19 18:30:29 -0800246 tidy_flags: [
247 // DO NOT add quotes around header-filter flag regex argument,
248 // because build/soong will add quotes around the whole flag.
249 "-header-filter=(system/core/fastboot/|development/host/windows/usb/api/)",
250 ],
251
Dan Willemsenab971b52018-08-29 14:58:02 -0700252 target: {
253 windows: {
254 srcs: ["usb_windows.cpp"],
255
256 include_dirs: ["development/host/windows/usb/api"],
257 },
258 darwin: {
259 srcs: ["usb_osx.cpp"],
260 },
Jiyong Parkfd890282020-08-20 18:04:01 +0900261 linux: {
Dan Willemsenab971b52018-08-29 14:58:02 -0700262 srcs: ["usb_linux.cpp"],
263 },
264 },
265}
266
267//
268// Build host fastboot / fastboot.exe
269//
270
271cc_binary_host {
272 name: "fastboot",
273 defaults: ["fastboot_host_defaults"],
274
275 srcs: ["main.cpp"],
276 static_libs: ["libfastboot"],
277
278 required: [
279 "mke2fs",
280 "make_f2fs",
Jaegeuk Kima3896102020-07-17 20:30:41 -0700281 "make_f2fs_casefold",
Dan Willemsenab971b52018-08-29 14:58:02 -0700282 ],
Dan Willemsen3f439a72018-11-19 19:11:35 -0800283 dist: {
284 targets: [
285 "dist_files",
286 "sdk",
287 "win_sdk",
288 ],
289 },
Dan Willemsenab971b52018-08-29 14:58:02 -0700290
291 target: {
292 not_windows: {
293 required: [
294 "e2fsdroid",
295 "mke2fs.conf",
296 "sload_f2fs",
297 ],
298 },
299 windows: {
300 required: ["AdbWinUsbApi"],
301 shared_libs: ["AdbWinApi"],
302 },
303 },
304}
305
306//
307// Build host fastboot_test.
308//
309
310cc_test_host {
311 name: "fastboot_test",
312 defaults: ["fastboot_host_defaults"],
313
314 srcs: [
315 "fastboot_test.cpp",
316 "socket_mock.cpp",
317 "socket_test.cpp",
318 "tcp_test.cpp",
319 "udp_test.cpp",
320 ],
321
322 static_libs: ["libfastboot"],
323
324 target: {
325 windows: {
326 shared_libs: ["AdbWinApi"],
327 },
328 windows_x86_64: {
329 // Avoid trying to build for win64
330 enabled: false,
331 },
332 },
333}