6
CFLAGS = -MMD -O2 -Wall -g
11
CFLAGS += -I../src/crypto
12
CFLAGS += -I../src/utils
13
CFLAGS += -I../src/common
14
CFLAGS += -I../src/rsn_supp
16
ALL=wpa_supplicant wpa_passphrase wpa_cli
18
all: verify_config $(ALL) dynamic_eap_methods
21
@if [ ! -r .config ]; then \
22
echo 'Building wpa_supplicant requires a configuration file'; \
23
echo '(.config). See README for more instructions. You can'; \
24
echo 'run "cp defconfig .config" to create an example'; \
25
echo 'configuration.'; \
30
@if [ -e .config ]; then \
31
echo '.config exists - did not replace it'; \
34
echo CONFIG_DRIVER_HOSTAP=y >> .config
35
echo CONFIG_DRIVER_WEXT=y >> .config
36
echo CONFIG_WIRELESS_EXTENSION=y >> .config
39
mkdir -p $(DESTDIR)/usr/local/sbin/
40
for i in $(ALL); do cp $$i $(DESTDIR)/usr/local/sbin/$$i; done
43
OBJS += ../src/utils/common.o
44
OBJS += ../src/utils/wpa_debug.o
45
OBJS += ../src/crypto/md5.o
46
OBJS += ../src/crypto/rc4.o
47
OBJS += ../src/crypto/md4.o
48
OBJS += ../src/crypto/sha1.o
49
OBJS += ../src/crypto/des.o
50
OBJS_p = wpa_passphrase.o
51
OBJS_p += ../src/utils/common.o
52
OBJS_p += ../src/utils/wpa_debug.o
53
OBJS_p += ../src/crypto/md5.o
54
OBJS_p += ../src/crypto/md4.o
55
OBJS_p += ../src/crypto/sha1.o
56
OBJS_p += ../src/crypto/des.o
57
OBJS_c = wpa_cli.o ../src/common/wpa_ctrl.o
62
ifdef CONFIG_NATIVE_WINDOWS
69
ifeq ($(CONFIG_OS), internal)
70
CFLAGS += -DOS_NO_C_LIB_DEFINES
73
OBJS += ../src/utils/os_$(CONFIG_OS).o
74
OBJS_p += ../src/utils/os_$(CONFIG_OS).o
75
OBJS_c += ../src/utils/os_$(CONFIG_OS).o
80
OBJS += ../src/utils/$(CONFIG_ELOOP).o
83
ifdef CONFIG_EAPOL_TEST
84
CFLAGS += -Werror -DEAPOL_TEST
91
ifeq ($(CONFIG_BACKEND), file)
94
CFLAGS += -DCONFIG_BACKEND_FILE
97
ifeq ($(CONFIG_BACKEND), winreg)
98
OBJS += config_winreg.o
101
ifeq ($(CONFIG_BACKEND), none)
102
OBJS += config_none.o
105
ifdef CONFIG_DRIVER_HOSTAP
106
CFLAGS += -DCONFIG_DRIVER_HOSTAP
107
OBJS_d += ../src/drivers/driver_hostap.o
108
CONFIG_WIRELESS_EXTENSION=y
111
ifdef CONFIG_DRIVER_WEXT
112
CFLAGS += -DCONFIG_DRIVER_WEXT
113
CONFIG_WIRELESS_EXTENSION=y
116
ifdef CONFIG_DRIVER_PRISM54
117
CFLAGS += -DCONFIG_DRIVER_PRISM54
118
OBJS_d += ../src/drivers/driver_prism54.o
119
CONFIG_WIRELESS_EXTENSION=y
122
ifdef CONFIG_DRIVER_HERMES
123
CFLAGS += -DCONFIG_DRIVER_HERMES
124
OBJS_d += ../src/drivers/driver_hermes.o
125
CONFIG_WIRELESS_EXTENSION=y
128
ifdef CONFIG_DRIVER_MADWIFI
129
CFLAGS += -DCONFIG_DRIVER_MADWIFI
130
OBJS_d += ../src/drivers/driver_madwifi.o
131
CONFIG_WIRELESS_EXTENSION=y
134
ifdef CONFIG_DRIVER_ATMEL
135
CFLAGS += -DCONFIG_DRIVER_ATMEL
136
OBJS_d += ../src/drivers/driver_atmel.o
137
CONFIG_WIRELESS_EXTENSION=y
140
ifdef CONFIG_DRIVER_NDISWRAPPER
141
CFLAGS += -DCONFIG_DRIVER_NDISWRAPPER
142
OBJS_d += ../src/drivers/driver_ndiswrapper.o
143
CONFIG_WIRELESS_EXTENSION=y
146
ifdef CONFIG_DRIVER_RALINK
147
CFLAGS += -DCONFIG_DRIVER_RALINK
148
OBJS_d += ../src/drivers/driver_ralink.o
151
ifdef CONFIG_DRIVER_BROADCOM
152
CFLAGS += -DCONFIG_DRIVER_BROADCOM
153
OBJS_d += ../src/drivers/driver_broadcom.o
156
ifdef CONFIG_DRIVER_IPW
157
CFLAGS += -DCONFIG_DRIVER_IPW
158
OBJS_d += ../src/drivers/driver_ipw.o
159
CONFIG_WIRELESS_EXTENSION=y
162
ifdef CONFIG_DRIVER_BSD
163
CFLAGS += -DCONFIG_DRIVER_BSD
164
OBJS_d += ../src/drivers/driver_bsd.o
165
ifndef CONFIG_L2_PACKET
166
CONFIG_L2_PACKET=freebsd
170
ifdef CONFIG_DRIVER_NDIS
171
CFLAGS += -DCONFIG_DRIVER_NDIS
172
OBJS_d += ../src/drivers/driver_ndis.o ../src/drivers/driver_ndis_.o
173
ifndef CONFIG_L2_PACKET
174
CONFIG_L2_PACKET=pcap
177
ifdef CONFIG_USE_NDISUIO
178
CFLAGS += -DCONFIG_USE_NDISUIO
182
ifdef CONFIG_DRIVER_WIRED
183
CFLAGS += -DCONFIG_DRIVER_WIRED
184
OBJS_d += ../src/drivers/driver_wired.o
187
ifdef CONFIG_DRIVER_TEST
188
CFLAGS += -DCONFIG_DRIVER_TEST
189
OBJS_d += ../src/drivers/driver_test.o
192
ifndef CONFIG_L2_PACKET
193
CONFIG_L2_PACKET=linux
196
OBJS += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o
198
ifeq ($(CONFIG_L2_PACKET), pcap)
200
CFLAGS += -DCONFIG_WINPCAP
201
LIBS += -lwpcap -lpacket
204
LIBS += -ldnet -lpcap
208
ifeq ($(CONFIG_L2_PACKET), winpcap)
209
LIBS += -lwpcap -lpacket
213
ifeq ($(CONFIG_L2_PACKET), freebsd)
219
ifeq ($(CONFIG_EAP_TLS), dyn)
220
CFLAGS += -DEAP_TLS_DYNAMIC
221
EAPDYN += ../src/eap_peer/eap_tls.so
224
OBJS += ../src/eap_peer/eap_tls.o
225
OBJS_h += ../src/eap_server/eap_tls.o
228
CONFIG_IEEE8021X_EAPOL=y
231
ifdef CONFIG_EAP_PEAP
233
ifeq ($(CONFIG_EAP_PEAP), dyn)
234
CFLAGS += -DEAP_PEAP_DYNAMIC
235
EAPDYN += ../src/eap_peer/eap_peap.so
238
OBJS += ../src/eap_peer/eap_peap.o
239
OBJS_h += ../src/eap_server/eap_peap.o
242
CONFIG_IEEE8021X_EAPOL=y
246
ifdef CONFIG_EAP_TTLS
248
ifeq ($(CONFIG_EAP_TTLS), dyn)
249
CFLAGS += -DEAP_TTLS_DYNAMIC
250
EAPDYN += ../src/eap_peer/eap_ttls.so
253
OBJS += ../src/eap_peer/eap_ttls.o
254
OBJS_h += ../src/eap_server/eap_ttls.o
258
CONFIG_IEEE8021X_EAPOL=y
263
ifeq ($(CONFIG_EAP_MD5), dyn)
264
CFLAGS += -DEAP_MD5_DYNAMIC
265
EAPDYN += ../src/eap_peer/eap_md5.so
268
OBJS += ../src/eap_peer/eap_md5.o
269
OBJS_h += ../src/eap_server/eap_md5.o
271
CONFIG_IEEE8021X_EAPOL=y
274
# backwards compatibility for old spelling
275
ifdef CONFIG_MSCHAPV2
276
ifndef CONFIG_EAP_MSCHAPV2
277
CONFIG_EAP_MSCHAPV2=y
281
ifdef CONFIG_EAP_MSCHAPV2
283
ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
284
CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
285
EAPDYN += ../src/eap_peer/eap_mschapv2.so
287
CFLAGS += -DEAP_MSCHAPv2
288
OBJS += ../src/eap_peer/eap_mschapv2.o
289
OBJS_h += ../src/eap_server/eap_mschapv2.o
292
CONFIG_IEEE8021X_EAPOL=y
297
ifeq ($(CONFIG_EAP_GTC), dyn)
298
CFLAGS += -DEAP_GTC_DYNAMIC
299
EAPDYN += ../src/eap_peer/eap_gtc.so
302
OBJS += ../src/eap_peer/eap_gtc.o
303
OBJS_h += ../src/eap_server/eap_gtc.o
305
CONFIG_IEEE8021X_EAPOL=y
310
ifeq ($(CONFIG_EAP_OTP), dyn)
311
CFLAGS += -DEAP_OTP_DYNAMIC
312
EAPDYN += ../src/eap_peer/eap_otp.so
315
OBJS += ../src/eap_peer/eap_otp.o
317
CONFIG_IEEE8021X_EAPOL=y
322
ifeq ($(CONFIG_EAP_SIM), dyn)
323
CFLAGS += -DEAP_SIM_DYNAMIC
324
EAPDYN += ../src/eap_peer/eap_sim.so
327
OBJS += ../src/eap_peer/eap_sim.o
328
OBJS_h += ../src/eap_server/eap_sim.o
330
CONFIG_IEEE8021X_EAPOL=y
331
CONFIG_EAP_SIM_COMMON=y
334
ifdef CONFIG_EAP_LEAP
336
ifeq ($(CONFIG_EAP_LEAP), dyn)
337
CFLAGS += -DEAP_LEAP_DYNAMIC
338
EAPDYN += ../src/eap_peer/eap_leap.so
341
OBJS += ../src/eap_peer/eap_leap.o
344
CONFIG_IEEE8021X_EAPOL=y
349
ifeq ($(CONFIG_EAP_PSK), dyn)
350
CFLAGS += -DEAP_PSK_DYNAMIC
351
EAPDYN += ../src/eap_peer/eap_psk.so
354
OBJS += ../src/eap_peer/eap_psk.o ../src/eap_common/eap_psk_common.o
355
OBJS_h += ../src/eap_server/eap_psk.o
357
CONFIG_IEEE8021X_EAPOL=y
363
ifeq ($(CONFIG_EAP_AKA), dyn)
364
CFLAGS += -DEAP_AKA_DYNAMIC
365
EAPDYN += ../src/eap_peer/eap_aka.so
368
OBJS += ../src/eap_peer/eap_aka.o
369
OBJS_h += ../src/eap_server/eap_aka.o
371
CONFIG_IEEE8021X_EAPOL=y
372
CONFIG_EAP_SIM_COMMON=y
375
ifdef CONFIG_EAP_SIM_COMMON
376
OBJS += ../src/eap_common/eap_sim_common.o
377
OBJS_h += ../src/eap_server/eap_sim_db.o
384
OBJS += ../src/eap_peer/eap_tlv.o
385
OBJS_h += ../src/eap_server/eap_tlv.o
388
ifdef CONFIG_EAP_FAST
390
ifeq ($(CONFIG_EAP_FAST), dyn)
391
CFLAGS += -DEAP_FAST_DYNAMIC
392
EAPDYN += ../src/eap_peer/eap_fast.so
395
OBJS += ../src/eap_peer/eap_fast.o ../src/eap_peer/eap_fast_pac.o
402
ifeq ($(CONFIG_EAP_PAX), dyn)
403
CFLAGS += -DEAP_PAX_DYNAMIC
404
EAPDYN += ../src/eap_peer/eap_pax.so
407
OBJS += ../src/eap_peer/eap_pax.o ../src/eap_common/eap_pax_common.o
408
OBJS_h += ../src/eap_server/eap_pax.o
410
CONFIG_IEEE8021X_EAPOL=y
413
ifdef CONFIG_EAP_SAKE
415
ifeq ($(CONFIG_EAP_SAKE), dyn)
416
CFLAGS += -DEAP_SAKE_DYNAMIC
417
EAPDYN += ../src/eap_peer/eap_sake.so
420
OBJS += ../src/eap_peer/eap_sake.o ../src/eap_common/eap_sake_common.o
421
OBJS_h += ../src/eap_server/eap_sake.o
423
CONFIG_IEEE8021X_EAPOL=y
426
ifdef CONFIG_EAP_GPSK
428
ifeq ($(CONFIG_EAP_GPSK), dyn)
429
CFLAGS += -DEAP_GPSK_DYNAMIC
430
EAPDYN += ../src/eap_peer/eap_gpsk.so
433
OBJS += ../src/eap_peer/eap_gpsk.o ../src/eap_common/eap_gpsk_common.o
434
OBJS_h += ../src/eap_server/eap_gpsk.o
436
CONFIG_IEEE8021X_EAPOL=y
437
ifdef CONFIG_EAP_GPSK_SHA256
438
CFLAGS += -DEAP_GPSK_SHA256
443
ifdef CONFIG_EAP_VENDOR_TEST
444
ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
445
CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
446
EAPDYN += ../src/eap_peer/eap_vendor_test.so
448
CFLAGS += -DEAP_VENDOR_TEST
449
OBJS += ../src/eap_peer/eap_vendor_test.o
450
OBJS_h += ../src/eap_server/eap_vendor_test.o
452
CONFIG_IEEE8021X_EAPOL=y
458
OBJS += ../src/eap_peer/eap_tnc.o
459
OBJS += ../src/eap_peer/tncc.o
463
ifdef CONFIG_IEEE8021X_EAPOL
464
# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
465
CFLAGS += -DIEEE8021X_EAPOL
466
OBJS += eapol_sm.o ../src/eap_peer/eap.o ../src/eap_common/eap_common.o ../src/eap_peer/eap_methods.o
467
ifdef CONFIG_DYNAMIC_EAP_METHODS
468
CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
469
LIBS += -ldl -rdynamic
473
ifdef CONFIG_EAP_SERVER
474
CFLAGS += -DEAP_SERVER
475
OBJS_h += ../src/eap_server/eap.o
476
OBJS_h += ../src/eap_server/eap_identity.o
477
OBJS_h += ../src/eap_server/eap_methods.o
480
ifdef CONFIG_RADIUS_CLIENT
481
OBJS_h += ../src/utils/ip_addr.o
482
OBJS_h += ../src/radius/radius.o
483
OBJS_h += ../src/radius/radius_client.o
486
ifdef CONFIG_AUTHENTICATOR
487
OBJS_h += ../hostapd/eapol_sm.o
488
OBJS_h += ../hostapd/ieee802_1x.o
491
ifdef CONFIG_WPA_AUTHENTICATOR
492
OBJS_h += ../hostapd/wpa.o
493
OBJS_h += ../hostapd/wpa_auth_ie.o
494
ifdef CONFIG_IEEE80211R
495
OBJS_h += ../hostapd/wpa_ft.o
498
OBJS_h += ../hostapd/peerkey.o
503
# PC/SC interface for smartcards (USIM, GSM SIM)
504
CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
505
OBJS += ../src/utils/pcsc_funcs.o
506
# -lpthread may not be needed depending on how pcsc-lite was configured
507
ifdef CONFIG_NATIVE_WINDOWS
508
#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
509
#dynamic symbol loading that is now used in pcsc_funcs.c
512
LIBS += -lpcsclite -lpthread
520
ifeq ($(CONFIG_TLS), internal)
522
CONFIG_CRYPTO=internal
525
ifeq ($(CONFIG_CRYPTO), libtomcrypt)
526
CFLAGS += -DCONFIG_INTERNAL_X509
528
ifeq ($(CONFIG_CRYPTO), internal)
529
CFLAGS += -DCONFIG_INTERNAL_X509
534
# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
535
CFLAGS += -DEAP_TLS_FUNCS
536
OBJS += ../src/eap_peer/eap_tls_common.o
537
OBJS_h += ../src/eap_server/eap_tls_common.o
538
ifeq ($(CONFIG_TLS), openssl)
539
CFLAGS += -DEAP_TLS_OPENSSL
540
OBJS += ../src/crypto/tls_openssl.o
541
LIBS += -lssl -lcrypto
544
ifeq ($(CONFIG_TLS), gnutls)
545
OBJS += ../src/crypto/tls_gnutls.o
546
LIBS += -lgnutls -lgcrypt -lgpg-error
548
ifdef CONFIG_GNUTLS_EXTRA
549
CFLAGS += -DCONFIG_GNUTLS_EXTRA
550
LIBS += -lgnutls-extra
553
ifeq ($(CONFIG_TLS), schannel)
554
OBJS += ../src/crypto/tls_schannel.o
556
ifeq ($(CONFIG_TLS), internal)
557
OBJS += ../src/crypto/tls_internal.o
558
OBJS += ../src/tls/tlsv1_common.o ../src/tls/tlsv1_client.o
559
OBJS += ../src/tls/asn1.o ../src/tls/x509v3.o
560
OBJS_p += ../src/tls/asn1.o
561
OBJS_p += ../src/crypto/rc4.o ../src/crypto/aes_wrap.o ../src/crypto/aes.o
563
CFLAGS += -DCONFIG_TLS_INTERNAL
564
ifeq ($(CONFIG_CRYPTO), internal)
565
ifdef CONFIG_INTERNAL_LIBTOMMATH
566
CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
572
ifeq ($(CONFIG_CRYPTO), libtomcrypt)
573
LIBS += -ltomcrypt -ltfm
574
LIBS_p += -ltomcrypt -ltfm
577
ifeq ($(CONFIG_TLS), none)
578
OBJS += ../src/crypto/tls_none.o
579
CFLAGS += -DEAP_TLS_NONE
580
CONFIG_INTERNAL_AES=y
581
CONFIG_INTERNAL_SHA1=y
582
CONFIG_INTERNAL_MD5=y
583
CONFIG_INTERNAL_SHA256=y
585
ifdef CONFIG_SMARTCARD
586
ifndef CONFIG_NATIVE_WINDOWS
587
ifneq ($(CONFIG_L2_PACKET), freebsd)
594
OBJS += ../src/crypto/tls_none.o
598
CFLAGS += -DPKCS12_FUNCS
601
ifdef CONFIG_SMARTCARD
602
CFLAGS += -DCONFIG_SMARTCARD
606
OBJS += ../src/crypto/ms_funcs.o
612
ifeq ($(CONFIG_TLS), openssl)
616
ifeq ($(CONFIG_TLS), gnutls)
620
ifeq ($(CONFIG_TLS), schannel)
622
ifeq ($(CONFIG_TLS), internal)
623
ifeq ($(CONFIG_CRYPTO), libtomcrypt)
624
LIBS += -ltomcrypt -ltfm
625
LIBS_p += -ltomcrypt -ltfm
629
ifeq ($(CONFIG_TLS), openssl)
630
OBJS += ../src/crypto/crypto_openssl.o
631
OBJS_p += ../src/crypto/crypto_openssl.o
632
CONFIG_INTERNAL_SHA256=y
634
ifeq ($(CONFIG_TLS), gnutls)
635
OBJS += ../src/crypto/crypto_gnutls.o
636
OBJS_p += ../src/crypto/crypto_gnutls.o
637
CONFIG_INTERNAL_SHA256=y
639
ifeq ($(CONFIG_TLS), schannel)
640
OBJS += ../src/crypto/crypto_cryptoapi.o
641
OBJS_p += ../src/crypto/crypto_cryptoapi.o
642
CONFIG_INTERNAL_SHA256=y
644
ifeq ($(CONFIG_TLS), internal)
645
ifeq ($(CONFIG_CRYPTO), libtomcrypt)
646
OBJS += ../src/crypto/crypto_libtomcrypt.o
647
OBJS_p += ../src/crypto/crypto_libtomcrypt.o
648
CONFIG_INTERNAL_SHA256=y
650
ifeq ($(CONFIG_CRYPTO), internal)
651
OBJS += ../src/crypto/crypto_internal.o ../src/tls/rsa.o ../src/tls/bignum.o
652
OBJS_p += ../src/crypto/crypto_internal.o ../src/tls/rsa.o ../src/tls/bignum.o
653
CFLAGS += -DCONFIG_CRYPTO_INTERNAL
654
CONFIG_INTERNAL_AES=y
655
CONFIG_INTERNAL_DES=y
656
CONFIG_INTERNAL_SHA1=y
657
CONFIG_INTERNAL_MD4=y
658
CONFIG_INTERNAL_MD5=y
659
CONFIG_INTERNAL_SHA256=y
661
ifeq ($(CONFIG_CRYPTO), cryptoapi)
662
OBJS += ../src/crypto/crypto_cryptoapi.o
663
OBJS_p += ../src/crypto/crypto_cryptoapi.o
664
CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
665
CONFIG_INTERNAL_SHA256=y
668
ifeq ($(CONFIG_TLS), none)
669
OBJS += ../src/crypto/crypto_none.o
670
OBJS_p += ../src/crypto/crypto_none.o
671
CONFIG_INTERNAL_SHA256=y
674
CONFIG_INTERNAL_AES=y
675
CONFIG_INTERNAL_SHA1=y
676
CONFIG_INTERNAL_MD5=y
679
ifdef CONFIG_INTERNAL_AES
680
CFLAGS += -DINTERNAL_AES
682
ifdef CONFIG_INTERNAL_SHA1
683
CFLAGS += -DINTERNAL_SHA1
685
ifdef CONFIG_INTERNAL_SHA256
686
CFLAGS += -DINTERNAL_SHA256
688
ifdef CONFIG_INTERNAL_MD5
689
CFLAGS += -DINTERNAL_MD5
691
ifdef CONFIG_INTERNAL_MD4
692
CFLAGS += -DINTERNAL_MD4
694
ifdef CONFIG_INTERNAL_DES
695
CFLAGS += -DINTERNAL_DES
698
ifdef CONFIG_IEEE80211R
703
OBJS += ../src/crypto/sha256.o
706
ifdef CONFIG_WIRELESS_EXTENSION
707
CFLAGS += -DCONFIG_WIRELESS_EXTENSION
708
OBJS_d += ../src/drivers/driver_wext.o
711
ifdef CONFIG_CTRL_IFACE
712
ifeq ($(CONFIG_CTRL_IFACE), y)
713
ifdef CONFIG_NATIVE_WINDOWS
714
CONFIG_CTRL_IFACE=named_pipe
716
CONFIG_CTRL_IFACE=unix
719
CFLAGS += -DCONFIG_CTRL_IFACE
720
ifeq ($(CONFIG_CTRL_IFACE), unix)
721
CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
723
ifeq ($(CONFIG_CTRL_IFACE), udp)
724
CFLAGS += -DCONFIG_CTRL_IFACE_UDP
726
ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
727
CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
729
OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
732
ifdef CONFIG_CTRL_IFACE_DBUS
733
CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
734
OBJS += ctrl_iface_dbus.o ctrl_iface_dbus_handlers.o dbus_dict_helpers.o
736
DBUS_LIBS := $(shell pkg-config --libs dbus-1)
740
DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1)
742
CFLAGS += $(DBUS_INCLUDE)
745
ifdef CONFIG_READLINE
746
CFLAGS += -DCONFIG_READLINE
747
LIBS_c += -lncurses -lreadline
750
ifdef CONFIG_NATIVE_WINDOWS
751
CFLAGS += -DCONFIG_NATIVE_WINDOWS
752
LIBS += -lws2_32 -lgdi32 -lcrypt32
755
ifeq ($(CONFIG_CRYPTO), cryptoapi)
760
ifdef CONFIG_NO_STDOUT_DEBUG
761
CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
762
ifndef CONFIG_CTRL_IFACE
763
CFLAGS += -DCONFIG_NO_WPA_MSG
768
# for eapol_test only
769
CFLAGS += -DCONFIG_IPV6
773
CFLAGS += -DCONFIG_PEERKEY
776
ifdef CONFIG_IEEE80211W
777
CFLAGS += -DCONFIG_IEEE80211W
781
ifdef CONFIG_IEEE80211R
782
CFLAGS += -DCONFIG_IEEE80211R
783
OBJS += ../src/rsn_supp/wpa_ft.o
787
OBJS += ../src/rsn_supp/wpa.o
788
OBJS += ../src/rsn_supp/preauth.o
789
OBJS += ../src/rsn_supp/pmksa_cache.o
790
OBJS += ../src/rsn_supp/peerkey.o
791
OBJS += ../src/rsn_supp/wpa_ie.o
792
OBJS += ../src/common/wpa_common.o
795
CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2
799
CFLAGS += -DCONFIG_NO_WPA2
802
ifdef CONFIG_NO_AES_EXTRAS
803
CFLAGS += -DCONFIG_NO_AES_WRAP
804
CFLAGS += -DCONFIG_NO_AES_CTR -DCONFIG_NO_AES_OMAC1
805
CFLAGS += -DCONFIG_NO_AES_EAX -DCONFIG_NO_AES_CBC
809
OBJS += ../src/crypto/aes_wrap.o ../src/crypto/aes.o
813
OBJS += ../src/utils/base64.o
816
ifdef CONFIG_CLIENT_MLME
818
CFLAGS += -DCONFIG_CLIENT_MLME
825
OBJS_wpa_rm := ctrl_iface.o mlme.o ctrl_iface_unix.o
826
OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.o
827
ifdef CONFIG_AUTHENTICATOR
828
OBJS_wpa += tests/link_test.o
830
OBJS += wpa_supplicant.o events.o
831
OBJS_t := $(OBJS) eapol_test.o ../src/radius/radius.o ../src/radius/radius_client.o
832
OBJS_t += ../src/utils/ip_addr.o
833
OBJS_t2 := $(OBJS) preauth_test.o
834
OBJS += $(CONFIG_MAIN).o ../src/drivers/drivers.o $(OBJS_d)
836
ifdef CONFIG_NDIS_EVENTS_INTEGRATED
837
CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
838
OBJS += ../src/drivers/ndis_events.o
839
EXTRALIBS += -loleaut32 -lole32 -luuid
841
EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
843
EXTRALIBS += WbemUuid.Lib
851
dynamic_eap_methods: $(EAPDYN)
853
wpa_supplicant: .config $(OBJS)
854
$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
856
eapol_test: .config $(OBJS_t)
857
$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
859
preauth_test: .config $(OBJS_t2)
860
$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
862
wpa_passphrase: $(OBJS_p)
863
$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
866
$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
868
link_test: $(OBJS) $(OBJS_h) tests/link_test.o
869
$(LDO) $(LDFLAGS) -o link_test $(OBJS) $(OBJS_h) tests/link_test.o $(LIBS)
871
test_wpa: $(OBJS_wpa) $(OBJS_h)
872
$(LDO) $(LDFLAGS) -o test_wpa $(OBJS_wpa) $(LIBS)
874
OBJSa=../src/tls/asn1_test.o ../src/tls/asn1.o ../src/tls/x509v3.o ../src/utils/common.o ../src/utils/wpa_debug.o ../src/utils/os_unix.o \
875
../src/crypto/crypto_$(CONFIG_CRYPTO).o ../src/crypto/md5.o ../src/crypto/sha1.o \
876
../src/crypto/rc4.o ../src/crypto/des.o ../src/crypto/aes_wrap.o \
877
../src/crypto/aes.o ../src/tls/bignum.o ../src/tls/rsa.o
879
$(LDO) $(LDFLAGS) -o asn1_test $(OBJSa)
881
OBJSx=tests/test_x509v3.o ../src/tls/asn1.o ../src/tls/x509v3.o \
882
../src/utils/common.o ../src/utils/wpa_debug.o ../src/utils/os_unix.o \
883
../src/crypto/crypto_$(CONFIG_CRYPTO).o \
884
../src/crypto/md5.o ../src/crypto/sha1.o ../src/crypto/aes.o \
885
../src/crypto/rc4.o ../src/crypto/des.o ../src/crypto/aes_wrap.o \
886
../src/tls/bignum.o ../src/tls/rsa.o
887
test_x509v3: $(OBJSx)
888
$(LDO) $(LDFLAGS) -o test_x509v3 $(OBJSx)
890
win_if_list: win_if_list.c
891
$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
893
eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
894
$(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
895
-Deap_peer_psk_register=eap_peer_method_dynamic_init
897
eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
898
$(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
899
-Deap_peer_pax_register=eap_peer_method_dynamic_init
901
eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
902
$(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
903
-Deap_peer_sake_register=eap_peer_method_dynamic_init
906
$(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
907
-D$(*:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
910
wpa_supplicant.exe: wpa_supplicant
914
wpa_passphrase.exe: wpa_passphrase
916
win_if_list.exe: win_if_list
918
eapol_test.exe: eapol_test
921
WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
923
windows-bin: $(WINALL)
927
qmake -o wpa_gui/Makefile wpa_gui/wpa_gui.pro
929
wpa_gui: wpa_gui/Makefile
932
TEST_MS_FUNCS_OBJS = ../src/crypto/crypto_openssl.o ../src/crypto/sha1.o ../src/crypto/md5.o \
933
../src/utils/os_unix.o ../src/crypto/rc4.o tests/test_ms_funcs.o
934
test-ms_funcs: $(TEST_MS_FUNCS_OBJS)
935
$(LDO) $(LDFLAGS) -o $@ $(TEST_MS_FUNCS_OBJS) $(LIBS) -lcrypto
939
TEST_SHA1_OBJS = ../src/crypto/sha1.o ../src/crypto/md5.o tests/test_sha1.o #../src/crypto/crypto_openssl.o
940
test-sha1: $(TEST_SHA1_OBJS)
941
$(LDO) $(LDFLAGS) -o $@ $(TEST_SHA1_OBJS) $(LIBS)
945
TEST_SHA256_OBJS = ../src/crypto/sha256.o ../src/crypto/md5.o tests/test_sha256.o ../src/crypto/crypto_openssl.o
946
test-sha256: $(TEST_SHA256_OBJS)
947
$(LDO) $(LDFLAGS) -o $@ $(TEST_SHA256_OBJS) $(LIBS)
951
TEST_AES_OBJS = ../src/crypto/aes_wrap.o ../src/crypto/aes.o tests/test_aes.o
952
test-aes: $(TEST_AES_OBJS)
953
$(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS)
957
TEST_EAP_SIM_COMMON_OBJS = ../src/crypto/sha1.o ../src/crypto/md5.o \
958
../src/crypto/aes_wrap.o ../src/utils/common.o ../src/utils/os_unix.o \
959
../src/utils/wpa_debug.o ../src/crypto/aes.o \
960
tests/test_eap_sim_common.o
961
test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS)
962
$(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS)
963
./test-eap_sim_common
964
rm test-eap_sim_common
966
TEST_MD4_OBJS = ../src/crypto/md4.o tests/test_md4.o #../src/crypto/crypto_openssl.o
967
test-md4: $(TEST_MD4_OBJS)
968
$(LDO) $(LDFLAGS) -o $@ $(TEST_MD4_OBJS) $(LIBS)
972
TEST_MD5_OBJS = ../src/crypto/md5.o tests/test_md5.o #../src/crypto/crypto_openssl.o
973
test-md5: $(TEST_MD5_OBJS)
974
$(LDO) $(LDFLAGS) -o $@ $(TEST_MD5_OBJS) $(LIBS)
978
tests: test-ms_funcs test-sha1 test-aes test-eap_sim_common test-md4 test-md5
981
$(MAKE) -C ../src clean
982
rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL)
985
fig2dev -L eps $*.fig $*.eps
988
fig2dev -L png -m 3 $*.fig | pngtopnm | pnmscale 0.4 | pnmtopng \
991
docs-pics: doc/wpa_supplicant.png doc/wpa_supplicant.eps
994
doxygen doc/doxygen.full
996
cp doc/latex/refman.pdf wpa_supplicant-devel.pdf
999
doxygen doc/doxygen.fast
1002
rm -rf doc/latex doc/html
1003
rm -f doc/wpa_supplicant.{eps,png} wpa_supplicant-devel.pdf
1005
wpa_supplicant-sparse: .config $(OBJS)
1006
@echo Sparse run completed
1009
CC="sparse -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -D__INT_MAX__=2147483647 -D__SHRT_MAX__=32767 -D__LONG_MAX__=2147483647 -D__SCHAR_MAX__=127 -Wbitwise" $(MAKE) wpa_supplicant-sparse
1011
-include $(OBJS:%.o=%.d)