Makefile 4.0 KB

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