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