LOCAL_PATH = $(shell pwd)
TARGET = libnndemo.so
LDFLAGS += -Wl,--no-as-needed -lstdc++ -lpthread -lz -ldl -lrt -lnnsdk -llog -shared -L$(STAGING_DIR)/usr/lib
CFLAGS += \
	-Wall -Werror -fPIC -Wextra -Os \
	-Wno-int-conversion -Wno-discarded-qualifiers \
	-Wno-incompatible-pointer-types -Wno-unused-variable \
	-Wno-sign-compare -Wno-unused-parameter

CFLAGS += \
	-I$(LOCAL_PATH)/include/common \
	-I$(LOCAL_PATH)/include/demo \
	-I$(STAGING_DIR)/usr/include/

CXXFLAGS += \
	-Wall -Werror -fPIC -Wextra -Os -std=c++14 \
	-Wextra -Wno-unused-variable -Wno-deprecated-declarations \
	-Wno-unused-function  -Wno-unused-parameter -Wno-sign-compare

CXXFLAGS += \
	-I$(LOCAL_PATH)/include/common \
	-I$(LOCAL_PATH)/include/demo \
	-I$(STAGING_DIR)/usr/include/

OUT_DIR ?= .

#C++ config
CPP_SRCS = $(wildcard $(LOCAL_PATH)/src/demo/verisilicon/*.cpp)
CPP_OBJDIR = objcpp
CPP_OBJS = $(patsubst $(LOCAL_PATH)/src/demo/verisilicon/%.cpp,$(OUT_DIR)$(CPP_OBJDIR)/%.o,$(CPP_SRCS))


#C config
C_SRCS = $(wildcard $(LOCAL_PATH)/src/demo/verisilicon/*.c)
C_OBJDIR = objc
C_OBJS = $(patsubst $(LOCAL_PATH)/src/demo/verisilicon/%.c,$(OUT_DIR)$(C_OBJDIR)/%.o,$(C_SRCS))



$(info "CXXFLAGS : $(CXXFLAGS)")
$(info "CFLAGS : $(CFLAGS)")
$(info "LDFLAGS : $(LDFLAGS)")
$(info "OUT_DIR : $(OUT_DIR)")
$(info "CPP_OBJDIR : $(CPP_OBJDIR)")
$(info "CPP_SRCS : $(CPP_SRCS)")
$(info "CPP_OBJS : $(CPP_OBJS)")
$(info "C_OBJDIR : $(C_OBJDIR)")
$(info "C_OBJS : $(C_OBJS)")
$(info "C_SRCS : $(C_SRCS)")


all: $(TARGET)

OBJS = $(CPP_OBJS) $(C_OBJS)
OBJDIRS = $(CPP_OBJDIR) $(C_OBJDIR)

$(TARGET): $(OBJS)
	$(CXX) $(LDFLAGS) -o $(OUT_DIR)/$@ $^

CREATE_CDIR:
	@mkdir -p $(OUT_DIR)$(C_OBJDIR)

CREATE_CPPDIR:
	@mkdir -p $(OUT_DIR)$(CPP_OBJDIR)

$(OUT_DIR)$(CPP_OBJDIR)/%.o: $(LOCAL_PATH)/src/demo/verisilicon/%.cpp | CREATE_CPPDIR
	$(CXX) $(CXXFLAGS) -c -o $@ $<

$(OUT_DIR)$(C_OBJDIR)/%.o: $(LOCAL_PATH)/src/demo/verisilicon/%.c | CREATE_CDIR
	$(CC) $(CFLAGS) -c -o $@ $<


.PHONY: clean

clean:
	rm -f *.o $(OUT_DIR)/$(TARGET) $(OUT_DIR)/$(TEST)

install:
	install -m 644 include/common/*.h $(STAGING_DIR)/usr/include
	install -m 644 include/demo/*.h $(STAGING_DIR)/usr/include
	install -m 644 $(OUT_DIR)/$(TARGET) $(TARGET_DIR)/usr/lib


