1ifndef CC 2CC=gcc 3endif 4 5ifndef CFLAGS 6CFLAGS = -MMD -O2 -Wall -g 7endif 8 9ifdef LIBS 10# If LIBS is set with some global build system defaults, clone those for 11# LIBS_c and LIBS_p to cover wpa_passphrase and wpa_cli as well. 12ifndef LIBS_c 13LIBS_c := $(LIBS) 14endif 15ifndef LIBS_p 16LIBS_p := $(LIBS) 17endif 18endif 19 20export LIBDIR ?= /usr/local/lib/ 21export INCDIR ?= /usr/local/include/ 22export BINDIR ?= /usr/local/sbin/ 23PKG_CONFIG ?= pkg-config 24 25CFLAGS += $(EXTRA_CFLAGS) 26CFLAGS += -I$(abspath ../src) 27CFLAGS += -I$(abspath ../src/utils) 28 29-include .config 30 31ifndef CONFIG_NO_GITVER 32# Add VERSION_STR postfix for builds from a git repository 33ifeq ($(wildcard ../.git),../.git) 34GITVER := $(shell git describe --dirty=+) 35ifneq ($(GITVER),) 36CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\" 37endif 38endif 39endif 40 41ifdef CONFIG_TESTING_OPTIONS 42CFLAGS += -DCONFIG_TESTING_OPTIONS 43CONFIG_WPS_TESTING=y 44CONFIG_TDLS_TESTING=y 45endif 46 47BINALL=wpa_supplicant wpa_cli 48 49ifndef CONFIG_NO_WPA_PASSPHRASE 50BINALL += wpa_passphrase 51endif 52 53ALL = $(BINALL) 54ALL += systemd/wpa_supplicant.service 55ALL += systemd/wpa_supplicant@.service 56ALL += systemd/wpa_supplicant-nl80211@.service 57ALL += systemd/wpa_supplicant-wired@.service 58ALL += dbus/fi.epitest.hostap.WPASupplicant.service 59ALL += dbus/fi.w1.wpa_supplicant1.service 60ifdef CONFIG_BUILD_WPA_CLIENT_SO 61ALL += libwpa_client.so 62endif 63 64 65all: verify_config $(ALL) dynamic_eap_methods 66 67verify_config: 68 @if [ ! -r .config ]; then \ 69 echo 'Building wpa_supplicant requires a configuration file'; \ 70 echo '(.config). See README for more instructions. You can'; \ 71 echo 'run "cp defconfig .config" to create an example'; \ 72 echo 'configuration.'; \ 73 exit 1; \ 74 fi 75 76mkconfig: 77 @if [ -f .config ]; then \ 78 echo '.config exists - did not replace it'; \ 79 exit 1; \ 80 fi 81 echo CONFIG_DRIVER_HOSTAP=y >> .config 82 echo CONFIG_DRIVER_WEXT=y >> .config 83 84$(DESTDIR)$(BINDIR)/%: % 85 install -D $(<) $(@) 86 87install: $(addprefix $(DESTDIR)$(BINDIR)/,$(BINALL)) 88 $(MAKE) -C ../src install 89ifdef CONFIG_BUILD_WPA_CLIENT_SO 90 install -m 0644 -D libwpa_client.so $(DESTDIR)/$(LIBDIR)/libwpa_client.so 91 install -m 0644 -D ../src/common/wpa_ctrl.h $(DESTDIR)/$(INCDIR)/wpa_ctrl.h 92endif 93 94ifdef CONFIG_FIPS 95CONFIG_NO_RANDOM_POOL= 96CONFIG_OPENSSL_CMAC=y 97endif 98 99OBJS = config.o 100OBJS += notify.o 101OBJS += bss.o 102OBJS += eap_register.o 103OBJS += ../src/utils/common.o 104OBJS += ../src/utils/wpa_debug.o 105OBJS += ../src/utils/wpabuf.o 106OBJS_p = wpa_passphrase.o 107OBJS_p += ../src/utils/common.o 108OBJS_p += ../src/utils/wpa_debug.o 109OBJS_p += ../src/utils/wpabuf.o 110OBJS_c = wpa_cli.o ../src/common/wpa_ctrl.o 111OBJS_c += ../src/utils/wpa_debug.o 112OBJS_c += ../src/utils/common.o 113OBJS += wmm_ac.o 114 115ifndef CONFIG_OS 116ifdef CONFIG_NATIVE_WINDOWS 117CONFIG_OS=win32 118else 119CONFIG_OS=unix 120endif 121endif 122 123ifeq ($(CONFIG_OS), internal) 124CFLAGS += -DOS_NO_C_LIB_DEFINES 125endif 126 127OBJS += ../src/utils/os_$(CONFIG_OS).o 128OBJS_p += ../src/utils/os_$(CONFIG_OS).o 129OBJS_c += ../src/utils/os_$(CONFIG_OS).o 130 131ifdef CONFIG_WPA_TRACE 132CFLAGS += -DWPA_TRACE 133OBJS += ../src/utils/trace.o 134OBJS_p += ../src/utils/trace.o 135OBJS_c += ../src/utils/trace.o 136OBJS_priv += ../src/utils/trace.o 137LIBCTRL += ../src/utils/trace.o 138LIBCTRLSO += ../src/utils/trace.c 139LDFLAGS += -rdynamic 140CFLAGS += -funwind-tables 141ifdef CONFIG_WPA_TRACE_BFD 142CFLAGS += -DPACKAGE="wpa_supplicant" -DWPA_TRACE_BFD 143LIBS += -lbfd -ldl -liberty -lz 144LIBS_p += -lbfd -ldl -liberty -lz 145LIBS_c += -lbfd -ldl -liberty -lz 146endif 147endif 148 149ifndef CONFIG_ELOOP 150CONFIG_ELOOP=eloop 151endif 152OBJS += ../src/utils/$(CONFIG_ELOOP).o 153OBJS_c += ../src/utils/$(CONFIG_ELOOP).o 154 155ifndef CONFIG_OSX 156ifeq ($(CONFIG_ELOOP), eloop) 157# Using glibc < 2.17 requires -lrt for clock_gettime() 158# OS X has an alternate implementation 159LIBS += -lrt 160LIBS_c += -lrt 161LIBS_p += -lrt 162endif 163endif 164 165ifdef CONFIG_ELOOP_POLL 166CFLAGS += -DCONFIG_ELOOP_POLL 167endif 168 169ifdef CONFIG_ELOOP_EPOLL 170CFLAGS += -DCONFIG_ELOOP_EPOLL 171endif 172 173ifdef CONFIG_ELOOP_KQUEUE 174CFLAGS += -DCONFIG_ELOOP_KQUEUE 175endif 176 177ifdef CONFIG_EAPOL_TEST 178CFLAGS += -Werror -DEAPOL_TEST 179endif 180 181ifdef CONFIG_CODE_COVERAGE 182CFLAGS += -O0 -fprofile-arcs -ftest-coverage 183LIBS += -lgcov 184LIBS_c += -lgcov 185LIBS_p += -lgcov 186endif 187 188ifdef CONFIG_HT_OVERRIDES 189CFLAGS += -DCONFIG_HT_OVERRIDES 190endif 191 192ifdef CONFIG_VHT_OVERRIDES 193CFLAGS += -DCONFIG_VHT_OVERRIDES 194endif 195 196ifndef CONFIG_BACKEND 197CONFIG_BACKEND=file 198endif 199 200ifeq ($(CONFIG_BACKEND), file) 201OBJS += config_file.o 202ifndef CONFIG_NO_CONFIG_BLOBS 203NEED_BASE64=y 204endif 205CFLAGS += -DCONFIG_BACKEND_FILE 206endif 207 208ifeq ($(CONFIG_BACKEND), winreg) 209OBJS += config_winreg.o 210endif 211 212ifeq ($(CONFIG_BACKEND), none) 213OBJS += config_none.o 214endif 215 216ifdef CONFIG_NO_CONFIG_WRITE 217CFLAGS += -DCONFIG_NO_CONFIG_WRITE 218endif 219 220ifdef CONFIG_NO_CONFIG_BLOBS 221CFLAGS += -DCONFIG_NO_CONFIG_BLOBS 222endif 223 224ifdef CONFIG_NO_SCAN_PROCESSING 225CFLAGS += -DCONFIG_NO_SCAN_PROCESSING 226endif 227 228ifdef CONFIG_SUITEB 229CFLAGS += -DCONFIG_SUITEB 230NEED_SHA256=y 231NEED_AES_OMAC1=y 232endif 233 234ifdef CONFIG_SUITEB192 235CFLAGS += -DCONFIG_SUITEB192 236NEED_SHA384=y 237endif 238 239ifdef CONFIG_IEEE80211W 240CFLAGS += -DCONFIG_IEEE80211W 241NEED_SHA256=y 242NEED_AES_OMAC1=y 243endif 244 245ifdef CONFIG_IEEE80211R 246CFLAGS += -DCONFIG_IEEE80211R 247OBJS += ../src/rsn_supp/wpa_ft.o 248NEED_SHA256=y 249NEED_AES_OMAC1=y 250endif 251 252ifdef CONFIG_MESH 253NEED_80211_COMMON=y 254NEED_SHA256=y 255NEED_AES_SIV=y 256NEED_AES_OMAC1=y 257NEED_AES_CTR=y 258CONFIG_SAE=y 259CONFIG_AP=y 260CFLAGS += -DCONFIG_MESH 261OBJS += mesh.o 262OBJS += mesh_mpm.o 263OBJS += mesh_rsn.o 264endif 265 266ifdef CONFIG_SAE 267CFLAGS += -DCONFIG_SAE 268OBJS += ../src/common/sae.o 269NEED_ECC=y 270NEED_DH_GROUPS=y 271endif 272 273ifdef CONFIG_WNM 274CFLAGS += -DCONFIG_WNM 275OBJS += wnm_sta.o 276endif 277 278ifdef CONFIG_TDLS 279CFLAGS += -DCONFIG_TDLS 280OBJS += ../src/rsn_supp/tdls.o 281NEED_SHA256=y 282NEED_AES_OMAC1=y 283endif 284 285ifdef CONFIG_TDLS_TESTING 286CFLAGS += -DCONFIG_TDLS_TESTING 287endif 288 289ifdef CONFIG_PEERKEY 290CFLAGS += -DCONFIG_PEERKEY 291endif 292 293ifndef CONFIG_NO_WPA 294OBJS += ../src/rsn_supp/wpa.o 295OBJS += ../src/rsn_supp/preauth.o 296OBJS += ../src/rsn_supp/pmksa_cache.o 297OBJS += ../src/rsn_supp/peerkey.o 298OBJS += ../src/rsn_supp/wpa_ie.o 299OBJS += ../src/common/wpa_common.o 300NEED_AES=y 301NEED_SHA1=y 302NEED_MD5=y 303NEED_RC4=y 304else 305CFLAGS += -DCONFIG_NO_WPA 306ifeq ($(CONFIG_TLS), internal) 307NEED_SHA1=y 308NEED_MD5=y 309endif 310endif 311 312ifdef CONFIG_IBSS_RSN 313NEED_RSN_AUTHENTICATOR=y 314CFLAGS += -DCONFIG_IBSS_RSN 315CFLAGS += -DCONFIG_NO_VLAN 316OBJS += ibss_rsn.o 317endif 318 319ifdef CONFIG_MATCH_IFACE 320CFLAGS += -DCONFIG_MATCH_IFACE 321endif 322 323ifdef CONFIG_P2P 324OBJS += p2p_supplicant.o 325OBJS += p2p_supplicant_sd.o 326OBJS += ../src/p2p/p2p.o 327OBJS += ../src/p2p/p2p_utils.o 328OBJS += ../src/p2p/p2p_parse.o 329OBJS += ../src/p2p/p2p_build.o 330OBJS += ../src/p2p/p2p_go_neg.o 331OBJS += ../src/p2p/p2p_sd.o 332OBJS += ../src/p2p/p2p_pd.o 333OBJS += ../src/p2p/p2p_invitation.o 334OBJS += ../src/p2p/p2p_dev_disc.o 335OBJS += ../src/p2p/p2p_group.o 336OBJS += ../src/ap/p2p_hostapd.o 337OBJS += ../src/utils/bitfield.o 338CFLAGS += -DCONFIG_P2P 339NEED_GAS=y 340NEED_OFFCHANNEL=y 341CONFIG_WPS=y 342CONFIG_AP=y 343ifdef CONFIG_P2P_STRICT 344CFLAGS += -DCONFIG_P2P_STRICT 345endif 346endif 347 348ifdef CONFIG_WIFI_DISPLAY 349CFLAGS += -DCONFIG_WIFI_DISPLAY 350OBJS += wifi_display.o 351endif 352 353ifdef CONFIG_HS20 354OBJS += hs20_supplicant.o 355CFLAGS += -DCONFIG_HS20 356CONFIG_INTERWORKING=y 357NEED_AES_OMAC1=y 358endif 359 360ifdef CONFIG_INTERWORKING 361OBJS += interworking.o 362CFLAGS += -DCONFIG_INTERWORKING 363NEED_GAS=y 364endif 365 366ifdef CONFIG_NO_ROAMING 367CFLAGS += -DCONFIG_NO_ROAMING 368endif 369 370include ../src/drivers/drivers.mak 371ifdef CONFIG_AP 372OBJS_d += $(DRV_BOTH_OBJS) 373CFLAGS += $(DRV_BOTH_CFLAGS) 374LDFLAGS += $(DRV_BOTH_LDFLAGS) 375LIBS += $(DRV_BOTH_LIBS) 376else 377NEED_AP_MLME= 378OBJS_d += $(DRV_WPA_OBJS) 379CFLAGS += $(DRV_WPA_CFLAGS) 380LDFLAGS += $(DRV_WPA_LDFLAGS) 381LIBS += $(DRV_WPA_LIBS) 382endif 383 384ifndef CONFIG_L2_PACKET 385CONFIG_L2_PACKET=linux 386endif 387 388OBJS_l2 += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o 389 390ifeq ($(CONFIG_L2_PACKET), pcap) 391ifdef CONFIG_WINPCAP 392CFLAGS += -DCONFIG_WINPCAP 393LIBS += -lwpcap -lpacket 394LIBS_w += -lwpcap 395else 396LIBS += -ldnet -lpcap 397endif 398endif 399 400ifeq ($(CONFIG_L2_PACKET), winpcap) 401LIBS += -lwpcap -lpacket 402LIBS_w += -lwpcap 403endif 404 405ifeq ($(CONFIG_L2_PACKET), freebsd) 406LIBS += -lpcap 407endif 408 409ifdef CONFIG_ERP 410CFLAGS += -DCONFIG_ERP 411NEED_SHA256=y 412NEED_HMAC_SHA256_KDF=y 413endif 414 415ifdef CONFIG_EAP_TLS 416# EAP-TLS 417ifeq ($(CONFIG_EAP_TLS), dyn) 418CFLAGS += -DEAP_TLS_DYNAMIC 419EAPDYN += ../src/eap_peer/eap_tls.so 420else 421CFLAGS += -DEAP_TLS 422OBJS += ../src/eap_peer/eap_tls.o 423endif 424TLS_FUNCS=y 425CONFIG_IEEE8021X_EAPOL=y 426endif 427 428ifdef CONFIG_EAP_UNAUTH_TLS 429# EAP-UNAUTH-TLS 430CFLAGS += -DEAP_UNAUTH_TLS 431ifndef CONFIG_EAP_TLS 432OBJS += ../src/eap_peer/eap_tls.o 433TLS_FUNCS=y 434endif 435CONFIG_IEEE8021X_EAPOL=y 436endif 437 438ifdef CONFIG_EAP_PEAP 439# EAP-PEAP 440ifeq ($(CONFIG_EAP_PEAP), dyn) 441CFLAGS += -DEAP_PEAP_DYNAMIC 442EAPDYN += ../src/eap_peer/eap_peap.so 443else 444CFLAGS += -DEAP_PEAP 445OBJS += ../src/eap_peer/eap_peap.o 446OBJS += ../src/eap_common/eap_peap_common.o 447endif 448TLS_FUNCS=y 449CONFIG_IEEE8021X_EAPOL=y 450endif 451 452ifdef CONFIG_EAP_TTLS 453# EAP-TTLS 454ifeq ($(CONFIG_EAP_TTLS), dyn) 455CFLAGS += -DEAP_TTLS_DYNAMIC 456EAPDYN += ../src/eap_peer/eap_ttls.so 457else 458CFLAGS += -DEAP_TTLS 459OBJS += ../src/eap_peer/eap_ttls.o 460endif 461TLS_FUNCS=y 462ifndef CONFIG_FIPS 463MS_FUNCS=y 464CHAP=y 465endif 466CONFIG_IEEE8021X_EAPOL=y 467endif 468 469ifdef CONFIG_EAP_MD5 470# EAP-MD5 471ifeq ($(CONFIG_EAP_MD5), dyn) 472CFLAGS += -DEAP_MD5_DYNAMIC 473EAPDYN += ../src/eap_peer/eap_md5.so 474else 475CFLAGS += -DEAP_MD5 476OBJS += ../src/eap_peer/eap_md5.o 477endif 478CHAP=y 479CONFIG_IEEE8021X_EAPOL=y 480endif 481 482# backwards compatibility for old spelling 483ifdef CONFIG_MSCHAPV2 484ifndef CONFIG_EAP_MSCHAPV2 485CONFIG_EAP_MSCHAPV2=y 486endif 487endif 488 489ifdef CONFIG_EAP_MSCHAPV2 490# EAP-MSCHAPv2 491ifeq ($(CONFIG_EAP_MSCHAPV2), dyn) 492CFLAGS += -DEAP_MSCHAPv2_DYNAMIC 493EAPDYN += ../src/eap_peer/eap_mschapv2.so 494EAPDYN += ../src/eap_peer/mschapv2.so 495else 496CFLAGS += -DEAP_MSCHAPv2 497OBJS += ../src/eap_peer/eap_mschapv2.o 498OBJS += ../src/eap_peer/mschapv2.o 499endif 500MS_FUNCS=y 501CONFIG_IEEE8021X_EAPOL=y 502endif 503 504ifdef CONFIG_EAP_GTC 505# EAP-GTC 506ifeq ($(CONFIG_EAP_GTC), dyn) 507CFLAGS += -DEAP_GTC_DYNAMIC 508EAPDYN += ../src/eap_peer/eap_gtc.so 509else 510CFLAGS += -DEAP_GTC 511OBJS += ../src/eap_peer/eap_gtc.o 512endif 513CONFIG_IEEE8021X_EAPOL=y 514endif 515 516ifdef CONFIG_EAP_OTP 517# EAP-OTP 518ifeq ($(CONFIG_EAP_OTP), dyn) 519CFLAGS += -DEAP_OTP_DYNAMIC 520EAPDYN += ../src/eap_peer/eap_otp.so 521else 522CFLAGS += -DEAP_OTP 523OBJS += ../src/eap_peer/eap_otp.o 524endif 525CONFIG_IEEE8021X_EAPOL=y 526endif 527 528ifdef CONFIG_EAP_SIM 529# EAP-SIM 530ifeq ($(CONFIG_EAP_SIM), dyn) 531CFLAGS += -DEAP_SIM_DYNAMIC 532EAPDYN += ../src/eap_peer/eap_sim.so 533else 534CFLAGS += -DEAP_SIM 535OBJS += ../src/eap_peer/eap_sim.o 536endif 537CONFIG_IEEE8021X_EAPOL=y 538CONFIG_EAP_SIM_COMMON=y 539NEED_AES_CBC=y 540endif 541 542ifdef CONFIG_EAP_LEAP 543# EAP-LEAP 544ifeq ($(CONFIG_EAP_LEAP), dyn) 545CFLAGS += -DEAP_LEAP_DYNAMIC 546EAPDYN += ../src/eap_peer/eap_leap.so 547else 548CFLAGS += -DEAP_LEAP 549OBJS += ../src/eap_peer/eap_leap.o 550endif 551MS_FUNCS=y 552CONFIG_IEEE8021X_EAPOL=y 553endif 554 555ifdef CONFIG_EAP_PSK 556# EAP-PSK 557ifeq ($(CONFIG_EAP_PSK), dyn) 558CFLAGS += -DEAP_PSK_DYNAMIC 559EAPDYN += ../src/eap_peer/eap_psk.so 560else 561CFLAGS += -DEAP_PSK 562OBJS += ../src/eap_peer/eap_psk.o ../src/eap_common/eap_psk_common.o 563endif 564CONFIG_IEEE8021X_EAPOL=y 565NEED_AES=y 566NEED_AES_OMAC1=y 567NEED_AES_ENCBLOCK=y 568NEED_AES_EAX=y 569endif 570 571ifdef CONFIG_EAP_AKA 572# EAP-AKA 573ifeq ($(CONFIG_EAP_AKA), dyn) 574CFLAGS += -DEAP_AKA_DYNAMIC 575EAPDYN += ../src/eap_peer/eap_aka.so 576else 577CFLAGS += -DEAP_AKA 578OBJS += ../src/eap_peer/eap_aka.o 579endif 580CONFIG_IEEE8021X_EAPOL=y 581CONFIG_EAP_SIM_COMMON=y 582NEED_AES_CBC=y 583endif 584 585ifdef CONFIG_EAP_PROXY 586CFLAGS += -DCONFIG_EAP_PROXY 587OBJS += ../src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).o 588include eap_proxy_$(CONFIG_EAP_PROXY).mak 589CONFIG_IEEE8021X_EAPOL=y 590endif 591 592ifdef CONFIG_EAP_AKA_PRIME 593# EAP-AKA' 594ifeq ($(CONFIG_EAP_AKA_PRIME), dyn) 595CFLAGS += -DEAP_AKA_PRIME_DYNAMIC 596else 597CFLAGS += -DEAP_AKA_PRIME 598endif 599NEED_SHA256=y 600endif 601 602ifdef CONFIG_EAP_SIM_COMMON 603OBJS += ../src/eap_common/eap_sim_common.o 604NEED_AES=y 605NEED_FIPS186_2_PRF=y 606endif 607 608ifdef CONFIG_EAP_FAST 609# EAP-FAST 610ifeq ($(CONFIG_EAP_FAST), dyn) 611CFLAGS += -DEAP_FAST_DYNAMIC 612EAPDYN += ../src/eap_peer/eap_fast.so 613EAPDYN += ../src/eap_common/eap_fast_common.o 614else 615CFLAGS += -DEAP_FAST 616OBJS += ../src/eap_peer/eap_fast.o ../src/eap_peer/eap_fast_pac.o 617OBJS += ../src/eap_common/eap_fast_common.o 618endif 619TLS_FUNCS=y 620CONFIG_IEEE8021X_EAPOL=y 621NEED_T_PRF=y 622endif 623 624ifdef CONFIG_EAP_PAX 625# EAP-PAX 626ifeq ($(CONFIG_EAP_PAX), dyn) 627CFLAGS += -DEAP_PAX_DYNAMIC 628EAPDYN += ../src/eap_peer/eap_pax.so 629else 630CFLAGS += -DEAP_PAX 631OBJS += ../src/eap_peer/eap_pax.o ../src/eap_common/eap_pax_common.o 632endif 633CONFIG_IEEE8021X_EAPOL=y 634endif 635 636ifdef CONFIG_EAP_SAKE 637# EAP-SAKE 638ifeq ($(CONFIG_EAP_SAKE), dyn) 639CFLAGS += -DEAP_SAKE_DYNAMIC 640EAPDYN += ../src/eap_peer/eap_sake.so 641else 642CFLAGS += -DEAP_SAKE 643OBJS += ../src/eap_peer/eap_sake.o ../src/eap_common/eap_sake_common.o 644endif 645CONFIG_IEEE8021X_EAPOL=y 646endif 647 648ifdef CONFIG_EAP_GPSK 649# EAP-GPSK 650ifeq ($(CONFIG_EAP_GPSK), dyn) 651CFLAGS += -DEAP_GPSK_DYNAMIC 652EAPDYN += ../src/eap_peer/eap_gpsk.so 653else 654CFLAGS += -DEAP_GPSK 655OBJS += ../src/eap_peer/eap_gpsk.o ../src/eap_common/eap_gpsk_common.o 656endif 657CONFIG_IEEE8021X_EAPOL=y 658ifdef CONFIG_EAP_GPSK_SHA256 659CFLAGS += -DEAP_GPSK_SHA256 660endif 661NEED_SHA256=y 662NEED_AES_OMAC1=y 663endif 664 665ifdef CONFIG_EAP_PWD 666CFLAGS += -DEAP_PWD 667OBJS += ../src/eap_peer/eap_pwd.o ../src/eap_common/eap_pwd_common.o 668CONFIG_IEEE8021X_EAPOL=y 669NEED_SHA256=y 670endif 671 672ifdef CONFIG_EAP_EKE 673# EAP-EKE 674ifeq ($(CONFIG_EAP_EKE), dyn) 675CFLAGS += -DEAP_EKE_DYNAMIC 676EAPDYN += ../src/eap_peer/eap_eke.so 677else 678CFLAGS += -DEAP_EKE 679OBJS += ../src/eap_peer/eap_eke.o ../src/eap_common/eap_eke_common.o 680endif 681CONFIG_IEEE8021X_EAPOL=y 682NEED_DH_GROUPS=y 683NEED_DH_GROUPS_ALL=y 684NEED_SHA256=y 685NEED_AES_CBC=y 686endif 687 688ifdef CONFIG_WPS 689# EAP-WSC 690CFLAGS += -DCONFIG_WPS -DEAP_WSC 691OBJS += wps_supplicant.o 692OBJS += ../src/utils/uuid.o 693OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o 694OBJS += ../src/wps/wps.o 695OBJS += ../src/wps/wps_common.o 696OBJS += ../src/wps/wps_attr_parse.o 697OBJS += ../src/wps/wps_attr_build.o 698OBJS += ../src/wps/wps_attr_process.o 699OBJS += ../src/wps/wps_dev_attr.o 700OBJS += ../src/wps/wps_enrollee.o 701OBJS += ../src/wps/wps_registrar.o 702CONFIG_IEEE8021X_EAPOL=y 703NEED_DH_GROUPS=y 704NEED_SHA256=y 705NEED_BASE64=y 706NEED_AES_CBC=y 707NEED_MODEXP=y 708 709ifdef CONFIG_WPS_NFC 710CFLAGS += -DCONFIG_WPS_NFC 711OBJS += ../src/wps/ndef.o 712NEED_WPS_OOB=y 713endif 714 715ifdef NEED_WPS_OOB 716CFLAGS += -DCONFIG_WPS_OOB 717endif 718 719ifdef CONFIG_WPS_ER 720CONFIG_WPS_UPNP=y 721CFLAGS += -DCONFIG_WPS_ER 722OBJS += ../src/wps/wps_er.o 723OBJS += ../src/wps/wps_er_ssdp.o 724endif 725 726ifdef CONFIG_WPS_UPNP 727CFLAGS += -DCONFIG_WPS_UPNP 728OBJS += ../src/wps/wps_upnp.o 729OBJS += ../src/wps/wps_upnp_ssdp.o 730OBJS += ../src/wps/wps_upnp_web.o 731OBJS += ../src/wps/wps_upnp_event.o 732OBJS += ../src/wps/wps_upnp_ap.o 733OBJS += ../src/wps/upnp_xml.o 734OBJS += ../src/wps/httpread.o 735OBJS += ../src/wps/http_client.o 736OBJS += ../src/wps/http_server.o 737endif 738 739ifdef CONFIG_WPS_STRICT 740CFLAGS += -DCONFIG_WPS_STRICT 741OBJS += ../src/wps/wps_validate.o 742endif 743 744ifdef CONFIG_WPS_TESTING 745CFLAGS += -DCONFIG_WPS_TESTING 746endif 747 748ifdef CONFIG_WPS_REG_DISABLE_OPEN 749CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN 750endif 751 752endif 753 754ifdef CONFIG_EAP_IKEV2 755# EAP-IKEv2 756ifeq ($(CONFIG_EAP_IKEV2), dyn) 757CFLAGS += -DEAP_IKEV2_DYNAMIC 758EAPDYN += ../src/eap_peer/eap_ikev2.so ../src/eap_peer/ikev2.o 759EAPDYN += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o 760else 761CFLAGS += -DEAP_IKEV2 762OBJS += ../src/eap_peer/eap_ikev2.o ../src/eap_peer/ikev2.o 763OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o 764endif 765CONFIG_IEEE8021X_EAPOL=y 766NEED_DH_GROUPS=y 767NEED_DH_GROUPS_ALL=y 768NEED_MODEXP=y 769NEED_CIPHER=y 770endif 771 772ifdef CONFIG_EAP_VENDOR_TEST 773ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn) 774CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC 775EAPDYN += ../src/eap_peer/eap_vendor_test.so 776else 777CFLAGS += -DEAP_VENDOR_TEST 778OBJS += ../src/eap_peer/eap_vendor_test.o 779endif 780CONFIG_IEEE8021X_EAPOL=y 781endif 782 783ifdef CONFIG_EAP_TNC 784# EAP-TNC 785CFLAGS += -DEAP_TNC 786OBJS += ../src/eap_peer/eap_tnc.o 787OBJS += ../src/eap_peer/tncc.o 788NEED_BASE64=y 789ifndef CONFIG_NATIVE_WINDOWS 790ifndef CONFIG_DRIVER_BSD 791LIBS += -ldl 792endif 793endif 794endif 795 796ifdef CONFIG_IEEE8021X_EAPOL 797# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication) 798CFLAGS += -DIEEE8021X_EAPOL 799OBJS += ../src/eapol_supp/eapol_supp_sm.o 800OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o 801NEED_EAP_COMMON=y 802ifdef CONFIG_DYNAMIC_EAP_METHODS 803CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS 804LIBS += -ldl -rdynamic 805endif 806endif 807 808ifdef CONFIG_MACSEC 809CFLAGS += -DCONFIG_MACSEC 810NEED_AES_ENCBLOCK=y 811NEED_AES_UNWRAP=y 812NEED_AES_WRAP=y 813NEED_AES_OMAC1=y 814OBJS += wpas_kay.o 815OBJS += ../src/pae/ieee802_1x_cp.o 816OBJS += ../src/pae/ieee802_1x_kay.o 817OBJS += ../src/pae/ieee802_1x_key.o 818OBJS += ../src/pae/ieee802_1x_secy_ops.o 819endif 820 821ifdef CONFIG_AP 822NEED_EAP_COMMON=y 823NEED_RSN_AUTHENTICATOR=y 824CFLAGS += -DCONFIG_AP 825OBJS += ap.o 826CFLAGS += -DCONFIG_NO_RADIUS 827CFLAGS += -DCONFIG_NO_ACCOUNTING 828CFLAGS += -DCONFIG_NO_VLAN 829OBJS += ../src/ap/hostapd.o 830OBJS += ../src/ap/wpa_auth_glue.o 831OBJS += ../src/ap/utils.o 832OBJS += ../src/ap/authsrv.o 833OBJS += ../src/ap/ap_config.o 834OBJS += ../src/utils/ip_addr.o 835OBJS += ../src/ap/sta_info.o 836OBJS += ../src/ap/tkip_countermeasures.o 837OBJS += ../src/ap/ap_mlme.o 838OBJS += ../src/ap/ieee802_1x.o 839OBJS += ../src/eapol_auth/eapol_auth_sm.o 840OBJS += ../src/ap/ieee802_11_auth.o 841OBJS += ../src/ap/ieee802_11_shared.o 842OBJS += ../src/ap/drv_callbacks.o 843OBJS += ../src/ap/ap_drv_ops.o 844OBJS += ../src/ap/beacon.o 845OBJS += ../src/ap/bss_load.o 846OBJS += ../src/ap/eap_user_db.o 847ifdef CONFIG_IEEE80211N 848OBJS += ../src/ap/ieee802_11_ht.o 849ifdef CONFIG_IEEE80211AC 850OBJS += ../src/ap/ieee802_11_vht.o 851endif 852endif 853ifdef CONFIG_WNM 854OBJS += ../src/ap/wnm_ap.o 855endif 856ifdef CONFIG_MBO 857OBJS += ../src/ap/mbo_ap.o 858endif 859ifdef CONFIG_CTRL_IFACE 860OBJS += ../src/ap/ctrl_iface_ap.o 861endif 862 863CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY 864OBJS += ../src/eap_server/eap_server.o 865OBJS += ../src/eap_server/eap_server_identity.o 866OBJS += ../src/eap_server/eap_server_methods.o 867 868ifdef CONFIG_IEEE80211N 869CFLAGS += -DCONFIG_IEEE80211N 870ifdef CONFIG_IEEE80211AC 871CFLAGS += -DCONFIG_IEEE80211AC 872endif 873endif 874 875ifdef CONFIG_MBO 876OBJS += mbo.o 877CFLAGS += -DCONFIG_MBO 878endif 879 880ifdef NEED_AP_MLME 881OBJS += ../src/ap/wmm.o 882OBJS += ../src/ap/ap_list.o 883OBJS += ../src/ap/ieee802_11.o 884OBJS += ../src/ap/hw_features.o 885OBJS += ../src/ap/dfs.o 886CFLAGS += -DNEED_AP_MLME 887endif 888ifdef CONFIG_WPS 889CFLAGS += -DEAP_SERVER_WSC 890OBJS += ../src/ap/wps_hostapd.o 891OBJS += ../src/eap_server/eap_server_wsc.o 892endif 893ifdef CONFIG_INTERWORKING 894OBJS += ../src/ap/gas_serv.o 895endif 896ifdef CONFIG_HS20 897OBJS += ../src/ap/hs20.o 898endif 899endif 900 901ifdef NEED_RSN_AUTHENTICATOR 902CFLAGS += -DCONFIG_NO_RADIUS 903NEED_AES_WRAP=y 904OBJS += ../src/ap/wpa_auth.o 905OBJS += ../src/ap/wpa_auth_ie.o 906OBJS += ../src/ap/pmksa_cache_auth.o 907ifdef CONFIG_IEEE80211R 908OBJS += ../src/ap/wpa_auth_ft.o 909endif 910ifdef CONFIG_PEERKEY 911OBJS += ../src/ap/peerkey_auth.o 912endif 913endif 914 915ifdef CONFIG_ACS 916CFLAGS += -DCONFIG_ACS 917OBJS += ../src/ap/acs.o 918LIBS += -lm 919endif 920 921ifdef CONFIG_PCSC 922# PC/SC interface for smartcards (USIM, GSM SIM) 923CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC 924OBJS += ../src/utils/pcsc_funcs.o 925# -lpthread may not be needed depending on how pcsc-lite was configured 926ifdef CONFIG_NATIVE_WINDOWS 927#Once MinGW gets support for WinScard, -lwinscard could be used instead of the 928#dynamic symbol loading that is now used in pcsc_funcs.c 929#LIBS += -lwinscard 930else 931LIBS += -lpcsclite -lpthread 932endif 933endif 934 935ifdef CONFIG_SIM_SIMULATOR 936CFLAGS += -DCONFIG_SIM_SIMULATOR 937NEED_MILENAGE=y 938endif 939 940ifdef CONFIG_USIM_SIMULATOR 941CFLAGS += -DCONFIG_USIM_SIMULATOR 942NEED_MILENAGE=y 943endif 944 945ifdef NEED_MILENAGE 946OBJS += ../src/crypto/milenage.o 947NEED_AES_ENCBLOCK=y 948endif 949 950ifdef CONFIG_PKCS12 951CFLAGS += -DPKCS12_FUNCS 952endif 953 954ifdef CONFIG_SMARTCARD 955CFLAGS += -DCONFIG_SMARTCARD 956endif 957 958ifdef MS_FUNCS 959OBJS += ../src/crypto/ms_funcs.o 960NEED_DES=y 961NEED_MD4=y 962endif 963 964ifdef CHAP 965OBJS += ../src/eap_common/chap.o 966endif 967 968ifdef TLS_FUNCS 969NEED_DES=y 970# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST) 971OBJS += ../src/eap_peer/eap_tls_common.o 972ifndef CONFIG_FIPS 973NEED_TLS_PRF=y 974NEED_SHA1=y 975NEED_MD5=y 976endif 977endif 978 979ifndef CONFIG_TLS 980CONFIG_TLS=openssl 981endif 982 983ifdef CONFIG_TLSV11 984CFLAGS += -DCONFIG_TLSV11 985endif 986 987ifdef CONFIG_TLSV12 988CFLAGS += -DCONFIG_TLSV12 989NEED_SHA256=y 990endif 991 992ifeq ($(CONFIG_TLS), openssl) 993ifdef TLS_FUNCS 994CFLAGS += -DEAP_TLS_OPENSSL 995OBJS += ../src/crypto/tls_openssl.o 996OBJS += ../src/crypto/tls_openssl_ocsp.o 997LIBS += -lssl 998endif 999OBJS += ../src/crypto/crypto_openssl.o 1000OBJS_p += ../src/crypto/crypto_openssl.o 1001OBJS_priv += ../src/crypto/crypto_openssl.o 1002ifdef NEED_FIPS186_2_PRF 1003OBJS += ../src/crypto/fips_prf_openssl.o 1004endif 1005NEED_SHA256=y 1006NEED_TLS_PRF_SHA256=y 1007LIBS += -lcrypto 1008LIBS_p += -lcrypto 1009ifdef CONFIG_TLS_ADD_DL 1010LIBS += -ldl 1011LIBS_p += -ldl 1012endif 1013endif 1014 1015ifeq ($(CONFIG_TLS), gnutls) 1016ifdef TLS_FUNCS 1017OBJS += ../src/crypto/tls_gnutls.o 1018LIBS += -lgnutls -lgpg-error 1019endif 1020OBJS += ../src/crypto/crypto_gnutls.o 1021OBJS_p += ../src/crypto/crypto_gnutls.o 1022OBJS_priv += ../src/crypto/crypto_gnutls.o 1023ifdef NEED_FIPS186_2_PRF 1024OBJS += ../src/crypto/fips_prf_internal.o 1025SHA1OBJS += ../src/crypto/sha1-internal.o 1026endif 1027LIBS += -lgcrypt 1028LIBS_p += -lgcrypt 1029CONFIG_INTERNAL_SHA256=y 1030CONFIG_INTERNAL_RC4=y 1031CONFIG_INTERNAL_DH_GROUP5=y 1032endif 1033 1034ifeq ($(CONFIG_TLS), internal) 1035ifndef CONFIG_CRYPTO 1036CONFIG_CRYPTO=internal 1037endif 1038ifdef TLS_FUNCS 1039OBJS += ../src/crypto/crypto_internal-rsa.o 1040OBJS += ../src/crypto/tls_internal.o 1041OBJS += ../src/tls/tlsv1_common.o 1042OBJS += ../src/tls/tlsv1_record.o 1043OBJS += ../src/tls/tlsv1_cred.o 1044OBJS += ../src/tls/tlsv1_client.o 1045OBJS += ../src/tls/tlsv1_client_write.o 1046OBJS += ../src/tls/tlsv1_client_read.o 1047OBJS += ../src/tls/tlsv1_client_ocsp.o 1048OBJS += ../src/tls/asn1.o 1049OBJS += ../src/tls/rsa.o 1050OBJS += ../src/tls/x509v3.o 1051OBJS += ../src/tls/pkcs1.o 1052OBJS += ../src/tls/pkcs5.o 1053OBJS += ../src/tls/pkcs8.o 1054NEED_SHA256=y 1055NEED_BASE64=y 1056NEED_TLS_PRF=y 1057ifdef CONFIG_TLSV12 1058NEED_TLS_PRF_SHA256=y 1059endif 1060NEED_MODEXP=y 1061NEED_CIPHER=y 1062CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT 1063endif 1064ifdef NEED_CIPHER 1065NEED_DES=y 1066OBJS += ../src/crypto/crypto_internal-cipher.o 1067endif 1068ifdef NEED_MODEXP 1069OBJS += ../src/crypto/crypto_internal-modexp.o 1070OBJS += ../src/tls/bignum.o 1071endif 1072ifeq ($(CONFIG_CRYPTO), libtomcrypt) 1073OBJS += ../src/crypto/crypto_libtomcrypt.o 1074OBJS_p += ../src/crypto/crypto_libtomcrypt.o 1075LIBS += -ltomcrypt -ltfm 1076LIBS_p += -ltomcrypt -ltfm 1077CONFIG_INTERNAL_SHA256=y 1078CONFIG_INTERNAL_RC4=y 1079CONFIG_INTERNAL_DH_GROUP5=y 1080endif 1081ifeq ($(CONFIG_CRYPTO), internal) 1082OBJS += ../src/crypto/crypto_internal.o 1083OBJS_p += ../src/crypto/crypto_internal.o 1084NEED_AES_ENC=y 1085CFLAGS += -DCONFIG_CRYPTO_INTERNAL 1086ifdef CONFIG_INTERNAL_LIBTOMMATH 1087CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 1088ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 1089CFLAGS += -DLTM_FAST 1090endif 1091else 1092LIBS += -ltommath 1093LIBS_p += -ltommath 1094endif 1095CONFIG_INTERNAL_AES=y 1096CONFIG_INTERNAL_DES=y 1097CONFIG_INTERNAL_SHA1=y 1098CONFIG_INTERNAL_MD4=y 1099CONFIG_INTERNAL_MD5=y 1100CONFIG_INTERNAL_SHA256=y 1101CONFIG_INTERNAL_SHA384=y 1102CONFIG_INTERNAL_SHA512=y 1103CONFIG_INTERNAL_RC4=y 1104CONFIG_INTERNAL_DH_GROUP5=y 1105endif 1106ifeq ($(CONFIG_CRYPTO), cryptoapi) 1107OBJS += ../src/crypto/crypto_cryptoapi.o 1108OBJS_p += ../src/crypto/crypto_cryptoapi.o 1109CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 1110CONFIG_INTERNAL_SHA256=y 1111CONFIG_INTERNAL_RC4=y 1112endif 1113endif 1114 1115ifeq ($(CONFIG_TLS), none) 1116ifdef TLS_FUNCS 1117OBJS += ../src/crypto/tls_none.o 1118CFLAGS += -DEAP_TLS_NONE 1119CONFIG_INTERNAL_AES=y 1120CONFIG_INTERNAL_SHA1=y 1121CONFIG_INTERNAL_MD5=y 1122endif 1123OBJS += ../src/crypto/crypto_none.o 1124OBJS_p += ../src/crypto/crypto_none.o 1125CONFIG_INTERNAL_SHA256=y 1126CONFIG_INTERNAL_RC4=y 1127endif 1128 1129ifdef TLS_FUNCS 1130ifdef CONFIG_SMARTCARD 1131ifndef CONFIG_NATIVE_WINDOWS 1132ifneq ($(CONFIG_L2_PACKET), freebsd) 1133LIBS += -ldl 1134endif 1135endif 1136endif 1137endif 1138 1139ifndef TLS_FUNCS 1140OBJS += ../src/crypto/tls_none.o 1141ifeq ($(CONFIG_TLS), internal) 1142CONFIG_INTERNAL_AES=y 1143CONFIG_INTERNAL_SHA1=y 1144CONFIG_INTERNAL_MD5=y 1145CONFIG_INTERNAL_RC4=y 1146endif 1147endif 1148 1149AESOBJS = # none so far (see below) 1150ifdef CONFIG_INTERNAL_AES 1151AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o 1152endif 1153 1154ifneq ($(CONFIG_TLS), openssl) 1155NEED_INTERNAL_AES_WRAP=y 1156endif 1157ifdef CONFIG_OPENSSL_INTERNAL_AES_WRAP 1158# Seems to be needed at least with BoringSSL 1159NEED_INTERNAL_AES_WRAP=y 1160CFLAGS += -DCONFIG_OPENSSL_INTERNAL_AES_WRAP 1161endif 1162ifdef CONFIG_FIPS 1163# Have to use internal AES key wrap routines to use OpenSSL EVP since the 1164# OpenSSL AES_wrap_key()/AES_unwrap_key() API is not available in FIPS mode. 1165NEED_INTERNAL_AES_WRAP=y 1166endif 1167 1168ifdef NEED_INTERNAL_AES_WRAP 1169AESOBJS += ../src/crypto/aes-unwrap.o 1170endif 1171ifdef NEED_AES_EAX 1172AESOBJS += ../src/crypto/aes-eax.o 1173NEED_AES_CTR=y 1174endif 1175ifdef NEED_AES_CTR 1176AESOBJS += ../src/crypto/aes-ctr.o 1177endif 1178ifdef NEED_AES_ENCBLOCK 1179AESOBJS += ../src/crypto/aes-encblock.o 1180endif 1181ifdef NEED_AES_OMAC1 1182NEED_AES_ENC=y 1183ifdef CONFIG_OPENSSL_CMAC 1184CFLAGS += -DCONFIG_OPENSSL_CMAC 1185else 1186AESOBJS += ../src/crypto/aes-omac1.o 1187endif 1188endif 1189ifdef NEED_AES_SIV 1190AESOBJS += ../src/crypto/aes-siv.o 1191endif 1192ifdef NEED_AES_WRAP 1193NEED_AES_ENC=y 1194ifdef NEED_INTERNAL_AES_WRAP 1195AESOBJS += ../src/crypto/aes-wrap.o 1196endif 1197endif 1198ifdef NEED_AES_CBC 1199NEED_AES_ENC=y 1200ifneq ($(CONFIG_TLS), openssl) 1201AESOBJS += ../src/crypto/aes-cbc.o 1202endif 1203endif 1204ifdef NEED_AES_ENC 1205ifdef CONFIG_INTERNAL_AES 1206AESOBJS += ../src/crypto/aes-internal-enc.o 1207endif 1208endif 1209ifdef NEED_AES 1210OBJS += $(AESOBJS) 1211endif 1212 1213ifdef NEED_SHA1 1214ifneq ($(CONFIG_TLS), openssl) 1215SHA1OBJS += ../src/crypto/sha1.o 1216endif 1217SHA1OBJS += ../src/crypto/sha1-prf.o 1218ifdef CONFIG_INTERNAL_SHA1 1219SHA1OBJS += ../src/crypto/sha1-internal.o 1220ifdef NEED_FIPS186_2_PRF 1221SHA1OBJS += ../src/crypto/fips_prf_internal.o 1222endif 1223endif 1224ifdef CONFIG_NO_WPA_PASSPHRASE 1225CFLAGS += -DCONFIG_NO_PBKDF2 1226else 1227ifneq ($(CONFIG_TLS), openssl) 1228SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 1229endif 1230endif 1231ifdef NEED_T_PRF 1232SHA1OBJS += ../src/crypto/sha1-tprf.o 1233endif 1234ifdef NEED_TLS_PRF 1235SHA1OBJS += ../src/crypto/sha1-tlsprf.o 1236endif 1237endif 1238 1239ifndef CONFIG_FIPS 1240ifneq ($(CONFIG_TLS), openssl) 1241MD5OBJS += ../src/crypto/md5.o 1242endif 1243endif 1244ifdef NEED_MD5 1245ifdef CONFIG_INTERNAL_MD5 1246MD5OBJS += ../src/crypto/md5-internal.o 1247endif 1248OBJS += $(MD5OBJS) 1249OBJS_p += $(MD5OBJS) 1250OBJS_priv += $(MD5OBJS) 1251endif 1252 1253ifdef NEED_MD4 1254ifdef CONFIG_INTERNAL_MD4 1255OBJS += ../src/crypto/md4-internal.o 1256endif 1257endif 1258 1259DESOBJS = # none needed when not internal 1260ifdef NEED_DES 1261ifdef CONFIG_INTERNAL_DES 1262DESOBJS += ../src/crypto/des-internal.o 1263endif 1264endif 1265 1266ifdef CONFIG_NO_RC4 1267CFLAGS += -DCONFIG_NO_RC4 1268endif 1269 1270ifdef NEED_RC4 1271ifdef CONFIG_INTERNAL_RC4 1272ifndef CONFIG_NO_RC4 1273OBJS += ../src/crypto/rc4.o 1274endif 1275endif 1276endif 1277 1278SHA256OBJS = # none by default 1279ifdef NEED_SHA256 1280CFLAGS += -DCONFIG_SHA256 1281ifneq ($(CONFIG_TLS), openssl) 1282SHA256OBJS += ../src/crypto/sha256.o 1283endif 1284SHA256OBJS += ../src/crypto/sha256-prf.o 1285ifdef CONFIG_INTERNAL_SHA256 1286SHA256OBJS += ../src/crypto/sha256-internal.o 1287endif 1288ifdef CONFIG_INTERNAL_SHA384 1289CFLAGS += -DCONFIG_INTERNAL_SHA384 1290SHA256OBJS += ../src/crypto/sha384-internal.o 1291endif 1292ifdef CONFIG_INTERNAL_SHA512 1293CFLAGS += -DCONFIG_INTERNAL_SHA512 1294SHA256OBJS += ../src/crypto/sha512-internal.o 1295endif 1296ifdef NEED_TLS_PRF_SHA256 1297SHA256OBJS += ../src/crypto/sha256-tlsprf.o 1298endif 1299ifdef NEED_HMAC_SHA256_KDF 1300CFLAGS += -DCONFIG_HMAC_SHA256_KDF 1301OBJS += ../src/crypto/sha256-kdf.o 1302endif 1303OBJS += $(SHA256OBJS) 1304endif 1305ifdef NEED_SHA384 1306CFLAGS += -DCONFIG_SHA384 1307OBJS += ../src/crypto/sha384-prf.o 1308endif 1309 1310ifdef NEED_DH_GROUPS 1311OBJS += ../src/crypto/dh_groups.o 1312endif 1313ifdef NEED_DH_GROUPS_ALL 1314CFLAGS += -DALL_DH_GROUPS 1315endif 1316ifdef CONFIG_INTERNAL_DH_GROUP5 1317ifdef NEED_DH_GROUPS 1318OBJS += ../src/crypto/dh_group5.o 1319endif 1320endif 1321 1322ifdef NEED_ECC 1323CFLAGS += -DCONFIG_ECC 1324endif 1325 1326ifdef CONFIG_NO_RANDOM_POOL 1327CFLAGS += -DCONFIG_NO_RANDOM_POOL 1328else 1329OBJS += ../src/crypto/random.o 1330endif 1331 1332ifdef CONFIG_CTRL_IFACE 1333ifeq ($(CONFIG_CTRL_IFACE), y) 1334ifdef CONFIG_NATIVE_WINDOWS 1335CONFIG_CTRL_IFACE=named_pipe 1336else 1337CONFIG_CTRL_IFACE=unix 1338endif 1339endif 1340CFLAGS += -DCONFIG_CTRL_IFACE 1341ifeq ($(CONFIG_CTRL_IFACE), unix) 1342CFLAGS += -DCONFIG_CTRL_IFACE_UNIX 1343OBJS += ../src/common/ctrl_iface_common.o 1344endif 1345ifeq ($(CONFIG_CTRL_IFACE), udp) 1346CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1347endif 1348ifeq ($(CONFIG_CTRL_IFACE), udp6) 1349CONFIG_CTRL_IFACE=udp 1350CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1351CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6 1352endif 1353ifeq ($(CONFIG_CTRL_IFACE), named_pipe) 1354CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE 1355endif 1356ifeq ($(CONFIG_CTRL_IFACE), udp-remote) 1357CONFIG_CTRL_IFACE=udp 1358CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1359CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE 1360endif 1361ifeq ($(CONFIG_CTRL_IFACE), udp6-remote) 1362CONFIG_CTRL_IFACE=udp 1363CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1364CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE 1365CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6 1366endif 1367OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o 1368endif 1369 1370ifdef CONFIG_CTRL_IFACE_DBUS 1371DBUS=y 1372DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE 1373DBUS_OBJS += dbus/dbus_old.o dbus/dbus_old_handlers.o 1374ifdef CONFIG_WPS 1375DBUS_OBJS += dbus/dbus_old_handlers_wps.o 1376endif 1377DBUS_OBJS += dbus/dbus_dict_helpers.o 1378ifndef DBUS_LIBS 1379DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1) 1380endif 1381ifndef DBUS_INCLUDE 1382DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1) 1383endif 1384DBUS_CFLAGS += $(DBUS_INCLUDE) 1385endif 1386 1387ifdef CONFIG_CTRL_IFACE_DBUS_NEW 1388DBUS=y 1389DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW 1390DBUS_OBJS ?= dbus/dbus_dict_helpers.o 1391DBUS_OBJS += dbus/dbus_new_helpers.o 1392DBUS_OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o 1393ifdef CONFIG_WPS 1394DBUS_OBJS += dbus/dbus_new_handlers_wps.o 1395endif 1396ifdef CONFIG_P2P 1397DBUS_OBJS += dbus/dbus_new_handlers_p2p.o 1398endif 1399ifndef DBUS_LIBS 1400DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1) 1401endif 1402ifndef DBUS_INCLUDE 1403DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1) 1404endif 1405ifdef CONFIG_CTRL_IFACE_DBUS_INTRO 1406DBUS_OBJS += dbus/dbus_new_introspect.o 1407DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO 1408endif 1409DBUS_CFLAGS += $(DBUS_INCLUDE) 1410endif 1411 1412ifdef DBUS 1413DBUS_CFLAGS += -DCONFIG_DBUS 1414DBUS_OBJS += dbus/dbus_common.o 1415endif 1416 1417OBJS += $(DBUS_OBJS) 1418CFLAGS += $(DBUS_CFLAGS) 1419LIBS += $(DBUS_LIBS) 1420 1421ifdef CONFIG_READLINE 1422OBJS_c += ../src/utils/edit_readline.o 1423LIBS_c += -lreadline -lncurses 1424else 1425ifdef CONFIG_WPA_CLI_EDIT 1426OBJS_c += ../src/utils/edit.o 1427else 1428OBJS_c += ../src/utils/edit_simple.o 1429endif 1430endif 1431 1432ifdef CONFIG_NATIVE_WINDOWS 1433CFLAGS += -DCONFIG_NATIVE_WINDOWS 1434LIBS += -lws2_32 -lgdi32 -lcrypt32 1435LIBS_c += -lws2_32 1436LIBS_p += -lws2_32 -lgdi32 1437ifeq ($(CONFIG_CRYPTO), cryptoapi) 1438LIBS_p += -lcrypt32 1439endif 1440endif 1441 1442ifdef CONFIG_NO_STDOUT_DEBUG 1443CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 1444ifndef CONFIG_CTRL_IFACE 1445CFLAGS += -DCONFIG_NO_WPA_MSG 1446endif 1447endif 1448 1449ifdef CONFIG_IPV6 1450# for eapol_test only 1451CFLAGS += -DCONFIG_IPV6 1452endif 1453 1454ifdef CONFIG_NO_LINUX_PACKET_SOCKET_WAR 1455CFLAGS += -DCONFIG_NO_LINUX_PACKET_SOCKET_WAR 1456endif 1457 1458ifdef NEED_BASE64 1459OBJS += ../src/utils/base64.o 1460endif 1461 1462ifdef NEED_SME 1463OBJS += sme.o 1464CFLAGS += -DCONFIG_SME 1465endif 1466 1467OBJS += ../src/common/ieee802_11_common.o 1468OBJS += ../src/common/hw_features_common.o 1469 1470ifdef NEED_EAP_COMMON 1471OBJS += ../src/eap_common/eap_common.o 1472endif 1473 1474ifndef CONFIG_MAIN 1475CONFIG_MAIN=main 1476endif 1477 1478ifdef CONFIG_DEBUG_SYSLOG 1479CFLAGS += -DCONFIG_DEBUG_SYSLOG 1480ifdef CONFIG_DEBUG_SYSLOG_FACILITY 1481CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)" 1482endif 1483endif 1484 1485ifdef CONFIG_DEBUG_LINUX_TRACING 1486CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING 1487endif 1488 1489ifdef CONFIG_DEBUG_FILE 1490CFLAGS += -DCONFIG_DEBUG_FILE 1491endif 1492 1493ifdef CONFIG_DELAYED_MIC_ERROR_REPORT 1494CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT 1495endif 1496 1497ifdef CONFIG_FIPS 1498CFLAGS += -DCONFIG_FIPS 1499ifneq ($(CONFIG_TLS), openssl) 1500$(error CONFIG_FIPS=y requires CONFIG_TLS=openssl) 1501endif 1502endif 1503 1504OBJS += $(SHA1OBJS) $(DESOBJS) 1505 1506OBJS_p += $(SHA1OBJS) 1507OBJS_p += $(SHA256OBJS) 1508OBJS_priv += $(SHA1OBJS) 1509 1510ifdef CONFIG_BGSCAN_SIMPLE 1511CFLAGS += -DCONFIG_BGSCAN_SIMPLE 1512OBJS += bgscan_simple.o 1513NEED_BGSCAN=y 1514endif 1515 1516ifdef CONFIG_BGSCAN_LEARN 1517CFLAGS += -DCONFIG_BGSCAN_LEARN 1518OBJS += bgscan_learn.o 1519NEED_BGSCAN=y 1520endif 1521 1522ifdef NEED_BGSCAN 1523CFLAGS += -DCONFIG_BGSCAN 1524OBJS += bgscan.o 1525endif 1526 1527ifdef CONFIG_AUTOSCAN_EXPONENTIAL 1528CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL 1529OBJS += autoscan_exponential.o 1530NEED_AUTOSCAN=y 1531endif 1532 1533ifdef CONFIG_AUTOSCAN_PERIODIC 1534CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC 1535OBJS += autoscan_periodic.o 1536NEED_AUTOSCAN=y 1537endif 1538 1539ifdef NEED_AUTOSCAN 1540CFLAGS += -DCONFIG_AUTOSCAN 1541OBJS += autoscan.o 1542endif 1543 1544ifdef CONFIG_EXT_PASSWORD_TEST 1545OBJS += ../src/utils/ext_password_test.o 1546CFLAGS += -DCONFIG_EXT_PASSWORD_TEST 1547NEED_EXT_PASSWORD=y 1548endif 1549 1550ifdef NEED_EXT_PASSWORD 1551OBJS += ../src/utils/ext_password.o 1552CFLAGS += -DCONFIG_EXT_PASSWORD 1553endif 1554 1555ifdef NEED_GAS 1556OBJS += ../src/common/gas.o 1557OBJS += gas_query.o 1558CFLAGS += -DCONFIG_GAS 1559NEED_OFFCHANNEL=y 1560endif 1561 1562ifdef NEED_OFFCHANNEL 1563OBJS += offchannel.o 1564CFLAGS += -DCONFIG_OFFCHANNEL 1565endif 1566 1567ifdef CONFIG_MODULE_TESTS 1568CFLAGS += -DCONFIG_MODULE_TESTS 1569OBJS += wpas_module_tests.o 1570OBJS += ../src/utils/utils_module_tests.o 1571OBJS += ../src/common/common_module_tests.o 1572OBJS += ../src/crypto/crypto_module_tests.o 1573ifdef CONFIG_WPS 1574OBJS += ../src/wps/wps_module_tests.o 1575endif 1576ifndef CONFIG_P2P 1577OBJS += ../src/utils/bitfield.o 1578endif 1579endif 1580 1581OBJS += ../src/drivers/driver_common.o 1582OBJS_priv += ../src/drivers/driver_common.o 1583 1584OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o 1585OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o 1586OBJS_t += ../src/radius/radius_client.o 1587OBJS_t += ../src/radius/radius.o 1588ifndef CONFIG_AP 1589OBJS_t += ../src/utils/ip_addr.o 1590endif 1591OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o 1592 1593OBJS_nfc := $(OBJS) $(OBJS_l2) nfc_pw_token.o 1594OBJS_nfc += $(OBJS_d) ../src/drivers/drivers.o 1595 1596OBJS += $(CONFIG_MAIN).o 1597 1598ifdef CONFIG_PRIVSEP 1599OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o 1600OBJS_priv += $(OBJS_l2) 1601OBJS_priv += ../src/utils/os_$(CONFIG_OS).o 1602OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o 1603OBJS_priv += ../src/utils/common.o 1604OBJS_priv += ../src/utils/wpa_debug.o 1605OBJS_priv += ../src/utils/wpabuf.o 1606OBJS_priv += wpa_priv.o 1607ifdef CONFIG_DRIVER_NL80211 1608OBJS_priv += ../src/common/ieee802_11_common.o 1609endif 1610OBJS += ../src/l2_packet/l2_packet_privsep.o 1611OBJS += ../src/drivers/driver_privsep.o 1612EXTRA_progs += wpa_priv 1613else 1614OBJS += $(OBJS_d) ../src/drivers/drivers.o 1615OBJS += $(OBJS_l2) 1616endif 1617 1618ifdef CONFIG_NDIS_EVENTS_INTEGRATED 1619CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED 1620OBJS += ../src/drivers/ndis_events.o 1621EXTRALIBS += -loleaut32 -lole32 -luuid 1622ifdef PLATFORMSDKLIB 1623EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib 1624else 1625EXTRALIBS += WbemUuid.Lib 1626endif 1627endif 1628 1629ifdef CONFIG_FST 1630CFLAGS += -DCONFIG_FST 1631ifdef CONFIG_FST_TEST 1632CFLAGS += -DCONFIG_FST_TEST 1633endif 1634FST_OBJS += ../src/fst/fst.o 1635FST_OBJS += ../src/fst/fst_session.o 1636FST_OBJS += ../src/fst/fst_iface.o 1637FST_OBJS += ../src/fst/fst_group.o 1638FST_OBJS += ../src/fst/fst_ctrl_aux.o 1639ifdef CONFIG_CTRL_IFACE 1640FST_OBJS += ../src/fst/fst_ctrl_iface.o 1641endif 1642OBJS += $(FST_OBJS) 1643OBJS_t += $(FST_OBJS) 1644OBJS_t2 += $(FST_OBJS) 1645OBJS_nfc += $(FST_OBJS) 1646endif 1647 1648ifndef LDO 1649LDO=$(CC) 1650endif 1651 1652Q=@ 1653E=echo 1654ifeq ($(V), 1) 1655Q= 1656E=true 1657endif 1658ifeq ($(QUIET), 1) 1659Q=@ 1660E=true 1661endif 1662 1663dynamic_eap_methods: $(EAPDYN) 1664 1665../src/drivers/build.wpa_supplicant: 1666 @if [ -f ../src/drivers/build.hostapd ]; then \ 1667 $(MAKE) -C ../src/drivers clean; \ 1668 fi 1669 @touch ../src/drivers/build.wpa_supplicant 1670 1671BCHECK=../src/drivers/build.wpa_supplicant 1672 1673wpa_priv: $(BCHECK) $(OBJS_priv) 1674 $(Q)$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS) 1675 @$(E) " LD " $@ 1676 1677$(OBJS_c) $(OBJS_t) $(OBJS_t2) $(OBJS) $(BCHECK) $(EXTRA_progs): .config 1678 1679wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs) 1680 $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) 1681 @$(E) " LD " $@ 1682 1683eapol_test: $(OBJS_t) 1684 $(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS) 1685 @$(E) " LD " $@ 1686 1687preauth_test: $(OBJS_t2) 1688 $(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS) 1689 @$(E) " LD " $@ 1690 1691wpa_passphrase: $(OBJS_p) 1692 $(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) 1693 @$(E) " LD " $@ 1694 1695wpa_cli: $(OBJS_c) 1696 $(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c) 1697 @$(E) " LD " $@ 1698 1699LIBCTRL += ../src/common/wpa_ctrl.o 1700LIBCTRL += ../src/utils/os_$(CONFIG_OS).o 1701LIBCTRL += ../src/utils/common.o 1702LIBCTRL += ../src/utils/wpa_debug.o 1703LIBCTRLSO += ../src/common/wpa_ctrl.c 1704LIBCTRLSO += ../src/utils/os_$(CONFIG_OS).c 1705LIBCTRLSO += ../src/utils/common.c 1706LIBCTRLSO += ../src/utils/wpa_debug.c 1707 1708libwpa_client.a: $(LIBCTRL) 1709 $(Q)rm -f $@ 1710 $(Q)$(AR) crs $@ $? 1711 @$(E) " AR " $@ 1712 1713libwpa_client.so: $(LIBCTRLSO) 1714 @$(E) " CC $@ ($^)" 1715 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -fPIC $^ 1716 1717libwpa_test1: libwpa_test.o libwpa_client.a 1718 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test1 libwpa_test.o libwpa_client.a $(LIBS_c) 1719 @$(E) " LD " $@ 1720 1721libwpa_test2: libwpa_test.o libwpa_client.so 1722 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test2 libwpa_test.o -L. -lwpa_client $(LIBS_c) 1723 @$(E) " LD " $@ 1724 1725nfc_pw_token: $(OBJS_nfc) 1726 $(Q)$(LDO) $(LDFLAGS) -o nfc_pw_token $(OBJS_nfc) $(LIBS) 1727 @$(E) " LD " $@ 1728 1729win_if_list: win_if_list.c 1730 $(Q)$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w) 1731 @$(E) " LD " $@ 1732 1733eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c 1734 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1735 -Deap_peer_psk_register=eap_peer_method_dynamic_init 1736 1737eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c 1738 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1739 -Deap_peer_pax_register=eap_peer_method_dynamic_init 1740 1741eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c 1742 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1743 -Deap_peer_sake_register=eap_peer_method_dynamic_init 1744 1745eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c 1746 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1747 -Deap_peer_wsc_register=eap_peer_method_dynamic_init 1748 1749eap_ikev2.so: ../src/eap_peer/eap_ikev2.c ../src/eap_peer/ikev2.c ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.c 1750 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1751 -Deap_peer_ikev2_register=eap_peer_method_dynamic_init 1752 1753eap_eke.so: ../src/eap_peer/eap_eke.c ../src/eap_common/eap_eke_common.c 1754 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1755 -Deap_peer_eke_register=eap_peer_method_dynamic_init 1756 1757%.so: %.c 1758 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \ 1759 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init 1760 1761ifdef CONFIG_CODE_COVERAGE 1762%.o: %.c 1763 @$(E) " CC " $< 1764 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<) 1765else 1766%.o: %.c 1767 $(Q)$(CC) -c -o $@ $(CFLAGS) $< 1768 @$(E) " CC " $< 1769endif 1770 1771%.service: %.service.in 1772 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ 1773 @$(E) " sed" $< 1774 1775%@.service: %.service.arg.in 1776 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ 1777 @$(E) " sed" $< 1778 1779wpa_supplicant.exe: wpa_supplicant 1780 mv -f $< $@ 1781wpa_cli.exe: wpa_cli 1782 mv -f $< $@ 1783wpa_passphrase.exe: wpa_passphrase 1784 mv -f $< $@ 1785win_if_list.exe: win_if_list 1786 mv -f $< $@ 1787eapol_test.exe: eapol_test 1788 mv -f $< $@ 1789 1790WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe 1791 1792windows-bin: $(WINALL) 1793 $(STRIP) $(WINALL) 1794 1795wpa_gui: 1796 @echo "wpa_gui has been removed - see wpa_gui-qt4 for replacement" 1797 1798wpa_gui-qt4/Makefile: 1799 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro 1800 1801wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts 1802 lrelease wpa_gui-qt4/wpa_gui.pro 1803 1804wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm 1805 $(MAKE) -C wpa_gui-qt4 1806 1807FIPSDIR=/usr/local/ssl/fips-2.0 1808FIPSLD=$(FIPSDIR)/bin/fipsld 1809fips: 1810 $(MAKE) CC=$(FIPSLD) FIPSLD_CC="$(CC)" 1811 1812lcov-html: wpa_supplicant.gcda 1813 lcov -c -d .. > lcov.info 1814 genhtml lcov.info --output-directory lcov-html 1815 1816clean: 1817 $(MAKE) -C ../src clean 1818 $(MAKE) -C dbus clean 1819 rm -f core *~ *.o *.d *.gcno *.gcda *.gcov 1820 rm -f eap_*.so $(ALL) $(WINALL) eapol_test preauth_test 1821 rm -f wpa_priv 1822 rm -f nfc_pw_token 1823 rm -f lcov.info 1824 rm -rf lcov-html 1825 rm -f libwpa_client.a 1826 rm -f libwpa_client.so 1827 rm -f libwpa_test1 libwpa_test2 1828 1829-include $(OBJS:%.o=%.d) 1830