1 # Copyright (C) 2006-2014 OpenWrt.org
3 # This is free software, licensed under the GNU General Public License v2.
4 # See /LICENSE for more information.
7 include $(TOPDIR
)/rules.mk
12 PKG_SOURCE_URL
:=http
://w1.fi
/hostap.git
14 PKG_SOURCE_DATE
:=2018-05-21
15 PKG_SOURCE_VERSION
:=62566bc23d041e88f8e35933d5fd8c2fd0f7cf2a
16 PKG_MIRROR_HASH
:=f234b24f9471ae9cb34460feec6d6614641691544101535673595272c91448eb
18 PKG_MAINTAINER
:=Felix Fietkau
<nbd@nbd.name
>
19 PKG_LICENSE
:=BSD-3-Clause
20 PKG_CPE_ID
:=cpe
:/a
:w1.fi
:hostapd
24 PKG_CONFIG_DEPENDS
:= \
25 CONFIG_WPA_SUPPLICANT_NO_TIMESTAMP_CHECK \
26 CONFIG_PACKAGE_kmod-ath9k \
27 CONFIG_PACKAGE_kmod-cfg80211 \
28 CONFIG_PACKAGE_hostapd \
29 CONFIG_PACKAGE_hostapd-mini \
30 CONFIG_WPA_RFKILL_SUPPORT \
31 CONFIG_DRIVER_WEXT_SUPPORT \
32 CONFIG_DRIVER_11N_SUPPORT \
33 CONFIG_DRIVER_11AC_SUPPORT \
35 EAPOL_TEST_PROVIDERS
:=eapol-test eapol-test-openssl eapol-test-wolfssl
37 SUPPLICANT_PROVIDERS
:=
41 $(if
$(findstring wpad
,$(BUILD_VARIANT
)),wpad
, \
42 $(if
$(findstring supplicant
,$(BUILD_VARIANT
)),supplicant
, \
46 LOCAL_AND_LIB_VARIANT
=$(patsubst hostapd-
%,%,\
48 $(patsubst supplicant-
%,%,\
52 LOCAL_VARIANT
=$(patsubst %-internal
,%,\
53 $(patsubst %-openssl
,%,\
54 $(patsubst %-wolfssl
,%,\
55 $(LOCAL_AND_LIB_VARIANT
)\
59 $(if
$(findstring openssl
,$(LOCAL_AND_LIB_VARIANT
)),openssl
,\
60 $(if
$(findstring wolfssl
,$(LOCAL_AND_LIB_VARIANT
)),wolfssl
,\
64 CONFIG_VARIANT
:=$(LOCAL_VARIANT
)
65 ifeq ($(LOCAL_VARIANT
),mesh
)
69 PKG_BUILD_DIR
=$(BUILD_DIR
)/$(PKG_NAME
)-$(BUILD_VARIANT
)/$(PKG_NAME
)-$(PKG_VERSION
)
71 include $(INCLUDE_DIR
)/package.mk
73 STAMP_CONFIGURED
:=$(STAMP_CONFIGURED
)_
$(CONFIG_WPA_MSG_MIN_PRIORITY
)
76 ifneq ($(CONFIG_DRIVER_11N_SUPPORT
),)
80 ifneq ($(CONFIG_DRIVER_11AC_SUPPORT
),)
81 HOSTAPD_IEEE80211AC
:=y
85 CONFIG_ACS
=$(CONFIG_PACKAGE_kmod-cfg80211
) \
86 CONFIG_DRIVER_NL80211
=$(CONFIG_PACKAGE_kmod-cfg80211
) \
87 CONFIG_IEEE80211N
=$(HOSTAPD_IEEE80211N
) \
88 CONFIG_IEEE80211AC
=$(HOSTAPD_IEEE80211AC
) \
89 CONFIG_DRIVER_WEXT
=$(CONFIG_DRIVER_WEXT_SUPPORT
) \
94 ifeq ($(LOCAL_VARIANT
),full
)
95 DRIVER_MAKEOPTS
+= CONFIG_IEEE80211W
=$(CONFIG_DRIVER_11W_SUPPORT
)
98 ifeq ($(LOCAL_VARIANT
),full
)
99 ifeq ($(SSL_VARIANT
),openssl
)
100 DRIVER_MAKEOPTS
+= CONFIG_TLS
=openssl
101 TARGET_LDFLAGS
+= -lcrypto
-lssl
103 ifeq ($(SSL_VARIANT
),wolfssl
)
104 DRIVER_MAKEOPTS
+= CONFIG_TLS
=wolfssl CONFIG_WPS_NFC
=1
105 TARGET_LDFLAGS
+= -lwolfssl
109 ifneq ($(LOCAL_TYPE
),hostapd
)
110 ifeq ($(LOCAL_VARIANT
),mesh
)
111 ifeq ($(SSL_VARIANT
),openssl
)
112 DRIVER_MAKEOPTS
+= CONFIG_TLS
=openssl CONFIG_AP
=y CONFIG_SAE
=y CONFIG_MESH
=y
113 TARGET_LDFLAGS
+= -lcrypto
-lssl
115 ifeq ($(SSL_VARIANT
),wolfssl
)
116 DRIVER_MAKEOPTS
+= CONFIG_TLS
=wolfssl CONFIG_WPS_NFC
=1 CONFIG_AP
=y CONFIG_SAE
=y CONFIG_MESH
=y
117 TARGET_LDFLAGS
+= -lwolfssl
121 ifdef CONFIG_WPA_SUPPLICANT_NO_TIMESTAMP_CHECK
122 TARGET_CFLAGS
+= -DNO_TIMESTAMP_CHECK
124 ifdef CONFIG_WPA_RFKILL_SUPPORT
125 DRIVER_MAKEOPTS
+= NEED_RFKILL
=y
128 CONFIG_DRIVER_ROBOSWITCH
=$(CONFIG_PACKAGE_kmod-switch
)
131 ifdef CONFIG_USE_GLIBC
132 TARGET_LDFLAGS
+= -lrt
133 TARGET_LDFLAGS_C
+= -lrt
136 DRV_DEPENDS
:=+PACKAGE_kmod-cfg80211
:libnl-tiny
139 define Package
/hostapd
/Default
142 TITLE
:=IEEE
802.1x Authenticator
143 URL
:=http
://hostap.epitest.fi
/
144 DEPENDS
:=$(DRV_DEPENDS
) +hostapd-common
+libubus
146 CONFLICTS
:=$(HOSTAPD_PROVIDERS
)
147 HOSTAPD_PROVIDERS
+=$(1)
150 define Package
/hostapd
151 $(call Package
/hostapd
/Default
,$(1))
153 VARIANT
:=full-internal
156 define Package
/hostapd
/description
157 This package contains a full featured IEEE
802.1x
/WPA
/EAP
/RADIUS
161 define Package
/hostapd-openssl
162 $(call Package
/hostapd
/Default
,$(1))
164 VARIANT
:=full-openssl
168 Package
/hostapd-openssl
/description
= $(Package
/hostapd
/description
)
170 define Package
/hostapd-wolfssl
171 $(call Package
/hostapd
/Default
,$(1))
173 VARIANT
:=full-wolfssl
177 Package
/hostapd-wolfssl
/description
= $(Package
/hostapd
/description
)
179 define Package
/hostapd-mini
180 $(call Package
/hostapd
/Default
,$(1))
181 TITLE
+= (WPA-PSK only
)
185 define Package
/hostapd-mini
/description
186 This package contains a minimal IEEE
802.1x
/WPA Authenticator
(WPA-PSK only
).
190 define Package
/wpad
/Default
193 TITLE
:=IEEE
802.1x Authenticator
/Supplicant
194 DEPENDS
:=$(DRV_DEPENDS
) +hostapd-common
+libubus
195 URL
:=http
://hostap.epitest.fi
/
196 PROVIDES
:=hostapd wpa-supplicant
197 CONFLICTS
:=$(HOSTAPD_PROVIDERS
) $(SUPPLICANT_PROVIDERS
)
198 HOSTAPD_PROVIDERS
+=$(1)
199 SUPPLICANT_PROVIDERS
+=$(1)
203 $(call Package
/wpad
/Default
,$(1))
205 VARIANT
:=wpad-full-internal
208 define Package
/wpad
/description
209 This package contains a full featured IEEE
802.1x
/WPA
/EAP
/RADIUS
210 Authenticator and Supplicant
213 define Package
/wpad-openssl
214 $(call Package
/wpad
/Default
,$(1))
216 VARIANT
:=wpad-full-openssl
220 Package
/wpad-openssl
/description
= $(Package
/wpad
/description
)
222 define Package
/wpad-wolfssl
223 $(call Package
/wpad
/Default
,$(1))
225 VARIANT
:=wpad-full-wolfssl
229 Package
/wpad-wolfssl
/description
= $(Package
/wpad
/description
)
231 define Package
/wpad-mini
232 $(call Package
/wpad
/Default
,$(1))
233 TITLE
+= (WPA-PSK only
)
237 define Package
/wpad-mini
/description
238 This package contains a minimal IEEE
802.1x
/WPA Authenticator and Supplicant
(WPA-PSK only
).
241 define Package
/wpad-mesh
242 $(call Package
/wpad
/Default
,$(1))
243 TITLE
+= (with
802.11s mesh and SAE support
)
244 DEPENDS
+=@PACKAGE_kmod-cfg80211 @
(!TARGET_uml||BROKEN
)
245 PROVIDES
+=wpa-supplicant-mesh wpad-mesh
248 define Package
/wpad-mesh
/description
249 This package contains a minimal IEEE
802.1x
/WPA Authenticator and Supplicant
(with
802.11s mesh and SAE support
).
252 define Package
/wpad-mesh-openssl
253 $(call Package
/wpad-mesh
,$(1))
255 VARIANT
:=wpad-mesh-openssl
258 Package
/wpad-mesh-openssl
/description
= $(Package
/wpad-mesh
/description
)
260 define Package
/wpad-mesh-wolfssl
261 $(call Package
/wpad-mesh
,$(1))
263 VARIANT
:=wpad-mesh-wolfssl
266 Package
/wpad-mesh-wolfssl
/description
= $(Package
/wpad-mesh
/description
)
269 define Package
/wpa-supplicant
/Default
272 TITLE
:=WPA Supplicant
273 URL
:=http
://hostap.epitest.fi
/wpa_supplicant
/
274 DEPENDS
:=$(DRV_DEPENDS
)
275 PROVIDES
:=wpa-supplicant
276 CONFLICTS
:=$(SUPPLICANT_PROVIDERS
)
277 SUPPLICANT_PROVIDERS
+=$(1)
280 define Package
/wpa-supplicant
281 $(call Package
/wpa-supplicant
/Default
,$(1))
282 VARIANT
:=supplicant-full-internal
285 define Package
/wpa-supplicant-openssl
286 $(call Package
/wpa-supplicant
/Default
,$(1))
287 VARIANT
:=supplicant-full-openssl
291 define Package
/wpa-supplicant-wolfssl
292 $(call Package
/wpa-supplicant
/Default
,$(1))
293 VARIANT
:=supplicant-full-wolfssl
297 define Package
/wpa-supplicant
/config
298 source
"$(SOURCE)/Config.in"
301 define Package
/wpa-supplicant-p2p
302 $(call Package
/wpa-supplicant
/Default
,$(1))
303 TITLE
+= (with Wi-Fi P2P support
)
304 DEPENDS
+=@PACKAGE_kmod-cfg80211
307 define Package
/wpa-supplicant-mesh
/Default
308 $(call Package
/wpa-supplicant
/Default
,$(1))
309 TITLE
+= (with
802.11s and SAE
)
310 DEPENDS
+=@PACKAGE_kmod-cfg80211 @
(!TARGET_uml||BROKEN
)
311 PROVIDES
+=wpa-supplicant-mesh
314 define Package
/wpa-supplicant-mesh-openssl
315 $(call Package
/wpa-supplicant-mesh
/Default
,$(1))
316 VARIANT
:=supplicant-mesh-openssl
320 define Package
/wpa-supplicant-mesh-wolfssl
321 $(call Package
/wpa-supplicant-mesh
/Default
,$(1))
322 VARIANT
:=supplicant-mesh-wolfssl
326 define Package
/wpa-supplicant-mini
327 $(call Package
/wpa-supplicant
/Default
,$(1))
328 TITLE
+= (minimal version
)
329 VARIANT
:=supplicant-mini
333 define Package
/hostapd-common
334 TITLE
:=hostapd
/wpa_supplicant common support files
339 define Package
/hostapd-utils
342 TITLE
:=IEEE
802.1x Authenticator
(utils
)
343 URL
:=http
://hostap.epitest.fi
/
344 DEPENDS
:=@
$(subst $(space
),||
,$(foreach pkg
,$(HOSTAPD_PROVIDERS
),PACKAGE_
$(pkg
)))
347 define Package
/hostapd-utils
/description
348 This package contains a command line utility to control the
349 IEEE
802.1x
/WPA
/EAP
/RADIUS Authenticator.
352 define Package
/wpa-cli
355 DEPENDS
:=@
$(subst $(space
),||
,$(foreach pkg
,$(SUPPLICANT_PROVIDERS
),PACKAGE_
$(pkg
)))
356 TITLE
:=WPA Supplicant command line control utility
359 define Package
/eapol-test
360 TITLE
:=802.1x authentication
test utility
363 VARIANT
:=supplicant-full-internal
364 DEPENDS
:=$(DRV_DEPENDS
)
367 define Package
/eapol-test-openssl
368 TITLE
:=802.1x authentication
test utility
371 VARIANT
:=supplicant-full-openssl
372 CONFLICTS
:=$(filter-out eapol-test-openssl
,$(EAPOL_TEST_PROVIDERS
))
373 DEPENDS
:=$(DRV_DEPENDS
) +libopenssl
377 define Package
/eapol-test-wolfssl
378 TITLE
:=802.1x authentication
test utility
381 VARIANT
:=supplicant-full-wolfssl
382 CONFLICTS
:=$(filter-out eapol-test-openssl
,$(filter-out eapol-test-wolfssl
,$(EAPOL_TEST_PROVIDERS
)))
383 DEPENDS
:=$(DRV_DEPENDS
) +libwolfssl
388 ifneq ($(wildcard $(PKG_BUILD_DIR
)/.config_
*),$(subst .configured_
,.config_
,$(STAMP_CONFIGURED
)))
389 define Build
/Configure
/rebuild
390 $(FIND
) $(PKG_BUILD_DIR
) -name \
*.o
-or
-name \
*.a |
$(XARGS
) rm -f
391 rm -f
$(PKG_BUILD_DIR
)/hostapd
/hostapd
392 rm -f
$(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_supplicant
393 rm -f
$(PKG_BUILD_DIR
)/.config_
*
394 touch
$(subst .configured_
,.config_
,$(STAMP_CONFIGURED
))
398 define Build
/Configure
399 $(Build
/Configure
/rebuild
)
400 $(if
$(wildcard .
/files
/hostapd-
$(CONFIG_VARIANT
).config
), \
401 $(CP
) .
/files
/hostapd-
$(CONFIG_VARIANT
).config
$(PKG_BUILD_DIR
)/hostapd
/.config \
403 $(CP
) .
/files
/wpa_supplicant-
$(CONFIG_VARIANT
).config
$(PKG_BUILD_DIR
)/wpa_supplicant
/.config
407 -I
$(STAGING_DIR
)/usr
/include/libnl-tiny \
408 -I
$(PKG_BUILD_DIR
)/src
/crypto \
412 $(if
$(CONFIG_WPA_MSG_MIN_PRIORITY
),-DCONFIG_MSG_MIN_PRIORITY
=$(CONFIG_WPA_MSG_MIN_PRIORITY
))
414 TARGET_CFLAGS
+= -ffunction-sections
-fdata-sections
-flto
415 TARGET_LDFLAGS
+= -Wl
,--gc-sections
-flto
=jobserver
-fuse-linker-plugin
416 ifeq ($(findstring supplicant
,$(BUILD_VARIANT
)),)
417 TARGET_LDFLAGS
+= -lubox
-lubus
420 ifdef CONFIG_PACKAGE_kmod-cfg80211
421 TARGET_LDFLAGS
+= -lm
-lnl-tiny
425 CFLAGS
="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
426 $(MAKE
) $(PKG_JOBS
) -C
$(PKG_BUILD_DIR
)/$(1) \
427 $(TARGET_CONFIGURE_OPTS
) \
429 LIBS
="$(TARGET_LDFLAGS)" \
430 LIBS_c
="$(TARGET_LDFLAGS_C)" \
431 AR
="$(TARGET_CROSS)gcc-ar" \
436 define Build
/Compile
/wpad
438 $(call Build/RunMake,hostapd,-s MULTICALL=1 dump_cflags); \
439 $(call Build/RunMake,wpa_supplicant,-s MULTICALL=1 dump_cflags) | \
440 sed -e 's,-n ,,g' -e 's^$(TARGET_CFLAGS)^^' \
441 ` > $(PKG_BUILD_DIR
)/.
cflags
442 sed
-i
's/"/\\"/g' $(PKG_BUILD_DIR
)/.
cflags
443 +$(call Build
/RunMake
,hostapd
, \
444 CFLAGS
="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \
446 hostapd_cli hostapd_multi.a \
448 +$(call Build
/RunMake
,wpa_supplicant
, \
449 CFLAGS
="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \
451 wpa_cli wpa_supplicant_multi.a \
453 +export MAKEFLAGS
="$(MAKE_JOBSERVER)"; $(TARGET_CC
) -o
$(PKG_BUILD_DIR
)/wpad \
455 .
/files
/multicall.c \
456 $(PKG_BUILD_DIR
)/hostapd
/hostapd_multi.a \
457 $(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_supplicant_multi.a \
461 define Build
/Compile
/hostapd
462 +$(call Build
/RunMake
,hostapd
, \
463 hostapd hostapd_cli \
467 define Build
/Compile
/supplicant
468 +$(call Build
/RunMake
,wpa_supplicant
, \
469 wpa_cli wpa_supplicant \
473 define Build
/Compile
/supplicant-full-internal
474 +$(call Build
/RunMake
,wpa_supplicant
, \
479 define Build
/Compile
/supplicant-full-openssl
480 +$(call Build
/RunMake
,wpa_supplicant
, \
485 define Build
/Compile
/supplicant-full-wolfssl
486 +$(call Build
/RunMake
,wpa_supplicant
, \
492 $(Build
/Compile
/$(LOCAL_TYPE
))
493 $(Build
/Compile
/$(BUILD_VARIANT
))
496 define Install
/hostapd
497 $(INSTALL_DIR
) $(1)/usr
/sbin
500 define Install
/supplicant
501 $(INSTALL_DIR
) $(1)/usr
/sbin
504 define Package
/hostapd-common
/install
505 $(INSTALL_DIR
) $(1)/lib
/netifd
506 $(INSTALL_DATA
) .
/files
/hostapd.sh
$(1)/lib
/netifd
/hostapd.sh
509 define Package
/hostapd
/install
510 $(call Install
/hostapd
,$(1))
511 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/hostapd
/hostapd
$(1)/usr
/sbin
/
513 Package
/hostapd-mini
/install = $(Package
/hostapd
/install)
514 Package
/hostapd-openssl
/install = $(Package
/hostapd
/install)
515 Package
/hostapd-wolfssl
/install = $(Package
/hostapd
/install)
517 ifneq ($(LOCAL_TYPE
),supplicant
)
518 define Package
/hostapd-utils
/install
519 $(INSTALL_DIR
) $(1)/usr
/sbin
$(1)/etc
/rc.button
520 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/hostapd
/hostapd_cli
$(1)/usr
/sbin
/
521 $(INSTALL_BIN
) .
/files
/wps-hotplug.sh
$(1)/etc
/rc.button
/wps
525 define Package
/wpad
/install
526 $(call Install
/hostapd
,$(1))
527 $(call Install
/supplicant
,$(1))
528 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/wpad
$(1)/usr
/sbin
/
529 $(LN
) wpad
$(1)/usr
/sbin
/hostapd
530 $(LN
) wpad
$(1)/usr
/sbin
/wpa_supplicant
532 Package
/wpad-mini
/install = $(Package
/wpad
/install)
533 Package
/wpad-openssl
/install = $(Package
/wpad
/install)
534 Package
/wpad-wolfssl
/install = $(Package
/wpad
/install)
535 Package
/wpad-mesh-openssl
/install = $(Package
/wpad
/install)
536 Package
/wpad-mesh-wolfssl
/install = $(Package
/wpad
/install)
538 define Package
/wpa-supplicant
/install
539 $(call Install
/supplicant
,$(1))
540 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_supplicant
$(1)/usr
/sbin
/
542 Package
/wpa-supplicant-mini
/install = $(Package
/wpa-supplicant
/install)
543 Package
/wpa-supplicant-p2p
/install = $(Package
/wpa-supplicant
/install)
544 Package
/wpa-supplicant-openssl
/install = $(Package
/wpa-supplicant
/install)
545 Package
/wpa-supplicant-wolfssl
/install = $(Package
/wpa-supplicant
/install)
546 Package
/wpa-supplicant-mesh-openssl
/install = $(Package
/wpa-supplicant
/install)
547 Package
/wpa-supplicant-mesh-wolfssl
/install = $(Package
/wpa-supplicant
/install)
549 ifneq ($(LOCAL_TYPE
),hostapd
)
550 define Package
/wpa-cli
/install
551 $(INSTALL_DIR
) $(1)/usr
/sbin
552 $(CP
) $(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_cli
$(1)/usr
/sbin
/
556 ifeq ($(BUILD_VARIANT
),supplicant-full-internal
)
557 define Package
/eapol-test
/install
558 $(INSTALL_DIR
) $(1)/usr
/sbin
559 $(CP
) $(PKG_BUILD_DIR
)/wpa_supplicant
/eapol_test
$(1)/usr
/sbin
/
563 ifeq ($(BUILD_VARIANT
),supplicant-full-openssl
)
564 define Package
/eapol-test-openssl
/install
565 $(INSTALL_DIR
) $(1)/usr
/sbin
566 $(CP
) $(PKG_BUILD_DIR
)/wpa_supplicant
/eapol_test
$(1)/usr
/sbin
/
570 ifeq ($(BUILD_VARIANT
),supplicant-full-wolfssl
)
571 define Package
/eapol-test-wolfssl
/install
572 $(INSTALL_DIR
) $(1)/usr
/sbin
573 $(CP
) $(PKG_BUILD_DIR
)/wpa_supplicant
/eapol_test
$(1)/usr
/sbin
/
577 $(eval
$(call BuildPackage
,hostapd
))
578 $(eval
$(call BuildPackage
,hostapd-mini
))
579 $(eval
$(call BuildPackage
,hostapd-openssl
))
580 $(eval
$(call BuildPackage
,hostapd-wolfssl
))
581 $(eval
$(call BuildPackage
,wpad
))
582 $(eval
$(call BuildPackage
,wpad-mesh-openssl
))
583 $(eval
$(call BuildPackage
,wpad-mesh-wolfssl
))
584 $(eval
$(call BuildPackage
,wpad-mini
))
585 $(eval
$(call BuildPackage
,wpad-openssl
))
586 $(eval
$(call BuildPackage
,wpad-wolfssl
))
587 $(eval
$(call BuildPackage
,wpa-supplicant
))
588 $(eval
$(call BuildPackage
,wpa-supplicant-mesh-openssl
))
589 $(eval
$(call BuildPackage
,wpa-supplicant-mesh-wolfssl
))
590 $(eval
$(call BuildPackage
,wpa-supplicant-mini
))
591 $(eval
$(call BuildPackage
,wpa-supplicant-p2p
))
592 $(eval
$(call BuildPackage
,wpa-supplicant-openssl
))
593 $(eval
$(call BuildPackage
,wpa-supplicant-wolfssl
))
594 $(eval
$(call BuildPackage
,wpa-cli
))
595 $(eval
$(call BuildPackage
,hostapd-utils
))
596 $(eval
$(call BuildPackage
,hostapd-common
))
597 $(eval
$(call BuildPackage
,eapol-test
))
598 $(eval
$(call BuildPackage
,eapol-test-openssl
))
599 $(eval
$(call BuildPackage
,eapol-test-wolfssl
))