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 -fno-inline -fno-optimize-sibling-calls 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 323NEED_OFFCHANNEL=y 324CFLAGS += -DCONFIG_NAN_USD 325endif 326 327ifdef CONFIG_OWE 328CFLAGS += -DCONFIG_OWE 329NEED_ECC=y 330NEED_HMAC_SHA256_KDF=y 331NEED_HMAC_SHA384_KDF=y 332NEED_HMAC_SHA512_KDF=y 333NEED_SHA384=y 334NEED_SHA512=y 335endif 336 337ifdef CONFIG_FILS 338CFLAGS += -DCONFIG_FILS 339NEED_SHA384=y 340NEED_AES_SIV=y 341ifdef CONFIG_FILS_SK_PFS 342CFLAGS += -DCONFIG_FILS_SK_PFS 343NEED_ECC=y 344endif 345endif 346 347ifdef CONFIG_MBO 348CONFIG_WNM=y 349endif 350 351ifdef CONFIG_BGSCAN_SIMPLE 352CONFIG_WNM=y 353endif 354 355ifdef CONFIG_WNM 356CFLAGS += -DCONFIG_WNM 357OBJS += wnm_sta.o 358endif 359 360ifdef CONFIG_TDLS 361CFLAGS += -DCONFIG_TDLS 362OBJS += ../src/rsn_supp/tdls.o 363endif 364 365ifdef CONFIG_TDLS_TESTING 366CFLAGS += -DCONFIG_TDLS_TESTING 367endif 368 369ifdef CONFIG_PMKSA_CACHE_EXTERNAL 370CFLAGS += -DCONFIG_PMKSA_CACHE_EXTERNAL 371endif 372 373ifndef CONFIG_NO_WPA 374OBJS += ../src/rsn_supp/wpa.o 375OBJS += ../src/rsn_supp/preauth.o 376OBJS += ../src/rsn_supp/wpa_ie.o 377OBJS += ../src/common/wpa_common.o 378NEED_AES=y 379NEED_SHA1=y 380NEED_MD5=y 381NEED_RC4=y 382else 383CFLAGS += -DCONFIG_NO_WPA 384ifeq ($(CONFIG_TLS), internal) 385NEED_SHA1=y 386NEED_MD5=y 387endif 388endif 389 390ifdef CONFIG_IBSS_RSN 391NEED_RSN_AUTHENTICATOR=y 392CFLAGS += -DCONFIG_IBSS_RSN 393CFLAGS += -DCONFIG_NO_VLAN 394OBJS += ibss_rsn.o 395endif 396 397ifdef CONFIG_MATCH_IFACE 398CFLAGS += -DCONFIG_MATCH_IFACE 399endif 400 401ifdef CONFIG_P2P 402OBJS += p2p_supplicant.o 403OBJS += p2p_supplicant_sd.o 404OBJS += ../src/p2p/p2p.o 405OBJS += ../src/p2p/p2p_utils.o 406OBJS += ../src/p2p/p2p_parse.o 407OBJS += ../src/p2p/p2p_build.o 408OBJS += ../src/p2p/p2p_go_neg.o 409OBJS += ../src/p2p/p2p_sd.o 410OBJS += ../src/p2p/p2p_pd.o 411OBJS += ../src/p2p/p2p_invitation.o 412OBJS += ../src/p2p/p2p_dev_disc.o 413OBJS += ../src/p2p/p2p_group.o 414OBJS += ../src/ap/p2p_hostapd.o 415CFLAGS += -DCONFIG_P2P 416NEED_GAS=y 417NEED_OFFCHANNEL=y 418CONFIG_WPS=y 419CONFIG_AP=y 420ifdef CONFIG_P2P_STRICT 421CFLAGS += -DCONFIG_P2P_STRICT 422endif 423ifdef CONFIG_WIFI_DISPLAY 424CFLAGS += -DCONFIG_WIFI_DISPLAY 425OBJS += wifi_display.o 426endif 427endif 428 429ifdef CONFIG_PASN 430CFLAGS += -DCONFIG_PASN 431CFLAGS += -DCONFIG_PTKSA_CACHE 432NEED_HMAC_SHA256_KDF=y 433NEED_HMAC_SHA384_KDF=y 434NEED_SHA256=y 435NEED_SHA384=y 436OBJS += ../src/pasn/pasn_initiator.o 437OBJS += ../src/pasn/pasn_common.o 438OBJS += pasn_supplicant.o 439endif 440 441ifdef CONFIG_HS20 442OBJS += hs20_supplicant.o 443CFLAGS += -DCONFIG_HS20 444CONFIG_INTERWORKING=y 445endif 446 447ifdef CONFIG_INTERWORKING 448OBJS += interworking.o 449CFLAGS += -DCONFIG_INTERWORKING 450NEED_GAS=y 451endif 452 453ifdef CONFIG_NO_ROAMING 454CFLAGS += -DCONFIG_NO_ROAMING 455endif 456 457ifdef CONFIG_OPENSC_ENGINE_PATH 458CFLAGS += -DCONFIG_OPENSC_ENGINE_PATH=\"$(CONFIG_OPENSC_ENGINE_PATH)\" 459endif 460 461ifdef CONFIG_NO_OPENSC_ENGINE_PATH 462CFLAGS += -DCONFIG_OPENSC_ENGINE_PATH=NULL 463endif 464 465ifdef CONFIG_PKCS11_ENGINE_PATH 466CFLAGS += -DCONFIG_PKCS11_ENGINE_PATH=\"$(CONFIG_PKCS11_ENGINE_PATH)\" 467endif 468 469ifdef CONFIG_NO_PKCS11_ENGINE_PATH 470CFLAGS += -DCONFIG_PKCS11_ENGINE_PATH=NULL 471endif 472 473ifdef CONFIG_PKCS11_MODULE_PATH 474CFLAGS += -DCONFIG_PKCS11_MODULE_PATH=\"$(CONFIG_PKCS11_MODULE_PATH)\" 475endif 476 477ifdef CONFIG_NO_PKCS11_MODULE_PATH 478CFLAGS += -DCONFIG_PKCS11_MODULE_PATH=NULL 479endif 480 481ifdef CONFIG_NO_LOAD_DYNAMIC_EAP 482CFLAGS += -DCONFIG_NO_LOAD_DYNAMIC_EAP 483endif 484 485ifdef CONFIG_NO_RRM 486CFLAGS += -DCONFIG_NO_RRM 487else 488OBJS += rrm.o 489ifdef CONFIG_AP 490OBJS += ../src/ap/rrm.o 491endif 492OBJS += op_classes.o 493endif 494 495ifdef CONFIG_NO_WMM_AC 496CFLAGS += -DCONFIG_NO_WMM_AC 497else 498OBJS += wmm_ac.o 499endif 500 501ifdef CONFIG_NO_ROBUST_AV 502CFLAGS += -DCONFIG_NO_ROBUST_AV 503else 504OBJS += robust_av.o 505endif 506 507include ../src/drivers/drivers.mak 508ifdef CONFIG_AP 509OBJS_d += $(DRV_BOTH_OBJS) 510CFLAGS += $(DRV_BOTH_CFLAGS) 511LDFLAGS += $(DRV_BOTH_LDFLAGS) 512LIBS += $(DRV_BOTH_LIBS) 513else 514NEED_AP_MLME= 515OBJS_d += $(DRV_WPA_OBJS) 516CFLAGS += $(DRV_WPA_CFLAGS) 517LDFLAGS += $(DRV_WPA_LDFLAGS) 518LIBS += $(DRV_WPA_LIBS) 519endif 520 521ifndef CONFIG_L2_PACKET 522CONFIG_L2_PACKET=linux 523endif 524 525OBJS_l2 += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o 526 527ifeq ($(CONFIG_L2_PACKET), pcap) 528ifdef CONFIG_WINPCAP 529CFLAGS += -DCONFIG_WINPCAP 530LIBS += -lwpcap -lpacket 531LIBS_w += -lwpcap 532else 533LIBS += -ldnet -lpcap 534endif 535endif 536 537ifeq ($(CONFIG_L2_PACKET), winpcap) 538LIBS += -lwpcap -lpacket 539LIBS_w += -lwpcap 540endif 541 542ifeq ($(CONFIG_L2_PACKET), freebsd) 543LIBS += -lpcap 544endif 545 546ifdef CONFIG_ERP 547CFLAGS += -DCONFIG_ERP 548NEED_HMAC_SHA256_KDF=y 549endif 550 551ifdef CONFIG_EAP_TLS 552# EAP-TLS 553ifeq ($(CONFIG_EAP_TLS), dyn) 554CFLAGS += -DEAP_TLS_DYNAMIC 555EAPDYN += eap_tls.so 556else 557CFLAGS += -DEAP_TLS 558OBJS += ../src/eap_peer/eap_tls.o 559endif 560TLS_FUNCS=y 561CONFIG_IEEE8021X_EAPOL=y 562ifdef CONFIG_EAP_TLSV1_3 563CFLAGS += -DEAP_TLSV1_3 564endif 565endif 566 567ifdef CONFIG_EAP_UNAUTH_TLS 568# EAP-UNAUTH-TLS 569CFLAGS += -DEAP_UNAUTH_TLS 570ifndef CONFIG_EAP_TLS 571OBJS += ../src/eap_peer/eap_tls.o 572TLS_FUNCS=y 573endif 574CONFIG_IEEE8021X_EAPOL=y 575endif 576 577ifdef CONFIG_EAP_PEAP 578# EAP-PEAP 579SRC_EAP_PEAP = ../src/eap_peer/eap_peap.c ../src/eap_common/eap_peap_common.c 580ifeq ($(CONFIG_EAP_PEAP), dyn) 581CFLAGS += -DEAP_PEAP_DYNAMIC 582EAPDYN += eap_peap.so 583else 584CFLAGS += -DEAP_PEAP 585OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PEAP)) 586endif 587TLS_FUNCS=y 588CONFIG_IEEE8021X_EAPOL=y 589endif 590 591ifdef CONFIG_EAP_TTLS 592# EAP-TTLS 593ifeq ($(CONFIG_EAP_TTLS), dyn) 594CFLAGS += -DEAP_TTLS_DYNAMIC 595EAPDYN += eap_ttls.so 596else 597CFLAGS += -DEAP_TTLS 598OBJS += ../src/eap_peer/eap_ttls.o 599endif 600TLS_FUNCS=y 601ifndef CONFIG_FIPS 602MS_FUNCS=y 603CHAP=y 604endif 605CONFIG_IEEE8021X_EAPOL=y 606endif 607 608ifdef CONFIG_EAP_MD5 609# EAP-MD5 610ifeq ($(CONFIG_EAP_MD5), dyn) 611CFLAGS += -DEAP_MD5_DYNAMIC 612EAPDYN += eap_md5.so 613else 614CFLAGS += -DEAP_MD5 615OBJS += ../src/eap_peer/eap_md5.o 616endif 617CHAP=y 618CONFIG_IEEE8021X_EAPOL=y 619endif 620 621# backwards compatibility for old spelling 622ifdef CONFIG_MSCHAPV2 623ifndef CONFIG_EAP_MSCHAPV2 624CONFIG_EAP_MSCHAPV2=y 625endif 626endif 627 628ifdef CONFIG_EAP_MSCHAPV2 629# EAP-MSCHAPv2 630SRC_EAP_MSCHAPV2 = ../src/eap_peer/eap_mschapv2.c ../src/eap_peer/mschapv2.c 631ifeq ($(CONFIG_EAP_MSCHAPV2), dyn) 632CFLAGS += -DEAP_MSCHAPv2_DYNAMIC 633EAPDYN += eap_mschapv2.so 634else 635CFLAGS += -DEAP_MSCHAPv2 636OBJS += $(patsubst %.c, %.o, $(SRC_EAP_MSCHAPV2)) 637endif 638MS_FUNCS=y 639CONFIG_IEEE8021X_EAPOL=y 640endif 641 642ifdef CONFIG_EAP_GTC 643# EAP-GTC 644ifeq ($(CONFIG_EAP_GTC), dyn) 645CFLAGS += -DEAP_GTC_DYNAMIC 646EAPDYN += eap_gtc.so 647else 648CFLAGS += -DEAP_GTC 649OBJS += ../src/eap_peer/eap_gtc.o 650endif 651CONFIG_IEEE8021X_EAPOL=y 652endif 653 654ifdef CONFIG_EAP_OTP 655# EAP-OTP 656ifeq ($(CONFIG_EAP_OTP), dyn) 657CFLAGS += -DEAP_OTP_DYNAMIC 658EAPDYN += eap_otp.so 659else 660CFLAGS += -DEAP_OTP 661OBJS += ../src/eap_peer/eap_otp.o 662endif 663CONFIG_IEEE8021X_EAPOL=y 664endif 665 666ifdef CONFIG_EAP_SIM 667# EAP-SIM 668ifeq ($(CONFIG_EAP_SIM), dyn) 669CFLAGS += -DEAP_SIM_DYNAMIC 670EAPDYN += eap_sim.so 671else 672CFLAGS += -DEAP_SIM 673OBJS += ../src/eap_peer/eap_sim.o 674endif 675CONFIG_IEEE8021X_EAPOL=y 676CONFIG_EAP_SIM_COMMON=y 677NEED_AES_CBC=y 678endif 679 680ifdef CONFIG_EAP_LEAP 681# EAP-LEAP 682ifeq ($(CONFIG_EAP_LEAP), dyn) 683CFLAGS += -DEAP_LEAP_DYNAMIC 684EAPDYN += eap_leap.so 685else 686CFLAGS += -DEAP_LEAP 687OBJS += ../src/eap_peer/eap_leap.o 688endif 689MS_FUNCS=y 690CONFIG_IEEE8021X_EAPOL=y 691endif 692 693ifdef CONFIG_EAP_PSK 694# EAP-PSK 695SRC_EAP_PSK = ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c 696ifeq ($(CONFIG_EAP_PSK), dyn) 697CFLAGS += -DEAP_PSK_DYNAMIC 698EAPDYN += eap_psk.so 699else 700CFLAGS += -DEAP_PSK 701OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PSK)) 702endif 703CONFIG_IEEE8021X_EAPOL=y 704NEED_AES=y 705NEED_AES_ENCBLOCK=y 706NEED_AES_EAX=y 707endif 708 709ifdef CONFIG_EAP_AKA 710# EAP-AKA 711ifeq ($(CONFIG_EAP_AKA), dyn) 712CFLAGS += -DEAP_AKA_DYNAMIC 713EAPDYN += eap_aka.so 714else 715CFLAGS += -DEAP_AKA 716OBJS += ../src/eap_peer/eap_aka.o 717endif 718CONFIG_IEEE8021X_EAPOL=y 719CONFIG_EAP_SIM_COMMON=y 720NEED_AES_CBC=y 721endif 722 723ifdef CONFIG_EAP_PROXY 724CFLAGS += -DCONFIG_EAP_PROXY 725OBJS += ../src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).o 726include eap_proxy_$(CONFIG_EAP_PROXY).mak 727CONFIG_IEEE8021X_EAPOL=y 728endif 729 730ifdef CONFIG_EAP_AKA_PRIME 731# EAP-AKA' 732ifeq ($(CONFIG_EAP_AKA_PRIME), dyn) 733CFLAGS += -DEAP_AKA_PRIME_DYNAMIC 734else 735CFLAGS += -DEAP_AKA_PRIME 736endif 737endif 738 739ifdef CONFIG_EAP_SIM_COMMON 740OBJS += ../src/eap_common/eap_sim_common.o 741NEED_AES=y 742NEED_FIPS186_2_PRF=y 743endif 744 745ifdef CONFIG_EAP_FAST 746# EAP-FAST 747SRC_EAP_FAST = ../src/eap_peer/eap_fast.c ../src/eap_peer/eap_fast_pac.c 748SRC_EAP_FAST += ../src/eap_common/eap_fast_common.c 749ifeq ($(CONFIG_EAP_FAST), dyn) 750CFLAGS += -DEAP_FAST_DYNAMIC 751EAPDYN += eap_fast.so 752else 753CFLAGS += -DEAP_FAST 754OBJS += $(patsubst %.c, %.o, $(SRC_EAP_FAST)) 755endif 756TLS_FUNCS=y 757CONFIG_IEEE8021X_EAPOL=y 758NEED_T_PRF=y 759endif 760 761ifdef CONFIG_EAP_TEAP 762# EAP-TEAP 763SRC_EAP_TEAP = ../src/eap_peer/eap_teap.c 764SRC_EAP_TEAP += ../src/eap_common/eap_teap_common.c 765ifeq ($(CONFIG_EAP_TEAP), dyn) 766CFLAGS += -DEAP_TEAP_DYNAMIC 767EAPDYN += eap_teap.so 768else 769CFLAGS += -DEAP_TEAP 770OBJS += $(patsubst %.c, %.o, $(SRC_EAP_TEAP)) 771endif 772TLS_FUNCS=y 773CONFIG_IEEE8021X_EAPOL=y 774NEED_T_PRF=y 775NEED_SHA384=y 776NEED_TLS_PRF_SHA256=y 777NEED_TLS_PRF_SHA384=y 778endif 779 780ifdef CONFIG_EAP_PAX 781# EAP-PAX 782SRC_EAP_PAX = ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c 783ifeq ($(CONFIG_EAP_PAX), dyn) 784CFLAGS += -DEAP_PAX_DYNAMIC 785EAPDYN += eap_pax.so 786else 787CFLAGS += -DEAP_PAX 788OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PAX)) 789endif 790CONFIG_IEEE8021X_EAPOL=y 791endif 792 793ifdef CONFIG_EAP_SAKE 794# EAP-SAKE 795SRC_EAP_SAKE = ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c 796ifeq ($(CONFIG_EAP_SAKE), dyn) 797CFLAGS += -DEAP_SAKE_DYNAMIC 798EAPDYN += eap_sake.so 799else 800CFLAGS += -DEAP_SAKE 801OBJS += $(patsubst %.c, %.o, $(SRC_EAP_SAKE)) 802endif 803CONFIG_IEEE8021X_EAPOL=y 804endif 805 806ifdef CONFIG_EAP_GPSK 807# EAP-GPSK 808SRC_EAP_GPSK = ../src/eap_peer/eap_gpsk.c ../src/eap_common/eap_gpsk_common.c 809ifeq ($(CONFIG_EAP_GPSK), dyn) 810CFLAGS += -DEAP_GPSK_DYNAMIC 811EAPDYN += eap_gpsk.so 812else 813CFLAGS += -DEAP_GPSK 814OBJS += $(patsubst %.c, %.o, $(SRC_EAP_GPSK)) 815endif 816CONFIG_IEEE8021X_EAPOL=y 817ifdef CONFIG_EAP_GPSK_SHA256 818CFLAGS += -DEAP_GPSK_SHA256 819endif 820endif 821 822ifdef CONFIG_EAP_PWD 823CFLAGS += -DEAP_PWD 824ifeq ($(CONFIG_TLS), wolfssl) 825CFLAGS += -DCONFIG_ECC 826endif 827OBJS += ../src/eap_peer/eap_pwd.o ../src/eap_common/eap_pwd_common.o 828CONFIG_IEEE8021X_EAPOL=y 829NEED_ECC=y 830NEED_DRAGONFLY=y 831ifndef CONFIG_FIPS 832MS_FUNCS=y 833endif 834endif 835 836ifdef CONFIG_EAP_EKE 837# EAP-EKE 838SRC_EAP_EKE = ../src/eap_peer/eap_eke.c ../src/eap_common/eap_eke_common.c 839ifeq ($(CONFIG_EAP_EKE), dyn) 840CFLAGS += -DEAP_EKE_DYNAMIC 841EAPDYN += eap_eke.so 842else 843CFLAGS += -DEAP_EKE 844OBJS += $(patsubst %.c, %.o, $(SRC_EAP_EKE)) 845endif 846CONFIG_IEEE8021X_EAPOL=y 847NEED_DH_GROUPS=y 848NEED_DH_GROUPS_ALL=y 849NEED_AES_CBC=y 850endif 851 852ifdef CONFIG_WPS 853# EAP-WSC 854CFLAGS += -DCONFIG_WPS -DEAP_WSC 855OBJS += wps_supplicant.o 856OBJS += ../src/utils/uuid.o 857OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o 858OBJS += ../src/wps/wps.o 859OBJS += ../src/wps/wps_common.o 860OBJS += ../src/wps/wps_attr_parse.o 861OBJS += ../src/wps/wps_attr_build.o 862OBJS += ../src/wps/wps_attr_process.o 863OBJS += ../src/wps/wps_dev_attr.o 864OBJS += ../src/wps/wps_enrollee.o 865OBJS += ../src/wps/wps_registrar.o 866CONFIG_IEEE8021X_EAPOL=y 867NEED_DH_GROUPS=y 868NEED_BASE64=y 869NEED_AES_CBC=y 870NEED_MODEXP=y 871 872ifdef CONFIG_WPS_NFC 873CFLAGS += -DCONFIG_WPS_NFC 874OBJS += ../src/wps/ndef.o 875NEED_WPS_OOB=y 876endif 877 878ifdef NEED_WPS_OOB 879CFLAGS += -DCONFIG_WPS_OOB 880endif 881 882ifdef CONFIG_WPS_ER 883CONFIG_WPS_UPNP=y 884CFLAGS += -DCONFIG_WPS_ER 885OBJS += ../src/wps/wps_er.o 886OBJS += ../src/wps/wps_er_ssdp.o 887endif 888 889ifdef CONFIG_WPS_UPNP 890CFLAGS += -DCONFIG_WPS_UPNP 891OBJS += ../src/wps/wps_upnp.o 892OBJS += ../src/wps/wps_upnp_ssdp.o 893OBJS += ../src/wps/wps_upnp_web.o 894OBJS += ../src/wps/wps_upnp_event.o 895OBJS += ../src/wps/wps_upnp_ap.o 896OBJS += ../src/wps/upnp_xml.o 897OBJS += ../src/wps/httpread.o 898OBJS += ../src/wps/http_client.o 899OBJS += ../src/wps/http_server.o 900endif 901 902ifdef CONFIG_WPS_STRICT 903CFLAGS += -DCONFIG_WPS_STRICT 904OBJS += ../src/wps/wps_validate.o 905endif 906 907ifdef CONFIG_WPS_TESTING 908CFLAGS += -DCONFIG_WPS_TESTING 909endif 910 911ifdef CONFIG_WPS_REG_DISABLE_OPEN 912CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN 913endif 914 915endif 916 917ifdef CONFIG_EAP_IKEV2 918# EAP-IKEv2 919SRC_EAP_IKEV2 = ../src/eap_peer/eap_ikev2.c 920SRC_EAP_IKEV2 += ../src/eap_peer/ikev2.c 921SRC_EAP_IKEV2 += ../src/eap_common/eap_ikev2_common.c 922SRC_EAP_IKEV2 += ../src/eap_common/ikev2_common.c 923ifeq ($(CONFIG_EAP_IKEV2), dyn) 924CFLAGS += -DEAP_IKEV2_DYNAMIC 925EAPDYN += eap_ikev2.so 926else 927CFLAGS += -DEAP_IKEV2 928OBJS += $(patsubst %.c, %.o, $(SRC_EAP_IKEV2)) 929endif 930CONFIG_IEEE8021X_EAPOL=y 931NEED_DH_GROUPS=y 932NEED_DH_GROUPS_ALL=y 933NEED_MODEXP=y 934NEED_CIPHER=y 935endif 936 937ifdef CONFIG_EAP_VENDOR_TEST 938ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn) 939CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC 940EAPDYN += eap_vendor_test.so 941else 942CFLAGS += -DEAP_VENDOR_TEST 943OBJS += ../src/eap_peer/eap_vendor_test.o 944endif 945CONFIG_IEEE8021X_EAPOL=y 946endif 947 948ifdef CONFIG_EAP_TNC 949# EAP-TNC 950CFLAGS += -DEAP_TNC 951OBJS += ../src/eap_peer/eap_tnc.o 952OBJS += ../src/eap_peer/tncc.o 953NEED_BASE64=y 954ifndef CONFIG_NATIVE_WINDOWS 955ifndef CONFIG_DRIVER_BSD 956LIBS += -ldl 957endif 958endif 959endif 960 961ifdef CONFIG_MACSEC 962CFLAGS += -DCONFIG_MACSEC 963CONFIG_IEEE8021X_EAPOL=y 964NEED_AES_ENCBLOCK=y 965NEED_AES_UNWRAP=y 966NEED_AES_WRAP=y 967OBJS += wpas_kay.o 968OBJS += ../src/pae/ieee802_1x_cp.o 969OBJS += ../src/pae/ieee802_1x_kay.o 970OBJS += ../src/pae/ieee802_1x_key.o 971OBJS += ../src/pae/ieee802_1x_secy_ops.o 972ifdef CONFIG_AP 973OBJS += ../src/ap/wpa_auth_kay.o 974endif 975endif 976 977ifdef CONFIG_IEEE8021X_EAPOL 978# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication) 979CFLAGS += -DIEEE8021X_EAPOL 980OBJS += ../src/eapol_supp/eapol_supp_sm.o 981OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o 982NEED_EAP_COMMON=y 983ifdef CONFIG_DYNAMIC_EAP_METHODS 984CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS 985LIBS += -ldl -rdynamic 986endif 987endif 988 989ifdef CONFIG_AP 990NEED_EAP_COMMON=y 991NEED_RSN_AUTHENTICATOR=y 992CFLAGS += -DCONFIG_AP 993OBJS += ap.o 994CFLAGS += -DCONFIG_NO_RADIUS 995CFLAGS += -DCONFIG_NO_ACCOUNTING 996CFLAGS += -DCONFIG_NO_VLAN 997OBJS += ../src/ap/hostapd.o 998OBJS += ../src/ap/wpa_auth_glue.o 999OBJS += ../src/ap/utils.o 1000OBJS += ../src/ap/authsrv.o 1001OBJS += ../src/ap/ap_config.o 1002OBJS += ../src/ap/sta_info.o 1003OBJS += ../src/ap/tkip_countermeasures.o 1004OBJS += ../src/ap/ap_mlme.o 1005OBJS += ../src/ap/ieee802_1x.o 1006OBJS += ../src/eapol_auth/eapol_auth_sm.o 1007OBJS += ../src/ap/ieee802_11_auth.o 1008OBJS += ../src/ap/ieee802_11_shared.o 1009OBJS += ../src/ap/drv_callbacks.o 1010OBJS += ../src/ap/ap_drv_ops.o 1011OBJS += ../src/ap/beacon.o 1012OBJS += ../src/ap/bss_load.o 1013OBJS += ../src/ap/eap_user_db.o 1014OBJS += ../src/ap/neighbor_db.o 1015OBJS += ../src/ap/ieee802_11_ht.o 1016ifdef CONFIG_IEEE80211AC 1017OBJS += ../src/ap/ieee802_11_vht.o 1018endif 1019ifdef CONFIG_IEEE80211AX 1020OBJS += ../src/ap/ieee802_11_he.o 1021endif 1022ifdef CONFIG_IEEE80211BE 1023OBJS += ../src/ap/ieee802_11_eht.o 1024endif 1025ifdef CONFIG_WNM_AP 1026CFLAGS += -DCONFIG_WNM_AP 1027OBJS += ../src/ap/wnm_ap.o 1028endif 1029ifdef CONFIG_MBO 1030OBJS += ../src/ap/mbo_ap.o 1031endif 1032ifdef CONFIG_FILS 1033OBJS += ../src/ap/fils_hlp.o 1034endif 1035ifdef CONFIG_CTRL_IFACE 1036OBJS += ../src/ap/ctrl_iface_ap.o 1037endif 1038 1039CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY 1040OBJS += ../src/eap_server/eap_server.o 1041OBJS += ../src/eap_server/eap_server_identity.o 1042OBJS += ../src/eap_server/eap_server_methods.o 1043 1044ifdef CONFIG_IEEE80211AC 1045CFLAGS += -DCONFIG_IEEE80211AC 1046endif 1047ifdef CONFIG_IEEE80211BE 1048CONFIG_IEEE80211AX=y 1049CFLAGS += -DCONFIG_IEEE80211BE 1050endif 1051ifdef CONFIG_IEEE80211AX 1052CFLAGS += -DCONFIG_IEEE80211AX 1053endif 1054 1055ifdef NEED_AP_MLME 1056OBJS += ../src/ap/wmm.o 1057OBJS += ../src/ap/ap_list.o 1058OBJS += ../src/ap/comeback_token.o 1059OBJS += ../src/pasn/pasn_responder.o 1060OBJS += ../src/ap/ieee802_11.o 1061OBJS += ../src/ap/hw_features.o 1062OBJS += ../src/ap/dfs.o 1063CFLAGS += -DNEED_AP_MLME 1064endif 1065ifdef CONFIG_WPS 1066CFLAGS += -DEAP_SERVER_WSC 1067OBJS += ../src/ap/wps_hostapd.o 1068OBJS += ../src/eap_server/eap_server_wsc.o 1069endif 1070ifdef CONFIG_DPP 1071OBJS += ../src/ap/dpp_hostapd.o 1072OBJS += ../src/ap/gas_query_ap.o 1073NEED_AP_GAS_SERV=y 1074endif 1075ifdef CONFIG_NAN_USD 1076OBJS += ../src/ap/nan_usd_ap.o 1077endif 1078ifdef CONFIG_INTERWORKING 1079NEED_AP_GAS_SERV=y 1080endif 1081ifdef NEED_AP_GAS_SERV 1082OBJS += ../src/ap/gas_serv.o 1083endif 1084ifdef CONFIG_HS20 1085OBJS += ../src/ap/hs20.o 1086endif 1087endif 1088 1089ifdef CONFIG_MBO 1090OBJS += mbo.o 1091CFLAGS += -DCONFIG_MBO 1092NEED_GAS=y 1093endif 1094 1095ifdef NEED_RSN_AUTHENTICATOR 1096CFLAGS += -DCONFIG_NO_RADIUS 1097NEED_AES_WRAP=y 1098OBJS += ../src/ap/wpa_auth.o 1099OBJS += ../src/ap/wpa_auth_ie.o 1100OBJS += ../src/ap/pmksa_cache_auth.o 1101endif 1102 1103ifdef CONFIG_ACS 1104CFLAGS += -DCONFIG_ACS 1105OBJS += ../src/ap/acs.o 1106LIBS += -lm 1107endif 1108 1109ifdef CONFIG_PCSC 1110# PC/SC interface for smartcards (USIM, GSM SIM) 1111CFLAGS += -DPCSC_FUNCS 1112OBJS += ../src/utils/pcsc_funcs.o 1113ifdef CONFIG_NATIVE_WINDOWS 1114#Once MinGW gets support for WinScard, -lwinscard could be used instead of the 1115#dynamic symbol loading that is now used in pcsc_funcs.c 1116#LIBS += -lwinscard 1117CFLAGS += -I/usr/include/PCSC 1118else 1119ifdef CONFIG_OSX 1120LIBS += -framework PCSC 1121CFLAGS += -I/usr/include/PCSC 1122else 1123LIBS += $(shell $(PKG_CONFIG) --libs libpcsclite) 1124CFLAGS += $(shell $(PKG_CONFIG) --cflags libpcsclite) 1125endif 1126endif 1127endif 1128 1129ifdef CONFIG_SIM_SIMULATOR 1130CFLAGS += -DCONFIG_SIM_SIMULATOR 1131NEED_MILENAGE=y 1132endif 1133 1134ifdef CONFIG_USIM_SIMULATOR 1135CFLAGS += -DCONFIG_USIM_SIMULATOR 1136NEED_MILENAGE=y 1137endif 1138 1139ifdef NEED_MILENAGE 1140OBJS += ../src/crypto/milenage.o 1141NEED_AES_ENCBLOCK=y 1142endif 1143 1144ifdef CONFIG_PKCS12 1145CFLAGS += -DPKCS12_FUNCS 1146endif 1147 1148ifdef CONFIG_SMARTCARD 1149CFLAGS += -DCONFIG_SMARTCARD 1150endif 1151 1152ifdef NEED_DRAGONFLY 1153OBJS += ../src/common/dragonfly.o 1154endif 1155 1156ifdef MS_FUNCS 1157OBJS += ../src/crypto/ms_funcs.o 1158NEED_DES=y 1159NEED_MD4=y 1160endif 1161 1162ifdef CHAP 1163OBJS += ../src/eap_common/chap.o 1164endif 1165 1166ifdef TLS_FUNCS 1167NEED_DES=y 1168# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, EAP_FAST, and 1169# EAP_TEAP) 1170OBJS += ../src/eap_peer/eap_tls_common.o 1171ifndef CONFIG_FIPS 1172NEED_TLS_PRF=y 1173NEED_SHA1=y 1174NEED_MD5=y 1175endif 1176endif 1177 1178ifndef CONFIG_TLS 1179CONFIG_TLS=openssl 1180endif 1181 1182ifdef CONFIG_TLSV11 1183CFLAGS += -DCONFIG_TLSV11 1184endif 1185 1186ifdef CONFIG_TLSV12 1187CFLAGS += -DCONFIG_TLSV12 1188endif 1189 1190ifdef CONFIG_RADIUS_TLS 1191TLS_FUNCS=y 1192endif 1193 1194ifeq ($(CONFIG_TLS), wolfssl) 1195CFLAGS += -DCRYPTO_RSA_OAEP_SHA256 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