[openwrt/openwrt] bpftool: add host build

LEDE Commits lede-commits at lists.infradead.org
Tue Sep 3 15:06:39 PDT 2024


robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/21b155e0ff457131515ef7ee525d734b547fb0ba

commit 21b155e0ff457131515ef7ee525d734b547fb0ba
Author: Eric Long <i at hack3r.moe>
AuthorDate: Sat Aug 10 00:42:34 2024 +0800

    bpftool: add host build
    
    Besides probing BPF information in running system, bpftool is also used in
    generating skeleton, dumping BTF, etc. that is widely used in modern BPF
    development. Make it available as a host tool so that we can use it in
    package build.
    
    Tested build targeting malta/le on Arch Linux x86_64. bpftools currently
    does not support processing cross-endian BPF objects, so big-endian host
    is needed to build for big-endian targets using bpftools.
    
    Signed-off-by: Eric Long <i at hack3r.moe>
    Link: https://github.com/openwrt/openwrt/pull/16122
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/network/utils/bpftool/Makefile | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/package/network/utils/bpftool/Makefile b/package/network/utils/bpftool/Makefile
index 45f8904d8d..f2726d1896 100644
--- a/package/network/utils/bpftool/Makefile
+++ b/package/network/utils/bpftool/Makefile
@@ -22,8 +22,11 @@ PKG_BUILD_FLAGS:=no-mips16 gc-sections lto
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
 
+HOST_BUILD_PARALLEL:=1
+
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/nls.mk
+include $(INCLUDE_DIR)/host-build.mk
 
 define Package/bpftool/Default
   SECTION:=net
@@ -88,5 +91,30 @@ define Package/bpftool-$(BUILD_VARIANT)/install
 		$(1)/usr/libexec/bpftool-$(BUILD_VARIANT)
 endef
 
+HOST_MAKE_FLAGS += \
+	OUTPUT="$(HOST_BUILD_DIR)/" \
+	prefix="/usr" \
+	$(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \
+	check_feat=0 \
+	feature-clang-bpf-co-re=0 \
+	feature-libbfd=1 \
+	feature-llvm=0 \
+	feature-libcap=0 \
+	feature-disassembler-four-args=1 \
+	feature-disassembler-init-styled=1
+
+HOST_MAKE_PATH = src
+
+define Host/Install
+	$(INSTALL_DIR) $(STAGING_DIR_HOST)/usr/sbin
+	$(INSTALL_BIN) $(HOST_BUILD_DIR)/bpftool \
+		$(STAGING_DIR_HOST)/usr/sbin/bpftool
+endef
+
+define Host/Clean
+	rm -f $(STAGING_DIR_HOST)/usr/sbin/bpftool
+endef
+
 $(eval $(call BuildPackage,bpftool-full))
 $(eval $(call BuildPackage,bpftool-minimal))
+$(eval $(call HostBuild))




More information about the lede-commits mailing list