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