Home | History | Annotate | Download | only in adb
      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