/
Makefile
38 lines (28 loc) · 1.29 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
base_dir = $(abspath .)
PREFIX ?= $(base_dir)/opt
JOBS ?= 8
tools = \
verilator \
gtkwave
perl_libs = \
Verilog
.PHONY: all build-all default gtkwave usage verilator
default: usage
usage: ## show this help
@echo -e "Usage: make [target]\nBuild HDL tools in PREFIX (default: $(PREFIX))\n\nOptions:"
@grep "##" $(MAKEFILE_LIST) | grep -v "#.ignore" | sed 's/^/ /' | sed 's/:.\+##/,/' | column -s, -t
build-all: $(tools:%=$(PREFIX)/bin/%) $(PREFIX)/lib/perl5/x86_64-linux-gnu-thread-multi/Verilog/Netlist.pm ## build all tools
verilator: $(PREFIX)/bin/verilator ## build verilator
gtkwave: $(PREFIX)/bin/gtkwave ## build gtkwave
verilog-perl: $(PREFIX)/lib/perl5/x86_64-linux-gnu-thread-multi/Verilog/Netlist.pm ## build Verilog::Perl
$(PREFIX)/bin/%:
$(MAKE) -C $(base_dir)/$* PREFIX=$(PREFIX) JOBS=$(JOBS) $@
$(PREFIX)/lib/perl5/x86_64-linux-gnu-thread-multi/Verilog/Netlist.pm:
$(MAKE) -C $(base_dir)/Verilog PREFIX=$(PREFIX) JOBS=$(JOBS) $@
clean-installed: ## remove the installed tools in ./opt
rm -rf $(base_dir)/opt
clean-downloaded: ## blow away program source directories
$(MAKE) -C $(base_dir)/verilator mrproper
$(MAKE) -C $(base_dir)/gtkwave mrproper
$(MAKE) -C $(base_dir)/Verilog mrproper
mrproper: clean-installed clean-downloaded ## remote tools and blow away download sources