Makefile 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858
  1. # SPDX-License-Identifier: GPL-2.0-only
  2. #
  3. # Copyright (C) 2006-2021 OpenWrt.org
  4. include $(TOPDIR)/rules.mk
  5. PKG_NAME:=hostapd
  6. PKG_RELEASE:=2
  7. PKG_SOURCE_URL:=http://w1.fi/hostap.git
  8. PKG_SOURCE_PROTO:=git
  9. PKG_SOURCE_DATE:=2023-06-22
  10. PKG_SOURCE_VERSION:=599d00be9de2846c6ea18c1487d8329522ade22b
  11. PKG_MIRROR_HASH:=828810c558ea181e45ed0c8b940f5c41e55775e2979a15aed8cf0ab17dd7723c
  12. PKG_MAINTAINER:=Felix Fietkau <[email protected]>
  13. PKG_LICENSE:=BSD-3-Clause
  14. PKG_CPE_ID:=cpe:/a:w1.fi:hostapd
  15. PKG_BUILD_PARALLEL:=1
  16. PKG_ASLR_PIE_REGULAR:=1
  17. PKG_CONFIG_DEPENDS:= \
  18. CONFIG_PACKAGE_kmod-ath9k \
  19. CONFIG_PACKAGE_kmod-cfg80211 \
  20. CONFIG_PACKAGE_hostapd \
  21. CONFIG_PACKAGE_hostapd-basic \
  22. CONFIG_PACKAGE_hostapd-mini \
  23. CONFIG_WPA_RFKILL_SUPPORT \
  24. CONFIG_DRIVER_11AC_SUPPORT \
  25. CONFIG_DRIVER_11AX_SUPPORT \
  26. CONFIG_WPA_ENABLE_WEP
  27. PKG_BUILD_FLAGS:=gc-sections lto
  28. EAPOL_TEST_PROVIDERS:=eapol-test eapol-test-openssl eapol-test-wolfssl
  29. SUPPLICANT_PROVIDERS:=
  30. HOSTAPD_PROVIDERS:=
  31. LOCAL_TYPE=$(strip \
  32. $(if $(findstring wpad,$(BUILD_VARIANT)),wpad, \
  33. $(if $(findstring supplicant,$(BUILD_VARIANT)),supplicant, \
  34. hostapd \
  35. )))
  36. LOCAL_AND_LIB_VARIANT=$(patsubst hostapd-%,%,\
  37. $(patsubst wpad-%,%,\
  38. $(patsubst supplicant-%,%,\
  39. $(BUILD_VARIANT)\
  40. )))
  41. LOCAL_VARIANT=$(patsubst %-internal,%,\
  42. $(patsubst %-openssl,%,\
  43. $(patsubst %-wolfssl,%,\
  44. $(patsubst %-mbedtls,%,\
  45. $(LOCAL_AND_LIB_VARIANT)\
  46. ))))
  47. SSL_VARIANT=$(strip \
  48. $(if $(findstring openssl,$(LOCAL_AND_LIB_VARIANT)),openssl,\
  49. $(if $(findstring wolfssl,$(LOCAL_AND_LIB_VARIANT)),wolfssl,\
  50. $(if $(findstring mbedtls,$(LOCAL_AND_LIB_VARIANT)),mbedtls,\
  51. internal\
  52. ))))
  53. CONFIG_VARIANT:=$(LOCAL_VARIANT)
  54. ifeq ($(LOCAL_VARIANT),mesh)
  55. CONFIG_VARIANT:=full
  56. endif
  57. include $(INCLUDE_DIR)/package.mk
  58. STAMP_CONFIGURED:=$(STAMP_CONFIGURED)_$(CONFIG_WPA_MSG_MIN_PRIORITY)
  59. ifneq ($(CONFIG_DRIVER_11AC_SUPPORT),)
  60. HOSTAPD_IEEE80211AC:=y
  61. endif
  62. ifneq ($(CONFIG_DRIVER_11AX_SUPPORT),)
  63. HOSTAPD_IEEE80211AX:=y
  64. endif
  65. CORE_DEPENDS = +ucode +libubus +libucode +ucode-mod-fs +ucode-mod-nl80211 +ucode-mod-rtnl +ucode-mod-ubus +ucode-mod-uloop +libblobmsg-json
  66. DRIVER_MAKEOPTS= \
  67. CONFIG_ACS=$(CONFIG_PACKAGE_kmod-cfg80211) \
  68. CONFIG_DRIVER_NL80211=$(CONFIG_PACKAGE_kmod-cfg80211) \
  69. CONFIG_IEEE80211AC=$(HOSTAPD_IEEE80211AC) \
  70. CONFIG_IEEE80211AX=$(HOSTAPD_IEEE80211AX) \
  71. CONFIG_MBO=$(CONFIG_WPA_MBO_SUPPORT) \
  72. CONFIG_UCODE=y
  73. ifeq ($(SSL_VARIANT),openssl)
  74. DRIVER_MAKEOPTS += CONFIG_TLS=openssl CONFIG_SAE=y
  75. TARGET_LDFLAGS += -lcrypto -lssl
  76. ifeq ($(LOCAL_VARIANT),basic)
  77. DRIVER_MAKEOPTS += CONFIG_OWE=y
  78. endif
  79. ifeq ($(LOCAL_VARIANT),mesh)
  80. DRIVER_MAKEOPTS += CONFIG_AP=y CONFIG_MESH=y
  81. endif
  82. ifeq ($(LOCAL_VARIANT),full)
  83. DRIVER_MAKEOPTS += CONFIG_OWE=y CONFIG_SUITEB192=y CONFIG_AP=y CONFIG_MESH=y
  84. endif
  85. endif
  86. ifeq ($(SSL_VARIANT),wolfssl)
  87. DRIVER_MAKEOPTS += CONFIG_TLS=wolfssl CONFIG_SAE=y
  88. TARGET_LDFLAGS += -lwolfssl
  89. ifeq ($(LOCAL_VARIANT),basic)
  90. DRIVER_MAKEOPTS += CONFIG_OWE=y
  91. endif
  92. ifeq ($(LOCAL_VARIANT),mesh)
  93. DRIVER_MAKEOPTS += CONFIG_AP=y CONFIG_MESH=y CONFIG_WPS_NFC=1
  94. endif
  95. ifeq ($(LOCAL_VARIANT),full)
  96. DRIVER_MAKEOPTS += CONFIG_OWE=y CONFIG_SUITEB192=y CONFIG_AP=y CONFIG_MESH=y CONFIG_WPS_NFC=1
  97. endif
  98. endif
  99. ifeq ($(SSL_VARIANT),mbedtls)
  100. DRIVER_MAKEOPTS += CONFIG_TLS=mbedtls CONFIG_SAE=y
  101. TARGET_LDFLAGS += -lmbedcrypto -lmbedx509 -lmbedtls
  102. ifeq ($(LOCAL_VARIANT),basic)
  103. DRIVER_MAKEOPTS += CONFIG_OWE=y
  104. endif
  105. ifeq ($(LOCAL_VARIANT),mesh)
  106. DRIVER_MAKEOPTS += CONFIG_AP=y CONFIG_MESH=y CONFIG_WPS_NFC=1
  107. endif
  108. ifeq ($(LOCAL_VARIANT),full)
  109. DRIVER_MAKEOPTS += CONFIG_OWE=y CONFIG_SUITEB192=y CONFIG_AP=y CONFIG_MESH=y CONFIG_WPS_NFC=1
  110. endif
  111. endif
  112. ifneq ($(LOCAL_TYPE),hostapd)
  113. ifdef CONFIG_WPA_RFKILL_SUPPORT
  114. DRIVER_MAKEOPTS += NEED_RFKILL=y
  115. endif
  116. endif
  117. DRV_DEPENDS:=+PACKAGE_kmod-cfg80211:libnl-tiny
  118. define Package/hostapd/Default
  119. SECTION:=net
  120. CATEGORY:=Network
  121. SUBMENU:=WirelessAPD
  122. TITLE:=IEEE 802.1x Authenticator
  123. URL:=http://hostap.epitest.fi/
  124. DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
  125. EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
  126. USERID:=network=101:network=101
  127. PROVIDES:=hostapd
  128. CONFLICTS:=$(HOSTAPD_PROVIDERS)
  129. HOSTAPD_PROVIDERS+=$(1)
  130. endef
  131. define Package/hostapd
  132. $(call Package/hostapd/Default,$(1))
  133. TITLE+= (built-in full)
  134. VARIANT:=full-internal
  135. endef
  136. define Package/hostapd/description
  137. This package contains a full featured IEEE 802.1x/WPA/EAP/RADIUS
  138. Authenticator.
  139. endef
  140. define Package/hostapd-openssl
  141. $(call Package/hostapd/Default,$(1))
  142. TITLE+= (OpenSSL full)
  143. VARIANT:=full-openssl
  144. DEPENDS+=+PACKAGE_hostapd-openssl:libopenssl
  145. endef
  146. Package/hostapd-openssl/description = $(Package/hostapd/description)
  147. define Package/hostapd-wolfssl
  148. $(call Package/hostapd/Default,$(1))
  149. TITLE+= (wolfSSL full)
  150. VARIANT:=full-wolfssl
  151. DEPENDS+=+PACKAGE_hostapd-wolfssl:libwolfssl
  152. endef
  153. Package/hostapd-wolfssl/description = $(Package/hostapd/description)
  154. define Package/hostapd-mbedtls
  155. $(call Package/hostapd/Default,$(1))
  156. TITLE+= (mbedTLS full)
  157. VARIANT:=full-mbedtls
  158. DEPENDS+=+PACKAGE_hostapd-mbedtls:libmbedtls
  159. endef
  160. Package/hostapd-mbedtls/description = $(Package/hostapd/description)
  161. define Package/hostapd-basic
  162. $(call Package/hostapd/Default,$(1))
  163. TITLE+= (WPA-PSK, 11r, 11w)
  164. VARIANT:=basic
  165. endef
  166. define Package/hostapd-basic/description
  167. This package contains a basic IEEE 802.1x/WPA Authenticator with WPA-PSK, 802.11r and 802.11w support.
  168. endef
  169. define Package/hostapd-basic-openssl
  170. $(call Package/hostapd/Default,$(1))
  171. TITLE+= (WPA-PSK, 11r and 11w)
  172. VARIANT:=basic-openssl
  173. DEPENDS+=+PACKAGE_hostapd-basic-openssl:libopenssl
  174. endef
  175. define Package/hostapd-basic-openssl/description
  176. This package contains a basic IEEE 802.1x/WPA Authenticator with WPA-PSK, 802.11r and 802.11w support.
  177. endef
  178. define Package/hostapd-basic-wolfssl
  179. $(call Package/hostapd/Default,$(1))
  180. TITLE+= (WPA-PSK, 11r and 11w)
  181. VARIANT:=basic-wolfssl
  182. DEPENDS+=+PACKAGE_hostapd-basic-wolfssl:libwolfssl
  183. endef
  184. define Package/hostapd-basic-wolfssl/description
  185. This package contains a basic IEEE 802.1x/WPA Authenticator with WPA-PSK, 802.11r and 802.11w support.
  186. endef
  187. define Package/hostapd-basic-mbedtls
  188. $(call Package/hostapd/Default,$(1))
  189. TITLE+= (WPA-PSK, 11r and 11w)
  190. VARIANT:=basic-mbedtls
  191. DEPENDS+=+PACKAGE_hostapd-basic-mbedtls:libmbedtls
  192. endef
  193. define Package/hostapd-basic-mbedtls/description
  194. This package contains a basic IEEE 802.1x/WPA Authenticator with WPA-PSK, 802.11r and 802.11w support.
  195. endef
  196. define Package/hostapd-mini
  197. $(call Package/hostapd/Default,$(1))
  198. TITLE+= (WPA-PSK only)
  199. VARIANT:=mini
  200. endef
  201. define Package/hostapd-mini/description
  202. This package contains a minimal IEEE 802.1x/WPA Authenticator (WPA-PSK only).
  203. endef
  204. define Package/wpad/Default
  205. SECTION:=net
  206. CATEGORY:=Network
  207. SUBMENU:=WirelessAPD
  208. TITLE:=IEEE 802.1x Auth/Supplicant
  209. DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
  210. EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
  211. USERID:=network=101:network=101
  212. URL:=http://hostap.epitest.fi/
  213. PROVIDES:=hostapd wpa-supplicant
  214. CONFLICTS:=$(HOSTAPD_PROVIDERS) $(SUPPLICANT_PROVIDERS)
  215. HOSTAPD_PROVIDERS+=$(1)
  216. SUPPLICANT_PROVIDERS+=$(1)
  217. endef
  218. define Package/wpad
  219. $(call Package/wpad/Default,$(1))
  220. TITLE+= (built-in full)
  221. VARIANT:=wpad-full-internal
  222. endef
  223. define Package/wpad/description
  224. This package contains a full featured IEEE 802.1x/WPA/EAP/RADIUS
  225. Authenticator and Supplicant
  226. endef
  227. define Package/wpad-openssl
  228. $(call Package/wpad/Default,$(1))
  229. TITLE+= (OpenSSL full)
  230. VARIANT:=wpad-full-openssl
  231. DEPENDS+=+PACKAGE_wpad-openssl:libopenssl
  232. endef
  233. Package/wpad-openssl/description = $(Package/wpad/description)
  234. define Package/wpad-wolfssl
  235. $(call Package/wpad/Default,$(1))
  236. TITLE+= (wolfSSL full)
  237. VARIANT:=wpad-full-wolfssl
  238. DEPENDS+=+PACKAGE_wpad-wolfssl:libwolfssl
  239. endef
  240. Package/wpad-wolfssl/description = $(Package/wpad/description)
  241. define Package/wpad-mbedtls
  242. $(call Package/wpad/Default,$(1))
  243. TITLE+= (mbedTLS full)
  244. VARIANT:=wpad-full-mbedtls
  245. DEPENDS+=+PACKAGE_wpad-mbedtls:libmbedtls
  246. endef
  247. Package/wpad-mbedtls/description = $(Package/wpad/description)
  248. define Package/wpad-basic
  249. $(call Package/wpad/Default,$(1))
  250. TITLE+= (WPA-PSK, 11r, 11w)
  251. VARIANT:=wpad-basic
  252. endef
  253. define Package/wpad-basic/description
  254. This package contains a basic IEEE 802.1x/WPA Authenticator and Supplicant with WPA-PSK, 802.11r and 802.11w support.
  255. endef
  256. define Package/wpad-basic-openssl
  257. $(call Package/wpad/Default,$(1))
  258. TITLE+= (OpenSSL, 11r, 11w)
  259. VARIANT:=wpad-basic-openssl
  260. DEPENDS+=+PACKAGE_wpad-basic-openssl:libopenssl
  261. endef
  262. define Package/wpad-basic-openssl/description
  263. This package contains a basic IEEE 802.1x/WPA Authenticator and Supplicant with WPA-PSK, SAE (WPA3-Personal), 802.11r and 802.11w support.
  264. endef
  265. define Package/wpad-basic-wolfssl
  266. $(call Package/wpad/Default,$(1))
  267. TITLE+= (wolfSSL, 11r, 11w)
  268. VARIANT:=wpad-basic-wolfssl
  269. DEPENDS+=+PACKAGE_wpad-basic-wolfssl:libwolfssl
  270. endef
  271. define Package/wpad-basic-wolfssl/description
  272. This package contains a basic IEEE 802.1x/WPA Authenticator and Supplicant with WPA-PSK, SAE (WPA3-Personal), 802.11r and 802.11w support.
  273. endef
  274. define Package/wpad-basic-mbedtls
  275. $(call Package/wpad/Default,$(1))
  276. TITLE+= (mbedTLS, 11r, 11w)
  277. VARIANT:=wpad-basic-mbedtls
  278. DEPENDS+=+PACKAGE_wpad-basic-mbedtls:libmbedtls
  279. endef
  280. define Package/wpad-basic-mbedtls/description
  281. This package contains a basic IEEE 802.1x/WPA Authenticator and Supplicant with WPA-PSK, SAE (WPA3-Personal), 802.11r and 802.11w support.
  282. endef
  283. define Package/wpad-mini
  284. $(call Package/wpad/Default,$(1))
  285. TITLE+= (WPA-PSK only)
  286. VARIANT:=wpad-mini
  287. endef
  288. define Package/wpad-mini/description
  289. This package contains a minimal IEEE 802.1x/WPA Authenticator and Supplicant (WPA-PSK only).
  290. endef
  291. define Package/wpad-mesh
  292. $(call Package/wpad/Default,$(1))
  293. DEPENDS+=@PACKAGE_kmod-cfg80211 @(!TARGET_uml||BROKEN)
  294. PROVIDES+=wpa-supplicant-mesh wpad-mesh
  295. endef
  296. define Package/wpad-mesh/description
  297. This package contains a minimal IEEE 802.1x/WPA Authenticator and Supplicant (with 802.11s mesh and SAE support).
  298. endef
  299. define Package/wpad-mesh-openssl
  300. $(call Package/wpad-mesh,$(1))
  301. TITLE+= (OpenSSL, 11s, SAE)
  302. DEPENDS+=+PACKAGE_wpad-mesh-openssl:libopenssl
  303. VARIANT:=wpad-mesh-openssl
  304. endef
  305. Package/wpad-mesh-openssl/description = $(Package/wpad-mesh/description)
  306. define Package/wpad-mesh-wolfssl
  307. $(call Package/wpad-mesh,$(1))
  308. TITLE+= (wolfSSL, 11s, SAE)
  309. DEPENDS+=+PACKAGE_wpad-mesh-wolfssl:libwolfssl
  310. VARIANT:=wpad-mesh-wolfssl
  311. endef
  312. Package/wpad-mesh-wolfssl/description = $(Package/wpad-mesh/description)
  313. define Package/wpad-mesh-mbedtls
  314. $(call Package/wpad-mesh,$(1))
  315. TITLE+= (mbedTLS, 11s, SAE)
  316. DEPENDS+=+PACKAGE_wpad-mesh-mbedtls:libmbedtls
  317. VARIANT:=wpad-mesh-mbedtls
  318. endef
  319. Package/wpad-mesh-mbedtls/description = $(Package/wpad-mesh/description)
  320. define Package/wpa-supplicant/Default
  321. SECTION:=net
  322. CATEGORY:=Network
  323. SUBMENU:=WirelessAPD
  324. TITLE:=WPA Supplicant
  325. URL:=http://hostap.epitest.fi/wpa_supplicant/
  326. DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
  327. EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
  328. USERID:=network=101:network=101
  329. PROVIDES:=wpa-supplicant
  330. CONFLICTS:=$(SUPPLICANT_PROVIDERS)
  331. SUPPLICANT_PROVIDERS+=$(1)
  332. endef
  333. define Package/wpa-supplicant
  334. $(call Package/wpa-supplicant/Default,$(1))
  335. TITLE+= (built-in full)
  336. VARIANT:=supplicant-full-internal
  337. endef
  338. define Package/wpa-supplicant-openssl
  339. $(call Package/wpa-supplicant/Default,$(1))
  340. TITLE+= (OpenSSL full)
  341. VARIANT:=supplicant-full-openssl
  342. DEPENDS+=+PACKAGE_wpa-supplicant-openssl:libopenssl
  343. endef
  344. define Package/wpa-supplicant-wolfssl
  345. $(call Package/wpa-supplicant/Default,$(1))
  346. TITLE+= (wolfSSL full)
  347. VARIANT:=supplicant-full-wolfssl
  348. DEPENDS+=+PACKAGE_wpa-supplicant-wolfssl:libwolfssl
  349. endef
  350. define Package/wpa-supplicant-mbedtls
  351. $(call Package/wpa-supplicant/Default,$(1))
  352. TITLE+= (mbedTLS full)
  353. VARIANT:=supplicant-full-mbedtls
  354. DEPENDS+=+PACKAGE_wpa-supplicant-mbedtls:libmbedtls
  355. endef
  356. define Package/wpa-supplicant/config
  357. source "$(SOURCE)/Config.in"
  358. endef
  359. define Package/wpa-supplicant-p2p
  360. $(call Package/wpa-supplicant/Default,$(1))
  361. TITLE+= (Wi-Fi P2P support)
  362. DEPENDS+=@PACKAGE_kmod-cfg80211
  363. VARIANT:=supplicant-p2p-internal
  364. endef
  365. define Package/wpa-supplicant-mesh/Default
  366. $(call Package/wpa-supplicant/Default,$(1))
  367. DEPENDS+=@PACKAGE_kmod-cfg80211 @(!TARGET_uml||BROKEN)
  368. PROVIDES+=wpa-supplicant-mesh
  369. endef
  370. define Package/wpa-supplicant-mesh-openssl
  371. $(call Package/wpa-supplicant-mesh/Default,$(1))
  372. TITLE+= (OpenSSL, 11s, SAE)
  373. VARIANT:=supplicant-mesh-openssl
  374. DEPENDS+=+PACKAGE_wpa-supplicant-mesh-openssl:libopenssl
  375. endef
  376. define Package/wpa-supplicant-mesh-wolfssl
  377. $(call Package/wpa-supplicant-mesh/Default,$(1))
  378. TITLE+= (wolfSSL, 11s, SAE)
  379. VARIANT:=supplicant-mesh-wolfssl
  380. DEPENDS+=+PACKAGE_wpa-supplicant-mesh-wolfssl:libwolfssl
  381. endef
  382. define Package/wpa-supplicant-mesh-mbedtls
  383. $(call Package/wpa-supplicant-mesh/Default,$(1))
  384. TITLE+= (mbedTLS, 11s, SAE)
  385. VARIANT:=supplicant-mesh-mbedtls
  386. DEPENDS+=+PACKAGE_wpa-supplicant-mesh-mbedtls:libmbedtls
  387. endef
  388. define Package/wpa-supplicant-basic
  389. $(call Package/wpa-supplicant/Default,$(1))
  390. TITLE+= (11r, 11w)
  391. VARIANT:=supplicant-basic
  392. endef
  393. define Package/wpa-supplicant-mini
  394. $(call Package/wpa-supplicant/Default,$(1))
  395. TITLE+= (minimal)
  396. VARIANT:=supplicant-mini
  397. endef
  398. define Package/hostapd-common
  399. TITLE:=hostapd/wpa_supplicant common support files
  400. SECTION:=net
  401. CATEGORY:=Network
  402. SUBMENU:=WirelessAPD
  403. endef
  404. define Package/hostapd-utils
  405. SECTION:=net
  406. CATEGORY:=Network
  407. SUBMENU:=WirelessAPD
  408. TITLE:=IEEE 802.1x Authenticator (utils)
  409. URL:=http://hostap.epitest.fi/
  410. DEPENDS:=@$(subst $(space),||,$(foreach pkg,$(HOSTAPD_PROVIDERS),PACKAGE_$(pkg)))
  411. VARIANT:=*
  412. endef
  413. define Package/hostapd-utils/description
  414. This package contains a command line utility to control the
  415. IEEE 802.1x/WPA/EAP/RADIUS Authenticator.
  416. endef
  417. define Package/wpa-cli
  418. SECTION:=net
  419. CATEGORY:=Network
  420. SUBMENU:=WirelessAPD
  421. DEPENDS:=@$(subst $(space),||,$(foreach pkg,$(SUPPLICANT_PROVIDERS),PACKAGE_$(pkg)))
  422. TITLE:=WPA Supplicant command line control utility
  423. VARIANT:=*
  424. endef
  425. define Package/eapol-test/Default
  426. TITLE:=802.1x auth test utility
  427. SECTION:=net
  428. SUBMENU:=WirelessAPD
  429. CATEGORY:=Network
  430. DEPENDS:=$(DRV_DEPENDS) $(CORE_DEPENDS)
  431. endef
  432. define Package/eapol-test
  433. $(call Package/eapol-test/Default,$(1))
  434. TITLE+= (built-in full)
  435. VARIANT:=supplicant-full-internal
  436. endef
  437. define Package/eapol-test-openssl
  438. $(call Package/eapol-test/Default,$(1))
  439. TITLE+= (OpenSSL full)
  440. VARIANT:=supplicant-full-openssl
  441. CONFLICTS:=$(filter-out eapol-test-openssl ,$(EAPOL_TEST_PROVIDERS))
  442. DEPENDS+=+PACKAGE_eapol-test-openssl:libopenssl
  443. PROVIDES:=eapol-test
  444. endef
  445. define Package/eapol-test-wolfssl
  446. $(call Package/eapol-test/Default,$(1))
  447. TITLE+= (wolfSSL full)
  448. VARIANT:=supplicant-full-wolfssl
  449. CONFLICTS:=$(filter-out eapol-test-openssl ,$(filter-out eapol-test-wolfssl ,$(EAPOL_TEST_PROVIDERS)))
  450. DEPENDS+=+PACKAGE_eapol-test-wolfssl:libwolfssl
  451. PROVIDES:=eapol-test
  452. endef
  453. define Package/eapol-test-mbedtls
  454. $(call Package/eapol-test/Default,$(1))
  455. TITLE+= (mbedTLS full)
  456. VARIANT:=supplicant-full-mbedtls
  457. CONFLICTS:=$(filter-out eapol-test-openssl ,$(filter-out eapol-test-mbedtls ,$(EAPOL_TEST_PROVIDERS)))
  458. DEPENDS+=+PACKAGE_eapol-test-mbedtls:libmbedtls
  459. PROVIDES:=eapol-test
  460. endef
  461. ifneq ($(wildcard $(PKG_BUILD_DIR)/.config_*),$(subst .configured_,.config_,$(STAMP_CONFIGURED)))
  462. define Build/Configure/rebuild
  463. $(FIND) $(PKG_BUILD_DIR) -name \*.o -or -name \*.a | $(XARGS) rm -f
  464. rm -f $(PKG_BUILD_DIR)/hostapd/hostapd
  465. rm -f $(PKG_BUILD_DIR)/wpa_supplicant/wpa_supplicant
  466. rm -f $(PKG_BUILD_DIR)/.config_*
  467. touch $(subst .configured_,.config_,$(STAMP_CONFIGURED))
  468. endef
  469. endif
  470. define Build/Configure
  471. $(Build/Configure/rebuild)
  472. $(if $(wildcard ./files/hostapd-$(CONFIG_VARIANT).config), \
  473. $(CP) ./files/hostapd-$(CONFIG_VARIANT).config $(PKG_BUILD_DIR)/hostapd/.config \
  474. )
  475. $(if $(wildcard ./files/wpa_supplicant-$(CONFIG_VARIANT).config), \
  476. $(CP) ./files/wpa_supplicant-$(CONFIG_VARIANT).config $(PKG_BUILD_DIR)/wpa_supplicant/.config
  477. )
  478. endef
  479. TARGET_CPPFLAGS := \
  480. -I$(STAGING_DIR)/usr/include/libnl-tiny \
  481. -I$(PKG_BUILD_DIR)/src/crypto \
  482. $(TARGET_CPPFLAGS) \
  483. -DCONFIG_LIBNL20 \
  484. -D_GNU_SOURCE \
  485. $(if $(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY))
  486. TARGET_LDFLAGS += -lubox -lubus -lblobmsg_json -lucode
  487. ifdef CONFIG_PACKAGE_kmod-cfg80211
  488. TARGET_LDFLAGS += -lm -lnl-tiny
  489. endif
  490. ifdef CONFIG_WPA_ENABLE_WEP
  491. DRIVER_MAKEOPTS += CONFIG_WEP=y
  492. endif
  493. define Build/RunMake
  494. CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
  495. $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/$(1) \
  496. $(TARGET_CONFIGURE_OPTS) \
  497. $(DRIVER_MAKEOPTS) \
  498. LIBS="$(TARGET_LDFLAGS)" \
  499. LIBS_c="$(TARGET_LDFLAGS_C)" \
  500. AR="$(TARGET_CROSS)gcc-ar" \
  501. BCHECK= \
  502. $(if $(findstring s,$(OPENWRT_VERBOSE)),V=1) \
  503. $(2)
  504. endef
  505. define Build/Compile/wpad
  506. echo ` \
  507. $(call Build/RunMake,hostapd,-s MULTICALL=1 dump_cflags); \
  508. $(call Build/RunMake,wpa_supplicant,-s MULTICALL=1 dump_cflags) | \
  509. sed -e 's,-n ,,g' -e 's^$(TARGET_CFLAGS)^^' \
  510. ` > $(PKG_BUILD_DIR)/.cflags
  511. sed -i 's/"/\\"/g' $(PKG_BUILD_DIR)/.cflags
  512. +$(call Build/RunMake,hostapd, \
  513. CFLAGS="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \
  514. MULTICALL=1 \
  515. hostapd_cli hostapd_multi.a \
  516. )
  517. +$(call Build/RunMake,wpa_supplicant, \
  518. CFLAGS="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \
  519. MULTICALL=1 \
  520. wpa_cli wpa_supplicant_multi.a \
  521. )
  522. +export MAKEFLAGS="$(MAKE_JOBSERVER)"; $(TARGET_CC) -o $(PKG_BUILD_DIR)/wpad \
  523. $(TARGET_CFLAGS) \
  524. ./files/multicall.c \
  525. $(PKG_BUILD_DIR)/hostapd/hostapd_multi.a \
  526. $(PKG_BUILD_DIR)/wpa_supplicant/wpa_supplicant_multi.a \
  527. $(TARGET_LDFLAGS)
  528. endef
  529. define Build/Compile/hostapd
  530. +$(call Build/RunMake,hostapd, \
  531. hostapd hostapd_cli \
  532. )
  533. endef
  534. define Build/Compile/supplicant
  535. +$(call Build/RunMake,wpa_supplicant, \
  536. wpa_cli wpa_supplicant \
  537. )
  538. endef
  539. define Build/Compile/supplicant-full-internal
  540. +$(call Build/RunMake,wpa_supplicant, \
  541. eapol_test \
  542. )
  543. endef
  544. define Build/Compile/supplicant-full-openssl
  545. +$(call Build/RunMake,wpa_supplicant, \
  546. eapol_test \
  547. )
  548. endef
  549. define Build/Compile/supplicant-full-wolfssl
  550. +$(call Build/RunMake,wpa_supplicant, \
  551. eapol_test \
  552. )
  553. endef
  554. define Build/Compile/supplicant-full-mbedtls
  555. +$(call Build/RunMake,wpa_supplicant, \
  556. eapol_test \
  557. )
  558. endef
  559. define Build/Compile
  560. $(Build/Compile/$(LOCAL_TYPE))
  561. $(Build/Compile/$(BUILD_VARIANT))
  562. endef
  563. define Install/hostapd/full
  564. $(INSTALL_DIR) $(1)/etc/init.d $(1)/etc/config $(1)/etc/radius
  565. ln -sf hostapd $(1)/usr/sbin/hostapd-radius
  566. $(INSTALL_BIN) ./files/radius.init $(1)/etc/init.d/radius
  567. $(INSTALL_DATA) ./files/radius.config $(1)/etc/config/radius
  568. $(INSTALL_DATA) ./files/radius.clients $(1)/etc/radius/clients
  569. $(INSTALL_DATA) ./files/radius.users $(1)/etc/radius/users
  570. endef
  571. define Package/hostapd-full/conffiles
  572. /etc/config/radius
  573. /etc/radius
  574. endef
  575. ifeq ($(CONFIG_VARIANT),full)
  576. Package/wpad-mesh-openssl/conffiles = $(Package/hostapd-full/conffiles)
  577. Package/wpad-mesh-wolfssl/conffiles = $(Package/hostapd-full/conffiles)
  578. Package/wpad-mesh-mbedtls/conffiles = $(Package/hostapd-full/conffiles)
  579. Package/wpad/conffiles = $(Package/hostapd-full/conffiles)
  580. Package/wpad-openssl/conffiles = $(Package/hostapd-full/conffiles)
  581. Package/wpad-wolfssl/conffiles = $(Package/hostapd-full/conffiles)
  582. Package/wpad-mbedtls/conffiles = $(Package/hostapd-full/conffiles)
  583. Package/hostapd/conffiles = $(Package/hostapd-full/conffiles)
  584. Package/hostapd-openssl/conffiles = $(Package/hostapd-full/conffiles)
  585. Package/hostapd-wolfssl/conffiles = $(Package/hostapd-full/conffiles)
  586. Package/hostapd-mbedtls/conffiles = $(Package/hostapd-full/conffiles)
  587. endif
  588. define Install/hostapd
  589. $(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/share/hostap
  590. $(INSTALL_DATA) ./files/hostapd.uc $(1)/usr/share/hostap/
  591. $(if $(findstring full,$(CONFIG_VARIANT)),$(Install/hostapd/full))
  592. endef
  593. define Install/supplicant
  594. $(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/share/hostap
  595. $(INSTALL_DATA) ./files/wpa_supplicant.uc $(1)/usr/share/hostap/
  596. endef
  597. define Package/hostapd-common/install
  598. $(INSTALL_DIR) $(1)/etc/capabilities $(1)/etc/rc.button $(1)/etc/hotplug.d/ieee80211 $(1)/etc/init.d $(1)/lib/netifd $(1)/usr/share/acl.d $(1)/usr/share/hostap
  599. $(INSTALL_BIN) ./files/dhcp-get-server.sh $(1)/lib/netifd/dhcp-get-server.sh
  600. $(INSTALL_DATA) ./files/hostapd.sh $(1)/lib/netifd/hostapd.sh
  601. $(INSTALL_BIN) ./files/wpad.init $(1)/etc/init.d/wpad
  602. $(INSTALL_BIN) ./files/wps-hotplug.sh $(1)/etc/rc.button/wps
  603. $(INSTALL_DATA) ./files/wpad_acl.json $(1)/usr/share/acl.d
  604. $(INSTALL_DATA) ./files/wpad.json $(1)/etc/capabilities
  605. $(INSTALL_DATA) ./files/common.uc $(1)/usr/share/hostap/
  606. $(INSTALL_DATA) ./files/wdev.uc $(1)/usr/share/hostap/
  607. endef
  608. define Package/hostapd/install
  609. $(call Install/hostapd,$(1))
  610. $(INSTALL_BIN) $(PKG_BUILD_DIR)/hostapd/hostapd $(1)/usr/sbin/
  611. endef
  612. Package/hostapd-basic/install = $(Package/hostapd/install)
  613. Package/hostapd-basic-openssl/install = $(Package/hostapd/install)
  614. Package/hostapd-basic-wolfssl/install = $(Package/hostapd/install)
  615. Package/hostapd-basic-mbedtls/install = $(Package/hostapd/install)
  616. Package/hostapd-mini/install = $(Package/hostapd/install)
  617. Package/hostapd-openssl/install = $(Package/hostapd/install)
  618. Package/hostapd-wolfssl/install = $(Package/hostapd/install)
  619. Package/hostapd-mbedtls/install = $(Package/hostapd/install)
  620. ifneq ($(LOCAL_TYPE),supplicant)
  621. define Package/hostapd-utils/install
  622. $(INSTALL_DIR) $(1)/usr/sbin
  623. $(INSTALL_BIN) $(PKG_BUILD_DIR)/hostapd/hostapd_cli $(1)/usr/sbin/
  624. endef
  625. endif
  626. define Package/wpad/install
  627. $(call Install/hostapd,$(1))
  628. $(call Install/supplicant,$(1))
  629. $(INSTALL_BIN) $(PKG_BUILD_DIR)/wpad $(1)/usr/sbin/
  630. $(LN) wpad $(1)/usr/sbin/hostapd
  631. $(LN) wpad $(1)/usr/sbin/wpa_supplicant
  632. endef
  633. Package/wpad-basic/install = $(Package/wpad/install)
  634. Package/wpad-basic-openssl/install = $(Package/wpad/install)
  635. Package/wpad-basic-wolfssl/install = $(Package/wpad/install)
  636. Package/wpad-basic-mbedtls/install = $(Package/wpad/install)
  637. Package/wpad-mini/install = $(Package/wpad/install)
  638. Package/wpad-openssl/install = $(Package/wpad/install)
  639. Package/wpad-wolfssl/install = $(Package/wpad/install)
  640. Package/wpad-mbedtls/install = $(Package/wpad/install)
  641. Package/wpad-mesh-openssl/install = $(Package/wpad/install)
  642. Package/wpad-mesh-wolfssl/install = $(Package/wpad/install)
  643. Package/wpad-mesh-mbedtls/install = $(Package/wpad/install)
  644. define Package/wpa-supplicant/install
  645. $(call Install/supplicant,$(1))
  646. $(INSTALL_BIN) $(PKG_BUILD_DIR)/wpa_supplicant/wpa_supplicant $(1)/usr/sbin/
  647. endef
  648. Package/wpa-supplicant-basic/install = $(Package/wpa-supplicant/install)
  649. Package/wpa-supplicant-mini/install = $(Package/wpa-supplicant/install)
  650. Package/wpa-supplicant-p2p/install = $(Package/wpa-supplicant/install)
  651. Package/wpa-supplicant-openssl/install = $(Package/wpa-supplicant/install)
  652. Package/wpa-supplicant-wolfssl/install = $(Package/wpa-supplicant/install)
  653. Package/wpa-supplicant-mbedtls/install = $(Package/wpa-supplicant/install)
  654. Package/wpa-supplicant-mesh-openssl/install = $(Package/wpa-supplicant/install)
  655. Package/wpa-supplicant-mesh-wolfssl/install = $(Package/wpa-supplicant/install)
  656. Package/wpa-supplicant-mesh-mbedtls/install = $(Package/wpa-supplicant/install)
  657. ifneq ($(LOCAL_TYPE),hostapd)
  658. define Package/wpa-cli/install
  659. $(INSTALL_DIR) $(1)/usr/sbin
  660. $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/wpa_cli $(1)/usr/sbin/
  661. endef
  662. endif
  663. ifeq ($(BUILD_VARIANT),supplicant-full-internal)
  664. define Package/eapol-test/install
  665. $(INSTALL_DIR) $(1)/usr/sbin
  666. $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/eapol_test $(1)/usr/sbin/
  667. endef
  668. endif
  669. ifeq ($(BUILD_VARIANT),supplicant-full-openssl)
  670. define Package/eapol-test-openssl/install
  671. $(INSTALL_DIR) $(1)/usr/sbin
  672. $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/eapol_test $(1)/usr/sbin/
  673. endef
  674. endif
  675. ifeq ($(BUILD_VARIANT),supplicant-full-wolfssl)
  676. define Package/eapol-test-wolfssl/install
  677. $(INSTALL_DIR) $(1)/usr/sbin
  678. $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/eapol_test $(1)/usr/sbin/
  679. endef
  680. endif
  681. ifeq ($(BUILD_VARIANT),supplicant-full-mbedtls)
  682. define Package/eapol-test-mbedtls/install
  683. $(INSTALL_DIR) $(1)/usr/sbin
  684. $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/eapol_test $(1)/usr/sbin/
  685. endef
  686. endif
  687. # Build hostapd-common before its dependents, to avoid
  688. # spurious rebuilds when building multiple variants.
  689. $(eval $(call BuildPackage,hostapd-common))
  690. $(eval $(call BuildPackage,hostapd))
  691. $(eval $(call BuildPackage,hostapd-basic))
  692. $(eval $(call BuildPackage,hostapd-basic-openssl))
  693. $(eval $(call BuildPackage,hostapd-basic-wolfssl))
  694. $(eval $(call BuildPackage,hostapd-basic-mbedtls))
  695. $(eval $(call BuildPackage,hostapd-mini))
  696. $(eval $(call BuildPackage,hostapd-openssl))
  697. $(eval $(call BuildPackage,hostapd-wolfssl))
  698. $(eval $(call BuildPackage,hostapd-mbedtls))
  699. $(eval $(call BuildPackage,wpad))
  700. $(eval $(call BuildPackage,wpad-mesh-openssl))
  701. $(eval $(call BuildPackage,wpad-mesh-wolfssl))
  702. $(eval $(call BuildPackage,wpad-mesh-mbedtls))
  703. $(eval $(call BuildPackage,wpad-basic))
  704. $(eval $(call BuildPackage,wpad-basic-openssl))
  705. $(eval $(call BuildPackage,wpad-basic-wolfssl))
  706. $(eval $(call BuildPackage,wpad-basic-mbedtls))
  707. $(eval $(call BuildPackage,wpad-mini))
  708. $(eval $(call BuildPackage,wpad-openssl))
  709. $(eval $(call BuildPackage,wpad-wolfssl))
  710. $(eval $(call BuildPackage,wpad-mbedtls))
  711. $(eval $(call BuildPackage,wpa-supplicant))
  712. $(eval $(call BuildPackage,wpa-supplicant-mesh-openssl))
  713. $(eval $(call BuildPackage,wpa-supplicant-mesh-wolfssl))
  714. $(eval $(call BuildPackage,wpa-supplicant-mesh-mbedtls))
  715. $(eval $(call BuildPackage,wpa-supplicant-basic))
  716. $(eval $(call BuildPackage,wpa-supplicant-mini))
  717. $(eval $(call BuildPackage,wpa-supplicant-p2p))
  718. $(eval $(call BuildPackage,wpa-supplicant-openssl))
  719. $(eval $(call BuildPackage,wpa-supplicant-wolfssl))
  720. $(eval $(call BuildPackage,wpa-supplicant-mbedtls))
  721. $(eval $(call BuildPackage,wpa-cli))
  722. $(eval $(call BuildPackage,hostapd-utils))
  723. $(eval $(call BuildPackage,eapol-test))
  724. $(eval $(call BuildPackage,eapol-test-openssl))
  725. $(eval $(call BuildPackage,eapol-test-wolfssl))
  726. $(eval $(call BuildPackage,eapol-test-mbedtls))