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