Makefile 25 KB

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