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