Skip to content

Commit 71ca34a

Browse files
committed
Consolidate common parts of Makefiles into common.mk
There's a lot of repetition in the Makefiles which is not really needed (and leads to small deviations over timer). Move all the common stuff into common.mk and just include that. Make a few adjustments along the way to make sure things keep working. Signed-off-by: Toke Høiland-Jørgensen <[email protected]>
1 parent 5d865fa commit 71ca34a

File tree

6 files changed

+95
-390
lines changed

6 files changed

+95
-390
lines changed

basic01-xdp-pass/Makefile

Lines changed: 7 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,16 @@
11
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
22

3-
TARGETS := xdp_pass
3+
XDP_TARGETS := xdp_pass_kern
4+
USER_TARGETS := xdp_pass
5+
USER_C := xdp_pass_user.c
6+
47

58
LLC ?= llc
69
CLANG ?= clang
710
CC := gcc
811

912
LIBBPF_DIR = ../libbpf/src/
13+
COMMON_DIR = ../common/
14+
COMMON_OBJS := $(COMMON_DIR)/common_params.o
1015

11-
XDP_C = ${TARGETS:=_kern.c}
12-
XDP_OBJ = ${XDP_C:.c=.o}
13-
USER_C = ${TARGETS:=_user.c}
14-
USER_OBJ = ${USER_C:.c=.o}
15-
OBJECT_LIBBPF = $(LIBBPF_DIR)/libbpf.a
16-
17-
COMMON_OBJS := ../common/common_params.o
18-
# Supports adding more COMMON_OBJS
19-
# COMMON_OBJS += ../common/common_bpf.o
20-
21-
# Create expansions for dependencies
22-
COMMON_H := ${COMMON_OBJS:.o=.h}
23-
24-
CFLAGS ?= -I$(LIBBPF_DIR)/root/usr/include/
25-
CFLAGS += -I../headers/
26-
LDFLAGS ?= -L$(LIBBPF_DIR)
27-
28-
LIBS = -lbpf -lelf
29-
30-
all: llvm-check $(TARGETS) $(XDP_OBJ)
31-
32-
.PHONY: clean $(CLANG) $(LLC)
33-
34-
clean:
35-
cd $(LIBBPF_DIR) && $(MAKE) clean;
36-
make -C ../common/ clean
37-
rm -f $(TARGETS)
38-
rm -f $(XDP_OBJ)
39-
rm -f $(USER_OBJ)
40-
rm -f *.ll
41-
rm -f *~
42-
43-
llvm-check: $(CLANG) $(LLC)
44-
@for TOOL in $^ ; do \
45-
if [ ! $$(command -v $${TOOL} 2>/dev/null) ]; then \
46-
echo "*** ERROR: Cannot find tool $${TOOL}" ;\
47-
exit 1; \
48-
else true; fi; \
49-
done
50-
51-
$(OBJECT_LIBBPF):
52-
@if [ ! -d $(LIBBPF_DIR) ]; then \
53-
echo "Error: Need libbpf submodule"; \
54-
echo "May need to run git submodule update --init"; \
55-
exit 1; \
56-
else \
57-
cd $(LIBBPF_DIR) && $(MAKE) all; \
58-
mkdir -p root; DESTDIR=root $(MAKE) install_headers; \
59-
fi
60-
61-
# Create dependency: detect if C-file change and touch H-file, to trigger
62-
# target $(COMMON_OBJS)
63-
$(COMMON_H): %.h: %.c
64-
touch $@
65-
66-
# Detect if any of common obj changed and create dependency on .h-files
67-
$(COMMON_OBJS): %.o: %.h
68-
make -C ../common/
69-
70-
$(TARGETS): %: %_user.c $(OBJECT_LIBBPF) Makefile $(COMMON_OBJS)
71-
$(CC) -Wall $(CFLAGS) $(LDFLAGS) -o $@ $(COMMON_OBJS) \
72-
$< $(LIBS)
73-
74-
$(XDP_OBJ): %.o: %.c Makefile
75-
$(CLANG) -S \
76-
-target bpf \
77-
-D __BPF_TRACING__ \
78-
$(CFLAGS) \
79-
-Wall \
80-
-Wno-unused-value \
81-
-Wno-pointer-sign \
82-
-Wno-compare-distinct-pointer-types \
83-
-Werror \
84-
-O2 -emit-llvm -c -g $<
85-
$(LLC) -march=bpf -filetype=obj -o $@ ${@:.o=.ll}
16+
include $(COMMON_DIR)/common.mk

