Android.mk revision d302a15a60feb453bb018da99b9abae8dab2ca01
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 sockets.cpp \ 54 transport.cpp \ 55 transport_local.cpp \ 56 transport_usb.cpp \ 57 58LIBADB_TEST_SRCS := \ 59 adb_io_test.cpp \ 60 adb_utils_test.cpp \ 61 sysdeps_test.cpp \ 62 transport_test.cpp \ 63 64LIBADB_CFLAGS := \ 65 $(ADB_COMMON_CFLAGS) \ 66 -fvisibility=hidden \ 67 68LIBADB_linux_CFLAGS := \ 69 $(ADB_COMMON_linux_CFLAGS) \ 70 71LIBADB_darwin_CFLAGS := \ 72 $(ADB_COMMON_darwin_CFLAGS) \ 73 74LIBADB_windows_CFLAGS := \ 75 $(ADB_COMMON_windows_CFLAGS) \ 76 77LIBADB_darwin_SRC_FILES := \ 78 fdevent.cpp \ 79 get_my_path_darwin.cpp \ 80 usb_osx.cpp \ 81 82LIBADB_linux_SRC_FILES := \ 83 fdevent.cpp \ 84 get_my_path_linux.cpp \ 85 usb_linux.cpp \ 86 87LIBADB_windows_SRC_FILES := \ 88 sysdeps_win32.cpp \ 89 usb_windows.cpp \ 90 91LIBADB_TEST_linux_SRCS := \ 92 fdevent_test.cpp \ 93 socket_test.cpp \ 94 95LIBADB_TEST_darwin_SRCS := \ 96 fdevent_test.cpp \ 97 socket_test.cpp \ 98 99LIBADB_TEST_windows_SRCS := \ 100 sysdeps_win32_test.cpp \ 101 102include $(CLEAR_VARS) 103LOCAL_CLANG := true 104LOCAL_MODULE := libadbd 105LOCAL_CFLAGS := $(LIBADB_CFLAGS) -DADB_HOST=0 106LOCAL_SRC_FILES := \ 107 $(LIBADB_SRC_FILES) \ 108 adb_auth_client.cpp \ 109 fdevent.cpp \ 110 jdwp_service.cpp \ 111 usb_linux_client.cpp \ 112 113LOCAL_SANITIZE := $(adb_target_sanitize) 114 115# Even though we're building a static library (and thus there's no link step for 116# this to take effect), this adds the includes to our path. 117LOCAL_STATIC_LIBRARIES := libbase 118 119include $(BUILD_STATIC_LIBRARY) 120 121include $(CLEAR_VARS) 122LOCAL_MODULE := libadb 123LOCAL_MODULE_HOST_OS := darwin linux windows 124LOCAL_CFLAGS := $(LIBADB_CFLAGS) -DADB_HOST=1 125LOCAL_CFLAGS_windows := $(LIBADB_windows_CFLAGS) 126LOCAL_CFLAGS_linux := $(LIBADB_linux_CFLAGS) 127LOCAL_CFLAGS_darwin := $(LIBADB_darwin_CFLAGS) 128LOCAL_SRC_FILES := \ 129 $(LIBADB_SRC_FILES) \ 130 adb_auth_host.cpp \ 131 132LOCAL_SRC_FILES_darwin := $(LIBADB_darwin_SRC_FILES) 133LOCAL_SRC_FILES_linux := $(LIBADB_linux_SRC_FILES) 134LOCAL_SRC_FILES_windows := $(LIBADB_windows_SRC_FILES) 135 136LOCAL_SANITIZE := $(adb_host_sanitize) 137 138# Even though we're building a static library (and thus there's no link step for 139# this to take effect), this adds the includes to our path. 140LOCAL_STATIC_LIBRARIES := libcrypto_static libbase 141 142LOCAL_C_INCLUDES_windows := development/host/windows/usb/api/ 143LOCAL_MULTILIB := first 144 145include $(BUILD_HOST_STATIC_LIBRARY) 146 147include $(CLEAR_VARS) 148LOCAL_CLANG := true 149LOCAL_MODULE := adbd_test 150LOCAL_CFLAGS := -DADB_HOST=0 $(LIBADB_CFLAGS) 151LOCAL_SRC_FILES := \ 152 $(LIBADB_TEST_SRCS) \ 153 $(LIBADB_TEST_linux_SRCS) \ 154 shell_service.cpp \ 155 shell_service_protocol.cpp \ 156 shell_service_protocol_test.cpp \ 157 shell_service_test.cpp \ 158 159LOCAL_SANITIZE := $(adb_target_sanitize) 160LOCAL_STATIC_LIBRARIES := libadbd 161LOCAL_SHARED_LIBRARIES := libbase libcutils 162include $(BUILD_NATIVE_TEST) 163 164# libdiagnose_usb 165# ========================================================= 166 167include $(CLEAR_VARS) 168LOCAL_MODULE := libdiagnose_usb 169LOCAL_MODULE_HOST_OS := darwin linux windows 170LOCAL_CFLAGS := $(LIBADB_CFLAGS) 171LOCAL_SRC_FILES := diagnose_usb.cpp 172# Even though we're building a static library (and thus there's no link step for 173# this to take effect), this adds the includes to our path. 174LOCAL_STATIC_LIBRARIES := libbase 175include $(BUILD_HOST_STATIC_LIBRARY) 176 177# adb_test 178# ========================================================= 179 180include $(CLEAR_VARS) 181LOCAL_MODULE := adb_test 182LOCAL_MODULE_HOST_OS := darwin linux windows 183LOCAL_CFLAGS := -DADB_HOST=1 $(LIBADB_CFLAGS) 184LOCAL_CFLAGS_windows := $(LIBADB_windows_CFLAGS) 185LOCAL_CFLAGS_linux := $(LIBADB_linux_CFLAGS) 186LOCAL_CFLAGS_darwin := $(LIBADB_darwin_CFLAGS) 187LOCAL_SRC_FILES := \ 188 $(LIBADB_TEST_SRCS) \ 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 204# Set entrypoint to wmain from sysdeps_win32.cpp instead of main 205LOCAL_LDFLAGS_windows := -municode 206LOCAL_LDLIBS_linux := -lrt -ldl -lpthread 207LOCAL_LDLIBS_darwin := -framework CoreFoundation -framework IOKit 208LOCAL_LDLIBS_windows := -lws2_32 -luserenv 209LOCAL_STATIC_LIBRARIES_windows := AdbWinApi 210 211LOCAL_MULTILIB := first 212 213include $(BUILD_HOST_NATIVE_TEST) 214 215# adb device tracker (used by ddms) test tool 216# ========================================================= 217 218ifeq ($(HOST_OS),linux) 219include $(CLEAR_VARS) 220LOCAL_MODULE := adb_device_tracker_test 221LOCAL_CFLAGS := -DADB_HOST=1 $(LIBADB_CFLAGS) 222LOCAL_CFLAGS_windows := $(LIBADB_windows_CFLAGS) 223LOCAL_CFLAGS_linux := $(LIBADB_linux_CFLAGS) 224LOCAL_CFLAGS_darwin := $(LIBADB_darwin_CFLAGS) 225LOCAL_SRC_FILES := test_track_devices.cpp 226LOCAL_SANITIZE := $(adb_host_sanitize) 227LOCAL_SHARED_LIBRARIES := libbase 228LOCAL_STATIC_LIBRARIES := libadb libcrypto_static libcutils 229LOCAL_LDLIBS += -lrt -ldl -lpthread 230include $(BUILD_HOST_EXECUTABLE) 231endif 232 233# adb host tool 234# ========================================================= 235include $(CLEAR_VARS) 236 237LOCAL_LDLIBS_linux := -lrt -ldl -lpthread 238 239LOCAL_LDLIBS_darwin := -lpthread -framework CoreFoundation -framework IOKit -framework Carbon 240 241# Use wmain instead of main 242LOCAL_LDFLAGS_windows := -municode 243LOCAL_LDLIBS_windows := -lws2_32 -lgdi32 244LOCAL_STATIC_LIBRARIES_windows := AdbWinApi 245LOCAL_REQUIRED_MODULES_windows := AdbWinApi AdbWinUsbApi 246 247LOCAL_SRC_FILES := \ 248 adb_client.cpp \ 249 client/main.cpp \ 250 console.cpp \ 251 commandline.cpp \ 252 file_sync_client.cpp \ 253 line_printer.cpp \ 254 services.cpp \ 255 shell_service_protocol.cpp \ 256 257LOCAL_CFLAGS += \ 258 $(ADB_COMMON_CFLAGS) \ 259 -D_GNU_SOURCE \ 260 -DADB_HOST=1 \ 261 262LOCAL_CFLAGS_windows := \ 263 $(ADB_COMMON_windows_CFLAGS) 264 265LOCAL_CFLAGS_linux := \ 266 $(ADB_COMMON_linux_CFLAGS) \ 267 268LOCAL_CFLAGS_darwin := \ 269 $(ADB_COMMON_darwin_CFLAGS) \ 270 -Wno-sizeof-pointer-memaccess -Wno-unused-parameter \ 271 272LOCAL_MODULE := adb 273LOCAL_MODULE_TAGS := debug 274LOCAL_MODULE_HOST_OS := darwin linux windows 275 276LOCAL_SANITIZE := $(adb_host_sanitize) 277LOCAL_STATIC_LIBRARIES := \ 278 libadb \ 279 libbase \ 280 libcrypto_static \ 281 libdiagnose_usb \ 282 liblog \ 283 284# Don't use libcutils on Windows. 285LOCAL_STATIC_LIBRARIES_darwin := libcutils 286LOCAL_STATIC_LIBRARIES_linux := libcutils 287 288LOCAL_CXX_STL := libc++_static 289 290# Don't add anything here, we don't want additional shared dependencies 291# on the host adb tool, and shared libraries that link against libc++ 292# will violate ODR 293LOCAL_SHARED_LIBRARIES := 294 295include $(BUILD_HOST_EXECUTABLE) 296 297$(call dist-for-goals,dist_files sdk,$(LOCAL_BUILT_MODULE)) 298 299 300# adbd device daemon 301# ========================================================= 302 303include $(CLEAR_VARS) 304 305LOCAL_CLANG := true 306 307LOCAL_SRC_FILES := \ 308 daemon/main.cpp \ 309 services.cpp \ 310 file_sync_service.cpp \ 311 framebuffer_service.cpp \ 312 remount_service.cpp \ 313 set_verity_enable_state_service.cpp \ 314 shell_service.cpp \ 315 shell_service_protocol.cpp \ 316 317LOCAL_CFLAGS := \ 318 $(ADB_COMMON_CFLAGS) \ 319 $(ADB_COMMON_linux_CFLAGS) \ 320 -DADB_HOST=0 \ 321 -D_GNU_SOURCE \ 322 -Wno-deprecated-declarations \ 323 324LOCAL_CFLAGS += -DALLOW_ADBD_NO_AUTH=$(if $(filter userdebug eng,$(TARGET_BUILD_VARIANT)),1,0) 325 326ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT))) 327LOCAL_CFLAGS += -DALLOW_ADBD_DISABLE_VERITY=1 328LOCAL_CFLAGS += -DALLOW_ADBD_ROOT=1 329endif 330 331LOCAL_MODULE := adbd 332 333LOCAL_FORCE_STATIC_EXECUTABLE := true 334LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT_SBIN) 335LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_SBIN_UNSTRIPPED) 336LOCAL_C_INCLUDES += system/extras/ext4_utils 337 338LOCAL_SANITIZE := $(adb_target_sanitize) 339LOCAL_STATIC_LIBRARIES := \ 340 libadbd \ 341 libbase \ 342 libfs_mgr \ 343 libfec \ 344 libfec_rs \ 345 libselinux \ 346 liblog \ 347 libmincrypt \ 348 libext4_utils_static \ 349 libsquashfs_utils \ 350 libcutils \ 351 libbase \ 352 libcrypto_static \ 353 libminijail 354 355include $(BUILD_EXECUTABLE) 356