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