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