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
36 $(if
$(findstring wpad
,$(BUILD_VARIANT
)),wpad
, \
37 $(if
$(findstring supplicant
,$(BUILD_VARIANT
)),supplicant
, \
40 LOCAL_VARIANT
=$(patsubst wpad-
%,%,$(patsubst supplicant-
%,%,$(BUILD_VARIANT
)))
41 CONFIG_VARIANT
:=$(LOCAL_VARIANT
)
42 ifeq ($(LOCAL_VARIANT
),mesh
)
46 ifneq ($(LOCAL_TYPE
),hostapd
)
47 ifeq ($(LOCAL_VARIANT
),full
)
48 PKG_CONFIG_DEPENDS
+= \
49 CONFIG_WPA_SUPPLICANT_INTERNAL \
50 CONFIG_WPA_SUPPLICANT_OPENSSL \
51 CONFIG_WPA_SUPPLICANT_WOLFSSL
53 ifeq ($(LOCAL_VARIANT
),mesh
)
54 PKG_CONFIG_DEPENDS
+= \
55 CONFIG_WPA_SUPPLICANT_OPENSSL \
56 CONFIG_WPA_SUPPLICANT_WOLFSSL
60 PKG_BUILD_DIR
=$(BUILD_DIR
)/$(PKG_NAME
)-$(BUILD_VARIANT
)/$(PKG_NAME
)-$(PKG_VERSION
)
62 include $(INCLUDE_DIR
)/package.mk
64 STAMP_CONFIGURED
:=$(STAMP_CONFIGURED
)_
$(CONFIG_WPA_MSG_MIN_PRIORITY
)
66 ifneq ($(CONFIG_DRIVER_11N_SUPPORT
),)
70 ifneq ($(CONFIG_DRIVER_11AC_SUPPORT
),)
71 HOSTAPD_IEEE80211AC
:=y
75 CONFIG_ACS
=$(CONFIG_PACKAGE_kmod-cfg80211
) \
76 CONFIG_DRIVER_NL80211
=$(CONFIG_PACKAGE_kmod-cfg80211
) \
77 CONFIG_IEEE80211N
=$(HOSTAPD_IEEE80211N
) \
78 CONFIG_IEEE80211AC
=$(HOSTAPD_IEEE80211AC
) \
79 CONFIG_DRIVER_WEXT
=$(CONFIG_DRIVER_WEXT_SUPPORT
) \
81 ifeq ($(LOCAL_VARIANT
),full
)
82 DRIVER_MAKEOPTS
+= CONFIG_IEEE80211W
=$(CONFIG_DRIVER_11W_SUPPORT
)
85 ifneq ($(LOCAL_TYPE
),hostapd
)
86 ifdef CONFIG_WPA_SUPPLICANT_OPENSSL
87 ifeq ($(LOCAL_VARIANT
),full
)
88 DRIVER_MAKEOPTS
+= CONFIG_TLS
=openssl
89 TARGET_LDFLAGS
+= -lcrypto
-lssl
92 ifdef CONFIG_WPA_SUPPLICANT_WOLFSSL
93 ifeq ($(LOCAL_VARIANT
),full
)
94 DRIVER_MAKEOPTS
+= CONFIG_TLS
=wolfssl CONFIG_WPS_NFC
=1
95 TARGET_LDFLAGS
+= -lwolfssl
99 ifeq ($(LOCAL_VARIANT
),mesh
)
100 ifndef CONFIG_WPA_SUPPLICANT_WOLFSSL
101 DRIVER_MAKEOPTS
+= CONFIG_TLS
=openssl CONFIG_AP
=y CONFIG_SAE
=y CONFIG_MESH
=y
102 TARGET_LDFLAGS
+= -lcrypto
-lssl
104 DRIVER_MAKEOPTS
+= CONFIG_TLS
=wolfssl CONFIG_WPS_NFC
=1 CONFIG_AP
=y CONFIG_SAE
=y CONFIG_MESH
=y
105 TARGET_LDFLAGS
+= -lwolfssl
109 ifdef CONFIG_WPA_SUPPLICANT_NO_TIMESTAMP_CHECK
110 TARGET_CFLAGS
+= -DNO_TIMESTAMP_CHECK
112 ifdef CONFIG_WPA_RFKILL_SUPPORT
113 DRIVER_MAKEOPTS
+= NEED_RFKILL
=y
116 CONFIG_DRIVER_ROBOSWITCH
=$(CONFIG_PACKAGE_kmod-switch
)
119 ifdef CONFIG_USE_GLIBC
120 TARGET_LDFLAGS
+= -lrt
121 TARGET_LDFLAGS_C
+= -lrt
124 DRV_DEPENDS
:=+PACKAGE_kmod-cfg80211
:libnl-tiny
126 define Package
/hostapd
/Default
129 TITLE
:=IEEE
802.1x Authenticator
130 URL
:=http
://hostap.epitest.fi
/
131 DEPENDS
:=$(DRV_DEPENDS
) +hostapd-common
+libubus
134 define Package
/hostapd
135 $(call Package
/hostapd
/Default
)
138 CONFLICTS
:=wpad wpad-mini wpad-mesh
141 define Package
/hostapd
/description
142 This package contains a full featured IEEE
802.1x
/WPA
/EAP
/RADIUS
146 define Package
/hostapd-mini
147 $(call Package
/hostapd
/Default
)
148 TITLE
+= (WPA-PSK only
)
150 CONFLICTS
:=wpad wpad-mini wpad-mesh
153 define Package
/hostapd-mini
/description
154 This package contains a minimal IEEE
802.1x
/WPA Authenticator
(WPA-PSK only
).
157 define Package
/hostapd-utils
158 $(call Package
/hostapd
/Default
)
160 DEPENDS
:=@PACKAGE_hostapd||PACKAGE_hostapd-mini||PACKAGE_wpad||PACKAGE_wpad-mesh||PACKAGE_wpad-mini
163 define Package
/hostapd-utils
/description
164 This package contains a command line utility to control the
165 IEEE
802.1x
/WPA
/EAP
/RADIUS Authenticator.
168 define Package
/wpad
/Default
171 TITLE
:=IEEE
802.1x Authenticator
/Supplicant
172 DEPENDS
:=$(DRV_DEPENDS
) +hostapd-common
+libubus
173 URL
:=http
://hostap.epitest.fi
/
177 $(call Package
/wpad
/Default
)
179 DEPENDS
+=+WPA_SUPPLICANT_OPENSSL
:libopenssl
+WPA_SUPPLICANT_WOLFSSL
:libwolfssl
183 define Package
/wpad
/description
184 This package contains a full featured IEEE
802.1x
/WPA
/EAP
/RADIUS
185 Authenticator and Supplicant
188 define Package
/wpad-mini
189 $(call Package
/wpad
/Default
)
190 TITLE
+= (WPA-PSK only
)
194 define Package
/wpad-mini
/description
195 This package contains a minimal IEEE
802.1x
/WPA Authenticator and Supplicant
(WPA-PSK only
).
198 define Package
/wpad-mesh
199 $(call Package
/wpad
/Default
)
200 TITLE
+= (with
802.11s mesh and SAE support
)
201 DEPENDS
:=$(DRV_DEPENDS
) +libubus
+WPA_SUPPLICANT_OPENSSL
:libopenssl
+WPA_SUPPLICANT_INTERNAL
:libopenssl
+WPA_SUPPLICANT_WOLFSSL
:libwolfssl @PACKAGE_kmod-cfg80211 @
(!TARGET_uml||BROKEN
)
205 define Package
/wpad-mesh
/description
206 This package contains a minimal IEEE
802.1x
/WPA Authenticator and Supplicant
(with
802.11s mesh and SAE support
).
209 define Package
/wpa-supplicant
212 TITLE
:=WPA Supplicant
213 URL
:=http
://hostap.epitest.fi
/wpa_supplicant
/
214 DEPENDS
:=$(DRV_DEPENDS
) +WPA_SUPPLICANT_OPENSSL
:libopenssl
+WPA_SUPPLICANT_WOLFSSL
:libwolfssl
215 CONFLICTS
:=wpad wpad-mini wpad-mesh
216 VARIANT
:=supplicant-full
219 define Package
/wpa-supplicant
/config
220 source
"$(SOURCE)/Config.in"
223 define Package
/wpa-supplicant-p2p
224 $(Package
/wpa-supplicant
)
225 TITLE
:=WPA Supplicant
(with Wi-Fi P2P support
)
226 DEPENDS
:=$(DRV_DEPENDS
) @PACKAGE_kmod-cfg80211
227 CONFLICTS
:=wpad wpad-mini wpad-mesh
228 VARIANT
:=supplicant-p2p
231 define Package
/wpa-supplicant-mesh
232 $(Package
/wpa-supplicant
)
233 TITLE
:=WPA Supplicant
(with
802.11s and SAE
)
234 DEPENDS
:=$(DRV_DEPENDS
) +WPA_SUPPLICANT_OPENSSL
:libopenssl
+WPA_SUPPLICANT_INTERNAL
:libopenssl
+WPA_SUPPLICANT_WOLFSSL
:libwolfssl @PACKAGE_kmod-cfg80211 @
(!TARGET_uml||BROKEN
)
235 CONFLICTS
:=wpad wpad-mesh wpad-mesh
236 VARIANT
:=supplicant-mesh
239 define Package
/wpa-supplicant-mini
240 $(Package
/wpa-supplicant
)
241 TITLE
:=WPA Supplicant
(minimal version
)
242 DEPENDS
:=$(DRV_DEPENDS
)
243 CONFLICTS
:=wpad wpad-mini wpad-mesh
244 VARIANT
:=supplicant-mini
247 define Package
/wpa-cli
250 DEPENDS
:=@PACKAGE_wpa-supplicant||PACKAGE_wpa-supplicant-p2p||PACKAGE_wpad-mini||PACKAGE_wpad||PACKAGE_wpad-mesh
251 TITLE
:=WPA Supplicant command line control utility
254 define Package
/hostapd-common
255 TITLE
:=hostapd
/wpa_supplicant common support files
260 define Package
/eapol-test
261 TITLE
:=802.1x authentication
test utility
264 VARIANT
:=supplicant-full
265 DEPENDS
:=$(DRV_DEPENDS
) +WPA_SUPPLICANT_OPENSSL
:libopenssl
+WPA_SUPPLICANT_WOLFSSL
:libwolfssl
269 ifneq ($(wildcard $(PKG_BUILD_DIR
)/.config_
*),$(subst .configured_
,.config_
,$(STAMP_CONFIGURED
)))
270 define Build
/Configure
/rebuild
271 $(FIND
) $(PKG_BUILD_DIR
) -name \
*.o
-or
-name \
*.a |
$(XARGS
) rm -f
272 rm -f
$(PKG_BUILD_DIR
)/hostapd
/hostapd
273 rm -f
$(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_supplicant
274 rm -f
$(PKG_BUILD_DIR
)/.config_
*
275 touch
$(subst .configured_
,.config_
,$(STAMP_CONFIGURED
))
279 define Build
/Configure
280 $(Build
/Configure
/rebuild
)
281 $(if
$(wildcard .
/files
/hostapd-
$(CONFIG_VARIANT
).config
), \
282 $(CP
) .
/files
/hostapd-
$(CONFIG_VARIANT
).config
$(PKG_BUILD_DIR
)/hostapd
/.config \
284 $(CP
) .
/files
/wpa_supplicant-
$(CONFIG_VARIANT
).config
$(PKG_BUILD_DIR
)/wpa_supplicant
/.config
288 -I
$(STAGING_DIR
)/usr
/include/libnl-tiny \
289 -I
$(PKG_BUILD_DIR
)/src
/crypto \
293 $(if
$(CONFIG_WPA_MSG_MIN_PRIORITY
),-DCONFIG_MSG_MIN_PRIORITY
=$(CONFIG_WPA_MSG_MIN_PRIORITY
))
295 TARGET_CFLAGS
+= -ffunction-sections
-fdata-sections
296 TARGET_LDFLAGS
+= -Wl
,--gc-sections
297 ifeq ($(findstring supplicant
,$(BUILD_VARIANT
)),)
298 TARGET_LDFLAGS
+= -lubox
-lubus
301 ifdef CONFIG_PACKAGE_kmod-cfg80211
302 TARGET_LDFLAGS
+= -lm
-lnl-tiny
306 CFLAGS
="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
307 $(MAKE
) $(PKG_JOBS
) -C
$(PKG_BUILD_DIR
)/$(1) \
308 $(TARGET_CONFIGURE_OPTS
) \
310 LIBS
="$(TARGET_LDFLAGS)" \
311 LIBS_c
="$(TARGET_LDFLAGS_C)" \
316 define Build
/Compile
/wpad
318 $(call Build/RunMake,hostapd,-s MULTICALL=1 dump_cflags); \
319 $(call Build/RunMake,wpa_supplicant,-s MULTICALL=1 dump_cflags) | \
320 sed -e 's,-n ,,g' -e 's^$(TARGET_CFLAGS)^^' \
321 ` > $(PKG_BUILD_DIR
)/.
cflags
322 sed
-i
's/"/\\"/g' $(PKG_BUILD_DIR
)/.
cflags
323 +$(call Build
/RunMake
,hostapd
, \
324 CFLAGS
="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \
326 hostapd_cli hostapd_multi.a \
328 +$(call Build
/RunMake
,wpa_supplicant
, \
329 CFLAGS
="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \
331 wpa_cli wpa_supplicant_multi.a \
333 $(TARGET_CC
) -o
$(PKG_BUILD_DIR
)/wpad \
335 .
/files
/multicall.c \
336 $(PKG_BUILD_DIR
)/hostapd
/hostapd_multi.a \
337 $(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_supplicant_multi.a \
341 define Build
/Compile
/hostapd
342 +$(call Build
/RunMake
,hostapd
, \
343 hostapd hostapd_cli \
347 define Build
/Compile
/supplicant
348 +$(call Build
/RunMake
,wpa_supplicant
, \
349 wpa_cli wpa_supplicant \
353 define Build
/Compile
/supplicant-full
354 +$(call Build
/RunMake
,wpa_supplicant
, \
360 $(Build
/Compile
/$(LOCAL_TYPE
))
361 $(Build
/Compile
/$(BUILD_VARIANT
))
364 define Install
/hostapd
365 $(INSTALL_DIR
) $(1)/usr
/sbin
368 define Install
/supplicant
369 $(INSTALL_DIR
) $(1)/usr
/sbin
372 define Package
/hostapd-common
/install
373 $(INSTALL_DIR
) $(1)/lib
/netifd
374 $(INSTALL_DATA
) .
/files
/hostapd.sh
$(1)/lib
/netifd
/hostapd.sh
377 define Package
/hostapd
/install
378 $(call Install
/hostapd
,$(1))
379 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/hostapd
/hostapd
$(1)/usr
/sbin
/
381 Package
/hostapd-mini
/install = $(Package
/hostapd
/install)
383 ifneq ($(LOCAL_TYPE
),supplicant
)
384 define Package
/hostapd-utils
/install
385 $(INSTALL_DIR
) $(1)/usr
/sbin
$(1)/etc
/rc.button
386 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/hostapd
/hostapd_cli
$(1)/usr
/sbin
/
387 $(INSTALL_BIN
) .
/files
/wps-hotplug.sh
$(1)/etc
/rc.button
/wps
391 define Package
/wpad
/install
392 $(call Install
/hostapd
,$(1))
393 $(call Install
/supplicant
,$(1))
394 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/wpad
$(1)/usr
/sbin
/
395 $(LN
) wpad
$(1)/usr
/sbin
/hostapd
396 $(LN
) wpad
$(1)/usr
/sbin
/wpa_supplicant
398 Package
/wpad-mini
/install = $(Package
/wpad
/install)
399 Package
/wpad-mesh
/install = $(Package
/wpad
/install)
401 define Package
/wpa-supplicant
/install
402 $(call Install
/supplicant
,$(1))
403 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_supplicant
$(1)/usr
/sbin
/
405 Package
/wpa-supplicant-mini
/install = $(Package
/wpa-supplicant
/install)
406 Package
/wpa-supplicant-p2p
/install = $(Package
/wpa-supplicant
/install)
407 Package
/wpa-supplicant-mesh
/install = $(Package
/wpa-supplicant
/install)
409 ifneq ($(LOCAL_TYPE
),hostapd
)
410 define Package
/wpa-cli
/install
411 $(INSTALL_DIR
) $(1)/usr
/sbin
412 $(CP
) $(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_cli
$(1)/usr
/sbin
/
416 ifeq ($(BUILD_VARIANT
),supplicant-full
)
417 define Package
/eapol-test
/install
418 $(INSTALL_DIR
) $(1)/usr
/sbin
419 $(CP
) $(PKG_BUILD_DIR
)/wpa_supplicant
/eapol_test
$(1)/usr
/sbin
/
423 $(eval
$(call BuildPackage
,hostapd
))
424 $(eval
$(call BuildPackage
,hostapd-mini
))
425 $(eval
$(call BuildPackage
,wpad
))
426 $(eval
$(call BuildPackage
,wpad-mesh
))
427 $(eval
$(call BuildPackage
,wpad-mini
))
428 $(eval
$(call BuildPackage
,wpa-supplicant
))
429 $(eval
$(call BuildPackage
,wpa-supplicant-mesh
))
430 $(eval
$(call BuildPackage
,wpa-supplicant-mini
))
431 $(eval
$(call BuildPackage
,wpa-supplicant-p2p
))
432 $(eval
$(call BuildPackage
,wpa-cli
))
433 $(eval
$(call BuildPackage
,hostapd-utils
))
434 $(eval
$(call BuildPackage
,hostapd-common
))
435 $(eval
$(call BuildPackage
,eapol-test
))