Makefile 1015 Bytes
Newer Older
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
MQNICMOD := $(abspath ../images/mqnic/mqnic.ko)

GUESTS := \
    qemu-pair-client \
    qemu-pair-server \

EXPERIMENTS := \
    qemu-corundum-bm-pair \
    qemu-corundum-verilator-pair \

BUILDDIR := build
OUTDIR := out

GUESTS_TARS := $(addprefix $(BUILDDIR)/,$(addsuffix .tar, $(GUESTS)))
EXPERIMENTS_OUTPUTS := $(addprefix $(OUTDIR)/,$(EXPERIMENTS))

all: $(GUESTS_TARS) $(EXPERIMENTS_OUTPUTS)

clean:
	rm -rf $(BUILDDIR) $(OUTDIR)

#######################################
# Running experiments

run: $(EXPERIMENTS)

$(OUTDIR)/%: experiments/%.sh $(GUESTS_TARS)
	bash $<

#######################################
# Guest Tars

define build_guest
$(1)_OBJS := $(wildcard guests/$(1)/*)
$(BUILDDIR)/$(1).tar: $$($(1)_OBJS)
	rm -rf $(BUILDDIR)/$(1)
	mkdir -p $(BUILDDIR)/$(1)/guest
	cp $(MQNICMOD) $(BUILDDIR)/$(1)/guest/
	cp $$($(1)_OBJS) $(BUILDDIR)/$(1)/guest/
	cd $(BUILDDIR)/$(1) && tar cf $$(abspath $$@) guest/
	rm -rf $(BUILDDIR)/$(1)
endef

$(foreach guest,$(GUESTS), $(eval $(call build_guest,$(guest))))