|  | // 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", | 
|  | "-Wvla", | 
|  | ], | 
|  | rtti: true, | 
|  |  | 
|  | use_version_lib: true, | 
|  |  | 
|  | compile_multilib: "first", | 
|  | product_variables: { | 
|  | debuggable: { | 
|  | cflags: [ | 
|  | "-DALLOW_ADBD_ROOT", | 
|  | "-DALLOW_ADBD_DISABLE_VERITY", | 
|  | "-DALLOW_ADBD_NO_AUTH", | 
|  | ], | 
|  | }, | 
|  | }, | 
|  |  | 
|  | target: { | 
|  | android: { | 
|  | cflags: ["-DADB_HOST=0"], | 
|  | }, | 
|  |  | 
|  | host: { | 
|  | cflags: ["-DADB_HOST=1"], | 
|  | }, | 
|  |  | 
|  | 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", | 
|  |  | 
|  | // -std=gnu++11 doesn't set _GNU_SOURCE on Windows. | 
|  | "-D_GNU_SOURCE", | 
|  |  | 
|  | // MinGW hides some things behind _POSIX_SOURCE. | 
|  | "-D_POSIX_SOURCE", | 
|  | ], | 
|  |  | 
|  | host_ldlibs: [ | 
|  | "-lws2_32", | 
|  | "-lgdi32", | 
|  | "-luserenv", | 
|  | ], | 
|  | }, | 
|  |  | 
|  | not_windows: { | 
|  | cflags: [ | 
|  | "-Wthread-safety", | 
|  | ], | 
|  | }, | 
|  | }, | 
|  | } | 
|  |  | 
|  | // 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.cpp", | 
|  | "services.cpp", | 
|  | "sockets.cpp", | 
|  | "socket_spec.cpp", | 
|  | "sysdeps/errno.cpp", | 
|  | "transport.cpp", | 
|  | "transport_fd.cpp", | 
|  | "transport_local.cpp", | 
|  | "transport_usb.cpp", | 
|  | ] | 
|  |  | 
|  | libadb_posix_srcs = [ | 
|  | "sysdeps_unix.cpp", | 
|  | "sysdeps/posix/network.cpp", | 
|  | ] | 
|  |  | 
|  | libadb_test_srcs = [ | 
|  | "adb_io_test.cpp", | 
|  | "adb_listeners_test.cpp", | 
|  | "adb_utils_test.cpp", | 
|  | "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/usb_libusb.cpp", | 
|  | "client/usb_dispatch.cpp", | 
|  | "client/transport_mdns.cpp", | 
|  | ], | 
|  |  | 
|  | target: { | 
|  | linux: { | 
|  | srcs: ["client/usb_linux.cpp"], | 
|  | }, | 
|  | 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: [ | 
|  | "libbase", | 
|  | "libcrypto_utils", | 
|  | "libcrypto", | 
|  | "libdiagnose_usb", | 
|  | "libmdnssd", | 
|  | "libusb", | 
|  | ], | 
|  | } | 
|  |  | 
|  | cc_test_host { | 
|  | name: "adb_test", | 
|  | defaults: ["adb_defaults"], | 
|  | srcs: libadb_test_srcs, | 
|  | static_libs: [ | 
|  | "libadb_host", | 
|  | "libbase", | 
|  | "libcutils", | 
|  | "libcrypto_utils", | 
|  | "libcrypto", | 
|  | "libmdnssd", | 
|  | "libdiagnose_usb", | 
|  | "libusb", | 
|  | ], | 
|  |  | 
|  | target: { | 
|  | windows: { | 
|  | enabled: true, | 
|  | 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: [ | 
|  | "libbase", | 
|  | "libcutils", | 
|  | "libcrypto_utils", | 
|  | "libcrypto", | 
|  | "libdiagnose_usb", | 
|  | "liblog", | 
|  | "libusb", | 
|  | ], | 
|  | } | 
|  |  | 
|  | cc_binary_host { | 
|  | name: "adb", | 
|  |  | 
|  | 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/line_printer.cpp", | 
|  | "shell_service_protocol.cpp", | 
|  | ], | 
|  |  | 
|  | static_libs: [ | 
|  | "libadb_host", | 
|  | "libbase", | 
|  | "libcutils", | 
|  | "libcrypto_utils", | 
|  | "libcrypto", | 
|  | "libdiagnose_usb", | 
|  | "liblog", | 
|  | "libmdnssd", | 
|  | "libusb", | 
|  | ], | 
|  |  | 
|  | stl: "libc++_static", | 
|  |  | 
|  | // 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: [], | 
|  |  | 
|  | target: { | 
|  | darwin: { | 
|  | cflags: [ | 
|  | "-Wno-sizeof-pointer-memaccess", | 
|  | ], | 
|  | }, | 
|  | windows: { | 
|  | enabled: true, | 
|  | ldflags: ["-municode"], | 
|  | shared_libs: ["AdbWinApi"], | 
|  | required: [ | 
|  | "AdbWinUsbApi", | 
|  | ], | 
|  | }, | 
|  | }, | 
|  | } | 
|  |  | 
|  | cc_library_static { | 
|  | name: "libadbd", | 
|  | defaults: ["adb_defaults"], | 
|  | recovery_available: true, | 
|  |  | 
|  | // libminadbd wants both, for some reason. | 
|  | compile_multilib: "both", | 
|  | srcs: libadb_srcs + libadb_posix_srcs + [ | 
|  | "daemon/auth.cpp", | 
|  | "daemon/usb.cpp", | 
|  | "daemon/jdwp_service.cpp", | 
|  | ], | 
|  |  | 
|  | static_libs: [ | 
|  | "libasyncio", | 
|  | "libbootloader_message", | 
|  | "libcrypto_utils", | 
|  | "libcrypto", | 
|  | "libdiagnose_usb", | 
|  | "libqemu_pipe", | 
|  | "libbase", | 
|  | ], | 
|  |  | 
|  | export_include_dirs: [ | 
|  | "daemon/include", | 
|  | ], | 
|  | } | 
|  |  | 
|  | cc_binary { | 
|  | name: "adbd", | 
|  | defaults: ["adb_defaults"], | 
|  |  | 
|  | recovery_available: true, | 
|  |  | 
|  | srcs: [ | 
|  | "daemon/main.cpp", | 
|  | "daemon/mdns.cpp", | 
|  | "daemon/file_sync_service.cpp", | 
|  | "daemon/framebuffer_service.cpp", | 
|  | "daemon/remount_service.cpp", | 
|  | "daemon/set_verity_enable_state_service.cpp", | 
|  | "daemon/shell_service.cpp", | 
|  | "shell_service_protocol.cpp", | 
|  | ], | 
|  |  | 
|  | cflags: [ | 
|  | "-D_GNU_SOURCE", | 
|  | "-Wno-deprecated-declarations", | 
|  | ], | 
|  |  | 
|  | strip: { | 
|  | keep_symbols: true, | 
|  | }, | 
|  |  | 
|  | static_libs: [ | 
|  | "libadbd", | 
|  | "libasyncio", | 
|  | "libavb_user", | 
|  | "libbootloader_message", | 
|  | "libcrypto_utils", | 
|  | "libcrypto", | 
|  | "libdiagnose_usb", | 
|  | "libfec", | 
|  | "libfec_rs", | 
|  | "libfs_mgr", | 
|  | "liblog", | 
|  | "libext4_utils", | 
|  | "libmdnssd", | 
|  | "libminijail", | 
|  | "libselinux", | 
|  | "libsquashfs_utils", | 
|  | "libqemu_pipe", | 
|  |  | 
|  | "libbase", | 
|  | "libcutils", | 
|  | ], | 
|  | } | 
|  |  | 
|  | cc_test { | 
|  | name: "adbd_test", | 
|  | defaults: ["adb_defaults"], | 
|  | srcs: libadb_test_srcs + [ | 
|  | "daemon/shell_service.cpp", | 
|  | "daemon/shell_service_test.cpp", | 
|  | "shell_service_protocol.cpp", | 
|  | "shell_service_protocol_test.cpp", | 
|  | ], | 
|  |  | 
|  | static_libs: [ | 
|  | "libadbd", | 
|  | "libbase", | 
|  | "libcutils", | 
|  | "libcrypto_utils", | 
|  | "libcrypto", | 
|  | "libdiagnose_usb", | 
|  | "liblog", | 
|  | "libusb", | 
|  | "libmdnssd", | 
|  | "libselinux", | 
|  | ], | 
|  | test_suites: ["device-tests"], | 
|  | } | 
|  |  | 
|  | python_binary_host { | 
|  | name: "adb_integration_test_adb", | 
|  | main: "test_adb.py", | 
|  | srcs: [ | 
|  | "test_adb.py", | 
|  | ], | 
|  | libs: [ | 
|  | "adb_py", | 
|  | ], | 
|  | version: { | 
|  | py2: { | 
|  | enabled: true, | 
|  | }, | 
|  | py3: { | 
|  | enabled: false, | 
|  | }, | 
|  | }, | 
|  | } | 
|  |  | 
|  | python_binary_host { | 
|  | name: "adb_integration_test_device", | 
|  | main: "test_device.py", | 
|  | srcs: [ | 
|  | "test_device.py", | 
|  | ], | 
|  | libs: [ | 
|  | "adb_py", | 
|  | ], | 
|  | version: { | 
|  | py2: { | 
|  | enabled: true, | 
|  | }, | 
|  | py3: { | 
|  | enabled: false, | 
|  | }, | 
|  | }, | 
|  | } |