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