xref: /OK3568_Linux_fs/buildroot/package/wpa_supplicant/wpa_supplicant.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1################################################################################
2#
3# wpa_supplicant
4#
5################################################################################
6
7WPA_SUPPLICANT_VERSION = 2.9
8WPA_SUPPLICANT_SITE = http://w1.fi/releases
9WPA_SUPPLICANT_PATCH = \
10	https://w1.fi/security/2020-2/0001-P2P-Fix-copying-of-secondary-device-types-for-P2P-gr.patch \
11	https://w1.fi/security/2021-1/0001-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch
12WPA_SUPPLICANT_LICENSE = BSD-3-Clause
13WPA_SUPPLICANT_LICENSE_FILES = README
14WPA_SUPPLICANT_CPE_ID_VENDOR = w1.fi
15WPA_SUPPLICANT_CONFIG = $(WPA_SUPPLICANT_DIR)/wpa_supplicant/.config
16WPA_SUPPLICANT_SUBDIR = wpa_supplicant
17WPA_SUPPLICANT_DBUS_SERVICE = fi.w1.wpa_supplicant1
18WPA_SUPPLICANT_CFLAGS = $(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/libnl3/
19WPA_SUPPLICANT_LDFLAGS = $(TARGET_LDFLAGS)
20WPA_SUPPLICANT_SELINUX_MODULES = networkmanager
21
22# 0001-AP-Silently-ignore-management-frame-from-unexpected-.patch
23WPA_SUPPLICANT_IGNORE_CVES += CVE-2019-16275
24
25# 0001-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch
26WPA_SUPPLICANT_IGNORE_CVES += CVE-2021-27803
27
28# 0002-ASN.1-Validate-DigestAlgorithmIdentifier-parameters.patch
29WPA_SUPPLICANT_IGNORE_CVES += CVE-2021-30004
30
31# install the wpa_client library
32WPA_SUPPLICANT_INSTALL_STAGING = YES
33
34WPA_SUPPLICANT_CONFIG_EDITS =
35
36WPA_SUPPLICANT_CONFIG_ENABLE = \
37	CONFIG_INTERNAL_LIBTOMMATH \
38	CONFIG_MATCH_IFACE
39
40WPA_SUPPLICANT_CONFIG_DISABLE = \
41	CONFIG_SMARTCARD
42
43# libnl-3 needs -lm (for rint) and -lpthread if linking statically
44# And library order matters hence stick -lnl-3 first since it's appended
45# in the wpa_supplicant Makefiles as in LIBS+=-lnl-3 ... thus failing
46ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_NL80211),y)
47ifeq ($(BR2_STATIC_LIBS),y)
48WPA_SUPPLICANT_LIBS += -lnl-3 -lm -lpthread
49endif
50WPA_SUPPLICANT_DEPENDENCIES += host-pkgconf libnl
51WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_LIBNL32
52else
53WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_DRIVER_NL80211
54endif
55
56ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WEXT),)
57WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_DRIVER_WEXT
58endif
59
60ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_IBSS_RSN), )
61WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_IBSS_RSN
62endif
63
64# Trailing underscore on purpose to not enable CONFIG_EAPOL_TEST
65ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_EAP),y)
66WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_EAP_
67# uses dlopen()
68ifeq ($(BR2_STATIC_LIBS),y)
69WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_EAP_TNC
70endif
71else
72WPA_SUPPLICANT_CONFIG_DISABLE += \
73	CONFIG_EAP \
74	CONFIG_IEEE8021X_EAPOL \
75	CONFIG_FILS
76endif
77
78ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WIRED),)
79WPA_SUPPLICANT_CONFIG_DISABLE += \
80	CONFIG_DRIVER_WIRED \
81	CONFIG_MACSEC \
82	CONFIG_DRIVER_MACSEC
83endif
84
85ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT),)
86WPA_SUPPLICANT_CONFIG_DISABLE += \
87	CONFIG_HS20 \
88	CONFIG_INTERWORKING
89endif
90
91ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT),y)
92WPA_SUPPLICANT_CONFIG_ENABLE += \
93	CONFIG_AP \
94	CONFIG_P2P
95else
96WPA_SUPPLICANT_CONFIG_DISABLE += \
97	CONFIG_AP \
98	CONFIG_P2P
99endif
100
101ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY),y)
102WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_WIFI_DISPLAY
103else
104WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_WIFI_DISPLAY
105endif
106
107ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING),y)
108WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_MESH
109else
110WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_MESH
111endif
112
113ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN),y)
114WPA_SUPPLICANT_CONFIG_ENABLE += \
115	CONFIG_AUTOSCAN_EXPONENTIAL \
116	CONFIG_AUTOSCAN_PERIODIC
117endif
118
119ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WPS),)
120WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_WPS
121endif
122
123ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WPA3),y)
124WPA_SUPPLICANT_CONFIG_ENABLE += \
125	CONFIG_DPP \
126	CONFIG_SAE \
127	CONFIG_OWE
128else
129WPA_SUPPLICANT_CONFIG_DISABLE += \
130	CONFIG_DPP \
131	CONFIG_SAE \
132	CONFIG_OWE
133endif
134
135# Try to use openssl if it's already available
136ifeq ($(BR2_PACKAGE_LIBOPENSSL),y)
137WPA_SUPPLICANT_DEPENDENCIES += host-pkgconf libopenssl
138WPA_SUPPLICANT_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`
139WPA_SUPPLICANT_CONFIG_EDITS += 's/\#\(CONFIG_TLS=openssl\)/\1/'
140else
141WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_EAP_PWD CONFIG_EAP_TEAP
142WPA_SUPPLICANT_CONFIG_EDITS += 's/\#\(CONFIG_TLS=\).*/\1internal/'
143endif
144
145ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE),)
146WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_CTRL_IFACE\>
147endif
148
149ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DBUS),y)
150WPA_SUPPLICANT_DEPENDENCIES += host-pkgconf dbus
151WPA_SUPPLICANT_MAKE_ENV = \
152	PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \
153	PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig"
154WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_CTRL_IFACE_DBUS_NEW
155define WPA_SUPPLICANT_INSTALL_DBUS_NEW
156	$(INSTALL) -m 0644 -D \
157		$(@D)/wpa_supplicant/dbus/$(WPA_SUPPLICANT_DBUS_SERVICE).service \
158		$(TARGET_DIR)/usr/share/dbus-1/system-services/$(WPA_SUPPLICANT_DBUS_SERVICE).service
159endef
160
161ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION),y)
162WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_CTRL_IFACE_DBUS_INTRO
163endif
164
165else
166WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_CTRL_IFACE_DBUS_NEW
167endif
168
169ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG),)
170WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_DEBUG_SYSLOG
171endif
172
173ifeq ($(BR2_PACKAGE_READLINE),y)
174WPA_SUPPLICANT_DEPENDENCIES += readline
175WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_READLINE
176endif
177
178ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO),y)
179WPA_SUPPLICANT_CONFIG_SET += CONFIG_BUILD_WPA_CLIENT_SO
180define WPA_SUPPLICANT_INSTALL_WPA_CLIENT_SO
181	$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/libwpa_client.so \
182		$(TARGET_DIR)/usr/lib/libwpa_client.so
183	$(INSTALL) -m 0644 -D $(@D)/src/common/wpa_ctrl.h \
184		$(TARGET_DIR)/usr/include/wpa_ctrl.h
185endef
186define WPA_SUPPLICANT_INSTALL_STAGING_WPA_CLIENT_SO
187	$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/libwpa_client.so \
188		$(STAGING_DIR)/usr/lib/libwpa_client.so
189	$(INSTALL) -m 0644 -D $(@D)/src/common/wpa_ctrl.h \
190		$(STAGING_DIR)/usr/include/wpa_ctrl.h
191endef
192endif
193
194define WPA_SUPPLICANT_CONFIGURE_CMDS
195	cp $(@D)/wpa_supplicant/defconfig $(WPA_SUPPLICANT_CONFIG)
196	sed -i $(patsubst %,-e 's/^#\(%\)/\1/',$(WPA_SUPPLICANT_CONFIG_ENABLE)) \
197		$(patsubst %,-e 's/^\(%\)/#\1/',$(WPA_SUPPLICANT_CONFIG_DISABLE)) \
198		$(patsubst %,-e '1i%=y',$(WPA_SUPPLICANT_CONFIG_SET)) \
199		$(patsubst %,-e %,$(WPA_SUPPLICANT_CONFIG_EDITS)) \
200		$(WPA_SUPPLICANT_CONFIG)
201endef
202
203# LIBS for wpa_supplicant, LIBS_c for wpa_cli, LIBS_p for wpa_passphrase
204define WPA_SUPPLICANT_BUILD_CMDS
205	$(TARGET_MAKE_ENV) CFLAGS="$(WPA_SUPPLICANT_CFLAGS)" \
206		LDFLAGS="$(TARGET_LDFLAGS)" BINDIR=/usr/sbin \
207		LIBS="$(WPA_SUPPLICANT_LIBS)" LIBS_c="$(WPA_SUPPLICANT_LIBS)" \
208		LIBS_p="$(WPA_SUPPLICANT_LIBS)" \
209		$(MAKE) CC="$(TARGET_CC)" -C $(@D)/$(WPA_SUPPLICANT_SUBDIR)
210endef
211
212ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_CLI),y)
213define WPA_SUPPLICANT_INSTALL_CLI
214	$(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_cli \
215		$(TARGET_DIR)/usr/sbin/wpa_cli
216endef
217endif
218
219ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE),y)
220define WPA_SUPPLICANT_INSTALL_PASSPHRASE
221	$(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_passphrase \
222		$(TARGET_DIR)/usr/sbin/wpa_passphrase
223endef
224endif
225
226ifeq ($(BR2_PACKAGE_DBUS),y)
227define WPA_SUPPLICANT_INSTALL_DBUS
228	$(INSTALL) -m 0644 -D \
229		$(@D)/wpa_supplicant/dbus/dbus-wpa_supplicant.conf \
230		$(TARGET_DIR)/etc/dbus-1/system.d/wpa_supplicant.conf
231	$(WPA_SUPPLICANT_INSTALL_DBUS_NEW)
232endef
233endif
234
235define WPA_SUPPLICANT_INSTALL_STAGING_CMDS
236	$(WPA_SUPPLICANT_INSTALL_STAGING_WPA_CLIENT_SO)
237endef
238
239define WPA_SUPPLICANT_INSTALL_TARGET_CMDS
240	$(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_supplicant \
241		$(TARGET_DIR)/usr/sbin/wpa_supplicant
242	$(INSTALL) -m 644 -D package/wpa_supplicant/wpa_supplicant.conf \
243		$(TARGET_DIR)/etc/wpa_supplicant.conf
244	$(WPA_SUPPLICANT_INSTALL_CLI)
245	$(WPA_SUPPLICANT_INSTALL_PASSPHRASE)
246	$(WPA_SUPPLICANT_INSTALL_DBUS)
247	$(WPA_SUPPLICANT_INSTALL_WPA_CLIENT_SO)
248endef
249
250define WPA_SUPPLICANT_INSTALL_INIT_SYSTEMD
251	$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant.service \
252		$(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant.service
253	$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant@.service \
254		$(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant@.service
255	$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant-nl80211@.service \
256		$(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant-nl80211@.service
257	$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant-wired@.service \
258		$(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant-wired@.service
259	$(INSTALL) -D -m 644 $(WPA_SUPPLICANT_PKGDIR)/50-wpa_supplicant.preset \
260		$(TARGET_DIR)/usr/lib/systemd/system-preset/50-wpa_supplicant.preset
261endef
262
263$(eval $(generic-package))
264