forked from PolyArch/dsa-framework
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
71 lines (51 loc) · 1.52 KB
/
Makefile
File metadata and controls
71 lines (51 loc) · 1.52 KB
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
PHONY: default
default: build-all
include msg.mk
JOBS = 4
RVTOOLS = riscv-gnu-toolchain riscv-opcodes
SS_SCHED = ss-scheduler
GEM5 = gem5
MODULES = $(RVTOOLS) $(SS_SCHED) $(GEM5) $(SS_LLVM)
CLEAN_MODULES = $(addprefix clean-,$(MODULES))
.PHONY: $(MODULES) $(CLEAN_MODULES) $(INIT_MODULES)
.PHONY: build-all
build-all: $(MODULES)
.PHONY: clean-all
clean-all: $(CLEAN_MODULES)
$(GEM5): ss-scheduler
cd $@; scons build/RISCV/gem5.opt -j$(JOBS)
.PHONY: $(SS_SCHED)
$(SS_SCHED):
make -C $@ install
.PHONY: clean-$(SS_SCHED)
clean-$(SS_SCHED):
$(MAKE) -C $(patsubst clean-%,%,$@) clean
.PHONY: clean-ss
clean-ss: clean-$(SS_SCHED)
# riscv-pk uses a special set of configure flags
riscv-gnu-toolchain: riscv-opcodes
mkdir -p $@/build
cd $@ && autoreconf -fiv && cd build && ../configure --prefix=$(SS_TOOLS)/
$(MAKE) -C $@/build -j$(JOBS)
riscv-opcodes:
make -C $@ install-ss
mkdir -p $(SS_TOOLS)/include/ss-intrin
ln -sfn $(SS)/$@/ss_insts.h $(SS_TOOLS)/include/ss-intrin/ss_insts.h
$(addprefix clean-,$(RVTOOLS)):
rm -rf $(patsubst clean-%,%,$@)/build
full-rebuild:
@echo "Wipe \$$SS_TOOLS ($$SS_TOOLS) and rebuild everything?"
@read -p "[Y/n]: " yn && { [ -z $$yn ] || [ $$yn = Y ] || [ $$yn = y ]; }
rm -rf "$$SS_TOOLS"
$(MAKE) clean-all
$(MAKE) build-all
.PHONY: rebuild-ss
rebuild-ss:
$(MAKE) clean-ss-scheduler
$(MAKE) ss-scheduler gem5
.PHONY: build-ss
build-ss:
$(MAKE) ss-scheduler gem5
.PHONY: update
update:
git submodule foreach 'git checkout polyarch; git pull origin polyarch; git submodule update --init'