1################################################################################
2#
3# hostapd
4#
5################################################################################
6
7HOSTAPD_VERSION = 2.10
8HOSTAPD_SITE = http://w1.fi/releases
9HOSTAPD_SUBDIR = hostapd
10HOSTAPD_CONFIG = $(HOSTAPD_DIR)/$(HOSTAPD_SUBDIR)/.config
11HOSTAPD_DEPENDENCIES = host-pkgconf
12HOSTAPD_CFLAGS = $(TARGET_CFLAGS)
13HOSTAPD_LICENSE = BSD-3-Clause
14HOSTAPD_LICENSE_FILES = README
15
16HOSTAPD_CPE_ID_VENDOR = w1.fi
17HOSTAPD_SELINUX_MODULES = hostapd
18
19HOSTAPD_CONFIG_ENABLE = \
20	CONFIG_INTERNAL_LIBTOMMATH \
21	CONFIG_DEBUG_FILE \
22	CONFIG_DEBUG_SYSLOG
23
24HOSTAPD_CONFIG_DISABLE =
25
26# Try to use openssl if it's already available
27ifeq ($(BR2_PACKAGE_LIBOPENSSL),y)
28HOSTAPD_DEPENDENCIES += host-pkgconf libopenssl
29HOSTAPD_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`
30HOSTAPD_CONFIG_EDITS += 's/\#\(CONFIG_TLS=openssl\)/\1/'
31else
32HOSTAPD_CONFIG_DISABLE += CONFIG_EAP_PWD CONFIG_EAP_TEAP
33HOSTAPD_CONFIG_EDITS += 's/\#\(CONFIG_TLS=\).*/\1internal/'
34endif
35
36ifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_HOSTAP),)
37HOSTAPD_CONFIG_DISABLE += CONFIG_DRIVER_HOSTAP
38endif
39
40ifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_NL80211),)
41HOSTAPD_CONFIG_DISABLE += CONFIG_DRIVER_NL80211
42endif
43
44ifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_WIRED),y)
45HOSTAPD_CONFIG_ENABLE += CONFIG_DRIVER_WIRED
46endif
47
48ifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_NONE),y)
49HOSTAPD_CONFIG_ENABLE += CONFIG_DRIVER_NONE
50endif
51
52# Add options for wireless drivers
53ifeq ($(BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS),y)
54HOSTAPD_CONFIG_ENABLE += \
55	CONFIG_HS20 \
56	CONFIG_IEEE80211AX \
57	CONFIG_IEEE80211AC \
58	CONFIG_IEEE80211N \
59	CONFIG_IEEE80211R \
60	CONFIG_INTERWORKING
61endif
62
63ifeq ($(BR2_PACKAGE_HOSTAPD_ACS),y)
64HOSTAPD_CONFIG_ENABLE += CONFIG_ACS
65endif
66
67ifeq ($(BR2_PACKAGE_HOSTAPD_EAP),y)
68HOSTAPD_CONFIG_ENABLE += \
69	CONFIG_EAP \
70	CONFIG_RADIUS_SERVER
71
72# Enable both TLS v1.1 (CONFIG_TLSV11) and v1.2 (CONFIG_TLSV12)
73HOSTAPD_CONFIG_ENABLE += CONFIG_TLSV1
74else
75HOSTAPD_CONFIG_DISABLE += CONFIG_EAP
76HOSTAPD_CONFIG_ENABLE += \
77	CONFIG_NO_ACCOUNTING \
78	CONFIG_NO_RADIUS
79endif
80
81ifeq ($(BR2_PACKAGE_HOSTAPD_WPS),y)
82HOSTAPD_CONFIG_ENABLE += CONFIG_WPS
83endif
84
85ifeq ($(BR2_PACKAGE_HOSTAPD_WPA3),y)
86HOSTAPD_CONFIG_ENABLE += \
87	CONFIG_DPP \
88	CONFIG_SAE \
89	CONFIG_SAE_PK \
90	CONFIG_OWE
91else
92HOSTAPD_CONFIG_DISABLE += \
93	CONFIG_DPP \
94	CONFIG_SAE \
95	CONFIG_SAE_PK \
96	CONFIG_OWE
97endif
98
99ifeq ($(BR2_PACKAGE_HOSTAPD_VLAN),)
100HOSTAPD_CONFIG_ENABLE += CONFIG_NO_VLAN
101endif
102
103ifeq ($(BR2_PACKAGE_HOSTAPD_VLAN_DYNAMIC),y)
104HOSTAPD_CONFIG_ENABLE += \
105	CONFIG_FULL_DYNAMIC_VLAN \
106	NEED_LINUX_IOCTL
107endif
108
109ifeq ($(BR2_PACKAGE_HOSTAPD_VLAN_NETLINK),y)
110HOSTAPD_CONFIG_ENABLE += CONFIG_VLAN_NETLINK
111endif
112
113# Options for building with libnl
114ifeq ($(BR2_PACKAGE_LIBNL),y)
115HOSTAPD_DEPENDENCIES += libnl
116HOSTAPD_CFLAGS += -I$(STAGING_DIR)/usr/include/libnl3/
117HOSTAPD_CONFIG_ENABLE += CONFIG_LIBNL32
118# libnl-3 needs -lm (for rint) and -lpthread if linking statically
119# And library order matters hence stick -lnl-3 first since it's appended
120# in the hostapd Makefiles as in LIBS+=-lnl-3 ... thus failing
121ifeq ($(BR2_STATIC_LIBS),y)
122HOSTAPD_LIBS += -lnl-3 -lm -lpthread
123endif
124endif
125
126define HOSTAPD_CONFIGURE_CMDS
127	cp $(@D)/hostapd/defconfig $(HOSTAPD_CONFIG)
128	sed -i $(patsubst %,-e 's/^#\(%\)/\1/',$(HOSTAPD_CONFIG_ENABLE)) \
129		$(patsubst %,-e 's/^\(%\)/#\1/',$(HOSTAPD_CONFIG_DISABLE)) \
130		$(patsubst %,-e %,$(HOSTAPD_CONFIG_EDITS)) \
131		$(HOSTAPD_CONFIG)
132	# set requested configuration options not listed in hostapd defconfig
133	for s in $(HOSTAPD_CONFIG_ENABLE) ; do \
134		if ! grep -q "^$${s}" $(HOSTAPD_CONFIG); then \
135			echo "$${s}=y" >> $(HOSTAPD_CONFIG) ; \
136		fi \
137	done
138endef
139
140define HOSTAPD_BUILD_CMDS
141	$(TARGET_MAKE_ENV) CFLAGS="$(HOSTAPD_CFLAGS)" \
142		LDFLAGS="$(TARGET_LDFLAGS)" LIBS="$(HOSTAPD_LIBS)" \
143		$(MAKE) CC="$(TARGET_CC)" -C $(@D)/$(HOSTAPD_SUBDIR)
144endef
145
146define HOSTAPD_INSTALL_TARGET_CMDS
147	$(INSTALL) -m 0755 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd \
148		$(TARGET_DIR)/usr/sbin/hostapd
149	$(INSTALL) -m 0755 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd_cli \
150		$(TARGET_DIR)/usr/bin/hostapd_cli
151	$(INSTALL) -m 0644 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd.conf \
152		$(TARGET_DIR)/etc/hostapd.conf
153endef
154
155$(eval $(generic-package))
156