8484ca758b0b4d577c05378a674819ecfc313648
[openwrt/staging/nbd.git] / package / network / utils / xdp-tools / Makefile
1 include $(TOPDIR)/rules.mk
2
3 PKG_NAME:=xdp-tools
4 PKG_RELEASE:=1
5 PKG_VERSION:=1.2.9
6 PKG_HASH:=159ed8d3c8195d812ec3cde83bd736245a72743af372998320d39c2ba69ab142
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_ARCH)-linux-gnu" \
89 LLC="$(LLVM_LLC)" \
90 BPF_LDFLAGS="-march=$(BPF_TARGET) -mcpu=v3"
91
92 ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)
93 MAKE_FLAGS+=V=1
94 endif
95
96 MAKE_VARS += \
97 PREFIX=/usr \
98 RUNDIR=/tmp/run
99
100 define Build/Configure
101 $(call Build/Configure/Default)
102 echo "BPF_CFLAGS += $(BPF_CFLAGS) -Wno-error -fno-stack-protector" >> $(PKG_BUILD_DIR)/config.mk
103 endef
104
105 define Build/InstallDev
106 $(INSTALL_DIR) $(1)/usr/include/xdp
107 $(CP) $(PKG_INSTALL_DIR)/usr/include/xdp/*.h $(1)/usr/include/xdp/
108 $(INSTALL_DIR) $(1)/usr/lib/bpf
109 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxdp.{a,so*} $(1)/usr/lib/
110 $(CP) $(PKG_INSTALL_DIR)/usr/lib/bpf/*.o $(1)/usr/lib/bpf
111 $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
112 $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libxdp.pc \
113 $(1)/usr/lib/pkgconfig/
114 $(SED) 's,/usr/include,$$$${prefix}/include,g' \
115 $(1)/usr/lib/pkgconfig/libxdp.pc
116 $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' \
117 $(1)/usr/lib/pkgconfig/libxdp.pc
118 endef
119
120 define Package/xdp-filter/install
121 $(INSTALL_DIR) $(1)/usr/sbin
122 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xdp-filter $(1)/usr/sbin
123 endef
124
125 define Package/xdp-loader/install
126 $(INSTALL_DIR) $(1)/usr/sbin
127 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xdp-loader $(1)/usr/sbin
128 endef
129
130 define Package/xdpdump/install
131 $(INSTALL_DIR) $(1)/usr/sbin
132 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/xdpdump $(1)/usr/sbin
133 endef
134
135 define Package/libxdp/install
136 $(INSTALL_DIR) $(1)/usr/lib/bpf
137 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxdp.so.* $(1)/usr/lib/
138 $(CP) $(PKG_INSTALL_DIR)/usr/lib/bpf/*.o $(1)/usr/lib/bpf
139 endef
140
141 $(eval $(call BuildPackage,libxdp))
142 $(eval $(call BuildPackage,xdp-filter))
143 $(eval $(call BuildPackage,xdp-loader))
144 $(eval $(call BuildPackage,xdpdump))