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