Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 630b9afe authored by Dan Albert's avatar Dan Albert
Browse files

Begin moving code from adb to libadb.

Much of adb is duplicated in bootable/recovery/minadb and fastboot.
Changes made to adb rarely get ported to the other two, so the trees
have diverged a bit. We'd like to stop this because it is a
maintenance nightmare, but the divergence makes this difficult to do
all at once. For now, we will start small by moving common files into
a static library. Hopefully some day we can get enough of adb in here
that we no longer need minadb.

Bug: 17626262
Change-Id: Ic8d5653bfcc0fec4e1acbece124402355084b864
parent fb538fb1
Loading
Loading
Loading
Loading
+44 −18
Original line number Diff line number Diff line
@@ -5,6 +5,35 @@

LOCAL_PATH:= $(call my-dir)

# libadb
# =========================================================

# Much of adb is duplicated in bootable/recovery/minadb and fastboot. Changes
# made to adb rarely get ported to the other two, so the trees have diverged a
# bit. We'd like to stop this because it is a maintenance nightmare, but the
# divergence makes this difficult to do all at once. For now, we will start
# small by moving common files into a static library. Hopefully some day we can
# get enough of adb in here that we no longer need minadb. https://b/17626262
LIBADB_SRC_FILES :=
LIBADB_C_FLAGS := -Wall -Werror -D_XOPEN_SOURCE -D_GNU_SOURCE

include $(CLEAR_VARS)
LOCAL_MODULE := libadb
LOCAL_CFLAGS := $(LIBADB_CFLAGS) -DADB_HOST=0
LOCAL_SRC_FILES := $(LIBADB_SRC_FILES) fdevent.cpp
include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libadb
LOCAL_CFLAGS := $(LIBADB_CFLAGS) -DADB_HOST=1
LOCAL_SRC_FILES := $(LIBADB_SRC_FILES)
ifeq ($(HOST_OS),windows)
    LOCAL_SRC_FILES += sysdeps_wind32.c
else
    LOCAL_SRC_FILES += fdevent.cpp
endif
include $(BUILD_HOST_STATIC_LIBRARY)

# adb host tool
# =========================================================
include $(CLEAR_VARS)
@@ -37,10 +66,6 @@ ifeq ($(HOST_OS),windows)
  USB_SRCS := usb_windows.c
  EXTRA_SRCS := get_my_path_windows.c
  EXTRA_STATIC_LIBS := AdbWinApi
  ifneq ($(strip $(USE_CYGWIN)),)
    # Pure cygwin case
    LOCAL_LDLIBS += -lpthread -lgdi32
  endif
  ifneq ($(strip $(USE_MINGW)),)
    # MinGW under Linux case
    LOCAL_LDLIBS += -lws2_32 -lgdi32
@@ -66,8 +91,6 @@ LOCAL_SRC_FILES := \

ifneq ($(USE_SYSDEPS_WIN32),)
  LOCAL_SRC_FILES += sysdeps_win32.c
else
  LOCAL_SRC_FILES += fdevent.c
endif

LOCAL_CFLAGS += -O2 -g -DADB_HOST=1 -Wall -Wno-unused-parameter -Werror
@@ -75,7 +98,13 @@ LOCAL_CFLAGS += -D_XOPEN_SOURCE -D_GNU_SOURCE
LOCAL_MODULE := adb
LOCAL_MODULE_TAGS := debug

LOCAL_STATIC_LIBRARIES := libzipfile libz libcrypto_static $(EXTRA_STATIC_LIBS)
LOCAL_STATIC_LIBRARIES := \
    libadb \
    libzipfile \
    libz \
    libcrypto_static \
    $(EXTRA_STATIC_LIBS) \

ifeq ($(USE_SYSDEPS_WIN32),)
	LOCAL_STATIC_LIBRARIES += libcutils
endif
@@ -99,7 +128,6 @@ include $(CLEAR_VARS)

LOCAL_SRC_FILES := \
	adb.c \
	fdevent.c \
	transport.c \
	transport_local.c \
	transport_usb.c \
