Files
2026-08-24 10:03:24 +08:00

74 lines
2.6 KiB
Makefile

LOCAL_PATH := $(shell pwd)
OUT_DIR ?= .
LOCAL_INCLUDES := -I. -Iinclude -I$(STAGING_DIR)/usr/include
LOCAL_LIBS := -L$(STAGING_DIR)/usr/lib -lpthread
LOCAL_DEFINES := -DHAVE_PTHREADS -DHAVE_ANDROID_OS=1
CFLAGS += -fPIC -Wall -Wno-unknown-pragmas -Wno-format -O3 -g -Wno-error=format-security
CFLAGS += $(LOCAL_INCLUDES) $(LOCAL_DEFINES) $(CFLAGS_EXTRA)
LDFLAGS += $(LOCAL_LIBS)
LDFLAGS += -L $(OUT_DIR)/
# binder src and obj
BINDER_CPP_SRCS := $(wildcard binder/*.cpp)
BINDER_CPP_SRCS += $(wildcard utils/*.cpp)
BINDER_C_SRCS := $(wildcard cutils/*.c)
BINDER_CPP_OBJS := $(patsubst %.cpp, %.lo, $(BINDER_CPP_SRCS))
BINDER_C_OBJS := $(patsubst %.c, %.o, $(BINDER_C_SRCS))
BINDER_OBJS := $(BINDER_C_OBJS) $(BINDER_CPP_OBJS)
# servicemanager src and obj
SVCMGR_SRCS := $(wildcard servicemgr/*.c)
SVCMGR_OBJS := $(patsubst %.c, %.o, $(SVCMGR_SRCS))
$(info "OUT_DIR : $(OUT_DIR)")
$(info "BINDER_OBJS : $(BINDER_OBJS)")
$(info "SVCMGR_OBJS : $(SVCMGR_OBJS)")
LOCAL_TARGETS := libbinder.so servicemanager
LOCAL_TARGETS_FULLPATH := $(patsubst %, $(OUT_DIR)/%, $(LOCAL_TARGETS))
$(info LOCAL_TARGETS_FULLPATH = $(LOCAL_TARGETS_FULLPATH))
.PHONY: all clean install
# rules
all: $(LOCAL_TARGETS)
libbinder.so: $(BINDER_OBJS)
$(CXX) -shared -O3 -g $(LDFLAGS) $(patsubst %, $(OUT_DIR)/%, $^) -o $(OUT_DIR)/$@
servicemanager: $(SVCMGR_OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) $(patsubst %, $(OUT_DIR)/%, $^) -o $(OUT_DIR)/$@
%.o: %.c
$(CC) -c $(CFLAGS) $(LDFLAGS) $< -o $(OUT_DIR)/$@
%.lo: %.cpp
$(CXX) -c $(CFLAGS) $(LDFLAGS) $< -o $(OUT_DIR)/$@
clean:
rm -f $(OUT_DIR)/*.o $(OUT_DIR)/*.lo $(LOCAL_TARGETS_FULLPATH)
rm -rf $(STAGING_DIR)/usr/include/libbinder
rm -rf $(STAGING_DIR)/usr/lib/libbinder.so
rm -rf $(TARGET_DIR)/usr/lib/libbinder.so
rm -rf $(STAGING_DIR)/usr/bin/servicemanager
rm -rf $(TARGET_DIR)/usr/bin/servicemanager
install:
install -m 644 $(OUT_DIR)/libbinder.so $(STAGING_DIR)/usr/lib
install -m 644 $(OUT_DIR)/libbinder.so $(TARGET_DIR)/usr/lib
$(STRIP) $(TARGET_DIR)/usr/lib/libbinder.so
mkdir -p $(STAGING_DIR)/usr/include/binder
mkdir -p $(STAGING_DIR)/usr/include/utils
install -m 644 $(LOCAL_PATH)/include/binder/* $(STAGING_DIR)/usr/include/binder
install -m 644 $(LOCAL_PATH)/include/utils/* $(STAGING_DIR)/usr/include/utils
install -m 755 $(OUT_DIR)/servicemanager $(STAGING_DIR)/usr/bin
install -m 755 $(OUT_DIR)/servicemanager $(TARGET_DIR)/usr/bin
$(STRIP) $(TARGET_DIR)/usr/bin/servicemanager
install -m 755 $(LOCAL_PATH)/servicemgr/S52_binderSmr $(TARGET_DIR)/etc/init.d/S52_binderSmr
$(shell mkdir -p $(OUT_DIR)/binder $(OUT_DIR)/utils $(OUT_DIR)/cutils $(OUT_DIR)/servicemgr)