From c7e3acf5d096c4830504916ba65a5c1a52cbae9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= Date: Wed, 29 Sep 2021 01:43:35 +0200 Subject: [PATCH] common.mk: support generating skeletons for BPF object files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Toke Høiland-Jørgensen --- .gitignore | 1 + configure | 2 ++ lib/common.mk | 8 ++++++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index da4413f..e4b5e9d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ config.mk compile_commands.json *.ll *.o +*.skel.h diff --git a/configure b/configure index 4564156..18d13c8 100755 --- a/configure +++ b/configure @@ -17,6 +17,7 @@ check_toolchain() : ${CC=gcc} : ${CLANG=clang} : ${LLC=llc} + : ${BPFTOOL=bpftool} for TOOL in $PKG_CONFIG $CC $CLANG $LLC; do if [ ! $(command -v ${TOOL} 2>/dev/null) ]; then @@ -29,6 +30,7 @@ check_toolchain() echo "CC:=${CC}" >>$CONFIG echo "CLANG:=${CLANG}" >>$CONFIG echo "LLC:=${LLC}" >>$CONFIG + echo "BPFTOOL:=${BPFTOOL}" >>$CONFIG } check_elf() diff --git a/lib/common.mk b/lib/common.mk index e9c06ed..afe2164 100644 --- a/lib/common.mk +++ b/lib/common.mk @@ -12,6 +12,7 @@ # BPF_C = ${BPF_TARGETS:=.c} BPF_OBJ = ${BPF_C:.c=.o} +BPF_SKEL = ${BPF_SKEL_OBJ:.o=.skel.h} USER_C := ${USER_TARGETS:=.c} USER_OBJ := ${USER_C:.c=.o} BPF_OBJ_INSTALL ?= $(BPF_OBJ) @@ -51,7 +52,7 @@ BPF_CFLAGS += -I$(INCLUDE_DIR) -I$(HEADER_DIR) $(EXTRA_CFLAGS) BPF_HEADERS := $(wildcard $(HEADER_DIR)/*/*.h) $(wildcard $(INCLUDE_DIR)/*/*.h) -all: $(USER_TARGETS) $(BPF_OBJ) $(EXTRA_TARGETS) +all: $(USER_TARGETS) $(BPF_OBJ) $(EXTRA_TARGETS) $(BPF_SKEL) .PHONY: clean clean:: @@ -70,7 +71,7 @@ LIB_H := ${LIB_OBJS:.o=.h} $(LIB_OBJS): %.o: %.c %.h $(LIB_H) $(Q)$(MAKE) -C $(dir $@) $(notdir $@) -$(USER_TARGETS): %: %.c $(OBJECT_LIBBPF) $(OBJECT_LIBXDP) $(LIBMK) $(LIB_OBJS) $(KERN_USER_H) $(EXTRA_DEPS) $(EXTRA_USER_DEPS) +$(USER_TARGETS): %: %.c $(OBJECT_LIBBPF) $(OBJECT_LIBXDP) $(LIBMK) $(LIB_OBJS) $(KERN_USER_H) $(EXTRA_DEPS) $(EXTRA_USER_DEPS) $(BPF_SKEL) $(QUIET_CC)$(CC) -Wall $(CFLAGS) $(LDFLAGS) -o $@ $(LIB_OBJS) \ $< $(LDLIBS) @@ -86,6 +87,9 @@ $(BPF_OBJ): %.o: %.c $(KERN_USER_H) $(EXTRA_DEPS) $(BPF_HEADERS) $(LIBMK) -O2 -emit-llvm -c -g -o ${@:.o=.ll} $< $(QUIET_LLC)$(LLC) -march=bpf -filetype=obj -o $@ ${@:.o=.ll} +$(BPF_SKEL): %.skel.h: %.o + $(QUIET_GEN)$(BPFTOOL) gen skeleton ${@:.skel.h=.o} > $@ + .PHONY: test ifeq ($(TEST_FILE),)