OSDN Git Service

am be5cce4a: Check if interface is valid in wpa_ctrl_close()
[android-x86/external-wpa_supplicant.git] / Makefile
1 ifndef CC
2 CC=gcc
3 endif
4
5 ifndef CFLAGS
6 CFLAGS = -MMD -O2 -Wall -g
7 endif
8
9 # Include directories for CVS version
10 CFLAGS += -I. -I../utils -I../hostapd
11
12 ALL=wpa_supplicant wpa_passphrase wpa_cli
13
14 all: verify_config $(ALL) dynamic_eap_methods
15
16 verify_config:
17         @if [ ! -r .config ]; then \
18                 echo 'Building wpa_supplicant requires a configuration file'; \
19                 echo '(.config). See README for more instructions. You can'; \
20                 echo 'run "cp defconfig .config" to create an example'; \
21                 echo 'configuration.'; \
22                 exit 1; \
23         fi
24
25 mkconfig:
26         @if [ -e .config ]; then \
27                 echo '.config exists - did not replace it'; \
28                 exit 1; \
29         fi
30         echo CONFIG_DRIVER_HOSTAP=y >> .config
31         echo CONFIG_DRIVER_WEXT=y >> .config
32         echo CONFIG_WIRELESS_EXTENSION=y >> .config
33
34 install: all
35         mkdir -p $(DESTDIR)/usr/local/sbin/
36         for i in $(ALL); do cp $$i $(DESTDIR)/usr/local/sbin/$$i; done
37
38 OBJS = config.o \
39         common.o md5.o md4.o \
40         rc4.o sha1.o des.o
41 OBJS_p = wpa_passphrase.o sha1.o md5.o md4.o \
42         common.o des.o
43 OBJS_c = wpa_cli.o wpa_ctrl.o
44
45 -include .config
46
47 ifndef CONFIG_OS
48 ifdef CONFIG_NATIVE_WINDOWS
49 CONFIG_OS=win32
50 else
51 CONFIG_OS=unix
52 endif
53 endif
54
55 ifeq ($(CONFIG_OS), internal)
56 CFLAGS += -DOS_NO_C_LIB_DEFINES
57 endif
58
59 OBJS += os_$(CONFIG_OS).o
60 OBJS_p += os_$(CONFIG_OS).o
61 OBJS_c += os_$(CONFIG_OS).o
62
63 ifndef CONFIG_ELOOP
64 CONFIG_ELOOP=eloop
65 endif
66 OBJS += $(CONFIG_ELOOP).o
67
68
69 ifdef CONFIG_EAPOL_TEST
70 CFLAGS += -Werror -DEAPOL_TEST
71 endif
72
73 ifndef CONFIG_BACKEND
74 CONFIG_BACKEND=file
75 endif
76
77 ifeq ($(CONFIG_BACKEND), file)
78 OBJS += config_file.o base64.o
79 CFLAGS += -DCONFIG_BACKEND_FILE
80 endif
81
82 ifeq ($(CONFIG_BACKEND), winreg)
83 OBJS += config_winreg.o
84 endif
85
86 ifeq ($(CONFIG_BACKEND), none)
87 OBJS += config_none.o
88 endif
89
90 ifdef CONFIG_DRIVER_HOSTAP
91 CFLAGS += -DCONFIG_DRIVER_HOSTAP
92 OBJS_d += driver_hostap.o
93 CONFIG_WIRELESS_EXTENSION=y
94 endif
95
96 ifdef CONFIG_DRIVER_WEXT
97 CFLAGS += -DCONFIG_DRIVER_WEXT
98 CONFIG_WIRELESS_EXTENSION=y
99 endif
100
101 ifdef CONFIG_DRIVER_PRISM54
102 CFLAGS += -DCONFIG_DRIVER_PRISM54
103 OBJS_d += driver_prism54.o
104 CONFIG_WIRELESS_EXTENSION=y
105 endif
106
107 ifdef CONFIG_DRIVER_HERMES
108 CFLAGS += -DCONFIG_DRIVER_HERMES
109 OBJS_d += driver_hermes.o
110 CONFIG_WIRELESS_EXTENSION=y
111 endif
112
113 ifdef CONFIG_DRIVER_MADWIFI
114 CFLAGS += -DCONFIG_DRIVER_MADWIFI
115 OBJS_d += driver_madwifi.o
116 CONFIG_WIRELESS_EXTENSION=y
117 endif
118
119 ifdef CONFIG_DRIVER_ATMEL
120 CFLAGS += -DCONFIG_DRIVER_ATMEL
121 OBJS_d += driver_atmel.o
122 CONFIG_WIRELESS_EXTENSION=y
123 endif
124
125 ifdef CONFIG_DRIVER_NDISWRAPPER
126 CFLAGS += -DCONFIG_DRIVER_NDISWRAPPER
127 OBJS_d += driver_ndiswrapper.o
128 CONFIG_WIRELESS_EXTENSION=y
129 endif
130
131 ifdef CONFIG_DRIVER_BROADCOM
132 CFLAGS += -DCONFIG_DRIVER_BROADCOM
133 OBJS_d += driver_broadcom.o
134 endif
135
136 ifdef CONFIG_DRIVER_IPW
137 CFLAGS += -DCONFIG_DRIVER_IPW
138 OBJS_d += driver_ipw.o
139 CONFIG_WIRELESS_EXTENSION=y
140 endif
141
142 ifdef CONFIG_DRIVER_BSD
143 CFLAGS += -DCONFIG_DRIVER_BSD
144 OBJS_d += driver_bsd.o
145 ifndef CONFIG_L2_PACKET
146 CONFIG_L2_PACKET=freebsd
147 endif
148 endif
149
150 ifdef CONFIG_DRIVER_NDIS
151 CFLAGS += -DCONFIG_DRIVER_NDIS
152 OBJS_d += driver_ndis.o
153 ifdef CONFIG_NDIS_EVENTS_INTEGRATED
154 OBJS_d += driver_ndis_.o
155 endif
156 ifndef CONFIG_L2_PACKET
157 CONFIG_L2_PACKET=pcap
158 endif
159 CONFIG_WINPCAP=y
160 ifdef CONFIG_USE_NDISUIO
161 CFLAGS += -DCONFIG_USE_NDISUIO
162 endif
163 endif
164
165 ifdef CONFIG_DRIVER_WIRED
166 CFLAGS += -DCONFIG_DRIVER_WIRED
167 OBJS_d += driver_wired.o
168 endif
169
170 ifdef CONFIG_DRIVER_TEST
171 CFLAGS += -DCONFIG_DRIVER_TEST
172 OBJS_d += driver_test.o
173 endif
174
175 ifndef CONFIG_L2_PACKET
176 CONFIG_L2_PACKET=linux
177 endif
178
179 OBJS += l2_packet_$(CONFIG_L2_PACKET).o
180
181 ifeq ($(CONFIG_L2_PACKET), pcap)
182 ifdef CONFIG_WINPCAP
183 CFLAGS += -DCONFIG_WINPCAP
184 LIBS += -lwpcap -lpacket
185 LIBS_w += -lwpcap
186 else
187 LIBS += -ldnet -lpcap
188 endif
189 endif
190
191 ifeq ($(CONFIG_L2_PACKET), winpcap)
192 LIBS += -lwpcap -lpacket
193 LIBS_w += -lwpcap
194 endif
195
196 ifeq ($(CONFIG_L2_PACKET), freebsd)
197 LIBS += -lpcap
198 endif
199
200 ifdef CONFIG_EAP_TLS
201 # EAP-TLS
202 ifeq ($(CONFIG_EAP_TLS), dyn)
203 CFLAGS += -DEAP_TLS_DYNAMIC
204 EAPDYN += eap_tls.so
205 else
206 CFLAGS += -DEAP_TLS
207 OBJS += eap_tls.o
208 endif
209 TLS_FUNCS=y
210 CONFIG_IEEE8021X_EAPOL=y
211 endif
212
213 ifdef CONFIG_EAP_PEAP
214 # EAP-PEAP
215 ifeq ($(CONFIG_EAP_PEAP), dyn)
216 CFLAGS += -DEAP_PEAP_DYNAMIC
217 EAPDYN += eap_peap.so
218 else
219 CFLAGS += -DEAP_PEAP
220 OBJS += eap_peap.o
221 endif
222 TLS_FUNCS=y
223 CONFIG_IEEE8021X_EAPOL=y
224 CONFIG_EAP_TLV=y
225 endif
226
227 ifdef CONFIG_EAP_TTLS
228 # EAP-TTLS
229 ifeq ($(CONFIG_EAP_TTLS), dyn)
230 CFLAGS += -DEAP_TTLS_DYNAMIC
231 EAPDYN += eap_ttls.so
232 else
233 CFLAGS += -DEAP_TTLS
234 OBJS += eap_ttls.o
235 endif
236 MS_FUNCS=y
237 TLS_FUNCS=y
238 CONFIG_IEEE8021X_EAPOL=y
239 endif
240
241 ifdef CONFIG_EAP_MD5
242 # EAP-MD5
243 ifeq ($(CONFIG_EAP_MD5), dyn)
244 CFLAGS += -DEAP_MD5_DYNAMIC
245 EAPDYN += eap_md5.so
246 else
247 CFLAGS += -DEAP_MD5
248 OBJS += eap_md5.o
249 endif
250 CONFIG_IEEE8021X_EAPOL=y
251 endif
252
253 # backwards compatibility for old spelling
254 ifdef CONFIG_MSCHAPV2
255 ifndef CONFIG_EAP_MSCHAPV2
256 CONFIG_EAP_MSCHAPV2=y
257 endif
258 endif
259
260 ifdef CONFIG_EAP_MSCHAPV2
261 # EAP-MSCHAPv2
262 ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
263 CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
264 EAPDYN += eap_mschapv2.so
265 else
266 CFLAGS += -DEAP_MSCHAPv2
267 OBJS += eap_mschapv2.o
268 endif
269 MS_FUNCS=y
270 CONFIG_IEEE8021X_EAPOL=y
271 endif
272
273 ifdef CONFIG_EAP_GTC
274 # EAP-GTC
275 ifeq ($(CONFIG_EAP_GTC), dyn)
276 CFLAGS += -DEAP_GTC_DYNAMIC
277 EAPDYN += eap_gtc.so
278 else
279 CFLAGS += -DEAP_GTC
280 OBJS += eap_gtc.o
281 endif
282 CONFIG_IEEE8021X_EAPOL=y
283 endif
284
285 ifdef CONFIG_EAP_OTP
286 # EAP-OTP
287 ifeq ($(CONFIG_EAP_OTP), dyn)
288 CFLAGS += -DEAP_OTP_DYNAMIC
289 EAPDYN += eap_otp.so
290 else
291 CFLAGS += -DEAP_OTP
292 OBJS += eap_otp.o
293 endif
294 CONFIG_IEEE8021X_EAPOL=y
295 endif
296
297 ifdef CONFIG_EAP_SIM
298 # EAP-SIM
299 ifeq ($(CONFIG_EAP_SIM), dyn)
300 CFLAGS += -DEAP_SIM_DYNAMIC
301 EAPDYN += eap_sim.so
302 else
303 CFLAGS += -DEAP_SIM
304 OBJS += eap_sim.o
305 endif
306 CONFIG_IEEE8021X_EAPOL=y
307 CONFIG_EAP_SIM_COMMON=y
308 endif
309
310 ifdef CONFIG_EAP_LEAP
311 # EAP-LEAP
312 ifeq ($(CONFIG_EAP_LEAP), dyn)
313 CFLAGS += -DEAP_LEAP_DYNAMIC
314 EAPDYN += eap_leap.so
315 else
316 CFLAGS += -DEAP_LEAP
317 OBJS += eap_leap.o
318 endif
319 MS_FUNCS=y
320 CONFIG_IEEE8021X_EAPOL=y
321 endif
322
323 ifdef CONFIG_EAP_PSK
324 # EAP-PSK
325 ifeq ($(CONFIG_EAP_PSK), dyn)
326 CFLAGS += -DEAP_PSK_DYNAMIC
327 EAPDYN += eap_psk.so
328 else
329 CFLAGS += -DEAP_PSK
330 OBJS += eap_psk.o eap_psk_common.o
331 endif
332 CONFIG_IEEE8021X_EAPOL=y
333 NEED_AES=y
334 endif
335
336 ifdef CONFIG_EAP_AKA
337 # EAP-AKA
338 ifeq ($(CONFIG_EAP_AKA), dyn)
339 CFLAGS += -DEAP_AKA_DYNAMIC
340 EAPDYN += eap_aka.so
341 else
342 CFLAGS += -DEAP_AKA
343 OBJS += eap_aka.o
344 endif
345 CONFIG_IEEE8021X_EAPOL=y
346 CONFIG_EAP_SIM_COMMON=y
347 endif
348
349 ifdef CONFIG_EAP_SIM_COMMON
350 OBJS += eap_sim_common.o
351 NEED_AES=y
352 endif
353
354 ifdef CONFIG_EAP_TLV
355 # EAP-TLV
356 CFLAGS += -DEAP_TLV
357 OBJS += eap_tlv.o
358 endif
359
360 ifdef CONFIG_EAP_FAST
361 # EAP-FAST
362 ifeq ($(CONFIG_EAP_FAST), dyn)
363 CFLAGS += -DEAP_FAST_DYNAMIC
364 EAPDYN += eap_fast.so
365 else
366 CFLAGS += -DEAP_FAST
367 OBJS += eap_fast.o
368 endif
369 TLS_FUNCS=y
370 endif
371
372 ifdef CONFIG_EAP_PAX
373 # EAP-PAX
374 ifeq ($(CONFIG_EAP_PAX), dyn)
375 CFLAGS += -DEAP_PAX_DYNAMIC
376 EAPDYN += eap_pax.so
377 else
378 CFLAGS += -DEAP_PAX
379 OBJS += eap_pax.o eap_pax_common.o
380 endif
381 CONFIG_IEEE8021X_EAPOL=y
382 endif
383
384 ifdef CONFIG_EAP_SAKE
385 # EAP-SAKE
386 ifeq ($(CONFIG_EAP_SAKE), dyn)
387 CFLAGS += -DEAP_SAKE_DYNAMIC
388 EAPDYN += eap_sake.so
389 else
390 CFLAGS += -DEAP_SAKE
391 OBJS += eap_sake.o eap_sake_common.o
392 endif
393 CONFIG_IEEE8021X_EAPOL=y
394 endif
395
396 ifdef CONFIG_EAP_GPSK
397 # EAP-GPSK
398 ifeq ($(CONFIG_EAP_GPSK), dyn)
399 CFLAGS += -DEAP_GPSK_DYNAMIC
400 EAPDYN += eap_gpsk.so
401 else
402 CFLAGS += -DEAP_GPSK
403 OBJS += eap_gpsk.o eap_gpsk_common.o
404 endif
405 CONFIG_IEEE8021X_EAPOL=y
406 ifdef CONFIG_EAP_GPSK_SHA256
407 CFLAGS += -DEAP_GPSK_SHA256
408 NEED_SHA256=y
409 endif
410 endif
411
412 ifdef CONFIG_EAP_VENDOR_TEST
413 ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
414 CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
415 EAPDYN += eap_vendor_test.so
416 else
417 CFLAGS += -DEAP_VENDOR_TEST
418 OBJS += eap_vendor_test.o
419 endif
420 CONFIG_IEEE8021X_EAPOL=y
421 endif
422
423 ifdef CONFIG_IEEE8021X_EAPOL
424 # IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
425 CFLAGS += -DIEEE8021X_EAPOL
426 OBJS += eapol_sm.o eap.o eap_methods.o
427 ifdef CONFIG_DYNAMIC_EAP_METHODS
428 CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
429 LIBS += -ldl -rdynamic
430 endif
431 endif
432
433 ifdef CONFIG_PCSC
434 # PC/SC interface for smartcards (USIM, GSM SIM)
435 CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
436 OBJS += pcsc_funcs.o
437 # -lpthread may not be needed depending on how pcsc-lite was configured
438 ifdef CONFIG_NATIVE_WINDOWS
439 #Once MinGW gets support for WinScard, -lwinscard could be used instead of the
440 #dynamic symbol loading that is now used in pcsc_funcs.c
441 #LIBS += -lwinscard
442 else
443 LIBS += -lpcsclite -lpthread
444 endif
445 endif
446
447 ifndef CONFIG_TLS
448 CONFIG_TLS=openssl
449 endif
450
451 ifeq ($(CONFIG_TLS), internal)
452 ifndef CONFIG_CRYPTO
453 CONFIG_CRYPTO=internal
454 endif
455 endif
456 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
457 CFLAGS += -DCONFIG_INTERNAL_X509
458 endif
459 ifeq ($(CONFIG_CRYPTO), internal)
460 CFLAGS += -DCONFIG_INTERNAL_X509
461 endif
462
463
464 ifdef TLS_FUNCS
465 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
466 CFLAGS += -DEAP_TLS_FUNCS
467 OBJS += eap_tls_common.o
468 ifeq ($(CONFIG_TLS), openssl)
469 CFLAGS += -DEAP_TLS_OPENSSL
470 OBJS += tls_openssl.o
471 LIBS += -lssl -lcrypto
472 LIBS_p += -lcrypto
473 endif
474 ifeq ($(CONFIG_TLS), gnutls)
475 OBJS += tls_gnutls.o
476 LIBS += -lgnutls -lgcrypt -lgpg-error
477 LIBS_p += -lgcrypt
478 ifdef CONFIG_GNUTLS_EXTRA
479 CFLAGS += -DCONFIG_GNUTLS_EXTRA
480 LIBS += -lgnutls-extra
481 endif
482 endif
483 ifeq ($(CONFIG_TLS), schannel)
484 OBJS += tls_schannel.o
485 endif
486 ifeq ($(CONFIG_TLS), internal)
487 OBJS += tls_internal.o tlsv1_common.o tlsv1_client.o asn1.o x509v3.o
488 OBJS_p += asn1.o rc4.o aes_wrap.o
489 ifneq ($(CONFIG_BACKEND), file)
490 OBJS += base64.o
491 endif
492 CFLAGS += -DCONFIG_TLS_INTERNAL
493 ifeq ($(CONFIG_CRYPTO), internal)
494 ifdef CONFIG_INTERNAL_LIBTOMMATH
495 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
496 else
497 LIBS += -ltommath
498 LIBS_p += -ltommath
499 endif
500 endif
501 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
502 LIBS += -ltomcrypt -ltfm
503 LIBS_p += -ltomcrypt -ltfm
504 endif
505 endif
506 ifeq ($(CONFIG_TLS), none)
507 OBJS += tls_none.o
508 CFLAGS += -DEAP_TLS_NONE
509 CONFIG_INTERNAL_AES=y
510 CONFIG_INTERNAL_SHA1=y
511 CONFIG_INTERNAL_MD5=y
512 CONFIG_INTERNAL_SHA256=y
513 endif
514 ifdef CONFIG_SMARTCARD
515 ifndef CONFIG_NATIVE_WINDOWS
516 ifneq ($(CONFIG_L2_PACKET), freebsd)
517 LIBS += -ldl
518 endif
519 endif
520 endif
521 NEED_CRYPTO=y
522 else
523 OBJS += tls_none.o
524 endif
525
526 ifdef CONFIG_PKCS12
527 CFLAGS += -DPKCS12_FUNCS
528 endif
529
530 ifdef CONFIG_SMARTCARD
531 CFLAGS += -DCONFIG_SMARTCARD
532 endif
533
534 ifdef MS_FUNCS
535 OBJS += ms_funcs.o
536 NEED_CRYPTO=y
537 endif
538
539 ifdef NEED_CRYPTO
540 ifndef TLS_FUNCS
541 ifeq ($(CONFIG_TLS), openssl)
542 LIBS += -lcrypto
543 LIBS_p += -lcrypto
544 endif
545 ifeq ($(CONFIG_TLS), gnutls)
546 LIBS += -lgcrypt
547 LIBS_p += -lgcrypt
548 endif
549 ifeq ($(CONFIG_TLS), schannel)
550 endif
551 ifeq ($(CONFIG_TLS), internal)
552 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
553 LIBS += -ltomcrypt -ltfm
554 LIBS_p += -ltomcrypt -ltfm
555 endif
556 endif
557 endif
558 ifeq ($(CONFIG_TLS), openssl)
559 OBJS += crypto.o
560 OBJS_p += crypto.o
561 CONFIG_INTERNAL_SHA256=y
562 endif
563 ifeq ($(CONFIG_TLS), gnutls)
564 OBJS += crypto_gnutls.o
565 OBJS_p += crypto_gnutls.o
566 CONFIG_INTERNAL_SHA256=y
567 endif
568 ifeq ($(CONFIG_TLS), schannel)
569 OBJS += crypto_cryptoapi.o
570 OBJS_p += crypto_cryptoapi.o
571 CONFIG_INTERNAL_SHA256=y
572 endif
573 ifeq ($(CONFIG_TLS), internal)
574 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
575 OBJS += crypto_libtomcrypt.o
576 OBJS_p += crypto_libtomcrypt.o
577 CONFIG_INTERNAL_SHA256=y
578 endif
579 ifeq ($(CONFIG_CRYPTO), internal)
580 OBJS += crypto_internal.o rsa.o bignum.o
581 OBJS_p += crypto_internal.o rsa.o bignum.o
582 CFLAGS += -DCONFIG_CRYPTO_INTERNAL
583 CONFIG_INTERNAL_AES=y
584 CONFIG_INTERNAL_DES=y
585 CONFIG_INTERNAL_SHA1=y
586 CONFIG_INTERNAL_MD4=y
587 CONFIG_INTERNAL_MD5=y
588 CONFIG_INTERNAL_SHA256=y
589 endif
590 ifeq ($(CONFIG_CRYPTO), cryptoapi)
591 OBJS += crypto_cryptoapi.o
592 OBJS_p += crypto_cryptoapi.o
593 CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
594 CONFIG_INTERNAL_SHA256=y
595 endif
596 endif
597 ifeq ($(CONFIG_TLS), none)
598 OBJS += crypto_none.o
599 OBJS_p += crypto_none.o
600 CONFIG_INTERNAL_SHA256=y
601 endif
602 else
603 CONFIG_INTERNAL_AES=y
604 CONFIG_INTERNAL_SHA1=y
605 CONFIG_INTERNAL_MD5=y
606 endif
607
608 ifdef CONFIG_INTERNAL_AES
609 CFLAGS += -DINTERNAL_AES
610 endif
611 ifdef CONFIG_INTERNAL_SHA1
612 CFLAGS += -DINTERNAL_SHA1
613 endif
614 ifdef CONFIG_INTERNAL_SHA256
615 CFLAGS += -DINTERNAL_SHA256
616 endif
617 ifdef CONFIG_INTERNAL_MD5
618 CFLAGS += -DINTERNAL_MD5
619 endif
620 ifdef CONFIG_INTERNAL_MD4
621 CFLAGS += -DINTERNAL_MD4
622 endif
623 ifdef CONFIG_INTERNAL_DES
624 CFLAGS += -DINTERNAL_DES
625 endif
626
627 ifdef NEED_SHA256
628 OBJS += sha256.o
629 endif
630
631 ifdef CONFIG_WIRELESS_EXTENSION
632 CFLAGS += -DCONFIG_WIRELESS_EXTENSION
633 OBJS_d += driver_wext.o
634 endif
635
636 ifdef CONFIG_CTRL_IFACE
637 ifeq ($(CONFIG_CTRL_IFACE), y)
638 ifdef CONFIG_NATIVE_WINDOWS
639 CONFIG_CTRL_IFACE=named_pipe
640 else
641 CONFIG_CTRL_IFACE=unix
642 endif
643 endif
644 CFLAGS += -DCONFIG_CTRL_IFACE
645 ifeq ($(CONFIG_CTRL_IFACE), unix)
646 CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
647 endif
648 ifeq ($(CONFIG_CTRL_IFACE), udp)
649 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
650 endif
651 ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
652 CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
653 endif
654 OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
655 endif
656
657 ifdef CONFIG_CTRL_IFACE_DBUS
658 CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
659 OBJS += ctrl_iface_dbus.o ctrl_iface_dbus_handlers.o dbus_dict_helpers.o
660 ifndef DBUS_LIBS
661 DBUS_LIBS := $(shell pkg-config --libs dbus-1)
662 endif
663 LIBS += $(DBUS_LIBS)
664 ifndef DBUS_INCLUDE
665 DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1)
666 endif
667 dbus_version=$(subst ., ,$(shell pkg-config --modversion dbus-1))
668 DBUS_VERSION_MAJOR=$(word 1,$(dbus_version))
669 DBUS_VERSION_MINOR=$(word 2,$(dbus_version))
670 ifeq ($(DBUS_VERSION_MAJOR),)
671 DBUS_VERSION_MAJOR=0
672 endif
673 ifeq ($(DBUS_VERSION_MINOR),)
674 DBUS_VERSION_MINOR=0
675 endif
676 DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR)
677 DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR)
678 CFLAGS += $(DBUS_INCLUDE)
679 endif
680
681 ifdef CONFIG_READLINE
682 CFLAGS += -DCONFIG_READLINE
683 LIBS_c += -lncurses -lreadline
684 endif
685
686 ifdef CONFIG_NATIVE_WINDOWS
687 CFLAGS += -DCONFIG_NATIVE_WINDOWS
688 LIBS += -lws2_32 -lgdi32 -lcrypt32
689 LIBS_c += -lws2_32
690 LIBS_p += -lws2_32
691 ifeq ($(CONFIG_CRYPTO), cryptoapi)
692 LIBS_p += -lcrypt32
693 endif
694 endif
695
696 ifdef CONFIG_NO_STDOUT_DEBUG
697 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
698 ifndef CONFIG_CTRL_IFACE
699 CFLAGS += -DCONFIG_NO_WPA_MSG
700 endif
701 endif
702
703 ifdef CONFIG_IPV6
704 # for eapol_test only
705 CFLAGS += -DCONFIG_IPV6
706 endif
707
708 ifdef CONFIG_PEERKEY
709 CFLAGS += -DCONFIG_PEERKEY
710 endif
711
712 ifdef CONFIG_IEEE80211W
713 CFLAGS += -DCONFIG_IEEE80211W
714 NEED_SHA256=y
715 endif
716
717 ifndef CONFIG_NO_WPA
718 OBJS += wpa.o preauth.o pmksa_cache.o
719 NEED_AES=y
720 else
721 CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2
722 endif
723
724 ifdef CONFIG_NO_WPA2
725 CFLAGS += -DCONFIG_NO_WPA2
726 endif
727
728 ifdef CONFIG_NO_AES_EXTRAS
729 CFLAGS += -DCONFIG_NO_AES_WRAP
730 CFLAGS += -DCONFIG_NO_AES_CTR -DCONFIG_NO_AES_OMAC1
731 CFLAGS += -DCONFIG_NO_AES_EAX -DCONFIG_NO_AES_CBC
732 endif
733
734 ifdef NEED_AES
735 OBJS += aes_wrap.o
736 endif
737
738 ifdef CONFIG_CLIENT_MLME
739 OBJS += mlme.o
740 CFLAGS += -DCONFIG_CLIENT_MLME
741 endif
742
743 ifndef CONFIG_MAIN
744 CONFIG_MAIN=main
745 endif
746
747 ifdef CONFIG_DEBUG_FILE
748 CFLAGS += -DCONFIG_DEBUG_FILE
749 endif
750
751 OBJS += wpa_supplicant.o events.o
752 OBJS_t := $(OBJS) eapol_test.o radius.o radius_client.o
753 OBJS_t2 := $(OBJS) preauth_test.o
754 OBJS += $(CONFIG_MAIN).o drivers.o $(OBJS_d)
755
756 ifdef CONFIG_NDIS_EVENTS_INTEGRATED
757 CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
758 OBJS += ndis_events.o
759 EXTRALIBS += -loleaut32 -lole32 -luuid
760 ifdef PLATFORMSDKLIB
761 EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
762 else
763 EXTRALIBS += WbemUuid.Lib
764 endif
765 endif
766
767 ifndef LDO
768 LDO=$(CC)
769 endif
770
771 dynamic_eap_methods: $(EAPDYN)
772
773 wpa_supplicant: .config $(OBJS)
774         $(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
775
776 eapol_test: .config $(OBJS_t)
777         $(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
778
779 preauth_test: .config $(OBJS_t2) 
780         $(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
781
782 wpa_passphrase: $(OBJS_p)
783         $(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
784
785 wpa_cli: $(OBJS_c)
786         $(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
787
788 OBJSa=asn1_test.o asn1.o x509v3.o common.o os_unix.o \
789         crypto_$(CONFIG_CRYPTO).o md5.o sha1.o \
790         rc4.o des.o aes_wrap.o \
791         bignum.o rsa.o
792 asn1_test: $(OBJSa)
793         $(LDO) $(LDFLAGS) -o asn1_test $(OBJSa)
794
795 OBJSx=tests/test_x509v3.o asn1.o x509v3.o \
796         common.o os_unix.o \
797         crypto_$(CONFIG_CRYPTO).o \
798         md5.o sha1.o \
799         rc4.o des.o aes_wrap.o \
800         bignum.o rsa.o
801 test_x509v3: $(OBJSx)
802         $(LDO) $(LDFLAGS) -o test_x509v3 $(OBJSx)
803
804 win_if_list: win_if_list.c
805         $(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
806
807 eap_psk.so: eap_psk.c eap_psk_common.c
808         $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
809                 -Deap_peer_psk_register=eap_peer_method_dynamic_init
810
811 eap_pax.so: eap_pax.c eap_pax_common.c
812         $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
813                 -Deap_peer_pax_register=eap_peer_method_dynamic_init
814
815 eap_sake.so: eap_sake.c eap_sake_common.c
816         $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
817                 -Deap_peer_sake_register=eap_peer_method_dynamic_init
818
819 %.so: %.c
820         $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
821                 -D$(*:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
822
823
824 wpa_supplicant.exe: wpa_supplicant
825         mv -f $< $@
826 wpa_cli.exe: wpa_cli
827         mv -f $< $@
828 wpa_passphrase.exe: wpa_passphrase
829         mv -f $< $@
830 win_if_list.exe: win_if_list
831         mv -f $< $@
832 eapol_test.exe: eapol_test
833         mv -f $< $@
834
835 WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
836
837 windows-bin: $(WINALL)
838         $(STRIP) $(WINALL)
839
840 wpa_gui/Makefile:
841         qmake -o wpa_gui/Makefile wpa_gui/wpa_gui.pro 
842
843 wpa_gui: wpa_gui/Makefile
844         $(MAKE) -C wpa_gui
845
846 TEST_MS_FUNCS_OBJS = crypto.o sha1.o md5.o \
847         os_unix.o rc4.o tests/test_ms_funcs.o
848 test-ms_funcs: $(TEST_MS_FUNCS_OBJS)
849         $(LDO) $(LDFLAGS) -o $@ $(TEST_MS_FUNCS_OBJS) $(LIBS) -lcrypto
850         ./test-ms_funcs
851         rm test-ms_funcs
852
853 TEST_SHA1_OBJS = sha1.o md5.o tests/test_sha1.o #crypto.o
854 test-sha1: $(TEST_SHA1_OBJS)
855         $(LDO) $(LDFLAGS) -o $@ $(TEST_SHA1_OBJS) $(LIBS)
856         ./test-sha1
857         rm test-sha1
858
859 TEST_SHA256_OBJS = sha256.o md5.o tests/test_sha256.o crypto.o
860 test-sha256: $(TEST_SHA256_OBJS)
861         $(LDO) $(LDFLAGS) -o $@ $(TEST_SHA256_OBJS) $(LIBS)
862         ./test-sha256
863         rm test-sha256
864
865 TEST_AES_OBJS = aes_wrap.o tests/test_aes.o # crypto.o
866 test-aes: $(TEST_AES_OBJS)
867         $(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS)
868         ./test-aes
869         rm test-aes
870
871 TEST_EAP_SIM_COMMON_OBJS = sha1.o md5.o \
872         aes_wrap.o common.o os_unix.o \
873         tests/test_eap_sim_common.o
874 test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS)
875         $(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS)
876         ./test-eap_sim_common
877         rm test-eap_sim_common
878
879 TEST_MD4_OBJS = md4.o tests/test_md4.o #crypto.o
880 test-md4: $(TEST_MD4_OBJS)
881         $(LDO) $(LDFLAGS) -o $@ $(TEST_MD4_OBJS) $(LIBS)
882         ./test-md4
883         rm test-md4
884
885 TEST_MD5_OBJS = md5.o tests/test_md5.o #crypto.o
886 test-md5: $(TEST_MD5_OBJS)
887         $(LDO) $(LDFLAGS) -o $@ $(TEST_MD5_OBJS) $(LIBS)
888         ./test-md5
889         rm test-md5
890
891 tests: test-ms_funcs test-sha1 test-aes test-eap_sim_common test-md4 test-md5
892
893 clean:
894         rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL)
895
896 %.eps: %.fig
897         fig2dev -L eps $*.fig $*.eps
898
899 %.png: %.fig
900         fig2dev -L png -m 3 $*.fig | pngtopnm | pnmscale 0.4 | pnmtopng \
901                 > $*.png
902
903 docs-pics: doc/wpa_supplicant.png doc/wpa_supplicant.eps
904
905 docs: docs-pics
906         doxygen doc/doxygen.full
907         $(MAKE) -C doc/latex
908         cp doc/latex/refman.pdf wpa_supplicant-devel.pdf
909
910 docs-fast: docs-pics
911         doxygen doc/doxygen.fast
912
913 clean-docs:
914         rm -rf doc/latex doc/html
915         rm -f doc/wpa_supplicant.{eps,png} wpa_supplicant-devel.pdf
916
917 -include $(OBJS:%.o=%.d)