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