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