include ../../../Makefile.include

CC := $(HEXAGON_TOOLS)/hexagon-clang++
CFLAG := -mhvx-double -m$(Q6VERSION) -DLOG2VLEN=7
SIM := $(HEXAGON_TOOLS)/hexagon-sim
SIMFLAG := --memfill 0x0 --simulated_returnval --nullptr=2

SRC := blend_frames
SRC_TEST := $(SRC)_test
INC_DIR := ../../.. ../$(Q6VERSION) $(HDIR)/include
LIBS_DIR := $(HDIR)/lib
LIBS := hexagon sim_qurt
BUILD_DIR := $(Q6VERSION)

INC_DIR  := $(addprefix -I,$(INC_DIR))
LIBS_DIR  := $(addprefix -L,$(LIBS_DIR))
LIBS := $(addprefix -l,$(LIBS))

all: $(BUILD_DIR)/$(SRC).out

$(BUILD_DIR)/$(SRC).out: $(BUILD_DIR)/$(SRC_TEST).o ../$(Q6VERSION)/$(SRC).o
	@mkdir -p $(BUILD_DIR)
	$(CC) $(CFLAG) ../$(Q6VERSION)/$(SRC).o $(BUILD_DIR)/$(SRC_TEST).o $(LIBS_DIR) $(LIBS) -o $(BUILD_DIR)/$(SRC).out

$(BUILD_DIR)/$(SRC_TEST).o: $(SRC_TEST).cpp
	@mkdir -p $(BUILD_DIR)
	$(CC) -c $(CFLAG) $(INC_DIR) $(SRC_TEST).cpp -o $(BUILD_DIR)/$(SRC_TEST).o

sim: $(BUILD_DIR)/$(SRC).out
	$(SIM) $(BUILD_DIR)/$(SRC).out $(SIMFLAG) -- 320 180 input/320x180/ref_frame.y input/320x180/cur_frame.y input/320x180/mask.y output/320x180/output.y

sim_timing: $(BUILD_DIR)/$(SRC).out
	$(SIM) $(BUILD_DIR)/$(SRC).out --timing $(SIMFLAG) -- 320 180 input/320x180/ref_frame.y input/320x180/cur_frame.y input/320x180/mask.y output/320x180/output.y

sim_clean:
	@rm -rf pa_dump.core.0 pmu_statsfile.txt stats_dump.iss.0 pa.json
	
clean:
	@rm -rf $(BUILD_DIR)