basic02-prog-by-name/Makefile

Lines changed: 2 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,10 @@
11
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
22

3-
# Departing from the implicit _user.c scheme
43
XDP_TARGETS := xdp_prog_kern
54
USER_TARGETS := xdp_loader
65

7-
LLC ?= llc
8-
CLANG ?= clang
9-
CC := gcc
10-
116
LIBBPF_DIR = ../libbpf/src/
7+
COMMON_DIR = ../common/
128

13-
XDP_C = ${XDP_TARGETS:=.c}
14-
XDP_OBJ = ${XDP_C:.c=.o}
15-
USER_C = ${USER_TARGETS:=.c}
16-
USER_OBJ = ${USER_C:.c=.o}
17-
18-
OBJECT_LIBBPF = $(LIBBPF_DIR)/libbpf.a
19-
20-
COMMON_OBJS := ../common/common_params.o
21-
COMMON_OBJS += ../common/common_user_bpf_xdp.o
22-
# Create expansions for dependencies
23-
COMMON_H := ${COMMON_OBJS:.o=.h}
24-
25-
CFLAGS ?= -I$(LIBBPF_DIR)/root/usr/include/
26-
CFLAGS += -I../headers/
27-
LDFLAGS ?= -L$(LIBBPF_DIR)
28-
29-
LIBS = -lbpf -lelf
30-
31-
all: llvm-check $(USER_TARGETS) $(XDP_OBJ)
32-
33-
.PHONY: clean $(CLANG) $(LLC)
34-
35-
clean:
36-
cd $(LIBBPF_DIR) && $(MAKE) clean;
37-
make -C ../common/ clean
38-
rm -f $(USER_TARGETS)
39-
rm -f $(XDP_OBJ)
40-
rm -f $(USER_OBJ)
41-
rm -f *.ll
42-
rm -f *~
43-
44-
llvm-check: $(CLANG) $(LLC)
45-
@for TOOL in $^ ; do \
46-
if [ ! $$(command -v $${TOOL} 2>/dev/null) ]; then \
47-
echo "*** ERROR: Cannot find tool $${TOOL}" ;\
48-
exit 1; \
49-
else true; fi; \
50-
done
51-
52-
$(OBJECT_LIBBPF):
53-
@if [ ! -d $(LIBBPF_DIR) ]; then \
54-
echo "Error: Need libbpf submodule"; \
55-
echo "May need to run: git submodule update --init"; \
56-
exit 1; \
57-
else \
58-
cd $(LIBBPF_DIR) && $(MAKE) all; \
59-
mkdir -p root; DESTDIR=root $(MAKE) install_headers; \
60-
fi
61-
62-
# Create dependency: detect if C-file change and touch H-file, to trigger
63-
# target $(COMMON_OBJS)
64-
$(COMMON_H): %.h: %.c
65-
touch $@
66-
67-
# Detect if any of common obj changed and create dependency on .h-files
68-
$(COMMON_OBJS): %.o: %.h
69-
make -C ../common/
70-
71-
$(USER_TARGETS): %: %.c $(OBJECT_LIBBPF) Makefile $(COMMON_OBJS)
72-
$(CC) -Wall $(CFLAGS) $(LDFLAGS) -o $@ $(COMMON_OBJS) \
73-
$< $(LIBS)
9+
include $(COMMON_DIR)/common.mk
7410

75-
$(XDP_OBJ): %.o: %.c Makefile
76-
$(CLANG) -S \
77-
-target bpf \
78-
-D __BPF_TRACING__ \
79-
$(CFLAGS) \
80-
-Wall \
81-
-Wno-unused-value \
82-
-Wno-pointer-sign \
83-
-Wno-compare-distinct-pointer-types \
84-
-Werror \
85-
-O2 -emit-llvm -c -g $<
86-
$(LLC) -march=bpf -filetype=obj -o $@ ${@:.o=.ll}

