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