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