Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
[usb_moded] Add configfs support. JB#42083
Add custom Makefile for faster smoke-test rebuilds without spending time in configure, autotools, document generation and/or rolling rpm packages. Add multiple include protection to all header files. Move function prototypes away from header files that included in the development package. Mass rename functions to have a prefix giving context for the function. For the most part the prefix is derived from the name of the compilation module containing the function. Mass normalize indentation to four spaces in all source files. Augment author lists on each source file based on git committers. Remove "inline" attributes from not-really-inlineable functions. Remove .gitignore. Remove unused modules-android.c source file. Define _GNU_SOURCE for whole build rather than in individual files. Fix resource leaks here and there. Try to avoid hard-coding android usb paths. Add configfs backend for usb cadget configuration. Probe supported backends (configfs, android usb, or kmod) on usb-moded startup and make them mutually exclusive with each other. Allow configfs and android usb control structures some time to show up if usb-moded is started during device bootup. Refactor udev event listener to utilize a state machine. Simplifies book keeping and makes pc/charger detection heuristics easier to control. Refactor mode selection to utilize three interconnected mini state machines. Allows separating logically wanted mode from mode programmed to usb and mode exposed over D-Bus. Signed-off-by: Simo Piiroinen <simo.piiroinen@jollamobile.com>
- Loading branch information
Showing
56 changed files
with
10,793 additions
and
7,357 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,328 @@ | ||
# ----------------------------------------------------------- -*- mode: sh -*- | ||
# Package version | ||
VERSION := 0.86.0 | ||
|
||
# Dummy default install dir - override from packaging scripts | ||
DESTDIR ?= /tmp/usb-moded-test-install | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Standard directories | ||
# ---------------------------------------------------------------------------- | ||
|
||
_PREFIX ?= /usr# # /usr | ||
_INCLUDEDIR ?= $(_PREFIX)/include# # /usr/include | ||
_EXEC_PREFIX ?= $(_PREFIX)# # /usr | ||
_BINDIR ?= $(_EXEC_PREFIX)/bin# # /usr/bin | ||
_SBINDIR ?= $(_EXEC_PREFIX)/sbin# # /usr/sbin | ||
_LIBEXECDIR ?= $(_EXEC_PREFIX)/libexec# # /usr/libexec | ||
_LIBDIR ?= $(_EXEC_PREFIX)/lib# # /usr/lib | ||
_SYSCONFDIR ?= /etc# # /etc | ||
_DATADIR ?= $(_PREFIX)/share# # /usr/share | ||
_MANDIR ?= $(_DATADIR)/man# # /usr/share/man | ||
_INFODIR ?= $(_DATADIR)/info# # /usr/share/info | ||
_DEFAULTDOCDIR ?= $(_DATADIR)/doc# # /usr/share/doc | ||
_LOCALSTATEDIR ?= /var# # /var | ||
_UNITDIR ?= /lib/systemd/system# | ||
_TESTSDIR ?= /opt/tests# # /opt/tests | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Install directories | ||
# ---------------------------------------------------------------------------- | ||
|
||
USB_MODED_SBIN_PATH ?= $(_SBINDIR) | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Files to build / install | ||
# ---------------------------------------------------------------------------- | ||
|
||
TARGETS_SBIN += usb_moded | ||
TARGETS_SBIN += usb_moded_util | ||
|
||
TARGETS_ALL += $(TARGETS_PLUGIN) $(TARGETS_SBIN) $(TARGETS_BIN) | ||
|
||
TARGETS_ALL += udev-search | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Top level targets | ||
# ---------------------------------------------------------------------------- | ||
|
||
.PHONY: build install clean distclean mostlyclean | ||
|
||
build:: $(TARGETS_ALL) | ||
|
||
install:: build | ||
|
||
clean:: mostlyclean | ||
$(RM) $(TARGETS_ALL) | ||
|
||
distclean:: clean | ||
|
||
mostlyclean:: | ||
$(RM) *.o *~ *.bak */*.o */*~ */*.bak | ||
|
||
install :: install_main | ||
|
||
install_main:: | ||
# sbin executables | ||
install -d -m 755 $(DESTDIR)$(USB_MODED_SBIN_PATH) | ||
install -m 755 $(TARGETS_SBIN) $(DESTDIR)$(USB_MODED_SBIN_PATH) | ||
# config directories and files | ||
install -d -m 755 $(DESTDIR)/etc | ||
# /etc/udhcpd.conf | ||
install -d -m 755 $(DESTDIR)/etc/usb-moded/ | ||
install -d -m 755 $(DESTDIR)/etc/usb-moded/dyn-modes | ||
install -d -m 755 $(DESTDIR)/etc/usb-moded/run | ||
install -d -m 755 $(DESTDIR)/etc/modprobe.d | ||
# /etc/modprobe.d/g_ether.conf | ||
# /etc/modprobe.d/usb_moded.conf | ||
install -d -m 755 $(DESTDIR)/etc/tmpfiles.d | ||
# /etc/tmpfiles.d/usb-moded.conf | ||
install -d -m 755 $(DESTDIR)/etc/dbus-1/system.d | ||
install -m 644 debian/usb_moded.conf $(DESTDIR)/etc/dbus-1/system.d/ | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Build rules | ||
# ---------------------------------------------------------------------------- | ||
|
||
%.pic.o : %.c ; $(CC) -o $@ -c $< -fPIC $(CPPFLAGS) $(CFLAGS) | ||
%.so : %.pic.o ; $(CC) -shared -o $@ $^ $(LDFLAGS) $(LDLIBS) | ||
%.o : %.c ; $(CC) -o $@ -c $< $(CPPFLAGS) $(CFLAGS) | ||
% : %.o ; $(CC) -o $@ $^ $(LDFLAGS) $(LDLIBS) | ||
%.a : ; $(AR) ru $@ $^ | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Preprocessor options | ||
# ---------------------------------------------------------------------------- | ||
|
||
# Preprocessor Defaults | ||
CPPFLAGS += -D_GNU_SOURCE | ||
CPPFLAGS += -D_FILE_OFFSET_BITS=64 | ||
CPPFLAGS += -D_FORTIFY_SOURCE=2 | ||
|
||
# usb-moded specific options | ||
CPPFLAGS += -DSTATIC_CONFIG | ||
CPPFLAGS += -DSYSTEMD | ||
CPPFLAGS += -DCONNMAN | ||
CPPFLAGS += -DAPP_SYNC | ||
CPPFLAGS += -DUSE_MER_SSU | ||
CPPFLAGS += -DMEEGOLOCK | ||
CPPFLAGS += -DDEBUG | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Compiler options | ||
# ---------------------------------------------------------------------------- | ||
|
||
CFLAGS += -std=c99 | ||
CFLAGS += -O2 | ||
CFLAGS += -g | ||
CFLAGS += -Wall | ||
CFLAGS += -Wwrite-strings | ||
CFLAGS += -Wmissing-prototypes | ||
#CFLAGS += -Wextra | ||
#CFLAGS += -Werror | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Linker options | ||
# ---------------------------------------------------------------------------- | ||
|
||
LDFLAGS += -pthread | ||
LDFLAGS += -g | ||
LDFLAGS += -pthread | ||
LDFLAGS += -Wl,--as-needed | ||
|
||
LDLIBS += -ldl | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Flags from pkg-config | ||
# ---------------------------------------------------------------------------- | ||
PKG_NAMES += dbus-1 | ||
PKG_NAMES += dbus-glib-1 | ||
PKG_NAMES += glib-2.0 | ||
PKG_NAMES += libudev | ||
PKG_NAMES += libkmod | ||
PKG_NAMES += libsystemd | ||
PKG_NAMES += ssu-sysinfo | ||
PKG_NAMES += dsme | ||
|
||
maintenance = normalize clean distclean mostlyclean | ||
maintenance += protos-post | ||
|
||
intersection = $(strip $(foreach w,$1, $(filter $w,$2))) | ||
ifneq ($(call intersection,$(maintenance),$(MAKECMDGOALS)),) | ||
PKG_CONFIG ?= true | ||
endif | ||
|
||
ifneq ($(strip $(PKG_NAMES)),) | ||
PKG_CONFIG ?= pkg-config | ||
PKG_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PKG_NAMES)) | ||
PKG_LDLIBS := $(shell $(PKG_CONFIG) --libs $(PKG_NAMES)) | ||
PKG_CPPFLAGS := $(filter -D%,$(PKG_CFLAGS)) $(filter -I%,$(PKG_CFLAGS)) | ||
PKG_CFLAGS := $(filter-out -I%, $(filter-out -D%, $(PKG_CFLAGS))) | ||
endif | ||
|
||
CPPFLAGS += $(PKG_CPPFLAGS) | ||
CFLAGS += $(PKG_CFLAGS) | ||
LDLIBS += $(PKG_LDLIBS) | ||
|
||
# ---------------------------------------------------------------------------- | ||
# usb_moded | ||
# ---------------------------------------------------------------------------- | ||
|
||
usb_moded-OBJS += src/usb_moded.o | ||
usb_moded-OBJS += src/usb_moded-android.o | ||
usb_moded-OBJS += src/usb_moded-appsync.o | ||
usb_moded-OBJS += src/usb_moded-config.o | ||
usb_moded-OBJS += src/usb_moded-configfs.o | ||
usb_moded-OBJS += src/usb_moded-dbus.o | ||
usb_moded-OBJS += src/usb_moded-devicelock.o | ||
usb_moded-OBJS += src/usb_moded-dsme.o | ||
usb_moded-OBJS += src/usb_moded-dyn-config.o | ||
usb_moded-OBJS += src/usb_moded-log.o | ||
usb_moded-OBJS += src/usb_moded-mac.o | ||
usb_moded-OBJS += src/usb_moded-modesetting.o | ||
usb_moded-OBJS += src/usb_moded-modules.o | ||
usb_moded-OBJS += src/usb_moded-network.o | ||
usb_moded-OBJS += src/usb_moded-ssu.o | ||
usb_moded-OBJS += src/usb_moded-systemd.o | ||
usb_moded-OBJS += src/usb_moded-trigger.o | ||
usb_moded-OBJS += src/usb_moded-udev.o | ||
|
||
usb_moded : $(usb_moded-OBJS) | ||
$(CC) -o $@ $^ $(LDFLAGS) $(LDLIBS) | ||
|
||
# ---------------------------------------------------------------------------- | ||
# udev-search | ||
# ---------------------------------------------------------------------------- | ||
|
||
udev-search-OBJS += utils/udev-search.o | ||
|
||
udev-search : $(udev-search-OBJS) | ||
$(CC) -o $@ $^ $(LDFLAGS) $(LDLIBS) | ||
|
||
# ---------------------------------------------------------------------------- | ||
# usb_moded_util | ||
# ---------------------------------------------------------------------------- | ||
|
||
usb_moded_util-OBJS += src/usb_moded-util.o | ||
|
||
usb_moded_util : $(usb_moded_util-OBJS) | ||
$(CC) -o $@ $^ $(LDFLAGS) $(LDLIBS) | ||
|
||
# ---------------------------------------------------------------------------- | ||
# SOURCE FILES | ||
# ---------------------------------------------------------------------------- | ||
|
||
# Files without whitespace issues | ||
|
||
CLEAN_SOURCES += src/usb_moded-android.c | ||
CLEAN_SOURCES += src/usb_moded-appsync-dbus.c | ||
CLEAN_SOURCES += src/usb_moded-appsync.c | ||
CLEAN_SOURCES += src/usb_moded-config.c | ||
CLEAN_SOURCES += src/usb_moded-configfs.c | ||
CLEAN_SOURCES += src/usb_moded-dbus.c | ||
CLEAN_SOURCES += src/usb_moded-devicelock.c | ||
CLEAN_SOURCES += src/usb_moded-dsme.c | ||
CLEAN_SOURCES += src/usb_moded-dyn-config.c | ||
CLEAN_SOURCES += src/usb_moded-log.c | ||
CLEAN_SOURCES += src/usb_moded-mac.c | ||
CLEAN_SOURCES += src/usb_moded-modesetting.c | ||
CLEAN_SOURCES += src/usb_moded-modules.c | ||
CLEAN_SOURCES += src/usb_moded-network.c | ||
CLEAN_SOURCES += src/usb_moded-ssu.c | ||
CLEAN_SOURCES += src/usb_moded-systemd.c | ||
CLEAN_SOURCES += src/usb_moded-trigger.c | ||
CLEAN_SOURCES += src/usb_moded-udev.c | ||
CLEAN_SOURCES += src/usb_moded-util.c | ||
CLEAN_SOURCES += src/usb_moded.c | ||
CLEAN_SOURCES += utils/udev-search.c | ||
|
||
CLEAN_HEADERS += src/usb_moded-android.h | ||
CLEAN_HEADERS += src/usb_moded-appsync-dbus-private.h | ||
CLEAN_HEADERS += src/usb_moded-appsync-dbus.h | ||
CLEAN_HEADERS += src/usb_moded-appsync.h | ||
CLEAN_HEADERS += src/usb_moded-config-private.h | ||
CLEAN_HEADERS += src/usb_moded-config.h | ||
CLEAN_HEADERS += src/usb_moded-configfs.h | ||
CLEAN_HEADERS += src/usb_moded-dbus-private.h | ||
CLEAN_HEADERS += src/usb_moded-dbus.h | ||
CLEAN_HEADERS += src/usb_moded-devicelock.h | ||
CLEAN_HEADERS += src/usb_moded-dsme.h | ||
CLEAN_HEADERS += src/usb_moded-dyn-config.h | ||
CLEAN_HEADERS += src/usb_moded-log.h | ||
CLEAN_HEADERS += src/usb_moded-mac.h | ||
CLEAN_HEADERS += src/usb_moded-modes.h | ||
CLEAN_HEADERS += src/usb_moded-modesetting.h | ||
CLEAN_HEADERS += src/usb_moded-modules.h | ||
CLEAN_HEADERS += src/usb_moded-network.h | ||
CLEAN_HEADERS += src/usb_moded-ssu.h | ||
CLEAN_HEADERS += src/usb_moded-systemd.h | ||
CLEAN_HEADERS += src/usb_moded-trigger.h | ||
CLEAN_HEADERS += src/usb_moded-udev.h | ||
CLEAN_HEADERS += src/usb_moded.h | ||
|
||
# Files with whitespace issues | ||
|
||
# DIRTY_SOURCES += foo.c | ||
# DIRTY_HEADERS += foo.h | ||
|
||
# Files that will not pass preprocessor / compiler ... | ||
|
||
# BROKEN_SOURCES += foo.c foo.h | ||
|
||
ALL_SOURCES += $(CLEAN_SOURCES) $(DIRTY_SOURCES) | ||
ALL_HEADERS += $(CLEAN_HEADERS) $(DIRTY_HEADERS) | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Source code normalization | ||
# ---------------------------------------------------------------------------- | ||
|
||
.PHONY: normalize | ||
normalize:: | ||
normalize_whitespace -M Makefile.custom | ||
normalize_whitespace -a $(CLEAN_SOURCES) $(CLEAN_HEADERS) | ||
normalize_whitespace -e -s $(DIRTY_SOURCES) $(DIRTY_HEADERS) | ||
|
||
# ---------------------------------------------------------------------------- | ||
# AUTOMATIC HEADER DEPENDENCIES | ||
# ---------------------------------------------------------------------------- | ||
|
||
.PHONY: depend | ||
depend:: | ||
@echo "Updating .depend" | ||
$(CC) -MM $(CPPFLAGS) $(CLEAN_SOURCES) $(DIRTY_SOURCES) |\ | ||
./depend_filter.py > .depend | ||
|
||
ifneq ($(MAKECMDGOALS),depend) # not while: make depend | ||
ifneq (,$(wildcard .depend)) # not if .depend does not exist | ||
include .depend | ||
endif | ||
endif | ||
|
||
# ---------------------------------------------------------------------------- | ||
# AUTOMATIC PROTOTYPE GENERFATION | ||
# ---------------------------------------------------------------------------- | ||
|
||
.SUFFIXES: .q .p .g | ||
|
||
%.q : %.c ; $(CC) -o $@ -E $< $(CPPFLAGS) $(MCE_CFLAGS) | ||
%.p : %.q ; cproto -s < $< | prettyproto.py > $@ | ||
%.g : %.q ; cproto < $< | prettyproto.py > $@ | ||
|
||
clean:: | ||
$(RM) *.[qpg] src/*.[qpg] utils/*.[qpg] | ||
|
||
protos-pre: $(patsubst %.c,%.q,$(ALL_SOURCES)) | ||
touch $@ | ||
|
||
protos-post: $(patsubst %.c,%.p,$(ALL_SOURCES)) $(patsubst %.c,%.g,$(ALL_SOURCES)) | ||
touch $@ | ||
|
||
clean:: | ||
$(RM) protos-pre protos-post | ||
|
||
# ---------------------------------------------------------------------------- | ||
# REMOVE FLUFF LEFT BY MB2 BUILDS | ||
# ---------------------------------------------------------------------------- | ||
|
||
distclean:: | ||
$(RM) -r RPMS installroot |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/* config.h. Generated from config.h.in by configure. */ | ||
/* config.h.in. Generated from configure.ac by autoheader. */ | ||
|
||
/* Name of package */ | ||
#define PACKAGE "usb_moded" | ||
|
||
/* Define to the address where bug reports for this package should be sent. */ | ||
#define PACKAGE_BUGREPORT "" | ||
|
||
/* Define to the full name of this package. */ | ||
#define PACKAGE_NAME "usb_moded" | ||
|
||
/* Define to the full name and version of this package. */ | ||
#define PACKAGE_STRING "usb_moded 0.86.0+mer24" | ||
|
||
/* Define to the one symbol short name of this package. */ | ||
#define PACKAGE_TARNAME "usb_moded" | ||
|
||
/* Define to the home page for this package. */ | ||
#define PACKAGE_URL "" | ||
|
||
/* Define to the version of this package. */ | ||
#define PACKAGE_VERSION "0.86.0+mer24" | ||
|
||
/* Define to 1 if you have the ANSI C header files. */ | ||
#define STDC_HEADERS 1 | ||
|
||
/* Version number of package */ | ||
#define VERSION "0.86.0+mer24" | ||
|
||
/* Define to empty if `const' does not conform to ANSI C. */ | ||
/* #undef const */ |
Oops, something went wrong.