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