blob: faaa4cc89c0ad5d45cc99c81d012d7b92a59a00d [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001BINALL=wpa_supplicant wpa_cli
2
3ALL = $(BINALL)
4ALL += systemd/wpa_supplicant.service
5ALL += systemd/wpa_supplicant@.service
6ALL += systemd/wpa_supplicant-nl80211@.service
7ALL += systemd/wpa_supplicant-wired@.service
8ALL += dbus/fi.w1.wpa_supplicant1.service
9
10EXTRA_TARGETS=dynamic_eap_methods
11
12CONFIG_FILE=.config
13-include $(if $(MULTICALL),../hostapd/.config)
14include ../src/build.rules
15
16ifdef CONFIG_BUILD_PASN_SO
17# add the dependency this way to allow CONFIG_BUILD_PASN_SO
18# being set in the config which is read by build.rules
19_all: libpasn.so
20endif
21
22ifdef CONFIG_BUILD_WPA_CLIENT_SO
23# add the dependency this way to allow CONFIG_BUILD_WPA_CLIENT_SO
24# being set in the config which is read by build.rules
25_all: libwpa_client.so
26endif
27
28ifndef CONFIG_NO_WPA_PASSPHRASE
29# add the dependency this way to allow CONFIG_NO_WPA_PASSPHRASE
30# being set in the config which is read by build.rules
31_all: wpa_passphrase
32endif
33
34ifdef LIBS
35# If LIBS is set with some global build system defaults, clone those for
36# LIBS_c and LIBS_p to cover wpa_passphrase and wpa_cli as well.
37ifndef LIBS_c
38LIBS_c := $(LIBS)
39endif
40ifndef LIBS_p
41LIBS_p := $(LIBS)
42endif
43endif
44
45export LIBDIR ?= /usr/local/lib
46export INCDIR ?= /usr/local/include
47export BINDIR ?= /usr/local/sbin
48PKG_CONFIG ?= pkg-config
49
50CFLAGS += $(EXTRA_CFLAGS)
51CFLAGS += -I$(abspath ../src)
52CFLAGS += -I$(abspath ../src/utils)
53
54ifndef CONFIG_NO_GITVER
55# Add VERSION_STR postfix for builds from a git repository
56ifeq ($(wildcard ../.git),../.git)
57GITVER := $(shell git describe --dirty=+)
58ifneq ($(GITVER),)
59CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\"
60endif
61endif
62endif
63
64ifdef CONFIG_TESTING_OPTIONS
65CFLAGS += -DCONFIG_TESTING_OPTIONS
66CONFIG_WPS_TESTING=y
67CONFIG_TDLS_TESTING=y
68endif
69
70mkconfig:
71 @if [ -f .config ]; then \
72 echo '.config exists - did not replace it'; \
73 exit 1; \
74 fi
75 echo CONFIG_DRIVER_HOSTAP=y >> .config
76 echo CONFIG_DRIVER_WEXT=y >> .config
77
78$(DESTDIR)$(BINDIR)/%: %
79 install -D $(<) $(@)
80
81install: $(addprefix $(DESTDIR)$(BINDIR)/,$(BINALL))
82 $(MAKE) -C ../src install
83ifndef CONFIG_NO_WPA_PASSPHRASE
84 install -D wpa_passphrase $(DESTDIR)/$(BINDIR)/wpa_passphrase
85endif
86
87ifdef CONFIG_BUILD_PASN_SO
88 install -m 0644 -D libpasn.so $(DESTDIR)/$(LIBDIR)/libpasn.so
89endif
90
91ifdef CONFIG_BUILD_WPA_CLIENT_SO
92 install -m 0644 -D libwpa_client.so $(DESTDIR)/$(LIBDIR)/libwpa_client.so
93 install -m 0644 -D ../src/common/wpa_ctrl.h $(DESTDIR)/$(INCDIR)/wpa_ctrl.h
94endif
95 if ls eap_*.so >/dev/null 2>&1; then \
96 install -d $(DESTDIR)$(LIBDIR)/wpa_supplicant && \
97 cp *.so $(DESTDIR)$(LIBDIR)/wpa_supplicant \
98 ; fi
99
100ifdef CONFIG_FIPS
101CONFIG_NO_RANDOM_POOL=
102endif
103
104OBJS = config.o
105OBJS += notify.o
106OBJS += bss.o
107OBJS += eap_register.o
108OBJS += ../src/utils/common.o
109OBJS += ../src/utils/config.o
110OBJS += ../src/utils/wpa_debug.o
111OBJS += ../src/utils/wpabuf.o
112OBJS += ../src/utils/bitfield.o
113OBJS += ../src/utils/ip_addr.o
114OBJS += ../src/utils/crc32.o
115OBJS += op_classes.o
116OBJS += rrm.o
117OBJS += twt.o
118OBJS += robust_av.o
119OBJS_p = wpa_passphrase.o
120OBJS_p += ../src/utils/common.o
121OBJS_p += ../src/utils/wpa_debug.o
122OBJS_p += ../src/utils/wpabuf.o
123OBJS_c = wpa_cli.o ../src/common/wpa_ctrl.o
124OBJS_c += ../src/utils/wpa_debug.o
125OBJS_c += ../src/utils/common.o
126OBJS_c += ../src/common/cli.o
127OBJS += wmm_ac.o
128
129OBJS += ../src/common/wpa_ctrl.o
130
131ifndef CONFIG_OS
132ifdef CONFIG_NATIVE_WINDOWS
133CONFIG_OS=win32
134else
135CONFIG_OS=unix
136endif
137endif
138
139ifeq ($(CONFIG_OS), internal)
140CFLAGS += -DOS_NO_C_LIB_DEFINES
141endif
142
143OBJS += ../src/utils/os_$(CONFIG_OS).o
144OBJS_p += ../src/utils/os_$(CONFIG_OS).o
145OBJS_c += ../src/utils/os_$(CONFIG_OS).o
146
147ifdef CONFIG_WPA_TRACE
148CFLAGS += -DWPA_TRACE
149OBJS += ../src/utils/trace.o
150OBJS_p += ../src/utils/trace.o
151OBJS_c += ../src/utils/trace.o
152OBJS_priv += ../src/utils/trace.o
153LIBCTRL += ../src/utils/trace.o
154LIBCTRLSO += ../src/utils/trace.c
155LDFLAGS += -rdynamic
156CFLAGS += -funwind-tables
157ifdef CONFIG_WPA_TRACE_BFD
158CFLAGS += -DPACKAGE="wpa_supplicant" -DWPA_TRACE_BFD
159LIBS += -lbfd -ldl -liberty -lz
160LIBS_p += -lbfd -ldl -liberty -lz
161LIBS_c += -lbfd -ldl -liberty -lz
162endif
163endif
164
165ifndef CONFIG_ELOOP
166CONFIG_ELOOP=eloop
167endif
168OBJS += ../src/utils/$(CONFIG_ELOOP).o
169OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
170
171ifndef CONFIG_OSX
172ifeq ($(CONFIG_ELOOP), eloop)
173# Using glibc < 2.17 requires -lrt for clock_gettime()
174# OS X has an alternate implementation
175LIBS += -lrt
176LIBS_c += -lrt
177LIBS_p += -lrt
178endif
179endif
180
181ifdef CONFIG_ELOOP_POLL
182CFLAGS += -DCONFIG_ELOOP_POLL
183endif
184
185ifdef CONFIG_ELOOP_EPOLL
186CFLAGS += -DCONFIG_ELOOP_EPOLL
187endif
188
189ifdef CONFIG_ELOOP_KQUEUE
190CFLAGS += -DCONFIG_ELOOP_KQUEUE
191endif
192
193ifdef CONFIG_EAPOL_TEST
194CFLAGS += -Werror -DEAPOL_TEST
195endif
196
197ifdef CONFIG_UBUS
198CFLAGS += -DUBUS_SUPPORT
199OBJS += ubus.o
200LIBS += -lubox -lubus
201endif
202
203ifdef CONFIG_CODE_COVERAGE
204CFLAGS += -O0 -fprofile-arcs -ftest-coverage
205LIBS += -lgcov
206LIBS_c += -lgcov
207LIBS_p += -lgcov
208endif
209
210ifdef CONFIG_HT_OVERRIDES
211CFLAGS += -DCONFIG_HT_OVERRIDES
212endif
213
214ifdef CONFIG_VHT_OVERRIDES
215CFLAGS += -DCONFIG_VHT_OVERRIDES
216endif
217
218ifdef CONFIG_HE_OVERRIDES
219CFLAGS += -DCONFIG_HE_OVERRIDES
220endif
221
222ifndef CONFIG_BACKEND
223CONFIG_BACKEND=file
224endif
225
226ifeq ($(CONFIG_BACKEND), file)
227OBJS += config_file.o
228ifndef CONFIG_NO_CONFIG_BLOBS
229NEED_BASE64=y
230endif
231CFLAGS += -DCONFIG_BACKEND_FILE
232endif
233
234ifeq ($(CONFIG_BACKEND), winreg)
235OBJS += config_winreg.o
236endif
237
238ifeq ($(CONFIG_BACKEND), none)
239OBJS += config_none.o
240endif
241
242ifdef CONFIG_NO_CONFIG_WRITE
243CFLAGS += -DCONFIG_NO_CONFIG_WRITE
244endif
245
246ifdef CONFIG_NO_CONFIG_BLOBS
247CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
248endif
249
250ifdef CONFIG_NO_SCAN_PROCESSING
251CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
252endif
253
254ifdef CONFIG_SUITEB
255CFLAGS += -DCONFIG_SUITEB
256endif
257
258ifdef CONFIG_SUITEB192
259CFLAGS += -DCONFIG_SUITEB192
260NEED_SHA384=y
261endif
262
263ifdef CONFIG_OCV
264CFLAGS += -DCONFIG_OCV
265OBJS += ../src/common/ocv.o
266endif
267
268ifdef CONFIG_IEEE80211R
269CFLAGS += -DCONFIG_IEEE80211R
270OBJS += ../src/rsn_supp/wpa_ft.o
271endif
272
273ifdef CONFIG_MESH
274NEED_80211_COMMON=y
275NEED_AES_SIV=y
276CONFIG_SAE=y
277CONFIG_AP=y
278CFLAGS += -DCONFIG_MESH
279OBJS += mesh.o
280OBJS += mesh_mpm.o
281OBJS += mesh_rsn.o
282endif
283
284ifdef CONFIG_SAE
285CFLAGS += -DCONFIG_SAE
286OBJS += ../src/common/sae.o
287ifdef CONFIG_SAE_PK
288CFLAGS += -DCONFIG_SAE_PK
289NEED_AES_SIV=y
290OBJS += ../src/common/sae_pk.o
291endif
292NEED_ECC=y
293NEED_DH_GROUPS=y
294NEED_HMAC_SHA256_KDF=y
295NEED_DRAGONFLY=y
296ifdef CONFIG_TESTING_OPTIONS
297NEED_DH_GROUPS_ALL=y
298endif
299endif
300
301ifdef CONFIG_DPP
302CFLAGS += -DCONFIG_DPP
303OBJS += ../src/common/dpp.o
304OBJS += ../src/common/dpp_auth.o
305OBJS += ../src/common/dpp_backup.o
306OBJS += ../src/common/dpp_crypto.o
307OBJS += ../src/common/dpp_pkex.o
308OBJS += ../src/common/dpp_reconfig.o
309OBJS += ../src/common/dpp_tcp.o
310OBJS += dpp_supplicant.o
311NEED_AES_SIV=y
312NEED_HMAC_SHA256_KDF=y
313NEED_HMAC_SHA384_KDF=y
314NEED_HMAC_SHA512_KDF=y
315NEED_SHA384=y
316NEED_SHA512=y
317NEED_ECC=y
318NEED_JSON=y
319NEED_GAS_SERVER=y
320NEED_BASE64=y
321NEED_ASN1=y
322ifdef CONFIG_DPP2
323CFLAGS += -DCONFIG_DPP2
324endif
325ifdef CONFIG_DPP3
326CFLAGS += -DCONFIG_DPP3
327endif
328endif
329
330ifdef CONFIG_OWE
331CFLAGS += -DCONFIG_OWE
332NEED_ECC=y
333NEED_HMAC_SHA256_KDF=y
334NEED_HMAC_SHA384_KDF=y
335NEED_HMAC_SHA512_KDF=y
336NEED_SHA384=y
337NEED_SHA512=y
338endif
339
340ifdef CONFIG_FILS
341CFLAGS += -DCONFIG_FILS
342NEED_SHA384=y
343NEED_HMAC_SHA384_KDF=y
344NEED_AES_SIV=y
345ifdef CONFIG_FILS_SK_PFS
346CFLAGS += -DCONFIG_FILS_SK_PFS
347NEED_ECC=y
348endif
349endif
350
351ifdef CONFIG_MBO
352CONFIG_WNM=y
353endif
354
355ifdef CONFIG_WNM
356CFLAGS += -DCONFIG_WNM
357OBJS += wnm_sta.o
358endif
359
360ifdef CONFIG_TDLS
361CFLAGS += -DCONFIG_TDLS
362OBJS += ../src/rsn_supp/tdls.o
363endif
364
365ifdef CONFIG_TDLS_TESTING
366CFLAGS += -DCONFIG_TDLS_TESTING
367endif
368
369ifdef CONFIG_PMKSA_CACHE_EXTERNAL
370CFLAGS += -DCONFIG_PMKSA_CACHE_EXTERNAL
371endif
372
373ifndef CONFIG_NO_WPA
374OBJS += ../src/rsn_supp/wpa.o
375OBJS += ../src/rsn_supp/preauth.o
376OBJS += ../src/rsn_supp/pmksa_cache.o
377OBJS += ../src/rsn_supp/wpa_ie.o
378OBJS += ../src/common/wpa_common.o
379NEED_AES=y
380NEED_SHA1=y
381NEED_MD5=y
382NEED_RC4=y
383else
384CFLAGS += -DCONFIG_NO_WPA
385ifeq ($(CONFIG_TLS), internal)
386NEED_SHA1=y
387NEED_MD5=y
388endif
389endif
390
391ifdef CONFIG_IBSS_RSN
392NEED_RSN_AUTHENTICATOR=y
393CFLAGS += -DCONFIG_IBSS_RSN
394ifndef MULTICALL
395CFLAGS += -DCONFIG_NO_VLAN
396endif
397OBJS += ibss_rsn.o
398endif
399
400ifdef CONFIG_MATCH_IFACE
401CFLAGS += -DCONFIG_MATCH_IFACE
402endif
403
404ifdef CONFIG_P2P
405OBJS += p2p_supplicant.o
406OBJS += p2p_supplicant_sd.o
407OBJS += ../src/p2p/p2p.o
408OBJS += ../src/p2p/p2p_utils.o
409OBJS += ../src/p2p/p2p_parse.o
410OBJS += ../src/p2p/p2p_build.o
411OBJS += ../src/p2p/p2p_go_neg.o
412OBJS += ../src/p2p/p2p_sd.o
413OBJS += ../src/p2p/p2p_pd.o
414OBJS += ../src/p2p/p2p_invitation.o
415OBJS += ../src/p2p/p2p_dev_disc.o
416OBJS += ../src/p2p/p2p_group.o
417OBJS += ../src/ap/p2p_hostapd.o
418CFLAGS += -DCONFIG_P2P
419NEED_GAS=y
420NEED_OFFCHANNEL=y
421CONFIG_WPS=y
422CONFIG_AP=y
423ifdef CONFIG_P2P_STRICT
424CFLAGS += -DCONFIG_P2P_STRICT
425endif
426ifdef CONFIG_WIFI_DISPLAY
427CFLAGS += -DCONFIG_WIFI_DISPLAY
428OBJS += wifi_display.o
429endif
430endif
431
432ifdef CONFIG_PASN
433CFLAGS += -DCONFIG_PASN
434CFLAGS += -DCONFIG_PTKSA_CACHE
435NEED_HMAC_SHA256_KDF=y
436NEED_HMAC_SHA384_KDF=y
437NEED_SHA256=y
438NEED_SHA384=y
439OBJS += ../src/common/ptksa_cache.o
440OBJS += ../src/pasn/pasn_initiator.o
441OBJS += pasn_supplicant.o
442endif
443
444ifdef CONFIG_HS20
445OBJS += hs20_supplicant.o
446CFLAGS += -DCONFIG_HS20
447CONFIG_INTERWORKING=y
448endif
449
450ifdef CONFIG_INTERWORKING
451OBJS += interworking.o
452CFLAGS += -DCONFIG_INTERWORKING
453NEED_GAS=y
454endif
455
456ifdef CONFIG_NO_ROAMING
457CFLAGS += -DCONFIG_NO_ROAMING
458endif
459
460include ../src/drivers/drivers.mak
461ifdef CONFIG_AP
462OBJS_d += $(DRV_BOTH_OBJS)
463CFLAGS += $(DRV_BOTH_CFLAGS)
464LDFLAGS += $(DRV_BOTH_LDFLAGS)
465LIBS += $(DRV_BOTH_LIBS)
466else
467NEED_AP_MLME=
468OBJS_d += $(DRV_WPA_OBJS)
469CFLAGS += $(DRV_WPA_CFLAGS)
470LDFLAGS += $(DRV_WPA_LDFLAGS)
471LIBS += $(DRV_WPA_LIBS)
472endif
473
474ifndef CONFIG_L2_PACKET
475CONFIG_L2_PACKET=linux
476endif
477
478OBJS_l2 += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o
479
480ifeq ($(CONFIG_L2_PACKET), pcap)
481ifdef CONFIG_WINPCAP
482CFLAGS += -DCONFIG_WINPCAP
483LIBS += -lwpcap -lpacket
484LIBS_w += -lwpcap
485else
486LIBS += -ldnet -lpcap
487endif
488endif
489
490ifeq ($(CONFIG_L2_PACKET), winpcap)
491LIBS += -lwpcap -lpacket
492LIBS_w += -lwpcap
493endif
494
495ifeq ($(CONFIG_L2_PACKET), freebsd)
496LIBS += -lpcap
497endif
498
499ifdef CONFIG_ERP
500CFLAGS += -DCONFIG_ERP
501NEED_HMAC_SHA256_KDF=y
502endif
503
504ifdef CONFIG_EAP_TLS
505# EAP-TLS
506ifeq ($(CONFIG_EAP_TLS), dyn)
507CFLAGS += -DEAP_TLS_DYNAMIC
508EAPDYN += eap_tls.so
509else
510CFLAGS += -DEAP_TLS
511OBJS += ../src/eap_peer/eap_tls.o
512endif
513TLS_FUNCS=y
514CONFIG_IEEE8021X_EAPOL=y
515ifdef CONFIG_EAP_TLSV1_3
516CFLAGS += -DEAP_TLSV1_3
517endif
518endif
519
520ifdef CONFIG_EAP_UNAUTH_TLS
521# EAP-UNAUTH-TLS
522CFLAGS += -DEAP_UNAUTH_TLS
523ifndef CONFIG_EAP_TLS
524OBJS += ../src/eap_peer/eap_tls.o
525TLS_FUNCS=y
526endif
527CONFIG_IEEE8021X_EAPOL=y
528endif
529
530ifdef CONFIG_EAP_PEAP
531# EAP-PEAP
532SRC_EAP_PEAP = ../src/eap_peer/eap_peap.c ../src/eap_common/eap_peap_common.c
533ifeq ($(CONFIG_EAP_PEAP), dyn)
534CFLAGS += -DEAP_PEAP_DYNAMIC
535EAPDYN += eap_peap.so
536else
537CFLAGS += -DEAP_PEAP
538OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PEAP))
539endif
540TLS_FUNCS=y
541CONFIG_IEEE8021X_EAPOL=y
542endif
543
544ifdef CONFIG_EAP_TTLS
545# EAP-TTLS
546ifeq ($(CONFIG_EAP_TTLS), dyn)
547CFLAGS += -DEAP_TTLS_DYNAMIC
548EAPDYN += eap_ttls.so
549else
550CFLAGS += -DEAP_TTLS
551OBJS += ../src/eap_peer/eap_ttls.o
552endif
553TLS_FUNCS=y
554ifndef CONFIG_FIPS
555MS_FUNCS=y
556CHAP=y
557endif
558CONFIG_IEEE8021X_EAPOL=y
559endif
560
561ifdef CONFIG_EAP_MD5
562# EAP-MD5
563ifeq ($(CONFIG_EAP_MD5), dyn)
564CFLAGS += -DEAP_MD5_DYNAMIC
565EAPDYN += eap_md5.so
566else
567CFLAGS += -DEAP_MD5
568OBJS += ../src/eap_peer/eap_md5.o
569endif
570CHAP=y
571CONFIG_IEEE8021X_EAPOL=y
572endif
573
574# backwards compatibility for old spelling
575ifdef CONFIG_MSCHAPV2
576ifndef CONFIG_EAP_MSCHAPV2
577CONFIG_EAP_MSCHAPV2=y
578endif
579endif
580
581ifdef CONFIG_EAP_MSCHAPV2
582# EAP-MSCHAPv2
583SRC_EAP_MSCHAPV2 = ../src/eap_peer/eap_mschapv2.c ../src/eap_peer/mschapv2.c
584ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
585CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
586EAPDYN += eap_mschapv2.so
587else
588CFLAGS += -DEAP_MSCHAPv2
589OBJS += $(patsubst %.c, %.o, $(SRC_EAP_MSCHAPV2))
590endif
591MS_FUNCS=y
592CONFIG_IEEE8021X_EAPOL=y
593endif
594
595ifdef CONFIG_EAP_GTC
596# EAP-GTC
597ifeq ($(CONFIG_EAP_GTC), dyn)
598CFLAGS += -DEAP_GTC_DYNAMIC
599EAPDYN += eap_gtc.so
600else
601CFLAGS += -DEAP_GTC
602OBJS += ../src/eap_peer/eap_gtc.o
603endif
604CONFIG_IEEE8021X_EAPOL=y
605endif
606
607ifdef CONFIG_EAP_OTP
608# EAP-OTP
609ifeq ($(CONFIG_EAP_OTP), dyn)
610CFLAGS += -DEAP_OTP_DYNAMIC
611EAPDYN += eap_otp.so
612else
613CFLAGS += -DEAP_OTP
614OBJS += ../src/eap_peer/eap_otp.o
615endif
616CONFIG_IEEE8021X_EAPOL=y
617endif
618
619ifdef CONFIG_EAP_SIM
620# EAP-SIM
621ifeq ($(CONFIG_EAP_SIM), dyn)
622CFLAGS += -DEAP_SIM_DYNAMIC
623EAPDYN += eap_sim.so
624else
625CFLAGS += -DEAP_SIM
626OBJS += ../src/eap_peer/eap_sim.o
627endif
628CONFIG_IEEE8021X_EAPOL=y
629CONFIG_EAP_SIM_COMMON=y
630NEED_AES_CBC=y
631endif
632
633ifdef CONFIG_EAP_LEAP
634# EAP-LEAP
635ifeq ($(CONFIG_EAP_LEAP), dyn)
636CFLAGS += -DEAP_LEAP_DYNAMIC
637EAPDYN += eap_leap.so
638else
639CFLAGS += -DEAP_LEAP
640OBJS += ../src/eap_peer/eap_leap.o
641endif
642MS_FUNCS=y
643CONFIG_IEEE8021X_EAPOL=y
644endif
645
646ifdef CONFIG_EAP_PSK
647# EAP-PSK
648SRC_EAP_PSK = ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
649ifeq ($(CONFIG_EAP_PSK), dyn)
650CFLAGS += -DEAP_PSK_DYNAMIC
651EAPDYN += eap_psk.so
652else
653CFLAGS += -DEAP_PSK
654OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PSK))
655endif
656CONFIG_IEEE8021X_EAPOL=y
657NEED_AES=y
658NEED_AES_ENCBLOCK=y
659NEED_AES_EAX=y
660endif
661
662ifdef CONFIG_EAP_AKA
663# EAP-AKA
664ifeq ($(CONFIG_EAP_AKA), dyn)
665CFLAGS += -DEAP_AKA_DYNAMIC
666EAPDYN += eap_aka.so
667else
668CFLAGS += -DEAP_AKA
669OBJS += ../src/eap_peer/eap_aka.o
670endif
671CONFIG_IEEE8021X_EAPOL=y
672CONFIG_EAP_SIM_COMMON=y
673NEED_AES_CBC=y
674endif
675
676ifdef CONFIG_EAP_PROXY
677CFLAGS += -DCONFIG_EAP_PROXY
678OBJS += ../src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).o
679include eap_proxy_$(CONFIG_EAP_PROXY).mak
680CONFIG_IEEE8021X_EAPOL=y
681endif
682
683ifdef CONFIG_EAP_AKA_PRIME
684# EAP-AKA'
685ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
686CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
687else
688CFLAGS += -DEAP_AKA_PRIME
689endif
690endif
691
692ifdef CONFIG_EAP_SIM_COMMON
693OBJS += ../src/eap_common/eap_sim_common.o
694NEED_AES=y
695NEED_FIPS186_2_PRF=y
696endif
697
698ifdef CONFIG_EAP_FAST
699# EAP-FAST
700SRC_EAP_FAST = ../src/eap_peer/eap_fast.c ../src/eap_peer/eap_fast_pac.c
701SRC_EAP_FAST += ../src/eap_common/eap_fast_common.c
702ifeq ($(CONFIG_EAP_FAST), dyn)
703CFLAGS += -DEAP_FAST_DYNAMIC
704EAPDYN += eap_fast.so
705else
706CFLAGS += -DEAP_FAST
707OBJS += $(patsubst %.c, %.o, $(SRC_EAP_FAST))
708endif
709TLS_FUNCS=y
710CONFIG_IEEE8021X_EAPOL=y
711NEED_T_PRF=y
712endif
713
714ifdef CONFIG_EAP_TEAP
715# EAP-TEAP
716SRC_EAP_TEAP = ../src/eap_peer/eap_teap.c ../src/eap_peer/eap_teap_pac.c
717SRC_EAP_TEAP += ../src/eap_common/eap_teap_common.c
718ifeq ($(CONFIG_EAP_TEAP), dyn)
719CFLAGS += -DEAP_TEAP_DYNAMIC
720EAPDYN += eap_teap.so
721else
722CFLAGS += -DEAP_TEAP
723OBJS += $(patsubst %.c, %.o, $(SRC_EAP_TEAP))
724endif
725TLS_FUNCS=y
726CONFIG_IEEE8021X_EAPOL=y
727NEED_T_PRF=y
728NEED_SHA384=y
729NEED_TLS_PRF_SHA256=y
730NEED_TLS_PRF_SHA384=y
731endif
732
733ifdef CONFIG_EAP_PAX
734# EAP-PAX
735SRC_EAP_PAX = ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
736ifeq ($(CONFIG_EAP_PAX), dyn)
737CFLAGS += -DEAP_PAX_DYNAMIC
738EAPDYN += eap_pax.so
739else
740CFLAGS += -DEAP_PAX
741OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PAX))
742endif
743CONFIG_IEEE8021X_EAPOL=y
744endif
745
746ifdef CONFIG_EAP_SAKE
747# EAP-SAKE
748SRC_EAP_SAKE = ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
749ifeq ($(CONFIG_EAP_SAKE), dyn)
750CFLAGS += -DEAP_SAKE_DYNAMIC
751EAPDYN += eap_sake.so
752else
753CFLAGS += -DEAP_SAKE
754OBJS += $(patsubst %.c, %.o, $(SRC_EAP_SAKE))
755endif
756CONFIG_IEEE8021X_EAPOL=y
757endif
758
759ifdef CONFIG_EAP_GPSK
760# EAP-GPSK
761SRC_EAP_GPSK = ../src/eap_peer/eap_gpsk.c ../src/eap_common/eap_gpsk_common.c
762ifeq ($(CONFIG_EAP_GPSK), dyn)
763CFLAGS += -DEAP_GPSK_DYNAMIC
764EAPDYN += eap_gpsk.so
765else
766CFLAGS += -DEAP_GPSK
767OBJS += $(patsubst %.c, %.o, $(SRC_EAP_GPSK))
768endif
769CONFIG_IEEE8021X_EAPOL=y
770ifdef CONFIG_EAP_GPSK_SHA256
771CFLAGS += -DEAP_GPSK_SHA256
772endif
773endif
774
775ifdef CONFIG_EAP_PWD
776CFLAGS += -DEAP_PWD
777ifeq ($(CONFIG_TLS), wolfssl)
778CFLAGS += -DCONFIG_ECC
779endif
780OBJS += ../src/eap_peer/eap_pwd.o ../src/eap_common/eap_pwd_common.o
781CONFIG_IEEE8021X_EAPOL=y
782NEED_ECC=y
783NEED_DRAGONFLY=y
784MS_FUNCS=y
785endif
786
787ifdef CONFIG_EAP_EKE
788# EAP-EKE
789SRC_EAP_EKE = ../src/eap_peer/eap_eke.c ../src/eap_common/eap_eke_common.c
790ifeq ($(CONFIG_EAP_EKE), dyn)
791CFLAGS += -DEAP_EKE_DYNAMIC
792EAPDYN += eap_eke.so
793else
794CFLAGS += -DEAP_EKE
795OBJS += $(patsubst %.c, %.o, $(SRC_EAP_EKE))
796endif
797CONFIG_IEEE8021X_EAPOL=y
798NEED_DH_GROUPS=y
799NEED_DH_GROUPS_ALL=y
800NEED_AES_CBC=y
801endif
802
803ifdef CONFIG_WPS
804# EAP-WSC
805CFLAGS += -DCONFIG_WPS -DEAP_WSC
806OBJS += wps_supplicant.o
807OBJS += ../src/utils/uuid.o
808OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o
809OBJS += ../src/wps/wps.o
810OBJS += ../src/wps/wps_common.o
811OBJS += ../src/wps/wps_attr_parse.o
812OBJS += ../src/wps/wps_attr_build.o
813OBJS += ../src/wps/wps_attr_process.o
814OBJS += ../src/wps/wps_dev_attr.o
815OBJS += ../src/wps/wps_enrollee.o
816OBJS += ../src/wps/wps_registrar.o
817CONFIG_IEEE8021X_EAPOL=y
818NEED_DH_GROUPS=y
819NEED_BASE64=y
820NEED_AES_CBC=y
821NEED_MODEXP=y
822
823ifdef CONFIG_WPS_NFC
824CFLAGS += -DCONFIG_WPS_NFC
825OBJS += ../src/wps/ndef.o
826NEED_WPS_OOB=y
827endif
828
829ifdef NEED_WPS_OOB
830CFLAGS += -DCONFIG_WPS_OOB
831endif
832
833ifdef CONFIG_WPS_ER
834CONFIG_WPS_UPNP=y
835CFLAGS += -DCONFIG_WPS_ER
836OBJS += ../src/wps/wps_er.o
837OBJS += ../src/wps/wps_er_ssdp.o
838endif
839
840ifdef CONFIG_WPS_UPNP
841CFLAGS += -DCONFIG_WPS_UPNP
842OBJS += ../src/wps/wps_upnp.o
843OBJS += ../src/wps/wps_upnp_ssdp.o
844OBJS += ../src/wps/wps_upnp_web.o
845OBJS += ../src/wps/wps_upnp_event.o
846OBJS += ../src/wps/wps_upnp_ap.o
847OBJS += ../src/wps/upnp_xml.o
848OBJS += ../src/wps/httpread.o
849OBJS += ../src/wps/http_client.o
850OBJS += ../src/wps/http_server.o
851endif
852
853ifdef CONFIG_WPS_STRICT
854CFLAGS += -DCONFIG_WPS_STRICT
855OBJS += ../src/wps/wps_validate.o
856endif
857
858ifdef CONFIG_WPS_TESTING
859CFLAGS += -DCONFIG_WPS_TESTING
860endif
861
862ifdef CONFIG_WPS_REG_DISABLE_OPEN
863CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN
864endif
865
866endif
867
868ifdef CONFIG_EAP_IKEV2
869# EAP-IKEv2
870SRC_EAP_IKEV2 = ../src/eap_peer/eap_ikev2.c
871SRC_EAP_IKEV2 += ../src/eap_peer/ikev2.c
872SRC_EAP_IKEV2 += ../src/eap_common/eap_ikev2_common.c
873SRC_EAP_IKEV2 += ../src/eap_common/ikev2_common.c
874ifeq ($(CONFIG_EAP_IKEV2), dyn)
875CFLAGS += -DEAP_IKEV2_DYNAMIC
876EAPDYN += eap_ikev2.so
877else
878CFLAGS += -DEAP_IKEV2
879OBJS += $(patsubst %.c, %.o, $(SRC_EAP_IKEV2))
880endif
881CONFIG_IEEE8021X_EAPOL=y
882NEED_DH_GROUPS=y
883NEED_DH_GROUPS_ALL=y
884NEED_MODEXP=y
885NEED_CIPHER=y
886endif
887
888ifdef CONFIG_EAP_VENDOR_TEST
889ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
890CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
891EAPDYN += eap_vendor_test.so
892else
893CFLAGS += -DEAP_VENDOR_TEST
894OBJS += ../src/eap_peer/eap_vendor_test.o
895endif
896CONFIG_IEEE8021X_EAPOL=y
897endif
898
899ifdef CONFIG_EAP_TNC
900# EAP-TNC
901CFLAGS += -DEAP_TNC
902OBJS += ../src/eap_peer/eap_tnc.o
903OBJS += ../src/eap_peer/tncc.o
904NEED_BASE64=y
905ifndef CONFIG_NATIVE_WINDOWS
906ifndef CONFIG_DRIVER_BSD
907LIBS += -ldl
908endif
909endif
910endif
911
912ifdef CONFIG_MACSEC
913CFLAGS += -DCONFIG_MACSEC
914CONFIG_IEEE8021X_EAPOL=y
915NEED_AES_ENCBLOCK=y
916NEED_AES_UNWRAP=y
917NEED_AES_WRAP=y
918OBJS += wpas_kay.o
919OBJS += ../src/pae/ieee802_1x_cp.o
920OBJS += ../src/pae/ieee802_1x_kay.o
921OBJS += ../src/pae/ieee802_1x_key.o
922OBJS += ../src/pae/ieee802_1x_secy_ops.o
923ifdef CONFIG_AP
924OBJS += ../src/ap/wpa_auth_kay.o
925endif
926endif
927
928ifdef CONFIG_IEEE8021X_EAPOL
929# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
930CFLAGS += -DIEEE8021X_EAPOL
931OBJS += ../src/eapol_supp/eapol_supp_sm.o
932OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o
933NEED_EAP_COMMON=y
934ifdef CONFIG_DYNAMIC_EAP_METHODS
935CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
936LIBS += -ldl -rdynamic
937endif
938else
939 ifdef MULTICALL
940 OBJS += ../src/eap_common/eap_common.o
941 endif
942endif
943
944ifdef CONFIG_AP
945NEED_EAP_COMMON=y
946NEED_RSN_AUTHENTICATOR=y
947CFLAGS += -DCONFIG_AP
948OBJS += ap.o
949ifndef MULTICALL
950CFLAGS += -DCONFIG_NO_RADIUS
951CFLAGS += -DCONFIG_NO_ACCOUNTING
952CFLAGS += -DCONFIG_NO_VLAN
953endif
954OBJS += ../src/ap/hostapd.o
955OBJS += ../src/ap/wpa_auth_glue.o
956OBJS += ../src/ap/utils.o
957OBJS += ../src/ap/authsrv.o
958OBJS += ../src/ap/ap_config.o
959OBJS += ../src/ap/sta_info.o
960OBJS += ../src/ap/tkip_countermeasures.o
961OBJS += ../src/ap/ap_mlme.o
962OBJS += ../src/ap/ieee802_1x.o
963OBJS += ../src/eapol_auth/eapol_auth_sm.o
964OBJS += ../src/ap/ieee802_11_auth.o
965OBJS += ../src/ap/ieee802_11_shared.o
966OBJS += ../src/ap/drv_callbacks.o
967OBJS += ../src/ap/ap_drv_ops.o
968OBJS += ../src/ap/beacon.o
969OBJS += ../src/ap/bss_load.o
970OBJS += ../src/ap/eap_user_db.o
971OBJS += ../src/ap/neighbor_db.o
972OBJS += ../src/ap/rrm.o
973OBJS += ../src/ap/ieee802_11_ht.o
974ifdef CONFIG_IEEE80211AC
975OBJS += ../src/ap/ieee802_11_vht.o
976endif
977ifdef CONFIG_IEEE80211AX
978OBJS += ../src/ap/ieee802_11_he.o
979endif
980ifdef CONFIG_IEEE80211BE
981OBJS += ../src/ap/ieee802_11_eht.o
982endif
983ifdef CONFIG_WNM_AP
984CFLAGS += -DCONFIG_WNM_AP
985OBJS += ../src/ap/wnm_ap.o
986endif
987ifdef CONFIG_MBO
988OBJS += ../src/ap/mbo_ap.o
989endif
990ifdef CONFIG_FILS
991OBJS += ../src/ap/fils_hlp.o
992endif
993ifdef CONFIG_CTRL_IFACE
994ifdef CONFIG_CTRL_IFACE_MIB
995CFLAGS += -DCONFIG_CTRL_IFACE_MIB
996endif
997OBJS += ../src/ap/ctrl_iface_ap.o
998ifdef CONFIG_UBUS
999OBJS += ../src/ap/ubus.o
1000endif
1001endif
1002
1003CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
1004OBJS += ../src/eap_server/eap_server.o
1005OBJS += ../src/eap_server/eap_server_identity.o
1006OBJS += ../src/eap_server/eap_server_methods.o
1007
1008ifdef CONFIG_IEEE80211AC
1009CFLAGS += -DCONFIG_IEEE80211AC
1010endif
1011ifdef CONFIG_IEEE80211BE
1012CONFIG_IEEE80211AX=y
1013CFLAGS += -DCONFIG_IEEE80211BE
1014endif
1015ifdef CONFIG_IEEE80211AX
1016CFLAGS += -DCONFIG_IEEE80211AX
1017endif
1018
1019ifdef NEED_AP_MLME
1020OBJS += ../src/ap/wmm.o
1021OBJS += ../src/ap/ap_list.o
1022OBJS += ../src/ap/comeback_token.o
1023OBJS += ../src/pasn/pasn_responder.o
1024OBJS += ../src/ap/ieee802_11.o
1025OBJS += ../src/ap/hw_features.o
1026OBJS += ../src/ap/dfs.o
1027CFLAGS += -DNEED_AP_MLME
1028endif
1029ifdef CONFIG_WPS
1030CFLAGS += -DEAP_SERVER_WSC
1031OBJS += ../src/ap/wps_hostapd.o
1032OBJS += ../src/eap_server/eap_server_wsc.o
1033endif
1034ifdef CONFIG_DPP
1035OBJS += ../src/ap/dpp_hostapd.o
1036OBJS += ../src/ap/gas_query_ap.o
1037NEED_AP_GAS_SERV=y
1038endif
1039ifdef CONFIG_INTERWORKING
1040NEED_AP_GAS_SERV=y
1041endif
1042ifdef NEED_AP_GAS_SERV
1043OBJS += ../src/ap/gas_serv.o
1044endif
1045ifdef CONFIG_HS20
1046OBJS += ../src/ap/hs20.o
1047endif
1048else
1049 ifdef MULTICALL
1050 OBJS += ../src/eap_server/eap_server.o
1051 OBJS += ../src/eap_server/eap_server_identity.o
1052 OBJS += ../src/eap_server/eap_server_methods.o
1053 endif
1054endif
1055
1056ifdef CONFIG_MBO
1057OBJS += mbo.o
1058CFLAGS += -DCONFIG_MBO
1059endif
1060
1061ifdef NEED_RSN_AUTHENTICATOR
1062ifndef MULTICALL
1063CFLAGS += -DCONFIG_NO_RADIUS
1064endif
1065NEED_AES_WRAP=y
1066OBJS += ../src/ap/wpa_auth.o
1067OBJS += ../src/ap/wpa_auth_ie.o
1068OBJS += ../src/ap/pmksa_cache_auth.o
1069endif
1070
1071ifdef CONFIG_ACS
1072CFLAGS += -DCONFIG_ACS
1073OBJS += ../src/ap/acs.o
1074LIBS += -lm
1075endif
1076
1077ifdef CONFIG_PCSC
1078# PC/SC interface for smartcards (USIM, GSM SIM)
1079CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
1080OBJS += ../src/utils/pcsc_funcs.o
1081ifdef CONFIG_NATIVE_WINDOWS
1082#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
1083#dynamic symbol loading that is now used in pcsc_funcs.c
1084#LIBS += -lwinscard
1085else
1086ifdef CONFIG_OSX
1087LIBS += -framework PCSC
1088else
1089LIBS += $(shell $(PKG_CONFIG) --libs libpcsclite)
1090endif
1091endif
1092endif
1093
1094ifdef CONFIG_SIM_SIMULATOR
1095CFLAGS += -DCONFIG_SIM_SIMULATOR
1096NEED_MILENAGE=y
1097endif
1098
1099ifdef CONFIG_USIM_SIMULATOR
1100CFLAGS += -DCONFIG_USIM_SIMULATOR
1101NEED_MILENAGE=y
1102endif
1103
1104ifdef NEED_MILENAGE
1105OBJS += ../src/crypto/milenage.o
1106NEED_AES_ENCBLOCK=y
1107endif
1108
1109ifdef CONFIG_PKCS12
1110CFLAGS += -DPKCS12_FUNCS
1111endif
1112
1113ifdef CONFIG_SMARTCARD
1114CFLAGS += -DCONFIG_SMARTCARD
1115endif
1116
1117ifdef NEED_DRAGONFLY
1118OBJS += ../src/common/dragonfly.o
1119endif
1120
1121ifdef MS_FUNCS
1122OBJS += ../src/crypto/ms_funcs.o
1123NEED_DES=y
1124NEED_MD4=y
1125endif
1126
1127ifdef CHAP
1128OBJS += ../src/eap_common/chap.o
1129endif
1130
1131ifdef TLS_FUNCS
1132NEED_DES=y
1133# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, EAP_FAST, and
1134# EAP_TEAP)
1135OBJS += ../src/eap_peer/eap_tls_common.o
1136ifndef CONFIG_FIPS
1137NEED_TLS_PRF=y
1138NEED_SHA1=y
1139NEED_MD5=y
1140endif
1141endif
1142
1143ifndef CONFIG_TLS
1144CONFIG_TLS=openssl
1145endif
1146
1147ifdef CONFIG_TLSV11
1148CFLAGS += -DCONFIG_TLSV11
1149endif
1150
1151ifdef CONFIG_TLSV12
1152CFLAGS += -DCONFIG_TLSV12
1153endif
1154
1155ifeq ($(CONFIG_TLS), wolfssl)
1156CFLAGS += -DCONFIG_TLS_WOLFSSL
1157ifdef TLS_FUNCS
1158CFLAGS += -DWOLFSSL_DER_LOAD
1159OBJS += ../src/crypto/tls_wolfssl.o
1160endif
1161OBJS += ../src/crypto/crypto_wolfssl.o
1162OBJS_p += ../src/crypto/crypto_wolfssl.o
1163ifdef NEED_FIPS186_2_PRF
1164OBJS += ../src/crypto/fips_prf_wolfssl.o
1165endif
1166NEED_TLS_PRF_SHA256=y
1167LIBS += -lwolfssl -lm
1168LIBS_p += -lwolfssl -lm
1169endif
1170
1171ifeq ($(CONFIG_TLS), openssl)
1172CFLAGS += -DCONFIG_TLS_OPENSSL
1173CFLAGS += -DCRYPTO_RSA_OAEP_SHA256
1174ifdef TLS_FUNCS
1175CFLAGS += -DEAP_TLS_OPENSSL
1176OBJS += ../src/crypto/tls_openssl.o
1177OBJS += ../src/crypto/tls_openssl_ocsp.o
1178LIBS += -lssl
1179endif
1180OBJS += ../src/crypto/crypto_openssl.o
1181OBJS_p += ../src/crypto/crypto_openssl.o
1182OBJS_priv += ../src/crypto/crypto_openssl.o
1183ifdef NEED_FIPS186_2_PRF
1184OBJS += ../src/crypto/fips_prf_openssl.o
1185endif
1186NEED_TLS_PRF_SHA256=y
1187LIBS += -lcrypto
1188LIBS_p += -lcrypto
1189ifdef CONFIG_TLS_ADD_DL
1190LIBS += -ldl
1191LIBS_p += -ldl
1192endif
1193ifndef CONFIG_TLS_DEFAULT_CIPHERS
1194CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW"
1195endif
1196CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\"
1197endif
1198
1199ifeq ($(CONFIG_TLS), mbedtls)
1200CFLAGS += -DCONFIG_TLS_MBEDTLS
1201ifndef CONFIG_CRYPTO
1202CONFIG_CRYPTO=mbedtls
1203endif
1204ifdef TLS_FUNCS
1205OBJS += ../src/crypto/tls_mbedtls.o
1206LIBS += -lmbedtls -lmbedx509
1207endif
1208OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1209OBJS_p += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1210OBJS_priv += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1211ifeq ($(CONFIG_CRYPTO), mbedtls)
1212LIBS += -lmbedcrypto
1213LIBS_p += -lmbedcrypto
1214# XXX: create a config option?
1215CFLAGS += -DCRYPTO_RSA_OAEP_SHA256
1216endif
1217endif
1218
1219ifeq ($(CONFIG_TLS), gnutls)
1220CFLAGS += -DCONFIG_TLS_GNUTLS
1221ifndef CONFIG_CRYPTO
1222# default to libgcrypt
1223CONFIG_CRYPTO=gnutls
1224endif
1225ifdef TLS_FUNCS
1226OBJS += ../src/crypto/tls_gnutls.o
1227LIBS += -lgnutls -lgpg-error
1228endif
1229OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1230OBJS_p += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1231OBJS_priv += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1232ifdef NEED_FIPS186_2_PRF
1233OBJS += ../src/crypto/fips_prf_internal.o
1234SHA1OBJS += ../src/crypto/sha1-internal.o
1235endif
1236ifeq ($(CONFIG_CRYPTO), gnutls)
1237LIBS += -lgcrypt
1238LIBS_p += -lgcrypt
1239CONFIG_INTERNAL_RC4=y
1240CONFIG_INTERNAL_DH_GROUP5=y
1241endif
1242ifeq ($(CONFIG_CRYPTO), nettle)
1243LIBS += -lnettle -lgmp
1244LIBS_p += -lnettle -lgmp
1245CONFIG_INTERNAL_RC4=y
1246CONFIG_INTERNAL_DH_GROUP5=y
1247endif
1248endif
1249
1250ifeq ($(CONFIG_TLS), internal)
1251CFLAGS += -DCONFIG_TLS_INTERNAL
1252ifndef CONFIG_CRYPTO
1253CONFIG_CRYPTO=internal
1254endif
1255ifdef TLS_FUNCS
1256OBJS += ../src/crypto/crypto_internal-rsa.o
1257OBJS += ../src/crypto/tls_internal.o
1258OBJS += ../src/tls/tlsv1_common.o
1259OBJS += ../src/tls/tlsv1_record.o
1260OBJS += ../src/tls/tlsv1_cred.o
1261OBJS += ../src/tls/tlsv1_client.o
1262OBJS += ../src/tls/tlsv1_client_write.o
1263OBJS += ../src/tls/tlsv1_client_read.o
1264OBJS += ../src/tls/tlsv1_client_ocsp.o
1265OBJS += ../src/tls/rsa.o
1266OBJS += ../src/tls/x509v3.o
1267OBJS += ../src/tls/pkcs1.o
1268OBJS += ../src/tls/pkcs5.o
1269OBJS += ../src/tls/pkcs8.o
1270NEED_ASN1=y
1271NEED_BASE64=y
1272NEED_TLS_PRF=y
1273ifdef CONFIG_TLSV12
1274NEED_TLS_PRF_SHA256=y
1275endif
1276NEED_MODEXP=y
1277NEED_CIPHER=y
1278CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
1279endif
1280ifdef NEED_CIPHER
1281NEED_DES=y
1282OBJS += ../src/crypto/crypto_internal-cipher.o
1283endif
1284ifdef NEED_MODEXP
1285OBJS += ../src/crypto/crypto_internal-modexp.o
1286OBJS += ../src/tls/bignum.o
1287endif
1288ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1289OBJS += ../src/crypto/crypto_libtomcrypt.o
1290OBJS_p += ../src/crypto/crypto_libtomcrypt.o
1291LIBS += -ltomcrypt -ltfm
1292LIBS_p += -ltomcrypt -ltfm
1293CONFIG_INTERNAL_SHA256=y
1294CONFIG_INTERNAL_RC4=y
1295CONFIG_INTERNAL_DH_GROUP5=y
1296endif
1297ifeq ($(CONFIG_CRYPTO), internal)
1298OBJS += ../src/crypto/crypto_internal.o
1299OBJS_p += ../src/crypto/crypto_internal.o
1300NEED_AES_ENC=y
1301CFLAGS += -DCONFIG_CRYPTO_INTERNAL
1302ifdef CONFIG_INTERNAL_LIBTOMMATH
1303CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
1304ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
1305CFLAGS += -DLTM_FAST
1306endif
1307else
1308LIBS += -ltommath
1309LIBS_p += -ltommath
1310endif
1311CONFIG_INTERNAL_AES=y
1312CONFIG_INTERNAL_DES=y
1313CONFIG_INTERNAL_SHA1=y
1314CONFIG_INTERNAL_MD4=y
1315CONFIG_INTERNAL_MD5=y
1316CONFIG_INTERNAL_SHA256=y
1317CONFIG_INTERNAL_SHA384=y
1318CONFIG_INTERNAL_SHA512=y
1319CONFIG_INTERNAL_RC4=y
1320CONFIG_INTERNAL_DH_GROUP5=y
1321endif
1322ifeq ($(CONFIG_CRYPTO), cryptoapi)
1323OBJS += ../src/crypto/crypto_cryptoapi.o
1324OBJS_p += ../src/crypto/crypto_cryptoapi.o
1325CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
1326CONFIG_INTERNAL_SHA256=y
1327CONFIG_INTERNAL_RC4=y
1328endif
1329endif
1330
1331ifeq ($(CONFIG_TLS), linux)
1332CFLAGS += -DCONFIG_TLS_INTERNAL
1333OBJS += ../src/crypto/crypto_linux.o
1334OBJS_p += ../src/crypto/crypto_linux.o
1335ifdef TLS_FUNCS
1336OBJS += ../src/crypto/crypto_internal-rsa.o
1337OBJS += ../src/crypto/tls_internal.o
1338OBJS += ../src/tls/tlsv1_common.o
1339OBJS += ../src/tls/tlsv1_record.o
1340OBJS += ../src/tls/tlsv1_cred.o
1341OBJS += ../src/tls/tlsv1_client.o
1342OBJS += ../src/tls/tlsv1_client_write.o
1343OBJS += ../src/tls/tlsv1_client_read.o
1344OBJS += ../src/tls/tlsv1_client_ocsp.o
1345OBJS += ../src/tls/rsa.o
1346OBJS += ../src/tls/x509v3.o
1347OBJS += ../src/tls/pkcs1.o
1348OBJS += ../src/tls/pkcs5.o
1349OBJS += ../src/tls/pkcs8.o
1350NEED_ASN1=y
1351NEED_BASE64=y
1352NEED_TLS_PRF=y
1353ifdef CONFIG_TLSV12
1354NEED_TLS_PRF_SHA256=y
1355endif
1356NEED_MODEXP=y
1357NEED_CIPHER=y
1358CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
1359endif
1360ifdef NEED_MODEXP
1361OBJS += ../src/crypto/crypto_internal-modexp.o
1362OBJS += ../src/tls/bignum.o
1363CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
1364CFLAGS += -DLTM_FAST
1365endif
1366CONFIG_INTERNAL_DH_GROUP5=y
1367ifdef NEED_FIPS186_2_PRF
1368OBJS += ../src/crypto/fips_prf_internal.o
1369OBJS += ../src/crypto/sha1-internal.o
1370endif
1371endif
1372
1373ifeq ($(CONFIG_TLS), none)
1374ifdef TLS_FUNCS
1375OBJS += ../src/crypto/tls_none.o
1376CFLAGS += -DEAP_TLS_NONE
1377CONFIG_INTERNAL_AES=y
1378CONFIG_INTERNAL_SHA1=y
1379CONFIG_INTERNAL_MD5=y
1380endif
1381OBJS += ../src/crypto/crypto_none.o
1382OBJS_p += ../src/crypto/crypto_none.o
1383CONFIG_INTERNAL_SHA256=y
1384CONFIG_INTERNAL_RC4=y
1385endif
1386
1387ifdef TLS_FUNCS
1388ifdef CONFIG_SMARTCARD
1389ifndef CONFIG_NATIVE_WINDOWS
1390ifneq ($(CONFIG_L2_PACKET), freebsd)
1391LIBS += -ldl
1392endif
1393endif
1394endif
1395endif
1396
1397ifndef TLS_FUNCS
1398OBJS += ../src/crypto/tls_none.o
1399ifeq ($(CONFIG_TLS), internal)
1400CONFIG_INTERNAL_AES=y
1401CONFIG_INTERNAL_SHA1=y
1402CONFIG_INTERNAL_MD5=y
1403CONFIG_INTERNAL_RC4=y
1404endif
1405endif
1406
1407AESOBJS = # none so far (see below)
1408ifdef CONFIG_INTERNAL_AES
1409AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o
1410endif
1411
1412ifneq ($(CONFIG_TLS), openssl)
1413ifneq ($(CONFIG_TLS), wolfssl)
1414ifneq ($(CONFIG_TLS), mbedtls)
1415NEED_INTERNAL_AES_WRAP=y
1416endif
1417endif
1418endif
1419ifdef CONFIG_OPENSSL_INTERNAL_AES_WRAP
1420# Seems to be needed at least with BoringSSL
1421NEED_INTERNAL_AES_WRAP=y
1422CFLAGS += -DCONFIG_OPENSSL_INTERNAL_AES_WRAP
1423endif
1424ifdef CONFIG_FIPS
1425# Have to use internal AES key wrap routines to use OpenSSL EVP since the
1426# OpenSSL AES_wrap_key()/AES_unwrap_key() API is not available in FIPS mode.
1427NEED_INTERNAL_AES_WRAP=y
1428endif
1429
1430ifdef NEED_INTERNAL_AES_WRAP
1431ifneq ($(CONFIG_TLS), linux)
1432ifneq ($(CONFIG_TLS), mbedtls)
1433AESOBJS += ../src/crypto/aes-unwrap.o
1434endif
1435endif
1436endif
1437ifdef NEED_AES_EAX
1438AESOBJS += ../src/crypto/aes-eax.o
1439NEED_AES_CTR=y
1440endif
1441ifdef NEED_AES_SIV
1442AESOBJS += ../src/crypto/aes-siv.o
1443NEED_AES_CTR=y
1444endif
1445ifdef NEED_AES_CTR
1446ifneq ($(CONFIG_TLS), mbedtls)
1447AESOBJS += ../src/crypto/aes-ctr.o
1448endif
1449endif
1450ifdef NEED_AES_ENCBLOCK
1451ifneq ($(CONFIG_TLS), mbedtls)
1452AESOBJS += ../src/crypto/aes-encblock.o
1453endif
1454endif
1455NEED_AES_ENC=y
1456ifneq ($(CONFIG_TLS), openssl)
1457ifneq ($(CONFIG_TLS), linux)
1458ifneq ($(CONFIG_TLS), wolfssl)
1459ifneq ($(CONFIG_TLS), mbedtls)
1460AESOBJS += ../src/crypto/aes-omac1.o
1461endif
1462endif
1463endif
1464endif
1465ifdef NEED_AES_WRAP
1466NEED_AES_ENC=y
1467ifdef NEED_INTERNAL_AES_WRAP
1468ifneq ($(CONFIG_TLS), mbedtls)
1469AESOBJS += ../src/crypto/aes-wrap.o
1470endif
1471endif
1472endif
1473ifdef NEED_AES_CBC
1474NEED_AES_ENC=y
1475ifneq ($(CONFIG_TLS), openssl)
1476ifneq ($(CONFIG_TLS), linux)
1477ifneq ($(CONFIG_TLS), wolfssl)
1478ifneq ($(CONFIG_TLS), mbedtls)
1479AESOBJS += ../src/crypto/aes-cbc.o
1480endif
1481endif
1482endif
1483endif
1484endif
1485ifdef NEED_AES_ENC
1486ifdef CONFIG_INTERNAL_AES
1487AESOBJS += ../src/crypto/aes-internal-enc.o
1488endif
1489endif
1490ifdef NEED_AES
1491OBJS += $(AESOBJS)
1492endif
1493
1494ifdef NEED_SHA1
1495ifneq ($(CONFIG_TLS), openssl)
1496ifneq ($(CONFIG_TLS), linux)
1497ifneq ($(CONFIG_TLS), gnutls)
1498ifneq ($(CONFIG_TLS), wolfssl)
1499ifneq ($(CONFIG_TLS), mbedtls)
1500SHA1OBJS += ../src/crypto/sha1.o
1501endif
1502endif
1503endif
1504endif
1505endif
1506ifneq ($(CONFIG_TLS), mbedtls)
1507SHA1OBJS += ../src/crypto/sha1-prf.o
1508endif
1509ifdef CONFIG_INTERNAL_SHA1
1510SHA1OBJS += ../src/crypto/sha1-internal.o
1511ifdef NEED_FIPS186_2_PRF
1512SHA1OBJS += ../src/crypto/fips_prf_internal.o
1513endif
1514endif
1515ifdef CONFIG_NO_WPA_PASSPHRASE
1516CFLAGS += -DCONFIG_NO_PBKDF2
1517else
1518ifneq ($(CONFIG_TLS), openssl)
1519ifneq ($(CONFIG_TLS), wolfssl)
1520ifneq ($(CONFIG_TLS), mbedtls)
1521SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
1522endif
1523endif
1524endif
1525endif
1526ifdef NEED_T_PRF
1527ifneq ($(CONFIG_TLS), mbedtls)
1528SHA1OBJS += ../src/crypto/sha1-tprf.o
1529endif
1530endif
1531ifdef NEED_TLS_PRF
1532ifneq ($(CONFIG_TLS), mbedtls)
1533SHA1OBJS += ../src/crypto/sha1-tlsprf.o
1534endif
1535endif
1536endif
1537
1538ifndef CONFIG_FIPS
1539ifneq ($(CONFIG_TLS), openssl)
1540ifneq ($(CONFIG_TLS), linux)
1541ifneq ($(CONFIG_TLS), gnutls)
1542ifneq ($(CONFIG_TLS), wolfssl)
1543ifneq ($(CONFIG_TLS), mbedtls)
1544MD5OBJS += ../src/crypto/md5.o
1545endif
1546endif
1547endif
1548endif
1549endif
1550endif
1551ifdef NEED_MD5
1552ifdef CONFIG_INTERNAL_MD5
1553MD5OBJS += ../src/crypto/md5-internal.o
1554endif
1555OBJS += $(MD5OBJS)
1556OBJS_p += $(MD5OBJS)
1557OBJS_priv += $(MD5OBJS)
1558endif
1559
1560ifdef NEED_MD4
1561ifdef CONFIG_INTERNAL_MD4
1562OBJS += ../src/crypto/md4-internal.o
1563endif
1564endif
1565
1566DESOBJS = # none needed when not internal
1567ifdef NEED_DES
1568ifndef CONFIG_FIPS
1569CFLAGS += -DCONFIG_DES
1570endif
1571ifdef CONFIG_INTERNAL_DES
1572DESOBJS += ../src/crypto/des-internal.o
1573endif
1574endif
1575
1576ifdef CONFIG_NO_RC4
1577CFLAGS += -DCONFIG_NO_RC4
1578endif
1579
1580ifdef NEED_RC4
1581ifdef CONFIG_INTERNAL_RC4
1582ifndef CONFIG_NO_RC4
1583OBJS += ../src/crypto/rc4.o
1584endif
1585endif
1586endif
1587
1588ifdef CONFIG_SAE
1589ifdef NEED_SHA384
1590# Need to add HMAC-SHA384 KDF as well, if SHA384 was enabled.
1591NEED_HMAC_SHA384_KDF=y
1592endif
1593ifdef NEED_SHA512
1594# Need to add HMAC-SHA512 KDF as well, if SHA512 was enabled.
1595NEED_HMAC_SHA512_KDF=y
1596endif
1597endif
1598
1599SHA256OBJS = # none by default
1600CFLAGS += -DCONFIG_SHA256
1601ifneq ($(CONFIG_TLS), openssl)
1602ifneq ($(CONFIG_TLS), linux)
1603ifneq ($(CONFIG_TLS), gnutls)
1604ifneq ($(CONFIG_TLS), wolfssl)
1605ifneq ($(CONFIG_TLS), mbedtls)
1606SHA256OBJS += ../src/crypto/sha256.o
1607endif
1608endif
1609endif
1610endif
1611endif
1612
1613ifneq ($(CONFIG_TLS), mbedtls)
1614SHA256OBJS += ../src/crypto/sha256-prf.o
1615endif
1616ifdef CONFIG_INTERNAL_SHA256
1617SHA256OBJS += ../src/crypto/sha256-internal.o
1618endif
1619ifdef CONFIG_INTERNAL_SHA384
1620CFLAGS += -DCONFIG_INTERNAL_SHA384
1621SHA256OBJS += ../src/crypto/sha384-internal.o
1622endif
1623ifdef CONFIG_INTERNAL_SHA512
1624CFLAGS += -DCONFIG_INTERNAL_SHA512
1625SHA256OBJS += ../src/crypto/sha512-internal.o
1626endif
1627ifdef NEED_TLS_PRF_SHA256
1628ifneq ($(CONFIG_TLS), mbedtls)
1629SHA256OBJS += ../src/crypto/sha256-tlsprf.o
1630endif
1631endif
1632ifdef NEED_TLS_PRF_SHA384
1633ifneq ($(CONFIG_TLS), mbedtls)
1634SHA256OBJS += ../src/crypto/sha384-tlsprf.o
1635endif
1636endif
1637ifdef NEED_HMAC_SHA256_KDF
1638CFLAGS += -DCONFIG_HMAC_SHA256_KDF
1639ifneq ($(CONFIG_TLS), mbedtls)
1640OBJS += ../src/crypto/sha256-kdf.o
1641endif
1642endif
1643ifdef NEED_HMAC_SHA384_KDF
1644CFLAGS += -DCONFIG_HMAC_SHA384_KDF
1645ifneq ($(CONFIG_TLS), mbedtls)
1646OBJS += ../src/crypto/sha384-kdf.o
1647endif
1648endif
1649ifdef NEED_HMAC_SHA512_KDF
1650CFLAGS += -DCONFIG_HMAC_SHA512_KDF
1651ifneq ($(CONFIG_TLS), mbedtls)
1652OBJS += ../src/crypto/sha512-kdf.o
1653endif
1654endif
1655OBJS += $(SHA256OBJS)
1656ifdef NEED_SHA384
1657ifneq ($(CONFIG_TLS), openssl)
1658ifneq ($(CONFIG_TLS), linux)
1659ifneq ($(CONFIG_TLS), gnutls)
1660ifneq ($(CONFIG_TLS), wolfssl)
1661ifneq ($(CONFIG_TLS), mbedtls)
1662OBJS += ../src/crypto/sha384.o
1663endif
1664endif
1665endif
1666endif
1667endif
1668CFLAGS += -DCONFIG_SHA384
1669ifneq ($(CONFIG_TLS), mbedtls)
1670OBJS += ../src/crypto/sha384-prf.o
1671endif
1672endif
1673ifdef NEED_SHA512
1674ifneq ($(CONFIG_TLS), openssl)
1675ifneq ($(CONFIG_TLS), linux)
1676ifneq ($(CONFIG_TLS), gnutls)
1677ifneq ($(CONFIG_TLS), wolfssl)
1678ifneq ($(CONFIG_TLS), mbedtls)
1679OBJS += ../src/crypto/sha512.o
1680endif
1681endif
1682endif
1683endif
1684endif
1685CFLAGS += -DCONFIG_SHA512
1686ifneq ($(CONFIG_TLS), mbedtls)
1687OBJS += ../src/crypto/sha512-prf.o
1688endif
1689endif
1690
1691ifdef NEED_ASN1
1692OBJS += ../src/tls/asn1.o
1693endif
1694
1695ifdef NEED_DH_GROUPS
1696OBJS += ../src/crypto/dh_groups.o
1697endif
1698ifdef NEED_DH_GROUPS_ALL
1699CFLAGS += -DALL_DH_GROUPS
1700endif
1701ifdef CONFIG_INTERNAL_DH_GROUP5
1702ifdef NEED_DH_GROUPS
1703OBJS += ../src/crypto/dh_group5.o
1704endif
1705endif
1706
1707ifdef NEED_ECC
1708CFLAGS += -DCONFIG_ECC
1709endif
1710
1711ifdef CONFIG_NO_RANDOM_POOL
1712CFLAGS += -DCONFIG_NO_RANDOM_POOL
1713else
1714ifdef CONFIG_GETRANDOM
1715CFLAGS += -DCONFIG_GETRANDOM
1716endif
1717OBJS += ../src/crypto/random.o
1718endif
1719
1720ifdef CONFIG_CTRL_IFACE
1721ifeq ($(CONFIG_CTRL_IFACE), y)
1722ifdef CONFIG_NATIVE_WINDOWS
1723CONFIG_CTRL_IFACE=named_pipe
1724else
1725CONFIG_CTRL_IFACE=unix
1726endif
1727endif
1728CFLAGS += -DCONFIG_CTRL_IFACE
1729ifeq ($(CONFIG_CTRL_IFACE), unix)
1730CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1731OBJS += ../src/common/ctrl_iface_common.o
1732endif
1733ifeq ($(CONFIG_CTRL_IFACE), udp)
1734CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1735endif
1736ifeq ($(CONFIG_CTRL_IFACE), udp6)
1737CONFIG_CTRL_IFACE=udp
1738CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1739CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
1740endif
1741ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1742CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1743endif
1744ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
1745CONFIG_CTRL_IFACE=udp
1746CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1747CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
1748endif
1749ifeq ($(CONFIG_CTRL_IFACE), udp6-remote)
1750CONFIG_CTRL_IFACE=udp
1751CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1752CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
1753CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
1754endif
1755OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
1756endif
1757
1758ifdef CONFIG_CTRL_IFACE_DBUS_NEW
1759CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
1760OBJS += dbus/dbus_dict_helpers.o
1761OBJS += dbus/dbus_new_helpers.o
1762OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o
1763OBJS += dbus/dbus_common.o
1764ifdef CONFIG_WPS
1765OBJS += dbus/dbus_new_handlers_wps.o
1766endif
1767ifdef CONFIG_P2P
1768OBJS += dbus/dbus_new_handlers_p2p.o
1769endif
1770ifndef DBUS_LIBS
1771DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
1772endif
1773ifndef DBUS_INCLUDE
1774DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
1775endif
1776ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
1777OBJS += dbus/dbus_new_introspect.o
1778CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
1779endif
1780CFLAGS += $(DBUS_INCLUDE)
1781LIBS += $(DBUS_LIBS)
1782endif
1783
1784ifdef CONFIG_READLINE
1785OBJS_c += ../src/utils/edit_readline.o
1786LIBS_c += -lreadline -lncurses
1787else
1788ifdef CONFIG_WPA_CLI_EDIT
1789OBJS_c += ../src/utils/edit.o
1790else
1791OBJS_c += ../src/utils/edit_simple.o
1792endif
1793endif
1794
1795ifdef CONFIG_NATIVE_WINDOWS
1796CFLAGS += -DCONFIG_NATIVE_WINDOWS
1797LIBS += -lws2_32 -lgdi32 -lcrypt32
1798LIBS_c += -lws2_32
1799LIBS_p += -lws2_32 -lgdi32
1800ifeq ($(CONFIG_CRYPTO), cryptoapi)
1801LIBS_p += -lcrypt32
1802endif
1803endif
1804
1805ifdef CONFIG_NO_STDOUT_DEBUG
1806CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1807ifndef CONFIG_CTRL_IFACE
1808CFLAGS += -DCONFIG_NO_WPA_MSG
1809endif
1810endif
1811
1812ifdef CONFIG_IPV6
1813# for eapol_test only
1814CFLAGS += -DCONFIG_IPV6
1815endif
1816
1817ifdef CONFIG_NO_LINUX_PACKET_SOCKET_WAR
1818CFLAGS += -DCONFIG_NO_LINUX_PACKET_SOCKET_WAR
1819endif
1820
1821ifdef NEED_BASE64
1822OBJS += ../src/utils/base64.o
1823endif
1824
1825ifdef NEED_SME
1826OBJS += sme.o
1827CFLAGS += -DCONFIG_SME
1828endif
1829
1830OBJS += ../src/common/ieee802_11_common.o
1831OBJS += ../src/common/hw_features_common.o
1832
1833ifdef NEED_EAP_COMMON
1834OBJS += ../src/eap_common/eap_common.o
1835endif
1836
1837ifndef CONFIG_MAIN
1838CONFIG_MAIN=main
1839endif
1840
1841ifdef CONFIG_DEBUG_SYSLOG
1842CFLAGS += -DCONFIG_DEBUG_SYSLOG
1843ifdef CONFIG_DEBUG_SYSLOG_FACILITY
1844CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
1845endif
1846endif
1847
1848ifdef CONFIG_DEBUG_LINUX_TRACING
1849CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
1850endif
1851
1852ifdef CONFIG_DEBUG_FILE
1853CFLAGS += -DCONFIG_DEBUG_FILE
1854endif
1855
1856ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1857CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1858endif
1859
1860ifdef CONFIG_FIPS
1861CFLAGS += -DCONFIG_FIPS
1862ifneq ($(CONFIG_TLS), openssl)
1863ifneq ($(CONFIG_TLS), wolfssl)
1864ifneq ($(CONFIG_TLS), mbedtls)
1865$(error CONFIG_FIPS=y requires CONFIG_TLS=openssl)
1866endif
1867endif
1868endif
1869endif
1870
1871OBJS += $(SHA1OBJS) $(DESOBJS)
1872
1873OBJS_p += $(SHA1OBJS)
1874OBJS_p += $(SHA256OBJS)
1875OBJS_priv += $(SHA1OBJS)
1876
1877ifdef CONFIG_BGSCAN_SIMPLE
1878CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1879OBJS += bgscan_simple.o
1880NEED_BGSCAN=y
1881endif
1882
1883ifdef CONFIG_BGSCAN_LEARN
1884CFLAGS += -DCONFIG_BGSCAN_LEARN
1885OBJS += bgscan_learn.o
1886NEED_BGSCAN=y
1887endif
1888
1889ifdef NEED_BGSCAN
1890CFLAGS += -DCONFIG_BGSCAN
1891OBJS += bgscan.o
1892endif
1893
1894ifdef CONFIG_AUTOSCAN_EXPONENTIAL
1895CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL
1896OBJS += autoscan_exponential.o
1897NEED_AUTOSCAN=y
1898endif
1899
1900ifdef CONFIG_AUTOSCAN_PERIODIC
1901CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC
1902OBJS += autoscan_periodic.o
1903NEED_AUTOSCAN=y
1904endif
1905
1906ifdef NEED_AUTOSCAN
1907CFLAGS += -DCONFIG_AUTOSCAN
1908OBJS += autoscan.o
1909endif
1910
1911ifdef CONFIG_EXT_PASSWORD_TEST
1912OBJS += ../src/utils/ext_password_test.o
1913CFLAGS += -DCONFIG_EXT_PASSWORD_TEST
1914NEED_EXT_PASSWORD=y
1915endif
1916
1917ifdef CONFIG_EXT_PASSWORD_FILE
1918OBJS += ../src/utils/ext_password_file.o
1919CFLAGS += -DCONFIG_EXT_PASSWORD_FILE
1920NEED_EXT_PASSWORD=y
1921endif
1922
1923ifdef NEED_EXT_PASSWORD
1924OBJS += ../src/utils/ext_password.o
1925CFLAGS += -DCONFIG_EXT_PASSWORD
1926endif
1927
1928ifdef NEED_GAS_SERVER
1929OBJS += ../src/common/gas_server.o
1930CFLAGS += -DCONFIG_GAS_SERVER
1931NEED_GAS=y
1932endif
1933
1934ifdef NEED_GAS
1935OBJS += ../src/common/gas.o
1936OBJS += gas_query.o
1937CFLAGS += -DCONFIG_GAS
1938NEED_OFFCHANNEL=y
1939endif
1940
1941ifdef NEED_OFFCHANNEL
1942OBJS += offchannel.o
1943CFLAGS += -DCONFIG_OFFCHANNEL
1944endif
1945
1946ifdef NEED_JSON
1947OBJS += ../src/utils/json.o
1948CFLAGS += -DCONFIG_JSON
1949endif
1950
1951ifdef CONFIG_MODULE_TESTS
1952CFLAGS += -DCONFIG_MODULE_TESTS
1953OBJS += wpas_module_tests.o
1954OBJS += ../src/utils/utils_module_tests.o
1955OBJS += ../src/common/common_module_tests.o
1956OBJS += ../src/crypto/crypto_module_tests.o
1957ifdef CONFIG_WPS
1958OBJS += ../src/wps/wps_module_tests.o
1959endif
1960endif
1961
1962OBJS += ../src/drivers/driver_common.o
1963OBJS_priv += ../src/drivers/driver_common.o
1964
1965OBJS += wpa_supplicant.o events.o bssid_ignore.o wpas_glue.o scan.o
1966OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o
1967OBJS_t += ../src/radius/radius_client.o
1968OBJS_t += ../src/radius/radius.o
1969OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
1970
1971OBJS_nfc := $(OBJS) $(OBJS_l2) nfc_pw_token.o
1972OBJS_nfc += $(OBJS_d) ../src/drivers/drivers.o
1973
1974OBJS += $(CONFIG_MAIN).o
1975
1976ifdef CONFIG_PRIVSEP
1977OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o
1978OBJS_priv += $(OBJS_l2)
1979OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
1980OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
1981OBJS_priv += ../src/utils/common.o
1982OBJS_priv += ../src/utils/wpa_debug.o
1983OBJS_priv += ../src/utils/wpabuf.o
1984OBJS_priv += wpa_priv.o
1985ifdef CONFIG_DRIVER_NL80211
1986OBJS_priv += ../src/common/ieee802_11_common.o
1987endif
1988OBJS += ../src/l2_packet/l2_packet_privsep.o
1989OBJS += ../src/drivers/driver_privsep.o
1990EXTRA_progs += wpa_priv
1991else
1992OBJS += $(OBJS_d) ../src/drivers/drivers.o
1993OBJS += $(OBJS_l2)
1994endif
1995
1996ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1997CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1998OBJS += ../src/drivers/ndis_events.o
1999EXTRALIBS += -loleaut32 -lole32 -luuid
2000ifdef PLATFORMSDKLIB
2001EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
2002else
2003EXTRALIBS += WbemUuid.Lib
2004endif
2005endif
2006
2007ifdef CONFIG_FST
2008CFLAGS += -DCONFIG_FST
2009ifdef CONFIG_FST_TEST
2010CFLAGS += -DCONFIG_FST_TEST
2011endif
2012FST_OBJS += ../src/fst/fst.o
2013FST_OBJS += ../src/fst/fst_session.o
2014FST_OBJS += ../src/fst/fst_iface.o
2015FST_OBJS += ../src/fst/fst_group.o
2016FST_OBJS += ../src/fst/fst_ctrl_aux.o
2017ifdef CONFIG_CTRL_IFACE
2018FST_OBJS += ../src/fst/fst_ctrl_iface.o
2019endif
2020OBJS += $(FST_OBJS)
2021OBJS_t += $(FST_OBJS)
2022OBJS_t2 += $(FST_OBJS)
2023OBJS_nfc += $(FST_OBJS)
2024endif
2025
2026ifdef CONFIG_WEP
2027CFLAGS += -DCONFIG_WEP
2028endif
2029
2030ifdef CONFIG_NO_TKIP
2031CFLAGS += -DCONFIG_NO_TKIP
2032endif
2033
2034dynamic_eap_methods: $(EAPDYN)
2035
2036_OBJS_VAR := OBJS_priv
2037include ../src/objs.mk
2038wpa_priv: $(BCHECK) $(OBJS_priv)
2039 $(Q)$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS)
2040 @$(E) " LD " $@
2041
2042_OBJS_VAR := OBJS
2043include ../src/objs.mk
2044wpa_supplicant_multi.a: .config $(BCHECK) $(OBJS) $(EXTRA_progs)
2045 $(Q)$(CC) -c -o wpa_supplicant_multi.o -Dmain=wpa_supplicant_main $(CFLAGS) main.c
2046 @$(E) " CC " $<
2047 @rm -f $@
2048 @$(AR) cr $@ wpa_supplicant_multi.o $(OBJS)
2049
2050wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
2051 +$(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
2052 @$(E) " LD " $@
2053
2054_OBJS_VAR := OBJS_t
2055include ../src/objs.mk
2056eapol_test: $(OBJS_t)
2057 +$(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
2058 @$(E) " LD " $@
2059
2060_OBJS_VAR := OBJS_t2
2061include ../src/objs.mk
2062preauth_test: $(OBJS_t2)
2063 +$(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
2064 @$(E) " LD " $@
2065
2066_OBJS_VAR := OBJS_p
2067include ../src/objs.mk
2068wpa_passphrase: $(OBJS_p)
2069 +$(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) $(LIBS)
2070 @$(E) " LD " $@
2071
2072_OBJS_VAR := OBJS_c
2073include ../src/objs.mk
2074wpa_cli: $(OBJS_c)
2075 +$(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
2076 @$(E) " LD " $@
2077
2078LIBCTRL += ../src/common/wpa_ctrl.o
2079LIBCTRL += ../src/utils/os_$(CONFIG_OS).o
2080LIBCTRL += ../src/utils/common.o
2081LIBCTRL += ../src/utils/wpa_debug.o
2082LIBCTRLSO += ../src/common/wpa_ctrl.c
2083LIBCTRLSO += ../src/utils/os_$(CONFIG_OS).c
2084LIBCTRLSO += ../src/utils/common.c
2085LIBCTRLSO += ../src/utils/wpa_debug.c
2086
2087_OBJS_VAR := LIBCTRL
2088include ../src/objs.mk
2089libwpa_client.a: $(LIBCTRL)
2090 $(Q)rm -f $@
2091 $(Q)$(AR) crs $@ $?
2092 @$(E) " AR " $@
2093
2094libwpa_client.so: $(LIBCTRLSO)
2095 @$(E) " CC $@ ($^)"
2096 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -fPIC $^
2097
2098OBJS_wpatest := libwpa_test.o
2099_OBJS_VAR := OBJS_wpatest
2100include ../src/objs.mk
2101libwpa_test1: $(OBJS_wpatest) libwpa_client.a
2102 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test1 $(OBJS_wpatest) libwpa_client.a $(LIBS_c)
2103 @$(E) " LD " $@
2104
2105libwpa_test2: $(OBJS_wpatest) libwpa_client.so
2106 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test2 $(OBJS_wpatest) -L. -lwpa_client $(LIBS_c)
2107 @$(E) " LD " $@
2108
2109_OBJS_VAR := OBJS_nfc
2110include ../src/objs.mk
2111nfc_pw_token: $(OBJS_nfc)
2112 $(Q)$(LDO) $(LDFLAGS) -o nfc_pw_token $(OBJS_nfc) $(LIBS)
2113 @$(E) " LD " $@
2114
2115win_if_list: win_if_list.c
2116 $(Q)$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
2117 @$(E) " LD " $@
2118
2119eap_psk.so: $(SRC_EAP_PSK)
2120 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2121 -Deap_peer_psk_register=eap_peer_method_dynamic_init
2122 @$(E) " CC/LD " $@
2123
2124eap_pax.so: $(SRC_EAP_PAX)
2125 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2126 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2127 @$(E) " CC/LD " $@
2128
2129eap_peap.so: $(SRC_EAP_PEAP)
2130 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2131 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2132 @$(E) " CC/LD " $@
2133
2134eap_sake.so: $(SRC_EAP_SAKE)
2135 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2136 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2137 @$(E) " CC/LD " $@
2138
2139eap_ikev2.so: $(SRC_EAP_IKEV2)
2140 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2141 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2142 @$(E) " CC/LD " $@
2143
2144eap_eke.so: $(SRC_EAP_EKE)
2145 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2146 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2147 @$(E) " CC/LD " $@
2148
2149eap_mschapv2.so: $(SRC_EAP_MSCHAPV2)
2150 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2151 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2152 @$(E) " CC/LD " $@
2153
2154eap_fast.so: $(SRC_EAP_FAST)
2155 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2156 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2157 @$(E) " CC/LD " $@
2158
2159eap_teap.so: $(SRC_EAP_TEAP)
2160 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2161 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2162 @$(E) " CC/LD " $@
2163
2164eap_gpsk.so: $(SRC_EAP_GPSK)
2165 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2166 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2167 @$(E) " CC/LD " $@
2168
2169%.so: ../src/eap_peer/%.c
2170 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
2171 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
2172 @$(E) " CC/LD " $@
2173
2174%.service: %.service.in
2175 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
2176 @$(E) " sed" $<
2177
2178%@.service: %.service.arg.in
2179 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
2180 @$(E) " sed" $<
2181
2182dump_cflags:
2183 @printf "%s " "$(CFLAGS)"
2184
2185dump_ldflags:
2186 @printf "%s " "$(LDFLAGS) $(LIBS) $(EXTRALIBS)"
2187
2188wpa_supplicant.exe: wpa_supplicant
2189 mv -f $< $@
2190wpa_cli.exe: wpa_cli
2191 mv -f $< $@
2192wpa_passphrase.exe: wpa_passphrase
2193 mv -f $< $@
2194win_if_list.exe: win_if_list
2195 mv -f $< $@
2196eapol_test.exe: eapol_test
2197 mv -f $< $@
2198
2199WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
2200
2201windows-bin: $(WINALL)
2202 $(STRIP) $(WINALL)
2203
2204wpa_gui:
2205 @echo "wpa_gui has been removed - see wpa_gui-qt4 for replacement"
2206
2207wpa_gui-qt4/Makefile:
2208 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro
2209
2210wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts
2211 lrelease wpa_gui-qt4/wpa_gui.pro
2212
2213wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm
2214 $(MAKE) -C wpa_gui-qt4
2215
2216FIPSDIR=/usr/local/ssl/fips-2.0
2217FIPSLD=$(FIPSDIR)/bin/fipsld
2218fips:
2219 $(MAKE) CC=$(FIPSLD) FIPSLD_CC="$(CC)"
2220
2221.PHONY: lcov-html
2222lcov-html: $(call BUILDOBJ,wpa_supplicant.gcda)
2223 lcov -c -d $(BUILDDIR) > lcov.info
2224 genhtml lcov.info --output-directory lcov-html
2225
2226PASN_CFLAGS := $(CFLAGS)
2227PASN_CFLAGS += -DCONFIG_PASN
2228
2229LIBPASNSO := ../src/utils/$(CONFIG_ELOOP).c
2230LIBPASNSO += ../src/utils/wpa_debug.c
2231LIBPASNSO += ../src/utils/wpabuf.c
2232LIBPASNSO += ../src/utils/os_$(CONFIG_OS).c
2233LIBPASNSO += ../src/utils/config.c
2234LIBPASNSO += ../src/utils/common.c
2235
2236ifdef NEED_BASE64
2237LIBPASNSO += ../src/utils/base64.c
2238endif
2239
2240ifdef CONFIG_WPA_TRACE
2241LIBPASNSO += ../src/utils/trace.c
2242endif
2243
2244ifdef CONFIG_EXT_PASSWORD_FILE
2245LIBPASNSO += ../src/utils/ext_password_file.c
2246endif
2247
2248ifdef CONFIG_EXT_PASSWORD_TEST
2249LIBPASNSO += ../src/utils/ext_password_test.c
2250endif
2251
2252ifdef NEED_EXT_PASSWORD
2253LIBPASNSO += ../src/utils/ext_password.c
2254endif
2255
2256ifdef CONFIG_SAE
2257LIBPASNSO += ../src/common/sae.c
2258endif
2259
2260ifdef CONFIG_SAE_PK
2261LIBPASNSO += ../src/common/sae_pk.c
2262endif
2263
2264ifndef CONFIG_NO_WPA
2265LIBPASNSO += ../src/common/wpa_common.c
2266endif
2267
2268LIBPASNSO += ../src/common/ieee802_11_common.c
2269
2270ifdef NEED_DRAGONFLY
2271LIBPASNSO += ../src/common/dragonfly.c
2272endif
2273
2274LIBPASNSO += ../src/common/ptksa_cache.c
2275
2276ifndef CONFIG_NO_WPA
2277LIBPASNSO += ../src/rsn_supp/pmksa_cache.c
2278LIBPASNSO += ../src/rsn_supp/wpa_ie.c
2279endif
2280
2281LIBPASNSO += ../src/ap/comeback_token.c
2282LIBPASNSO += ../src/ap/pmksa_cache_auth.c
2283
2284ifdef NEED_EAP_COMMON
2285LIBPASNSO += ../src/eap_common/eap_common.c
2286endif
2287
2288ifdef CHAP
2289LIBPASNSO += ../src/eap_common/chap.c
2290endif
2291
2292ifdef CONFIG_IEEE8021X_EAPOL
2293LIBPASNSO += ../src/eap_peer/eap.c
2294LIBPASNSO += ../src/eap_peer/eap_methods.c
2295LIBPASNSO += ../src/eapol_supp/eapol_supp_sm.c
2296endif
2297
2298ifeq ($(CONFIG_TLS), wolfssl)
2299LIBPASNSO += ../src/crypto/crypto_wolfssl.c
2300ifdef TLS_FUNCS
2301LIBPASNSO += ../src/crypto/tls_wolfssl.c
2302NEED_TLS_PRF_SHA256=y
2303LIBPASNSO += -lwolfssl -lm
2304endif
2305endif
2306
2307ifeq ($(CONFIG_TLS), openssl)
2308LIBPASNSO += ../src/crypto/crypto_openssl.c
2309ifdef TLS_FUNCS
2310LIBPASNSO += ../src/crypto/tls_openssl.c
2311LIBPASNSO += -lssl -lcrypto
2312NEED_TLS_PRF_SHA256=y
2313endif
2314endif
2315
2316ifeq ($(CONFIG_TLS), gnutls)
2317LIBPASNSO += ../src/crypto/crypto_$(CONFIG_CRYPTO).c
2318ifdef TLS_FUNCS
2319LIBPASNSO += ../src/crypto/tls_gnutls.c
2320LIBPASNSO += -lgnutls -lgpg-error
2321LIBPASNSO += -lgcrypt
2322endif
2323endif
2324
2325ifdef NEED_TLS_PRF_SHA256
2326LIBPASNSO += ../src/crypto/sha256-tlsprf.c
2327endif
2328
2329ifdef NEED_SHA512
2330LIBPASNSO += ../src/crypto/sha512-prf.c
2331endif
2332
2333ifdef NEED_SHA384
2334LIBPASNSO += ../src/crypto/sha384-prf.c
2335endif
2336
2337LIBPASNSO += ../src/crypto/sha256-prf.c
2338
2339ifdef NEED_HMAC_SHA512_KDF
2340LIBPASNSO += ../src/crypto/sha512-kdf.c
2341endif
2342
2343ifdef NEED_HMAC_SHA384_KDF
2344LIBPASNSO += ../src/crypto/sha384-kdf.c
2345endif
2346
2347ifdef NEED_HMAC_SHA256_KDF
2348LIBPASNSO += ../src/crypto/sha256-kdf.c
2349endif
2350
2351ifdef NEED_DH_GROUPS
2352LIBPASNSO += ../src/crypto/dh_groups.c
2353endif
2354
2355ifdef NEED_AES_SIV
2356LIBPASNSO += ../src/crypto/aes-siv.c
2357endif
2358
2359ifdef NEED_AES_CTR
2360LIBPASNSO += ../src/crypto/aes-ctr.c
2361endif
2362
2363ifdef NEED_SHA1
2364LIBPASNSO += ../src/crypto/sha1-prf.c
2365ifdef NEED_TLS_PRF
2366LIBPASNSO += ../src/crypto/sha1-tlsprf.c
2367endif
2368endif
2369
2370LIBPASNSO += ../src/pasn/pasn_initiator.c
2371LIBPASNSO += ../src/pasn/pasn_responder.c
2372
2373libpasn.so: $(LIBPASNSO)
2374 @$(E) " CC $@ ($^)"
2375 $(Q)$(CC) $(LDFLAGS) -o $@ $(PASN_CFLAGS) -shared -fPIC -lcrypto $^
2376
2377clean: common-clean
2378 $(MAKE) -C ../src clean
2379 $(MAKE) -C dbus clean
2380 rm -f core *~ *.o *.d *.gcno *.gcda *.gcov
2381 rm -f eap_*.so $(WINALL) eapol_test preauth_test
2382 rm -f wpa_priv
2383 rm -f nfc_pw_token
2384 rm -f lcov.info
2385 rm -rf lcov-html
2386 rm -f libwpa_client.a
2387 rm -f libpasn.so
2388 rm -f libwpa_client.so
2389 rm -f libwpa_test1 libwpa_test2
2390 rm -f wpa_passphrase