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