| // Copyright (C) 2017 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. |
| |
| cc_defaults { |
| name: "adb_defaults", |
| |
| cflags: [ |
| "-Wall", |
| "-Wextra", |
| "-Werror", |
| "-Wexit-time-destructors", |
| "-Wno-unused-parameter", |
| "-Wno-missing-field-initializers", |
| "-Wthread-safety", |
| "-Wvla", |
| "-DADB_HOST=1", // overridden by adbd_defaults |
| "-DALLOW_ADBD_ROOT=0", // overridden by adbd_defaults |
| "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION=1", |
| ], |
| cpp_std: "experimental", |
| |
| use_version_lib: true, |
| compile_multilib: "first", |
| |
| target: { |
| darwin: { |
| host_ldlibs: [ |
| "-lpthread", |
| "-framework CoreFoundation", |
| "-framework IOKit", |
| "-lobjc", |
| ], |
| }, |
| |
| windows: { |
| cflags: [ |
| // Define windows.h and tchar.h Unicode preprocessor symbols so that |
| // CreateFile(), _tfopen(), etc. map to versions that take wchar_t*, breaking the |
| // build if you accidentally pass char*. Fix by calling like: |
| // std::wstring path_wide; |
| // if (!android::base::UTF8ToWide(path_utf8, &path_wide)) { /* error handling */ } |
| // CreateFileW(path_wide.c_str()); |
| "-DUNICODE=1", |
| "-D_UNICODE=1", |
| |
| // Unlike on Linux, -std=gnu++ doesn't set _GNU_SOURCE on Windows. |
| "-D_GNU_SOURCE", |
| |
| // MinGW hides some things behind _POSIX_SOURCE. |
| "-D_POSIX_SOURCE", |
| |
| // libusb uses __stdcall on a variadic function, which gets ignored. |
| "-Wno-ignored-attributes", |
| |
| // Not supported yet. |
| "-Wno-thread-safety", |
| ], |
| |
| host_ldlibs: [ |
| "-lws2_32", |
| "-lgdi32", |
| "-luserenv", |
| ], |
| }, |
| }, |
| } |
| |
| cc_defaults { |
| name: "adbd_defaults", |
| defaults: ["adb_defaults"], |
| |
| cflags: ["-UADB_HOST", "-DADB_HOST=0"], |
| product_variables: { |
| debuggable: { |
| cflags: [ |
| "-UALLOW_ADBD_ROOT", |
| "-DALLOW_ADBD_ROOT=1", |
| "-DALLOW_ADBD_DISABLE_VERITY", |
| "-DALLOW_ADBD_NO_AUTH", |
| ], |
| }, |
| }, |
| } |
| |
| cc_defaults { |
| name: "host_adbd_supported", |
| |
| host_supported: true, |
| target: { |
| linux: { |
| enabled: true, |
| host_ldlibs: [ |
| "-lresolv", // b64_pton |
| "-lutil", // forkpty |
| ], |
| }, |
| darwin: { |
| enabled: false, |
| }, |
| windows: { |
| enabled: false, |
| }, |
| }, |
| } |
| |
| // libadb |
| // ========================================================= |
| // These files are compiled for both the host and the device. |
| libadb_srcs = [ |
| "adb.cpp", |
| "adb_io.cpp", |
| "adb_listeners.cpp", |
| "adb_trace.cpp", |
| "adb_unique_fd.cpp", |
| "adb_utils.cpp", |
| "fdevent/fdevent.cpp", |
| "fdevent/fdevent_poll.cpp", |
| "services.cpp", |
| "sockets.cpp", |
| "socket_spec.cpp", |
| "sysdeps/errno.cpp", |
| "transport.cpp", |
| "transport_fd.cpp", |
| "transport_local.cpp", |
| "transport_usb.cpp", |
| "types.cpp", |
| ] |
| |
| libadb_posix_srcs = [ |
| "sysdeps_unix.cpp", |
| "sysdeps/posix/network.cpp", |
| ] |
| |
| libadb_linux_srcs = [ |
| "fdevent/fdevent_epoll.cpp", |
| ] |
| |
| libadb_test_srcs = [ |
| "adb_io_test.cpp", |
| "adb_listeners_test.cpp", |
| "adb_utils_test.cpp", |
| "fdevent/fdevent_test.cpp", |
| "socket_spec_test.cpp", |
| "socket_test.cpp", |
| "sysdeps_test.cpp", |
| "sysdeps/stat_test.cpp", |
| "transport_test.cpp", |
| "types_test.cpp", |
| ] |
| |
| cc_library_host_static { |
| name: "libadb_host", |
| defaults: ["adb_defaults"], |
| |
| srcs: libadb_srcs + [ |
| "client/auth.cpp", |
| "client/adb_wifi.cpp", |
| "client/usb_libusb.cpp", |
| "client/usb_dispatch.cpp", |
| "client/transport_mdns.cpp", |
| "client/pairing/pairing_client.cpp", |
| ], |
| |
| generated_headers: ["platform_tools_version"], |
| |
| target: { |
| linux: { |
| srcs: ["client/usb_linux.cpp"] + libadb_linux_srcs, |
| }, |
| darwin: { |
| srcs: ["client/usb_osx.cpp"], |
| }, |
| not_windows: { |
| srcs: libadb_posix_srcs, |
| }, |
| windows: { |
| enabled: true, |
| srcs: [ |
| "client/usb_windows.cpp", |
| "sysdeps_win32.cpp", |
| "sysdeps/win32/errno.cpp", |
| "sysdeps/win32/stat.cpp", |
| ], |
| shared_libs: ["AdbWinApi"], |
| }, |
| }, |
| |
| static_libs: [ |
| "libadb_crypto", |
| "libadb_protos", |
| "libadb_pairing_connection", |
| "libadb_tls_connection", |
| "libbase", |
| "libcrypto_utils", |
| "libcrypto", |
| "libdiagnose_usb", |
| "libmdnssd", |
| "libusb", |
| "libutils", |
| "liblog", |
| "libcutils", |
| "libprotobuf-cpp-lite", |
| ], |
| } |
| |
| cc_test_host { |
| name: "adb_test", |
| defaults: ["adb_defaults"], |
| srcs: libadb_test_srcs, |
| static_libs: [ |
| "libadb_crypto_static", |
| "libadb_host", |
| "libadb_pairing_auth_static", |
| "libadb_pairing_connection_static", |
| "libadb_protos_static", |
| "libadb_tls_connection_static", |
| "libbase", |
| "libcutils", |
| "libcrypto_utils", |
| "libcrypto", |
| "liblog", |
| "libmdnssd", |
| "libdiagnose_usb", |
| "libprotobuf-cpp-lite", |
| "libssl", |
| "libusb", |
| ], |
| |
| target: { |
| windows: { |
| enabled: true, |
| ldflags: ["-municode"], |
| shared_libs: ["AdbWinApi"], |
| }, |
| }, |
| } |
| |
| cc_benchmark { |
| name: "adb_benchmark", |
| defaults: ["adb_defaults"], |
| |
| srcs: ["transport_benchmark.cpp"], |
| target: { |
| android: { |
| static_libs: [ |
| "libadbd", |
| ], |
| }, |
| host: { |
| static_libs: [ |
| "libadb_host", |
| ], |
| }, |
| }, |
| |
| static_libs: [ |
| "libadb_crypto_static", |
| "libadb_tls_connection_static", |
| "libadbd_auth", |
| "libbase", |
| "libcutils", |
| "libcrypto_utils", |
| "libcrypto_static", |
| "libdiagnose_usb", |
| "liblog", |
| "libssl", |
| "libusb", |
| ], |
| } |
| |
| cc_binary_host { |
| name: "adb", |
| |
| stl: "libc++_static", |
| defaults: ["adb_defaults"], |
| |
| srcs: [ |
| "client/adb_client.cpp", |
| "client/bugreport.cpp", |
| "client/commandline.cpp", |
| "client/file_sync_client.cpp", |
| "client/main.cpp", |
| "client/console.cpp", |
| "client/adb_install.cpp", |
| "client/line_printer.cpp", |
| "client/fastdeploy.cpp", |
| "client/fastdeploycallbacks.cpp", |
| "client/incremental.cpp", |
| "client/incremental_server.cpp", |
| "client/incremental_utils.cpp", |
| "shell_service_protocol.cpp", |
| ], |
| |
| generated_headers: [ |
| "bin2c_fastdeployagent", |
| "bin2c_fastdeployagentscript" |
| ], |
| |
| static_libs: [ |
| "libadb_crypto", |
| "libadb_host", |
| "libadb_pairing_auth", |
| "libadb_pairing_connection", |
| "libadb_protos", |
| "libadb_tls_connection", |
| "libandroidfw", |
| "libapp_processes_protos_full", |
| "libbase", |
| "libbrotli", |
| "libcutils", |
| "libcrypto_utils", |
| "libcrypto", |
| "libfastdeploy_host", |
| "libdiagnose_usb", |
| "liblog", |
| "liblz4", |
| "libmdnssd", |
| "libprotobuf-cpp-full", |
| "libssl", |
| "libusb", |
| "libutils", |
| "liblog", |
| "libziparchive", |
| "libz", |
| ], |
| |
| // Don't add anything here, we don't want additional shared dependencies |
| // on the host adb tool, and shared libraries that link against libc++ |
| // will violate ODR |
| shared_libs: [], |
| |
| // Archive adb, adb.exe. |
| dist: { |
| targets: [ |
| "dist_files", |
| "sdk", |
| "win_sdk", |
| ], |
| }, |
| |
| target: { |
| darwin: { |
| cflags: [ |
| "-Wno-sizeof-pointer-memaccess", |
| ], |
| }, |
| windows: { |
| enabled: true, |
| ldflags: ["-municode"], |
| shared_libs: ["AdbWinApi"], |
| required: [ |
| "AdbWinUsbApi", |
| ], |
| }, |
| }, |
| } |
| |
| // libadbd_core contains the common sources to build libadbd and libadbd_services. |
| cc_library_static { |
| name: "libadbd_core", |
| defaults: ["adbd_defaults", "host_adbd_supported"], |
| recovery_available: true, |
| |
| // libminadbd wants both, as it's used to build native tests. |
| compile_multilib: "both", |
| |
| srcs: libadb_srcs + libadb_linux_srcs + libadb_posix_srcs + [ |
| "daemon/auth.cpp", |
| "daemon/jdwp_service.cpp", |
| "daemon/logging.cpp", |
| "daemon/adb_wifi.cpp", |
| ], |
| |
| local_include_dirs: [ |
| "daemon/include", |
| ], |
| |
| generated_headers: ["platform_tools_version"], |
| |
| static_libs: [ |
| "libdiagnose_usb", |
| ], |
| |
| shared_libs: [ |
| "libadbconnection_server", |
| "libadb_crypto", |
| "libadb_pairing_connection", |
| "libadb_protos", |
| "libadb_tls_connection", |
| "libadbd_auth", |
| "libapp_processes_protos_lite", |
| "libasyncio", |
| "libbase", |
| "libcrypto", |
| "libcrypto_utils", |
| "liblog", |
| ], |
| |
| proto: { |
| type: "lite", |
| static: true, |
| export_proto_headers: true, |
| }, |
| |
| target: { |
| android: { |
| whole_static_libs: [ |
| "libqemu_pipe", |
| ], |
| srcs: [ |
| "daemon/transport_qemu.cpp", |
| "daemon/usb.cpp", |
| "daemon/usb_ffs.cpp", |
| "daemon/usb_legacy.cpp", |
| ] |
| }, |
| linux_glibc: { |
| srcs: [ |
| "daemon/usb_dummy.cpp", |
| ] |
| }, |
| recovery: { |
| exclude_shared_libs: [ |
| "libadb_pairing_auth", |
| "libadb_pairing_connection", |
| "libapp_processes_protos_lite", |
| ], |
| } |
| }, |
| |
| apex_available: [ |
| "//apex_available:platform", |
| "com.android.adbd", |
| ], |
| visibility: [ |
| "//bootable/recovery/minadbd", |
| "//system/core/adb", |
| ], |
| } |
| |
| cc_library { |
| name: "libadbd_services", |
| defaults: ["adbd_defaults", "host_adbd_supported"], |
| recovery_available: true, |
| compile_multilib: "both", |
| |
| srcs: [ |
| "daemon/file_sync_service.cpp", |
| "daemon/services.cpp", |
| "daemon/shell_service.cpp", |
| "shell_service_protocol.cpp", |
| ], |
| |
| cflags: [ |
| "-D_GNU_SOURCE", |
| "-Wno-deprecated-declarations", |
| ], |
| |
| static_libs: [ |
| "libadbconnection_server", |
| "libadbd_core", |
| "libbrotli", |
| "libdiagnose_usb", |
| ], |
| |
| shared_libs: [ |
| "libadb_crypto", |
| "libadb_pairing_connection", |
| "libadb_protos", |
| "libadb_tls_connection", |
| "libadbd_auth", |
| "libadbd_fs", |
| "libapp_processes_protos_lite", |
| "libasyncio", |
| "libbase", |
| "libcrypto", |
| "libcrypto_utils", |
| "libcutils_sockets", |
| "liblog", |
| "libprotobuf-cpp-lite", |
| ], |
| |
| target: { |
| android: { |
| srcs: [ |
| "daemon/abb_service.cpp", |
| "daemon/framebuffer_service.cpp", |
| "daemon/mdns.cpp", |
| "daemon/restart_service.cpp", |
| ], |
| shared_libs: [ |
| "libmdnssd", |
| "libselinux", |
| ], |
| }, |
| recovery: { |
| exclude_srcs: [ |
| "daemon/abb_service.cpp", |
| ], |
| exclude_shared_libs: [ |
| "libadb_pairing_auth", |
| "libadb_pairing_connection", |
| ], |
| }, |
| }, |
| |
| apex_available: [ |
| "//apex_available:platform", |
| "com.android.adbd", |
| ], |
| visibility: [ |
| "//system/core/adb", |
| ], |
| |
| } |
| |
| cc_library { |
| name: "libadbd", |
| defaults: ["adbd_defaults", "host_adbd_supported"], |
| recovery_available: true, |
| apex_available: ["com.android.adbd"], |
| |
| // avoid getting duplicate symbol of android::build::getbuildnumber(). |
| use_version_lib: false, |
| |
| // libminadbd wants both, as it's used to build native tests. |
| compile_multilib: "both", |
| |
| whole_static_libs: [ |
| "libadbd_core", |
| ], |
| |
| shared_libs: [ |
| "libadbconnection_server", |
| "libapp_processes_protos_lite", |
| "libprotobuf-cpp-lite", |
| "libadb_crypto", |
| "libadb_pairing_connection", |
| "libadb_tls_connection", |
| "libadbd_auth", |
| "libadbd_fs", |
| "libadbd_services", |
| "libasyncio", |
| "libbase", |
| "libcrypto", |
| "libcrypto_utils", |
| "liblog", |
| "libselinux", |
| ], |
| |
| target: { |
| recovery: { |
| exclude_shared_libs: [ |
| "libadb_pairing_auth", |
| "libadb_pairing_connection", |
| ], |
| } |
| }, |
| |
| static_libs: [ |
| "libbrotli", |
| "libcutils_sockets", |
| "libdiagnose_usb", |
| "libmdnssd", |
| ], |
| |
| export_include_dirs: [ |
| "daemon/include", |
| ], |
| } |
| |
| cc_binary { |
| name: "adbd", |
| defaults: ["adbd_defaults", "host_adbd_supported"], |
| stl: "libc++_static", |
| recovery_available: true, |
| apex_available: ["com.android.adbd"], |
| |
| srcs: [ |
| "daemon/main.cpp", |
| ], |
| |
| cflags: [ |
| "-D_GNU_SOURCE", |
| "-Wno-deprecated-declarations", |
| ], |
| |
| strip: { |
| keep_symbols: true, |
| }, |
| |
| static_libs: [ |
| "libadb_crypto", |
| "libadb_tls_connection", |
| "libadbconnection_server", |
| "libadbd", |
| "libadbd_services", |
| "libapp_processes_protos_lite", |
| "libasyncio", |
| "libbase", |
| "libbrotli", |
| "libcap", |
| "libcrypto_utils", |
| "libcutils_sockets", |
| "libdiagnose_usb", |
| "libmdnssd", |
| "libminijail", |
| "libprotobuf-cpp-lite", |
| "libssl", |
| ], |
| |
| shared_libs: [ |
| "libadb_pairing_connection", |
| "libadb_protos", |
| "libadbd_auth", |
| "libadbd_fs", |
| "libcrypto", |
| "liblog", |
| "libselinux", |
| ], |
| |
| target: { |
| recovery: { |
| exclude_shared_libs: [ |
| "libadb_pairing_auth", |
| "libadb_pairing_connection", |
| ], |
| } |
| }, |
| |
| required: [ |
| "libadbd_auth", |
| "libadbd_fs", |
| ], |
| } |
| |
| phony { |
| name: "adbd_system_binaries", |
| required: [ |
| "abb", |
| "reboot", |
| "set-verity-state", |
| ] |
| } |
| |
| phony { |
| name: "adbd_system_binaries_recovery", |
| required: [ |
| "reboot.recovery", |
| ], |
| } |
| |
| cc_binary { |
| name: "abb", |
| |
| defaults: ["adbd_defaults"], |
| stl: "libc++", |
| recovery_available: false, |
| |
| srcs: [ |
| "daemon/abb.cpp", |
| ], |
| |
| cflags: [ |
| "-D_GNU_SOURCE", |
| "-Wno-deprecated-declarations", |
| ], |
| |
| strip: { |
| keep_symbols: true, |
| }, |
| |
| static_libs: [ |
| "libadbd_core", |
| "libadbd_services", |
| "libcmd", |
| ], |
| |
| shared_libs: [ |
| "libbase", |
| "libbinder", |
| "liblog", |
| "libutils", |
| "libselinux", |
| ], |
| } |
| |
| cc_test { |
| name: "adbd_test", |
| |
| defaults: ["adbd_defaults"], |
| stl: "libc++_static", |
| |
| recovery_available: false, |
| srcs: libadb_test_srcs + [ |
| "daemon/services.cpp", |
| "daemon/shell_service.cpp", |
| "daemon/shell_service_test.cpp", |
| "shell_service_protocol.cpp", |
| "shell_service_protocol_test.cpp", |
| ], |
| |
| static_libs: [ |
| "libadbd", |
| "libadbd_auth", |
| "libadb_crypto_static", |
| "libadb_pairing_connection_static", |
| "libadb_tls_connection_static", |
| "libbase", |
| "libcrypto_utils", |
| "libcrypto_static", |
| "libcutils_sockets", |
| "libdiagnose_usb", |
| "liblog", |
| "libusb", |
| "libmdnssd", |
| "libselinux", |
| ], |
| test_suites: ["device-tests", "mts"], |
| require_root: true, |
| } |
| |
| python_test_host { |
| name: "adb_integration_test_adb", |
| main: "test_adb.py", |
| srcs: [ |
| "test_adb.py", |
| ], |
| test_config: "adb_integration_test_adb.xml", |
| test_suites: ["general-tests"], |
| version: { |
| py2: { |
| enabled: false, |
| }, |
| py3: { |
| enabled: true, |
| }, |
| }, |
| } |
| |
| python_test_host { |
| name: "adb_integration_test_device", |
| main: "test_device.py", |
| srcs: [ |
| "test_device.py", |
| ], |
| libs: [ |
| "adb_py", |
| ], |
| test_config: "adb_integration_test_device.xml", |
| test_suites: ["general-tests"], |
| version: { |
| py2: { |
| enabled: false, |
| }, |
| py3: { |
| enabled: true, |
| }, |
| }, |
| } |
| |
| // Note: using pipe for xxd to control the variable name generated |
| // the default name used by xxd is the path to the input file. |
| java_genrule { |
| name: "bin2c_fastdeployagent", |
| out: ["deployagent.inc"], |
| srcs: [":deployagent"], |
| cmd: "(echo 'unsigned char kDeployAgent[] = {' && xxd -i <$(in) && echo '};') > $(out)", |
| } |
| |
| genrule { |
| name: "bin2c_fastdeployagentscript", |
| out: ["deployagentscript.inc"], |
| srcs: ["fastdeploy/deployagent/deployagent.sh"], |
| cmd: "(echo 'unsigned char kDeployAgentScript[] = {' && xxd -i <$(in) && echo '};') > $(out)", |
| } |
| |
| cc_library_host_static { |
| name: "libfastdeploy_host", |
| defaults: ["adb_defaults"], |
| srcs: [ |
| "fastdeploy/deploypatchgenerator/apk_archive.cpp", |
| "fastdeploy/deploypatchgenerator/deploy_patch_generator.cpp", |
| "fastdeploy/deploypatchgenerator/patch_utils.cpp", |
| "fastdeploy/proto/ApkEntry.proto", |
| ], |
| static_libs: [ |
| "libadb_host", |
| "libandroidfw", |
| "libbase", |
| "libcutils", |
| "libcrypto_utils", |
| "libcrypto", |
| "libdiagnose_usb", |
| "liblog", |
| "libmdnssd", |
| "libusb", |
| "libutils", |
| "libziparchive", |
| "libz", |
| ], |
| proto: { |
| type: "lite", |
| export_proto_headers: true, |
| }, |
| target: { |
| windows: { |
| enabled: true, |
| shared_libs: ["AdbWinApi"], |
| }, |
| }, |
| } |
| |
| cc_test_host { |
| name: "fastdeploy_test", |
| defaults: ["adb_defaults"], |
| srcs: [ |
| "fastdeploy/deploypatchgenerator/apk_archive_test.cpp", |
| "fastdeploy/deploypatchgenerator/deploy_patch_generator_test.cpp", |
| "fastdeploy/deploypatchgenerator/patch_utils_test.cpp", |
| ], |
| static_libs: [ |
| "libadb_crypto_static", |
| "libadb_host", |
| "libadb_pairing_auth_static", |
| "libadb_pairing_connection_static", |
| "libadb_protos_static", |
| "libadb_tls_connection_static", |
| "libandroidfw", |
| "libbase", |
| "libcutils", |
| "libcrypto_utils", |
| "libcrypto", |
| "libdiagnose_usb", |
| "libfastdeploy_host", |
| "liblog", |
| "libmdnssd", |
| "libprotobuf-cpp-lite", |
| "libssl", |
| "libusb", |
| "libutils", |
| "libziparchive", |
| "libz", |
| ], |
| target: { |
| windows: { |
| enabled: true, |
| shared_libs: ["AdbWinApi"], |
| }, |
| }, |
| data: [ |
| "fastdeploy/testdata/rotating_cube-metadata-release.data", |
| "fastdeploy/testdata/rotating_cube-release.apk", |
| "fastdeploy/testdata/sample.apk", |
| "fastdeploy/testdata/sample.cd", |
| ], |
| } |