Makefile 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. #
  2. # Copyright (C) 2006-2015 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #
  7. include $(TOPDIR)/rules.mk
  8. PKG_NAME:=iproute2
  9. PKG_VERSION:=6.14.0
  10. PKG_RELEASE:=1
  11. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
  12. PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2
  13. PKG_HASH:=a6d23588150096591c3d00fc27a324a82ee71d7a1a9eea78df5df17ad9b8461f
  14. PKG_BUILD_PARALLEL:=1
  15. PKG_BUILD_DEPENDS:=iptables
  16. PKG_LICENSE:=GPL-2.0
  17. PKG_CPE_ID:=cpe:/a:iproute2_project:iproute2
  18. PKG_BUILD_FLAGS:=gc-sections lto
  19. include $(INCLUDE_DIR)/kernel.mk
  20. include $(INCLUDE_DIR)/package.mk
  21. include $(INCLUDE_DIR)/nls.mk
  22. define Package/iproute2/Default
  23. SECTION:=net
  24. CATEGORY:=Network
  25. URL:=http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2
  26. SUBMENU:=Routing and Redirection
  27. MAINTAINER:=Russell Senior <[email protected]>
  28. endef
  29. define Package/ip-tiny
  30. $(call Package/iproute2/Default)
  31. TITLE:=Routing control utility (minimal)
  32. VARIANT:=iptiny
  33. DEFAULT_VARIANT:=1
  34. PROVIDES:=ip
  35. ALTERNATIVES:=200:/sbin/ip:/usr/libexec/ip-tiny
  36. DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl
  37. endef
  38. define Package/ip-full
  39. $(call Package/iproute2/Default)
  40. TITLE:=Routing control utility (full)
  41. VARIANT:=ipfull
  42. PROVIDES:=ip
  43. ALTERNATIVES:=300:/sbin/ip:/usr/libexec/ip-full
  44. DEPENDS:=+libnl-tiny +libbpf +(PACKAGE_devlink||PACKAGE_rdma):libmnl
  45. endef
  46. define Package/tc-tiny
  47. $(call Package/iproute2/Default)
  48. TITLE:=Traffic control utility (minimal)
  49. VARIANT:=tctiny
  50. DEFAULT_VARIANT:=1
  51. PROVIDES:=tc
  52. ALTERNATIVES:=200:/sbin/tc:/usr/libexec/tc-tiny
  53. DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl
  54. endef
  55. define Package/tc-bpf
  56. $(call Package/iproute2/Default)
  57. TITLE:=Traffic control utility (bpf)
  58. VARIANT:=tcbpf
  59. PROVIDES:=tc
  60. ALTERNATIVES:=300:/sbin/tc:/usr/libexec/tc-bpf
  61. DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf
  62. endef
  63. define Package/tc-full
  64. $(call Package/iproute2/Default)
  65. TITLE:=Traffic control utility (full)
  66. VARIANT:=tcfull
  67. PROVIDES:=tc
  68. ALTERNATIVES:=400:/sbin/tc:/usr/libexec/tc-full
  69. DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +libxtables
  70. endef
  71. define Package/genl
  72. $(call Package/iproute2/Default)
  73. TITLE:=General netlink utility frontend
  74. DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl
  75. endef
  76. define Package/ip-bridge
  77. $(call Package/iproute2/Default)
  78. TITLE:=Bridge configuration utility from iproute2
  79. DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl
  80. endef
  81. define Package/ss
  82. $(call Package/iproute2/Default)
  83. TITLE:=Socket statistics utility
  84. DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +kmod-netlink-diag
  85. endef
  86. define Package/nstat
  87. $(call Package/iproute2/Default)
  88. TITLE:=Network statistics utility
  89. DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl
  90. endef
  91. define Package/devlink
  92. $(call Package/iproute2/Default)
  93. TITLE:=Network devlink utility
  94. DEPENDS:=+libmnl
  95. endef
  96. define Package/rdma
  97. $(call Package/iproute2/Default)
  98. TITLE:=Network rdma utility
  99. DEPENDS:=+libmnl
  100. endef
  101. ifeq ($(BUILD_VARIANT),iptiny)
  102. IP_CONFIG_TINY:=y
  103. LIBBPF_FORCE:=off
  104. endif
  105. ifeq ($(BUILD_VARIANT),ipfull)
  106. HAVE_ELF:=y
  107. LIBBPF_FORCE:=on
  108. endif
  109. ifeq ($(BUILD_VARIANT),tctiny)
  110. LIBBPF_FORCE:=off
  111. endif
  112. ifeq ($(BUILD_VARIANT),tcbpf)
  113. HAVE_ELF:=y
  114. LIBBPF_FORCE:=on
  115. SHARED_LIBS:=y
  116. endif
  117. ifeq ($(BUILD_VARIANT),tcfull)
  118. #enable iptables/xtables requirement only if tciptables variant is selected
  119. TC_CONFIG_XT:=y
  120. TC_CONFIG_XT_OLD:=y
  121. TC_CONFIG_XT_OLD_H:=y
  122. TC_CONFIG_IPSET:=y
  123. HAVE_ELF:=y
  124. LIBBPF_FORCE:=on
  125. SHARED_LIBS:=y
  126. else
  127. #disable iptables requirement by default
  128. TC_CONFIG_XT:=n
  129. TC_CONFIG_XT_OLD:=n
  130. TC_CONFIG_XT_OLD_H:=n
  131. TC_CONFIG_IPSET:=n
  132. endif
  133. ifdef CONFIG_PACKAGE_devlink
  134. HAVE_MNL:=y
  135. endif
  136. ifdef CONFIG_PACKAGE_rdma
  137. HAVE_MNL:=y
  138. endif
  139. define Build/Configure
  140. echo "static const char SNAPSHOT[] = \"$(PKG_VERSION)-$(PKG_RELEASE)-openwrt\";" \
  141. > $(PKG_BUILD_DIR)/include/SNAPSHOT.h
  142. endef
  143. TARGET_LDFLAGS += -Wl,--as-needed
  144. TARGET_CPPFLAGS += -I$(STAGING_DIR)/usr/include/libnl-tiny
  145. MAKE_FLAGS += \
  146. KERNEL_INCLUDE="$(TOOLCHAIN_ROOT_DIR)/usr/include" \
  147. SHARED_LIBS=$(SHARED_LIBS) \
  148. IP_CONFIG_TINY=$(IP_CONFIG_TINY) \
  149. BUILD_VARIANT=$(BUILD_VARIANT) \
  150. LIBBPF_FORCE=$(LIBBPF_FORCE) \
  151. HAVE_ELF=$(HAVE_ELF) \
  152. HAVE_MNL=$(HAVE_MNL) \
  153. HAVE_CAP=$(HAVE_CAP) \
  154. HAVE_TIRPC=n \
  155. IPT_LIB_DIR=/usr/lib/iptables \
  156. XT_LIB_DIR=/usr/lib/iptables \
  157. TC_CONFIG_XT=$(TC_CONFIG_XT) \
  158. TC_CONFIG_XT_OLD=$(TC_CONFIG_XT_OLD) \
  159. TC_CONFIG_XT_OLD_H=$(TC_CONFIG_XT_OLD_H) \
  160. TC_CONFIG_IPSET=$(TC_CONFIG_IPSET) \
  161. FPIC="$(FPIC)" \
  162. $(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='')
  163. define Build/Compile
  164. +$(MAKE_VARS) $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) $(MAKE_FLAGS)
  165. endef
  166. define Build/InstallDev
  167. $(INSTALL_DIR) $(1)/usr/include/iproute2
  168. $(CP) $(PKG_BUILD_DIR)/include/bpf_elf.h $(1)/usr/include/iproute2
  169. $(CP) $(PKG_BUILD_DIR)/include/{libgenl,libnetlink}.h $(1)/usr/include/
  170. $(INSTALL_DIR) $(1)/usr/lib
  171. $(CP) $(PKG_BUILD_DIR)/lib/libnetlink.a $(1)/usr/lib/
  172. endef
  173. define Package/ip-tiny/install
  174. $(INSTALL_DIR) $(1)/usr/libexec
  175. $(INSTALL_BIN) $(PKG_BUILD_DIR)/ip/ip $(1)/usr/libexec/ip-tiny
  176. endef
  177. define Package/ip-full/install
  178. $(INSTALL_DIR) $(1)/usr/libexec
  179. $(INSTALL_BIN) $(PKG_BUILD_DIR)/ip/ip $(1)/usr/libexec/ip-full
  180. endef
  181. define Package/tc-tiny/install
  182. $(INSTALL_DIR) $(1)/usr/libexec
  183. $(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-tiny
  184. endef
  185. define Package/tc-bpf/install
  186. $(INSTALL_DIR) $(1)/usr/libexec
  187. $(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-bpf
  188. endef
  189. define Package/tc-full/install
  190. $(INSTALL_DIR) $(1)/usr/libexec
  191. $(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-full
  192. endef
  193. define Package/genl/install
  194. $(INSTALL_DIR) $(1)/usr/sbin
  195. $(INSTALL_BIN) $(PKG_BUILD_DIR)/genl/genl $(1)/usr/sbin/
  196. endef
  197. define Package/ip-bridge/install
  198. $(INSTALL_DIR) $(1)/usr/sbin
  199. $(INSTALL_BIN) $(PKG_BUILD_DIR)/bridge/bridge $(1)/usr/sbin/
  200. endef
  201. define Package/ss/install
  202. $(INSTALL_DIR) $(1)/usr/sbin
  203. $(INSTALL_BIN) $(PKG_BUILD_DIR)/misc/ss $(1)/usr/sbin/
  204. endef
  205. define Package/nstat/install
  206. $(INSTALL_DIR) $(1)/usr/sbin
  207. $(INSTALL_BIN) $(PKG_BUILD_DIR)/misc/nstat $(1)/usr/sbin/
  208. endef
  209. define Package/devlink/install
  210. $(INSTALL_DIR) $(1)/usr/sbin
  211. $(INSTALL_BIN) $(PKG_BUILD_DIR)/devlink/devlink $(1)/usr/sbin/
  212. endef
  213. define Package/rdma/install
  214. $(INSTALL_DIR) $(1)/usr/sbin
  215. $(INSTALL_BIN) $(PKG_BUILD_DIR)/rdma/rdma $(1)/usr/sbin/
  216. endef
  217. $(eval $(call BuildPackage,ip-tiny))
  218. $(eval $(call BuildPackage,ip-full))
  219. $(eval $(call BuildPackage,tc-tiny))
  220. $(eval $(call BuildPackage,tc-bpf))
  221. $(eval $(call BuildPackage,tc-full))
  222. $(eval $(call BuildPackage,genl))
  223. $(eval $(call BuildPackage,ip-bridge))
  224. $(eval $(call BuildPackage,ss))
  225. $(eval $(call BuildPackage,nstat))
  226. $(eval $(call BuildPackage,devlink))
  227. $(eval $(call BuildPackage,rdma))