| // 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, |
| }, |
| } |