xdp-tools: don't rely on host bpf headers
[openwrt/openwrt.git] / package / network / utils / xdp-tools / Makefile
1 include $(TOPDIR)/rules.mk
2
3 PKG_NAME:=xdp-tools
4 PKG_RELEASE:=$(AUTORELEASE)
5 PKG_VERSION:=1.2.6
6 PKG_HASH:=e1bead15014adf404c1ae93b5bb24e6625840b4aadef6c1acfb47e0b99039f52
7
8 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
9 PKG_SOURCE_URL:=https://codeload.github.com/xdp-project/xdp-tools/tar.gz/v$(PKG_VERSION)?
10 PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_VERSION))
11
12 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
13
14 PKG_BUILD_DEPENDS:=bpf-headers
15 PKG_FLAGS:=nonshared
16
17 include $(INCLUDE_DIR)/package.mk
18 include $(INCLUDE_DIR)/bpf.mk
19 include $(INCLUDE_DIR)/nls.mk
20
21 PKG_BUILD_PARALLEL:=1
22 PKG_INSTALL:=1
23
24 define Package/libxdp
25 SECTION:=libs
26 CATEGORY:=Libraries
27 TITLE:=libxdp - Library for use with XDP
28 LICENSE:=LGPL-2.1 OR BSD-2-Clause
29 ABI_VERSION:=$(PKG_ABI_VERSION)
30 URL:=https://github.com/xdp-project/xdp-tools/
31 DEPENDS:=+libbpf $(BPF_DEPENDS)
32 endef
33
34 define Package/libxdp/description
35 libxdp - library for attaching XDP programs and using AF_XDP sockets
36 endef
37
38 define Package/xdp-tools/Default
39 SECTION:=net
40 CATEGORY:=Network
41 LICENSE:=GPL-2.0-only
42 URL:=https://github.com/xdp-project/xdp-tools/
43 DEPENDS:=+libxdp
44 endef
45
46 define Package/xdp-filter
47 $(call Package/xdp-tools/Default)
48 TITLE:=xdp-filter - a simple XDP-powered packet filter
49 endef
50
51 define Package/xdp-filter/description
52 xdp-filter is a packet filtering utility powered by XDP. It is deliberately
53 simple and so does not have the same matching capabilities as, e.g.,
54 netfilter. Instead, thanks to XDP, it can achieve very high drop rates:
55 tens of millions of packets per second on a single CPU core.
56 endef
57
58
59 define Package/xdp-loader
60 $(call Package/xdp-tools/Default)
61 TITLE:=xdp-loader - an XDP program loader
62 endef
63
64 define Package/xdp-loader/description
65 xdp-loader is a simple loader for XDP programs with support for attaching
66 multiple programs to the same interface. To achieve this it exposes the same
67 load and unload semantics exposed by the libxdp library.
68 endef
69
70 define Package/xdpdump
71 $(call Package/xdp-tools/Default)
72 TITLE:=xdpdump - tool for capturing packets at the XDP layer
73 DEPENDS+=+libpcap
74 endef
75
76 define Package/xdpdump/description
77 xdpdump - a simple tcpdump like tool for capturing packets at the XDP layer
78 endef
79
80 TARGET_LDFLAGS += $(INTL_LDFLAGS)
81
82 CONFIGURE_VARS += \
83 FORCE_SYSTEM_LIBBPF=1 \
84 CC="$(TARGET_CC)" \
85 CFLAGS="$(TARGET_CFLAGS)" \
86 LDFLAGS="$(TARGET_LDFLAGS)" \
87 CLANG="$(CLANG)" \
88 BPF_TARGET="$(BPF_TARGET)" \
89 LLC="$(LLVM_LLC)"
90
91 MAKE_VARS += \
92 PREFIX=/usr \
93 RUNDIR=/tmp/run
94
95 define Build/Configure
96 $(call Build/Configure/Default)
97 echo "BPF_CFLAGS += -I$(BPF_HEADERS_DIR)/tools/lib" >> $(PKG_BUILD_DIR)/config.mk
98 endef
99
100 define Build/InstallDev
101 $(INSTALL_DIR) $(1)/usr/include/xdp
102 $(CP) $(PKG_INSTALL_DIR)/usr/include/xdp/*.h $(1)/usr/include/xdp/
103 $(INSTALL_DIR) $(1)/usr/lib/bpf
104 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxdp.{a,so*} $(1)/usr/lib/
105 $(CP) $(PKG_INSTALL_DIR)/usr/lib/bpf/*.o $(1)/usr/lib/bpf
106 $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
107 $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libxdp.pc \
108 $(1)/usr/lib/pkgconfig/
109 $(SED) 's,/usr/include,$$$${prefix}/include,g' \
110 $(1)/usr/lib/pkgconfig/libxdp.pc
111 $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' \
112 $(1)/usr/lib/pkgconfig/libxdp.pc
113 endef
114
115 define Package/xdp-filter/install
116 $(INSTALL_DIR) $(1)/usr/sbin
117 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xdp-filter $(1)/usr/sbin
118 endef
119
120 define Package/xdp-loader/install
121 $(INSTALL_DIR) $(1)/usr/sbin
122 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xdp-loader $(1)/usr/sbin
123 endef
124
125 define Package/xdpdump/install
126 $(INSTALL_DIR) $(1)/usr/sbin
127 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xdpdump $(1)/usr/sbin
128 endef
129
130 define Package/libxdp/install
131 $(INSTALL_DIR) $(1)/usr/lib/bpf
132 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxdp.so.* $(1)/usr/lib/
133 $(CP) $(PKG_INSTALL_DIR)/usr/lib/bpf/*.o $(1)/usr/lib/bpf
134 endef
135
136 $(eval $(call BuildPackage,libxdp))
137 $(eval $(call BuildPackage,xdp-filter))
138 $(eval $(call BuildPackage,xdp-loader))
139 $(eval $(call BuildPackage,xdpdump))