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