]> git.ipfire.org Git - thirdparty/hostap.git/blame - wpa_supplicant/Makefile
Remove obsolete defconfig notes regarding EAP-FAST support in OpenSSL
[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
674ifdef CONFIG_EAP_PAX
675# EAP-PAX
676ifeq ($(CONFIG_EAP_PAX), dyn)
677CFLAGS += -DEAP_PAX_DYNAMIC
678EAPDYN += ../src/eap_peer/eap_pax.so
679else
680CFLAGS += -DEAP_PAX
681OBJS += ../src/eap_peer/eap_pax.o ../src/eap_common/eap_pax_common.o
6fc6879b
JM
682endif
683CONFIG_IEEE8021X_EAPOL=y
684endif
685
686ifdef CONFIG_EAP_SAKE
687# EAP-SAKE
688ifeq ($(CONFIG_EAP_SAKE), dyn)
689CFLAGS += -DEAP_SAKE_DYNAMIC
690EAPDYN += ../src/eap_peer/eap_sake.so
691else
692CFLAGS += -DEAP_SAKE
693OBJS += ../src/eap_peer/eap_sake.o ../src/eap_common/eap_sake_common.o
6fc6879b
JM
694endif
695CONFIG_IEEE8021X_EAPOL=y
696endif
697
698ifdef CONFIG_EAP_GPSK
699# EAP-GPSK
700ifeq ($(CONFIG_EAP_GPSK), dyn)
701CFLAGS += -DEAP_GPSK_DYNAMIC
702EAPDYN += ../src/eap_peer/eap_gpsk.so
703else
704CFLAGS += -DEAP_GPSK
705OBJS += ../src/eap_peer/eap_gpsk.o ../src/eap_common/eap_gpsk_common.o
6fc6879b
JM
706endif
707CONFIG_IEEE8021X_EAPOL=y
708ifdef CONFIG_EAP_GPSK_SHA256
709CFLAGS += -DEAP_GPSK_SHA256
710endif
711NEED_SHA256=y
bd4e9d03 712NEED_AES_OMAC1=y
6fc6879b
JM
713endif
714
df684d82
DH
715ifdef CONFIG_EAP_PWD
716CFLAGS += -DEAP_PWD
fec03f98
SP
717ifeq ($(CONFIG_TLS), wolfssl)
718CFLAGS += -DCONFIG_ECC
719endif
df684d82 720OBJS += ../src/eap_peer/eap_pwd.o ../src/eap_common/eap_pwd_common.o
df684d82
DH
721CONFIG_IEEE8021X_EAPOL=y
722NEED_SHA256=y
04b1bcc5 723NEED_ECC=y
2b84ca4d 724NEED_DRAGONFLY=y
df684d82
DH
725endif
726
7e7610d7
JM
727ifdef CONFIG_EAP_EKE
728# EAP-EKE
729ifeq ($(CONFIG_EAP_EKE), dyn)
730CFLAGS += -DEAP_EKE_DYNAMIC
731EAPDYN += ../src/eap_peer/eap_eke.so
732else
733CFLAGS += -DEAP_EKE
734OBJS += ../src/eap_peer/eap_eke.o ../src/eap_common/eap_eke_common.o
7e7610d7
JM
735endif
736CONFIG_IEEE8021X_EAPOL=y
737NEED_DH_GROUPS=y
738NEED_DH_GROUPS_ALL=y
739NEED_SHA256=y
de78844b 740NEED_AES_CBC=y
7e7610d7
JM
741endif
742
ad08c363
JM
743ifdef CONFIG_WPS
744# EAP-WSC
ad08c363 745CFLAGS += -DCONFIG_WPS -DEAP_WSC
fa201b69 746OBJS += wps_supplicant.o
ad08c363
JM
747OBJS += ../src/utils/uuid.o
748OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o
749OBJS += ../src/wps/wps.o
750OBJS += ../src/wps/wps_common.o
7d7b8e96
JM
751OBJS += ../src/wps/wps_attr_parse.o
752OBJS += ../src/wps/wps_attr_build.o
753OBJS += ../src/wps/wps_attr_process.o
ad08c363
JM
754OBJS += ../src/wps/wps_dev_attr.o
755OBJS += ../src/wps/wps_enrollee.o
756OBJS += ../src/wps/wps_registrar.o
ad08c363
JM
757CONFIG_IEEE8021X_EAPOL=y
758NEED_DH_GROUPS=y
1edb9533 759NEED_SHA256=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
857NEED_AES_OMAC1=y
858OBJS += wpas_kay.o
859OBJS += ../src/pae/ieee802_1x_cp.o
860OBJS += ../src/pae/ieee802_1x_kay.o
861OBJS += ../src/pae/ieee802_1x_key.o
862OBJS += ../src/pae/ieee802_1x_secy_ops.o
a93b369c 863ifdef CONFIG_AP
864OBJS += ../src/ap/wpa_auth_kay.o
865endif
dd10abcc
HW
866endif
867
61363945
JK
868ifdef CONFIG_IEEE8021X_EAPOL
869# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
870CFLAGS += -DIEEE8021X_EAPOL
871OBJS += ../src/eapol_supp/eapol_supp_sm.o
872OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o
873NEED_EAP_COMMON=y
874ifdef CONFIG_DYNAMIC_EAP_METHODS
875CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
876LIBS += -ldl -rdynamic
877endif
878endif
879
1581b38b 880ifdef CONFIG_AP
25c226ea 881NEED_EAP_COMMON=y
3680a5db 882NEED_RSN_AUTHENTICATOR=y
1581b38b 883CFLAGS += -DCONFIG_AP
f1a48710
JM
884OBJS += ap.o
885CFLAGS += -DCONFIG_NO_RADIUS
886CFLAGS += -DCONFIG_NO_ACCOUNTING
887CFLAGS += -DCONFIG_NO_VLAN
70db2ab3
JM
888OBJS += ../src/ap/hostapd.o
889OBJS += ../src/ap/wpa_auth_glue.o
32da61d9 890OBJS += ../src/ap/utils.o
2586bc64 891OBJS += ../src/ap/authsrv.o
6226e38d 892OBJS += ../src/ap/ap_config.o
2d5b792d 893OBJS += ../src/utils/ip_addr.o
1057d78e
JM
894OBJS += ../src/ap/sta_info.o
895OBJS += ../src/ap/tkip_countermeasures.o
6226e38d 896OBJS += ../src/ap/ap_mlme.o
1057d78e 897OBJS += ../src/ap/ieee802_1x.o
281c950b 898OBJS += ../src/eapol_auth/eapol_auth_sm.o
1057d78e 899OBJS += ../src/ap/ieee802_11_auth.o
d4370eac 900OBJS += ../src/ap/ieee802_11_shared.o
70db2ab3
JM
901OBJS += ../src/ap/drv_callbacks.o
902OBJS += ../src/ap/ap_drv_ops.o
062390ef 903OBJS += ../src/ap/beacon.o
ec8f36af 904OBJS += ../src/ap/bss_load.o
9c6f8cb9 905OBJS += ../src/ap/eap_user_db.o
9b4b2264 906OBJS += ../src/ap/neighbor_db.o
2572df34 907OBJS += ../src/ap/rrm.o
34dbfc0c
JM
908ifdef CONFIG_IEEE80211N
909OBJS += ../src/ap/ieee802_11_ht.o
f2112b2a
EP
910ifdef CONFIG_IEEE80211AC
911OBJS += ../src/ap/ieee802_11_vht.o
912endif
d512f406
PX
913ifdef CONFIG_IEEE80211AX
914OBJS += ../src/ap/ieee802_11_he.o
915endif
34dbfc0c 916endif
b5bf84ba
AS
917ifdef CONFIG_WNM_AP
918CFLAGS += -DCONFIG_WNM_AP
5d247692
JM
919OBJS += ../src/ap/wnm_ap.o
920endif
6332aaf3
JM
921ifdef CONFIG_MBO
922OBJS += ../src/ap/mbo_ap.o
923endif
54b04d6f
JM
924ifdef CONFIG_FILS
925OBJS += ../src/ap/fils_hlp.o
926endif
e653b622 927ifdef CONFIG_CTRL_IFACE
0e2d35c6 928OBJS += ../src/ap/ctrl_iface_ap.o
e653b622 929endif
f1a48710 930
12760815 931CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
94d9bfd5
JM
932OBJS += ../src/eap_server/eap_server.o
933OBJS += ../src/eap_server/eap_server_identity.o
934OBJS += ../src/eap_server/eap_server_methods.o
f1a48710 935
803a811b
JM
936ifdef CONFIG_IEEE80211N
937CFLAGS += -DCONFIG_IEEE80211N
f2112b2a
EP
938ifdef CONFIG_IEEE80211AC
939CFLAGS += -DCONFIG_IEEE80211AC
940endif
94380cb4
PX
941ifdef CONFIG_IEEE80211AX
942CFLAGS += -DCONFIG_IEEE80211AX
943endif
803a811b
JM
944endif
945
f1a48710 946ifdef NEED_AP_MLME
1057d78e
JM
947OBJS += ../src/ap/wmm.o
948OBJS += ../src/ap/ap_list.o
949OBJS += ../src/ap/ieee802_11.o
70db2ab3 950OBJS += ../src/ap/hw_features.o
e76da505 951OBJS += ../src/ap/dfs.o
fe6bdb77 952CFLAGS += -DNEED_AP_MLME
f1a48710
JM
953endif
954ifdef CONFIG_WPS
955CFLAGS += -DEAP_SERVER_WSC
32da61d9 956OBJS += ../src/ap/wps_hostapd.o
94d9bfd5 957OBJS += ../src/eap_server/eap_server_wsc.o
f1a48710 958endif
9c2b8204
JM
959ifdef CONFIG_DPP
960OBJS += ../src/ap/dpp_hostapd.o
961OBJS += ../src/ap/gas_query_ap.o
962endif
1d4839ee
JM
963ifdef CONFIG_INTERWORKING
964OBJS += ../src/ap/gas_serv.o
965endif
19a8ad99
JK
966ifdef CONFIG_HS20
967OBJS += ../src/ap/hs20.o
968endif
1581b38b
JM
969endif
970
c433c50c
AS
971ifdef CONFIG_MBO
972OBJS += mbo.o
973CFLAGS += -DCONFIG_MBO
974endif
975
3680a5db
JM
976ifdef NEED_RSN_AUTHENTICATOR
977CFLAGS += -DCONFIG_NO_RADIUS
978NEED_AES_WRAP=y
6226e38d 979OBJS += ../src/ap/wpa_auth.o
1057d78e 980OBJS += ../src/ap/wpa_auth_ie.o
6226e38d 981OBJS += ../src/ap/pmksa_cache_auth.o
3680a5db
JM
982endif
983
d9909717
TB
984ifdef CONFIG_ACS
985CFLAGS += -DCONFIG_ACS
986OBJS += ../src/ap/acs.o
987LIBS += -lm
988endif
989
6fc6879b
JM
990ifdef CONFIG_PCSC
991# PC/SC interface for smartcards (USIM, GSM SIM)
992CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
993OBJS += ../src/utils/pcsc_funcs.o
994# -lpthread may not be needed depending on how pcsc-lite was configured
995ifdef CONFIG_NATIVE_WINDOWS
996#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
997#dynamic symbol loading that is now used in pcsc_funcs.c
998#LIBS += -lwinscard
999else
b84ce655
ACB
1000ifdef CONFIG_OSX
1001LIBS += -framework PCSC
1002else
6fc6879b
JM
1003LIBS += -lpcsclite -lpthread
1004endif
1005endif
b84ce655 1006endif
6fc6879b 1007
81eec387
JM
1008ifdef CONFIG_SIM_SIMULATOR
1009CFLAGS += -DCONFIG_SIM_SIMULATOR
1010NEED_MILENAGE=y
1011endif
1012
2a24bb31
JM
1013ifdef CONFIG_USIM_SIMULATOR
1014CFLAGS += -DCONFIG_USIM_SIMULATOR
81eec387
JM
1015NEED_MILENAGE=y
1016endif
1017
1018ifdef NEED_MILENAGE
43df4cc2 1019OBJS += ../src/crypto/milenage.o
5e67037b 1020NEED_AES_ENCBLOCK=y
2a24bb31
JM
1021endif
1022
71374569
JM
1023ifdef CONFIG_PKCS12
1024CFLAGS += -DPKCS12_FUNCS
1025endif
1026
1027ifdef CONFIG_SMARTCARD
1028CFLAGS += -DCONFIG_SMARTCARD
1029endif
1030
2b84ca4d
JM
1031ifdef NEED_DRAGONFLY
1032OBJS += ../src/common/dragonfly.o
1033endif
1034
71374569
JM
1035ifdef MS_FUNCS
1036OBJS += ../src/crypto/ms_funcs.o
38b46286
JM
1037NEED_DES=y
1038NEED_MD4=y
71374569
JM
1039endif
1040
1041ifdef CHAP
1042OBJS += ../src/eap_common/chap.o
1043endif
1044
6fc6879b 1045ifdef TLS_FUNCS
38b46286 1046NEED_DES=y
6fc6879b 1047# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
6fc6879b 1048OBJS += ../src/eap_peer/eap_tls_common.o
c9e08af2 1049ifndef CONFIG_FIPS
6fc6879b 1050NEED_TLS_PRF=y
41014724
JM
1051NEED_SHA1=y
1052NEED_MD5=y
000bbd77 1053endif
c9e08af2 1054endif
000bbd77 1055
38b46286
JM
1056ifndef CONFIG_TLS
1057CONFIG_TLS=openssl
1058endif
1059
5c47af9a
JM
1060ifdef CONFIG_TLSV11
1061CFLAGS += -DCONFIG_TLSV11
1062endif
1063
ca84eed7
JM
1064ifdef CONFIG_TLSV12
1065CFLAGS += -DCONFIG_TLSV12
1066NEED_SHA256=y
1067endif
1068
fec03f98
SP
1069ifeq ($(CONFIG_TLS), wolfssl)
1070ifdef TLS_FUNCS
1071CFLAGS += -DWOLFSSL_DER_LOAD -I/usr/local/include/wolfssl
1072OBJS += ../src/crypto/tls_wolfssl.o
1073endif
1074OBJS += ../src/crypto/crypto_wolfssl.o
1075OBJS_p += ../src/crypto/crypto_wolfssl.o
1076ifdef NEED_FIPS186_2_PRF
1077OBJS += ../src/crypto/fips_prf_wolfssl.o
1078endif
ab35793e 1079NEED_TLS_PRF_SHA256=y
fec03f98
SP
1080LIBS += -lwolfssl -lm
1081LIBS_p += -lwolfssl -lm
1082endif
1083
6fc6879b 1084ifeq ($(CONFIG_TLS), openssl)
38b46286 1085ifdef TLS_FUNCS
6fc6879b
JM
1086CFLAGS += -DEAP_TLS_OPENSSL
1087OBJS += ../src/crypto/tls_openssl.o
213e158c 1088OBJS += ../src/crypto/tls_openssl_ocsp.o
38b46286
JM
1089LIBS += -lssl
1090endif
1091OBJS += ../src/crypto/crypto_openssl.o
1092OBJS_p += ../src/crypto/crypto_openssl.o
9a3cb413 1093OBJS_priv += ../src/crypto/crypto_openssl.o
38b46286
JM
1094ifdef NEED_FIPS186_2_PRF
1095OBJS += ../src/crypto/fips_prf_openssl.o
1096endif
16bc3b89
JM
1097NEED_SHA256=y
1098NEED_TLS_PRF_SHA256=y
38b46286 1099LIBS += -lcrypto
6fc6879b 1100LIBS_p += -lcrypto
411f5670
JM
1101ifdef CONFIG_TLS_ADD_DL
1102LIBS += -ldl
1103LIBS_p += -ldl
1104endif
2b9891bd
BG
1105ifndef CONFIG_TLS_DEFAULT_CIPHERS
1106CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW"
1107endif
1108CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\"
6fc6879b 1109endif
38b46286 1110
6fc6879b 1111ifeq ($(CONFIG_TLS), gnutls)
b7ed9483
JM
1112ifndef CONFIG_CRYPTO
1113# default to libgcrypt
1114CONFIG_CRYPTO=gnutls
1115endif
38b46286 1116ifdef TLS_FUNCS
6fc6879b 1117OBJS += ../src/crypto/tls_gnutls.o
38b46286 1118LIBS += -lgnutls -lgpg-error
6fc6879b 1119endif
b7ed9483
JM
1120OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1121OBJS_p += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1122OBJS_priv += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
05edfe29 1123ifdef NEED_FIPS186_2_PRF
09eef142
JM
1124OBJS += ../src/crypto/fips_prf_internal.o
1125SHA1OBJS += ../src/crypto/sha1-internal.o
05edfe29 1126endif
b7ed9483 1127ifeq ($(CONFIG_CRYPTO), gnutls)
38b46286
JM
1128LIBS += -lgcrypt
1129LIBS_p += -lgcrypt
ac73690c 1130CONFIG_INTERNAL_RC4=y
f042122a 1131CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 1132endif
b7ed9483
JM
1133ifeq ($(CONFIG_CRYPTO), nettle)
1134LIBS += -lnettle -lgmp
1135LIBS_p += -lnettle -lgmp
1136CONFIG_INTERNAL_RC4=y
1137CONFIG_INTERNAL_DH_GROUP5=y
1138endif
1139endif
38b46286 1140
6fc6879b 1141ifeq ($(CONFIG_TLS), internal)
38b46286
JM
1142ifndef CONFIG_CRYPTO
1143CONFIG_CRYPTO=internal
1144endif
1145ifdef TLS_FUNCS
be473f3f 1146OBJS += ../src/crypto/crypto_internal-rsa.o
38b46286
JM
1147OBJS += ../src/crypto/tls_internal.o
1148OBJS += ../src/tls/tlsv1_common.o
1149OBJS += ../src/tls/tlsv1_record.o
1150OBJS += ../src/tls/tlsv1_cred.o
1151OBJS += ../src/tls/tlsv1_client.o
1152OBJS += ../src/tls/tlsv1_client_write.o
1153OBJS += ../src/tls/tlsv1_client_read.o
d560288a 1154OBJS += ../src/tls/tlsv1_client_ocsp.o
38b46286
JM
1155OBJS += ../src/tls/asn1.o
1156OBJS += ../src/tls/rsa.o
1157OBJS += ../src/tls/x509v3.o
f1739bac
JM
1158OBJS += ../src/tls/pkcs1.o
1159OBJS += ../src/tls/pkcs5.o
1160OBJS += ../src/tls/pkcs8.o
1a707778 1161NEED_SHA256=y
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
1241NEED_SHA256=y
1242NEED_BASE64=y
1243NEED_TLS_PRF=y
1244ifdef CONFIG_TLSV12
1245NEED_TLS_PRF_SHA256=y
1246endif
1247NEED_MODEXP=y
1248NEED_CIPHER=y
1249CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
1250endif
1251ifdef NEED_MODEXP
1252OBJS += ../src/crypto/crypto_internal-modexp.o
1253OBJS += ../src/tls/bignum.o
1254CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
1255CFLAGS += -DLTM_FAST
1256endif
1257CONFIG_INTERNAL_DH_GROUP5=y
1258ifdef NEED_FIPS186_2_PRF
1259OBJS += ../src/crypto/fips_prf_internal.o
1260OBJS += ../src/crypto/sha1-internal.o
1261endif
1262endif
1263
6fc6879b 1264ifeq ($(CONFIG_TLS), none)
38b46286
JM
1265ifdef TLS_FUNCS
1266OBJS += ../src/crypto/tls_none.o
1267CFLAGS += -DEAP_TLS_NONE
1268CONFIG_INTERNAL_AES=y
1269CONFIG_INTERNAL_SHA1=y
1270CONFIG_INTERNAL_MD5=y
1271endif
6fc6879b
JM
1272OBJS += ../src/crypto/crypto_none.o
1273OBJS_p += ../src/crypto/crypto_none.o
1274CONFIG_INTERNAL_SHA256=y
ac73690c 1275CONFIG_INTERNAL_RC4=y
6fc6879b 1276endif
38b46286
JM
1277
1278ifdef TLS_FUNCS
1279ifdef CONFIG_SMARTCARD
1280ifndef CONFIG_NATIVE_WINDOWS
1281ifneq ($(CONFIG_L2_PACKET), freebsd)
1282LIBS += -ldl
1283endif
1284endif
1285endif
1286endif
1287
1288ifndef TLS_FUNCS
1289OBJS += ../src/crypto/tls_none.o
1290ifeq ($(CONFIG_TLS), internal)
6fc6879b
JM
1291CONFIG_INTERNAL_AES=y
1292CONFIG_INTERNAL_SHA1=y
1293CONFIG_INTERNAL_MD5=y
9d388d50 1294CONFIG_INTERNAL_RC4=y
6fc6879b 1295endif
38b46286 1296endif
6fc6879b 1297
38b46286 1298AESOBJS = # none so far (see below)
6fc6879b 1299ifdef CONFIG_INTERNAL_AES
381fcbc9 1300AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o
6fc6879b 1301endif
38b46286 1302
f19c9078 1303ifneq ($(CONFIG_TLS), openssl)
fec03f98 1304ifneq ($(CONFIG_TLS), wolfssl)
276a3c44
JM
1305NEED_INTERNAL_AES_WRAP=y
1306endif
fec03f98 1307endif
812f28b7
JM
1308ifdef CONFIG_OPENSSL_INTERNAL_AES_WRAP
1309# Seems to be needed at least with BoringSSL
1310NEED_INTERNAL_AES_WRAP=y
1311CFLAGS += -DCONFIG_OPENSSL_INTERNAL_AES_WRAP
1312endif
276a3c44
JM
1313ifdef CONFIG_FIPS
1314# Have to use internal AES key wrap routines to use OpenSSL EVP since the
1315# OpenSSL AES_wrap_key()/AES_unwrap_key() API is not available in FIPS mode.
1316NEED_INTERNAL_AES_WRAP=y
1317endif
1318
1319ifdef NEED_INTERNAL_AES_WRAP
206516e8 1320ifneq ($(CONFIG_TLS), linux)
38b46286 1321AESOBJS += ../src/crypto/aes-unwrap.o
f19c9078 1322endif
206516e8 1323endif
bd4e9d03 1324ifdef NEED_AES_EAX
38b46286 1325AESOBJS += ../src/crypto/aes-eax.o
bd4e9d03 1326NEED_AES_CTR=y
c4bb3970
JM
1327NEED_AES_OMAC1=y
1328endif
1329ifdef NEED_AES_SIV
1330AESOBJS += ../src/crypto/aes-siv.o
1331NEED_AES_CTR=y
1332NEED_AES_OMAC1=y
bd4e9d03
JM
1333endif
1334ifdef NEED_AES_CTR
1335AESOBJS += ../src/crypto/aes-ctr.o
1336endif
1337ifdef NEED_AES_ENCBLOCK
38b46286 1338AESOBJS += ../src/crypto/aes-encblock.o
bd4e9d03
JM
1339endif
1340ifdef NEED_AES_OMAC1
279d859b 1341NEED_AES_ENC=y
0b5e9855
JM
1342ifdef CONFIG_OPENSSL_CMAC
1343CFLAGS += -DCONFIG_OPENSSL_CMAC
1344else
206516e8 1345ifneq ($(CONFIG_TLS), linux)
fec03f98 1346ifneq ($(CONFIG_TLS), wolfssl)
38b46286 1347AESOBJS += ../src/crypto/aes-omac1.o
bd4e9d03 1348endif
0b5e9855 1349endif
206516e8 1350endif
fec03f98 1351endif
bd4e9d03 1352ifdef NEED_AES_WRAP
3afe7b61 1353NEED_AES_ENC=y
276a3c44 1354ifdef NEED_INTERNAL_AES_WRAP
38b46286
JM
1355AESOBJS += ../src/crypto/aes-wrap.o
1356endif
f19c9078 1357endif
38b46286 1358ifdef NEED_AES_CBC
279d859b 1359NEED_AES_ENC=y
65a7b21f 1360ifneq ($(CONFIG_TLS), openssl)
206516e8 1361ifneq ($(CONFIG_TLS), linux)
fec03f98 1362ifneq ($(CONFIG_TLS), wolfssl)
279d859b
MH
1363AESOBJS += ../src/crypto/aes-cbc.o
1364endif
65a7b21f 1365endif
206516e8 1366endif
fec03f98 1367endif
279d859b 1368ifdef NEED_AES_ENC
38b46286
JM
1369ifdef CONFIG_INTERNAL_AES
1370AESOBJS += ../src/crypto/aes-internal-enc.o
1371endif
38b46286
JM
1372endif
1373ifdef NEED_AES
1374OBJS += $(AESOBJS)
38b46286
JM
1375endif
1376
1377ifdef NEED_SHA1
030d062f 1378ifneq ($(CONFIG_TLS), openssl)
206516e8 1379ifneq ($(CONFIG_TLS), linux)
133f8d09 1380ifneq ($(CONFIG_TLS), gnutls)
fec03f98 1381ifneq ($(CONFIG_TLS), wolfssl)
38b46286 1382SHA1OBJS += ../src/crypto/sha1.o
030d062f 1383endif
206516e8 1384endif
133f8d09 1385endif
fec03f98 1386endif
d6150094 1387SHA1OBJS += ../src/crypto/sha1-prf.o
6fc6879b 1388ifdef CONFIG_INTERNAL_SHA1
928a50a3 1389SHA1OBJS += ../src/crypto/sha1-internal.o
05edfe29
JB
1390ifdef NEED_FIPS186_2_PRF
1391SHA1OBJS += ../src/crypto/fips_prf_internal.o
1392endif
6fc6879b 1393endif
62b98282
JM
1394ifdef CONFIG_NO_WPA_PASSPHRASE
1395CFLAGS += -DCONFIG_NO_PBKDF2
1396else
e40c86ad 1397ifneq ($(CONFIG_TLS), openssl)
fec03f98 1398ifneq ($(CONFIG_TLS), wolfssl)
38b46286
JM
1399SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
1400endif
e40c86ad 1401endif
fec03f98 1402endif
38b46286
JM
1403ifdef NEED_T_PRF
1404SHA1OBJS += ../src/crypto/sha1-tprf.o
1405endif
1406ifdef NEED_TLS_PRF
1407SHA1OBJS += ../src/crypto/sha1-tlsprf.o
1408endif
1409endif
1410
6e6909a9 1411ifndef CONFIG_FIPS
983c6a60 1412ifneq ($(CONFIG_TLS), openssl)
206516e8 1413ifneq ($(CONFIG_TLS), linux)
133f8d09 1414ifneq ($(CONFIG_TLS), gnutls)
fec03f98 1415ifneq ($(CONFIG_TLS), wolfssl)
6e6909a9
JM
1416MD5OBJS += ../src/crypto/md5.o
1417endif
983c6a60 1418endif
206516e8 1419endif
133f8d09 1420endif
fec03f98 1421endif
38b46286 1422ifdef NEED_MD5
6fc6879b 1423ifdef CONFIG_INTERNAL_MD5
ad01a531 1424MD5OBJS += ../src/crypto/md5-internal.o
6fc6879b 1425endif
38b46286 1426OBJS += $(MD5OBJS)
3e91d242 1427OBJS_p += $(MD5OBJS)
9a3cb413 1428OBJS_priv += $(MD5OBJS)
38b46286
JM
1429endif
1430
1431ifdef NEED_MD4
1432ifdef CONFIG_INTERNAL_MD4
1433OBJS += ../src/crypto/md4-internal.o
1434endif
1435endif
bd4e2895 1436
38b46286
JM
1437DESOBJS = # none needed when not internal
1438ifdef NEED_DES
fec03f98
SP
1439ifndef CONFIG_FIPS
1440CFLAGS += -DCONFIG_DES
1441endif
6fc6879b 1442ifdef CONFIG_INTERNAL_DES
657f0381 1443DESOBJS += ../src/crypto/des-internal.o
6fc6879b 1444endif
38b46286 1445endif
6fc6879b 1446
7cb53ded
JM
1447ifdef CONFIG_NO_RC4
1448CFLAGS += -DCONFIG_NO_RC4
1449endif
1450
38b46286 1451ifdef NEED_RC4
ac73690c 1452ifdef CONFIG_INTERNAL_RC4
7cb53ded 1453ifndef CONFIG_NO_RC4
ac73690c
JM
1454OBJS += ../src/crypto/rc4.o
1455endif
1d8ce433 1456endif
7cb53ded 1457endif
1d8ce433 1458
38b46286 1459SHA256OBJS = # none by default
6fc6879b 1460ifdef NEED_SHA256
00468b46 1461CFLAGS += -DCONFIG_SHA256
26a37922 1462ifneq ($(CONFIG_TLS), openssl)
206516e8 1463ifneq ($(CONFIG_TLS), linux)
133f8d09 1464ifneq ($(CONFIG_TLS), gnutls)
fec03f98 1465ifneq ($(CONFIG_TLS), wolfssl)
598a792d 1466SHA256OBJS += ../src/crypto/sha256.o
26a37922 1467endif
206516e8 1468endif
133f8d09 1469endif
fec03f98 1470endif
ab637dcb 1471SHA256OBJS += ../src/crypto/sha256-prf.o
598a792d
JB
1472ifdef CONFIG_INTERNAL_SHA256
1473SHA256OBJS += ../src/crypto/sha256-internal.o
1474endif
6bb6a9ce
PR
1475ifdef CONFIG_INTERNAL_SHA384
1476CFLAGS += -DCONFIG_INTERNAL_SHA384
1477SHA256OBJS += ../src/crypto/sha384-internal.o
1478endif
1479ifdef CONFIG_INTERNAL_SHA512
1480CFLAGS += -DCONFIG_INTERNAL_SHA512
1481SHA256OBJS += ../src/crypto/sha512-internal.o
1482endif
83074898
JM
1483ifdef NEED_TLS_PRF_SHA256
1484SHA256OBJS += ../src/crypto/sha256-tlsprf.o
1485endif
02a8d45a 1486ifdef NEED_HMAC_SHA256_KDF
8f3ea317 1487CFLAGS += -DCONFIG_HMAC_SHA256_KDF
02a8d45a
JM
1488OBJS += ../src/crypto/sha256-kdf.o
1489endif
77f273c8
JM
1490ifdef NEED_HMAC_SHA384_KDF
1491CFLAGS += -DCONFIG_HMAC_SHA384_KDF
1492OBJS += ../src/crypto/sha384-kdf.o
1493endif
1494ifdef NEED_HMAC_SHA512_KDF
1495CFLAGS += -DCONFIG_HMAC_SHA512_KDF
1496OBJS += ../src/crypto/sha512-kdf.o
1497endif
598a792d 1498OBJS += $(SHA256OBJS)
38b46286 1499endif
97ae35a8 1500ifdef NEED_SHA384
62944f7d 1501ifneq ($(CONFIG_TLS), openssl)
206516e8 1502ifneq ($(CONFIG_TLS), linux)
133f8d09 1503ifneq ($(CONFIG_TLS), gnutls)
fec03f98 1504ifneq ($(CONFIG_TLS), wolfssl)
62944f7d
JM
1505OBJS += ../src/crypto/sha384.o
1506endif
206516e8 1507endif
133f8d09 1508endif
fec03f98 1509endif
97ae35a8 1510CFLAGS += -DCONFIG_SHA384
d9c807ca 1511OBJS += ../src/crypto/sha384-prf.o
97ae35a8 1512endif
77f273c8
JM
1513ifdef NEED_SHA512
1514ifneq ($(CONFIG_TLS), openssl)
1515ifneq ($(CONFIG_TLS), linux)
133f8d09 1516ifneq ($(CONFIG_TLS), gnutls)
fec03f98 1517ifneq ($(CONFIG_TLS), wolfssl)
77f273c8
JM
1518OBJS += ../src/crypto/sha512.o
1519endif
1520endif
133f8d09 1521endif
fec03f98 1522endif
77f273c8
JM
1523CFLAGS += -DCONFIG_SHA512
1524OBJS += ../src/crypto/sha512-prf.o
1525endif
38b46286 1526
38b46286
JM
1527ifdef NEED_DH_GROUPS
1528OBJS += ../src/crypto/dh_groups.o
38b46286 1529endif
38b46286 1530ifdef NEED_DH_GROUPS_ALL
38b46286
JM
1531CFLAGS += -DALL_DH_GROUPS
1532endif
50ceddcf
JM
1533ifdef CONFIG_INTERNAL_DH_GROUP5
1534ifdef NEED_DH_GROUPS
1535OBJS += ../src/crypto/dh_group5.o
1536endif
38b46286 1537endif
6fc6879b 1538
aadabe70
JM
1539ifdef NEED_ECC
1540CFLAGS += -DCONFIG_ECC
1541endif
1542
bbb921da
JM
1543ifdef CONFIG_NO_RANDOM_POOL
1544CFLAGS += -DCONFIG_NO_RANDOM_POOL
1545else
89a7cdd6
LR
1546ifdef CONFIG_GETRANDOM
1547CFLAGS += -DCONFIG_GETRANDOM
1548endif
bbb921da
JM
1549OBJS += ../src/crypto/random.o
1550endif
1551
6fc6879b
JM
1552ifdef CONFIG_CTRL_IFACE
1553ifeq ($(CONFIG_CTRL_IFACE), y)
1554ifdef CONFIG_NATIVE_WINDOWS
1555CONFIG_CTRL_IFACE=named_pipe
1556else
1557CONFIG_CTRL_IFACE=unix
1558endif
1559endif
1560CFLAGS += -DCONFIG_CTRL_IFACE
1561ifeq ($(CONFIG_CTRL_IFACE), unix)
1562CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1a2124c6 1563OBJS += ../src/common/ctrl_iface_common.o
6fc6879b
JM
1564endif
1565ifeq ($(CONFIG_CTRL_IFACE), udp)
1566CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1567endif
4db216fc
JD
1568ifeq ($(CONFIG_CTRL_IFACE), udp6)
1569CONFIG_CTRL_IFACE=udp
1570CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1571CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
1572endif
6fc6879b
JM
1573ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1574CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1575endif
afadf423
JD
1576ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
1577CONFIG_CTRL_IFACE=udp
1578CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1579CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
1580endif
4db216fc
JD
1581ifeq ($(CONFIG_CTRL_IFACE), udp6-remote)
1582CONFIG_CTRL_IFACE=udp
1583CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1584CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
1585CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
1586endif
6fc6879b
JM
1587OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
1588endif
1589
8fc2fb56 1590ifdef CONFIG_CTRL_IFACE_DBUS_NEW
6a8dee76
LR
1591CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
1592OBJS += dbus/dbus_dict_helpers.o
1593OBJS += dbus/dbus_new_helpers.o
1594OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o
1595OBJS += dbus/dbus_common.o
36da1358 1596ifdef CONFIG_WPS
6a8dee76 1597OBJS += dbus/dbus_new_handlers_wps.o
36da1358 1598endif
9abafccc 1599ifdef CONFIG_P2P
6a8dee76 1600OBJS += dbus/dbus_new_handlers_p2p.o
9abafccc 1601endif
8fc2fb56 1602ifndef DBUS_LIBS
572a171f 1603DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
8fc2fb56
WS
1604endif
1605ifndef DBUS_INCLUDE
572a171f 1606DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
8fc2fb56
WS
1607endif
1608ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
6a8dee76
LR
1609OBJS += dbus/dbus_new_introspect.o
1610CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
6fc6879b 1611endif
6a8dee76 1612CFLAGS += $(DBUS_INCLUDE)
8fc2fb56 1613LIBS += $(DBUS_LIBS)
6a8dee76 1614endif
6fc6879b
JM
1615
1616ifdef CONFIG_READLINE
e8ecb5fb 1617OBJS_c += ../src/utils/edit_readline.o
33bce0e7 1618LIBS_c += -lreadline -lncurses
82a855bd 1619else
aee680e8 1620ifdef CONFIG_WPA_CLI_EDIT
82a855bd
JM
1621OBJS_c += ../src/utils/edit.o
1622else
1623OBJS_c += ../src/utils/edit_simple.o
1624endif
aee680e8
JM
1625endif
1626
6fc6879b
JM
1627ifdef CONFIG_NATIVE_WINDOWS
1628CFLAGS += -DCONFIG_NATIVE_WINDOWS
1629LIBS += -lws2_32 -lgdi32 -lcrypt32
1630LIBS_c += -lws2_32
1631LIBS_p += -lws2_32 -lgdi32
1632ifeq ($(CONFIG_CRYPTO), cryptoapi)
1633LIBS_p += -lcrypt32
1634endif
1635endif
1636
1637ifdef CONFIG_NO_STDOUT_DEBUG
1638CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1639ifndef CONFIG_CTRL_IFACE
1640CFLAGS += -DCONFIG_NO_WPA_MSG
1641endif
1642endif
1643
1644ifdef CONFIG_IPV6
1645# for eapol_test only
1646CFLAGS += -DCONFIG_IPV6
1647endif
1648
67deaa58
MSS
1649ifdef CONFIG_NO_LINUX_PACKET_SOCKET_WAR
1650CFLAGS += -DCONFIG_NO_LINUX_PACKET_SOCKET_WAR
1651endif
1652
6fc6879b
JM
1653ifdef NEED_BASE64
1654OBJS += ../src/utils/base64.o
1655endif
1656
c2a04078
JM
1657ifdef NEED_SME
1658OBJS += sme.o
1659CFLAGS += -DCONFIG_SME
1660endif
1661
26c9d7ea 1662OBJS += ../src/common/ieee802_11_common.o
269dfe23 1663OBJS += ../src/common/hw_features_common.o
6fc6879b 1664
25c226ea
JM
1665ifdef NEED_EAP_COMMON
1666OBJS += ../src/eap_common/eap_common.o
1667endif
1668
6fc6879b
JM
1669ifndef CONFIG_MAIN
1670CONFIG_MAIN=main
1671endif
1672
cca87731
SL
1673ifdef CONFIG_DEBUG_SYSLOG
1674CFLAGS += -DCONFIG_DEBUG_SYSLOG
3e199621
SL
1675ifdef CONFIG_DEBUG_SYSLOG_FACILITY
1676CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
1677endif
cca87731
SL
1678endif
1679
4f68895e
JB
1680ifdef CONFIG_DEBUG_LINUX_TRACING
1681CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
1682endif
1683
6fc6879b
JM
1684ifdef CONFIG_DEBUG_FILE
1685CFLAGS += -DCONFIG_DEBUG_FILE
1686endif
1687
46690a3b
JM
1688ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1689CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1690endif
1691
577072b1
JM
1692ifdef CONFIG_FIPS
1693CFLAGS += -DCONFIG_FIPS
982bafed 1694ifneq ($(CONFIG_TLS), openssl)
fec03f98 1695ifneq ($(CONFIG_TLS), wolfssl)
982bafed
JM
1696$(error CONFIG_FIPS=y requires CONFIG_TLS=openssl)
1697endif
577072b1 1698endif
fec03f98 1699endif
577072b1 1700
657f0381 1701OBJS += $(SHA1OBJS) $(DESOBJS)
928a50a3 1702
be473f3f 1703OBJS_p += $(SHA1OBJS)
48f24f93 1704OBJS_p += $(SHA256OBJS)
9a3cb413 1705OBJS_priv += $(SHA1OBJS)
6fc6879b 1706
60b94c98
JM
1707ifdef CONFIG_BGSCAN_SIMPLE
1708CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1709OBJS += bgscan_simple.o
1710NEED_BGSCAN=y
1711endif
1712
c4d71c25
JM
1713ifdef CONFIG_BGSCAN_LEARN
1714CFLAGS += -DCONFIG_BGSCAN_LEARN
1715OBJS += bgscan_learn.o
1716NEED_BGSCAN=y
1717endif
1718
60b94c98
JM
1719ifdef NEED_BGSCAN
1720CFLAGS += -DCONFIG_BGSCAN
1721OBJS += bgscan.o
1722endif
1723
c0fba2b3
TB
1724ifdef CONFIG_AUTOSCAN_EXPONENTIAL
1725CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL
1726OBJS += autoscan_exponential.o
1727NEED_AUTOSCAN=y
1728endif
1729
e3659c89
TB
1730ifdef CONFIG_AUTOSCAN_PERIODIC
1731CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC
1732OBJS += autoscan_periodic.o
1733NEED_AUTOSCAN=y
1734endif
1735
7c865c68
TB
1736ifdef NEED_AUTOSCAN
1737CFLAGS += -DCONFIG_AUTOSCAN
1738OBJS += autoscan.o
1739endif
1740
306ae225
JM
1741ifdef CONFIG_EXT_PASSWORD_TEST
1742OBJS += ../src/utils/ext_password_test.o
1743CFLAGS += -DCONFIG_EXT_PASSWORD_TEST
1744NEED_EXT_PASSWORD=y
1745endif
1746
1747ifdef NEED_EXT_PASSWORD
1748OBJS += ../src/utils/ext_password.o
1749CFLAGS += -DCONFIG_EXT_PASSWORD
1750endif
1751
461d39af
JM
1752ifdef NEED_GAS_SERVER
1753OBJS += ../src/common/gas_server.o
1754CFLAGS += -DCONFIG_GAS_SERVER
1755NEED_GAS=y
1756endif
1757
0c840c33
JM
1758ifdef NEED_GAS
1759OBJS += ../src/common/gas.o
04ea7b79
JM
1760OBJS += gas_query.o
1761CFLAGS += -DCONFIG_GAS
24f6497c
JM
1762NEED_OFFCHANNEL=y
1763endif
1764
1765ifdef NEED_OFFCHANNEL
1766OBJS += offchannel.o
1767CFLAGS += -DCONFIG_OFFCHANNEL
0c840c33
JM
1768endif
1769
005be3da
JM
1770ifdef NEED_JSON
1771OBJS += ../src/utils/json.o
1772CFLAGS += -DCONFIG_JSON
1773endif
1774
9a17b36e
AK
1775ifdef CONFIG_MODULE_TESTS
1776CFLAGS += -DCONFIG_MODULE_TESTS
1777OBJS += wpas_module_tests.o
1778OBJS += ../src/utils/utils_module_tests.o
1779OBJS += ../src/common/common_module_tests.o
942b7546 1780OBJS += ../src/crypto/crypto_module_tests.o
9a17b36e
AK
1781ifdef CONFIG_WPS
1782OBJS += ../src/wps/wps_module_tests.o
1783endif
1784endif
1785
aea855d7 1786OBJS += ../src/drivers/driver_common.o
90d215b2 1787OBJS_priv += ../src/drivers/driver_common.o
aea855d7 1788
6fc6879b 1789OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o
74784010
JM
1790OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o
1791OBJS_t += ../src/radius/radius_client.o
a7baefda 1792OBJS_t += ../src/radius/radius.o
74784010 1793ifndef CONFIG_AP
6fc6879b 1794OBJS_t += ../src/utils/ip_addr.o
74784010 1795endif
6fc6879b 1796OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
40a5e3bf
JM
1797
1798OBJS_nfc := $(OBJS) $(OBJS_l2) nfc_pw_token.o
1799OBJS_nfc += $(OBJS_d) ../src/drivers/drivers.o
1800
6fc6879b
JM
1801OBJS += $(CONFIG_MAIN).o
1802
1803ifdef CONFIG_PRIVSEP
d1f9c410 1804OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o
6fc6879b
JM
1805OBJS_priv += $(OBJS_l2)
1806OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
1807OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
1808OBJS_priv += ../src/utils/common.o
1809OBJS_priv += ../src/utils/wpa_debug.o
716d543d 1810OBJS_priv += ../src/utils/wpabuf.o
6fc6879b 1811OBJS_priv += wpa_priv.o
8d263912
JM
1812ifdef CONFIG_DRIVER_NL80211
1813OBJS_priv += ../src/common/ieee802_11_common.o
1814endif
6fc6879b
JM
1815OBJS += ../src/l2_packet/l2_packet_privsep.o
1816OBJS += ../src/drivers/driver_privsep.o
1817EXTRA_progs += wpa_priv
1818else
1819OBJS += $(OBJS_d) ../src/drivers/drivers.o
1820OBJS += $(OBJS_l2)
1821endif
1822
1823ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1824CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1825OBJS += ../src/drivers/ndis_events.o
1826EXTRALIBS += -loleaut32 -lole32 -luuid
1827ifdef PLATFORMSDKLIB
1828EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1829else
1830EXTRALIBS += WbemUuid.Lib
1831endif
1832endif
1833
79c7b36d
AN
1834ifdef CONFIG_FST
1835CFLAGS += -DCONFIG_FST
a8dab08a
AN
1836ifdef CONFIG_FST_TEST
1837CFLAGS += -DCONFIG_FST_TEST
1838endif
79c7b36d
AN
1839FST_OBJS += ../src/fst/fst.o
1840FST_OBJS += ../src/fst/fst_session.o
1841FST_OBJS += ../src/fst/fst_iface.o
1842FST_OBJS += ../src/fst/fst_group.o
1843FST_OBJS += ../src/fst/fst_ctrl_aux.o
1844ifdef CONFIG_CTRL_IFACE
1845FST_OBJS += ../src/fst/fst_ctrl_iface.o
1846endif
1847OBJS += $(FST_OBJS)
1848OBJS_t += $(FST_OBJS)
1849OBJS_t2 += $(FST_OBJS)
e567c582 1850OBJS_nfc += $(FST_OBJS)
79c7b36d
AN
1851endif
1852
6fc6879b
JM
1853ifndef LDO
1854LDO=$(CC)
1855endif
1856
586bad51
JM
1857Q=@
1858E=echo
1859ifeq ($(V), 1)
1860Q=
1861E=true
1862endif
010fa245
JM
1863ifeq ($(QUIET), 1)
1864Q=@
1865E=true
1866endif
586bad51 1867
6fc6879b
JM
1868dynamic_eap_methods: $(EAPDYN)
1869
ba30964b 1870../src/drivers/build.wpa_supplicant:
5008cb5e 1871 @if [ -f ../src/drivers/build.hostapd ]; then \
ba30964b
JM
1872 $(MAKE) -C ../src/drivers clean; \
1873 fi
1874 @touch ../src/drivers/build.wpa_supplicant
1875
1876BCHECK=../src/drivers/build.wpa_supplicant
1877
1878wpa_priv: $(BCHECK) $(OBJS_priv)
586bad51
JM
1879 $(Q)$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS)
1880 @$(E) " LD " $@
6fc6879b 1881
8205c82a
AD
1882$(OBJS_c) $(OBJS_t) $(OBJS_t2) $(OBJS) $(BCHECK) $(EXTRA_progs): .config
1883
1884wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
586bad51
JM
1885 $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
1886 @$(E) " LD " $@
6fc6879b 1887
8205c82a 1888eapol_test: $(OBJS_t)
586bad51
JM
1889 $(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
1890 @$(E) " LD " $@
6fc6879b 1891
8205c82a 1892preauth_test: $(OBJS_t2)
586bad51
JM
1893 $(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
1894 @$(E) " LD " $@
6fc6879b
JM
1895
1896wpa_passphrase: $(OBJS_p)
14dcb22a 1897 $(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) $(LIBS)
586bad51 1898 @$(E) " LD " $@
6fc6879b
JM
1899
1900wpa_cli: $(OBJS_c)
586bad51
JM
1901 $(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
1902 @$(E) " LD " $@
6fc6879b 1903
ab647ffe
JM
1904LIBCTRL += ../src/common/wpa_ctrl.o
1905LIBCTRL += ../src/utils/os_$(CONFIG_OS).o
736b7cb2 1906LIBCTRL += ../src/utils/common.o
ab647ffe 1907LIBCTRL += ../src/utils/wpa_debug.o
701d9729
KV
1908LIBCTRLSO += ../src/common/wpa_ctrl.c
1909LIBCTRLSO += ../src/utils/os_$(CONFIG_OS).c
736b7cb2 1910LIBCTRLSO += ../src/utils/common.c
701d9729 1911LIBCTRLSO += ../src/utils/wpa_debug.c
ab647ffe 1912
701d9729 1913libwpa_client.a: $(LIBCTRL)
ab647ffe
JM
1914 $(Q)rm -f $@
1915 $(Q)$(AR) crs $@ $?
1916 @$(E) " AR " $@
1917
701d9729
KV
1918libwpa_client.so: $(LIBCTRLSO)
1919 @$(E) " CC $@ ($^)"
1920 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -fPIC $^
1921
39c3c9b7
JM
1922libwpa_test1: libwpa_test.o libwpa_client.a
1923 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test1 libwpa_test.o libwpa_client.a $(LIBS_c)
1f1e6192
JM
1924 @$(E) " LD " $@
1925
39c3c9b7
JM
1926libwpa_test2: libwpa_test.o libwpa_client.so
1927 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test2 libwpa_test.o -L. -lwpa_client $(LIBS_c)
1f1e6192
JM
1928 @$(E) " LD " $@
1929
40a5e3bf
JM
1930nfc_pw_token: $(OBJS_nfc)
1931 $(Q)$(LDO) $(LDFLAGS) -o nfc_pw_token $(OBJS_nfc) $(LIBS)
1932 @$(E) " LD " $@
1933
6fc6879b 1934win_if_list: win_if_list.c
586bad51
JM
1935 $(Q)$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
1936 @$(E) " LD " $@
6fc6879b
JM
1937
1938eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
466940c5 1939 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1940 -Deap_peer_psk_register=eap_peer_method_dynamic_init
1941
1942eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
466940c5 1943 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1944 -Deap_peer_pax_register=eap_peer_method_dynamic_init
1945
1946eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
466940c5 1947 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1948 -Deap_peer_sake_register=eap_peer_method_dynamic_init
1949
ad08c363 1950eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c
466940c5 1951 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
ad08c363
JM
1952 -Deap_peer_wsc_register=eap_peer_method_dynamic_init
1953
6fc6879b 1954eap_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 1955 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1956 -Deap_peer_ikev2_register=eap_peer_method_dynamic_init
1957
7e7610d7
JM
1958eap_eke.so: ../src/eap_peer/eap_eke.c ../src/eap_common/eap_eke_common.c
1959 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1960 -Deap_peer_eke_register=eap_peer_method_dynamic_init
1961
6fc6879b 1962%.so: %.c
466940c5 1963 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
4c2660c2 1964 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
6fc6879b 1965
a4cfb486
JM
1966ifdef CONFIG_CODE_COVERAGE
1967%.o: %.c
1968 @$(E) " CC " $<
1969 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<)
1970else
b2840aaf
JB
1971%.o: %.c
1972 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1973 @$(E) " CC " $<
a4cfb486 1974endif
6fc6879b 1975
f0573c79 1976%.service: %.service.in
6a8dee76 1977 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
010fa245 1978 @$(E) " sed" $<
f0573c79 1979
6897ce14 1980%@.service: %.service.arg.in
6a8dee76 1981 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
010fa245 1982 @$(E) " sed" $<
6897ce14 1983
6fc6879b
JM
1984wpa_supplicant.exe: wpa_supplicant
1985 mv -f $< $@
1986wpa_cli.exe: wpa_cli
1987 mv -f $< $@
1988wpa_passphrase.exe: wpa_passphrase
1989 mv -f $< $@
1990win_if_list.exe: win_if_list
1991 mv -f $< $@
1992eapol_test.exe: eapol_test
1993 mv -f $< $@
1994
1995WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
1996
1997windows-bin: $(WINALL)
1998 $(STRIP) $(WINALL)
1999
67a52064
JM
2000wpa_gui:
2001 @echo "wpa_gui has been removed - see wpa_gui-qt4 for replacement"
6fc6879b
JM
2002
2003wpa_gui-qt4/Makefile:
bd143cc5 2004 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro
6fc6879b 2005
0b86f67a
JM
2006wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts
2007 lrelease wpa_gui-qt4/wpa_gui.pro
2008
2009wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm
6fc6879b
JM
2010 $(MAKE) -C wpa_gui-qt4
2011
e0011918
JM
2012FIPSDIR=/usr/local/ssl/fips-2.0
2013FIPSLD=$(FIPSDIR)/bin/fipsld
2014fips:
2015 $(MAKE) CC=$(FIPSLD) FIPSLD_CC="$(CC)"
2016
a4cfb486
JM
2017lcov-html: wpa_supplicant.gcda
2018 lcov -c -d .. > lcov.info
2019 genhtml lcov.info --output-directory lcov-html
2020
6fc6879b
JM
2021clean:
2022 $(MAKE) -C ../src clean
eb3b34ce 2023 $(MAKE) -C dbus clean
7feff065
JM
2024 rm -f core *~ *.o *.d *.gcno *.gcda *.gcov
2025 rm -f eap_*.so $(ALL) $(WINALL) eapol_test preauth_test
385f16c6 2026 rm -f wpa_priv
40a5e3bf 2027 rm -f nfc_pw_token
a4cfb486
JM
2028 rm -f lcov.info
2029 rm -rf lcov-html
701d9729
KV
2030 rm -f libwpa_client.a
2031 rm -f libwpa_client.so
1f1e6192 2032 rm -f libwpa_test1 libwpa_test2
6fc6879b 2033
6fc6879b 2034-include $(OBJS:%.o=%.d)