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