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 11ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),) 12 CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) := y 13else 14 CONFIG_DRIVER_TEST := y 15endif 16 17include $(LOCAL_PATH)/android.config 18 19# To ignore possible wrong network configurations 20L_CFLAGS = -DWPA_IGNORE_CONFIG_ERRORS 21 22L_CFLAGS += -DVERSION_STR_POSTFIX=\"-$(PLATFORM_VERSION)\" 23 24# Set Android log name 25L_CFLAGS += -DANDROID_LOG_NAME=\"wpa_supplicant\" 26 27# Disable roaming in wpa_supplicant 28ifdef CONFIG_NO_ROAMING 29L_CFLAGS += -DCONFIG_NO_ROAMING 30endif 31 32ifeq ($(BOARD_WLAN_DEVICE), bcmdhd) 33L_CFLAGS += -DANDROID_P2P 34L_CFLAGS += -DP2P_CONCURRENT_SEARCH_DELAY=0 35endif 36 37ifeq ($(BOARD_WLAN_DEVICE), qcwcn) 38L_CFLAGS += -DANDROID_P2P 39endif 40 41ifeq ($(BOARD_WLAN_DEVICE), mrvl) 42L_CFLAGS += -DANDROID_P2P 43endif 44 45# Use Android specific directory for control interface sockets 46L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\" 47L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/system/wpa_supplicant\" 48 49# To force sizeof(enum) = 4 50ifeq ($(TARGET_ARCH),arm) 51L_CFLAGS += -mabi=aapcs-linux 52endif 53 54# To allow non-ASCII characters in SSID 55L_CFLAGS += -DWPA_UNICODE_SSID 56 57INCLUDES = $(LOCAL_PATH) 58INCLUDES += $(LOCAL_PATH)/src 59INCLUDES += $(LOCAL_PATH)/src/common 60# INCLUDES += $(LOCAL_PATH)/src/crypto # To force proper includes 61INCLUDES += $(LOCAL_PATH)/src/drivers 62INCLUDES += $(LOCAL_PATH)/src/eap_common 63INCLUDES += $(LOCAL_PATH)/src/eapol_supp 64INCLUDES += $(LOCAL_PATH)/src/eap_peer 65INCLUDES += $(LOCAL_PATH)/src/eap_server 66INCLUDES += $(LOCAL_PATH)/src/hlr_auc_gw 67INCLUDES += $(LOCAL_PATH)/src/l2_packet 68INCLUDES += $(LOCAL_PATH)/src/radius 69INCLUDES += $(LOCAL_PATH)/src/rsn_supp 70INCLUDES += $(LOCAL_PATH)/src/tls 71INCLUDES += $(LOCAL_PATH)/src/utils 72INCLUDES += $(LOCAL_PATH)/src/wps 73INCLUDES += external/openssl/include 74INCLUDES += system/security/keystore 75ifdef CONFIG_DRIVER_NL80211 76INCLUDES += external/libnl-headers 77endif 78 79ifdef CONFIG_FIPS 80CONFIG_NO_RANDOM_POOL= 81CONFIG_OPENSSL_CMAC=y 82endif 83 84OBJS = config.c 85OBJS += notify.c 86OBJS += bss.c 87OBJS += eap_register.c 88OBJS += src/utils/common.c 89OBJS += src/utils/wpa_debug.c 90OBJS += src/utils/wpabuf.c 91OBJS_p = wpa_passphrase.c 92OBJS_p += src/utils/common.c 93OBJS_p += src/utils/wpa_debug.c 94OBJS_p += src/utils/wpabuf.c 95OBJS_c = wpa_cli.c src/common/wpa_ctrl.c 96OBJS_c += src/utils/wpa_debug.c 97OBJS_c += src/utils/common.c 98OBJS_d = 99OBJS_priv = 100 101ifndef CONFIG_OS 102ifdef CONFIG_NATIVE_WINDOWS 103CONFIG_OS=win32 104else 105CONFIG_OS=unix 106endif 107endif 108 109ifeq ($(CONFIG_OS), internal) 110L_CFLAGS += -DOS_NO_C_LIB_DEFINES 111endif 112 113OBJS += src/utils/os_$(CONFIG_OS).c 114OBJS_p += src/utils/os_$(CONFIG_OS).c 115OBJS_c += src/utils/os_$(CONFIG_OS).c 116 117ifdef CONFIG_WPA_TRACE 118L_CFLAGS += -DWPA_TRACE 119OBJS += src/utils/trace.c 120OBJS_p += src/utils/trace.c 121OBJS_c += src/utils/trace.c 122LDFLAGS += -rdynamic 123L_CFLAGS += -funwind-tables 124ifdef CONFIG_WPA_TRACE_BFD 125L_CFLAGS += -DWPA_TRACE_BFD 126LIBS += -lbfd 127LIBS_p += -lbfd 128LIBS_c += -lbfd 129endif 130endif 131 132ifndef CONFIG_ELOOP 133CONFIG_ELOOP=eloop 134endif 135OBJS += src/utils/$(CONFIG_ELOOP).c 136OBJS_c += src/utils/$(CONFIG_ELOOP).c 137 138ifdef CONFIG_ELOOP_POLL 139L_CFLAGS += -DCONFIG_ELOOP_POLL 140endif 141 142ifdef CONFIG_EAPOL_TEST 143L_CFLAGS += -Werror -DEAPOL_TEST 144endif 145 146ifdef CONFIG_HT_OVERRIDES 147L_CFLAGS += -DCONFIG_HT_OVERRIDES 148endif 149 150ifdef CONFIG_VHT_OVERRIDES 151L_CFLAGS += -DCONFIG_VHT_OVERRIDES 152endif 153 154ifndef CONFIG_BACKEND 155CONFIG_BACKEND=file 156endif 157 158ifeq ($(CONFIG_BACKEND), file) 159OBJS += config_file.c 160ifndef CONFIG_NO_CONFIG_BLOBS 161NEED_BASE64=y 162endif 163L_CFLAGS += -DCONFIG_BACKEND_FILE 164endif 165 166ifeq ($(CONFIG_BACKEND), winreg) 167OBJS += config_winreg.c 168endif 169 170ifeq ($(CONFIG_BACKEND), none) 171OBJS += config_none.c 172endif 173 174ifdef CONFIG_NO_CONFIG_WRITE 175L_CFLAGS += -DCONFIG_NO_CONFIG_WRITE 176endif 177 178ifdef CONFIG_NO_CONFIG_BLOBS 179L_CFLAGS += -DCONFIG_NO_CONFIG_BLOBS 180endif 181 182ifdef CONFIG_NO_SCAN_PROCESSING 183L_CFLAGS += -DCONFIG_NO_SCAN_PROCESSING 184endif 185 186ifdef CONFIG_IEEE80211W 187L_CFLAGS += -DCONFIG_IEEE80211W 188NEED_SHA256=y 189NEED_AES_OMAC1=y 190endif 191 192ifdef CONFIG_IEEE80211R 193L_CFLAGS += -DCONFIG_IEEE80211R 194OBJS += src/rsn_supp/wpa_ft.c 195NEED_80211_COMMON=y 196NEED_SHA256=y 197NEED_AES_OMAC1=y 198endif 199 200ifdef CONFIG_SAE 201L_CFLAGS += -DCONFIG_SAE 202OBJS += src/common/sae.c 203NEED_ECC=y 204NEED_DH_GROUPS=y 205endif 206 207ifdef CONFIG_WNM 208L_CFLAGS += -DCONFIG_WNM 209OBJS += wnm_sta.c 210endif 211 212ifdef CONFIG_TDLS 213L_CFLAGS += -DCONFIG_TDLS 214OBJS += src/rsn_supp/tdls.c 215NEED_SHA256=y 216NEED_AES_OMAC1=y 217endif 218 219ifdef CONFIG_TDLS_TESTING 220L_CFLAGS += -DCONFIG_TDLS_TESTING 221endif 222 223ifdef CONFIG_PEERKEY 224L_CFLAGS += -DCONFIG_PEERKEY 225endif 226 227ifndef CONFIG_NO_WPA 228OBJS += src/rsn_supp/wpa.c 229OBJS += src/rsn_supp/preauth.c 230OBJS += src/rsn_supp/pmksa_cache.c 231OBJS += src/rsn_supp/peerkey.c 232OBJS += src/rsn_supp/wpa_ie.c 233OBJS += src/common/wpa_common.c 234NEED_AES=y 235NEED_SHA1=y 236NEED_MD5=y 237NEED_RC4=y 238else 239L_CFLAGS += -DCONFIG_NO_WPA 240endif 241 242ifdef CONFIG_IBSS_RSN 243NEED_RSN_AUTHENTICATOR=y 244L_CFLAGS += -DCONFIG_IBSS_RSN 245OBJS += ibss_rsn.c 246endif 247 248ifdef CONFIG_P2P 249OBJS += p2p_supplicant.c 250OBJS += src/p2p/p2p.c 251OBJS += src/p2p/p2p_utils.c 252OBJS += src/p2p/p2p_parse.c 253OBJS += src/p2p/p2p_build.c 254OBJS += src/p2p/p2p_go_neg.c 255OBJS += src/p2p/p2p_sd.c 256OBJS += src/p2p/p2p_pd.c 257OBJS += src/p2p/p2p_invitation.c 258OBJS += src/p2p/p2p_dev_disc.c 259OBJS += src/p2p/p2p_group.c 260OBJS += src/ap/p2p_hostapd.c 261L_CFLAGS += -DCONFIG_P2P 262NEED_GAS=y 263NEED_OFFCHANNEL=y 264NEED_80211_COMMON=y 265CONFIG_WPS=y 266CONFIG_AP=y 267ifdef CONFIG_P2P_STRICT 268L_CFLAGS += -DCONFIG_P2P_STRICT 269endif 270endif 271 272ifdef CONFIG_WIFI_DISPLAY 273L_CFLAGS += -DCONFIG_WIFI_DISPLAY 274OBJS += wifi_display.c 275endif 276 277ifdef CONFIG_HS20 278OBJS += hs20_supplicant.c 279L_CFLAGS += -DCONFIG_HS20 280CONFIG_INTERWORKING=y 281endif 282 283ifdef CONFIG_INTERWORKING 284OBJS += interworking.c 285L_CFLAGS += -DCONFIG_INTERWORKING 286NEED_GAS=y 287endif 288 289include $(LOCAL_PATH)/src/drivers/drivers.mk 290 291ifdef CONFIG_AP 292OBJS_d += $(DRV_BOTH_OBJS) 293L_CFLAGS += $(DRV_BOTH_CFLAGS) 294LDFLAGS += $(DRV_BOTH_LDFLAGS) 295LIBS += $(DRV_BOTH_LIBS) 296else 297NEED_AP_MLME= 298OBJS_d += $(DRV_WPA_OBJS) 299L_CFLAGS += $(DRV_WPA_CFLAGS) 300LDFLAGS += $(DRV_WPA_LDFLAGS) 301LIBS += $(DRV_WPA_LIBS) 302endif 303 304ifndef CONFIG_L2_PACKET 305CONFIG_L2_PACKET=linux 306endif 307 308OBJS_l2 += src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).c 309 310ifeq ($(CONFIG_L2_PACKET), pcap) 311ifdef CONFIG_WINPCAP 312L_CFLAGS += -DCONFIG_WINPCAP 313LIBS += -lwpcap -lpacket 314LIBS_w += -lwpcap 315else 316LIBS += -ldnet -lpcap 317endif 318endif 319 320ifeq ($(CONFIG_L2_PACKET), winpcap) 321LIBS += -lwpcap -lpacket 322LIBS_w += -lwpcap 323endif 324 325ifeq ($(CONFIG_L2_PACKET), freebsd) 326LIBS += -lpcap 327endif 328 329ifdef CONFIG_EAP_TLS 330# EAP-TLS 331ifeq ($(CONFIG_EAP_TLS), dyn) 332L_CFLAGS += -DEAP_TLS_DYNAMIC 333EAPDYN += src/eap_peer/eap_tls.so 334else 335L_CFLAGS += -DEAP_TLS 336OBJS += src/eap_peer/eap_tls.c 337OBJS_h += src/eap_server/eap_server_tls.c 338endif 339TLS_FUNCS=y 340CONFIG_IEEE8021X_EAPOL=y 341endif 342 343ifdef CONFIG_EAP_UNAUTH_TLS 344# EAP-UNAUTH-TLS 345L_CFLAGS += -DEAP_UNAUTH_TLS 346ifndef CONFIG_EAP_UNAUTH_TLS 347OBJS += src/eap_peer/eap_tls.c 348OBJS_h += src/eap_server/eap_server_tls.c 349TLS_FUNCS=y 350endif 351CONFIG_IEEE8021X_EAPOL=y 352endif 353 354ifdef CONFIG_EAP_PEAP 355# EAP-PEAP 356ifeq ($(CONFIG_EAP_PEAP), dyn) 357L_CFLAGS += -DEAP_PEAP_DYNAMIC 358EAPDYN += src/eap_peer/eap_peap.so 359else 360L_CFLAGS += -DEAP_PEAP 361OBJS += src/eap_peer/eap_peap.c 362OBJS += src/eap_common/eap_peap_common.c 363OBJS_h += src/eap_server/eap_server_peap.c 364endif 365TLS_FUNCS=y 366CONFIG_IEEE8021X_EAPOL=y 367endif 368 369ifdef CONFIG_EAP_TTLS 370# EAP-TTLS 371ifeq ($(CONFIG_EAP_TTLS), dyn) 372L_CFLAGS += -DEAP_TTLS_DYNAMIC 373EAPDYN += src/eap_peer/eap_ttls.so 374else 375L_CFLAGS += -DEAP_TTLS 376OBJS += src/eap_peer/eap_ttls.c 377OBJS_h += src/eap_server/eap_server_ttls.c 378endif 379MS_FUNCS=y 380TLS_FUNCS=y 381CHAP=y 382CONFIG_IEEE8021X_EAPOL=y 383endif 384 385ifdef CONFIG_EAP_MD5 386# EAP-MD5 387ifeq ($(CONFIG_EAP_MD5), dyn) 388L_CFLAGS += -DEAP_MD5_DYNAMIC 389EAPDYN += src/eap_peer/eap_md5.so 390else 391L_CFLAGS += -DEAP_MD5 392OBJS += src/eap_peer/eap_md5.c 393OBJS_h += src/eap_server/eap_server_md5.c 394endif 395CHAP=y 396CONFIG_IEEE8021X_EAPOL=y 397endif 398 399# backwards compatibility for old spelling 400ifdef CONFIG_MSCHAPV2 401ifndef CONFIG_EAP_MSCHAPV2 402CONFIG_EAP_MSCHAPV2=y 403endif 404endif 405 406ifdef CONFIG_EAP_MSCHAPV2 407# EAP-MSCHAPv2 408ifeq ($(CONFIG_EAP_MSCHAPV2), dyn) 409L_CFLAGS += -DEAP_MSCHAPv2_DYNAMIC 410EAPDYN += src/eap_peer/eap_mschapv2.so 411EAPDYN += src/eap_peer/mschapv2.so 412else 413L_CFLAGS += -DEAP_MSCHAPv2 414OBJS += src/eap_peer/eap_mschapv2.c 415OBJS += src/eap_peer/mschapv2.c 416OBJS_h += src/eap_server/eap_server_mschapv2.c 417endif 418MS_FUNCS=y 419CONFIG_IEEE8021X_EAPOL=y 420endif 421 422ifdef CONFIG_EAP_GTC 423# EAP-GTC 424ifeq ($(CONFIG_EAP_GTC), dyn) 425L_CFLAGS += -DEAP_GTC_DYNAMIC 426EAPDYN += src/eap_peer/eap_gtc.so 427else 428L_CFLAGS += -DEAP_GTC 429OBJS += src/eap_peer/eap_gtc.c 430OBJS_h += src/eap_server/eap_server_gtc.c 431endif 432CONFIG_IEEE8021X_EAPOL=y 433endif 434 435ifdef CONFIG_EAP_OTP 436# EAP-OTP 437ifeq ($(CONFIG_EAP_OTP), dyn) 438L_CFLAGS += -DEAP_OTP_DYNAMIC 439EAPDYN += src/eap_peer/eap_otp.so 440else 441L_CFLAGS += -DEAP_OTP 442OBJS += src/eap_peer/eap_otp.c 443endif 444CONFIG_IEEE8021X_EAPOL=y 445endif 446 447ifdef CONFIG_EAP_SIM 448# EAP-SIM 449ifeq ($(CONFIG_EAP_SIM), dyn) 450L_CFLAGS += -DEAP_SIM_DYNAMIC 451EAPDYN += src/eap_peer/eap_sim.so 452else 453L_CFLAGS += -DEAP_SIM 454OBJS += src/eap_peer/eap_sim.c 455OBJS_h += src/eap_server/eap_server_sim.c 456endif 457CONFIG_IEEE8021X_EAPOL=y 458CONFIG_EAP_SIM_COMMON=y 459NEED_AES_CBC=y 460endif 461 462ifdef CONFIG_EAP_LEAP 463# EAP-LEAP 464ifeq ($(CONFIG_EAP_LEAP), dyn) 465L_CFLAGS += -DEAP_LEAP_DYNAMIC 466EAPDYN += src/eap_peer/eap_leap.so 467else 468L_CFLAGS += -DEAP_LEAP 469OBJS += src/eap_peer/eap_leap.c 470endif 471MS_FUNCS=y 472CONFIG_IEEE8021X_EAPOL=y 473endif 474 475ifdef CONFIG_EAP_PSK 476# EAP-PSK 477ifeq ($(CONFIG_EAP_PSK), dyn) 478L_CFLAGS += -DEAP_PSK_DYNAMIC 479EAPDYN += src/eap_peer/eap_psk.so 480else 481L_CFLAGS += -DEAP_PSK 482OBJS += src/eap_peer/eap_psk.c src/eap_common/eap_psk_common.c 483OBJS_h += src/eap_server/eap_server_psk.c 484endif 485CONFIG_IEEE8021X_EAPOL=y 486NEED_AES=y 487NEED_AES_OMAC1=y 488NEED_AES_ENCBLOCK=y 489NEED_AES_EAX=y 490endif 491 492ifdef CONFIG_EAP_AKA 493# EAP-AKA 494ifeq ($(CONFIG_EAP_AKA), dyn) 495L_CFLAGS += -DEAP_AKA_DYNAMIC 496EAPDYN += src/eap_peer/eap_aka.so 497else 498L_CFLAGS += -DEAP_AKA 499OBJS += src/eap_peer/eap_aka.c 500OBJS_h += src/eap_server/eap_server_aka.c 501endif 502CONFIG_IEEE8021X_EAPOL=y 503CONFIG_EAP_SIM_COMMON=y 504NEED_AES_CBC=y 505endif 506 507ifdef CONFIG_EAP_PROXY 508L_CFLAGS += -DCONFIG_EAP_PROXY 509OBJS += src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).c 510include eap_proxy_$(CONFIG_EAP_PROXY).mk 511CONFIG_IEEE8021X_EAPOL=y 512endif 513 514ifdef CONFIG_EAP_AKA_PRIME 515# EAP-AKA' 516ifeq ($(CONFIG_EAP_AKA_PRIME), dyn) 517L_CFLAGS += -DEAP_AKA_PRIME_DYNAMIC 518else 519L_CFLAGS += -DEAP_AKA_PRIME 520endif 521NEED_SHA256=y 522endif 523 524ifdef CONFIG_EAP_SIM_COMMON 525OBJS += src/eap_common/eap_sim_common.c 526OBJS_h += src/eap_server/eap_sim_db.c 527NEED_AES=y 528NEED_FIPS186_2_PRF=y 529endif 530 531ifdef CONFIG_EAP_FAST 532# EAP-FAST 533ifeq ($(CONFIG_EAP_FAST), dyn) 534L_CFLAGS += -DEAP_FAST_DYNAMIC 535EAPDYN += src/eap_peer/eap_fast.so 536EAPDYN += src/eap_common/eap_fast_common.c 537else 538L_CFLAGS += -DEAP_FAST 539OBJS += src/eap_peer/eap_fast.c src/eap_peer/eap_fast_pac.c 540OBJS += src/eap_common/eap_fast_common.c 541OBJS_h += src/eap_server/eap_server_fast.c 542endif 543TLS_FUNCS=y 544CONFIG_IEEE8021X_EAPOL=y 545NEED_T_PRF=y 546endif 547 548ifdef CONFIG_EAP_PAX 549# EAP-PAX 550ifeq ($(CONFIG_EAP_PAX), dyn) 551L_CFLAGS += -DEAP_PAX_DYNAMIC 552EAPDYN += src/eap_peer/eap_pax.so 553else 554L_CFLAGS += -DEAP_PAX 555OBJS += src/eap_peer/eap_pax.c src/eap_common/eap_pax_common.c 556OBJS_h += src/eap_server/eap_server_pax.c 557endif 558CONFIG_IEEE8021X_EAPOL=y 559endif 560 561ifdef CONFIG_EAP_SAKE 562# EAP-SAKE 563ifeq ($(CONFIG_EAP_SAKE), dyn) 564L_CFLAGS += -DEAP_SAKE_DYNAMIC 565EAPDYN += src/eap_peer/eap_sake.so 566else 567L_CFLAGS += -DEAP_SAKE 568OBJS += src/eap_peer/eap_sake.c src/eap_common/eap_sake_common.c 569OBJS_h += src/eap_server/eap_server_sake.c 570endif 571CONFIG_IEEE8021X_EAPOL=y 572endif 573 574ifdef CONFIG_EAP_GPSK 575# EAP-GPSK 576ifeq ($(CONFIG_EAP_GPSK), dyn) 577L_CFLAGS += -DEAP_GPSK_DYNAMIC 578EAPDYN += src/eap_peer/eap_gpsk.so 579else 580L_CFLAGS += -DEAP_GPSK 581OBJS += src/eap_peer/eap_gpsk.c src/eap_common/eap_gpsk_common.c 582OBJS_h += src/eap_server/eap_server_gpsk.c 583endif 584CONFIG_IEEE8021X_EAPOL=y 585ifdef CONFIG_EAP_GPSK_SHA256 586L_CFLAGS += -DEAP_GPSK_SHA256 587endif 588NEED_SHA256=y 589NEED_AES_OMAC1=y 590endif 591 592ifdef CONFIG_EAP_PWD 593L_CFLAGS += -DEAP_PWD 594OBJS += src/eap_peer/eap_pwd.c src/eap_common/eap_pwd_common.c 595OBJS_h += src/eap_server/eap_server_pwd.c 596CONFIG_IEEE8021X_EAPOL=y 597NEED_SHA256=y 598endif 599 600ifdef CONFIG_EAP_EKE 601# EAP-EKE 602ifeq ($(CONFIG_EAP_EKE), dyn) 603L_CFLAGS += -DEAP_EKE_DYNAMIC 604EAPDYN += src/eap_peer/eap_eke.so 605else 606L_CFLAGS += -DEAP_EKE 607OBJS += src/eap_peer/eap_eke.c src/eap_common/eap_eke_common.c 608OBJS_h += src/eap_server/eap_server_eke.c 609endif 610CONFIG_IEEE8021X_EAPOL=y 611NEED_DH_GROUPS=y 612NEED_DH_GROUPS_ALL=y 613NEED_SHA256=y 614endif 615 616ifdef CONFIG_WPS 617ifdef CONFIG_WPS2 618L_CFLAGS += -DCONFIG_WPS2 619endif 620 621# EAP-WSC 622L_CFLAGS += -DCONFIG_WPS -DEAP_WSC 623OBJS += wps_supplicant.c 624OBJS += src/utils/uuid.c 625OBJS += src/eap_peer/eap_wsc.c src/eap_common/eap_wsc_common.c 626OBJS += src/wps/wps.c 627OBJS += src/wps/wps_common.c 628OBJS += src/wps/wps_attr_parse.c 629OBJS += src/wps/wps_attr_build.c 630OBJS += src/wps/wps_attr_process.c 631OBJS += src/wps/wps_dev_attr.c 632OBJS += src/wps/wps_enrollee.c 633OBJS += src/wps/wps_registrar.c 634OBJS_h += src/eap_server/eap_server_wsc.c 635CONFIG_IEEE8021X_EAPOL=y 636NEED_DH_GROUPS=y 637NEED_SHA256=y 638NEED_BASE64=y 639NEED_80211_COMMON=y 640NEED_AES_CBC=y 641NEED_MODEXP=y 642 643ifdef CONFIG_WPS_NFC 644L_CFLAGS += -DCONFIG_WPS_NFC 645OBJS += src/wps/ndef.c 646NEED_WPS_OOB=y 647endif 648 649ifdef NEED_WPS_OOB 650L_CFLAGS += -DCONFIG_WPS_OOB 651endif 652 653ifdef CONFIG_WPS_ER 654CONFIG_WPS_UPNP=y 655L_CFLAGS += -DCONFIG_WPS_ER 656OBJS += src/wps/wps_er.c 657OBJS += src/wps/wps_er_ssdp.c 658endif 659 660ifdef CONFIG_WPS_UPNP 661L_CFLAGS += -DCONFIG_WPS_UPNP 662OBJS += src/wps/wps_upnp.c 663OBJS += src/wps/wps_upnp_ssdp.c 664OBJS += src/wps/wps_upnp_web.c 665OBJS += src/wps/wps_upnp_event.c 666OBJS += src/wps/wps_upnp_ap.c 667OBJS += src/wps/upnp_xml.c 668OBJS += src/wps/httpread.c 669OBJS += src/wps/http_client.c 670OBJS += src/wps/http_server.c 671endif 672 673ifdef CONFIG_WPS_STRICT 674L_CFLAGS += -DCONFIG_WPS_STRICT 675OBJS += src/wps/wps_validate.c 676endif 677 678ifdef CONFIG_WPS_TESTING 679L_CFLAGS += -DCONFIG_WPS_TESTING 680endif 681 682ifdef CONFIG_WPS_REG_DISABLE_OPEN 683L_CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN 684endif 685 686endif 687 688ifdef CONFIG_EAP_IKEV2 689# EAP-IKEv2 690ifeq ($(CONFIG_EAP_IKEV2), dyn) 691L_CFLAGS += -DEAP_IKEV2_DYNAMIC 692EAPDYN += src/eap_peer/eap_ikev2.so src/eap_peer/ikev2.c 693EAPDYN += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c 694else 695L_CFLAGS += -DEAP_IKEV2 696OBJS += src/eap_peer/eap_ikev2.c src/eap_peer/ikev2.c 697OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c 698OBJS_h += src/eap_server/eap_server_ikev2.c 699OBJS_h += src/eap_server/ikev2.c 700endif 701CONFIG_IEEE8021X_EAPOL=y 702NEED_DH_GROUPS=y 703NEED_DH_GROUPS_ALL=y 704NEED_MODEXP=y 705NEED_CIPHER=y 706endif 707 708ifdef CONFIG_EAP_VENDOR_TEST 709ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn) 710L_CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC 711EAPDYN += src/eap_peer/eap_vendor_test.so 712else 713L_CFLAGS += -DEAP_VENDOR_TEST 714OBJS += src/eap_peer/eap_vendor_test.c 715OBJS_h += src/eap_server/eap_server_vendor_test.c 716endif 717CONFIG_IEEE8021X_EAPOL=y 718endif 719 720ifdef CONFIG_EAP_TNC 721# EAP-TNC 722L_CFLAGS += -DEAP_TNC 723OBJS += src/eap_peer/eap_tnc.c 724OBJS += src/eap_peer/tncc.c 725OBJS_h += src/eap_server/eap_server_tnc.c 726OBJS_h += src/eap_server/tncs.c 727NEED_BASE64=y 728ifndef CONFIG_NATIVE_WINDOWS 729ifndef CONFIG_DRIVER_BSD 730LIBS += -ldl 731endif 732endif 733endif 734 735ifdef CONFIG_IEEE8021X_EAPOL 736# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication) 737L_CFLAGS += -DIEEE8021X_EAPOL 738OBJS += src/eapol_supp/eapol_supp_sm.c 739OBJS += src/eap_peer/eap.c src/eap_peer/eap_methods.c 740NEED_EAP_COMMON=y 741ifdef CONFIG_DYNAMIC_EAP_METHODS 742L_CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS 743LIBS += -ldl -rdynamic 744endif 745endif 746 747ifdef CONFIG_AP 748NEED_80211_COMMON=y 749NEED_EAP_COMMON=y 750NEED_RSN_AUTHENTICATOR=y 751L_CFLAGS += -DCONFIG_AP 752OBJS += ap.c 753L_CFLAGS += -DCONFIG_NO_RADIUS 754L_CFLAGS += -DCONFIG_NO_ACCOUNTING 755L_CFLAGS += -DCONFIG_NO_VLAN 756OBJS += src/ap/hostapd.c 757OBJS += src/ap/wpa_auth_glue.c 758OBJS += src/ap/utils.c 759OBJS += src/ap/authsrv.c 760OBJS += src/ap/ap_config.c 761OBJS += src/utils/ip_addr.c 762OBJS += src/ap/sta_info.c 763OBJS += src/ap/tkip_countermeasures.c 764OBJS += src/ap/ap_mlme.c 765OBJS += src/ap/ieee802_1x.c 766OBJS += src/eapol_auth/eapol_auth_sm.c 767OBJS += src/ap/ieee802_11_auth.c 768OBJS += src/ap/ieee802_11_shared.c 769OBJS += src/ap/drv_callbacks.c 770OBJS += src/ap/ap_drv_ops.c 771OBJS += src/ap/beacon.c 772OBJS += src/ap/eap_user_db.c 773ifdef CONFIG_IEEE80211N 774OBJS += src/ap/ieee802_11_ht.c 775endif 776ifdef CONFIG_WNM 777OBJS += src/ap/wnm_ap.c 778endif 779ifdef CONFIG_CTRL_IFACE 780OBJS += src/ap/ctrl_iface_ap.c 781endif 782 783L_CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY 784OBJS += src/eap_server/eap_server.c 785OBJS += src/eap_server/eap_server_identity.c 786OBJS += src/eap_server/eap_server_methods.c 787 788ifdef CONFIG_IEEE80211N 789L_CFLAGS += -DCONFIG_IEEE80211N 790endif 791 792ifdef NEED_AP_MLME 793OBJS += src/ap/wmm.c 794OBJS += src/ap/ap_list.c 795OBJS += src/ap/ieee802_11.c 796OBJS += src/ap/hw_features.c 797L_CFLAGS += -DNEED_AP_MLME 798endif 799ifdef CONFIG_WPS 800L_CFLAGS += -DEAP_SERVER_WSC 801OBJS += src/ap/wps_hostapd.c 802OBJS += src/eap_server/eap_server_wsc.c 803endif 804ifdef CONFIG_INTERWORKING 805OBJS += src/ap/gas_serv.c 806endif 807ifdef CONFIG_HS20 808OBJS += src/ap/hs20.c 809endif 810endif 811 812ifdef NEED_RSN_AUTHENTICATOR 813L_CFLAGS += -DCONFIG_NO_RADIUS 814NEED_AES_WRAP=y 815OBJS += src/ap/wpa_auth.c 816OBJS += src/ap/wpa_auth_ie.c 817OBJS += src/ap/pmksa_cache_auth.c 818ifdef CONFIG_IEEE80211R 819OBJS += src/ap/wpa_auth_ft.c 820endif 821ifdef CONFIG_PEERKEY 822OBJS += src/ap/peerkey_auth.c 823endif 824endif 825 826ifdef CONFIG_EAP_SERVER 827L_CFLAGS += -DEAP_SERVER 828OBJS_h += src/eap_server/eap_server.c 829OBJS_h += src/eap_server/eap_server_identity.c 830OBJS_h += src/eap_server/eap_server_methods.c 831endif 832 833ifdef CONFIG_RADIUS_CLIENT 834OBJS_h += src/utils/ip_addr.c 835OBJS_h += src/radius/radius.c 836OBJS_h += src/radius/radius_client.c 837endif 838 839ifdef CONFIG_AUTHENTICATOR 840OBJS_h += src/eapol_auth/eapol_auth_sm.c 841OBJS_h += src/ap/ieee802_1x.c 842endif 843 844ifdef CONFIG_WPA_AUTHENTICATOR 845OBJS_h += src/ap/wpa_auth.c 846OBJS_h += src/ap/wpa_auth_ie.c 847OBJS_h += src/ap/pmksa_cache_auth.c 848ifdef CONFIG_IEEE80211R 849OBJS_h += src/ap/wpa_auth_ft.c 850endif 851ifdef CONFIG_PEERKEY 852OBJS_h += src/ap/peerkey_auth.c 853endif 854endif 855 856ifdef CONFIG_PCSC 857# PC/SC interface for smartcards (USIM, GSM SIM) 858L_CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC 859OBJS += src/utils/pcsc_funcs.c 860# -lpthread may not be needed depending on how pcsc-lite was configured 861ifdef CONFIG_NATIVE_WINDOWS 862#Once MinGW gets support for WinScard, -lwinscard could be used instead of the 863#dynamic symbol loading that is now used in pcsc_funcs.c 864#LIBS += -lwinscard 865else 866LIBS += -lpcsclite -lpthread 867endif 868endif 869 870ifdef CONFIG_SIM_SIMULATOR 871L_CFLAGS += -DCONFIG_SIM_SIMULATOR 872NEED_MILENAGE=y 873endif 874 875ifdef CONFIG_USIM_SIMULATOR 876L_CFLAGS += -DCONFIG_USIM_SIMULATOR 877NEED_MILENAGE=y 878endif 879 880ifdef NEED_MILENAGE 881OBJS += src/crypto/milenage.c 882NEED_AES_ENCBLOCK=y 883endif 884 885ifdef CONFIG_PKCS12 886L_CFLAGS += -DPKCS12_FUNCS 887endif 888 889ifdef CONFIG_SMARTCARD 890L_CFLAGS += -DCONFIG_SMARTCARD 891endif 892 893ifdef MS_FUNCS 894OBJS += src/crypto/ms_funcs.c 895NEED_DES=y 896NEED_MD4=y 897endif 898 899ifdef CHAP 900OBJS += src/eap_common/chap.c 901endif 902 903ifdef TLS_FUNCS 904NEED_DES=y 905# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST) 906OBJS += src/eap_peer/eap_tls_common.c 907OBJS_h += src/eap_server/eap_server_tls_common.c 908ifndef CONFIG_FIPS 909NEED_TLS_PRF=y 910NEED_SHA1=y 911NEED_MD5=y 912endif 913endif 914 915ifndef CONFIG_TLS 916CONFIG_TLS=openssl 917endif 918 919ifdef CONFIG_TLSV11 920L_CFLAGS += -DCONFIG_TLSV11 921endif 922 923ifdef CONFIG_TLSV12 924L_CFLAGS += -DCONFIG_TLSV12 925NEED_SHA256=y 926endif 927 928ifeq ($(CONFIG_TLS), openssl) 929ifdef TLS_FUNCS 930L_CFLAGS += -DEAP_TLS_OPENSSL 931OBJS += src/crypto/tls_openssl.c 932LIBS += -lssl 933endif 934OBJS += src/crypto/crypto_openssl.c 935OBJS_p += src/crypto/crypto_openssl.c 936ifdef NEED_FIPS186_2_PRF 937OBJS += src/crypto/fips_prf_openssl.c 938endif 939LIBS += -lcrypto 940LIBS_p += -lcrypto 941ifdef CONFIG_TLS_ADD_DL 942LIBS += -ldl 943LIBS_p += -ldl 944endif 945endif 946 947ifeq ($(CONFIG_TLS), gnutls) 948ifdef TLS_FUNCS 949OBJS += src/crypto/tls_gnutls.c 950LIBS += -lgnutls -lgpg-error 951endif 952OBJS += src/crypto/crypto_gnutls.c 953OBJS_p += src/crypto/crypto_gnutls.c 954ifdef NEED_FIPS186_2_PRF 955OBJS += src/crypto/fips_prf_gnutls.c 956endif 957LIBS += -lgcrypt 958LIBS_p += -lgcrypt 959CONFIG_INTERNAL_SHA256=y 960CONFIG_INTERNAL_RC4=y 961CONFIG_INTERNAL_DH_GROUP5=y 962endif 963 964ifeq ($(CONFIG_TLS), schannel) 965ifdef TLS_FUNCS 966OBJS += src/crypto/tls_schannel.c 967endif 968OBJS += src/crypto/crypto_cryptoapi.c 969OBJS_p += src/crypto/crypto_cryptoapi.c 970ifdef NEED_FIPS186_2_PRF 971OBJS += src/crypto/fips_prf_cryptoapi.c 972endif 973CONFIG_INTERNAL_SHA256=y 974CONFIG_INTERNAL_RC4=y 975CONFIG_INTERNAL_DH_GROUP5=y 976endif 977 978ifeq ($(CONFIG_TLS), nss) 979ifdef TLS_FUNCS 980OBJS += src/crypto/tls_nss.c 981LIBS += -lssl3 982endif 983OBJS += src/crypto/crypto_nss.c 984OBJS_p += src/crypto/crypto_nss.c 985ifdef NEED_FIPS186_2_PRF 986OBJS += src/crypto/fips_prf_nss.c 987endif 988LIBS += -lnss3 989LIBS_p += -lnss3 990CONFIG_INTERNAL_MD4=y 991CONFIG_INTERNAL_DH_GROUP5=y 992endif 993 994ifeq ($(CONFIG_TLS), internal) 995ifndef CONFIG_CRYPTO 996CONFIG_CRYPTO=internal 997endif 998ifdef TLS_FUNCS 999OBJS += src/crypto/crypto_internal-rsa.c 1000OBJS += src/crypto/tls_internal.c 1001OBJS += src/tls/tlsv1_common.c 1002OBJS += src/tls/tlsv1_record.c 1003OBJS += src/tls/tlsv1_cred.c 1004OBJS += src/tls/tlsv1_client.c 1005OBJS += src/tls/tlsv1_client_write.c 1006OBJS += src/tls/tlsv1_client_read.c 1007OBJS += src/tls/asn1.c 1008OBJS += src/tls/rsa.c 1009OBJS += src/tls/x509v3.c 1010OBJS += src/tls/pkcs1.c 1011OBJS += src/tls/pkcs5.c 1012OBJS += src/tls/pkcs8.c 1013NEED_SHA256=y 1014NEED_BASE64=y 1015NEED_TLS_PRF=y 1016ifdef CONFIG_TLSV12 1017NEED_TLS_PRF_SHA256=y 1018endif 1019NEED_MODEXP=y 1020NEED_CIPHER=y 1021L_CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT 1022endif 1023ifdef NEED_CIPHER 1024NEED_DES=y 1025OBJS += src/crypto/crypto_internal-cipher.c 1026endif 1027ifdef NEED_MODEXP 1028OBJS += src/crypto/crypto_internal-modexp.c 1029OBJS += src/tls/bignum.c 1030endif 1031ifeq ($(CONFIG_CRYPTO), libtomcrypt) 1032OBJS += src/crypto/crypto_libtomcrypt.c 1033OBJS_p += src/crypto/crypto_libtomcrypt.c 1034LIBS += -ltomcrypt -ltfm 1035LIBS_p += -ltomcrypt -ltfm 1036CONFIG_INTERNAL_SHA256=y 1037CONFIG_INTERNAL_RC4=y 1038CONFIG_INTERNAL_DH_GROUP5=y 1039endif 1040ifeq ($(CONFIG_CRYPTO), internal) 1041OBJS += src/crypto/crypto_internal.c 1042OBJS_p += src/crypto/crypto_internal.c 1043NEED_AES_ENC=y 1044L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL 1045ifdef CONFIG_INTERNAL_LIBTOMMATH 1046L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 1047ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 1048L_CFLAGS += -DLTM_FAST 1049endif 1050else 1051LIBS += -ltommath 1052LIBS_p += -ltommath 1053endif 1054CONFIG_INTERNAL_AES=y 1055CONFIG_INTERNAL_DES=y 1056CONFIG_INTERNAL_SHA1=y 1057CONFIG_INTERNAL_MD4=y 1058CONFIG_INTERNAL_MD5=y 1059CONFIG_INTERNAL_SHA256=y 1060CONFIG_INTERNAL_RC4=y 1061CONFIG_INTERNAL_DH_GROUP5=y 1062endif 1063ifeq ($(CONFIG_CRYPTO), cryptoapi) 1064OBJS += src/crypto/crypto_cryptoapi.c 1065OBJS_p += src/crypto/crypto_cryptoapi.c 1066L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 1067CONFIG_INTERNAL_SHA256=y 1068CONFIG_INTERNAL_RC4=y 1069endif 1070endif 1071 1072ifeq ($(CONFIG_TLS), none) 1073ifdef TLS_FUNCS 1074OBJS += src/crypto/tls_none.c 1075L_CFLAGS += -DEAP_TLS_NONE 1076CONFIG_INTERNAL_AES=y 1077CONFIG_INTERNAL_SHA1=y 1078CONFIG_INTERNAL_MD5=y 1079endif 1080OBJS += src/crypto/crypto_none.c 1081OBJS_p += src/crypto/crypto_none.c 1082CONFIG_INTERNAL_SHA256=y 1083CONFIG_INTERNAL_RC4=y 1084endif 1085 1086ifdef TLS_FUNCS 1087ifdef CONFIG_SMARTCARD 1088ifndef CONFIG_NATIVE_WINDOWS 1089ifneq ($(CONFIG_L2_PACKET), freebsd) 1090LIBS += -ldl 1091endif 1092endif 1093endif 1094endif 1095 1096ifndef TLS_FUNCS 1097OBJS += src/crypto/tls_none.c 1098ifeq ($(CONFIG_TLS), internal) 1099CONFIG_INTERNAL_AES=y 1100CONFIG_INTERNAL_SHA1=y 1101CONFIG_INTERNAL_MD5=y 1102CONFIG_INTERNAL_RC4=y 1103endif 1104endif 1105 1106AESOBJS = # none so far (see below) 1107ifdef CONFIG_INTERNAL_AES 1108AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-dec.c 1109endif 1110 1111AESOBJS += src/crypto/aes-unwrap.c 1112ifdef NEED_AES_EAX 1113AESOBJS += src/crypto/aes-eax.c 1114NEED_AES_CTR=y 1115endif 1116ifdef NEED_AES_CTR 1117AESOBJS += src/crypto/aes-ctr.c 1118endif 1119ifdef NEED_AES_ENCBLOCK 1120AESOBJS += src/crypto/aes-encblock.c 1121endif 1122ifdef NEED_AES_OMAC1 1123NEED_AES_ENC=y 1124ifdef CONFIG_OPENSSL_CMAC 1125CFLAGS += -DCONFIG_OPENSSL_CMAC 1126else 1127AESOBJS += src/crypto/aes-omac1.c 1128endif 1129endif 1130ifdef NEED_AES_WRAP 1131NEED_AES_ENC=y 1132AESOBJS += src/crypto/aes-wrap.c 1133endif 1134ifdef NEED_AES_CBC 1135NEED_AES_ENC=y 1136AESOBJS += src/crypto/aes-cbc.c 1137endif 1138ifdef NEED_AES_ENC 1139ifdef CONFIG_INTERNAL_AES 1140AESOBJS += src/crypto/aes-internal-enc.c 1141endif 1142endif 1143ifdef NEED_AES 1144OBJS += $(AESOBJS) 1145endif 1146 1147SHA1OBJS = 1148ifdef NEED_SHA1 1149ifneq ($(CONFIG_TLS), openssl) 1150SHA1OBJS += src/crypto/sha1.c 1151endif 1152SHA1OBJS += src/crypto/sha1-prf.c 1153ifdef CONFIG_INTERNAL_SHA1 1154SHA1OBJS += src/crypto/sha1-internal.c 1155ifdef NEED_FIPS186_2_PRF 1156SHA1OBJS += src/crypto/fips_prf_internal.c 1157endif 1158endif 1159ifdef CONFIG_NO_WPA_PASSPHRASE 1160L_CFLAGS += -DCONFIG_NO_PBKDF2 1161else 1162ifneq ($(CONFIG_TLS), openssl) 1163SHA1OBJS += src/crypto/sha1-pbkdf2.c 1164endif 1165endif 1166ifdef NEED_T_PRF 1167SHA1OBJS += src/crypto/sha1-tprf.c 1168endif 1169ifdef NEED_TLS_PRF 1170SHA1OBJS += src/crypto/sha1-tlsprf.c 1171endif 1172endif 1173 1174MD5OBJS = src/crypto/md5.c 1175ifdef NEED_MD5 1176ifdef CONFIG_INTERNAL_MD5 1177MD5OBJS += src/crypto/md5-internal.c 1178endif 1179OBJS += $(MD5OBJS) 1180OBJS_p += $(MD5OBJS) 1181endif 1182 1183ifdef NEED_MD4 1184ifdef CONFIG_INTERNAL_MD4 1185OBJS += src/crypto/md4-internal.c 1186endif 1187endif 1188 1189DESOBJS = # none needed when not internal 1190ifdef NEED_DES 1191ifdef CONFIG_INTERNAL_DES 1192DESOBJS += src/crypto/des-internal.c 1193endif 1194endif 1195 1196ifdef NEED_RC4 1197ifdef CONFIG_INTERNAL_RC4 1198OBJS += src/crypto/rc4.c 1199endif 1200endif 1201 1202SHA256OBJS = # none by default 1203ifdef NEED_SHA256 1204L_CFLAGS += -DCONFIG_SHA256 1205ifneq ($(CONFIG_TLS), openssl) 1206SHA256OBJS += src/crypto/sha256.c 1207endif 1208SHA256OBJS += src/crypto/sha256-prf.c 1209ifdef CONFIG_INTERNAL_SHA256 1210SHA256OBJS += src/crypto/sha256-internal.c 1211endif 1212ifdef NEED_TLS_PRF_SHA256 1213SHA256OBJS += src/crypto/sha256-tlsprf.c 1214endif 1215OBJS += $(SHA256OBJS) 1216endif 1217 1218ifdef NEED_DH_GROUPS 1219OBJS += src/crypto/dh_groups.c 1220endif 1221ifdef NEED_DH_GROUPS_ALL 1222L_CFLAGS += -DALL_DH_GROUPS 1223endif 1224ifdef CONFIG_INTERNAL_DH_GROUP5 1225ifdef NEED_DH_GROUPS 1226OBJS += src/crypto/dh_group5.c 1227endif 1228endif 1229 1230ifdef NEED_ECC 1231L_CFLAGS += -DCONFIG_ECC 1232endif 1233 1234ifdef CONFIG_NO_RANDOM_POOL 1235L_CFLAGS += -DCONFIG_NO_RANDOM_POOL 1236else 1237OBJS += src/crypto/random.c 1238endif 1239 1240ifdef CONFIG_CTRL_IFACE 1241ifeq ($(CONFIG_CTRL_IFACE), y) 1242ifdef CONFIG_NATIVE_WINDOWS 1243CONFIG_CTRL_IFACE=named_pipe 1244else 1245CONFIG_CTRL_IFACE=unix 1246endif 1247endif 1248L_CFLAGS += -DCONFIG_CTRL_IFACE 1249ifeq ($(CONFIG_CTRL_IFACE), unix) 1250L_CFLAGS += -DCONFIG_CTRL_IFACE_UNIX 1251endif 1252ifeq ($(CONFIG_CTRL_IFACE), udp) 1253L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1254endif 1255ifeq ($(CONFIG_CTRL_IFACE), named_pipe) 1256L_CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE 1257endif 1258ifeq ($(CONFIG_CTRL_IFACE), udp-remote) 1259CONFIG_CTRL_IFACE=udp 1260L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1261L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE 1262endif 1263OBJS += ctrl_iface.c ctrl_iface_$(CONFIG_CTRL_IFACE).c 1264endif 1265 1266ifdef CONFIG_CTRL_IFACE_DBUS 1267DBUS=y 1268DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE 1269DBUS_OBJS += dbus/dbus_old.c dbus/dbus_old_handlers.c 1270ifdef CONFIG_WPS 1271DBUS_OBJS += dbus/dbus_old_handlers_wps.c 1272endif 1273DBUS_OBJS += dbus/dbus_dict_helpers.c 1274ifndef DBUS_LIBS 1275DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1) 1276endif 1277ifndef DBUS_INCLUDE 1278DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1) 1279endif 1280DBUS_CFLAGS += $(DBUS_INCLUDE) 1281endif 1282 1283ifdef CONFIG_CTRL_IFACE_DBUS_NEW 1284DBUS=y 1285DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW 1286DBUS_OBJS ?= dbus/dbus_dict_helpers.c 1287DBUS_OBJS += dbus/dbus_new_helpers.c 1288DBUS_OBJS += dbus/dbus_new.c dbus/dbus_new_handlers.c 1289ifdef CONFIG_WPS 1290DBUS_OBJS += dbus/dbus_new_handlers_wps.c 1291endif 1292ifdef CONFIG_P2P 1293DBUS_OBJS += dbus/dbus_new_handlers_p2p.c 1294endif 1295ifndef DBUS_LIBS 1296DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1) 1297endif 1298ifndef DBUS_INCLUDE 1299DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1) 1300endif 1301ifdef CONFIG_CTRL_IFACE_DBUS_INTRO 1302DBUS_OBJS += dbus/dbus_new_introspect.c 1303DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO 1304endif 1305DBUS_CFLAGS += $(DBUS_INCLUDE) 1306endif 1307 1308ifdef DBUS 1309DBUS_CFLAGS += -DCONFIG_DBUS 1310DBUS_OBJS += dbus/dbus_common.c 1311endif 1312 1313OBJS += $(DBUS_OBJS) 1314L_CFLAGS += $(DBUS_CFLAGS) 1315LIBS += $(DBUS_LIBS) 1316 1317ifdef CONFIG_READLINE 1318OBJS_c += src/utils/edit_readline.c 1319LIBS_c += -lncurses -lreadline 1320else 1321ifdef CONFIG_WPA_CLI_EDIT 1322OBJS_c += src/utils/edit.c 1323else 1324OBJS_c += src/utils/edit_simple.c 1325endif 1326endif 1327 1328ifdef CONFIG_NATIVE_WINDOWS 1329L_CFLAGS += -DCONFIG_NATIVE_WINDOWS 1330LIBS += -lws2_32 -lgdi32 -lcrypt32 1331LIBS_c += -lws2_32 1332LIBS_p += -lws2_32 -lgdi32 1333ifeq ($(CONFIG_CRYPTO), cryptoapi) 1334LIBS_p += -lcrypt32 1335endif 1336endif 1337 1338ifdef CONFIG_NO_STDOUT_DEBUG 1339L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 1340ifndef CONFIG_CTRL_IFACE 1341L_CFLAGS += -DCONFIG_NO_WPA_MSG 1342endif 1343endif 1344 1345ifdef CONFIG_ANDROID_LOG 1346L_CFLAGS += -DCONFIG_ANDROID_LOG 1347endif 1348 1349ifdef CONFIG_IPV6 1350# for eapol_test only 1351L_CFLAGS += -DCONFIG_IPV6 1352endif 1353 1354ifdef NEED_BASE64 1355OBJS += src/utils/base64.c 1356endif 1357 1358ifdef NEED_SME 1359NEED_80211_COMMON=y 1360OBJS += sme.c 1361L_CFLAGS += -DCONFIG_SME 1362endif 1363 1364ifdef NEED_80211_COMMON 1365OBJS += src/common/ieee802_11_common.c 1366endif 1367 1368ifdef NEED_EAP_COMMON 1369OBJS += src/eap_common/eap_common.c 1370endif 1371 1372ifndef CONFIG_MAIN 1373CONFIG_MAIN=main 1374endif 1375 1376ifdef CONFIG_DEBUG_SYSLOG 1377L_CFLAGS += -DCONFIG_DEBUG_SYSLOG 1378ifdef CONFIG_DEBUG_SYSLOG_FACILITY 1379L_CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)" 1380endif 1381endif 1382 1383ifdef CONFIG_DEBUG_LINUX_TRACING 1384L_CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING 1385endif 1386 1387ifdef CONFIG_DEBUG_FILE 1388L_CFLAGS += -DCONFIG_DEBUG_FILE 1389endif 1390 1391ifdef CONFIG_DELAYED_MIC_ERROR_REPORT 1392L_CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT 1393endif 1394 1395ifdef CONFIG_FIPS 1396L_CFLAGS += -DCONFIG_FIPS 1397endif 1398 1399OBJS += $(SHA1OBJS) $(DESOBJS) 1400 1401OBJS_p += $(SHA1OBJS) 1402OBJS_p += $(SHA256OBJS) 1403 1404ifdef CONFIG_BGSCAN_SIMPLE 1405L_CFLAGS += -DCONFIG_BGSCAN_SIMPLE 1406OBJS += bgscan_simple.c 1407NEED_BGSCAN=y 1408endif 1409 1410ifdef CONFIG_BGSCAN_LEARN 1411L_CFLAGS += -DCONFIG_BGSCAN_LEARN 1412OBJS += bgscan_learn.c 1413NEED_BGSCAN=y 1414endif 1415 1416ifdef NEED_BGSCAN 1417L_CFLAGS += -DCONFIG_BGSCAN 1418OBJS += bgscan.c 1419endif 1420 1421ifdef CONFIG_AUTOSCAN_EXPONENTIAL 1422L_CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL 1423OBJS += autoscan_exponential.c 1424NEED_AUTOSCAN=y 1425endif 1426 1427ifdef CONFIG_AUTOSCAN_PERIODIC 1428CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC 1429OBJS += autoscan_periodic.c 1430NEED_AUTOSCAN=y 1431endif 1432 1433ifdef NEED_AUTOSCAN 1434L_CFLAGS += -DCONFIG_AUTOSCAN 1435OBJS += autoscan.c 1436endif 1437 1438ifdef CONFIG_EXT_PASSWORD_TEST 1439OBJS += src/utils/ext_password_test.c 1440L_CFLAGS += -DCONFIG_EXT_PASSWORD_TEST 1441NEED_EXT_PASSWORD=y 1442endif 1443 1444ifdef NEED_EXT_PASSWORD 1445OBJS += src/utils/ext_password.c 1446L_CFLAGS += -DCONFIG_EXT_PASSWORD 1447endif 1448 1449ifdef NEED_GAS 1450OBJS += src/common/gas.c 1451OBJS += gas_query.c 1452L_CFLAGS += -DCONFIG_GAS 1453NEED_OFFCHANNEL=y 1454endif 1455 1456ifdef NEED_OFFCHANNEL 1457OBJS += offchannel.c 1458L_CFLAGS += -DCONFIG_OFFCHANNEL 1459endif 1460 1461OBJS += src/drivers/driver_common.c 1462 1463OBJS_wpa_rm := ctrl_iface.c ctrl_iface_unix.c 1464OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.c 1465ifdef CONFIG_AUTHENTICATOR 1466OBJS_wpa += tests/link_test.c 1467endif 1468OBJS_wpa += $(OBJS_l2) 1469OBJS += wpa_supplicant.c events.c blacklist.c wpas_glue.c scan.c 1470OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.c 1471OBJS_t += src/radius/radius_client.c 1472OBJS_t += src/radius/radius.c 1473ifndef CONFIG_AP 1474OBJS_t += src/utils/ip_addr.c 1475endif 1476OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.c 1477OBJS += $(CONFIG_MAIN).c 1478 1479ifdef CONFIG_PRIVSEP 1480OBJS_priv += $(OBJS_d) src/drivers/drivers.c 1481OBJS_priv += $(OBJS_l2) 1482OBJS_priv += src/utils/os_$(CONFIG_OS).c 1483OBJS_priv += src/utils/$(CONFIG_ELOOP).c 1484OBJS_priv += src/utils/common.c 1485OBJS_priv += src/utils/wpa_debug.c 1486OBJS_priv += src/utils/wpabuf.c 1487OBJS_priv += wpa_priv.c 1488ifdef CONFIG_DRIVER_NL80211 1489OBJS_priv += src/common/ieee802_11_common.c 1490endif 1491ifdef CONFIG_DRIVER_TEST 1492OBJS_priv += $(SHA1OBJS) 1493OBJS_priv += $(MD5OBJS) 1494ifeq ($(CONFIG_TLS), openssl) 1495OBJS_priv += src/crypto/crypto_openssl.c 1496endif 1497ifeq ($(CONFIG_TLS), gnutls) 1498OBJS_priv += src/crypto/crypto_gnutls.c 1499endif 1500ifeq ($(CONFIG_TLS), nss) 1501OBJS_priv += src/crypto/crypto_nss.c 1502endif 1503ifeq ($(CONFIG_TLS), internal) 1504ifeq ($(CONFIG_CRYPTO), libtomcrypt) 1505OBJS_priv += src/crypto/crypto_libtomcrypt.c 1506else 1507OBJS_priv += src/crypto/crypto_internal.c 1508endif 1509endif 1510endif # CONFIG_DRIVER_TEST 1511OBJS += src/l2_packet/l2_packet_privsep.c 1512OBJS += src/drivers/driver_privsep.c 1513EXTRA_progs += wpa_priv 1514else 1515OBJS += $(OBJS_d) src/drivers/drivers.c 1516OBJS += $(OBJS_l2) 1517endif 1518 1519ifdef CONFIG_NDIS_EVENTS_INTEGRATED 1520L_CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED 1521OBJS += src/drivers/ndis_events.c 1522EXTRALIBS += -loleaut32 -lole32 -luuid 1523ifdef PLATFORMSDKLIB 1524EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib 1525else 1526EXTRALIBS += WbemUuid.Lib 1527endif 1528endif 1529 1530ifndef LDO 1531LDO=$(CC) 1532endif 1533 1534######################## 1535 1536include $(CLEAR_VARS) 1537LOCAL_MODULE := wpa_cli 1538LOCAL_MODULE_TAGS := debug 1539LOCAL_SHARED_LIBRARIES := libc libcutils liblog 1540LOCAL_CFLAGS := $(L_CFLAGS) 1541LOCAL_SRC_FILES := $(OBJS_c) 1542LOCAL_C_INCLUDES := $(INCLUDES) 1543include $(BUILD_EXECUTABLE) 1544 1545######################## 1546include $(CLEAR_VARS) 1547LOCAL_MODULE := wpa_supplicant 1548ifdef CONFIG_DRIVER_CUSTOM 1549LOCAL_STATIC_LIBRARIES := libCustomWifi 1550endif 1551ifneq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),) 1552LOCAL_STATIC_LIBRARIES += $(BOARD_WPA_SUPPLICANT_PRIVATE_LIB) 1553endif 1554LOCAL_SHARED_LIBRARIES := libc libcutils liblog 1555ifeq ($(CONFIG_TLS), openssl) 1556LOCAL_SHARED_LIBRARIES += libcrypto libssl libkeystore_binder 1557endif 1558ifdef CONFIG_DRIVER_NL80211 1559LOCAL_STATIC_LIBRARIES += libnl_2 1560endif 1561LOCAL_CFLAGS := $(L_CFLAGS) 1562LOCAL_SRC_FILES := $(OBJS) 1563LOCAL_C_INCLUDES := $(INCLUDES) 1564include $(BUILD_EXECUTABLE) 1565 1566######################## 1567# 1568#include $(CLEAR_VARS) 1569#LOCAL_MODULE := eapol_test 1570#ifdef CONFIG_DRIVER_CUSTOM 1571#LOCAL_STATIC_LIBRARIES := libCustomWifi 1572#endif 1573#LOCAL_SHARED_LIBRARIES := libc libcrypto libssl 1574#LOCAL_CFLAGS := $(L_CFLAGS) 1575#LOCAL_SRC_FILES := $(OBJS_t) 1576#LOCAL_C_INCLUDES := $(INCLUDES) 1577#include $(BUILD_EXECUTABLE) 1578# 1579######################## 1580# 1581#local_target_dir := $(TARGET_OUT)/etc/wifi 1582# 1583#include $(CLEAR_VARS) 1584#LOCAL_MODULE := wpa_supplicant.conf 1585#LOCAL_MODULE_CLASS := ETC 1586#LOCAL_MODULE_PATH := $(local_target_dir) 1587#LOCAL_SRC_FILES := $(LOCAL_MODULE) 1588#include $(BUILD_PREBUILT) 1589# 1590######################## 1591 1592include $(CLEAR_VARS) 1593LOCAL_MODULE = libwpa_client 1594LOCAL_CFLAGS = $(L_CFLAGS) 1595LOCAL_SRC_FILES = src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c 1596LOCAL_C_INCLUDES = $(INCLUDES) 1597LOCAL_SHARED_LIBRARIES := libcutils liblog 1598LOCAL_COPY_HEADERS_TO := libwpa_client 1599LOCAL_COPY_HEADERS := src/common/wpa_ctrl.h 1600include $(BUILD_SHARED_LIBRARY) 1601