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 := gaussian5x5_up_blend_chroma
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) -- 640 360 input/720p/curr_gaussian0.u input/720p/curr_gaussian1.u input/720p/mask_gaussian0.y input/720p/ref_laplacian0.u input/720p/blended1.u output/720p/output.u

sim_timing: $(BUILD_DIR)/$(SRC).out
	$(SIM) $(BUILD_DIR)/$(SRC).out --timing $(SIMFLAG) -- 640 360 input/720p/curr_gaussian0.u input/720p/curr_gaussian1.u input/720p/mask_gaussian0.y input/720p/ref_laplacian0.u input/720p/blended1.u output/720p/output.u

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