CFLAGS_      = -O3
MCC_FLAGS_   = --ompss --variable=disable_final_clause_transformation:1

PROGRAM_ = fer

# MCC               ?= fpgacc
# CROSS_COMPILE_ZED ?= arm-linux-gnueabihf-
# MCC_               = $(CROSS_COMPILE_ZED)$(MCC)

MCC               ?= fpgacc
CROSS_COMPILE_ZCU ?= aarch64-linux-gnu-
MCC_               = $(CROSS_COMPILE_ZCU)$(MCC)

# BOARD      = zedboard
# FPGA_CLOCK = 100

BOARD      = zcu102
FPGA_CLOCK = 200

.PHONY: HLS bitstream energy clean

HLS: $(PROGRAM_).c Makefile
	mkdir -p ${PWD}/$(BOARD)_HLS
	$(MCC_) $(CFLAGS_) $(MCC_FLAGS_) --bitstream-generation \
	--Wf,"--verbose,--name=$(PROGRAM_)_HLS,--dir=${PWD}/$(BOARD)_HLS,--board=$(BOARD),--hwruntime=som,--clock=$(FPGA_CLOCK),--to_step=HLS" \
         $< -o $(PROGRAM_)_HLS

bitstream: $(PROGRAM_).c Makefile
	mkdir -p ${PWD}/$(BOARD)_fpga
	$(MCC_) $(CFLAGS_) $(MCC_FLAGS_) --bitstream-generation \
	--Wf,"--verbose,--name=$(PROGRAM_)_fpga,--dir=${PWD}/$(BOARD)_fpga,--board=$(BOARD),--hwruntime=som,--clock=$(FPGA_CLOCK)" \
	$< -o $(PROGRAM_)_fpga

energy: $(PROGRAM_).c Makefile
	$(MCC_) $(CFLAGS_) $(MCC_FLAGS_) -D_ENERGY_ \
	--Wf,"--verbose" \
        $< -o $(PROGRAM_)_energy

clean:
	rm -f *.o *~
	rm -f $(PROGRAM_)_HLS $(PROGRAM_)_fpga $(PROGRAM_)_energy
	rm -rf ${PWD}/$(BOARD)_*
