Skip to content

Commit e4ffdbf

Browse files
authored
Merge pull request #161 from kpandu987/fix_build_RDKBACCL-737
RDKBACCL-737 : observing build issues in rdk-wifi-hal with latest tip…
2 parents 5295599 + ba54e6c commit e4ffdbf

File tree

2 files changed

+366
-1
lines changed

2 files changed

+366
-1
lines changed
Lines changed: 354 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,354 @@
1+
##########################################################################
2+
# If not stated otherwise in this file or this component's LICENSE
3+
# file the following copyright and licenses apply:
4+
#
5+
# Copyright 2024 RDK Management
6+
#
7+
# Licensed under the Apache License, Version 2.0 (the "License");
8+
# you may not use this file except in compliance with the License.
9+
# You may obtain a copy of the License at
10+
#
11+
# http://www.apache.org/licenses/LICENSE-2.0
12+
#
13+
# Unless required by applicable law or agreed to in writing, software
14+
# distributed under the License is distributed on an "AS IS" BASIS,
15+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
# See the License for the specific language governing permissions and
17+
# limitations under the License.
18+
##########################################################################
19+
LIB_PRFIX := lib
20+
LIB_NAME := $(LIB_PRFIX)$(NAME)
21+
LIB_NAME_PKG := $(LIB_NAME).pc
22+
LIB_NAME_REAL := $(LIB_NAME).so
23+
LIB_NAME_LINKER := $(LIB_NAME_REAL).$(LIB_VERSION)
24+
LIB_NAME_SO := $(LIB_NAME_REAL).$(LIB_VERSION_MAJOR)
25+
26+
LIB_OBJS := ../src/common/wpa_ctrl.o
27+
28+
#################part of `wpa_supplicant`#################
29+
ifeq ($(WIFI_EMULATOR), true)
30+
LIB_OBJS += ../wpa_supplicant/rrm_test.o
31+
endif
32+
33+
LIB_OBJS += ../wpa_supplicant/sme.o
34+
LIB_OBJS += ../wpa_supplicant/wmm_ac.o
35+
LIB_OBJS += ../wpa_supplicant/rrm.o
36+
LIB_OBJS += ../wpa_supplicant/wps_supplicant.o
37+
LIB_OBJS += ../wpa_supplicant/wpas_glue.o
38+
LIB_OBJS += ../wpa_supplicant/interworking.o
39+
LIB_OBJS += ../wpa_supplicant/op_classes.o
40+
LIB_OBJS += ../wpa_supplicant/events.o
41+
LIB_OBJS += ../wpa_supplicant/hs20_supplicant.o
42+
LIB_OBJS += ../wpa_supplicant/scan.o
43+
LIB_OBJS += ../wpa_supplicant/bss.o
44+
LIB_OBJS += ../wpa_supplicant/notify.o
45+
LIB_OBJS += ../wpa_supplicant/wpa_supplicant.o
46+
LIB_OBJS += ../wpa_supplicant/robust_av.o
47+
LIB_OBJS += ../wpa_supplicant/bssid_ignore.o
48+
LIB_OBJS += ../src/utils/bitfield.o
49+
50+
LIB_OBJS += ../wpa_supplicant/wnm_sta.o
51+
LIB_OBJS += ../wpa_supplicant/config.o
52+
LIB_OBJS += ../wpa_supplicant/gas_query.o
53+
LIB_OBJS += ../wpa_supplicant/config_none.o
54+
LIB_OBJS += ../wpa_supplicant/ctrl_iface.o
55+
LIB_OBJS += ../wpa_supplicant/offchannel.o
56+
LIB_OBJS += ../wpa_supplicant/eap_register.o
57+
LIB_OBJS += ../wpa_supplicant/ap.o
58+
LIB_OBJS += ../wpa_supplicant/ctrl_iface_unix.o
59+
LIB_OBJS += ../wpa_supplicant/mbo.o
60+
LIB_OBJS += ../wpa_supplicant/wnm_sta.o
61+
62+
ifdef CONFIG_EAP_TLS
63+
# EAP-TLS
64+
CFLAGS += -DEAP_TLS
65+
LIB_OBJS += ../src/eap_peer/eap_tls.o
66+
SUPP_TLS_FUNCS=y
67+
CONFIG_IEEE8021X_EAPOL=y
68+
ifdef CONFIG_EAP_TLSV1_3
69+
CFLAGS += -DEAP_TLSV1_3
70+
endif
71+
endif
72+
73+
ifdef CONFIG_EAP_UNAUTH_TLS
74+
# EAP-UNAUTH-TLS
75+
CFLAGS += -DEAP_UNAUTH_TLS
76+
ifndef CONFIG_EAP_TLS
77+
LIB_OBJS += ../src/eap_peer/eap_tls.o
78+
SUPP_TLS_FUNCS=y
79+
endif
80+
CONFIG_IEEE8021X_EAPOL=y
81+
endif
82+
83+
ifdef CONFIG_EAP_PEAP
84+
# EAP-PEAP
85+
CFLAGS += -DEAP_PEAP
86+
LIB_OBJS += ../src/eap_peer/eap_peap.o
87+
SUPP_TLS_FUNCS=y
88+
CONFIG_IEEE8021X_EAPOL=y
89+
endif
90+
91+
ifdef CONFIG_EAP_TTLS
92+
# EAP-TTLS
93+
CFLAGS += -DEAP_TTLS
94+
LIB_OBJS += ../src/eap_peer/eap_ttls.o
95+
SUPP_TLS_FUNCS=y
96+
CONFIG_IEEE8021X_EAPOL=y
97+
endif
98+
99+
ifdef CONFIG_EAP_MD5
100+
# EAP-MD5
101+
CFLAGS += -DEAP_MD5
102+
LIB_OBJS += ../src/eap_peer/eap_md5.o
103+
CONFIG_IEEE8021X_EAPOL=y
104+
endif
105+
106+
ifdef CONFIG_EAP_MSCHAPV2
107+
# EAP-MSCHAPv2
108+
CFLAGS += -DEAP_MSCHAPv2
109+
LIB_OBJS += ../src/eap_peer/eap_mschapv2.o
110+
LIB_OBJS += ../src/eap_peer/mschapv2.o
111+
CONFIG_IEEE8021X_EAPOL=y
112+
endif
113+
114+
ifdef CONFIG_EAP_GTC
115+
# EAP-GTC
116+
CFLAGS += -DEAP_GTC
117+
LIB_OBJS += ../src/eap_peer/eap_gtc.o
118+
CONFIG_IEEE8021X_EAPOL=y
119+
endif
120+
121+
ifdef CONFIG_EAP_OTP
122+
# EAP-OTP
123+
CFLAGS += -DEAP_OTP
124+
LIB_OBJS += ../src/eap_peer/eap_otp.o
125+
CONFIG_IEEE8021X_EAPOL=y
126+
endif
127+
128+
ifdef CONFIG_EAP_LEAP
129+
# EAP-LEAP
130+
CFLAGS += -DEAP_LEAP
131+
LIB_OBJS += ../src/eap_peer/eap_leap.o
132+
CONFIG_IEEE8021X_EAPOL=y
133+
endif
134+
135+
ifdef CONFIG_EAP_PSK
136+
# EAP-PSK
137+
CFLAGS += -DEAP_PSK
138+
LIB_OBJS += ../src/eap_peer/eap_psk.o
139+
CONFIG_IEEE8021X_EAPOL=y
140+
endif
141+
142+
ifdef CONFIG_EAP_PAX
143+
# EAP-PAX
144+
CFLAGS += -DEAP_PAX
145+
LIB_OBJS += ../src/eap_peer/eap_pax.o
146+
CONFIG_IEEE8021X_EAPOL=y
147+
endif
148+
149+
ifdef CONFIG_EAP_SAKE
150+
# EAP-SAKE
151+
CFLAGS += -DEAP_SAKE
152+
LIB_OBJS += ../src/eap_peer/eap_sake.o
153+
CONFIG_IEEE8021X_EAPOL=y
154+
endif
155+
156+
ifdef CONFIG_EAP_GPSK
157+
# EAP-GPSK
158+
CFLAGS += -DEAP_GPSK
159+
LIB_OBJS += ../src/eap_peer/eap_gpsk.o
160+
CONFIG_IEEE8021X_EAPOL=y
161+
endif
162+
163+
ifdef CONFIG_EAP_PWD
164+
CFLAGS += -DEAP_PWD
165+
LIB_OBJS += ../src/eap_peer/eap_pwd.o
166+
CONFIG_IEEE8021X_EAPOL=y
167+
endif
168+
169+
ifdef CONFIG_IEEE8021X_EAPOL
170+
# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
171+
CFLAGS += -DIEEE8021X_EAPOL
172+
LIB_OBJS += ../src/eapol_supp/eapol_supp_sm.o
173+
LIB_OBJS += ../src/eap_peer/eap.o
174+
LIB_OBJS += ../src/eap_peer/eap_methods.o
175+
endif
176+
177+
ifdef SUPP_TLS_FUNCS
178+
LIB_OBJS += ../src/eap_peer/eap_tls_common.o
179+
endif
180+
181+
ifndef CONFIG_NO_WPA
182+
LIB_OBJS += ../src/rsn_supp/wpa.o
183+
LIB_OBJS += ../src/rsn_supp/preauth.o
184+
LIB_OBJS += ../src/rsn_supp/pmksa_cache.o
185+
LIB_OBJS += ../src/rsn_supp/wpa_ie.o
186+
LIB_OBJS += ../src/common/wpa_common.o
187+
else
188+
CFLAGS += -DCONFIG_NO_WPA
189+
endif
190+
191+
ifdef CONFIG_IEEE80211R
192+
LIB_OBJS += ../src/rsn_supp/wpa_ft.o
193+
endif
194+
195+
ifdef CONFIG_MBO
196+
CFLAGS += -DCONFIG_MBO
197+
LIB_OBJS += ../src/ap/mbo_ap.o
198+
endif
199+
200+
#################part of `wpa_supplicant`#################
201+
202+
ifeq ($(call VERSION_CMP,$(LIB_VERSION_MAJOR),$(LIB_VERSION_MINOR),gt,2,9),true)
203+
# This configuration has been removed and enabled by default since 2.10.
204+
CFLAGS += -DCONFIG_IEEE80211W
205+
endif
206+
207+
# Someone is incorrectly calling functions that were not included in the library.
208+
ifdef CONFIG_SAE
209+
ifndef NEED_AES_OMAC1
210+
ifneq ($(CONFIG_TLS), openssl)
211+
LIB_OBJS += -DCONFIG_OPENSSL_CMAC
212+
endif
213+
endif
214+
ifdef NEED_SHA384
215+
ifndef NEED_HMAC_SHA384_KDF
216+
LIB_OBJS += ../src/crypto/sha384-kdf.o
217+
endif
218+
endif
219+
ifdef NEED_SHA512
220+
ifndef NEED_HMAC_SHA512_KDF
221+
LIB_OBJS += ../src/crypto/sha512-kdf.o
222+
endif
223+
endif
224+
endif
225+
226+
ifdef CONFIG_DRIVER_NL80211
227+
ifdef CONFIG_DRIVER_BRCM
228+
CFLAGS += -DCONFIG_DRIVER_BRCM
229+
endif
230+
endif
231+
232+
ifdef CONFIG_WPS
233+
ifdef CONFIG_DRIVER_BRCM_MAP
234+
CFLAGS += -DCONFIG_DRIVER_BRCM_MAP
235+
endif
236+
endif
237+
238+
ifdef ONE_WIFI
239+
CFLAGS += -DRDK_ONEWIFI
240+
endif
241+
242+
ifdef FEATURE_SUPPORT_RADIUSGREYLIST
243+
CFLAGS += -DFEATURE_SUPPORT_RADIUSGREYLIST
244+
LIB_OBJS += ../src/ap/greylist.o
245+
endif
246+
247+
EXPORT_COMPILE_DEFINITIONS := $(filter -D%, $(CFLAGS)) -DHOSTAPD_$(subst .,_,$(LIB_VERSION))
248+
249+
CFLAGS += -fPIC -DPIC
250+
CFLAGS += $(shell $(PKG_CONFIG) --cflags $(PKG_CONFIG_LIST))
251+
252+
_OBJS_VAR := LIB_OBJS
253+
ifneq ("$(wildcard ../src/objs.mk)","")
254+
include ../src/objs.mk
255+
else
256+
ROOTDIR := $(dir $(lastword $(MAKEFILE_LIST)))
257+
ROOTDIR := $(dir $(ROOTDIR:%../src/=%))../
258+
PROJ := $(NAME)
259+
260+
_DIRS := $(BUILDDIR)/$(PROJ)
261+
.PHONY: _make_dirs common-clean
262+
_make_dirs:
263+
$(Q)mkdir -p $(_DIRS)
264+
265+
$(BUILDDIR)/$(PROJ)/src/%.o: $(ROOTDIR)src/%.c $(CONFIG_FILE) | _make_dirs
266+
$(Q)$(CC) -c -o $@ $(CFLAGS) $<
267+
268+
$(BUILDDIR)/$(PROJ)/%.o: %.c $(CONFIG_FILE) | _make_dirs
269+
$(Q)$(CC) -c -o $@ $(CFLAGS) $<
270+
271+
common-clean:
272+
$(Q)rm -rf $(BUILDDIR)/$(PROJ) $(BUILDDIR)/src
273+
274+
BUILDOBJ = $(patsubst %,$(BUILDDIR)/$(PROJ)/%,$(patsubst $(ROOTDIR)%,%,$(1)))
275+
276+
$(_OBJS_VAR) := $(call BUILDOBJ,$($(_OBJS_VAR)))
277+
OBJS := $(call BUILDOBJ,$(OBJS))
278+
_DIRS += $(dir $($(_OBJS_VAR)) $(OBJS))
279+
endif
280+
281+
LIB_OBJS += $(OBJS)
282+
283+
# Do not install all header files. This will help resolve dl lookup errors at compile time.
284+
LIB_HDRS := $(patsubst src/%,../src/%,$(patsubst $(BUILDDIR)/$(PROJ)/%,%,$(LIB_OBJS:%.o=%.h)))
285+
#for sha
286+
LIB_HDRS := $(shell echo "$(LIB_HDRS)" | sed -E 's/sha([0-9]+)-([a-zA-Z0-9]+)\.h/sha\1.h/g')
287+
LIB_HDRS += ../src/ap/wpa_auth_i.h
288+
ifdef CONFIG_DRIVER_NL80211_BRCM
289+
LIB_HDRS += ../src/common/brcm_vendor.h
290+
endif
291+
LIB_HDRS += ../src/crypto/crypto.h
292+
LIB_HDRS += ../src/crypto/tls.h
293+
LIB_HDRS += ../src/common/defs.h
294+
# Since 2.10, some headers (like `hostapd.h`) started including this file without checking `CONFIG_DPP`.
295+
# Of course this doesn't lead to ld issues and etc., but it does cause compilation errors.
296+
ifeq ($(call VERSION_CMP,$(LIB_VERSION_MAJOR),$(LIB_VERSION_MINOR),gt,2,9),true)
297+
LIB_HDRS += ../src/common/dpp.h
298+
endif
299+
LIB_HDRS += ../src/common/eapol_common.h
300+
ifdef CONFIG_MACSEC
301+
LIB_HDRS += ../src/common/ieee802_1x_defs.h
302+
endif
303+
LIB_HDRS += ../src/common/ieee802_11_defs.h
304+
LIB_HDRS += ../src/drivers/driver.h
305+
LIB_HDRS += ../src/drivers/nl80211_copy.h
306+
LIB_HDRS += ../src/eap_common/eap_defs.h
307+
LIB_HDRS += ../src/eap_peer/eap_config.h
308+
LIB_HDRS += ../src/fst/fst.h
309+
ifdef CONFIG_SAE
310+
LIB_HDRS += ../src/pasn/pasn_common.h
311+
endif
312+
ifndef CONFIG_NO_WPA
313+
LIB_HDRS += ../src/rsn_supp/wpa_i.h
314+
endif
315+
LIB_HDRS += ../src/utils/build_config.h
316+
LIB_HDRS += ../src/utils/includes.h
317+
LIB_HDRS += ../src/utils/list.h
318+
# We should not use `os.h` in our projects, as it is not part of the hostapd public API and is only used in translation units.
319+
# WORKAROUND: since we started using it in our project, I'll add it here.
320+
LIB_HDRS += ../src/utils/os.h
321+
LIB_HDRS += ../src/wps/wps_defs.h
322+
323+
.PHONY: $(LIB_NAME) $(LIB_NAME_PKG) install_$(LIB_NAME) clean_$(LIB_NAME)
324+
325+
$(LIB_NAME): $(BUILDDIR)/$(LIB_NAME_LINKER)
326+
$(LIB_NAME_PKG): $(BUILDDIR)/$(LIB_NAME_PKG)
327+
328+
$(BUILDDIR)/$(LIB_NAME_LINKER): $(LIB_OBJS)
329+
$(Q)$(CC) $(LDFLAGS) -shared -Wl,-soname,$(LIB_NAME_SO) -o $@ $^
330+
331+
$(BUILDDIR)/$(LIB_NAME_PKG):
332+
$(Q)echo "prefix=$(prefix)" > $@
333+
$(Q)echo "exec_prefix=\$${prefix}" >> $@
334+
$(Q)echo "includedir=\$${prefix}/include" >> $@
335+
$(Q)echo "libdir=\$${exec_prefix}/lib" >> $@
336+
$(Q)echo "" >> $@
337+
$(Q)echo "Name: $(LIB_NAME)" >> $@
338+
$(Q)echo "Description: User space shared lib for access points" >> $@
339+
$(Q)echo "Version: $(LIB_VERSION)" >> $@
340+
$(Q)echo "Requires: $(PKG_CONFIG_LIST)" >> $@
341+
$(Q)echo "Libs: -L\$${libdir} -l$(NAME)" >> $@
342+
$(Q)echo "Libs.private: $(LIBS)" >> $@
343+
# We must add `-I\$${includedir}/$(PN)/src/utils` to the include path because some `libhostapd` headers are included without the full path.
344+
$(Q)echo "Cflags: -I\$${includedir}/$(PN) -I\$${includedir}/$(PN)/src -I\$${includedir}/$(PN)/src/utils -I\$${includedir}/$(PN)/src/ap $(EXPORT_COMPILE_DEFINITIONS)" >> $@
345+
346+
install_$(LIB_NAME): $(LIB_NAME) $(LIB_NAME_PKG)
347+
$(Q)install -D -m 0644 $(BUILDDIR)/$(LIB_NAME_PKG) $(DESTDIR)$(libdir)/pkgconfig/$(LIB_NAME_PKG)
348+
$(Q)install -D -m 0755 $(BUILDDIR)/$(LIB_NAME_LINKER) $(DESTDIR)$(libdir)/$(LIB_NAME_LINKER)
349+
$(Q)for file in $(LIB_HDRS); do test -f $$file && install -D -m 0644 $$file $(DESTDIR)$(includedir)/$(PN)/$(notdir $(CURDIR))/$$file; done
350+
$(Q)ln -sf $(LIB_NAME_LINKER) $(DESTDIR)$(libdir)/$(LIB_NAME_SO)
351+
$(Q)ln -sf $(LIB_NAME_LINKER) $(DESTDIR)$(libdir)/$(LIB_NAME_REAL)
352+
353+
clean_$(LIB_NAME): common-clean
354+
$(Q)rm -rf $(BUILDDIR)/$(LIB_NAME_LINKER) $(BUILDDIR)/$(LIB_NAME_PKG)

