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