mirror of
https://github.com/xdp-project/bpf-examples.git
synced 2024-05-06 15:54:53 +00:00
Integrate libxdp as a submodule
This adds libxdp as a submodule and link target alongside libbpf. This should make it just as easy for examples to use libxdp as it currently is for libbpf. Some hoops need to be jumped through to make libxdp link against the same version of libbpf as the one we use in this repository. Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -2,3 +2,6 @@
|
|||||||
path = lib/libbpf
|
path = lib/libbpf
|
||||||
url = https://github.com/xdp-project/libbpf.git
|
url = https://github.com/xdp-project/libbpf.git
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
|
[submodule "lib/xdp-tools"]
|
||||||
|
path = lib/xdp-tools
|
||||||
|
url = https://github.com/xdp-project/xdp-tools
|
||||||
|
45
configure
vendored
45
configure
vendored
@@ -11,6 +11,8 @@ CONFIG=".${CONFIG}.tmp"
|
|||||||
TMPDIR=$(mktemp -d config.XXXXXX)
|
TMPDIR=$(mktemp -d config.XXXXXX)
|
||||||
trap 'status=$?; rm -rf $TMPDIR; rm -f $CONFIG; exit $status' EXIT HUP INT QUIT TERM
|
trap 'status=$?; rm -rf $TMPDIR; rm -f $CONFIG; exit $status' EXIT HUP INT QUIT TERM
|
||||||
|
|
||||||
|
SUBMODULE_LIBBPF=0
|
||||||
|
|
||||||
check_toolchain()
|
check_toolchain()
|
||||||
{
|
{
|
||||||
local clang_version
|
local clang_version
|
||||||
@@ -123,9 +125,10 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo submodule
|
echo submodule
|
||||||
|
SUBMODULE_LIBBPF=1
|
||||||
echo "SYSTEM_LIBBPF:=n" >> $CONFIG
|
echo "SYSTEM_LIBBPF:=n" >> $CONFIG
|
||||||
echo 'CFLAGS += -I$(LIB_DIR)/libbpf-install/usr/include' >>$CONFIG
|
echo 'CFLAGS += -I$(LIB_DIR)/lib-install/usr/include' >>$CONFIG
|
||||||
echo 'BPF_CFLAGS += -I$(LIB_DIR)/libbpf-install/usr/include' >>$CONFIG
|
echo 'BPF_CFLAGS += -I$(LIB_DIR)/lib-install/usr/include' >>$CONFIG
|
||||||
echo 'LDFLAGS += -L$(LIB_DIR)/libbpf/src' >>$CONFIG
|
echo 'LDFLAGS += -L$(LIB_DIR)/libbpf/src' >>$CONFIG
|
||||||
echo 'LDLIBS += -l:libbpf.a' >>$CONFIG
|
echo 'LDLIBS += -l:libbpf.a' >>$CONFIG
|
||||||
echo 'OBJECT_LIBBPF = $(LIB_DIR)/libbpf/src/libbpf.a' >>$CONFIG
|
echo 'OBJECT_LIBBPF = $(LIB_DIR)/libbpf/src/libbpf.a' >>$CONFIG
|
||||||
@@ -173,6 +176,42 @@ EOF
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_libxdp()
|
||||||
|
{
|
||||||
|
if [ "${FORCE_SUBMODULE_LIBXDP:-0}" -ne "1" ] && ${PKG_CONFIG} libxdp --exists; then
|
||||||
|
|
||||||
|
LIBXDP_CFLAGS=$(${PKG_CONFIG} libxdp --cflags)
|
||||||
|
LIBXDP_LDLIBS=$(${PKG_CONFIG} libxdp --libs)
|
||||||
|
echo "SYSTEM_LIBXDP:=y" >>$CONFIG
|
||||||
|
echo 'CFLAGS += ' $LIBXDP_CFLAGS >> $CONFIG
|
||||||
|
echo 'LDLIBS += ' $LIBXDP_LDLIBS >>$CONFIG
|
||||||
|
echo 'OBJECT_LIBXDP = ' >>$CONFIG
|
||||||
|
echo system
|
||||||
|
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo submodule
|
||||||
|
echo "SYSTEM_LIBXDP:=n" >> $CONFIG
|
||||||
|
if [ "$SUBMODULE_LIBBPF" -eq "1" ]; then
|
||||||
|
echo "Configuring libxdp to use our libbpf submodule"
|
||||||
|
(export LIBBPF_DIR="$(readlink -m lib/libbpf)" LIBBPF_INCLUDE_DIR="$(readlink -m lib/lib-install/usr/include)";
|
||||||
|
cd lib/xdp-tools; ./configure)
|
||||||
|
else
|
||||||
|
echo "Configuring libxdp without our libbpf"
|
||||||
|
(cd lib/xdp-tools; ./configure)
|
||||||
|
# these are already set if using libbpf as a submodule
|
||||||
|
echo 'CFLAGS += -I$(LIB_DIR)/lib-install/usr/include' >>$CONFIG
|
||||||
|
echo 'BPF_CFLAGS += -I$(LIB_DIR)/lib-install/usr/include' >>$CONFIG
|
||||||
|
fi
|
||||||
|
echo 'LDFLAGS += -L$(LIB_DIR)/lib-install/usr/lib' >>$CONFIG
|
||||||
|
echo 'LDLIBS += -l:libxdp.a' >>$CONFIG
|
||||||
|
echo 'OBJECT_LIBXDP = $(LIB_DIR)/lib-install/usr/lib/libxdp.a' >>$CONFIG
|
||||||
|
if ! [ -d "lib/xdp-tools/lib" ] && [ -f ".gitmodules" ] && [ -e ".git" ]; then
|
||||||
|
git submodule init && git submodule update
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
quiet_config()
|
quiet_config()
|
||||||
{
|
{
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
@@ -211,6 +250,8 @@ check_toolchain
|
|||||||
|
|
||||||
echo -n "libbpf support: "
|
echo -n "libbpf support: "
|
||||||
check_libbpf
|
check_libbpf
|
||||||
|
echo -n "libxdp support: "
|
||||||
|
check_libxdp
|
||||||
|
|
||||||
check_bpf_use_errno
|
check_bpf_use_errno
|
||||||
|
|
||||||
|
1
lib/.gitignore
vendored
Normal file
1
lib/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
lib-install
|
41
lib/Makefile
41
lib/Makefile
@@ -2,17 +2,18 @@
|
|||||||
LIBBPF_CFLAGS:=$(if $(CFLAGS),$(CFLAGS),-g -O2 -Werror -Wall) -fPIC
|
LIBBPF_CFLAGS:=$(if $(CFLAGS),$(CFLAGS),-g -O2 -Werror -Wall) -fPIC
|
||||||
|
|
||||||
LIB_DIR = .
|
LIB_DIR = .
|
||||||
|
LIB_INSTALL := lib-install
|
||||||
include defines.mk
|
include defines.mk
|
||||||
|
|
||||||
SUBDIRS=
|
SUBDIRS=
|
||||||
|
|
||||||
all: $(OBJECT_LIBBPF)
|
all: $(OBJECT_LIBBPF) $(OBJECT_LIBXDP)
|
||||||
@set -e; \
|
@set -e; \
|
||||||
for i in $(SUBDIRS); \
|
for i in $(SUBDIRS); \
|
||||||
do echo; echo " $$i"; $(MAKE) -C $$i; done
|
do echo; echo " $$i"; $(MAKE) -C $$i; done
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean: libbpf_clean
|
clean: libbpf_clean libxdp_clean
|
||||||
@for i in $(SUBDIRS); \
|
@for i in $(SUBDIRS); \
|
||||||
do $(MAKE) -C $$i clean; done
|
do $(MAKE) -C $$i clean; done
|
||||||
|
|
||||||
@@ -21,7 +22,9 @@ install:
|
|||||||
$(MAKE) -C libxdp install
|
$(MAKE) -C libxdp install
|
||||||
$(MAKE) -C testing install
|
$(MAKE) -C testing install
|
||||||
|
|
||||||
|
|
||||||
libbpf: $(OBJECT_LIBBPF)
|
libbpf: $(OBJECT_LIBBPF)
|
||||||
|
libxdp: libbpf $(OBJECT_LIBXDP)
|
||||||
|
|
||||||
# Handle libbpf as git submodule
|
# Handle libbpf as git submodule
|
||||||
ifeq ($(SYSTEM_LIBBPF),n)
|
ifeq ($(SYSTEM_LIBBPF),n)
|
||||||
@@ -31,21 +34,45 @@ endif
|
|||||||
|
|
||||||
# Detect submodule libbpf source file changes
|
# Detect submodule libbpf source file changes
|
||||||
LIBBPF_SOURCES := $(wildcard libbpf/src/*.[ch])
|
LIBBPF_SOURCES := $(wildcard libbpf/src/*.[ch])
|
||||||
LIBBPF_INSTALL := libbpf-install
|
|
||||||
INSTDIR=../../$(LIBBPF_INSTALL)
|
|
||||||
|
|
||||||
.PHONY: libbpf_clean
|
|
||||||
libbpf/src/libbpf.a: $(LIBBPF_SOURCES)
|
libbpf/src/libbpf.a: $(LIBBPF_SOURCES)
|
||||||
@echo ; echo " libbpf"
|
@echo ; echo " libbpf"
|
||||||
$(QUIET_CC)$(MAKE) -C libbpf/src CFLAGS="$(LIBBPF_CFLAGS)" $P
|
$(QUIET_CC)$(MAKE) -C libbpf/src CFLAGS="$(LIBBPF_CFLAGS)" $P
|
||||||
$(QUIET_INSTALL)$(MAKE) -C libbpf/src DESTDIR=$(INSTDIR) install_headers $P
|
$(QUIET_INSTALL)$(MAKE) -C libbpf/src DESTDIR=../../$(LIB_INSTALL) install_headers $P
|
||||||
|
|
||||||
|
.PHONY: libbpf_clean
|
||||||
libbpf_clean:
|
libbpf_clean:
|
||||||
$(Q)$(MAKE) -C libbpf/src clean $P
|
$(Q)$(MAKE) -C libbpf/src clean $P
|
||||||
$(Q)$(RM) -r $(LIBBPF_INSTALL)
|
$(Q)$(RM) -r $(LIB_INSTALL)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
libbpf_clean:
|
libbpf_clean:
|
||||||
@echo -n
|
@echo -n
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Handle libbpf as git submodule
|
||||||
|
ifeq ($(SYSTEM_LIBXDP),n)
|
||||||
|
ifeq ($(VERBOSE),0)
|
||||||
|
P:= >/dev/null
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Detect submodule libbpf source file changes
|
||||||
|
LIBXDP_SOURCES := $(wildcard xdp-tools/lib/libxdp/*.[ch])
|
||||||
|
|
||||||
|
|
||||||
|
$(LIB_INSTALL)/usr/lib/libxdp.a: $(LIBXDP_SOURCES)
|
||||||
|
@echo ; echo " libxdp"
|
||||||
|
$(QUIET_CC)$(MAKE) -C xdp-tools BUILD_STATIC_ONLY=1 libxdp $P
|
||||||
|
$(QUIET_INSTALL)$(MAKE) -C xdp-tools DESTDIR=../../../$(LIB_INSTALL) PREFIX=/usr BUILD_STATIC_ONLY=1 libxdp_install $P
|
||||||
|
|
||||||
|
.PHONY: libxdp_clean
|
||||||
|
libxdp_clean:
|
||||||
|
$(Q)$(MAKE) -C xdp-tools clean $P
|
||||||
|
$(Q)$(RM) -r $(LIB_INSTALL)
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
libxdp_clean:
|
||||||
|
@echo -n
|
||||||
|
endif
|
||||||
|
@@ -61,6 +61,9 @@ clean::
|
|||||||
$(OBJECT_LIBBPF): $(LIBBPF_SOURCES)
|
$(OBJECT_LIBBPF): $(LIBBPF_SOURCES)
|
||||||
$(Q)$(MAKE) -C $(LIB_DIR) libbpf
|
$(Q)$(MAKE) -C $(LIB_DIR) libbpf
|
||||||
|
|
||||||
|
$(OBJECT_LIBXDP): $(LIBXDP_SOURCES)
|
||||||
|
$(Q)$(MAKE) -C $(LIB_DIR) libxdp
|
||||||
|
|
||||||
$(CONFIGMK):
|
$(CONFIGMK):
|
||||||
$(Q)$(MAKE) -C $(LIB_DIR)/.. config.mk
|
$(Q)$(MAKE) -C $(LIB_DIR)/.. config.mk
|
||||||
|
|
||||||
|
1
lib/xdp-tools
Submodule
1
lib/xdp-tools
Submodule
Submodule lib/xdp-tools added at 27cbd728e2
Reference in New Issue
Block a user