Makefile 26 KB

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