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
:=2017-08-24
15 PKG_SOURCE_VERSION
:=c2d4f2eb5dba0b5c5a8c5805823084da958a9b52
16 PKG_MIRROR_HASH
:=c6ad9a73fc1ae0ba8bc48f71cf14394b274bc9c2c1d1b53c2775f08312597e74
18 PKG_MAINTAINER
:=Felix Fietkau
<nbd@nbd.name
>
19 PKG_LICENSE
:=BSD-3-Clause
23 PKG_CONFIG_DEPENDS
:= \
24 CONFIG_WPA_SUPPLICANT_NO_TIMESTAMP_CHECK \
25 CONFIG_PACKAGE_kmod-ath9k \
26 CONFIG_PACKAGE_kmod-cfg80211 \
27 CONFIG_PACKAGE_hostapd \
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
35 $(if
$(findstring wpad
,$(BUILD_VARIANT
)),wpad
, \
36 $(if
$(findstring supplicant
,$(BUILD_VARIANT
)),supplicant
, \
39 LOCAL_VARIANT
=$(patsubst wpad-
%,%,$(patsubst supplicant-
%,%,$(BUILD_VARIANT
)))
40 CONFIG_VARIANT
:=$(LOCAL_VARIANT
)
41 ifeq ($(LOCAL_VARIANT
),mesh
)
45 ifneq ($(LOCAL_TYPE
),hostapd
)
46 ifeq ($(LOCAL_VARIANT
),full
)
47 PKG_CONFIG_DEPENDS
+= \
48 CONFIG_WPA_SUPPLICANT_INTERNAL \
49 CONFIG_WPA_SUPPLICANT_OPENSSL
53 PKG_BUILD_DIR
=$(BUILD_DIR
)/$(PKG_NAME
)-$(BUILD_VARIANT
)/$(PKG_NAME
)-$(PKG_VERSION
)
55 include $(INCLUDE_DIR
)/package.mk
57 STAMP_CONFIGURED
:=$(STAMP_CONFIGURED
)_
$(CONFIG_WPA_MSG_MIN_PRIORITY
)
59 ifneq ($(CONFIG_DRIVER_11N_SUPPORT
),)
63 ifneq ($(CONFIG_DRIVER_11AC_SUPPORT
),)
64 HOSTAPD_IEEE80211AC
:=y
68 CONFIG_ACS
=$(CONFIG_PACKAGE_kmod-cfg80211
) \
69 CONFIG_DRIVER_NL80211
=$(CONFIG_PACKAGE_kmod-cfg80211
) \
70 CONFIG_IEEE80211N
=$(HOSTAPD_IEEE80211N
) \
71 CONFIG_IEEE80211AC
=$(HOSTAPD_IEEE80211AC
) \
72 CONFIG_DRIVER_WEXT
=$(CONFIG_DRIVER_WEXT_SUPPORT
) \
74 ifeq ($(LOCAL_VARIANT
),full
)
75 DRIVER_MAKEOPTS
+= CONFIG_IEEE80211W
=$(CONFIG_DRIVER_11W_SUPPORT
)
78 ifneq ($(LOCAL_TYPE
),hostapd
)
79 ifdef CONFIG_WPA_SUPPLICANT_OPENSSL
80 ifeq ($(LOCAL_VARIANT
),full
)
81 DRIVER_MAKEOPTS
+= CONFIG_TLS
=openssl
82 TARGET_LDFLAGS
+= -lcrypto
-lssl
85 ifeq ($(LOCAL_VARIANT
),mesh
)
86 DRIVER_MAKEOPTS
+= CONFIG_TLS
=openssl CONFIG_AP
=y CONFIG_SAE
=y CONFIG_MESH
=y
87 TARGET_LDFLAGS
+= -lcrypto
-lssl
89 ifdef CONFIG_WPA_SUPPLICANT_NO_TIMESTAMP_CHECK
90 TARGET_CFLAGS
+= -DNO_TIMESTAMP_CHECK
92 ifdef CONFIG_WPA_RFKILL_SUPPORT
93 DRIVER_MAKEOPTS
+= NEED_RFKILL
=y
96 CONFIG_DRIVER_ROBOSWITCH
=$(CONFIG_PACKAGE_kmod-switch
)
99 ifdef CONFIG_USE_GLIBC
100 TARGET_LDFLAGS
+= -lrt
101 TARGET_LDFLAGS_C
+= -lrt
104 DRV_DEPENDS
:=+PACKAGE_kmod-cfg80211
:libnl-tiny
106 define Package
/hostapd
/Default
109 TITLE
:=IEEE
802.1x Authenticator
110 URL
:=http
://hostap.epitest.fi
/
111 DEPENDS
:=$(DRV_DEPENDS
) +hostapd-common
+libubus
114 define Package
/hostapd
115 $(call Package
/hostapd
/Default
)
118 CONFLICTS
:=wpad wpad-mini wpad-mesh
121 define Package
/hostapd
/description
122 This package contains a full featured IEEE
802.1x
/WPA
/EAP
/RADIUS
126 define Package
/hostapd-mini
127 $(call Package
/hostapd
/Default
)
128 TITLE
+= (WPA-PSK only
)
130 CONFLICTS
:=wpad wpad-mini wpad-mesh
133 define Package
/hostapd-mini
/description
134 This package contains a minimal IEEE
802.1x
/WPA Authenticator
(WPA-PSK only
).
137 define Package
/hostapd-utils
138 $(call Package
/hostapd
/Default
)
140 DEPENDS
:=@PACKAGE_hostapd||PACKAGE_hostapd-mini||PACKAGE_wpad||PACKAGE_wpad-mesh||PACKAGE_wpad-mini
143 define Package
/hostapd-utils
/description
144 This package contains a command line utility to control the
145 IEEE
802.1x
/WPA
/EAP
/RADIUS Authenticator.
148 define Package
/wpad
/Default
151 TITLE
:=IEEE
802.1x Authenticator
/Supplicant
152 DEPENDS
:=$(DRV_DEPENDS
) +hostapd-common
+libubus
153 URL
:=http
://hostap.epitest.fi
/
157 $(call Package
/wpad
/Default
)
159 DEPENDS
+=+WPA_SUPPLICANT_OPENSSL
:libopenssl
163 define Package
/wpad
/description
164 This package contains a full featured IEEE
802.1x
/WPA
/EAP
/RADIUS
165 Authenticator and Supplicant
168 define Package
/wpad-mini
169 $(call Package
/wpad
/Default
)
170 TITLE
+= (WPA-PSK only
)
174 define Package
/wpad-mini
/description
175 This package contains a minimal IEEE
802.1x
/WPA Authenticator and Supplicant
(WPA-PSK only
).
178 define Package
/wpad-mesh
179 $(call Package
/wpad
/Default
)
180 TITLE
+= (with
802.11s mesh and SAE support
)
181 DEPENDS
:=$(DRV_DEPENDS
) +libubus
+PACKAGE_wpad-mesh
:libopenssl @PACKAGE_kmod-cfg80211 @
(!TARGET_uml||BROKEN
)
185 define Package
/wpad-mesh
/description
186 This package contains a minimal IEEE
802.1x
/WPA Authenticator and Supplicant
(with
802.11s mesh and SAE support
).
189 define Package
/wpa-supplicant
192 TITLE
:=WPA Supplicant
193 URL
:=http
://hostap.epitest.fi
/wpa_supplicant
/
194 DEPENDS
:=$(DRV_DEPENDS
) +WPA_SUPPLICANT_OPENSSL
:libopenssl
195 CONFLICTS
:=wpad wpad-mini wpad-mesh
196 VARIANT
:=supplicant-full
199 define Package
/wpa-supplicant
/config
200 source
"$(SOURCE)/Config.in"
203 define Package
/wpa-supplicant-p2p
204 $(Package
/wpa-supplicant
)
205 TITLE
:=WPA Supplicant
(with Wi-Fi P2P support
)
206 DEPENDS
:=$(DRV_DEPENDS
) @PACKAGE_kmod-cfg80211
207 CONFLICTS
:=wpad wpad-mini wpad-mesh
208 VARIANT
:=supplicant-p2p
211 define Package
/wpa-supplicant-mesh
212 $(Package
/wpa-supplicant
)
213 TITLE
:=WPA Supplicant
(with
802.11s and SAE
)
214 DEPENDS
:=$(DRV_DEPENDS
) +PACKAGE_wpa-supplicant-mesh
:libopenssl @PACKAGE_kmod-cfg80211 @
(!TARGET_uml||BROKEN
)
215 CONFLICTS
:=wpad wpad-mesh wpad-mesh
216 VARIANT
:=supplicant-mesh
219 define Package
/wpa-supplicant-mini
220 $(Package
/wpa-supplicant
)
221 TITLE
:=WPA Supplicant
(minimal version
)
222 DEPENDS
:=$(DRV_DEPENDS
)
223 CONFLICTS
:=wpad wpad-mini wpad-mesh
224 VARIANT
:=supplicant-mini
227 define Package
/wpa-cli
230 DEPENDS
:=@PACKAGE_wpa-supplicant||PACKAGE_wpa-supplicant-p2p||PACKAGE_wpad-mini||PACKAGE_wpad||PACKAGE_wpad-mesh
231 TITLE
:=WPA Supplicant command line control utility
234 define Package
/hostapd-common
235 TITLE
:=hostapd
/wpa_supplicant common support files
240 define Package
/eapol-test
241 TITLE
:=802.1x authentication
test utility
244 VARIANT
:=supplicant-full
245 DEPENDS
:=$(DRV_DEPENDS
) +WPA_SUPPLICANT_OPENSSL
:libopenssl
249 ifneq ($(wildcard $(PKG_BUILD_DIR
)/.config_
*),$(subst .configured_
,.config_
,$(STAMP_CONFIGURED
)))
250 define Build
/Configure
/rebuild
251 $(FIND
) $(PKG_BUILD_DIR
) -name \
*.o
-or
-name \
*.a |
$(XARGS
) rm -f
252 rm -f
$(PKG_BUILD_DIR
)/hostapd
/hostapd
253 rm -f
$(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_supplicant
254 rm -f
$(PKG_BUILD_DIR
)/.config_
*
255 touch
$(subst .configured_
,.config_
,$(STAMP_CONFIGURED
))
259 define Build
/Configure
260 $(Build
/Configure
/rebuild
)
261 $(if
$(wildcard .
/files
/hostapd-
$(CONFIG_VARIANT
).config
), \
262 $(CP
) .
/files
/hostapd-
$(CONFIG_VARIANT
).config
$(PKG_BUILD_DIR
)/hostapd
/.config \
264 $(CP
) .
/files
/wpa_supplicant-
$(CONFIG_VARIANT
).config
$(PKG_BUILD_DIR
)/wpa_supplicant
/.config
268 -I
$(STAGING_DIR
)/usr
/include/libnl-tiny \
269 -I
$(PKG_BUILD_DIR
)/src
/crypto \
273 $(if
$(CONFIG_WPA_MSG_MIN_PRIORITY
),-DCONFIG_MSG_MIN_PRIORITY
=$(CONFIG_WPA_MSG_MIN_PRIORITY
))
275 TARGET_CFLAGS
+= -ffunction-sections
-fdata-sections
276 TARGET_LDFLAGS
+= -Wl
,--gc-sections
277 ifeq ($(findstring supplicant
,$(BUILD_VARIANT
)),)
278 TARGET_LDFLAGS
+= -lubox
-lubus
281 ifdef CONFIG_PACKAGE_kmod-cfg80211
282 TARGET_LDFLAGS
+= -lm
-lnl-tiny
286 CFLAGS
="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
287 $(MAKE
) $(PKG_JOBS
) -C
$(PKG_BUILD_DIR
)/$(1) \
288 $(TARGET_CONFIGURE_OPTS
) \
290 LIBS
="$(TARGET_LDFLAGS)" \
291 LIBS_c
="$(TARGET_LDFLAGS_C)" \
296 define Build
/Compile
/wpad
298 $(call Build/RunMake,hostapd,-s MULTICALL=1 dump_cflags); \
299 $(call Build/RunMake,wpa_supplicant,-s MULTICALL=1 dump_cflags) | \
300 sed -e 's,-n ,,g' -e 's^$(TARGET_CFLAGS)^^' \
301 ` > $(PKG_BUILD_DIR
)/.
cflags
302 sed
-i
's/"/\\"/g' $(PKG_BUILD_DIR
)/.
cflags
303 +$(call Build
/RunMake
,hostapd
, \
304 CFLAGS
="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \
306 hostapd_cli hostapd_multi.a \
308 +$(call Build
/RunMake
,wpa_supplicant
, \
309 CFLAGS
="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \
311 wpa_cli wpa_supplicant_multi.a \
313 $(TARGET_CC
) -o
$(PKG_BUILD_DIR
)/wpad \
315 .
/files
/multicall.c \
316 $(PKG_BUILD_DIR
)/hostapd
/hostapd_multi.a \
317 $(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_supplicant_multi.a \
321 define Build
/Compile
/hostapd
322 +$(call Build
/RunMake
,hostapd
, \
323 hostapd hostapd_cli \
327 define Build
/Compile
/supplicant
328 +$(call Build
/RunMake
,wpa_supplicant
, \
329 wpa_cli wpa_supplicant \
333 define Build
/Compile
/supplicant-full
334 +$(call Build
/RunMake
,wpa_supplicant
, \
340 $(Build
/Compile
/$(LOCAL_TYPE
))
341 $(Build
/Compile
/$(BUILD_VARIANT
))
344 define Install
/hostapd
345 $(INSTALL_DIR
) $(1)/usr
/sbin
348 define Install
/supplicant
349 $(INSTALL_DIR
) $(1)/usr
/sbin
352 define Package
/hostapd-common
/install
353 $(INSTALL_DIR
) $(1)/lib
/netifd
354 $(INSTALL_DATA
) .
/files
/hostapd.sh
$(1)/lib
/netifd
/hostapd.sh
357 define Package
/hostapd
/install
358 $(call Install
/hostapd
,$(1))
359 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/hostapd
/hostapd
$(1)/usr
/sbin
/
361 Package
/hostapd-mini
/install = $(Package
/hostapd
/install)
363 ifneq ($(LOCAL_TYPE
),supplicant
)
364 define Package
/hostapd-utils
/install
365 $(INSTALL_DIR
) $(1)/usr
/sbin
$(1)/etc
/rc.button
366 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/hostapd
/hostapd_cli
$(1)/usr
/sbin
/
367 $(INSTALL_BIN
) .
/files
/wps-hotplug.sh
$(1)/etc
/rc.button
/wps
371 define Package
/wpad
/install
372 $(call Install
/hostapd
,$(1))
373 $(call Install
/supplicant
,$(1))
374 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/wpad
$(1)/usr
/sbin
/
375 $(LN
) wpad
$(1)/usr
/sbin
/hostapd
376 $(LN
) wpad
$(1)/usr
/sbin
/wpa_supplicant
378 Package
/wpad-mini
/install = $(Package
/wpad
/install)
379 Package
/wpad-mesh
/install = $(Package
/wpad
/install)
381 define Package
/wpa-supplicant
/install
382 $(call Install
/supplicant
,$(1))
383 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_supplicant
$(1)/usr
/sbin
/
385 Package
/wpa-supplicant-mini
/install = $(Package
/wpa-supplicant
/install)
386 Package
/wpa-supplicant-p2p
/install = $(Package
/wpa-supplicant
/install)
387 Package
/wpa-supplicant-mesh
/install = $(Package
/wpa-supplicant
/install)
389 ifneq ($(LOCAL_TYPE
),hostapd
)
390 define Package
/wpa-cli
/install
391 $(INSTALL_DIR
) $(1)/usr
/sbin
392 $(CP
) $(PKG_BUILD_DIR
)/wpa_supplicant
/wpa_cli
$(1)/usr
/sbin
/
396 ifeq ($(BUILD_VARIANT
),supplicant-full
)
397 define Package
/eapol-test
/install
398 $(INSTALL_DIR
) $(1)/usr
/sbin
399 $(CP
) $(PKG_BUILD_DIR
)/wpa_supplicant
/eapol_test
$(1)/usr
/sbin
/
403 $(eval
$(call BuildPackage
,hostapd
))
404 $(eval
$(call BuildPackage
,hostapd-mini
))
405 $(eval
$(call BuildPackage
,wpad
))
406 $(eval
$(call BuildPackage
,wpad-mesh
))
407 $(eval
$(call BuildPackage
,wpad-mini
))
408 $(eval
$(call BuildPackage
,wpa-supplicant
))
409 $(eval
$(call BuildPackage
,wpa-supplicant-mesh
))
410 $(eval
$(call BuildPackage
,wpa-supplicant-mini
))
411 $(eval
$(call BuildPackage
,wpa-supplicant-p2p
))
412 $(eval
$(call BuildPackage
,wpa-cli
))
413 $(eval
$(call BuildPackage
,hostapd-utils
))
414 $(eval
$(call BuildPackage
,hostapd-common
))
415 $(eval
$(call BuildPackage
,eapol-test
))