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