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