Makefile 2.62 KB
Newer Older
1
2
REPO_BASE= $(dir $(abspath $(lastword $(MAKEFILE_LIST))))

3
4
5
all: \
	corundum/corundum_verilator \
	corundum_bm/corundum_bm \
6
	i40e_bm/i40e_bm \
7
	net_tap/net_tap \
Jialin Li's avatar
Jialin Li committed
8
9
	net_wire/net_wire \
	net_switch/net_switch
10
11

clean:
12
13
	$(MAKE) -C corundum/ clean
	$(MAKE) -C corundum_bm/ clean
14
	$(MAKE) -C i40e_bm/ clean
15
16
17
	$(MAKE) -C dummy_nic/ clean
	$(MAKE) -C net_tap/ clean
	$(MAKE) -C net_wire/ clean
Jialin Li's avatar
Jialin Li committed
18
	$(MAKE) -C net_switch/ clean
19
20
	$(MAKE) -C nicsim_common/ clean
	$(MAKE) -C netsim_common/ clean
21
	$(MAKE) -C libnicbm/ clean
22

23
24
25
26
27
28
29
30
31
help:
	@echo "Targets:"
	@echo "  all: builds all the tools directly in this repo"
	@echo "  clean: cleans all the tool folders in this repo"
	@echo "  build-images: prepare prereqs for VMs (images directory)"
	@echo "  external: clone and build our tools in external repos "
	@echo "            (qemu, gem5, ns-3)"
	@echo "  run-experiments: run all experiments (experiments directory,"
	@echo "                   implies all, build-images, external)"
32
33
34

####################################
# Tools in this repo
35
36

corundum/corundum_verilator: nicsim_common/libnicsim_common.a
37
	$(MAKE) -C corundum/ all
38

39
corundum_bm/corundum_bm: nicsim_common/libnicsim_common.a libnicbm/libnicbm.a
40
41
	$(MAKE) -C corundum_bm/ all

42
43
44
i40e_bm/i40e_bm: nicsim_common/libnicsim_common.a libnicbm/libnicbm.a
	$(MAKE) -C i40e_bm/ all

45
46
dummy_nic/dummy_nic: nicsim_common/libnicsim_common.a
	$(MAKE) -C dummy_nic all
47
48

net_tap/net_tap: netsim_common/libnetsim_common.a
49
	$(MAKE) -C net_tap/
50
51

net_wire/net_wire: netsim_common/libnetsim_common.a
52
	$(MAKE) -C net_wire/
53

Jialin Li's avatar
Jialin Li committed
54
55
56
net_switch/net_switch: netsim_common/libnetsim_common.a
	$(MAKE) -C net_switch/

57
nicsim_common/libnicsim_common.a:
58
	$(MAKE) -C nicsim_common/
59
60

netsim_common/libnetsim_common.a:
61
62
	$(MAKE) -C netsim_common/

63
64
libnicbm/libnicbm.a:
	$(MAKE) -C libnicbm
65
66
67
68
69
70
71

####################################
# External dependencies

external: gem5/ready qemu/ready ns-3/ready

gem5:
72
	git clone git@github.com:FreakyPenguin/gem5-cosim.git gem5
73
74
75
76
77
78
79
80
81

gem5/ready: gem5
	+cd gem5 && scons build/X86/gem5.opt -j`nproc`
	touch gem5/ready

qemu:
	git clone git@github.com:FreakyPenguin/qemu-cosim.git qemu

qemu/ready: qemu
82
	+cd qemu && ./configure \
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
	    --target-list=x86_64-softmmu \
	    --disable-werror \
	    --extra-cflags="-I$(REPO_BASE)/proto" \
	    --enable-cosim-pci && \
	  $(MAKE)
	touch qemu/ready

ns-3:
	git clone git@github.com:FreakyPenguin/ns-3-cosim.git ns-3

ns-3/ready: ns-3 netsim_common/libnetsim_common.a
	+cd ns-3 && COSIM_PATH=$(REPO_BASE) ./cosim-build.sh configure
	touch ns-3/ready

####################################
# External dependencies

run-experiments: all build-images external
	$(MAKE) -C experiments

build-images:
	$(MAKE) -C images