• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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