-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
97 lines (76 loc) · 2.53 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
SHELL = bash
.ONESHELL:
DESTDIR=$(shell pwd)/install
LINUXTOOLS=$(shell pwd)/linux/tools
TOOLS=$(shell pwd)/tools
TARGETS:=bpftools iproute2 \
kernel_bpf_samples libbpf \
set_env
# TARGETS+=perf
OPTIONAL_TARGETS:=iptables \
nftables \
libnftnl
define ADD_TARGET
ifneq ($(wildcard $(TOOLS)/$(1)),)
$(info "Found $(TOOLS)/$(1)")
TARGETS:=$(TARGETS) $(1)
endif
endef
$(foreach prog,$(OPTIONAL_TARGETS),$(eval $(call ADD_TARGET,$(prog))))
# EXTRA_CFLAGS='-O0 -g -Wall'
# EXTRA_CFLAGS=''
all: $(TARGETS)
check_targets:
@echo "targets = $(TARGETS)"
perf:
make -j -C $(LINUXTOOLS)/perf DESTDIR=$(DESTDIR) install install-man
bpftools:
make -j -C $(LINUXTOOLS)/bpf QUIET_CC= EXTRA_CFLAGS=$(EXTRA_CFLAGS) DESTDIR=$(DESTDIR) install bpftool_install
libbpf:
make -j -C $(TOOLS)/libbpf/src BUILD_STATIC_ONLY=y DESTDIR=$(DESTDIR) UAPIDIR=/usr/include/bpf/compat install install_uapi_headers
iproute2:
$(TOOLS)/iproute2/configure
make -j -C $(TOOLS)/iproute2 DESTDIR=$(DESTDIR) install
iptables: libnftnl
cd $(TOOLS)/iptables; ./autogen.sh; \
PKG_CONFIG_PATH=$(DESTDIR)/lib/pkgconfig ./configure --with-kernel=$(PWD)/linux --prefix $(DESTDIR); \
make -j && make install
nftables: libnftnl
cd $(TOOLS)/nftables; ./autogen.sh; \
PKG_CONFIG_PATH=$(DESTDIR)/lib/pkgconfig ./configure --prefix $(DESTDIR); \
make -j && make install
libnftnl:
cd $(TOOLS)/libnftnl; ./autogen.sh; \
./configure --prefix $(DESTDIR); \
make -j && make install
kernel_bpf_samples: linux_headers_install
make LLC=/usr/bin/llc-10 -C $(PWD)/linux samples/bpf/
linux_headers_install:
make -C $(PWD)/linux INSTALL_HDR_PATH=$(DESTDIR)/usr headers_install
set_env: FORCE
cat <<- EOF > $@
export MANPATH=$(DESTDIR)/usr/share/man:$$MANPATH
export PATH=$(DESTDIR)/sbin:$(DESTDIR)/bin:$(DESTDIR)/usr/local/bin:$(DESTDIR)/usr/local/sbin:$$PATH
export TRACE_INSTALL_DIR=$(DESTDIR)
export LD_LIBRARY_PATH=$(DESTDIR)/usr/local/lib64:$(DESTDIR)/lib
export PERF_EXEC_PATH=$(DESTDIR)/libexec/perf-core:
export PYTHONPATH=$(DESTDIR)/lib/python3/dist-packages
EOF
clean:
rm -rf set_env; \
rm -rf $(PWD)/install; \
make -C $(LINUXTOOLS)/perf clean; \
make -C $(LINUXTOOLS)/bpf clean; \
make -C $(PWD)/linux/samples/bpf clean; \
make -C $(TOOLS)/libbpf/src clean; \
make -C $(TOOLS)/iproute2 clean; \
if [ -d $(TOOLS)/iptables ]; then \
make -C $(TOOLS)/iptables distclean; \
fi; \
if [ -d $(TOOLS)/nftables ]; then \
make -C $(TOOLS)/nftables distclean; \
fi; \
if [ -d $(TOOLS)/libnftnl ]; then \
make -C $(TOOLS)/libnftnl distclean; \
fi
.PHONY: $(TARGETS) FORCE