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