1# Copyright 2005 The Android Open Source Project 2# 3# Android.mk for adb 4# 5 6LOCAL_PATH:= $(call my-dir) 7 8adb_host_sanitize := 9adb_target_sanitize := 10 11adb_version := $(shell git -C $(LOCAL_PATH) rev-parse --short=12 HEAD 2>/dev/null)-android 12 13ADB_COMMON_CFLAGS := \ 14 -Wall -Wextra -Werror \ 15 -Wno-unused-parameter \ 16 -Wno-missing-field-initializers \ 17 -Wvla \ 18 -DADB_REVISION='"$(adb_version)"' \ 19 20ADB_COMMON_linux_CFLAGS := \ 21 -Wexit-time-destructors \ 22 23ADB_COMMON_darwin_CFLAGS := \ 24 -Wexit-time-destructors \ 25 26# Define windows.h and tchar.h Unicode preprocessor symbols so that 27# CreateFile(), _tfopen(), etc. map to versions that take wchar_t*, breaking the 28# build if you accidentally pass char*. Fix by calling like: 29# std::wstring path_wide; 30# if (!android::base::UTF8ToWide(path_utf8, &path_wide)) { /* error handling */ } 31# CreateFileW(path_wide.c_str()); 32ADB_COMMON_windows_CFLAGS := \ 33 -DUNICODE=1 -D_UNICODE=1 \ 34 35# libadb 36# ========================================================= 37 38# Much of adb is duplicated in bootable/recovery/minadb and fastboot. Changes 39# made to adb rarely get ported to the other two, so the trees have diverged a 40# bit. We'd like to stop this because it is a maintenance nightmare, but the 41# divergence makes this difficult to do all at once. For now, we will start 42# small by moving common files into a static library. Hopefully some day we can 43# get enough of adb in here that we no longer need minadb. https://b/17626262 44LIBADB_SRC_FILES := \ 45 adb.cpp \ 46 adb_io.cpp \ 47 adb_listeners.cpp \ 48 adb_trace.cpp \ 49 adb_utils.cpp \ 50 fdevent.cpp \ 51 sockets.cpp \ 52 socket_spec.cpp \ 53 sysdeps/errno.cpp \ 54 transport.cpp \ 55 transport_local.cpp \ 56 transport_usb.cpp \ 57 58LIBADB_TEST_SRCS := \ 59 adb_io_test.cpp \ 60 adb_listeners_test.cpp \ 61 adb_utils_test.cpp \ 62 fdevent_test.cpp \ 63 socket_spec_test.cpp \ 64 socket_test.cpp \ 65 sysdeps_test.cpp \ 66 sysdeps/stat_test.cpp \ 67 transport_test.cpp \ 68 69LIBADB_CFLAGS := \ 70 $(ADB_COMMON_CFLAGS) \ 71 -fvisibility=hidden \ 72 73LIBADB_linux_CFLAGS := \ 74 $(ADB_COMMON_linux_CFLAGS) \ 75 76LIBADB_darwin_CFLAGS := \ 77 $(ADB_COMMON_darwin_CFLAGS) \ 78 79LIBADB_windows_CFLAGS := \ 80 $(ADB_COMMON_windows_CFLAGS) \ 81 82LIBADB_darwin_SRC_FILES := \ 83 sysdeps_unix.cpp \ 84 client/usb_dispatch.cpp \ 85 client/usb_libusb.cpp \ 86 client/usb_osx.cpp \ 87 88LIBADB_linux_SRC_FILES := \ 89 sysdeps_unix.cpp \ 90 client/usb_dispatch.cpp \ 91 client/usb_libusb.cpp \ 92 client/usb_linux.cpp \ 93 94LIBADB_windows_SRC_FILES := \ 95 sysdeps_win32.cpp \ 96 sysdeps/win32/errno.cpp \ 97 sysdeps/win32/stat.cpp \ 98 client/usb_windows.cpp \ 99 100LIBADB_TEST_windows_SRCS := \ 101 sysdeps/win32/errno_test.cpp \ 102 sysdeps_win32_test.cpp \ 103 104include $(CLEAR_VARS) 105LOCAL_CLANG := true 106LOCAL_MODULE := libadbd_usb 107LOCAL_CFLAGS := $(LIBADB_CFLAGS) -DADB_HOST=0 108LOCAL_SRC_FILES := daemon/usb.cpp 109 110LOCAL_SANITIZE := $(adb_target_sanitize) 111 112# Even though we're building a static library (and thus there's no link step for 113# this to take effect), this adds the includes to our path. 114LOCAL_STATIC_LIBRARIES := libcrypto_utils libcrypto libbase 115 116include $(BUILD_STATIC_LIBRARY) 117 118include $(CLEAR_VARS) 119LOCAL_CLANG := true 120LOCAL_MODULE := libadbd 121LOCAL_CFLAGS := $(LIBADB_CFLAGS) -DADB_HOST=0 122LOCAL_SRC_FILES := \ 123 $(LIBADB_SRC_FILES) \ 124 adbd_auth.cpp \ 125 jdwp_service.cpp \ 126 127LOCAL_SANITIZE := $(adb_target_sanitize) 128 129# Even though we're building a static library (and thus there's no link step for 130# this to take effect), this adds the includes to our path. 131LOCAL_STATIC_LIBRARIES := libcrypto_utils libcrypto libbase 132 133LOCAL_WHOLE_STATIC_LIBRARIES := libadbd_usb 134 135include $(BUILD_STATIC_LIBRARY) 136 137include $(CLEAR_VARS) 138LOCAL_MODULE := libadb 139LOCAL_MODULE_HOST_OS := darwin linux windows 140LOCAL_CFLAGS := $(LIBADB_CFLAGS) -DADB_HOST=1 141LOCAL_CFLAGS_windows := $(LIBADB_windows_CFLAGS) 142LOCAL_CFLAGS_linux := $(LIBADB_linux_CFLAGS) 143LOCAL_CFLAGS_darwin := $(LIBADB_darwin_CFLAGS) 144LOCAL_SRC_FILES := \ 145 $(LIBADB_SRC_FILES) \ 146 adb_auth_host.cpp \ 147 transport_mdns.cpp \ 148 149LOCAL_SRC_FILES_darwin := $(LIBADB_darwin_SRC_FILES) 150LOCAL_SRC_FILES_linux := $(LIBADB_linux_SRC_FILES) 151LOCAL_SRC_FILES_windows := $(LIBADB_windows_SRC_FILES) 152 153LOCAL_SANITIZE := $(adb_host_sanitize) 154 155# Even though we're building a static library (and thus there's no link step for 156# this to take effect), this adds the includes to our path. 157LOCAL_STATIC_LIBRARIES := libcrypto_utils libcrypto libbase libmdnssd 158LOCAL_STATIC_LIBRARIES_linux := libusb 159LOCAL_STATIC_LIBRARIES_darwin := libusb 160 161LOCAL_C_INCLUDES_windows := development/host/windows/usb/api/ 162LOCAL_MULTILIB := first 163 164include $(BUILD_HOST_STATIC_LIBRARY) 165 166include $(CLEAR_VARS) 167LOCAL_CLANG := true 168LOCAL_MODULE := adbd_test 169LOCAL_CFLAGS := -DADB_HOST=0 $(LIBADB_CFLAGS) 170LOCAL_SRC_FILES := \ 171 $(LIBADB_TEST_SRCS) \ 172 $(LIBADB_TEST_linux_SRCS) \ 173 shell_service.cpp \ 174 shell_service_protocol.cpp \ 175 shell_service_protocol_test.cpp \ 176 shell_service_test.cpp \ 177 178LOCAL_SANITIZE := $(adb_target_sanitize) 179LOCAL_STATIC_LIBRARIES := libadbd libcrypto_utils libcrypto libusb libmdnssd 180LOCAL_SHARED_LIBRARIES := liblog libbase libcutils 181include $(BUILD_NATIVE_TEST) 182 183# libdiagnose_usb 184# ========================================================= 185 186include $(CLEAR_VARS) 187LOCAL_MODULE := libdiagnose_usb 188LOCAL_MODULE_HOST_OS := darwin linux windows 189LOCAL_CFLAGS := $(LIBADB_CFLAGS) 190LOCAL_SRC_FILES := diagnose_usb.cpp 191# Even though we're building a static library (and thus there's no link step for 192# this to take effect), this adds the includes to our path. 193LOCAL_STATIC_LIBRARIES := libbase 194include $(BUILD_HOST_STATIC_LIBRARY) 195 196# adb_test 197# ========================================================= 198 199include $(CLEAR_VARS) 200LOCAL_MODULE := adb_test 201LOCAL_MODULE_HOST_OS := darwin linux windows 202LOCAL_CFLAGS := -DADB_HOST=1 $(LIBADB_CFLAGS) 203LOCAL_CFLAGS_windows := $(LIBADB_windows_CFLAGS) 204LOCAL_CFLAGS_linux := $(LIBADB_linux_CFLAGS) 205LOCAL_CFLAGS_darwin := $(LIBADB_darwin_CFLAGS) 206LOCAL_SRC_FILES := \ 207 $(LIBADB_TEST_SRCS) \ 208 adb_client.cpp \ 209 bugreport.cpp \ 210 bugreport_test.cpp \ 211 line_printer.cpp \ 212 services.cpp \ 213 shell_service_protocol.cpp \ 214 shell_service_protocol_test.cpp \ 215 216LOCAL_SRC_FILES_linux := $(LIBADB_TEST_linux_SRCS) 217LOCAL_SRC_FILES_darwin := $(LIBADB_TEST_darwin_SRCS) 218LOCAL_SRC_FILES_windows := $(LIBADB_TEST_windows_SRCS) 219LOCAL_SANITIZE := $(adb_host_sanitize) 220LOCAL_SHARED_LIBRARIES := libbase 221LOCAL_STATIC_LIBRARIES := \ 222 libadb \ 223 libcrypto_utils \ 224 libcrypto \ 225 libcutils \ 226 libdiagnose_usb \ 227 libmdnssd \ 228 libgmock_host 229 230LOCAL_STATIC_LIBRARIES_linux := libusb 231LOCAL_STATIC_LIBRARIES_darwin := libusb 232 233# Set entrypoint to wmain from sysdeps_win32.cpp instead of main 234LOCAL_LDFLAGS_windows := -municode 235LOCAL_LDLIBS_linux := -lrt -ldl -lpthread 236LOCAL_LDLIBS_darwin := -framework CoreFoundation -framework IOKit -lobjc 237LOCAL_LDLIBS_windows := -lws2_32 -luserenv 238LOCAL_STATIC_LIBRARIES_windows := AdbWinApi 239 240LOCAL_MULTILIB := first 241 242include $(BUILD_HOST_NATIVE_TEST) 243 244# adb host tool 245# ========================================================= 246include $(CLEAR_VARS) 247 248LOCAL_LDLIBS_linux := -lrt -ldl -lpthread 249 250LOCAL_LDLIBS_darwin := -lpthread -framework CoreFoundation -framework IOKit -framework Carbon -lobjc 251 252# Use wmain instead of main 253LOCAL_LDFLAGS_windows := -municode 254LOCAL_LDLIBS_windows := -lws2_32 -lgdi32 255LOCAL_STATIC_LIBRARIES_windows := AdbWinApi 256LOCAL_REQUIRED_MODULES_windows := AdbWinApi AdbWinUsbApi 257 258LOCAL_SRC_FILES := \ 259 adb_client.cpp \ 260 bugreport.cpp \ 261 client/main.cpp \ 262 console.cpp \ 263 commandline.cpp \ 264 file_sync_client.cpp \ 265 line_printer.cpp \ 266 services.cpp \ 267 shell_service_protocol.cpp \ 268 269LOCAL_CFLAGS += \ 270 $(ADB_COMMON_CFLAGS) \ 271 -D_GNU_SOURCE \ 272 -DADB_HOST=1 \ 273 274LOCAL_CFLAGS_windows := \ 275 $(ADB_COMMON_windows_CFLAGS) 276 277LOCAL_CFLAGS_linux := \ 278 $(ADB_COMMON_linux_CFLAGS) \ 279 280LOCAL_CFLAGS_darwin := \ 281 $(ADB_COMMON_darwin_CFLAGS) \ 282 -Wno-sizeof-pointer-memaccess -Wno-unused-parameter \ 283 284LOCAL_MODULE := adb 285LOCAL_MODULE_TAGS := debug 286LOCAL_MODULE_HOST_OS := darwin linux windows 287 288LOCAL_SANITIZE := $(adb_host_sanitize) 289LOCAL_STATIC_LIBRARIES := \ 290 libadb \ 291 libbase \ 292 libcrypto_utils \ 293 libcrypto \ 294 libdiagnose_usb \ 295 liblog \ 296 libmdnssd 297 298# Don't use libcutils on Windows. 299LOCAL_STATIC_LIBRARIES_darwin := libcutils 300LOCAL_STATIC_LIBRARIES_linux := libcutils 301 302LOCAL_STATIC_LIBRARIES_darwin += libusb 303LOCAL_STATIC_LIBRARIES_linux += libusb 304 305LOCAL_CXX_STL := libc++_static 306 307# Don't add anything here, we don't want additional shared dependencies 308# on the host adb tool, and shared libraries that link against libc++ 309# will violate ODR 310LOCAL_SHARED_LIBRARIES := 311 312include $(BUILD_HOST_EXECUTABLE) 313 314$(call dist-for-goals,dist_files sdk win_sdk,$(LOCAL_BUILT_MODULE)) 315ifdef HOST_CROSS_OS 316# Archive adb.exe for win_sdk build. 317$(call dist-for-goals,win_sdk,$(ALL_MODULES.host_cross_adb.BUILT)) 318endif 319 320 321# adbd device daemon 322# ========================================================= 323 324include $(CLEAR_VARS) 325 326LOCAL_CLANG := true 327 328LOCAL_SRC_FILES := \ 329 daemon/main.cpp \ 330 daemon/mdns.cpp \ 331 services.cpp \ 332 file_sync_service.cpp \ 333 framebuffer_service.cpp \ 334 remount_service.cpp \ 335 set_verity_enable_state_service.cpp \ 336 shell_service.cpp \ 337 shell_service_protocol.cpp \ 338 339LOCAL_CFLAGS := \ 340 $(ADB_COMMON_CFLAGS) \ 341 $(ADB_COMMON_linux_CFLAGS) \ 342 -DADB_HOST=0 \ 343 -D_GNU_SOURCE \ 344 -Wno-deprecated-declarations \ 345 346LOCAL_CFLAGS += -DALLOW_ADBD_NO_AUTH=$(if $(filter userdebug eng,$(TARGET_BUILD_VARIANT)),1,0) 347 348ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT))) 349LOCAL_CFLAGS += -DALLOW_ADBD_DISABLE_VERITY=1 350LOCAL_CFLAGS += -DALLOW_ADBD_ROOT=1 351endif 352 353LOCAL_MODULE := adbd 354 355LOCAL_FORCE_STATIC_EXECUTABLE := true 356LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT_SBIN) 357LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_SBIN_UNSTRIPPED) 358 359LOCAL_SANITIZE := $(adb_target_sanitize) 360LOCAL_STRIP_MODULE := keep_symbols 361LOCAL_STATIC_LIBRARIES := \ 362 libadbd \ 363 libbase \ 364 libbootloader_message \ 365 libfs_mgr \ 366 libfec \ 367 libfec_rs \ 368 libselinux \ 369 liblog \ 370 libext4_utils \ 371 libsquashfs_utils \ 372 libcutils \ 373 libbase \ 374 libcrypto_utils \ 375 libcrypto \ 376 libminijail \ 377 libmdnssd \ 378 libdebuggerd_handler \ 379 380include $(BUILD_EXECUTABLE) 381 382include $(call first-makefiles-under,$(LOCAL_PATH)) 383