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