@@ -134,15 +162,14 @@ LOCAL_MODULE := adbd
LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT_SBIN)
LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_SBIN_UNSTRIPPED)
LOCAL_C_INCLUDES += system/extras/ext4_utils system/core/fs_mgr/include

LOCAL_STATIC_LIBRARIES := liblog \
	libfs_mgr \
LOCAL_STATIC_LIBRARIES := \
    libadb \
    liblog \
    libcutils \
    libc \
    libmincrypt \
    libselinux \
	libext4_utils_static

LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk

@@ -168,7 +195,6 @@ LOCAL_SRC_FILES := \
	file_sync_client.c \
	get_my_path_linux.c \
	usb_linux.c \
	fdevent.c

LOCAL_CFLAGS := \
	-O2 \
@@ -181,7 +207,7 @@ LOCAL_CFLAGS := \

LOCAL_MODULE := adb

LOCAL_STATIC_LIBRARIES := libzipfile libz libcutils liblog
LOCAL_STATIC_LIBRARIES := libadb libzipfile libz libcutils liblog

LOCAL_SHARED_LIBRARIES := libcrypto

+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <limits.h>

#include "adb_trace.h"
#include "fdevent.h"
#include "transport.h"  /* readx(), writex() */

#define MAX_PAYLOAD 4096
+11 −3
Original line number Diff line number Diff line
@@ -88,6 +88,12 @@ static void fdevent_subproc_event_func(int fd, unsigned events, void *userdata);
static fdevent list_pending = {
    .next = &list_pending,
    .prev = &list_pending,
    .fd = -1,
    .force_eof = 0,
    .state = 0,
    .events = 0,
    .func = nullptr,
    .arg = nullptr,
};

static fdevent **fd_table = 0;
@@ -312,7 +318,7 @@ static int fdevent_fd_check(fd_set *fds)
}

#if !DEBUG
static inline void dump_all_fds(const char *extra_msg) {}
static inline void dump_all_fds(const char* /* extra_msg */) {}
#else
static void dump_all_fds(const char *extra_msg)
{
@@ -434,7 +440,8 @@ static void fdevent_register(fdevent *fde)
        while(fd_table_max <= fde->fd) {
            fd_table_max *= 2;
        }
        fd_table = realloc(fd_table, sizeof(fdevent*) * fd_table_max);
        fd_table = reinterpret_cast<fdevent**>(
            realloc(fd_table, sizeof(fdevent*) * fd_table_max));
        if(fd_table == 0) {
            FATAL("could not expand fd_table to %d entries\n", fd_table_max);
        }
@@ -505,7 +512,8 @@ static void fdevent_call_fdfunc(fdevent* fde)
    fde->func(fde->fd, events, fde->arg);
}

static void fdevent_subproc_event_func(int fd, unsigned ev, void *userdata)
static void fdevent_subproc_event_func(int fd, unsigned ev,
                                       void* /* userdata */)
{

    D("subproc handling on fd=%d ev=%04x\n", fd, ev);
+10 −4
Original line number Diff line number Diff line
@@ -19,6 +19,10 @@

#include <stdint.h>  /* for int64_t */

#ifdef __cplusplus
extern "C" {
#endif

/* events that may be observed */
#define FDE_READ              0x0001
#define FDE_WRITE             0x0002
@@ -64,20 +68,22 @@ void fdevent_set_timeout(fdevent *fde, int64_t timeout_ms);
*/
void fdevent_loop();

struct fdevent 
{
struct fdevent {
    fdevent *next;
    fdevent *prev;

    int fd;
    int force_eof;

    unsigned short state;
    unsigned short events;
    uint16_t state;
    uint16_t events;

    fd_func func;
    void *arg;
};

#ifdef __cplusplus
}
#endif

#endif
+0 −2
Original line number Diff line number Diff line
@@ -26,8 +26,6 @@
#include <inttypes.h>

#include "cutils/properties.h"
#include "ext4_sb.h"
#include <fs_mgr.h>

#define FSTAB_PREFIX "/fstab."
struct fstab *fstab;
Loading