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