-
Notifications
You must be signed in to change notification settings - Fork 5
/
Makefile
114 lines (103 loc) · 2.94 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
################################################################################
##
## Filename: Makefile
## {{{
## Project: dbgbus, a collection of 8b channel to WB bus debugging protocols
##
## Purpose: A master project makefile. It tries to build all targets
## within the project, mostly by directing subdirectory makes.
##
##
## Creator: Dan Gisselquist, Ph.D.
## Gisselquist Technology, LLC
##
################################################################################
## }}}
## Copyright (C) 2015-2024, Gisselquist Technology, LLC
## {{{
## This file is part of the debugging interface demonstration.
##
## The debugging interface demonstration is free software (firmware): you can
## redistribute it and/or modify it under the terms of the GNU Lesser General
## Public License as published by the Free Software Foundation, either version
## 3 of the License, or (at your option) any later version.
##
## This debugging interface demonstration is distributed in the hope that it
## will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
## of MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
## General Public License
## for more details.
##
## You should have received a copy of the GNU Lesser General Public License
## along with this program. (It's in the $(ROOT)/doc directory. Run make
## with no target there if the PDF file isn't present.) If not, see
## <http://www.gnu.org/licenses/> for a copy.
## }}}
## License: LGPL, v3, as defined and found on www.gnu.org,
## {{{
## http://www.gnu.org/licenses/lgpl.html
##
################################################################################
##
## }}}
# Make certain the "all" target is the first and therefore the default target
.PHONY: all
all: rtl sim sw itest
#
SUBMAKE:= $(MAKE) --no-print-directory -C
#
#
# Check that we have all the programs available to us that we need
#
#
.PHONY: check-install
check-install: check-verilator check-gpp
.PHONY: check-verilator
check-verilator:
$(call checkif-installed,verilator,-V)
.PHONY: check-gpp
check-gpp:
$(call checkif-installed,g++,-v)
#
#
# Verify that the rtl has no bugs in it, while also creating a Verilator
# simulation class library that we can then use for simulation
#
.PHONY: verilated
verilated: check-verilator
+@$(SUBMAKE) bench/rtl
.PHONY: rtl
rtl: verilated
#
#
# Build a simulation of this entire design
#
.PHONY: sim
sim: rtl check-gpp
+@$(SUBMAKE) bench/cpp
#
#
# Run a scripted test of what would be interactive, were the post to be followed
#
.PHONY: itest
itest: sim
+@$(SUBMAKE) bench/cpp test
#
#
# Build the host support software
#
.PHONY: sw
sw: check-gpp
+@$(SUBMAKE) sw
#
#
# Check if the given program is installed
#
define checkif-installed
@bash -c '$(1) $(2) < /dev/null >& /dev/null; if [[ $$? != 0 ]]; then echo "Program not found: $(1)"; exit -1; fi'
endef
.PHONY: clean
clean:
+$(SUBMAKE) bench/rtl clean
+$(SUBMAKE) bench/cpp clean
+$(SUBMAKE) sw clean