basic03-map-counter/Makefile

Lines changed: 2 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -4,83 +4,8 @@
44
XDP_TARGETS := xdp_prog_kern
55
USER_TARGETS := xdp_load_and_stats
66

7-
LLC ?= llc
8-
CLANG ?= clang
9-
CC := gcc
10-
117
LIBBPF_DIR = ../libbpf/src/
8+
COMMON_DIR = ../common/
129

13-
XDP_C = ${XDP_TARGETS:=.c}
14-
XDP_OBJ = ${XDP_C:.c=.o}
15-
USER_C = ${USER_TARGETS:=.c}
16-
USER_OBJ = ${USER_C:.c=.o}
17-
18-
OBJECT_LIBBPF = $(LIBBPF_DIR)/libbpf.a
19-
20-
COMMON_OBJS := ../common/common_params.o
21-
COMMON_OBJS += ../common/common_user_bpf_xdp.o
22-
# Create expansions for dependencies
23-
COMMON_H := ${COMMON_OBJS:.o=.h}
24-
25-
CFLAGS ?= -I$(LIBBPF_DIR)/root/usr/include/
26-
CFLAGS += -I../headers/
27-
LDFLAGS ?= -L$(LIBBPF_DIR)
28-
29-
LIBS = -lbpf -lelf
30-
31-
all: llvm-check $(USER_TARGETS) $(XDP_OBJ)
32-
33-
.PHONY: clean $(CLANG) $(LLC)
34-
35-
clean:
36-
cd $(LIBBPF_DIR) && $(MAKE) clean;
37-
make -C ../common/ clean
38-
rm -f $(USER_TARGETS)
39-
rm -f $(XDP_OBJ)
40-
rm -f $(USER_OBJ)
41-
rm -f *.ll
42-
rm -f *~
43-
44-
llvm-check: $(CLANG) $(LLC)
45-
@for TOOL in $^ ; do \
46-
if [ ! $$(command -v $${TOOL} 2>/dev/null) ]; then \
47-
echo "*** ERROR: Cannot find tool $${TOOL}" ;\
48-
exit 1; \
49-
else true; fi; \
50-
done
51-
52-
$(OBJECT_LIBBPF):
53-
@if [ ! -d $(LIBBPF_DIR) ]; then \
54-
echo "Error: Need libbpf submodule"; \
55-
echo "May need to run: git submodule update --init"; \
56-
exit 1; \
57-
else \
58-
cd $(LIBBPF_DIR) && $(MAKE) all; \
59-
mkdir -p root; DESTDIR=root $(MAKE) install_headers; \
60-
fi
61-
62-
# Create dependency: detect if C-file change and touch H-file, to trigger
63-
# target $(COMMON_OBJS)
64-
$(COMMON_H): %.h: %.c
65-
touch $@
66-
67-
# Detect if any of common obj changed and create dependency on .h-files
68-
$(COMMON_OBJS): %.o: %.h
69-
make -C ../common/
70-
71-
$(USER_TARGETS): %: %.c $(OBJECT_LIBBPF) Makefile $(COMMON_OBJS) common_kern_user.h
72-
$(CC) -Wall $(CFLAGS) $(LDFLAGS) -o $@ $(COMMON_OBJS) \
73-
$< $(LIBS)
10+
include $(COMMON_DIR)/common.mk
7411

75-
$(XDP_OBJ): %.o: %.c common_kern_user.h Makefile
76-
$(CLANG) -S \
77-
-target bpf \
78-
-D __BPF_TRACING__ \
79-
$(CFLAGS) \
80-
-Wall \
81-
-Wno-unused-value \
82-
-Wno-pointer-sign \
83-
-Wno-compare-distinct-pointer-types \
84-
-Werror \
85-
-O2 -emit-llvm -c -g $<
86-
$(LLC) -march=bpf -filetype=obj -o $@ ${@:.o=.ll}

