89 lines
2.9 KiB
Makefile
89 lines
2.9 KiB
Makefile
# #############################################
|
|
# (2014) Benjamin Krill <benjamin@krll.de>
|
|
# #############################################
|
|
PWD = $(shell pwd)
|
|
ifndef TOP
|
|
TOP = $(shell while ! test -d syn; do cd .. ; done; pwd)
|
|
export TOP
|
|
endif
|
|
|
|
PROJECT := sockit
|
|
BUILD_DIR := $(PWD)/build_$(PROJECT)
|
|
BUILD_QUARTUS_DIR := $(BUILD_DIR)/quartus
|
|
|
|
##### SOURCE FILES ############################
|
|
SOURCE_QIP = $(TOP)/top/$(PROJECT).qip
|
|
|
|
##### DEFAULT #################################
|
|
.PHONY: default
|
|
default: help
|
|
|
|
##### QSYS ####################################
|
|
.PHONY: qsys-generate qsys-edit
|
|
|
|
QSYS_FILE := $(TOP)/soc/soc_system.qsys
|
|
QSYS_BASE := $(basename $(notdir $(QSYS_FILE)))
|
|
QSYS_OUTDIR := $(BUILD_DIR)/$(QSYS_BASE)
|
|
QSYS_QIP := $(QSYS_OUTDIR)/$(QSYS_BASE).qip
|
|
QSYS_SOPCINFO := $(QSYS_OUTDIR)/$(QSYS_BASE).sopcinfo
|
|
SOURCE_QIP += $(QSYS_QIP)
|
|
|
|
$(QSYS_QIP) qsys-generate: config $(QSYS_FILE)
|
|
ip-generate \
|
|
--component-file=$(QSYS_FILE) \
|
|
--file-set=QUARTUS_SYNTH \
|
|
--output-name=$(QSYS_BASE) \
|
|
--output-directory=$(QSYS_OUTDIR) \
|
|
--reportfile=sopcinfo:$(QSYS_SOPCINFO) \
|
|
--reportfile=qip:$(QSYS_QIP) \
|
|
--language=vhdl
|
|
touch $(QSYS_QIP)
|
|
|
|
qsys-edit: $(QSYS_FILE)
|
|
qsys-edit $^ &
|
|
|
|
HELP_TARGETS += qsys-generate qsys-edit
|
|
qsys-generate.HELP := Generate current QSYS implementation
|
|
qsys-edit.HELP := Edit QSYS implementation
|
|
|
|
##### QUARTUS ###################################
|
|
QUARTUS_QPF := $(PROJECT).qpf
|
|
QUARTUS_QSF := $(PROJECT).qsf
|
|
|
|
tcl: $(BUILD_QUARTUS_DIR)/$(PROJECT).qsf $(BUILD_QUARTUS_DIR)/$(PROJECT).qpf
|
|
@cd $(BUILD_QUARTUS_DIR) && for pin_assign_tcl_file in $$(find $(BUILD_DIR) -name '*_pin_assignments.tcl'); do \
|
|
quartus_map $(QUARTUS_QPF); \
|
|
echo "Applying $${pin_assign_tcl_file} to $(QUARTUS_QPF)..."; \
|
|
quartus_sta -t $${pin_assign_tcl_file} $(QUARTUS_QPF); \
|
|
done
|
|
|
|
$(BUILD_QUARTUS_DIR)/output_files/sockit.sof quartus: tcl
|
|
cd $(BUILD_QUARTUS_DIR) && quartus_sh --flow compile $(QUARTUS_QPF)
|
|
|
|
##### CONFIGURE BUILD ###########################
|
|
.PHONY: config
|
|
config $(BUILD_QUARTUS_DIR)/$(PROJECT).qsf:
|
|
mkdir -p $(BUILD_QUARTUS_DIR)
|
|
cp $(PROJECT).qpf_tmpl $(BUILD_QUARTUS_DIR)/$(PROJECT).qpf
|
|
cp $(PROJECT).qsf_tmpl $(BUILD_QUARTUS_DIR)/$(PROJECT).qsf
|
|
for I in $(SOURCE_QIP); do \
|
|
echo "set_global_assignment -name QIP_FILE $$I" >> $(BUILD_QUARTUS_DIR)/$(PROJECT).qsf; \
|
|
done
|
|
|
|
HELP_TARGETS += config
|
|
config.HELP := create build sandbox
|
|
|
|
##### HELP ######################################
|
|
.PHONY: $(HELP_TARGETS_X) help
|
|
HELP_TARGETS += help
|
|
help.HELP := Displays this info (i.e. the available targets)
|
|
|
|
help: help-header help-targets
|
|
HELP_TARGETS_X := $(patsubst %,help-%,$(sort $(HELP_TARGETS)))
|
|
help-targets: $(HELP_TARGETS_X)
|
|
$(HELP_TARGETS_X): help-%:
|
|
@printf "\t%20s\t - %s\n" $* "$($*.HELP)"
|
|
help-header:
|
|
@printf "\t%20s\t - %s\n" target description\n
|
|
@printf "\t------------------------------------------------------------------------------\n"
|