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