Makefile revision 1.6 1 BINALL=wpa_supplicant wpa_cli
2
3 ALL = $(BINALL)
4 ALL += systemd/wpa_supplicant.service
5 ALL += systemd/wpa_supplicant@.service
6 ALL += systemd/wpa_supplicant-nl80211@.service
7 ALL += systemd/wpa_supplicant-wired@.service
8 ALL += dbus/fi.w1.wpa_supplicant1.service
9
10 EXTRA_TARGETS=dynamic_eap_methods
11
12 CONFIG_FILE=.config
13 include ../src/build.rules
14
15 ifdef CONFIG_BUILD_PASN_SO
16 # add the dependency this way to allow CONFIG_BUILD_PASN_SO
17 # being set in the config which is read by build.rules
18 _all: libpasn.so
19 endif
20
21 ifdef CONFIG_BUILD_WPA_CLIENT_SO
22 # add the dependency this way to allow CONFIG_BUILD_WPA_CLIENT_SO
23 # being set in the config which is read by build.rules
24 _all: libwpa_client.so
25 endif
26
27 ifndef CONFIG_NO_WPA_PASSPHRASE
28 # add the dependency this way to allow CONFIG_NO_WPA_PASSPHRASE
29 # being set in the config which is read by build.rules
30 _all: wpa_passphrase
31 endif
32
33 ifdef LIBS
34 # If LIBS is set with some global build system defaults, clone those for
35 # LIBS_c and LIBS_p to cover wpa_passphrase and wpa_cli as well.
36 ifndef LIBS_c
37 LIBS_c := $(LIBS)
38 endif
39 ifndef LIBS_p
40 LIBS_p := $(LIBS)
41 endif
42 endif
43
44 export LIBDIR ?= /usr/local/lib
45 export INCDIR ?= /usr/local/include
46 export BINDIR ?= /usr/local/sbin
47 PKG_CONFIG ?= pkg-config
48
49 CFLAGS += $(EXTRA_CFLAGS)
50 CFLAGS += -I$(abspath ../src)
51 CFLAGS += -I$(abspath ../src/utils)
52
53 ifndef CONFIG_NO_GITVER
54 # Add VERSION_STR postfix for builds from a git repository
55 ifeq ($(wildcard ../.git),../.git)
56 GITVER := $(shell git describe --dirty=+)
57 ifneq ($(GITVER),)
58 CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\"
59 endif
60 endif
61 endif
62
63 ifdef CONFIG_TESTING_OPTIONS
64 CFLAGS += -DCONFIG_TESTING_OPTIONS
65 CONFIG_WPS_TESTING=y
66 CONFIG_TDLS_TESTING=y
67 NEED_AES_WRAP=y
68 endif
69
70 mkconfig:
71 @if [ -f .config ]; then \
72 echo '.config exists - did not replace it'; \
73 exit 1; \
74 fi
75 echo CONFIG_DRIVER_HOSTAP=y >> .config
76 echo CONFIG_DRIVER_WEXT=y >> .config
77
78 $(DESTDIR)$(BINDIR)/%: %
79 install -D $(<) $(@)
80
81 install: $(addprefix $(DESTDIR)$(BINDIR)/,$(BINALL))
82 $(MAKE) -C ../src install
83 ifndef CONFIG_NO_WPA_PASSPHRASE
84 install -D wpa_passphrase $(DESTDIR)/$(BINDIR)/wpa_passphrase
85 endif
86
87 ifdef CONFIG_BUILD_PASN_SO
88 install -m 0644 -D libpasn.so $(DESTDIR)/$(LIBDIR)/libpasn.so
89 endif
90
91 ifdef CONFIG_BUILD_WPA_CLIENT_SO
92 install -m 0644 -D libwpa_client.so $(DESTDIR)/$(LIBDIR)/libwpa_client.so
93 install -m 0644 -D ../src/common/wpa_ctrl.h $(DESTDIR)/$(INCDIR)/wpa_ctrl.h
94 endif
95 if ls eap_*.so >/dev/null 2>&1; then \
96 install -d $(DESTDIR)$(LIBDIR)/wpa_supplicant && \
97 cp *.so $(DESTDIR)$(LIBDIR)/wpa_supplicant \
98 ; fi
99
100 ifdef CONFIG_FIPS
101 CONFIG_NO_RANDOM_POOL=
102 endif
103
104 OBJS = config.o
105 OBJS += notify.o
106 OBJS += bss.o
107 OBJS += eap_register.o
108 OBJS += ../src/utils/common.o
109 OBJS += ../src/utils/config.o
110 OBJS += ../src/utils/wpa_debug.o
111 OBJS += ../src/utils/wpabuf.o
112 OBJS += ../src/utils/bitfield.o
113 OBJS += ../src/utils/ip_addr.o
114 OBJS += ../src/utils/crc32.o
115 OBJS += ../src/common/ptksa_cache.o
116 OBJS += ../src/rsn_supp/pmksa_cache.o
117 OBJS += twt.o
118 OBJS_p = wpa_passphrase.o
119 OBJS_p += ../src/utils/common.o
120 OBJS_p += ../src/utils/wpa_debug.o
121 OBJS_p += ../src/utils/wpabuf.o
122 OBJS_c = wpa_cli.o ../src/common/wpa_ctrl.o
123 OBJS_c += ../src/utils/wpa_debug.o
124 OBJS_c += ../src/utils/common.o
125 OBJS_c += ../src/common/cli.o
126
127 ifndef CONFIG_OS
128 ifdef CONFIG_NATIVE_WINDOWS
129 CONFIG_OS=win32
130 else
131 CONFIG_OS=unix
132 endif
133 endif
134
135 ifeq ($(CONFIG_OS), internal)
136 CFLAGS += -DOS_NO_C_LIB_DEFINES
137 endif
138
139 OBJS += ../src/utils/os_$(CONFIG_OS).o
140 OBJS_p += ../src/utils/os_$(CONFIG_OS).o
141 OBJS_c += ../src/utils/os_$(CONFIG_OS).o
142
143 ifdef CONFIG_WPA_TRACE
144 CFLAGS += -DWPA_TRACE
145 OBJS += ../src/utils/trace.o
146 OBJS_p += ../src/utils/trace.o
147 OBJS_c += ../src/utils/trace.o
148 OBJS_priv += ../src/utils/trace.o
149 LIBCTRL += ../src/utils/trace.o
150 LIBCTRLSO += ../src/utils/trace.c
151 LDFLAGS += -rdynamic
152 CFLAGS += -funwind-tables
153 ifdef CONFIG_WPA_TRACE_BFD
154 CFLAGS += -DPACKAGE="wpa_supplicant" -DWPA_TRACE_BFD
155 LIBS += -lbfd -ldl -liberty -lz
156 LIBS_p += -lbfd -ldl -liberty -lz
157 LIBS_c += -lbfd -ldl -liberty -lz
158 endif
159 endif
160
161 ifndef CONFIG_ELOOP
162 CONFIG_ELOOP=eloop
163 endif
164 OBJS += ../src/utils/$(CONFIG_ELOOP).o
165 OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
166
167 ifndef CONFIG_OSX
168 ifeq ($(CONFIG_ELOOP), eloop)
169 # Using glibc < 2.17 requires -lrt for clock_gettime()
170 # OS X has an alternate implementation
171 LIBS += -lrt
172 LIBS_c += -lrt
173 LIBS_p += -lrt
174 endif
175 endif
176
177 ifdef CONFIG_ELOOP_POLL
178 CFLAGS += -DCONFIG_ELOOP_POLL
179 endif
180
181 ifdef CONFIG_ELOOP_EPOLL
182 CFLAGS += -DCONFIG_ELOOP_EPOLL
183 endif
184
185 ifdef CONFIG_ELOOP_KQUEUE
186 CFLAGS += -DCONFIG_ELOOP_KQUEUE
187 endif
188
189 ifdef CONFIG_EAPOL_TEST
190 CFLAGS += -Werror -DEAPOL_TEST
191 endif
192
193 ifdef CONFIG_CODE_COVERAGE
194 CFLAGS += -O0 -fprofile-arcs -ftest-coverage -U_FORTIFY_SOURCE
195 LIBS += -lgcov
196 LIBS_c += -lgcov
197 LIBS_p += -lgcov
198 endif
199
200 ifdef CONFIG_HT_OVERRIDES
201 CFLAGS += -DCONFIG_HT_OVERRIDES
202 endif
203
204 ifdef CONFIG_VHT_OVERRIDES
205 CFLAGS += -DCONFIG_VHT_OVERRIDES
206 endif
207
208 ifdef CONFIG_HE_OVERRIDES
209 CFLAGS += -DCONFIG_HE_OVERRIDES
210 endif
211
212 ifndef CONFIG_BACKEND
213 CONFIG_BACKEND=file
214 endif
215
216 ifeq ($(CONFIG_BACKEND), file)
217 OBJS += config_file.o
218 ifndef CONFIG_NO_CONFIG_BLOBS
219 NEED_BASE64=y
220 endif
221 CFLAGS += -DCONFIG_BACKEND_FILE
222 endif
223
224 ifeq ($(CONFIG_BACKEND), winreg)
225 OBJS += config_winreg.o
226 endif
227
228 ifeq ($(CONFIG_BACKEND), none)
229 OBJS += config_none.o
230 endif
231
232 ifdef CONFIG_NO_CONFIG_WRITE
233 CFLAGS += -DCONFIG_NO_CONFIG_WRITE
234 endif
235
236 ifdef CONFIG_NO_CONFIG_BLOBS
237 CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
238 endif
239
240 ifdef CONFIG_NO_SCAN_PROCESSING
241 CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
242 endif
243
244 ifdef CONFIG_SUITEB
245 CFLAGS += -DCONFIG_SUITEB
246 endif
247
248 ifdef CONFIG_SUITEB192
249 CFLAGS += -DCONFIG_SUITEB192
250 NEED_SHA384=y
251 endif
252
253 ifdef CONFIG_OCV
254 CFLAGS += -DCONFIG_OCV
255 OBJS += ../src/common/ocv.o
256 endif
257
258 ifdef CONFIG_IEEE80211R
259 CFLAGS += -DCONFIG_IEEE80211R
260 OBJS += ../src/rsn_supp/wpa_ft.o
261 endif
262
263 ifdef CONFIG_MESH
264 NEED_80211_COMMON=y
265 NEED_AES_SIV=y
266 CONFIG_SAE=y
267 CONFIG_AP=y
268 CFLAGS += -DCONFIG_MESH
269 OBJS += mesh.o
270 OBJS += mesh_mpm.o
271 OBJS += mesh_rsn.o
272 endif
273
274 ifdef CONFIG_SAE
275 CFLAGS += -DCONFIG_SAE
276 OBJS += ../src/common/sae.o
277 ifdef CONFIG_SAE_PK
278 CFLAGS += -DCONFIG_SAE_PK
279 NEED_AES_SIV=y
280 OBJS += ../src/common/sae_pk.o
281 endif
282 NEED_ECC=y
283 NEED_DH_GROUPS=y
284 NEED_HMAC_SHA256_KDF=y
285 NEED_DRAGONFLY=y
286 ifdef CONFIG_TESTING_OPTIONS
287 NEED_DH_GROUPS_ALL=y
288 endif
289 endif
290
291 ifdef CONFIG_DPP
292 CFLAGS += -DCONFIG_DPP
293 OBJS += ../src/common/dpp.o
294 OBJS += ../src/common/dpp_auth.o
295 OBJS += ../src/common/dpp_backup.o
296 OBJS += ../src/common/dpp_crypto.o
297 OBJS += ../src/common/dpp_pkex.o
298 OBJS += ../src/common/dpp_reconfig.o
299 OBJS += ../src/common/dpp_tcp.o
300 OBJS += dpp_supplicant.o
301 NEED_AES_SIV=y
302 NEED_HMAC_SHA256_KDF=y
303 NEED_HMAC_SHA384_KDF=y
304 NEED_HMAC_SHA512_KDF=y
305 NEED_SHA384=y
306 NEED_SHA512=y
307 NEED_ECC=y
308 NEED_JSON=y
309 NEED_GAS_SERVER=y
310 NEED_BASE64=y
311 NEED_ASN1=y
312 ifdef CONFIG_DPP2
313 CFLAGS += -DCONFIG_DPP2
314 endif
315 ifdef CONFIG_DPP3
316 CFLAGS += -DCONFIG_DPP3
317 endif
318 endif
319
320 ifdef CONFIG_NAN_USD
321 OBJS += ../src/common/nan_de.o
322 OBJS += nan_usd.o
323 CFLAGS += -DCONFIG_NAN_USD
324 endif
325
326 ifdef CONFIG_OWE
327 CFLAGS += -DCONFIG_OWE
328 NEED_ECC=y
329 NEED_HMAC_SHA256_KDF=y
330 NEED_HMAC_SHA384_KDF=y
331 NEED_HMAC_SHA512_KDF=y
332 NEED_SHA384=y
333 NEED_SHA512=y
334 endif
335
336 ifdef CONFIG_FILS
337 CFLAGS += -DCONFIG_FILS
338 NEED_SHA384=y
339 NEED_AES_SIV=y
340 ifdef CONFIG_FILS_SK_PFS
341 CFLAGS += -DCONFIG_FILS_SK_PFS
342 NEED_ECC=y
343 endif
344 endif
345
346 ifdef CONFIG_MBO
347 CONFIG_WNM=y
348 endif
349
350 ifdef CONFIG_BGSCAN_SIMPLE
351 CONFIG_WNM=y
352 endif
353
354 ifdef CONFIG_WNM
355 CFLAGS += -DCONFIG_WNM
356 OBJS += wnm_sta.o
357 endif
358
359 ifdef CONFIG_TDLS
360 CFLAGS += -DCONFIG_TDLS
361 OBJS += ../src/rsn_supp/tdls.o
362 endif
363
364 ifdef CONFIG_TDLS_TESTING
365 CFLAGS += -DCONFIG_TDLS_TESTING
366 endif
367
368 ifdef CONFIG_PMKSA_CACHE_EXTERNAL
369 CFLAGS += -DCONFIG_PMKSA_CACHE_EXTERNAL
370 endif
371
372 ifndef CONFIG_NO_WPA
373 OBJS += ../src/rsn_supp/wpa.o
374 OBJS += ../src/rsn_supp/preauth.o
375 OBJS += ../src/rsn_supp/wpa_ie.o
376 OBJS += ../src/common/wpa_common.o
377 NEED_AES=y
378 NEED_SHA1=y
379 NEED_MD5=y
380 NEED_RC4=y
381 else
382 CFLAGS += -DCONFIG_NO_WPA
383 ifeq ($(CONFIG_TLS), internal)
384 NEED_SHA1=y
385 NEED_MD5=y
386 endif
387 endif
388
389 ifdef CONFIG_IBSS_RSN
390 NEED_RSN_AUTHENTICATOR=y
391 CFLAGS += -DCONFIG_IBSS_RSN
392 CFLAGS += -DCONFIG_NO_VLAN
393 OBJS += ibss_rsn.o
394 endif
395
396 ifdef CONFIG_MATCH_IFACE
397 CFLAGS += -DCONFIG_MATCH_IFACE
398 endif
399
400 ifdef CONFIG_P2P
401 OBJS += p2p_supplicant.o
402 OBJS += p2p_supplicant_sd.o
403 OBJS += ../src/p2p/p2p.o
404 OBJS += ../src/p2p/p2p_utils.o
405 OBJS += ../src/p2p/p2p_parse.o
406 OBJS += ../src/p2p/p2p_build.o
407 OBJS += ../src/p2p/p2p_go_neg.o
408 OBJS += ../src/p2p/p2p_sd.o
409 OBJS += ../src/p2p/p2p_pd.o
410 OBJS += ../src/p2p/p2p_invitation.o
411 OBJS += ../src/p2p/p2p_dev_disc.o
412 OBJS += ../src/p2p/p2p_group.o
413 OBJS += ../src/ap/p2p_hostapd.o
414 CFLAGS += -DCONFIG_P2P
415 NEED_GAS=y
416 NEED_OFFCHANNEL=y
417 CONFIG_WPS=y
418 CONFIG_AP=y
419 ifdef CONFIG_P2P_STRICT
420 CFLAGS += -DCONFIG_P2P_STRICT
421 endif
422 ifdef CONFIG_WIFI_DISPLAY
423 CFLAGS += -DCONFIG_WIFI_DISPLAY
424 OBJS += wifi_display.o
425 endif
426 endif
427
428 ifdef CONFIG_PASN
429 CFLAGS += -DCONFIG_PASN
430 CFLAGS += -DCONFIG_PTKSA_CACHE
431 NEED_HMAC_SHA256_KDF=y
432 NEED_HMAC_SHA384_KDF=y
433 NEED_SHA256=y
434 NEED_SHA384=y
435 OBJS += ../src/pasn/pasn_initiator.o
436 OBJS += ../src/pasn/pasn_common.o
437 OBJS += pasn_supplicant.o
438 endif
439
440 ifdef CONFIG_HS20
441 OBJS += hs20_supplicant.o
442 CFLAGS += -DCONFIG_HS20
443 CONFIG_INTERWORKING=y
444 endif
445
446 ifdef CONFIG_INTERWORKING
447 OBJS += interworking.o
448 CFLAGS += -DCONFIG_INTERWORKING
449 NEED_GAS=y
450 endif
451
452 ifdef CONFIG_NO_ROAMING
453 CFLAGS += -DCONFIG_NO_ROAMING
454 endif
455
456 ifdef CONFIG_OPENSC_ENGINE_PATH
457 CFLAGS += -DCONFIG_OPENSC_ENGINE_PATH=\"$(CONFIG_OPENSC_ENGINE_PATH)\"
458 endif
459
460 ifdef CONFIG_NO_OPENSC_ENGINE_PATH
461 CFLAGS += -DCONFIG_OPENSC_ENGINE_PATH=NULL
462 endif
463
464 ifdef CONFIG_PKCS11_ENGINE_PATH
465 CFLAGS += -DCONFIG_PKCS11_ENGINE_PATH=\"$(CONFIG_PKCS11_ENGINE_PATH)\"
466 endif
467
468 ifdef CONFIG_NO_PKCS11_ENGINE_PATH
469 CFLAGS += -DCONFIG_PKCS11_ENGINE_PATH=NULL
470 endif
471
472 ifdef CONFIG_PKCS11_MODULE_PATH
473 CFLAGS += -DCONFIG_PKCS11_MODULE_PATH=\"$(CONFIG_PKCS11_MODULE_PATH)\"
474 endif
475
476 ifdef CONFIG_NO_PKCS11_MODULE_PATH
477 CFLAGS += -DCONFIG_PKCS11_MODULE_PATH=NULL
478 endif
479
480 ifdef CONFIG_NO_LOAD_DYNAMIC_EAP
481 CFLAGS += -DCONFIG_NO_LOAD_DYNAMIC_EAP
482 endif
483
484 ifdef CONFIG_NO_RRM
485 CFLAGS += -DCONFIG_NO_RRM
486 else
487 OBJS += rrm.o
488 ifdef CONFIG_AP
489 OBJS += ../src/ap/rrm.o
490 endif
491 OBJS += op_classes.o
492 endif
493
494 ifdef CONFIG_NO_WMM_AC
495 CFLAGS += -DCONFIG_NO_WMM_AC
496 else
497 OBJS += wmm_ac.o
498 endif
499
500 ifdef CONFIG_NO_ROBUST_AV
501 CFLAGS += -DCONFIG_NO_ROBUST_AV
502 else
503 OBJS += robust_av.o
504 endif
505
506 include ../src/drivers/drivers.mak
507 ifdef CONFIG_AP
508 OBJS_d += $(DRV_BOTH_OBJS)
509 CFLAGS += $(DRV_BOTH_CFLAGS)
510 LDFLAGS += $(DRV_BOTH_LDFLAGS)
511 LIBS += $(DRV_BOTH_LIBS)
512 else
513 NEED_AP_MLME=
514 OBJS_d += $(DRV_WPA_OBJS)
515 CFLAGS += $(DRV_WPA_CFLAGS)
516 LDFLAGS += $(DRV_WPA_LDFLAGS)
517 LIBS += $(DRV_WPA_LIBS)
518 endif
519
520 ifndef CONFIG_L2_PACKET
521 CONFIG_L2_PACKET=linux
522 endif
523
524 OBJS_l2 += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o
525
526 ifeq ($(CONFIG_L2_PACKET), pcap)
527 ifdef CONFIG_WINPCAP
528 CFLAGS += -DCONFIG_WINPCAP
529 LIBS += -lwpcap -lpacket
530 LIBS_w += -lwpcap
531 else
532 LIBS += -ldnet -lpcap
533 endif
534 endif
535
536 ifeq ($(CONFIG_L2_PACKET), winpcap)
537 LIBS += -lwpcap -lpacket
538 LIBS_w += -lwpcap
539 endif
540
541 ifeq ($(CONFIG_L2_PACKET), freebsd)
542 LIBS += -lpcap
543 endif
544
545 ifdef CONFIG_ERP
546 CFLAGS += -DCONFIG_ERP
547 NEED_HMAC_SHA256_KDF=y
548 endif
549
550 ifdef CONFIG_EAP_TLS
551 # EAP-TLS
552 ifeq ($(CONFIG_EAP_TLS), dyn)
553 CFLAGS += -DEAP_TLS_DYNAMIC
554 EAPDYN += eap_tls.so
555 else
556 CFLAGS += -DEAP_TLS
557 OBJS += ../src/eap_peer/eap_tls.o
558 endif
559 TLS_FUNCS=y
560 CONFIG_IEEE8021X_EAPOL=y
561 ifdef CONFIG_EAP_TLSV1_3
562 CFLAGS += -DEAP_TLSV1_3
563 endif
564 endif
565
566 ifdef CONFIG_EAP_UNAUTH_TLS
567 # EAP-UNAUTH-TLS
568 CFLAGS += -DEAP_UNAUTH_TLS
569 ifndef CONFIG_EAP_TLS
570 OBJS += ../src/eap_peer/eap_tls.o
571 TLS_FUNCS=y
572 endif
573 CONFIG_IEEE8021X_EAPOL=y
574 endif
575
576 ifdef CONFIG_EAP_PEAP
577 # EAP-PEAP
578 SRC_EAP_PEAP = ../src/eap_peer/eap_peap.c ../src/eap_common/eap_peap_common.c
579 ifeq ($(CONFIG_EAP_PEAP), dyn)
580 CFLAGS += -DEAP_PEAP_DYNAMIC
581 EAPDYN += eap_peap.so
582 else
583 CFLAGS += -DEAP_PEAP
584 OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PEAP))
585 endif
586 TLS_FUNCS=y
587 CONFIG_IEEE8021X_EAPOL=y
588 endif
589
590 ifdef CONFIG_EAP_TTLS
591 # EAP-TTLS
592 ifeq ($(CONFIG_EAP_TTLS), dyn)
593 CFLAGS += -DEAP_TTLS_DYNAMIC
594 EAPDYN += eap_ttls.so
595 else
596 CFLAGS += -DEAP_TTLS
597 OBJS += ../src/eap_peer/eap_ttls.o
598 endif
599 TLS_FUNCS=y
600 ifndef CONFIG_FIPS
601 MS_FUNCS=y
602 CHAP=y
603 endif
604 CONFIG_IEEE8021X_EAPOL=y
605 endif
606
607 ifdef CONFIG_EAP_MD5
608 # EAP-MD5
609 ifeq ($(CONFIG_EAP_MD5), dyn)
610 CFLAGS += -DEAP_MD5_DYNAMIC
611 EAPDYN += eap_md5.so
612 else
613 CFLAGS += -DEAP_MD5
614 OBJS += ../src/eap_peer/eap_md5.o
615 endif
616 CHAP=y
617 CONFIG_IEEE8021X_EAPOL=y
618 endif
619
620 # backwards compatibility for old spelling
621 ifdef CONFIG_MSCHAPV2
622 ifndef CONFIG_EAP_MSCHAPV2
623 CONFIG_EAP_MSCHAPV2=y
624 endif
625 endif
626
627 ifdef CONFIG_EAP_MSCHAPV2
628 # EAP-MSCHAPv2
629 SRC_EAP_MSCHAPV2 = ../src/eap_peer/eap_mschapv2.c ../src/eap_peer/mschapv2.c
630 ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
631 CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
632 EAPDYN += eap_mschapv2.so
633 else
634 CFLAGS += -DEAP_MSCHAPv2
635 OBJS += $(patsubst %.c, %.o, $(SRC_EAP_MSCHAPV2))
636 endif
637 MS_FUNCS=y
638 CONFIG_IEEE8021X_EAPOL=y
639 endif
640
641 ifdef CONFIG_EAP_GTC
642 # EAP-GTC
643 ifeq ($(CONFIG_EAP_GTC), dyn)
644 CFLAGS += -DEAP_GTC_DYNAMIC
645 EAPDYN += eap_gtc.so
646 else
647 CFLAGS += -DEAP_GTC
648 OBJS += ../src/eap_peer/eap_gtc.o
649 endif
650 CONFIG_IEEE8021X_EAPOL=y
651 endif
652
653 ifdef CONFIG_EAP_OTP
654 # EAP-OTP
655 ifeq ($(CONFIG_EAP_OTP), dyn)
656 CFLAGS += -DEAP_OTP_DYNAMIC
657 EAPDYN += eap_otp.so
658 else
659 CFLAGS += -DEAP_OTP
660 OBJS += ../src/eap_peer/eap_otp.o
661 endif
662 CONFIG_IEEE8021X_EAPOL=y
663 endif
664
665 ifdef CONFIG_EAP_SIM
666 # EAP-SIM
667 ifeq ($(CONFIG_EAP_SIM), dyn)
668 CFLAGS += -DEAP_SIM_DYNAMIC
669 EAPDYN += eap_sim.so
670 else
671 CFLAGS += -DEAP_SIM
672 OBJS += ../src/eap_peer/eap_sim.o
673 endif
674 CONFIG_IEEE8021X_EAPOL=y
675 CONFIG_EAP_SIM_COMMON=y
676 NEED_AES_CBC=y
677 endif
678
679 ifdef CONFIG_EAP_LEAP
680 # EAP-LEAP
681 ifeq ($(CONFIG_EAP_LEAP), dyn)
682 CFLAGS += -DEAP_LEAP_DYNAMIC
683 EAPDYN += eap_leap.so
684 else
685 CFLAGS += -DEAP_LEAP
686 OBJS += ../src/eap_peer/eap_leap.o
687 endif
688 MS_FUNCS=y
689 CONFIG_IEEE8021X_EAPOL=y
690 endif
691
692 ifdef CONFIG_EAP_PSK
693 # EAP-PSK
694 SRC_EAP_PSK = ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
695 ifeq ($(CONFIG_EAP_PSK), dyn)
696 CFLAGS += -DEAP_PSK_DYNAMIC
697 EAPDYN += eap_psk.so
698 else
699 CFLAGS += -DEAP_PSK
700 OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PSK))
701 endif
702 CONFIG_IEEE8021X_EAPOL=y
703 NEED_AES=y
704 NEED_AES_ENCBLOCK=y
705 NEED_AES_EAX=y
706 endif
707
708 ifdef CONFIG_EAP_AKA
709 # EAP-AKA
710 ifeq ($(CONFIG_EAP_AKA), dyn)
711 CFLAGS += -DEAP_AKA_DYNAMIC
712 EAPDYN += eap_aka.so
713 else
714 CFLAGS += -DEAP_AKA
715 OBJS += ../src/eap_peer/eap_aka.o
716 endif
717 CONFIG_IEEE8021X_EAPOL=y
718 CONFIG_EAP_SIM_COMMON=y
719 NEED_AES_CBC=y
720 endif
721
722 ifdef CONFIG_EAP_PROXY
723 CFLAGS += -DCONFIG_EAP_PROXY
724 OBJS += ../src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).o
725 include eap_proxy_$(CONFIG_EAP_PROXY).mak
726 CONFIG_IEEE8021X_EAPOL=y
727 endif
728
729 ifdef CONFIG_EAP_AKA_PRIME
730 # EAP-AKA'
731 ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
732 CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
733 else
734 CFLAGS += -DEAP_AKA_PRIME
735 endif
736 endif
737
738 ifdef CONFIG_EAP_SIM_COMMON
739 OBJS += ../src/eap_common/eap_sim_common.o
740 NEED_AES=y
741 NEED_FIPS186_2_PRF=y
742 endif
743
744 ifdef CONFIG_EAP_FAST
745 # EAP-FAST
746 SRC_EAP_FAST = ../src/eap_peer/eap_fast.c ../src/eap_peer/eap_fast_pac.c
747 SRC_EAP_FAST += ../src/eap_common/eap_fast_common.c
748 ifeq ($(CONFIG_EAP_FAST), dyn)
749 CFLAGS += -DEAP_FAST_DYNAMIC
750 EAPDYN += eap_fast.so
751 else
752 CFLAGS += -DEAP_FAST
753 OBJS += $(patsubst %.c, %.o, $(SRC_EAP_FAST))
754 endif
755 TLS_FUNCS=y
756 CONFIG_IEEE8021X_EAPOL=y
757 NEED_T_PRF=y
758 endif
759
760 ifdef CONFIG_EAP_TEAP
761 # EAP-TEAP
762 SRC_EAP_TEAP = ../src/eap_peer/eap_teap.c ../src/eap_peer/eap_teap_pac.c
763 SRC_EAP_TEAP += ../src/eap_common/eap_teap_common.c
764 ifeq ($(CONFIG_EAP_TEAP), dyn)
765 CFLAGS += -DEAP_TEAP_DYNAMIC
766 EAPDYN += eap_teap.so
767 else
768 CFLAGS += -DEAP_TEAP
769 OBJS += $(patsubst %.c, %.o, $(SRC_EAP_TEAP))
770 endif
771 TLS_FUNCS=y
772 CONFIG_IEEE8021X_EAPOL=y
773 NEED_T_PRF=y
774 NEED_SHA384=y
775 NEED_TLS_PRF_SHA256=y
776 NEED_TLS_PRF_SHA384=y
777 endif
778
779 ifdef CONFIG_EAP_PAX
780 # EAP-PAX
781 SRC_EAP_PAX = ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
782 ifeq ($(CONFIG_EAP_PAX), dyn)
783 CFLAGS += -DEAP_PAX_DYNAMIC
784 EAPDYN += eap_pax.so
785 else
786 CFLAGS += -DEAP_PAX
787 OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PAX))
788 endif
789 CONFIG_IEEE8021X_EAPOL=y
790 endif
791
792 ifdef CONFIG_EAP_SAKE
793 # EAP-SAKE
794 SRC_EAP_SAKE = ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
795 ifeq ($(CONFIG_EAP_SAKE), dyn)
796 CFLAGS += -DEAP_SAKE_DYNAMIC
797 EAPDYN += eap_sake.so
798 else
799 CFLAGS += -DEAP_SAKE
800 OBJS += $(patsubst %.c, %.o, $(SRC_EAP_SAKE))
801 endif
802 CONFIG_IEEE8021X_EAPOL=y
803 endif
804
805 ifdef CONFIG_EAP_GPSK
806 # EAP-GPSK
807 SRC_EAP_GPSK = ../src/eap_peer/eap_gpsk.c ../src/eap_common/eap_gpsk_common.c
808 ifeq ($(CONFIG_EAP_GPSK), dyn)
809 CFLAGS += -DEAP_GPSK_DYNAMIC
810 EAPDYN += eap_gpsk.so
811 else
812 CFLAGS += -DEAP_GPSK
813 OBJS += $(patsubst %.c, %.o, $(SRC_EAP_GPSK))
814 endif
815 CONFIG_IEEE8021X_EAPOL=y
816 ifdef CONFIG_EAP_GPSK_SHA256
817 CFLAGS += -DEAP_GPSK_SHA256
818 endif
819 endif
820
821 ifdef CONFIG_EAP_PWD
822 CFLAGS += -DEAP_PWD
823 ifeq ($(CONFIG_TLS), wolfssl)
824 CFLAGS += -DCONFIG_ECC
825 endif
826 OBJS += ../src/eap_peer/eap_pwd.o ../src/eap_common/eap_pwd_common.o
827 CONFIG_IEEE8021X_EAPOL=y
828 NEED_ECC=y
829 NEED_DRAGONFLY=y
830 MS_FUNCS=y
831 endif
832
833 ifdef CONFIG_EAP_EKE
834 # EAP-EKE
835 SRC_EAP_EKE = ../src/eap_peer/eap_eke.c ../src/eap_common/eap_eke_common.c
836 ifeq ($(CONFIG_EAP_EKE), dyn)
837 CFLAGS += -DEAP_EKE_DYNAMIC
838 EAPDYN += eap_eke.so
839 else
840 CFLAGS += -DEAP_EKE
841 OBJS += $(patsubst %.c, %.o, $(SRC_EAP_EKE))
842 endif
843 CONFIG_IEEE8021X_EAPOL=y
844 NEED_DH_GROUPS=y
845 NEED_DH_GROUPS_ALL=y
846 NEED_AES_CBC=y
847 endif
848
849 ifdef CONFIG_WPS
850 # EAP-WSC
851 CFLAGS += -DCONFIG_WPS -DEAP_WSC
852 OBJS += wps_supplicant.o
853 OBJS += ../src/utils/uuid.o
854 OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o
855 OBJS += ../src/wps/wps.o
856 OBJS += ../src/wps/wps_common.o
857 OBJS += ../src/wps/wps_attr_parse.o
858 OBJS += ../src/wps/wps_attr_build.o
859 OBJS += ../src/wps/wps_attr_process.o
860 OBJS += ../src/wps/wps_dev_attr.o
861 OBJS += ../src/wps/wps_enrollee.o
862 OBJS += ../src/wps/wps_registrar.o
863 CONFIG_IEEE8021X_EAPOL=y
864 NEED_DH_GROUPS=y
865 NEED_BASE64=y
866 NEED_AES_CBC=y
867 NEED_MODEXP=y
868
869 ifdef CONFIG_WPS_NFC
870 CFLAGS += -DCONFIG_WPS_NFC
871 OBJS += ../src/wps/ndef.o
872 NEED_WPS_OOB=y
873 endif
874
875 ifdef NEED_WPS_OOB
876 CFLAGS += -DCONFIG_WPS_OOB
877 endif
878
879 ifdef CONFIG_WPS_ER
880 CONFIG_WPS_UPNP=y
881 CFLAGS += -DCONFIG_WPS_ER
882 OBJS += ../src/wps/wps_er.o
883 OBJS += ../src/wps/wps_er_ssdp.o
884 endif
885
886 ifdef CONFIG_WPS_UPNP
887 CFLAGS += -DCONFIG_WPS_UPNP
888 OBJS += ../src/wps/wps_upnp.o
889 OBJS += ../src/wps/wps_upnp_ssdp.o
890 OBJS += ../src/wps/wps_upnp_web.o
891 OBJS += ../src/wps/wps_upnp_event.o
892 OBJS += ../src/wps/wps_upnp_ap.o
893 OBJS += ../src/wps/upnp_xml.o
894 OBJS += ../src/wps/httpread.o
895 OBJS += ../src/wps/http_client.o
896 OBJS += ../src/wps/http_server.o
897 endif
898
899 ifdef CONFIG_WPS_STRICT
900 CFLAGS += -DCONFIG_WPS_STRICT
901 OBJS += ../src/wps/wps_validate.o
902 endif
903
904 ifdef CONFIG_WPS_TESTING
905 CFLAGS += -DCONFIG_WPS_TESTING
906 endif
907
908 ifdef CONFIG_WPS_REG_DISABLE_OPEN
909 CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN
910 endif
911
912 endif
913
914 ifdef CONFIG_EAP_IKEV2
915 # EAP-IKEv2
916 SRC_EAP_IKEV2 = ../src/eap_peer/eap_ikev2.c
917 SRC_EAP_IKEV2 += ../src/eap_peer/ikev2.c
918 SRC_EAP_IKEV2 += ../src/eap_common/eap_ikev2_common.c
919 SRC_EAP_IKEV2 += ../src/eap_common/ikev2_common.c
920 ifeq ($(CONFIG_EAP_IKEV2), dyn)
921 CFLAGS += -DEAP_IKEV2_DYNAMIC
922 EAPDYN += eap_ikev2.so
923 else
924 CFLAGS += -DEAP_IKEV2
925 OBJS += $(patsubst %.c, %.o, $(SRC_EAP_IKEV2))
926 endif
927 CONFIG_IEEE8021X_EAPOL=y
928 NEED_DH_GROUPS=y
929 NEED_DH_GROUPS_ALL=y
930 NEED_MODEXP=y
931 NEED_CIPHER=y
932 endif
933
934 ifdef CONFIG_EAP_VENDOR_TEST
935 ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
936 CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
937 EAPDYN += eap_vendor_test.so
938 else
939 CFLAGS += -DEAP_VENDOR_TEST
940 OBJS += ../src/eap_peer/eap_vendor_test.o
941 endif
942 CONFIG_IEEE8021X_EAPOL=y
943 endif
944
945 ifdef CONFIG_EAP_TNC
946 # EAP-TNC
947 CFLAGS += -DEAP_TNC
948 OBJS += ../src/eap_peer/eap_tnc.o
949 OBJS += ../src/eap_peer/tncc.o
950 NEED_BASE64=y
951 ifndef CONFIG_NATIVE_WINDOWS
952 ifndef CONFIG_DRIVER_BSD
953 LIBS += -ldl
954 endif
955 endif
956 endif
957
958 ifdef CONFIG_MACSEC
959 CFLAGS += -DCONFIG_MACSEC
960 CONFIG_IEEE8021X_EAPOL=y
961 NEED_AES_ENCBLOCK=y
962 NEED_AES_UNWRAP=y
963 NEED_AES_WRAP=y
964 OBJS += wpas_kay.o
965 OBJS += ../src/pae/ieee802_1x_cp.o
966 OBJS += ../src/pae/ieee802_1x_kay.o
967 OBJS += ../src/pae/ieee802_1x_key.o
968 OBJS += ../src/pae/ieee802_1x_secy_ops.o
969 ifdef CONFIG_AP
970 OBJS += ../src/ap/wpa_auth_kay.o
971 endif
972 endif
973
974 ifdef CONFIG_IEEE8021X_EAPOL
975 # IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
976 CFLAGS += -DIEEE8021X_EAPOL
977 OBJS += ../src/eapol_supp/eapol_supp_sm.o
978 OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o
979 NEED_EAP_COMMON=y
980 ifdef CONFIG_DYNAMIC_EAP_METHODS
981 CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
982 LIBS += -ldl -rdynamic
983 endif
984 endif
985
986 ifdef CONFIG_AP
987 NEED_EAP_COMMON=y
988 NEED_RSN_AUTHENTICATOR=y
989 CFLAGS += -DCONFIG_AP
990 OBJS += ap.o
991 CFLAGS += -DCONFIG_NO_RADIUS
992 CFLAGS += -DCONFIG_NO_ACCOUNTING
993 CFLAGS += -DCONFIG_NO_VLAN
994 OBJS += ../src/ap/hostapd.o
995 OBJS += ../src/ap/wpa_auth_glue.o
996 OBJS += ../src/ap/utils.o
997 OBJS += ../src/ap/authsrv.o
998 OBJS += ../src/ap/ap_config.o
999 OBJS += ../src/ap/sta_info.o
1000 OBJS += ../src/ap/tkip_countermeasures.o
1001 OBJS += ../src/ap/ap_mlme.o
1002 OBJS += ../src/ap/ieee802_1x.o
1003 OBJS += ../src/eapol_auth/eapol_auth_sm.o
1004 OBJS += ../src/ap/ieee802_11_auth.o
1005 OBJS += ../src/ap/ieee802_11_shared.o
1006 OBJS += ../src/ap/drv_callbacks.o
1007 OBJS += ../src/ap/ap_drv_ops.o
1008 OBJS += ../src/ap/beacon.o
1009 OBJS += ../src/ap/bss_load.o
1010 OBJS += ../src/ap/eap_user_db.o
1011 OBJS += ../src/ap/neighbor_db.o
1012 OBJS += ../src/ap/ieee802_11_ht.o
1013 ifdef CONFIG_IEEE80211AC
1014 OBJS += ../src/ap/ieee802_11_vht.o
1015 endif
1016 ifdef CONFIG_IEEE80211AX
1017 OBJS += ../src/ap/ieee802_11_he.o
1018 endif
1019 ifdef CONFIG_IEEE80211BE
1020 OBJS += ../src/ap/ieee802_11_eht.o
1021 endif
1022 ifdef CONFIG_WNM_AP
1023 CFLAGS += -DCONFIG_WNM_AP
1024 OBJS += ../src/ap/wnm_ap.o
1025 endif
1026 ifdef CONFIG_MBO
1027 OBJS += ../src/ap/mbo_ap.o
1028 endif
1029 ifdef CONFIG_FILS
1030 OBJS += ../src/ap/fils_hlp.o
1031 endif
1032 ifdef CONFIG_CTRL_IFACE
1033 OBJS += ../src/ap/ctrl_iface_ap.o
1034 endif
1035
1036 CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
1037 OBJS += ../src/eap_server/eap_server.o
1038 OBJS += ../src/eap_server/eap_server_identity.o
1039 OBJS += ../src/eap_server/eap_server_methods.o
1040
1041 ifdef CONFIG_IEEE80211AC
1042 CFLAGS += -DCONFIG_IEEE80211AC
1043 endif
1044 ifdef CONFIG_IEEE80211BE
1045 CONFIG_IEEE80211AX=y
1046 CFLAGS += -DCONFIG_IEEE80211BE
1047 endif
1048 ifdef CONFIG_IEEE80211AX
1049 CFLAGS += -DCONFIG_IEEE80211AX
1050 endif
1051
1052 ifdef NEED_AP_MLME
1053 OBJS += ../src/ap/wmm.o
1054 OBJS += ../src/ap/ap_list.o
1055 OBJS += ../src/ap/comeback_token.o
1056 OBJS += ../src/pasn/pasn_responder.o
1057 OBJS += ../src/ap/ieee802_11.o
1058 OBJS += ../src/ap/hw_features.o
1059 OBJS += ../src/ap/dfs.o
1060 CFLAGS += -DNEED_AP_MLME
1061 endif
1062 ifdef CONFIG_WPS
1063 CFLAGS += -DEAP_SERVER_WSC
1064 OBJS += ../src/ap/wps_hostapd.o
1065 OBJS += ../src/eap_server/eap_server_wsc.o
1066 endif
1067 ifdef CONFIG_DPP
1068 OBJS += ../src/ap/dpp_hostapd.o
1069 OBJS += ../src/ap/gas_query_ap.o
1070 NEED_AP_GAS_SERV=y
1071 endif
1072 ifdef CONFIG_NAN_USD
1073 OBJS += ../src/ap/nan_usd_ap.o
1074 endif
1075 ifdef CONFIG_INTERWORKING
1076 NEED_AP_GAS_SERV=y
1077 endif
1078 ifdef NEED_AP_GAS_SERV
1079 OBJS += ../src/ap/gas_serv.o
1080 endif
1081 ifdef CONFIG_HS20
1082 OBJS += ../src/ap/hs20.o
1083 endif
1084 endif
1085
1086 ifdef CONFIG_MBO
1087 OBJS += mbo.o
1088 CFLAGS += -DCONFIG_MBO
1089 NEED_GAS=y
1090 endif
1091
1092 ifdef NEED_RSN_AUTHENTICATOR
1093 CFLAGS += -DCONFIG_NO_RADIUS
1094 NEED_AES_WRAP=y
1095 OBJS += ../src/ap/wpa_auth.o
1096 OBJS += ../src/ap/wpa_auth_ie.o
1097 OBJS += ../src/ap/pmksa_cache_auth.o
1098 endif
1099
1100 ifdef CONFIG_ACS
1101 CFLAGS += -DCONFIG_ACS
1102 OBJS += ../src/ap/acs.o
1103 LIBS += -lm
1104 endif
1105
1106 ifdef CONFIG_PCSC
1107 # PC/SC interface for smartcards (USIM, GSM SIM)
1108 CFLAGS += -DPCSC_FUNCS
1109 OBJS += ../src/utils/pcsc_funcs.o
1110 ifdef CONFIG_NATIVE_WINDOWS
1111 #Once MinGW gets support for WinScard, -lwinscard could be used instead of the
1112 #dynamic symbol loading that is now used in pcsc_funcs.c
1113 #LIBS += -lwinscard
1114 CFLAGS += -I/usr/include/PCSC
1115 else
1116 ifdef CONFIG_OSX
1117 LIBS += -framework PCSC
1118 CFLAGS += -I/usr/include/PCSC
1119 else
1120 LIBS += $(shell $(PKG_CONFIG) --libs libpcsclite)
1121 CFLAGS += $(shell $(PKG_CONFIG) --cflags libpcsclite)
1122 endif
1123 endif
1124 endif
1125
1126 ifdef CONFIG_SIM_SIMULATOR
1127 CFLAGS += -DCONFIG_SIM_SIMULATOR
1128 NEED_MILENAGE=y
1129 endif
1130
1131 ifdef CONFIG_USIM_SIMULATOR
1132 CFLAGS += -DCONFIG_USIM_SIMULATOR
1133 NEED_MILENAGE=y
1134 endif
1135
1136 ifdef NEED_MILENAGE
1137 OBJS += ../src/crypto/milenage.o
1138 NEED_AES_ENCBLOCK=y
1139 endif
1140
1141 ifdef CONFIG_PKCS12
1142 CFLAGS += -DPKCS12_FUNCS
1143 endif
1144
1145 ifdef CONFIG_SMARTCARD
1146 CFLAGS += -DCONFIG_SMARTCARD
1147 endif
1148
1149 ifdef NEED_DRAGONFLY
1150 OBJS += ../src/common/dragonfly.o
1151 endif
1152
1153 ifdef MS_FUNCS
1154 OBJS += ../src/crypto/ms_funcs.o
1155 NEED_DES=y
1156 NEED_MD4=y
1157 endif
1158
1159 ifdef CHAP
1160 OBJS += ../src/eap_common/chap.o
1161 endif
1162
1163 ifdef TLS_FUNCS
1164 NEED_DES=y
1165 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, EAP_FAST, and
1166 # EAP_TEAP)
1167 OBJS += ../src/eap_peer/eap_tls_common.o
1168 ifndef CONFIG_FIPS
1169 NEED_TLS_PRF=y
1170 NEED_SHA1=y
1171 NEED_MD5=y
1172 endif
1173 endif
1174
1175 ifndef CONFIG_TLS
1176 CONFIG_TLS=openssl
1177 endif
1178
1179 ifdef CONFIG_TLSV11
1180 CFLAGS += -DCONFIG_TLSV11
1181 endif
1182
1183 ifdef CONFIG_TLSV12
1184 CFLAGS += -DCONFIG_TLSV12
1185 endif
1186
1187 ifdef CONFIG_RADIUS_TLS
1188 TLS_FUNCS=y
1189 endif
1190
1191 ifeq ($(CONFIG_TLS), wolfssl)
1192 ifdef TLS_FUNCS
1193 CFLAGS += -DWOLFSSL_DER_LOAD
1194 OBJS += ../src/crypto/tls_wolfssl.o
1195 endif
1196 OBJS += ../src/crypto/crypto_wolfssl.o
1197 OBJS_p += ../src/crypto/crypto_wolfssl.o
1198 ifdef NEED_FIPS186_2_PRF
1199 OBJS += ../src/crypto/fips_prf_wolfssl.o
1200 endif
1201 NEED_TLS_PRF_SHA256=y
1202 LIBS += -lwolfssl -lm
1203 LIBS_p += -lwolfssl -lm
1204 endif
1205
1206 ifeq ($(CONFIG_TLS), openssl)
1207 CFLAGS += -DCRYPTO_RSA_OAEP_SHA256
1208 ifdef TLS_FUNCS
1209 CFLAGS += -DEAP_TLS_OPENSSL
1210 OBJS += ../src/crypto/tls_openssl.o
1211 OBJS += ../src/crypto/tls_openssl_ocsp.o
1212 LIBS += -lssl
1213 endif
1214 OBJS += ../src/crypto/crypto_openssl.o
1215 OBJS_p += ../src/crypto/crypto_openssl.o
1216 OBJS_priv += ../src/crypto/crypto_openssl.o
1217 ifdef NEED_FIPS186_2_PRF
1218 OBJS += ../src/crypto/fips_prf_openssl.o
1219 endif
1220 NEED_TLS_PRF_SHA256=y
1221 LIBS += -lcrypto
1222 LIBS_p += -lcrypto
1223 ifdef CONFIG_TLS_ADD_DL
1224 LIBS += -ldl
1225 LIBS_p += -ldl
1226 endif
1227 ifndef CONFIG_TLS_DEFAULT_CIPHERS
1228 CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW"
1229 endif
1230 CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\"
1231 endif
1232
1233 ifeq ($(CONFIG_TLS), gnutls)
1234 ifndef CONFIG_CRYPTO
1235 # default to libgcrypt
1236 CONFIG_CRYPTO=gnutls
1237 endif
1238 ifdef TLS_FUNCS
1239 OBJS += ../src/crypto/tls_gnutls.o
1240 LIBS += -lgnutls -lgpg-error
1241 endif
1242 OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1243 OBJS_p += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1244 OBJS_priv += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1245 ifdef NEED_FIPS186_2_PRF
1246 OBJS += ../src/crypto/fips_prf_internal.o
1247 SHA1OBJS += ../src/crypto/sha1-internal.o
1248 endif
1249 ifeq ($(CONFIG_CRYPTO), gnutls)
1250 LIBS += -lgcrypt
1251 LIBS_p += -lgcrypt
1252 CONFIG_INTERNAL_RC4=y
1253 CONFIG_INTERNAL_DH_GROUP5=y
1254 endif
1255 ifeq ($(CONFIG_CRYPTO), nettle)
1256 LIBS += -lnettle -lgmp
1257 LIBS_p += -lnettle -lgmp
1258 CONFIG_INTERNAL_RC4=y
1259 CONFIG_INTERNAL_DH_GROUP5=y
1260 endif
1261 endif
1262
1263 ifeq ($(CONFIG_TLS), internal)
1264 ifndef CONFIG_CRYPTO
1265 CONFIG_CRYPTO=internal
1266 endif
1267 ifdef TLS_FUNCS
1268 OBJS += ../src/crypto/crypto_internal-rsa.o
1269 OBJS += ../src/crypto/tls_internal.o
1270 OBJS += ../src/tls/tlsv1_common.o
1271 OBJS += ../src/tls/tlsv1_record.o
1272 OBJS += ../src/tls/tlsv1_cred.o
1273 OBJS += ../src/tls/tlsv1_client.o
1274 OBJS += ../src/tls/tlsv1_client_write.o
1275 OBJS += ../src/tls/tlsv1_client_read.o
1276 OBJS += ../src/tls/tlsv1_client_ocsp.o
1277 OBJS += ../src/tls/rsa.o
1278 OBJS += ../src/tls/x509v3.o
1279 OBJS += ../src/tls/pkcs1.o
1280 OBJS += ../src/tls/pkcs5.o
1281 OBJS += ../src/tls/pkcs8.o
1282 NEED_ASN1=y
1283 NEED_BASE64=y
1284 NEED_TLS_PRF=y
1285 ifdef CONFIG_TLSV12
1286 NEED_TLS_PRF_SHA256=y
1287 endif
1288 NEED_MODEXP=y
1289 NEED_CIPHER=y
1290 CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
1291 endif
1292 ifdef NEED_CIPHER
1293 NEED_DES=y
1294 OBJS += ../src/crypto/crypto_internal-cipher.o
1295 endif
1296 ifdef NEED_MODEXP
1297 OBJS += ../src/crypto/crypto_internal-modexp.o
1298 OBJS += ../src/tls/bignum.o
1299 endif
1300 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1301 OBJS += ../src/crypto/crypto_libtomcrypt.o
1302 OBJS_p += ../src/crypto/crypto_libtomcrypt.o
1303 LIBS += -ltomcrypt -ltfm
1304 LIBS_p += -ltomcrypt -ltfm
1305 CONFIG_INTERNAL_SHA256=y
1306 CONFIG_INTERNAL_RC4=y
1307 CONFIG_INTERNAL_DH_GROUP5=y
1308 endif
1309 ifeq ($(CONFIG_CRYPTO), internal)
1310 OBJS += ../src/crypto/crypto_internal.o
1311 OBJS_p += ../src/crypto/crypto_internal.o
1312 NEED_AES_ENC=y
1313 CFLAGS += -DCONFIG_CRYPTO_INTERNAL
1314 ifdef CONFIG_INTERNAL_LIBTOMMATH
1315 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
1316 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
1317 CFLAGS += -DLTM_FAST
1318 endif
1319 else
1320 LIBS += -ltommath
1321 LIBS_p += -ltommath
1322 endif
1323 CONFIG_INTERNAL_AES=y
1324 CONFIG_INTERNAL_DES=y
1325 CONFIG_INTERNAL_SHA1=y
1326 CONFIG_INTERNAL_MD4=y
1327 CONFIG_INTERNAL_MD5=y
1328 CONFIG_INTERNAL_SHA256=y
1329 CONFIG_INTERNAL_SHA384=y
1330 CONFIG_INTERNAL_SHA512=y
1331 CONFIG_INTERNAL_RC4=y
1332 CONFIG_INTERNAL_DH_GROUP5=y
1333 endif
1334 ifeq ($(CONFIG_CRYPTO), cryptoapi)
1335 OBJS += ../src/crypto/crypto_cryptoapi.o
1336 OBJS_p += ../src/crypto/crypto_cryptoapi.o
1337 CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
1338 CONFIG_INTERNAL_SHA256=y
1339 CONFIG_INTERNAL_RC4=y
1340 endif
1341 endif
1342
1343 ifeq ($(CONFIG_TLS), linux)
1344 OBJS += ../src/crypto/crypto_linux.o
1345 OBJS_p += ../src/crypto/crypto_linux.o
1346 ifdef TLS_FUNCS
1347 OBJS += ../src/crypto/crypto_internal-rsa.o
1348 OBJS += ../src/crypto/tls_internal.o
1349 OBJS += ../src/tls/tlsv1_common.o
1350 OBJS += ../src/tls/tlsv1_record.o
1351 OBJS += ../src/tls/tlsv1_cred.o
1352 OBJS += ../src/tls/tlsv1_client.o
1353 OBJS += ../src/tls/tlsv1_client_write.o
1354 OBJS += ../src/tls/tlsv1_client_read.o
1355 OBJS += ../src/tls/tlsv1_client_ocsp.o
1356 OBJS += ../src/tls/rsa.o
1357 OBJS += ../src/tls/x509v3.o
1358 OBJS += ../src/tls/pkcs1.o
1359 OBJS += ../src/tls/pkcs5.o
1360 OBJS += ../src/tls/pkcs8.o
1361 NEED_ASN1=y
1362 NEED_BASE64=y
1363 NEED_TLS_PRF=y
1364 ifdef CONFIG_TLSV12
1365 NEED_TLS_PRF_SHA256=y
1366 endif
1367 NEED_MODEXP=y
1368 NEED_CIPHER=y
1369 CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
1370 endif
1371 ifdef NEED_MODEXP
1372 OBJS += ../src/crypto/crypto_internal-modexp.o
1373 OBJS += ../src/tls/bignum.o
1374 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
1375 CFLAGS += -DLTM_FAST
1376 endif
1377 CONFIG_INTERNAL_DH_GROUP5=y
1378 ifdef NEED_FIPS186_2_PRF
1379 OBJS += ../src/crypto/fips_prf_internal.o
1380 OBJS += ../src/crypto/sha1-internal.o
1381 endif
1382 endif
1383
1384 ifeq ($(CONFIG_TLS), none)
1385 ifdef TLS_FUNCS
1386 OBJS += ../src/crypto/tls_none.o
1387 CFLAGS += -DEAP_TLS_NONE
1388 CONFIG_INTERNAL_AES=y
1389 CONFIG_INTERNAL_SHA1=y
1390 CONFIG_INTERNAL_MD5=y
1391 endif
1392 OBJS += ../src/crypto/crypto_none.o
1393 OBJS_p += ../src/crypto/crypto_none.o
1394 CONFIG_INTERNAL_SHA256=y
1395 CONFIG_INTERNAL_RC4=y
1396 endif
1397
1398 ifdef TLS_FUNCS
1399 ifdef CONFIG_SMARTCARD
1400 ifndef CONFIG_NATIVE_WINDOWS
1401 ifneq ($(CONFIG_L2_PACKET), freebsd)
1402 LIBS += -ldl
1403 endif
1404 endif
1405 endif
1406 endif
1407
1408 ifndef TLS_FUNCS
1409 OBJS += ../src/crypto/tls_none.o
1410 ifeq ($(CONFIG_TLS), internal)
1411 CONFIG_INTERNAL_AES=y
1412 CONFIG_INTERNAL_SHA1=y
1413 CONFIG_INTERNAL_MD5=y
1414 CONFIG_INTERNAL_RC4=y
1415 endif
1416 endif
1417
1418 AESOBJS = # none so far (see below)
1419 ifdef CONFIG_INTERNAL_AES
1420 AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o
1421 endif
1422
1423 ifneq ($(CONFIG_TLS), openssl)
1424 ifneq ($(CONFIG_TLS), wolfssl)
1425 NEED_INTERNAL_AES_WRAP=y
1426 endif
1427 endif
1428 ifdef CONFIG_OPENSSL_INTERNAL_AES_WRAP
1429 # Seems to be needed at least with BoringSSL
1430 NEED_INTERNAL_AES_WRAP=y
1431 CFLAGS += -DCONFIG_OPENSSL_INTERNAL_AES_WRAP
1432 endif
1433 ifdef CONFIG_FIPS
1434 # Have to use internal AES key wrap routines to use OpenSSL EVP since the
1435 # OpenSSL AES_wrap_key()/AES_unwrap_key() API is not available in FIPS mode.
1436 NEED_INTERNAL_AES_WRAP=y
1437 endif
1438
1439 ifdef NEED_INTERNAL_AES_WRAP
1440 ifneq ($(CONFIG_TLS), linux)
1441 AESOBJS += ../src/crypto/aes-unwrap.o
1442 endif
1443 endif
1444 ifdef NEED_AES_EAX
1445 AESOBJS += ../src/crypto/aes-eax.o
1446 NEED_AES_CTR=y
1447 endif
1448 ifdef NEED_AES_SIV
1449 AESOBJS += ../src/crypto/aes-siv.o
1450 NEED_AES_CTR=y
1451 endif
1452 ifdef NEED_AES_CTR
1453 AESOBJS += ../src/crypto/aes-ctr.o
1454 endif
1455 ifdef NEED_AES_ENCBLOCK
1456 AESOBJS += ../src/crypto/aes-encblock.o
1457 endif
1458 NEED_AES_ENC=y
1459 ifneq ($(CONFIG_TLS), openssl)
1460 ifneq ($(CONFIG_TLS), linux)
1461 ifneq ($(CONFIG_TLS), wolfssl)
1462 AESOBJS += ../src/crypto/aes-omac1.o
1463 endif
1464 endif
1465 endif
1466 ifdef NEED_AES_WRAP
1467 NEED_AES_ENC=y
1468 ifdef NEED_INTERNAL_AES_WRAP
1469 AESOBJS += ../src/crypto/aes-wrap.o
1470 endif
1471 endif
1472 ifdef NEED_AES_CBC
1473 NEED_AES_ENC=y
1474 ifneq ($(CONFIG_TLS), openssl)
1475 ifneq ($(CONFIG_TLS), linux)
1476 ifneq ($(CONFIG_TLS), wolfssl)
1477 AESOBJS += ../src/crypto/aes-cbc.o
1478 endif
1479 endif
1480 endif
1481 endif
1482 ifdef NEED_AES_ENC
1483 ifdef CONFIG_INTERNAL_AES
1484 AESOBJS += ../src/crypto/aes-internal-enc.o
1485 endif
1486 endif
1487 ifdef NEED_AES
1488 OBJS += $(AESOBJS)
1489 endif
1490
1491 ifdef NEED_SHA1
1492 ifneq ($(CONFIG_TLS), openssl)
1493 ifneq ($(CONFIG_TLS), linux)
1494 ifneq ($(CONFIG_TLS), gnutls)
1495 ifneq ($(CONFIG_TLS), wolfssl)
1496 SHA1OBJS += ../src/crypto/sha1.o
1497 endif
1498 endif
1499 endif
1500 endif
1501 SHA1OBJS += ../src/crypto/sha1-prf.o
1502 ifdef CONFIG_INTERNAL_SHA1
1503 SHA1OBJS += ../src/crypto/sha1-internal.o
1504 ifdef NEED_FIPS186_2_PRF
1505 SHA1OBJS += ../src/crypto/fips_prf_internal.o
1506 endif
1507 endif
1508 ifdef CONFIG_NO_WPA_PASSPHRASE
1509 CFLAGS += -DCONFIG_NO_PBKDF2
1510 else
1511 ifneq ($(CONFIG_TLS), openssl)
1512 ifneq ($(CONFIG_TLS), wolfssl)
1513 SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
1514 endif
1515 endif
1516 endif
1517 ifdef NEED_T_PRF
1518 SHA1OBJS += ../src/crypto/sha1-tprf.o
1519 endif
1520 ifdef NEED_TLS_PRF
1521 SHA1OBJS += ../src/crypto/sha1-tlsprf.o
1522 endif
1523 endif
1524
1525 ifndef CONFIG_FIPS
1526 ifneq ($(CONFIG_TLS), openssl)
1527 ifneq ($(CONFIG_TLS), linux)
1528 ifneq ($(CONFIG_TLS), gnutls)
1529 ifneq ($(CONFIG_TLS), wolfssl)
1530 MD5OBJS += ../src/crypto/md5.o
1531 endif
1532 endif
1533 endif
1534 endif
1535 endif
1536 ifdef NEED_MD5
1537 ifdef CONFIG_INTERNAL_MD5
1538 MD5OBJS += ../src/crypto/md5-internal.o
1539 endif
1540 OBJS += $(MD5OBJS)
1541 OBJS_p += $(MD5OBJS)
1542 OBJS_priv += $(MD5OBJS)
1543 endif
1544
1545 ifdef NEED_MD4
1546 ifdef CONFIG_INTERNAL_MD4
1547 OBJS += ../src/crypto/md4-internal.o
1548 endif
1549 endif
1550
1551 DESOBJS = # none needed when not internal
1552 ifdef NEED_DES
1553 ifndef CONFIG_FIPS
1554 CFLAGS += -DCONFIG_DES
1555 endif
1556 ifdef CONFIG_INTERNAL_DES
1557 DESOBJS += ../src/crypto/des-internal.o
1558 endif
1559 endif
1560
1561 ifdef CONFIG_NO_RC4
1562 CFLAGS += -DCONFIG_NO_RC4
1563 endif
1564
1565 ifdef NEED_RC4
1566 ifdef CONFIG_INTERNAL_RC4
1567 ifndef CONFIG_NO_RC4
1568 OBJS += ../src/crypto/rc4.o
1569 endif
1570 endif
1571 endif
1572
1573 ifdef CONFIG_SAE
1574 ifdef NEED_SHA384
1575 # Need to add HMAC-SHA384 KDF as well, if SHA384 was enabled.
1576 NEED_HMAC_SHA384_KDF=y
1577 endif
1578 ifdef NEED_SHA512
1579 # Need to add HMAC-SHA512 KDF as well, if SHA512 was enabled.
1580 NEED_HMAC_SHA512_KDF=y
1581 endif
1582 endif
1583
1584 SHA256OBJS = # none by default
1585 CFLAGS += -DCONFIG_SHA256
1586 ifneq ($(CONFIG_TLS), openssl)
1587 ifneq ($(CONFIG_TLS), linux)
1588 ifneq ($(CONFIG_TLS), gnutls)
1589 ifneq ($(CONFIG_TLS), wolfssl)
1590 SHA256OBJS += ../src/crypto/sha256.o
1591 endif
1592 endif
1593 endif
1594 endif
1595 SHA256OBJS += ../src/crypto/sha256-prf.o
1596 ifdef CONFIG_INTERNAL_SHA256
1597 SHA256OBJS += ../src/crypto/sha256-internal.o
1598 endif
1599 ifdef CONFIG_INTERNAL_SHA384
1600 CFLAGS += -DCONFIG_INTERNAL_SHA384
1601 SHA256OBJS += ../src/crypto/sha384-internal.o
1602 endif
1603 ifdef CONFIG_INTERNAL_SHA512
1604 CFLAGS += -DCONFIG_INTERNAL_SHA512
1605 SHA256OBJS += ../src/crypto/sha512-internal.o
1606 endif
1607 ifdef NEED_TLS_PRF_SHA256
1608 SHA256OBJS += ../src/crypto/sha256-tlsprf.o
1609 endif
1610 ifdef NEED_TLS_PRF_SHA384
1611 SHA256OBJS += ../src/crypto/sha384-tlsprf.o
1612 endif
1613 ifdef NEED_HMAC_SHA256_KDF
1614 CFLAGS += -DCONFIG_HMAC_SHA256_KDF
1615 OBJS += ../src/crypto/sha256-kdf.o
1616 endif
1617 ifdef NEED_HMAC_SHA384_KDF
1618 CFLAGS += -DCONFIG_HMAC_SHA384_KDF
1619 OBJS += ../src/crypto/sha384-kdf.o
1620 endif
1621 ifdef NEED_HMAC_SHA512_KDF
1622 CFLAGS += -DCONFIG_HMAC_SHA512_KDF
1623 OBJS += ../src/crypto/sha512-kdf.o
1624 endif
1625 OBJS += $(SHA256OBJS)
1626 ifdef NEED_SHA384
1627 ifneq ($(CONFIG_TLS), openssl)
1628 ifneq ($(CONFIG_TLS), linux)
1629 ifneq ($(CONFIG_TLS), gnutls)
1630 ifneq ($(CONFIG_TLS), wolfssl)
1631 OBJS += ../src/crypto/sha384.o
1632 endif
1633 endif
1634 endif
1635 endif
1636 CFLAGS += -DCONFIG_SHA384
1637 OBJS += ../src/crypto/sha384-prf.o
1638 endif
1639 ifdef NEED_SHA512
1640 ifneq ($(CONFIG_TLS), openssl)
1641 ifneq ($(CONFIG_TLS), linux)
1642 ifneq ($(CONFIG_TLS), gnutls)
1643 ifneq ($(CONFIG_TLS), wolfssl)
1644 OBJS += ../src/crypto/sha512.o
1645 endif
1646 endif
1647 endif
1648 endif
1649 CFLAGS += -DCONFIG_SHA512
1650 OBJS += ../src/crypto/sha512-prf.o
1651 endif
1652
1653 ifdef NEED_ASN1
1654 OBJS += ../src/tls/asn1.o
1655 endif
1656
1657 ifdef NEED_DH_GROUPS
1658 OBJS += ../src/crypto/dh_groups.o
1659 endif
1660 ifdef NEED_DH_GROUPS_ALL
1661 CFLAGS += -DALL_DH_GROUPS
1662 endif
1663 ifdef CONFIG_INTERNAL_DH_GROUP5
1664 ifdef NEED_DH_GROUPS
1665 OBJS += ../src/crypto/dh_group5.o
1666 endif
1667 endif
1668
1669 ifdef NEED_ECC
1670 CFLAGS += -DCONFIG_ECC
1671 endif
1672
1673 ifdef CONFIG_NO_RANDOM_POOL
1674 CFLAGS += -DCONFIG_NO_RANDOM_POOL
1675 else
1676 ifdef CONFIG_GETRANDOM
1677 CFLAGS += -DCONFIG_GETRANDOM
1678 endif
1679 OBJS += ../src/crypto/random.o
1680 endif
1681
1682 ifdef CONFIG_CTRL_IFACE
1683 ifeq ($(CONFIG_CTRL_IFACE), y)
1684 ifdef CONFIG_NATIVE_WINDOWS
1685 CONFIG_CTRL_IFACE=named_pipe
1686 else
1687 CONFIG_CTRL_IFACE=unix
1688 endif
1689 endif
1690 CFLAGS += -DCONFIG_CTRL_IFACE
1691 ifeq ($(CONFIG_CTRL_IFACE), unix)
1692 CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1693 OBJS += ../src/common/ctrl_iface_common.o
1694 endif
1695 ifeq ($(CONFIG_CTRL_IFACE), udp)
1696 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1697 endif
1698 ifeq ($(CONFIG_CTRL_IFACE), udp6)
1699 CONFIG_CTRL_IFACE=udp
1700 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1701 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
1702 endif
1703 ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1704 CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1705 endif
1706 ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
1707 CONFIG_CTRL_IFACE=udp
1708 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1709 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
1710 endif
1711 ifeq ($(CONFIG_CTRL_IFACE), udp6-remote)
1712 CONFIG_CTRL_IFACE=udp
1713 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1714 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
1715 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
1716 endif
1717 OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
1718 endif
1719
1720 ifdef CONFIG_CTRL_IFACE_DBUS_NEW
1721 CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
1722 OBJS += dbus/dbus_dict_helpers.o
1723 OBJS += dbus/dbus_new_helpers.o
1724 OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o
1725 OBJS += dbus/dbus_common.o
1726 ifdef CONFIG_WPS
1727 OBJS += dbus/dbus_new_handlers_wps.o
1728 endif
1729 ifdef CONFIG_P2P
1730 OBJS += dbus/dbus_new_handlers_p2p.o
1731 endif
1732 ifndef DBUS_LIBS
1733 DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
1734 endif
1735 ifndef DBUS_INCLUDE
1736 DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
1737 endif
1738 ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
1739 OBJS += dbus/dbus_new_introspect.o
1740 CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
1741 endif
1742 CFLAGS += $(DBUS_INCLUDE)
1743 LIBS += $(DBUS_LIBS)
1744 endif
1745
1746 ifdef CONFIG_READLINE
1747 OBJS_c += ../src/utils/edit_readline.o
1748 LIBS_c += -lreadline -lncurses
1749 else
1750 ifdef CONFIG_WPA_CLI_EDIT
1751 OBJS_c += ../src/utils/edit.o
1752 else
1753 OBJS_c += ../src/utils/edit_simple.o
1754 endif
1755 endif
1756
1757 ifdef CONFIG_NATIVE_WINDOWS
1758 CFLAGS += -DCONFIG_NATIVE_WINDOWS
1759 LIBS += -lws2_32 -lgdi32 -lcrypt32
1760 LIBS_c += -lws2_32
1761 LIBS_p += -lws2_32 -lgdi32
1762 ifeq ($(CONFIG_CRYPTO), cryptoapi)
1763 LIBS_p += -lcrypt32
1764 endif
1765 endif
1766
1767 ifdef CONFIG_NO_STDOUT_DEBUG
1768 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1769 ifndef CONFIG_CTRL_IFACE
1770 CFLAGS += -DCONFIG_NO_WPA_MSG
1771 endif
1772 endif
1773
1774 ifdef CONFIG_IPV6
1775 # for eapol_test only
1776 CFLAGS += -DCONFIG_IPV6
1777 endif
1778
1779 ifdef CONFIG_NO_LINUX_PACKET_SOCKET_WAR
1780 CFLAGS += -DCONFIG_NO_LINUX_PACKET_SOCKET_WAR
1781 endif
1782
1783 ifdef NEED_BASE64
1784 OBJS += ../src/utils/base64.o
1785 endif
1786
1787 ifdef NEED_SME
1788 OBJS += sme.o
1789 CFLAGS += -DCONFIG_SME
1790 endif
1791
1792 OBJS += ../src/common/ieee802_11_common.o
1793 OBJS += ../src/common/hw_features_common.o
1794
1795 ifdef NEED_EAP_COMMON
1796 OBJS += ../src/eap_common/eap_common.o
1797 endif
1798
1799 ifndef CONFIG_MAIN
1800 CONFIG_MAIN=main
1801 endif
1802
1803 ifdef CONFIG_DEBUG_SYSLOG
1804 CFLAGS += -DCONFIG_DEBUG_SYSLOG
1805 ifdef CONFIG_DEBUG_SYSLOG_FACILITY
1806 CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
1807 endif
1808 endif
1809
1810 ifdef CONFIG_DEBUG_LINUX_TRACING
1811 CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
1812 endif
1813
1814 ifdef CONFIG_DEBUG_FILE
1815 CFLAGS += -DCONFIG_DEBUG_FILE
1816 endif
1817
1818 ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1819 CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1820 endif
1821
1822 ifdef CONFIG_FIPS
1823 CFLAGS += -DCONFIG_FIPS
1824 ifneq ($(CONFIG_TLS), openssl)
1825 ifneq ($(CONFIG_TLS), wolfssl)
1826 $(error CONFIG_FIPS=y requires CONFIG_TLS=openssl)
1827 endif
1828 endif
1829 endif
1830
1831 OBJS += $(SHA1OBJS) $(DESOBJS)
1832
1833 OBJS_p += $(SHA1OBJS)
1834 OBJS_p += $(SHA256OBJS)
1835 OBJS_priv += $(SHA1OBJS)
1836
1837 ifdef CONFIG_BGSCAN_SIMPLE
1838 CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1839 OBJS += bgscan_simple.o
1840 NEED_BGSCAN=y
1841 endif
1842
1843 ifdef CONFIG_BGSCAN_LEARN
1844 CFLAGS += -DCONFIG_BGSCAN_LEARN
1845 OBJS += bgscan_learn.o
1846 NEED_BGSCAN=y
1847 endif
1848
1849 ifdef NEED_BGSCAN
1850 CFLAGS += -DCONFIG_BGSCAN
1851 OBJS += bgscan.o
1852 endif
1853
1854 ifdef CONFIG_AUTOSCAN_EXPONENTIAL
1855 CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL
1856 OBJS += autoscan_exponential.o
1857 NEED_AUTOSCAN=y
1858 endif
1859
1860 ifdef CONFIG_AUTOSCAN_PERIODIC
1861 CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC
1862 OBJS += autoscan_periodic.o
1863 NEED_AUTOSCAN=y
1864 endif
1865
1866 ifdef NEED_AUTOSCAN
1867 CFLAGS += -DCONFIG_AUTOSCAN
1868 OBJS += autoscan.o
1869 endif
1870
1871 ifdef CONFIG_EXT_PASSWORD_TEST
1872 OBJS += ../src/utils/ext_password_test.o
1873 CFLAGS += -DCONFIG_EXT_PASSWORD_TEST
1874 NEED_EXT_PASSWORD=y
1875 endif
1876
1877 ifdef CONFIG_EXT_PASSWORD_FILE
1878 OBJS += ../src/utils/ext_password_file.o
1879 CFLAGS += -DCONFIG_EXT_PASSWORD_FILE
1880 NEED_EXT_PASSWORD=y
1881 endif
1882
1883 ifdef NEED_EXT_PASSWORD
1884 OBJS += ../src/utils/ext_password.o
1885 CFLAGS += -DCONFIG_EXT_PASSWORD
1886 endif
1887
1888 ifdef NEED_GAS_SERVER
1889 OBJS += ../src/common/gas_server.o
1890 CFLAGS += -DCONFIG_GAS_SERVER
1891 NEED_GAS=y
1892 endif
1893
1894 ifdef NEED_GAS
1895 OBJS += ../src/common/gas.o
1896 OBJS += gas_query.o
1897 CFLAGS += -DCONFIG_GAS
1898 NEED_OFFCHANNEL=y
1899 endif
1900
1901 ifdef NEED_OFFCHANNEL
1902 OBJS += offchannel.o
1903 CFLAGS += -DCONFIG_OFFCHANNEL
1904 endif
1905
1906 ifdef NEED_JSON
1907 OBJS += ../src/utils/json.o
1908 CFLAGS += -DCONFIG_JSON
1909 endif
1910
1911 ifdef CONFIG_MODULE_TESTS
1912 CFLAGS += -DCONFIG_MODULE_TESTS
1913 OBJS += wpas_module_tests.o
1914 OBJS += ../src/utils/utils_module_tests.o
1915 OBJS += ../src/common/common_module_tests.o
1916 OBJS += ../src/crypto/crypto_module_tests.o
1917 ifdef CONFIG_WPS
1918 OBJS += ../src/wps/wps_module_tests.o
1919 endif
1920 endif
1921
1922 OBJS += ../src/drivers/driver_common.o
1923 OBJS_priv += ../src/drivers/driver_common.o
1924
1925 OBJS += wpa_supplicant.o events.o bssid_ignore.o wpas_glue.o scan.o
1926 OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o
1927 OBJS_t += ../src/radius/radius_client.o
1928 OBJS_t += ../src/radius/radius.o
1929 ifdef CONFIG_RADIUS_TLS
1930 CFLAGS += -DCONFIG_RADIUS_TLS
1931 endif
1932 OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
1933
1934 OBJS_nfc := $(OBJS) $(OBJS_l2) nfc_pw_token.o
1935 OBJS_nfc += $(OBJS_d) ../src/drivers/drivers.o
1936
1937 OBJS += $(CONFIG_MAIN).o
1938
1939 ifdef CONFIG_PRIVSEP
1940 OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o
1941 OBJS_priv += $(OBJS_l2)
1942 OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
1943 OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
1944 OBJS_priv += ../src/utils/common.o
1945 OBJS_priv += ../src/utils/wpa_debug.o
1946 OBJS_priv += ../src/utils/wpabuf.o
1947 OBJS_priv += wpa_priv.o
1948 ifdef CONFIG_DRIVER_NL80211
1949 OBJS_priv += ../src/common/ieee802_11_common.o
1950 endif
1951 OBJS += ../src/l2_packet/l2_packet_privsep.o
1952 OBJS += ../src/drivers/driver_privsep.o
1953 EXTRA_progs += wpa_priv
1954 else
1955 OBJS += $(OBJS_d) ../src/drivers/drivers.o
1956 OBJS += $(OBJS_l2)
1957 endif
1958
1959 ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1960 CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1961 OBJS += ../src/drivers/ndis_events.o
1962 EXTRALIBS += -loleaut32 -lole32 -luuid
1963 ifdef PLATFORMSDKLIB
1964 EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1965 else
1966 EXTRALIBS += WbemUuid.Lib
1967 endif
1968 endif
1969
1970 ifdef CONFIG_FST
1971 CFLAGS += -DCONFIG_FST
1972 ifdef CONFIG_FST_TEST
1973 CFLAGS += -DCONFIG_FST_TEST
1974 endif
1975 FST_OBJS += ../src/fst/fst.o
1976 FST_OBJS += ../src/fst/fst_session.o
1977 FST_OBJS += ../src/fst/fst_iface.o
1978 FST_OBJS += ../src/fst/fst_group.o
1979 FST_OBJS += ../src/fst/fst_ctrl_aux.o
1980 ifdef CONFIG_CTRL_IFACE
1981 FST_OBJS += ../src/fst/fst_ctrl_iface.o
1982 endif
1983 OBJS += $(FST_OBJS)
1984 OBJS_t += $(FST_OBJS)
1985 OBJS_t2 += $(FST_OBJS)
1986 OBJS_nfc += $(FST_OBJS)
1987 endif
1988
1989 ifdef CONFIG_WEP
1990 CFLAGS += -DCONFIG_WEP
1991 endif
1992
1993 ifdef CONFIG_NO_TKIP
1994 CFLAGS += -DCONFIG_NO_TKIP
1995 endif
1996
1997 dynamic_eap_methods: $(EAPDYN)
1998
1999 _OBJS_VAR := OBJS_priv
2000 include ../src/objs.mk
2001 wpa_priv: $(BCHECK) $(OBJS_priv)
2002 $(Q)$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS)
2003 @$(E) " LD " $@
2004
2005 _OBJS_VAR := OBJS
2006 include ../src/objs.mk
2007 wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
2008 $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
2009 @$(E) " LD " $@
2010
2011 _OBJS_VAR := OBJS_t
2012 include ../src/objs.mk
2013 eapol_test: $(OBJS_t)
2014 $(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
2015 @$(E) " LD " $@
2016
2017 _OBJS_VAR := OBJS_t2
2018 include ../src/objs.mk
2019 preauth_test: $(OBJS_t2)
2020 $(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
2021 @$(E) " LD " $@
2022
2023 _OBJS_VAR := OBJS_p
2024 include ../src/objs.mk
2025 wpa_passphrase: $(OBJS_p)
2026 $(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) $(LIBS)
2027 @$(E) " LD " $@
2028
2029 _OBJS_VAR := OBJS_c
2030 include ../src/objs.mk
2031 wpa_cli: $(OBJS_c)
2032 $(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
2033 @$(E) " LD " $@
2034
2035 LIBCTRL += ../src/common/wpa_ctrl.o
2036 LIBCTRL += ../src/utils/os_$(CONFIG_OS).o
2037 LIBCTRL += ../src/utils/common.o
2038 LIBCTRL += ../src/utils/wpa_debug.o
2039 LIBCTRLSO += ../src/common/wpa_ctrl.c
2040 LIBCTRLSO += ../src/utils/os_$(CONFIG_OS).c
2041 LIBCTRLSO += ../src/utils/common.c
2042 LIBCTRLSO += ../src/utils/wpa_debug.c
2043
2044 _OBJS_VAR := LIBCTRL
2045 include ../src/objs.mk
2046 libwpa_client.a: $(LIBCTRL)
2047 $(Q)rm -f $@
2048 $(Q)$(AR) crs $@ $?
2049 @$(E) " AR " $@
2050
2051 libwpa_client.so: $(LIBCTRLSO)
2052 @$(E) " CC $@ ($^)"
2053 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -fPIC $^
2054
2055 OBJS_wpatest := libwpa_test.o
2056 _OBJS_VAR := OBJS_wpatest
2057 include ../src/objs.mk
2058 libwpa_test1: $(OBJS_wpatest) libwpa_client.a
2059 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test1 $(OBJS_wpatest) libwpa_client.a $(LIBS_c)
2060 @$(E) " LD " $@
2061
2062 libwpa_test2: $(OBJS_wpatest) libwpa_client.so
2063 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test2 $(OBJS_wpatest) -L. -lwpa_client $(LIBS_c)
2064 @$(E) " LD " $@
2065
2066 _OBJS_VAR := OBJS_nfc
2067 include ../src/objs.mk
2068 nfc_pw_token: $(OBJS_nfc)
2069 $(Q)$(LDO) $(LDFLAGS) -o nfc_pw_token $(OBJS_nfc) $(LIBS)
2070 @$(E) " LD " $@
2071
2072 win_if_list: win_if_list.c
2073 $(Q)$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
2074 @$(E) " LD " $@
2075
2076 eap_psk.so: $(SRC_EAP_PSK)
2077 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2078 -Deap_peer_psk_register=eap_peer_method_dynamic_init
2079 @$(E) " CC/LD " $@
2080
2081 eap_pax.so: $(SRC_EAP_PAX)
2082 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2083 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2084 @$(E) " CC/LD " $@
2085
2086 eap_peap.so: $(SRC_EAP_PEAP)
2087 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2088 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2089 @$(E) " CC/LD " $@
2090
2091 eap_sake.so: $(SRC_EAP_SAKE)
2092 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2093 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2094 @$(E) " CC/LD " $@
2095
2096 eap_ikev2.so: $(SRC_EAP_IKEV2)
2097 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2098 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2099 @$(E) " CC/LD " $@
2100
2101 eap_eke.so: $(SRC_EAP_EKE)
2102 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2103 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2104 @$(E) " CC/LD " $@
2105
2106 eap_mschapv2.so: $(SRC_EAP_MSCHAPV2)
2107 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2108 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2109 @$(E) " CC/LD " $@
2110
2111 eap_fast.so: $(SRC_EAP_FAST)
2112 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2113 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2114 @$(E) " CC/LD " $@
2115
2116 eap_teap.so: $(SRC_EAP_TEAP)
2117 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2118 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2119 @$(E) " CC/LD " $@
2120
2121 eap_gpsk.so: $(SRC_EAP_GPSK)
2122 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
2123 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init
2124 @$(E) " CC/LD " $@
2125
2126 %.so: ../src/eap_peer/%.c
2127 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
2128 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
2129 @$(E) " CC/LD " $@
2130
2131 %.service: %.service.in
2132 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
2133 @$(E) " sed" $<
2134
2135 %@.service: %.service.arg.in
2136 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
2137 @$(E) " sed" $<
2138
2139 wpa_supplicant.exe: wpa_supplicant
2140 mv -f $< $@
2141 wpa_cli.exe: wpa_cli
2142 mv -f $< $@
2143 wpa_passphrase.exe: wpa_passphrase
2144 mv -f $< $@
2145 win_if_list.exe: win_if_list
2146 mv -f $< $@
2147 eapol_test.exe: eapol_test
2148 mv -f $< $@
2149
2150 WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
2151
2152 windows-bin: $(WINALL)
2153 $(STRIP) $(WINALL)
2154
2155 wpa_gui:
2156 @echo "wpa_gui has been removed - see wpa_gui-qt4 for replacement"
2157
2158 wpa_gui-qt4/Makefile:
2159 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro
2160
2161 wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts
2162 lrelease wpa_gui-qt4/wpa_gui.pro
2163
2164 wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm
2165 $(MAKE) -C wpa_gui-qt4
2166
2167 FIPSDIR=/usr/local/ssl/fips-2.0
2168 FIPSLD=$(FIPSDIR)/bin/fipsld
2169 fips:
2170 $(MAKE) CC=$(FIPSLD) FIPSLD_CC="$(CC)"
2171
2172 .PHONY: lcov-html
2173 lcov-html: $(call BUILDOBJ,wpa_supplicant.gcda)
2174 lcov -c -d $(BUILDDIR) > lcov.info
2175 genhtml lcov.info --output-directory lcov-html
2176
2177 PASN_CFLAGS := $(CFLAGS)
2178 PASN_CFLAGS += -DCONFIG_PASN
2179
2180 LIBPASNSO := ../src/utils/$(CONFIG_ELOOP).c
2181 LIBPASNSO += ../src/utils/wpa_debug.c
2182 LIBPASNSO += ../src/utils/wpabuf.c
2183 LIBPASNSO += ../src/utils/os_$(CONFIG_OS).c
2184 LIBPASNSO += ../src/utils/config.c
2185 LIBPASNSO += ../src/utils/common.c
2186
2187 ifdef NEED_BASE64
2188 LIBPASNSO += ../src/utils/base64.c
2189 endif
2190
2191 ifdef CONFIG_WPA_TRACE
2192 LIBPASNSO += ../src/utils/trace.c
2193 endif
2194
2195 ifdef CONFIG_EXT_PASSWORD_FILE
2196 LIBPASNSO += ../src/utils/ext_password_file.c
2197 endif
2198
2199 ifdef CONFIG_EXT_PASSWORD_TEST
2200 LIBPASNSO += ../src/utils/ext_password_test.c
2201 endif
2202
2203 ifdef NEED_EXT_PASSWORD
2204 LIBPASNSO += ../src/utils/ext_password.c
2205 endif
2206
2207 ifdef CONFIG_SAE
2208 LIBPASNSO += ../src/common/sae.c
2209 endif
2210
2211 ifdef CONFIG_SAE_PK
2212 LIBPASNSO += ../src/common/sae_pk.c
2213 endif
2214
2215 ifndef CONFIG_NO_WPA
2216 LIBPASNSO += ../src/common/wpa_common.c
2217 endif
2218
2219 LIBPASNSO += ../src/common/ieee802_11_common.c
2220
2221 ifdef NEED_DRAGONFLY
2222 LIBPASNSO += ../src/common/dragonfly.c
2223 endif
2224
2225 LIBPASNSO += ../src/common/ptksa_cache.c
2226 LIBPASNSO += ../src/rsn_supp/pmksa_cache.c
2227
2228 ifndef CONFIG_NO_WPA
2229 LIBPASNSO += ../src/rsn_supp/wpa_ie.c
2230 endif
2231
2232 LIBPASNSO += ../src/ap/comeback_token.c
2233 LIBPASNSO += ../src/ap/pmksa_cache_auth.c
2234
2235 ifdef NEED_EAP_COMMON
2236 LIBPASNSO += ../src/eap_common/eap_common.c
2237 endif
2238
2239 ifdef CHAP
2240 LIBPASNSO += ../src/eap_common/chap.c
2241 endif
2242
2243 ifdef CONFIG_IEEE8021X_EAPOL
2244 LIBPASNSO += ../src/eap_peer/eap.c
2245 LIBPASNSO += ../src/eap_peer/eap_methods.c
2246 LIBPASNSO += ../src/eapol_supp/eapol_supp_sm.c
2247 endif
2248
2249 ifeq ($(CONFIG_TLS), wolfssl)
2250 LIBPASNSO += ../src/crypto/crypto_wolfssl.c
2251 ifdef TLS_FUNCS
2252 LIBPASNSO += ../src/crypto/tls_wolfssl.c
2253 NEED_TLS_PRF_SHA256=y
2254 LIBPASNSO += -lwolfssl -lm
2255 endif
2256 endif
2257
2258 ifeq ($(CONFIG_TLS), openssl)
2259 LIBPASNSO += ../src/crypto/crypto_openssl.c
2260 ifdef TLS_FUNCS
2261 LIBPASNSO += ../src/crypto/tls_openssl.c
2262 LIBPASNSO += -lssl -lcrypto
2263 NEED_TLS_PRF_SHA256=y
2264 endif
2265 endif
2266
2267 ifeq ($(CONFIG_TLS), gnutls)
2268 LIBPASNSO += ../src/crypto/crypto_$(CONFIG_CRYPTO).c
2269 ifdef TLS_FUNCS
2270 LIBPASNSO += ../src/crypto/tls_gnutls.c
2271 LIBPASNSO += -lgnutls -lgpg-error
2272 LIBPASNSO += -lgcrypt
2273 endif
2274 endif
2275
2276 ifdef NEED_TLS_PRF_SHA256
2277 LIBPASNSO += ../src/crypto/sha256-tlsprf.c
2278 endif
2279
2280 ifdef NEED_SHA512
2281 LIBPASNSO += ../src/crypto/sha512-prf.c
2282 endif
2283
2284 ifdef NEED_SHA384
2285 LIBPASNSO += ../src/crypto/sha384-prf.c
2286 endif
2287
2288 LIBPASNSO += ../src/crypto/sha256-prf.c
2289
2290 ifdef NEED_HMAC_SHA512_KDF
2291 LIBPASNSO += ../src/crypto/sha512-kdf.c
2292 endif
2293
2294 ifdef NEED_HMAC_SHA384_KDF
2295 LIBPASNSO += ../src/crypto/sha384-kdf.c
2296 endif
2297
2298 ifdef NEED_HMAC_SHA256_KDF
2299 LIBPASNSO += ../src/crypto/sha256-kdf.c
2300 endif
2301
2302 ifdef NEED_DH_GROUPS
2303 LIBPASNSO += ../src/crypto/dh_groups.c
2304 endif
2305
2306 ifdef NEED_AES_SIV
2307 LIBPASNSO += ../src/crypto/aes-siv.c
2308 endif
2309
2310 ifdef NEED_AES_CTR
2311 LIBPASNSO += ../src/crypto/aes-ctr.c
2312 endif
2313
2314 ifdef NEED_SHA1
2315 LIBPASNSO += ../src/crypto/sha1-prf.c
2316 ifdef NEED_TLS_PRF
2317 LIBPASNSO += ../src/crypto/sha1-tlsprf.c
2318 endif
2319 endif
2320
2321 LIBPASNSO += ../src/pasn/pasn_initiator.c
2322 LIBPASNSO += ../src/pasn/pasn_responder.c
2323 LIBPASNSO += ../src/pasn/pasn_common.c
2324
2325 libpasn.so: $(LIBPASNSO)
2326 @$(E) " CC $@ ($^)"
2327 $(Q)$(CC) $(LDFLAGS) -o $@ $(PASN_CFLAGS) -shared -fPIC -lcrypto $^
2328
2329 clean: common-clean
2330 $(MAKE) -C ../src clean
2331 $(MAKE) -C dbus clean
2332 rm -f core *~ *.o *.d *.gcno *.gcda *.gcov
2333 rm -f eap_*.so $(WINALL) eapol_test preauth_test
2334 rm -f wpa_priv
2335 rm -f nfc_pw_token
2336 rm -f lcov.info
2337 rm -rf lcov-html
2338 rm -f libwpa_client.a
2339 rm -f libpasn.so
2340 rm -f libwpa_client.so
2341 rm -f libwpa_test1 libwpa_test2
2342 rm -f wpa_passphrase
2343