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