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