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