// Copyright (C) 2018 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // This is required because no Android.bp can include a library defined in an // Android.mk. Eventually should kill libfastboot (defined in Android.mk) package { default_applicable_licenses: [ "system_core_fastboot_license", "Android-Apache-2.0", ], } // Added automatically by a large-scale-change that took the approach of // 'apply every license found to every target'. While this makes sure we respect // every license restriction, it may not be entirely correct. // // e.g. GPL in an MIT project might only apply to the contrib/ directory. // // Please consider splitting the single license below into multiple licenses, // taking care not to lose any license_kind information, and overriding the // default license using the 'licenses: [...]' property on targets as needed. // // For unused files, consider creating a 'fileGroup' with "//visibility:private" // to attach the license to, and including a comment whether the files may be // used in the current project. // See: http://go/android-license-faq license { name: "system_core_fastboot_license", visibility: [":__subpackages__"], license_kinds: [ "SPDX-license-identifier-BSD", ], license_text: ["LICENSE"], } cc_library_host_static { name: "libfastboot2", //host_supported: true, compile_multilib: "first", srcs: [ "bootimg_utils.cpp", "fs.cpp", "socket.cpp", "tcp.cpp", "udp.cpp", "util.cpp", "vendor_boot_img_utils.cpp", "fastboot_driver.cpp", ], static_libs: [ "libziparchive", "libsparse", "libutils", "liblog", "libz", "libdiagnose_usb", "libbase", "libcutils", "libgtest", "libgtest_main", "libbase", "libadb_host", "liblp", ], header_libs: [ "avb_headers", "bootimg_headers", "libstorage_literals_headers", ], export_header_lib_headers: [ "bootimg_headers", ], target: { linux: { srcs: ["usb_linux.cpp"], }, darwin: { srcs: ["usb_osx.cpp"], host_ldlibs: [ "-framework CoreFoundation", "-framework IOKit", ], }, windows: { srcs: ["usb_windows.cpp"], host_ldlibs: [ "-lws2_32", ], }, }, cflags: [ "-Wall", "-Wextra", "-Werror", "-Wunreachable-code", ], export_include_dirs: ["."], } cc_defaults { name: "fastboot_defaults", cflags: [ "-Wall", "-Wextra", "-Werror", "-Wvla", "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION", "-Wthread-safety", ], rtti: true, } cc_binary { name: "fastbootd", defaults: ["fastboot_defaults"], recovery: true, product_variables: { debuggable: { cppflags: ["-DFB_ENABLE_FETCH"], }, }, srcs: [ "device/commands.cpp", "device/fastboot_device.cpp", "device/flashing.cpp", "device/main.cpp", "device/usb.cpp", "device/usb_iouring.cpp", "device/usb_client.cpp", "device/tcp_client.cpp", "device/utility.cpp", "device/variables.cpp", "socket.cpp", ], shared_libs: [ "android.hardware.boot@1.0", "android.hardware.boot@1.1", "android.hardware.boot-V1-ndk", "libboot_control_client", "android.hardware.fastboot@1.1", "android.hardware.fastboot-V1-ndk", "android.hardware.health@2.0", "android.hardware.health-V3-ndk", "libasyncio", "libbase", "libbinder_ndk", "libbootloader_message", "libcutils", "libext2_uuid", "libext4_utils", "libfs_mgr", "libgsi", "libhidlbase", "liblog", "liblp", "libprotobuf-cpp-lite", "libsparse", "libutils", ], static_libs: [ "android.hardware.health-translate-ndk", "libc++fs", "libhealthhalutils", "libhealthshim", "libfastbootshim", "libsnapshot_cow", "liblz4", "libzstd", "libsnapshot_nobinder", "update_metadata-protos", "liburing", ], include_dirs: ["bionic/libc/kernel"], header_libs: [ "avb_headers", "libgtest_prod_headers", "libsnapshot_headers", "libstorage_literals_headers", ], } cc_defaults { name: "fastboot_host_defaults", use_version_lib: true, cflags: [ "-Wall", "-Wextra", "-Werror", "-Wunreachable-code", "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION", "-D_FILE_OFFSET_BITS=64", ], target: { darwin: { cflags: ["-Wno-unused-parameter"], host_ldlibs: [ "-lpthread", "-framework CoreFoundation", "-framework IOKit", ], }, windows: { enabled: true, host_ldlibs: ["-lws2_32"], }, not_windows: { static_libs: [ "libext4_utils", ], }, }, stl: "libc++_static", // Don't add anything here, we don't want additional shared dependencies // on the host fastboot tool, and shared libraries that link against libc++ // will violate ODR. shared_libs: [], header_libs: [ "avb_headers", "bootimg_headers", ], static_libs: [ "libziparchive", "libsparse", "libutils", "liblog", "liblz4", "libz", "libdiagnose_usb", "libbase", "libcutils", "libgtest_host", "liblp", "libcrypto", ], } // // Build host libfastboot. // cc_library_host_static { name: "libfastboot", defaults: ["fastboot_host_defaults"], srcs: [ "bootimg_utils.cpp", "fastboot_driver.cpp", "fastboot.cpp", "filesystem.cpp", "fs.cpp", "socket.cpp", "storage.cpp", "super_flash_helper.cpp", "tcp.cpp", "udp.cpp", "util.cpp", "vendor_boot_img_utils.cpp", "task.cpp", ], // Only version the final binaries use_version_lib: false, static_libs: ["libbuildversion"], header_libs: [ "avb_headers", "libstorage_literals_headers", ], generated_headers: ["platform_tools_version"], tidy_flags: [ // DO NOT add quotes around header-filter flag regex argument, // because build/soong will add quotes around the whole flag. "-header-filter=(system/core/fastboot/|development/host/windows/usb/api/)", ], target: { windows: { srcs: ["usb_windows.cpp"], include_dirs: ["development/host/windows/usb/api"], }, darwin: { srcs: ["usb_osx.cpp"], }, linux: { srcs: ["usb_linux.cpp"], }, }, } // // Build host fastboot / fastboot.exe // cc_binary_host { name: "fastboot", defaults: ["fastboot_host_defaults"], srcs: ["main.cpp"], static_libs: ["libfastboot"], required: [ "mke2fs", "make_f2fs", "make_f2fs_casefold", ], dist: { targets: [ "dist_files", "sdk", "sdk-repo-platform-tools", "sdk_repo", "win_sdk", ], }, target: { not_windows: { required: [ "mke2fs.conf", ], }, windows: { required: ["AdbWinUsbApi"], shared_libs: ["AdbWinApi"], }, }, } // // Build host fastboot_test. // cc_test_host { name: "fastboot_test", defaults: ["fastboot_host_defaults"], srcs: [ "fastboot_driver_test.cpp", "fastboot_test.cpp", "socket_mock.cpp", "socket_test.cpp", "super_flash_helper_test.cpp", "task_test.cpp", "tcp_test.cpp", "udp_test.cpp", ], static_libs: [ "libfastboot", "libgmock", ], target: { windows: { shared_libs: ["AdbWinApi"], }, windows_x86_64: { // Avoid trying to build for win64 enabled: false, }, }, test_suites: ["general-tests"], data: [ "testdata/super.img", "testdata/super_empty.img", "testdata/system.img", ], } cc_test_host { name: "fastboot_vendor_boot_img_utils_test", srcs: ["vendor_boot_img_utils_test.cpp"], static_libs: [ "libbase", "libc++fs", "libfastboot", "libgmock", "liblog", ], header_libs: [ "avb_headers", "bootimg_headers", ], cflags: [ "-Wall", "-Werror", ], data: [ ":fastboot_test_dtb", ":fastboot_test_bootconfig", ":fastboot_test_vendor_ramdisk_none", ":fastboot_test_vendor_ramdisk_platform", ":fastboot_test_vendor_ramdisk_replace", ":fastboot_test_vendor_boot_v3", ":fastboot_test_vendor_boot_v4_without_frag", ":fastboot_test_vendor_boot_v4_with_frag", ], } cc_library_headers { name: "fastboot_headers", host_supported: true, export_include_dirs: ["."], } python_test_host { name: "fastboot_integration_test", main: "test_fastboot.py", srcs: ["test_fastboot.py"], data: [":fastboot"], test_config: "fastboot_integration_test.xml", test_options: { unit_test: false, }, }