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