#
# Copyright 2008-2011 Ettus Research LLC
#

##################################################
# Constants
##################################################
ISE_VER = $(shell xtclsh -h | head -n1 | cut -f2 -d" " | cut -f1 -d.)
ifeq ($(ISE_VER),10)
	ISE_EXT = ise
else
	ISE_EXT = xise
endif
BASE_DIR = $(abspath ..)
ISE_HELPER = xtclsh $(BASE_DIR)/tcl/ise_helper.tcl
SANITY_CHECKER = python $(BASE_DIR)/python/check_inout.py
TIMING_CHECKER = python $(BASE_DIR)/python/check_timing.py
ISE_FILE = $(BUILD_DIR)/$(TOP_MODULE).$(ISE_EXT)
BIN_FILE = $(BUILD_DIR)/$(TOP_MODULE).bin
BIT_FILE = $(BUILD_DIR)/$(TOP_MODULE).bit
MCS_FILE = $(BUILD_DIR)/$(TOP_MODULE).mcs
TWR_FILE = $(BUILD_DIR)/$(TOP_MODULE).twr

##################################################
# Global Targets
##################################################
all: bin

proj: $(ISE_FILE)

check: $(ISE_FILE)
	$(SANITY_CHECKER) $(TOP_MODULE).v $(TOP_MODULE).ucf
	$(ISE_HELPER) "Check Syntax"

synth: $(ISE_FILE)
	$(ISE_HELPER) "Synthesize - XST"

bin: check $(BIN_FILE)
	$(TIMING_CHECKER) $(TWR_FILE)

mcs: $(MCS_FILE)

clean:
	$(RM) -r $(BUILD_DIR)

.PHONY: all proj check synth bin mcs clean

##################################################
# Dependency Targets
##################################################
.SECONDEXPANSION:
$(ISE_FILE): $$(SOURCES) $$(MAKEFILE_LIST)
	@echo $@
	$(ISE_HELPER) ""

$(BIN_FILE): $(ISE_FILE) $$(SOURCES) $$(MAKEFILE_LIST)
	@echo $@
	$(ISE_HELPER) "Generate Programming File" 2>&1 | tee $(BUILD_DIR)/build.log
	touch $@

$(MCS_FILE): $(BIN_FILE)
	promgen -w -spi -p mcs -o $(MCS_FILE) -s 4096 -u 0 $(BIT_FILE)

.EXPORT_ALL_VARIABLES:
