-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
114 lines (95 loc) · 4.98 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
#####################################################################
## ,------. ,--. ,--. ##
## | .--. ' ,---. ,--,--. | | ,---. ,---. `--' ,---. ##
## | '--'.'| .-. |' ,-. | | | | .-. | .-. |,--.| .--' ##
## | |\ \ ' '-' '\ '-' | | '--.' '-' ' '-' || |\ `--. ##
## `--' '--' `---' `--`--' `-----' `---' `- /`--' `---' ##
## `---' ##
## Build Makefile for virtual development board ##
## ##
#####################################################################
## ##
## Copyright (C) 2024 Roa Logic BV - www.roalogic.com ##
## Copyright (C) 2024 richard.herveille@roalogic.com ##
## ##
## Redistribution and use in source and binary forms, with ##
## or without modification, are permitted provided that the ##
## following conditions are met: ##
## 1. Redistributions of source code must retain the above ##
## copyright notice, this list of conditions and the ##
## following disclaimer. ##
## 2. Redistributions in binary form must reproduce the above ##
## copyright notice, this list of conditions and the ##
## following disclaimer in the documentation and/or other ##
## materials provided with the distribution. ##
## 3. Neither the name of the copyright holder nor the names ##
## of its contributors may be used to endorse or promote ##
## products derived from this software without specific ##
## prior written permission. ##
## ##
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND ##
## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, ##
## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ##
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ##
## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ##
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ##
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ##
## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ##
## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ##
## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ##
## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ##
## OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ##
## SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ##
## ##
#####################################################################
default: help
CWD:=$(dir $(lastword $(MAKEFILE_LIST)))
BUILDDIR=build
DOCDIR=doc
BOARDS_DIR=$(CWD)boards
include $(CWD)boards/common/Makefile.include
#get the vendors
list_vendors=$(filter-out $1 common, $(notdir $(call list_directories,$1)))
vendors=$(call list_vendors,$(BOARDS_DIR))
#get boards per vendor
boards_list=$(foreach vendor,$(vendors),$(call list_directories,$(BOARDS_DIR)/$(vendor)))
boards=$(filter-out boards common $(vendors),$(notdir $(boards_list)))
#####################################################################
## Boards
#####################################################################
.PHONY: $(boards) clean distclean
#Call the makefile in the <vendor>/<board>/<build> directory
$(boards):
if [ ! -d $(BUILDDIR) ]; then mkdir $(BUILDDIR); fi
$(MAKE) -C $(BUILDDIR) -f "$(filter %/$@, $(boards_list))/Makefile" $@ \
board=$@ filelist=$(filelist)
clean:
$(MAKE) -C $(BUILDDIR) -f $(abspath $(CWD)/boards/common/Makefile.build) clean
distclean:
rm -rf $(BUILDDIR)/*
#####################################################################
## Demo
#####################################################################
.PHONY: demo
demo:
echo "Building demo"
$(MAKE) de10lite filelist=$(abspath demo/filelist.f)
#####################################################################
## Help
#####################################################################
.PHONY: help
help:
@echo "usage: make <board> filelist=<filelist.f>"
@echo "boards:"
$(foreach board,$(boards),@echo "- $(board)")
@echo "filelist points to a .f file with the design's verilog RTL files"
@echo "make <board>_clean : clean <board> build directory"
@echo "make help : this help message"
#####################################################################
## Doc
#####################################################################
.PHONY: doc
doc:
@echo "Building doxygen documentation"
if [ ! -d $(DOCDIR) ]; then mkdir $(DOCDIR); fi
doxygen doxyfile