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