-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
133 lines (108 loc) · 4.15 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#################################################################################
# make stuff
#################################################################################
#output markup
OUTPUT_MARKUP= 2>&1 | tee ../make_log.txt | ccze -A
#################################################################################
# VIVADO stuff
#################################################################################
VIVADO_VERSION=2018.2
VIVADO_FLAGS=-notrace -mode batch
VIVADO_SHELL="/opt/Xilinx/Vivado/"$(VIVADO_VERSION)"/settings64.sh"
VIVADO_SETUP=source $(VIVADO_SHELL) && mkdir -p proj && mkdir -p kernel/hw && cd proj
#################################################################################
# TCL scripts
#################################################################################
SETUP_TCL=scripts/Setup.tcl
BUILD_TCL=scripts/Build.tcl
SETUP_BUILD_TCL=scripts/SetupAndBuild.tcl
HW_TCL=scripts/Run_hw.tcl
#################################################################################
# Source files
#################################################################################
PL_PATH=../src
BD_PATH=../bd
CORES_PATH=../cores
SYM_LNK_XMLS = $(shell find ./ -type l)
MAP_OBJS = $(patsubst %.xml, %_map.vhd, $(SYM_LNK_XMLS))
PKG_OBJS = $(patsubst %.xml, %_PKG.vhd, $(SYM_LNK_XMLS))
#################################################################################
# Short build names
#################################################################################
BIT=./bit/top.bit
.SECONDARY:
.PHONY: clean list bit
all: bit
#################################################################################
# preBuild
#################################################################################
SLAVE_DEF_FILE=src/slaves.yaml
ADDSLAVE_TCL_PATH=src/c2cSlave/
ADDRESS_TABLE_CREATION_PATH=os/
SLAVE_DTSI_PATH=kernel/
ifneq ("$(wildcard mk/preBuild.mk)","")
include mk/preBuild.mk
endif
#################################################################################
# Clean
#################################################################################
clean_ip:
@echo "Cleaning up ip dcps"
@find ./cores -type f -name '*.dcp' -delete
clean_bd:
@echo "Cleaning up bd generated files"
@rm -rf ./bd/zynq_bd
@rm -rf ./bd/c2cSlave
clean_bit:
@echo "Cleaning up bit files"
@rm -rf bit/*
clean_os:
@echo "Clean OS hw files"
@rm -f kernel/hw/*
clean: clean_bd clean_ip clean_bit clean_os
@rm -rf ./proj/*
@echo "Cleaning up"
#################################################################################
# Open vivado
#################################################################################
open_project :
@$(VIVADO_SETUP) &&\
vivado top.xpr
open_synth :
@$(VIVADO_SETUP) &&\
vivado post_synth.dcp
open_impl :
@$(VIVADO_SETUP) &&\
vivado post_route.dcp
open_hw :
@$(VIVADO_SETUP) &&\
vivado -source ../$(HW_TCL)
#################################################################################
# FPGA building
#################################################################################
bit : $(BIT)
interactive :
@$(VIVADO_SETUP) &&\
vivado -mode tcl
$(BIT) :
@mkdir -p bit
@$(VIVADO_SETUP) &&\
vivado $(VIVADO_FLAGS) -source ../$(SETUP_BUILD_TCL) $(OUTPUT_MARKUP)
SVF :
@$(VIVADO_SETUP) &&\
vivado $(VIVADO_FLAGS) -source ../scripts/Generate_svf.tcl $(OUTPUT_MARKUP)
#################################################################################
# Generate MAP and PKG files from address table
#################################################################################
XML2VHD_PATH=regmap_helper
ifneq ("$(wildcard $(XML2VHD_PATH)/xml_regmap.mk)","")
include $(XML2VHD_PATH)/xml_regmap.mk
endif
#################################################################################
# Help
#################################################################################
#list magic: https://stackoverflow.com/questions/4219255/how-do-you-get-the-list-of-targets-in-a-makefile
list:
@$(MAKE) -pRrq -f $(MAKEFILE_LIST) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' | column
init:
git submodule update --init --recursive