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