You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

446 lines
16 KiB

  1. include $(TOPDIR)/rules.mk
  2. PKG_NAME:=gnunet
  3. PKG_SOURCE_VERSION:=d80214febe4e0e4cc64dddc74e990b3c5ca8a5df
  4. # PKG_MIRROR_HASH:=4cbb9cf48f18fa87aa7c81bcff2372fc9c04c3688fb8dd4b2b57da258050179b
  5. PKG_VERSION:=0.10.2-git-20190128-$(PKG_SOURCE_VERSION)
  6. PKG_RELEASE:=1
  7. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
  8. PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
  9. PKG_SOURCE_URL:=https://gnunet.org/git/gnunet.git
  10. PKG_SOURCE_PROTO:=git
  11. PKG_LICENSE:=AGPL-3.0
  12. PKG_LICENSE_FILES:=COPYING
  13. PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
  14. PKG_BUILD_PARALLEL:=1
  15. PKG_FIXUP:=gettext-version
  16. PKG_INSTALL:=1
  17. include $(INCLUDE_DIR)/package.mk
  18. include $(INCLUDE_DIR)/nls.mk
  19. CONFIGURE_ARGS+= \
  20. --with-libiconv-prefix="$(ICONV_PREFIX)" \
  21. --with-libintl-prefix="$(INTL_PREFIX)" \
  22. --with-ltdl \
  23. $(if $(CONFIG_PACKAGE_$(PKG_NAME)-mysql),--with-mysql="$(STAGING_DIR)/usr",--without-mysql) \
  24. $(if $(CONFIG_PACKAGE_$(PKG_NAME)-pgsql),--with-postgresql="$(STAGING_DIR)/usr/bin/pg_config",--without-postgresql) \
  25. $(if $(CONFIG_PACKAGE_libsqlite3),--with-sqlite="$(STAGING_DIR)/usr",--without-sqlite) \
  26. --enable-testing \
  27. --disable-testruns \
  28. --disable-documentation \
  29. --enable-experimental \
  30. --with-extractor=$(STAGING_DIR)/usr \
  31. --with-gnutls=$(STAGING_DIR)/usr \
  32. --with-libgnurl=$(STAGING_DIR)/usr \
  33. --with-libunistring-prefix=$(STAGING_DIR)/usr \
  34. --with-microhttpd=$(STAGING_DIR)/usr
  35. # ToDo: request upstream to provide --with-pulseaudio=...
  36. TARGET_LDFLAGS+= -Wl,-rpath-link=$(STAGING_DIR)/usr/lib/pulseaudio
  37. define Package/gnunet/Default
  38. SECTION:=net
  39. CATEGORY:=Network
  40. TITLE:=GNUnet
  41. URL:=https://www.gnunet.org/
  42. endef
  43. define Package/gnunet
  44. $(call Package/gnunet/Default)
  45. TITLE+= - a peer-to-peer framework focusing on security
  46. DEPENDS:=+libgcrypt +libgpg-error +libidn2 +libltdl +libunistring +librt +zlib \
  47. $(ICONV_DEPENDS) $(INTL_DEPENDS)
  48. USERID:=gnunet=958:gnunet=958
  49. MENU:=1
  50. endef
  51. define Package/gnunet/description
  52. GNUnet is a peer-to-peer framework focusing on security. The first and
  53. primary application for GNUnet is anonymous file-sharing. GNUnet is
  54. currently developed by a worldwide group of independent free software
  55. developers. GNUnet is a GNU package (http://www.gnu.org/).
  56. This is an ALPHA release. There are known and significant bugs as
  57. well as many missing features in this release.
  58. This package provides the core components of GNUnet including the
  59. CADET routing engine, a DHT implementation and basic transports as
  60. well as their helpers.
  61. endef
  62. define BuildComponent
  63. PKG_CONFIG_DEPENDS+=CONFIG_PACKAGE_$(PKG_NAME)-$(1)
  64. define Package/gnunet-$(1)
  65. $$(call Package/gnunet/Default)
  66. TITLE+= $(2)
  67. DEPENDS:=gnunet $(DEPENDS_$(1))
  68. $(if $(3),DEFAULT:=y if PACKAGE_gnunet)
  69. $(if $(USERID_$(1)),USERID:=$(USERID_$(1)))
  70. $(if $(CONFLICTS_$(1)),CONFLICTS:=$(CONFLICTS_$(1)))
  71. endef
  72. define Package/gnunet-$(1)/install
  73. ( if [ "$(BIN_$(1))" ]; then \
  74. $(INSTALL_DIR) $$(1)/usr/bin ; \
  75. for bin in $(BIN_$(1)); do \
  76. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gnunet-$$$$$$$$bin $$(1)/usr/bin/ ; \
  77. done \
  78. fi )
  79. ( if [ "$(LIB_$(1))" ]; then \
  80. $(INSTALL_DIR) $$(1)/usr/lib ; \
  81. for lib in $(LIB_$(1)); do \
  82. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnunet$$$$$$$$lib.so* $$(1)/usr/lib/ ; \
  83. done \
  84. fi )
  85. ( if [ "$(PLUGIN_$(1))" ]; then \
  86. $(INSTALL_DIR) $$(1)/usr/lib/gnunet ; \
  87. for plug in $(PLUGIN_$(1)); do \
  88. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_$$$$$$$$plug*.so $$(1)/usr/lib/gnunet ; \
  89. done \
  90. fi )
  91. ( if [ "$(LIBEXEC_$(1))" ]; then \
  92. $(INSTALL_DIR) $$(1)/usr/lib/gnunet/libexec ; \
  93. for lex in $(LIBEXEC_$(1)); do \
  94. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libexec/gnunet-$$$$$$$$lex $$(1)/usr/lib/gnunet/libexec ; \
  95. done \
  96. fi )
  97. ( if [ "$(CONF_$(1))" ]; then \
  98. $(INSTALL_DIR) $$(1)/usr/share/gnunet/config.d ; \
  99. for conf in $(CONF_$(1)); do \
  100. $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/gnunet/config.d/$$$$$$$$conf.conf $$(1)/usr/share/gnunet/config.d ; \
  101. done \
  102. fi )
  103. ( if [ -e ./files/gnunet-$(1).defaults ]; then \
  104. $(INSTALL_DIR) $$(1)/etc/uci-defaults ; \
  105. $(INSTALL_BIN) ./files/gnunet-$(1).defaults $$(1)/etc/uci-defaults/gnunet-$(1) ; \
  106. fi )
  107. endef
  108. $$(eval $$(call BuildPackage,gnunet-$(1)))
  109. endef
  110. define Package/gnunet/install
  111. $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/gnunet/libexec
  112. $(INSTALL_DIR) $(1)/usr/share/gnunet/config.d $(1)/usr/share/gnunet/hellos
  113. ( for bin in arm ats cadet core config ecc identity nat nat-auto nat-server nse \
  114. peerinfo revocation scalarproduct scrypt statistics transport uri; do \
  115. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gnunet-$$$$bin $(1)/usr/bin/ ; \
  116. done )
  117. ( for lib in arm ats block blockgroup cadet core datacache dht \
  118. dns dnsparser fragmentation friends hello identity natauto natnew nse \
  119. nt peerinfo regexblock regex revocation scalarproduct set \
  120. statistics transport util; do \
  121. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnunet$$$$lib.so* $(1)/usr/lib/ ; \
  122. done )
  123. ( for plug in ats_proportional block_dht block_regex block_revocation transport_unix; do \
  124. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_$$$$plug*.so $(1)/usr/lib/gnunet ; \
  125. done )
  126. ( for lex in daemon-topology helper-nat-client \
  127. helper-nat-server service-arm service-ats service-cadet \
  128. service-core service-dht service-identity service-nat service-nat-auto \
  129. service-nse service-peerinfo service-regex \
  130. service-revocation service-scalarproduct-alice \
  131. service-scalarproduct-bob service-scalarproduct-ecc-alice \
  132. service-scalarproduct-ecc-bob service-set service-statistics \
  133. service-transport; do \
  134. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libexec/gnunet-$$$$lex $(1)/usr/lib/gnunet/libexec ; \
  135. done )
  136. ( for conf in arm ats cadet core datacache dht identity identity-provider \
  137. nat nat-auto nse peerinfo regex revocation scalarproduct \
  138. set statistics topology transport util; do \
  139. $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/gnunet/config.d/$$$$conf.conf $(1)/usr/share/gnunet/config.d ; \
  140. done )
  141. $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/gnunet/hellos/* $(1)/usr/share/gnunet/hellos
  142. $(INSTALL_DIR) $(1)/etc/init.d
  143. $(INSTALL_BIN) ./files/gnunet.init $(1)/etc/init.d/gnunet
  144. $(INSTALL_DIR) $(1)/lib/upgrade/keep.d
  145. $(INSTALL_DATA) ./files/gnunet.upgrade $(1)/lib/upgrade/keep.d/gnunet
  146. $(INSTALL_DIR) $(1)/etc/uci-defaults
  147. $(INSTALL_BIN) ./files/gnunet.defaults $(1)/etc/uci-defaults/gnunet
  148. $(INSTALL_DIR) $(1)/lib/netifd/proto
  149. $(INSTALL_BIN) ./files/gnunet-proto.sh $(1)/lib/netifd/proto/gnunet.sh
  150. endef
  151. define Build/InstallDev
  152. $(INSTALL_DIR) $(1)/usr/include/gnunet $(1)/usr/lib/pkgconfig
  153. $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.{la,so}* $(1)/usr/lib/
  154. $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig
  155. $(CP) $(PKG_INSTALL_DIR)/usr/include/gnunet/*.h $(1)/usr/include/gnunet
  156. endef
  157. DEPENDS_conversation:=+gnunet-gns +libgst1app +libgst1audio +libgstreamer1 +glib2 +pulseaudio-daemon +libopus +libogg
  158. BIN_conversation:=conversation conversation-test
  159. LIB_conversation:=conversation microphone speaker
  160. PLUGIN_conversation:=gnsrecord_conversation
  161. LIBEXEC_conversation:=helper-audio-playback helper-audio-record service-conversation
  162. CONF_conversation:=conversation
  163. BIN_dht-cli:=dht-get dht-put dht-monitor
  164. PLUGIN_dht-cli:=block_test
  165. DEPENDS_curl:=+libgnurl +jansson
  166. LIB_curl:=curl
  167. DEPENDS_hostlist:=+libmicrohttpd +gnunet-curl +ca-certificates
  168. LIBEXEC_hostlist:=daemon-hostlist
  169. CONF_hostlist:=hostlist
  170. DEPENDS_transport-bluetooth:=+bluez-libs
  171. PLUGIN_transport-bluetooth:=transport_bluetooth
  172. LIBEXEC_transport-bluetooth:=helper-transport-bluetooth
  173. DEPENDS_transport-http_client:=+gnunet-curl +ca-certificates
  174. PLUGIN_transport-http_client:=transport_http_client transport_https_client
  175. DEPENDS_transport-http_server:=+libmicrohttpd
  176. PLUGIN_transport-http_server:=transport_http_server transport_https_server
  177. PLUGIN_transport-tcp:=transport_tcp
  178. PLUGIN_transport-udp:=transport_udp
  179. PLUGIN_transport-wlan:=transport_wlan
  180. LIBEXEC_transport-wlan:=helper-transport-wlan
  181. PLUGIN_transport-xt:=transport_xt
  182. PLUGIN_transport-xu:=transport_xu
  183. DEPENDS_experiments:=+libglpk
  184. PLUGIN_experiments:=ats_mlp ats_ril
  185. # BIN_dv:=dv
  186. LIB_dv:=dv
  187. PLUGIN_dv:=transport_dv
  188. LIBEXEC_dv:=service-dv
  189. CONF_dv:=dv
  190. DEPENDS_fs:=+gnunet-datastore +gnunet-peerstore +libextractor
  191. BIN_fs:=auto-share directory download fs publish unindex search
  192. LIB_fs:=fs
  193. PLUGIN_fs:=block_fs
  194. LIBEXEC_fs:=helper-fs-publish service-fs
  195. CONF_fs:=fs
  196. DEPENDS_gns:=+gnunet-vpn +iptables-mod-extra
  197. USERID_gns:=gnunet=958:gnunetdns=452
  198. BIN_gns:=gns gns-import.sh namecache namestore resolver zoneimport
  199. LIB_gns:=gns gnsrecord namecache namestore
  200. PLUGIN_gns:=block_dns block_gns gnsrecord_conversation gnsrecord_dns gnsrecord_gns
  201. LIBEXEC_gns:=dns2gns helper-dns service-dns service-gns service-namecache service-namestore service-resolver service-zonemaster
  202. CONF_gns:=dns gns namecache namestore resolver zonemaster
  203. DEPENDS_namestore-fcfsd:=+gnunet-gns +libmicrohttpd
  204. LIBEXEC_namestore-fcfsd:=namestore-fcfsd
  205. DEPENDS_gns-proxy:=+gnunet-gns +gnunet-curl +libmicrohttpd
  206. LIBEXEC_gns-proxy:=gns-proxy
  207. DEPENDS_datastore:=+gnunet-gns
  208. BIN_datastore:=datastore
  209. LIB_datastore:=datastore
  210. LIBEXEC_datastore:=service-datastore
  211. CONF_datastore:=datastore
  212. BIN_peerstore:=peerstore
  213. LIB_peerstore:=peerstore
  214. LIBEXEC_peerstore:=service-peerstore
  215. CONF_peerstore:=peerstore
  216. DEPENDS_rest:=+gnunet-gns +gnunet-social +libmicrohttpd +jansson
  217. LIB_rest:=rest json
  218. PLUGIN_rest:=rest_copying rest_gns rest_identity rest_namestore rest_peerinfo rest_openid_connect rest_reclaim
  219. LIBEXEC_rest:=rest-server
  220. CONF_rest:=rest
  221. BIN_rps:=rps
  222. LIB_rps:=rps
  223. LIBEXEC_rps:=service-rps
  224. CONF_rps:=rps
  225. DEPENDS_social:=+gnunet-gns +libmicrohttpd +jansson +libpbc +libgabe
  226. BIN_social:=credential identity-token multicast reclaim social
  227. LIB_social:=abe consensus credential identityprovider multicast psyc psycstore psycutil reclaim reclaimattribute secretsharing social
  228. LIBEXEC_social:=service-consensus service-credential service-evil-consensus service-identity-provider service-multicast service-psyc service-psycstore service-reclaim service-secretsharing service-social
  229. CONF_social:=consensus credential multicast psyc psycstore reclaim secretsharing social
  230. PLUGIN_social:=block_consensus gnsrecord_credential gnsrecord_reclaim reclaim_attribute_gnuid
  231. PLUGIN_dhtcache-heap:=datacache_heap
  232. CONFLICTS_dhtcache-heap:=gnunet-dhtcache-pgsql gnunet-dhtcache-sqlite
  233. DEPENDS_gns-flat:=+gnunet-gns
  234. PLUGIN_gns-flat:=namecache_flat namestore_heap
  235. DEPENDS_peerstore-flat:=+gnunet-peerstore
  236. PLUGIN_peerstore-flat:=peerstore_flat
  237. DEPENDS_fs-heap:=+gnunet-datastore
  238. PLUGIN_fs-heap:=datastore_heap
  239. CONFLICTS_fs-heap:=gnunet-fs-mysql gnunet-fs-pgsql gnunet-fs-sqlite
  240. DEPENDS_mysql:=+libmysqlclient
  241. LIB_mysql:=mysql my
  242. DEPENDS_social-mysql:=+gnunet-mysql +gnunet-social
  243. PLUGIN_social-mysql:=psycstore_mysql
  244. CONFLICTS_social-mysql:=gnunet-social-sqlite
  245. DEPENDS_fs-mysql:=+gnunet-mysql +gnunet-datastore
  246. PLUGIN_fs-mysql:=datastore_mysql
  247. CONFLICTS_fs-mysql:=gnunet-fs-pgsql gnunet-fs-sqlite
  248. DEPENDS_pgsql:=+libpq
  249. LIB_pgsql:=pq
  250. DEPENDS_dhtcache-pgsql:=+gnunet-pgsql
  251. PLUGIN_dhtcache-pgsql:=datacache_postgres
  252. CONFLICTS_dhtcache-pgsql:=gnunet-dhtcache-sqlite
  253. DEPENDS_fs-pgsql:=+gnunet-pgsql +gnunet-datastore
  254. PLUGIN_fs-pgsql:=datastore_postgres
  255. CONFLICTS_fs-pgsql:=gnunet-fs-sqlite
  256. DEPENDS_gns-pgsql:=+gnunet-pgsql +gnunet-gns
  257. PLUGIN_gns-pgsql:=namecache_postgres namestore_postgres
  258. CONFLICTS_gns-pgsql:=gnunet-gns-sqlite gnunet-gns-flat
  259. DEPENDS_social-pgsql:=+gnunet-pgsql +gnunet-social
  260. PLUGIN_social-pgsql:=psycstore_postgres
  261. CONFLICTS_social-pgsql:=gnunet-social-sqlite gnunet-social-mysql
  262. DEPENDS_sqlite:=+libsqlite3
  263. LIB_sqlite:=sq
  264. DEPENDS_gns-sqlite:=+gnunet-gns +gnunet-sqlite
  265. PLUGIN_gns-sqlite:=namecache_sqlite namestore_sqlite
  266. CONFLICTS_gns-sqlite:=gnunet-gns-flat
  267. DEPENDS_peerstore-sqlite:=+gnunet-peerstore +gnunet-sqlite
  268. PLUGIN_peerstore-sqlite:=peerstore_sqlite
  269. CONFLICTS_peerstore-sqlite:=gnunet-peerstore-flat
  270. DEPENDS_dhtcache-sqlite:=+gnunet-sqlite
  271. PLUGIN_dhtcache-sqlite:=datacache_sqlite
  272. DEPENDS_fs-sqlite:=+gnunet-datastore +gnunet-sqlite
  273. PLUGIN_fs-sqlite:=datastore_sqlite
  274. DEPENDS_social-sqlite:=+gnunet-social +gnunet-sqlite
  275. PLUGIN_social-sqlite:=psycstore_sqlite reclaim_sqlite
  276. DEPENDS_utils:=+certtool +openssl-util
  277. BIN_utils:=gns-proxy-setup-ca transport-certificate-creation
  278. DEPENDS_vpn:=+kmod-tun +iptables +firewall
  279. BIN_vpn:=vpn
  280. LIB_vpn:=dnsstub tun vpn
  281. LIBEXEC_vpn:=daemon-exit daemon-pt helper-exit helper-vpn service-vpn
  282. CONF_vpn:=exit pt vpn
  283. define Package/gnunet-gns/prerm
  284. #!/bin/sh
  285. uci -q batch <<EOF
  286. del network.gnunetdns
  287. del network.gndnsrtt
  288. del network.gndnsrl
  289. commit network
  290. del firewall.gnunetdns
  291. del firewall.gndnsrl
  292. del firewall.gndnsrl2
  293. commit firewall
  294. EOF
  295. endef
  296. define Package/gnunet-vpn/prerm
  297. #!/bin/sh
  298. uci -q batch <<EOF
  299. del network.gnunetvpn
  300. del network.gnunetexit
  301. commit network
  302. del firewall.gnunetvpn
  303. del firewall.gnunetexit
  304. del firewall.gnexitfwd
  305. commit firewall
  306. EOF
  307. endef
  308. define PostInstFixSUIDPerms
  309. define Package/$(1)/postinst
  310. #!/bin/sh
  311. [ -z "$IPKG_INSTROOT" ] || exit 0
  312. [ -e /usr/share/gnunet/.permfix ] && rm /usr/share/gnunet/.permfix || exit 0
  313. endef
  314. endef
  315. $(eval $(call PostInstFixSUIDPerms,gnunet))
  316. $(eval $(call PostInstFixSUIDPerms,gnunet-gns))
  317. $(eval $(call PostInstFixSUIDPerms,gnunet-transport-bluetooth))
  318. $(eval $(call PostInstFixSUIDPerms,gnunet-transport-wlan))
  319. $(eval $(call PostInstFixSUIDPerms,gnunet-vpn))
  320. $(eval $(call BuildPackage,gnunet))
  321. $(eval $(call BuildComponent,conversation,conversation component,))
  322. $(eval $(call BuildComponent,curl,cURL wrapper component,))
  323. $(eval $(call BuildComponent,datastore,data storage components,))
  324. $(eval $(call BuildComponent,dht-cli,DHT command line clients,))
  325. # $(eval $(call BuildComponent,dv,distance-vector routing component,y))
  326. $(eval $(call BuildComponent,experiments,experimental components,))
  327. $(eval $(call BuildComponent,fs,file-sharing components,))
  328. $(eval $(call BuildComponent,gns,name resolution components,y))
  329. $(eval $(call BuildComponent,gns-proxy,gns-proxy component,))
  330. $(eval $(call BuildComponent,hostlist,HTTP bootstrap hostlist client and server,y))
  331. $(eval $(call BuildComponent,peerstore,peerstore local persistency component,))
  332. $(eval $(call BuildComponent,rest,REST interface,))
  333. $(eval $(call BuildComponent,rps,RPS routing component,y))
  334. $(eval $(call BuildComponent,social,social components,))
  335. $(eval $(call BuildComponent,namestore-fcfsd,first-come-first-serve registration server,))
  336. $(eval $(call BuildComponent,dhtcache-heap,heap-based dhtcache plugin,y))
  337. $(eval $(call BuildComponent,fs-heap,heap-based filesharing plugin,))
  338. $(eval $(call BuildComponent,gns-flat,flat storage GNS plugins,y))
  339. $(eval $(call BuildComponent,peerstore-flat,flat storage peerstore plugin,))
  340. $(eval $(call BuildComponent,mysql,mySQL backend,))
  341. $(eval $(call BuildComponent,fs-mysql,mySQL filesharing plugins,))
  342. $(eval $(call BuildComponent,social-mysql,mySQL social plugins,))
  343. $(eval $(call BuildComponent,pgsql,PostgreSQL backend,))
  344. $(eval $(call BuildComponent,dhtcache-pgsql,PostgreSQL dhtcache plugin,))
  345. $(eval $(call BuildComponent,fs-pgsql,PostgreSQL filesharing plugin,))
  346. $(eval $(call BuildComponent,gns-pgsql,PostgreSQL GNS plugins,))
  347. $(eval $(call BuildComponent,social-pgsql,PostgreSQL social plugin,))
  348. $(eval $(call BuildComponent,sqlite,libsqlite3 backend,))
  349. $(eval $(call BuildComponent,dhtcache-sqlite,libsqlite3 dhtcache plugin,))
  350. $(eval $(call BuildComponent,fs-sqlite,libsqlite3 filesharing plugin,))
  351. $(eval $(call BuildComponent,gns-sqlite,libsqlite3 gns plugins,))
  352. $(eval $(call BuildComponent,peerstore-sqlite,libsqlite3 peerstore plugin,))
  353. $(eval $(call BuildComponent,social-sqlite,libsqlite3 social plugins,))
  354. $(eval $(call BuildComponent,transport-bluetooth,bluetooth transport,))
  355. $(eval $(call BuildComponent,transport-http_client,HTTP/HTTPS client transport,y))
  356. $(eval $(call BuildComponent,transport-http_server,HTTP/HTTPS server transport,))
  357. $(eval $(call BuildComponent,transport-tcp,TCP transport,y))
  358. $(eval $(call BuildComponent,transport-udp,UDP transport,y))
  359. $(eval $(call BuildComponent,transport-wlan,WLAN transport,y))
  360. $(eval $(call BuildComponent,transport-xt,xt transport,))
  361. $(eval $(call BuildComponent,transport-xu,xu transport,))
  362. $(eval $(call BuildComponent,utils,administration utililties,))
  363. $(eval $(call BuildComponent,vpn,vpn components,y))