basic04-pinning-maps/Makefile

Lines changed: 3 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -2,86 +2,9 @@
22

33
# Departing from the implicit _user.c scheme
44
XDP_TARGETS := xdp_prog_kern
5-
USER_TARGETS := xdp_loader
6-
USER_TARGETS += xdp_stats
7-
8-
LLC ?= llc
9-
CLANG ?= clang
10-
CC := gcc
5+
USER_TARGETS := xdp_loader xdp_stats
116

127
LIBBPF_DIR = ../libbpf/src/
8+
COMMON_DIR = ../common/
139

14-
XDP_C = ${XDP_TARGETS:=.c}
15-
XDP_OBJ = ${XDP_C:.c=.o}
16-
USER_C = ${USER_TARGETS:=.c}
17-
USER_OBJ = ${USER_C:.c=.o}
18-
19-
OBJECT_LIBBPF = $(LIBBPF_DIR)/libbpf.a
20-
21-
COMMON_OBJS := ../common/common_params.o
22-
COMMON_OBJS += ../common/common_user_bpf_xdp.o
23-
# Create expansions for dependencies
24-
COMMON_H := ${COMMON_OBJS:.o=.h}
25-
26-
CFLAGS ?= -I$(LIBBPF_DIR)/root/usr/include/
27-
CFLAGS += -I../headers/
28-
LDFLAGS ?= -L$(LIBBPF_DIR)
29-
30-
LIBS = -lbpf -lelf
31-
32-
all: llvm-check $(USER_TARGETS) $(XDP_OBJ)
33-
34-
.PHONY: clean $(CLANG) $(LLC)
35-
36-
clean:
37-
cd $(LIBBPF_DIR) && $(MAKE) clean;
38-
make -C ../common/ clean
39-
rm -f $(USER_TARGETS)
40-
rm -f $(XDP_OBJ)
41-
rm -f $(USER_OBJ)
42-
rm -f *.ll
43-
rm -f *~
44-
45-
llvm-check: $(CLANG) $(LLC)
46-
@for TOOL in $^ ; do \
47-
if [ ! $$(command -v $${TOOL} 2>/dev/null) ]; then \
48-
echo "*** ERROR: Cannot find tool $${TOOL}" ;\
49-
exit 1; \
50-
else true; fi; \
51-
done
52-
53-
$(OBJECT_LIBBPF):
54-
@if [ ! -d $(LIBBPF_DIR) ]; then \
55-
echo "Error: Need libbpf submodule"; \
56-
echo "May need to run: git submodule update --init"; \
57-
exit 1; \
58-
else \
59-
cd $(LIBBPF_DIR) && $(MAKE) all; \
60-
mkdir -p root; DESTDIR=root $(MAKE) install_headers; \
61-
fi
62-
63-
# Create dependency: detect if C-file change and touch H-file, to trigger
64-
# target $(COMMON_OBJS)
65-
$(COMMON_H): %.h: %.c
66-
touch $@
67-
68-
# Detect if any of common obj changed and create dependency on .h-files
69-
$(COMMON_OBJS): %.o: %.h
70-
make -C ../common/
71-
72-
$(USER_TARGETS): %: %.c $(OBJECT_LIBBPF) Makefile $(COMMON_OBJS) common_kern_user.h
73-
$(CC) -Wall $(CFLAGS) $(LDFLAGS) -o $@ $(COMMON_OBJS) \
74-
$< $(LIBS)
75-
76-
$(XDP_OBJ): %.o: %.c common_kern_user.h Makefile
77-
$(CLANG) -S \
78-
-target bpf \
79-
-D __BPF_TRACING__ \
80-
$(CFLAGS) \
81-
-Wall \
82-
-Wno-unused-value \
83-
-Wno-pointer-sign \
84-
-Wno-compare-distinct-pointer-types \
85-
-Werror \
86-
-O2 -emit-llvm -c -g $<
87-
$(LLC) -march=bpf -filetype=obj -o $@ ${@:.o=.ll}
10+
include $(COMMON_DIR)/common.mk

0 commit comments

Comments
 (0)