BUILD_ROOT = $(shell pwd)/..
include $(BUILD_ROOT)/Make.defines

LOCAL_PATH=$(BUILD_ROOT)/mbtk_rild_v2

INC_DIR += \
		-I$(LOCAL_PATH)/inc \
		-I$(BUILD_ROOT)/libmbtk_lib/ril/inc

LIB_DIR +=

LIBS += -lmbtk_lib -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm

CFLAGS +=

DEFINE +=

MY_FILES_PATH:=$(LOCAL_PATH)/src
#ifeq ($(CONFIG_MBTK_QL_SUPPORT),y)
#MY_FILES_PATH += $(LOCAL_PATH)/ql
#endif

#ifeq ($(CONFIG_MBTK_PLATFORM),linux)
#MY_FILES_PATH += $(LOCAL_PATH)/platform/linux
#endif

LOCAL_SRC_FILES = $(wildcard src/*.c) $(wildcard src/*.cpp)
OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
$(info OBJS = $(OBJS))

dtarget := $(OUT_DIR)/bin/mbtk_rild

all: $(dtarget)

$(dtarget): $(OBJS)
	@echo "  BIN     $@"
	$(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $(OBJS) -o $@

%.o:%.c
	$(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@

%.o:%.cpp
	$(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@

clean:
	rm -f $(OBJS) $(dtarget)

