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