xdp-tools: add recipe

Import xdp-tools recipe from meta-dpdk to meta-oe.

xdp-tools provides a set of utilities and helpers for working
with XDP (eXpress Data Path) and eBPF-based packet processing
in the Linux networking stack.

Although currently available in meta-dpdk, xdp-tools is a
standalone utility with no direct dependency on DPDK, and is
generally useful for networking and XDP-based workflows.
Adding it to meta-oe makes it available without requiring
the meta-dpdk layer.

Signed-off-by: Rajkumar Patel <patel.rajkumar@oss.qualcomm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
Rajkumar Patel
2026-06-13 17:40:22 +05:30
committed by Khem Raj
parent a116a325dd
commit cdd53d4d0d
5 changed files with 189 additions and 0 deletions
@@ -0,0 +1,44 @@
From 9c9dce2e5f04de65b7b00321f96fff6071546ea1 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Mon, 17 Oct 2022 15:44:16 +0800
Subject: [PATCH] configure: skip toolchain checks
Current logic fetch full command line along with the tool. i.e
gcc -m64 -march=skylake -mtune=generic ...
Which throws ERROR: Cannot find tool -m64
So need to re-write for loop, so it can work in cross-compilation
environment too.
Upstream-Status: Inappropriate
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
configure | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/configure b/configure
index b4e824f..10618fc 100755
--- a/configure
+++ b/configure
@@ -69,12 +69,12 @@ check_toolchain()
CLANG=$(find_tool clang "$CLANG")
LLC=$(find_tool llc "$LLC")
- for TOOL in $PKG_CONFIG $CC $LD $OBJCOPY $CLANG $LLC $M4; do
- if [ ! $(command -v ${TOOL} 2>/dev/null) ]; then
- echo "*** ERROR: Cannot find tool ${TOOL}" ;
- exit 1;
- fi;
- done
+ #for TOOL in $PKG_CONFIG $CC $LD $OBJCOPY $CLANG $LLC $M4; do
+ # if [ ! $(command -v ${TOOL} 2>/dev/null) ]; then
+ # echo "*** ERROR: Cannot find tool ${TOOL}" ;
+ # exit 1;
+ # fi;
+ #done
clang_version=$($CLANG --version | grep -Po '(?<=clang version )[[:digit:]]+')
if [ "$?" -ne "0" ]; then
@@ -0,0 +1,44 @@
From 2840cf0b89497f545fae2eed7ece3f3c5fc558e3 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Mon, 17 Oct 2022 15:50:34 +0800
Subject: [PATCH 2/4] Makefile: It does not detect libbpf header from sysroot
So adding sysroot headers path.
Upstream-Status: OE-Specific
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
lib/common.mk | 2 +-
lib/libxdp/Makefile | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/common.mk b/lib/common.mk
index 56c0406..ab0bad8 100644
--- a/lib/common.mk
+++ b/lib/common.mk
@@ -55,7 +55,7 @@ LIBXDP_SOURCES := $(wildcard $(LIBXDP_DIR)/*.[ch] $(LIBXDP_DIR)/*.in)
KERN_USER_H ?= $(wildcard common_kern_user.h)
CFLAGS += -I$(HEADER_DIR) -I$(LIB_DIR)/util $(ARCH_INCLUDES)
-BPF_CFLAGS += -I$(HEADER_DIR) $(ARCH_INCLUDES)
+BPF_CFLAGS += -I$(HEADER_DIR) $(ARCH_INCLUDES) -I${STAGING_INCDIR}/
BPF_HEADERS := $(wildcard $(HEADER_DIR)/bpf/*.h) $(wildcard $(HEADER_DIR)/xdp/*.h)
diff --git a/lib/libxdp/Makefile b/lib/libxdp/Makefile
index 358b751..8f459d8 100644
--- a/lib/libxdp/Makefile
+++ b/lib/libxdp/Makefile
@@ -30,7 +30,7 @@ PC_FILE := $(OBJDIR)/libxdp.pc
TEMPLATED_SOURCES := xdp-dispatcher.c
CFLAGS += -I$(HEADER_DIR)
-BPF_CFLAGS += -I$(HEADER_DIR)
+BPF_CFLAGS += -I$(HEADER_DIR) -I${STAGING_INCDIR}/
ifndef BUILD_STATIC_ONLY
--
2.25.1
@@ -0,0 +1,31 @@
From 157546fbc4f18751c52b3c8788879c05cf253331 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Mon, 17 Oct 2022 16:02:46 +0800
Subject: [PATCH 3/4] Makefile: fix KeyError failure
Error:
Exception: KeyError: 'getpwuid(): uid not found: 11857215'
Upstream-Status: Inappropriate
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
lib/libxdp/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/libxdp/Makefile b/lib/libxdp/Makefile
index 8f459d8..9a340a3 100644
--- a/lib/libxdp/Makefile
+++ b/lib/libxdp/Makefile
@@ -55,7 +55,7 @@ install: all
$(Q)install -d -m 0755 $(DESTDIR)$(BPF_OBJECT_DIR)
$(Q)install -m 0644 $(LIB_HEADERS) $(DESTDIR)$(HDRDIR)/
$(Q)install -m 0644 $(PC_FILE) $(DESTDIR)$(LIBDIR)/pkgconfig/
- $(Q)cp -fpR $(SHARED_LIBS) $(STATIC_LIBS) $(DESTDIR)$(LIBDIR)
+ $(Q)cp -fpR --no-preserve=ownership $(SHARED_LIBS) $(STATIC_LIBS) $(DESTDIR)$(LIBDIR)
$(Q)install -m 0755 $(XDP_OBJS) $(DESTDIR)$(BPF_OBJECT_DIR)
$(if $(MAN_FILES),$(Q)install -m 0755 -d $(DESTDIR)$(MANDIR)/man3)
$(if $(MAN_FILES),$(Q)install -m 0644 $(MAN_FILES) $(DESTDIR)$(MANDIR)/man3)
--
2.25.1
@@ -0,0 +1,34 @@
From 46b3ff797135574aa0ee42f633a281d44f48da95 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Mon, 17 Oct 2022 16:05:15 +0800
Subject: [PATCH 4/4] Makefile: fix libxdp.pc error
Error:
do_populate_sysroot: QA Issue: libxdp.pc failed sanity test (tmpdir) in
path ... xdp-tools/1.2.8-r0/sysroot-destdir/usr/lib/pkgconfig [pkgconfig]
Upstream-Status: Inappropriate
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
lib/libxdp/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/libxdp/Makefile b/lib/libxdp/Makefile
index 9a340a3..bc39177 100644
--- a/lib/libxdp/Makefile
+++ b/lib/libxdp/Makefile
@@ -76,8 +76,8 @@ $(OBJDIR)/libxdp.so.$(LIBXDP_VERSION): $(SHARED_OBJS)
$^ $(LDFLAGS) $(LDLIBS) -o $@
$(OBJDIR)/libxdp.pc:
- $(Q)sed -e "s|@PREFIX@|$(PREFIX)|" \
- -e "s|@LIBDIR@|$(LIBDIR)|" \
+ $(Q)sed -e "s|@PREFIX@|$(prefix)|" \
+ -e "s|@LIBDIR@|$(libdir)|" \
-e "s|@VERSION@|$(TOOLS_VERSION)|" \
< libxdp.pc.template > $@
--
2.25.1
@@ -0,0 +1,36 @@
SUMMARY = "Utilities and example programs for use with XDP"
HOMEPAGE = "https://github.com/xdp-project/xdp-tools"
LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=9ee53f8d06bbdb4c11b1557ecc4f8cd5 \
file://LICENSES/GPL-2.0;md5=994331978b428511800bfbd17eea3001 \
file://LICENSES/LGPL-2.1;md5=b370887980db5dd40659b50909238dbd \
file://LICENSES/BSD-2-Clause;md5=5d6306d1b08f8df623178dfd81880927"
DEPENDS += " libbpf clang-native zlib elfutils libpcap"
SRC_URI = "git://github.com/xdp-project/xdp-tools.git;branch=v1.2;protocol=https \
file://0001-configure-skip-toolchain-checks.patch \
file://0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch \
file://0003-Makefile-fix-KeyError-failure.patch \
file://0004-Makefile-fix-libxdp.pc-error.patch \
"
SRCREV = "57a139f9bf6ef644f9c1deb4f7df4bb4c76d6179"
inherit pkgconfig
EXTRA_OEMAKE += "PREFIX=${D}${prefix} LIBDIR=${D}${libdir} BUILD_STATIC_ONLY=1 PRODUCTION=1"
CFLAGS += "-fPIC"
export STAGING_INCDIR
do_install () {
oe_runmake install
# Remove object files *.o
rm -rf ${D}/${libdir}/bpf
}
RDEPENDS:${PN} += "bash"