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