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