CUR_DIR = $(shell pwd) SRC_DIR = $(CUR_DIR) SRCS = $(foreach dir,$(SRC_DIR),$(wildcard $(dir)/*.cpp)) OBJ_TEMP = $(patsubst %.cpp,%.o,$(SRCS)) OBJS = $(notdir $(OBJ_TEMP)) ifneq ($(MAKECMDGOALS), ubuntu) SYS_ROOT = $(WORKDIR)/recipe-sysroot endif INCLUDE_DIRS = -I$(SYS_ROOT)/usr/include \ -I$(SYS_ROOT)/usr/include/dbus-1.0 \ -I$(SYS_ROOT)/usr/lib/dbus-1.0/include \ -I./include/ INCLUDE_DIRS += -I $(CUR_DIR) ifeq ($(MAKECMDGOALS), ubuntu) INCLUDE_DIRS += -I /usr/lib/aarch64-linux-gnu/dbus-1.0/include/ endif CXXFLAGS = -Wall -g -O -fPIC -std=c++11 -DBUILD_ON_YOCTO $(INCLUDE_DIRS) LIBS = -lglib-2.0 -ldbus-1 -lpthread OUT_DIR = $(CUR_DIR)/out OBJ_DIR = $(OUT_DIR)/obj LIB_DIR = $(OUT_DIR)/lib OBJS_WITH_DIR = $(addprefix $(OBJ_DIR)/,$(OBJS)) TARGET = $(LIB_DIR)/libudbus.so all: DIRS $(TARGET) ubuntu: all cp $(TARGET) /usr/lib mkdir -m 0644 -p /usr/include/libudbus/ cp $(CUR_DIR)/include/*.h /usr/include/libudbus/ cp $(CUR_DIR)/*.h /usr/include/libudbus/ $(TARGET):$(OBJS_WITH_DIR) $(CXX) -shared -fPIC -o $(TARGET) $(OBJS_WITH_DIR) $(LIBPATH) $(LIBS) $(OBJ_DIR)/%.o:%.cpp $(CXX) $(CXXFLAGS) -c $< -o $@ install: cp $(BIN_DIR)/$(TARGET) $(INSTALL_MOD_PATH)/usr/lib clean: rm -rf $(OBJ_DIR) $(BIN_DIR) $(LIB_DIR) DIRS: @$(call CREATE_DIR,$(OUT_DIR)) @$(call CREATE_DIR,$(OBJ_DIR)) @$(call CREATE_DIR,$(BIN_DIR)) @$(call CREATE_DIR,$(LIB_DIR)) define CREATE_DIR if [ ! -d $(1) ];\ then\ mkdir -p $(1);\ fi endef