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.

445 lines
16 KiB

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