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