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