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