meta-rdk-mtk-bpir4/recipes-ccsp/rdk-wifi-libhostap/rdk-wifi-libhostap.bbappend

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,16 @@ SRC_URI_remove = " file://Rpi_rdkwifilibhostap_changes.patch"
77
SRC_URI_remove = " file://fixed_6G_wrong_freq.patch"
88
SRC_URI_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'HOSTAPD_2_10', 'file://2.10/wpa3_compatibility_hostap_2_10.patch', '', d)}"
99
SRC_URI_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'HOSTAPD_2_11', 'file://2.11/Bpi_rdkwifilibhostap_2_11_changes.patch', 'file://2.10/Bpi_rdkwifilibhostap_2_10_changes.patch', d)}"
10+
SRC_URI_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'HOSTAPD_2_11', 'file://2.11/supplicant.patch', '', d)}"
11+
SRC_URI_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'HOSTAPD_2_11', 'file://2.11/libhostap.mk', '', d)}"
1012

11-
CFLAGS_append = " -D_PLATFORM_BANANAPI_R4_"
13+
CFLAGS_append = " -D_PLATFORM_BANANAPI_R4_ -DCONFIG_SME -DCONFIG_GAS "
14+
15+
do_configure_prepend() {
16+
cp ${WORKDIR}/2.11/libhostap.mk ${S}/source/hostap-${HOSTAPD_PV}/hostapd/
17+
}
18+
19+
do_install_append() {
20+
install -d ${D}${includedir}/rdk-wifi-libhostap/wpa_supplicant/
21+
install -m 0755 ${S}/source/hostap-${HOSTAPD_PV}/wpa_supplicant/*.h ${D}${includedir}/rdk-wifi-libhostap/wpa_supplicant
22+
}

0 commit comments

Comments
 (0)