LIB_SDK_TARGET := libiot_sdk.a
LIB_HAL_TARGET := libiot_hal.a

###############################################################################
# Compiler

CC := gcc
AR := ar

###############################################################################
# Path definitions

TOPDIR  := .
BLDDIR  := build
COMDIR  := module
SRCDIR  := eng
EXPDIR  := main
HDRDIR  := $(shell find $(SRCDIR) -type d)

PROG_TARGET := $(shell ls $(EXPDIR) 2>/dev/null|grep linkkit|grep \.c|sed 's:\.c::g')
PROG_TARGET := $(foreach V,$(PROG_TARGET),$(BLDDIR)/$(V))
TARGET=dy_linkkit_gateway

###############################################################################
# Application source files

SOURCE_FILES_C := $(shell find $(SRCDIR) -name "*.c" -not -path "*wrappers*")
SOURCE_FILES_C += $(shell find $(EXPDIR) -name "*.c" -not -path "*wrappers*")
SOURCE_FILES_C += $(shell find $(COMDIR) -name "*.c" -not -path "*wrappers*")
WRAPPER_IMPL_C := $(shell find $(SRCDIR) -name "*.c" -path "*wrappers*")

###############################################################################
# Standard application lib/header search paths

C_FLAGS += -Wall -O0 -g
CFLAGS  += $(addprefix -I,$(HDRDIR))
CFLAGS  += -I./include/mqtt -I./include
CFLAGS  += -I$(STAGING_DIR)/usr/include
CFLAGS  += -I$(STAGING_DIR)/include
#cp ./lib/libpaho-mqtt3c.so* $(BLDDIR) -a
LDFLAGS := -L$(BLDDIR) -liot_sdk -liot_hal -lpthread -lrt -lmbedcrypto -lmbedtls -lmbedx509 -ldyutils -luci -lubox -lipc_helper -lmosquitto

###############################################################################
# Dependency rules

LIB_OBJS := $(SOURCE_FILES_C:.c=.o)
LIB_OBJS := $(subst $(SRCDIR),$(BLDDIR),$(LIB_OBJS))

HAL_OBJS := $(WRAPPER_IMPL_C:.c=.o)
HAL_OBJS := $(subst $(SRCDIR),$(BLDDIR),$(HAL_OBJS))

.PHONY: prepare all clean prog

prog: all $(PROG_TARGET)

all: prepare $(BLDDIR)/$(LIB_SDK_TARGET) $(BLDDIR)/$(LIB_HAL_TARGET)


prepare:
	-@mkdir -p $(BLDDIR)

$(BLDDIR)/$(LIB_SDK_TARGET): $(LIB_OBJS)
	@echo "o Archiving $@ ..."
	@$(AR) -rcs $@ $^

$(BLDDIR)/$(LIB_HAL_TARGET): $(HAL_OBJS)
	@echo "o Archiving $@ ..."
	@$(AR) -rcs $@ $^

$(PROG_TARGET): $(BLDDIR)/$(LIB_SDK_TARGET) $(BLDDIR)/$(LIB_HAL_TARGET)
	@echo "o Linking $@ ... $(STAGING_DIR)s"
	$(CC) $(C_FLAGS) -o $(TARGET) $(shell echo $@".c"|sed 's:$(BLDDIR):$(EXPDIR):g;s:-:_:g') $(CFLAGS) $(LDFLAGS)

$(BLDDIR)/%.o: $(SRCDIR)/%.c
	@echo ": Compiling $< ..."
	@mkdir -p $(shell dirname $@)
	@$(CC) $(C_FLAGS) -o $@ -c $< $(CFLAGS)

clean:
	@rm -rf $(BLDDIR)
