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) 19 20WPA_BUILD_SUPPLICANT := false 21ifneq ($(TARGET_SIMULATOR),true) 22 ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),) 23 WPA_BUILD_SUPPLICANT := true 24 CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) = y 25 endif 26endif 27 28include $(LOCAL_PATH)/.config 29 30# To force sizeof(enum) = 4 31ifeq ($(TARGET_ARCH),arm) 32L_CFLAGS += -mabi=aapcs-linux 33endif 34 35# To ignore possible wrong network configurations 36L_CFLAGS += -DWPA_IGNORE_CONFIG_ERRORS 37 38# To allow non-ASCII characters in SSID 39L_CFLAGS += -DWPA_UNICODE_SSID 40 41# OpenSSL is configured without engines on Android 42L_CFLAGS += -DOPENSSL_NO_ENGINE 43 44INCLUDES = $(LOCAL_PATH) 45INCLUDES += $(LOCAL_PATH)/src 46INCLUDES += $(LOCAL_PATH)/src/common 47# INCLUDES += $(LOCAL_PATH)/src/crypto # To force proper includes 48INCLUDES += $(LOCAL_PATH)/src/drivers 49INCLUDES += $(LOCAL_PATH)/src/eap_common 50INCLUDES += $(LOCAL_PATH)/src/eapol_supp 51INCLUDES += $(LOCAL_PATH)/src/eap_peer 52INCLUDES += $(LOCAL_PATH)/src/eap_server 53INCLUDES += $(LOCAL_PATH)/src/hlr_auc_gw 54INCLUDES += $(LOCAL_PATH)/src/l2_packet 55INCLUDES += $(LOCAL_PATH)/src/radius 56INCLUDES += $(LOCAL_PATH)/src/rsn_supp 57INCLUDES += $(LOCAL_PATH)/src/tls 58INCLUDES += $(LOCAL_PATH)/src/utils 59INCLUDES += $(LOCAL_PATH)/src/wps 60INCLUDES += external/openssl/include 61INCLUDES += frameworks/base/cmds/keystore 62 63OBJS = config.c 64OBJS += src/utils/common.c 65OBJS += src/utils/wpa_debug.c 66OBJS += src/utils/wpabuf.c 67OBJS += src/crypto/md5.c 68OBJS += src/crypto/rc4.c 69OBJS += src/crypto/md4.c 70OBJS += src/crypto/sha1.c 71OBJS += src/crypto/des.c 72OBJS_p = wpa_passphrase.c 73OBJS_p += src/utils/common.c 74OBJS_p += src/utils/wpa_debug.c 75OBJS_p += src/crypto/md5.c 76OBJS_p += src/crypto/md4.c 77OBJS_p += src/crypto/sha1.c 78OBJS_p += src/crypto/des.c 79OBJS_c = wpa_cli.c 80OBJS_c += src/common/wpa_ctrl.c 81OBJS_d = 82 83ifndef CONFIG_OS 84ifdef CONFIG_NATIVE_WINDOWS 85CONFIG_OS=win32 86else 87CONFIG_OS=unix 88endif 89endif 90 91ifeq ($(CONFIG_OS), internal) 92L_CFLAGS += -DOS_NO_C_LIB_DEFINES 93endif 94 95OBJS += src/utils/os_$(CONFIG_OS).c 96OBJS_p += src/utils/os_$(CONFIG_OS).c 97OBJS_c += src/utils/os_$(CONFIG_OS).c 98 99ifndef CONFIG_ELOOP 100CONFIG_ELOOP=eloop 101endif 102OBJS += src/utils/$(CONFIG_ELOOP).c 103 104 105ifdef CONFIG_EAPOL_TEST 106L_CFLAGS += -Werror -DEAPOL_TEST 107endif 108 109ifndef CONFIG_BACKEND 110CONFIG_BACKEND=file 111endif 112 113ifeq ($(CONFIG_BACKEND), file) 114OBJS += config_file.c 115ifndef CONFIG_NO_CONFIG_BLOBS 116NEED_BASE64=y 117endif 118L_CFLAGS += -DCONFIG_BACKEND_FILE 119endif 120 121ifeq ($(CONFIG_BACKEND), winreg) 122OBJS += config_winreg.c 123endif 124 125ifeq ($(CONFIG_BACKEND), none) 126OBJS += config_none.c 127endif 128 129ifdef CONFIG_NO_CONFIG_WRITE 130L_CFLAGS += -DCONFIG_NO_CONFIG_WRITE 131endif 132 133ifdef CONFIG_NO_CONFIG_BLOBS 134L_CFLAGS += -DCONFIG_NO_CONFIG_BLOBS 135endif 136 137ifdef CONFIG_NO_SCAN_PROCESSING 138L_CFLAGS += -DCONFIG_NO_SCAN_PROCESSING 139endif 140 141ifdef CONFIG_DRIVER_HOSTAP 142L_CFLAGS += -DCONFIG_DRIVER_HOSTAP 143OBJS_d += src/drivers/driver_hostap.c 144CONFIG_WIRELESS_EXTENSION=y 145endif 146 147ifdef CONFIG_DRIVER_WEXT 148L_CFLAGS += -DCONFIG_DRIVER_WEXT 149CONFIG_WIRELESS_EXTENSION=y 150endif 151 152ifdef CONFIG_DRIVER_NL80211 153L_CFLAGS += -DCONFIG_DRIVER_NL80211 154OBJS_d += src/drivers/driver_nl80211.c 155LIBS += -lnl 156ifdef CONFIG_CLIENT_MLME 157OBJS_d += src/drivers/radiotap.c 158endif 159endif 160 161ifdef CONFIG_DRIVER_PRISM54 162L_CFLAGS += -DCONFIG_DRIVER_PRISM54 163OBJS_d += src/drivers/driver_prism54.c 164CONFIG_WIRELESS_EXTENSION=y 165endif 166 167ifdef CONFIG_DRIVER_HERMES 168L_CFLAGS += -DCONFIG_DRIVER_HERMES 169OBJS_d += src/drivers/driver_hermes.c 170CONFIG_WIRELESS_EXTENSION=y 171endif 172 173ifdef CONFIG_DRIVER_MADWIFI 174L_CFLAGS += -DCONFIG_DRIVER_MADWIFI 175OBJS_d += src/drivers/driver_madwifi.c 176CONFIG_WIRELESS_EXTENSION=y 177endif 178 179ifdef CONFIG_DRIVER_ATMEL 180L_CFLAGS += -DCONFIG_DRIVER_ATMEL 181OBJS_d += src/drivers/driver_atmel.c 182CONFIG_WIRELESS_EXTENSION=y 183endif 184 185ifdef CONFIG_DRIVER_NDISWRAPPER 186L_CFLAGS += -DCONFIG_DRIVER_NDISWRAPPER 187OBJS_d += src/drivers/driver_ndiswrapper.c 188CONFIG_WIRELESS_EXTENSION=y 189endif 190 191ifdef CONFIG_DRIVER_RALINK 192L_CFLAGS += -DCONFIG_DRIVER_RALINK 193OBJS_d += src/drivers/driver_ralink.c 194endif 195 196ifdef CONFIG_DRIVER_BROADCOM 197L_CFLAGS += -DCONFIG_DRIVER_BROADCOM 198OBJS_d += src/drivers/driver_broadcom.c 199endif 200 201ifdef CONFIG_DRIVER_IPW 202L_CFLAGS += -DCONFIG_DRIVER_IPW 203OBJS_d += src/drivers/driver_ipw.c 204CONFIG_WIRELESS_EXTENSION=y 205endif 206 207ifdef CONFIG_DRIVER_BSD 208L_CFLAGS += -DCONFIG_DRIVER_BSD 209OBJS_d += src/drivers/driver_bsd.c 210ifndef CONFIG_L2_PACKET 211CONFIG_L2_PACKET=freebsd 212endif 213endif 214 215ifdef CONFIG_DRIVER_NDIS 216L_CFLAGS += -DCONFIG_DRIVER_NDIS 217OBJS_d += src/drivers/driver_ndis.c 218ifdef CONFIG_NDIS_EVENTS_INTEGRATED 219OBJS_d += src/drivers/driver_ndis_.c 220endif 221ifndef CONFIG_L2_PACKET 222CONFIG_L2_PACKET=pcap 223endif 224CONFIG_WINPCAP=y 225ifdef CONFIG_USE_NDISUIO 226L_CFLAGS += -DCONFIG_USE_NDISUIO 227endif 228endif 229 230ifdef CONFIG_DRIVER_WIRED 231L_CFLAGS += -DCONFIG_DRIVER_WIRED 232OBJS_d += src/drivers/driver_wired.c 233endif 234 235ifdef CONFIG_DRIVER_TEST 236L_CFLAGS += -DCONFIG_DRIVER_TEST 237OBJS_d += src/drivers/driver_test.c 238endif 239 240ifdef CONFIG_DRIVER_CUSTOM 241L_CFLAGS += -DCONFIG_DRIVER_CUSTOM 242endif 243 244ifdef CONFIG_DRIVER_OSX 245L_CFLAGS += -DCONFIG_DRIVER_OSX 246OBJS_d += src/drivers/driver_osx.c 247LDFLAGS += -framework CoreFoundation 248LDFLAGS += -F/System/Library/PrivateFrameworks -framework Apple80211 249endif 250 251ifdef CONFIG_DRIVER_PS3 252L_CFLAGS += -DCONFIG_DRIVER_PS3 -m64 253OBJS_d += src/drivers/driver_ps3.c 254LDFLAGS += -m64 255endif 256 257ifdef CONFIG_DRIVER_IPHONE 258L_CFLAGS += -DCONFIG_DRIVER_IPHONE 259OBJS_d += src/drivers/driver_iphone.c 260OBJS_d += src/drivers/MobileApple80211.c 261LIBS += -framework CoreFoundation 262endif 263 264ifdef CONFIG_DRIVER_ROBOSWITCH 265L_CFLAGS += -DCONFIG_DRIVER_ROBOSWITCH 266OBJS_d += src/drivers/driver_roboswitch.c 267endif 268 269ifndef CONFIG_L2_PACKET 270CONFIG_L2_PACKET=linux 271endif 272 273OBJS_l2 += src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).c 274 275ifeq ($(CONFIG_L2_PACKET), pcap) 276ifdef CONFIG_WINPCAP 277L_CFLAGS += -DCONFIG_WINPCAP 278LIBS += -lwpcap -lpacket 279LIBS_w += -lwpcap 280else 281LIBS += -ldnet -lpcap 282endif 283endif 284 285ifeq ($(CONFIG_L2_PACKET), winpcap) 286LIBS += -lwpcap -lpacket 287LIBS_w += -lwpcap 288endif 289 290ifeq ($(CONFIG_L2_PACKET), freebsd) 291LIBS += -lpcap 292endif 293 294ifdef CONFIG_EAP_TLS 295# EAP-TLS 296ifeq ($(CONFIG_EAP_TLS), dyn) 297L_CFLAGS += -DEAP_TLS_DYNAMIC 298EAPDYN += src/eap_peer/eap_tls.so 299else 300L_CFLAGS += -DEAP_TLS 301OBJS += src/eap_peer/eap_tls.c 302OBJS_h += src/eap_server/eap_tls.c 303endif 304TLS_FUNCS=y 305CONFIG_IEEE8021X_EAPOL=y 306endif 307 308ifdef CONFIG_EAP_PEAP 309# EAP-PEAP 310ifeq ($(CONFIG_EAP_PEAP), dyn) 311L_CFLAGS += -DEAP_PEAP_DYNAMIC 312EAPDYN += src/eap_peer/eap_peap.so 313else 314L_CFLAGS += -DEAP_PEAP 315OBJS += src/eap_peer/eap_peap.c 316OBJS += src/eap_common/eap_peap_common.c 317OBJS_h += src/eap_server/eap_peap.c 318endif 319TLS_FUNCS=y 320CONFIG_IEEE8021X_EAPOL=y 321endif 322 323ifdef CONFIG_EAP_TTLS 324# EAP-TTLS 325ifeq ($(CONFIG_EAP_TTLS), dyn) 326L_CFLAGS += -DEAP_TTLS_DYNAMIC 327EAPDYN += src/eap_peer/eap_ttls.so 328else 329L_CFLAGS += -DEAP_TTLS 330OBJS += src/eap_peer/eap_ttls.c 331OBJS_h += src/eap_server/eap_ttls.c 332endif 333MS_FUNCS=y 334TLS_FUNCS=y 335CHAP=y 336CONFIG_IEEE8021X_EAPOL=y 337endif 338 339ifdef CONFIG_EAP_MD5 340# EAP-MD5 341ifeq ($(CONFIG_EAP_MD5), dyn) 342L_CFLAGS += -DEAP_MD5_DYNAMIC 343EAPDYN += src/eap_peer/eap_md5.so 344else 345L_CFLAGS += -DEAP_MD5 346OBJS += src/eap_peer/eap_md5.c 347OBJS_h += src/eap_server/eap_md5.c 348endif 349CHAP=y 350CONFIG_IEEE8021X_EAPOL=y 351endif 352 353# backwards compatibility for old spelling 354ifdef CONFIG_MSCHAPV2 355ifndef CONFIG_EAP_MSCHAPV2 356CONFIG_EAP_MSCHAPV2=y 357endif 358endif 359 360ifdef CONFIG_EAP_MSCHAPV2 361# EAP-MSCHAPv2 362ifeq ($(CONFIG_EAP_MSCHAPV2), dyn) 363L_CFLAGS += -DEAP_MSCHAPv2_DYNAMIC 364EAPDYN += src/eap_peer/eap_mschapv2.so 365EAPDYN += src/eap_peer/mschapv2.so 366else 367L_CFLAGS += -DEAP_MSCHAPv2 368OBJS += src/eap_peer/eap_mschapv2.c 369OBJS += src/eap_peer/mschapv2.c 370OBJS_h += src/eap_server/eap_mschapv2.c 371endif 372MS_FUNCS=y 373CONFIG_IEEE8021X_EAPOL=y 374endif 375 376ifdef CONFIG_EAP_GTC 377# EAP-GTC 378ifeq ($(CONFIG_EAP_GTC), dyn) 379L_CFLAGS += -DEAP_GTC_DYNAMIC 380EAPDYN += src/eap_peer/eap_gtc.so 381else 382L_CFLAGS += -DEAP_GTC 383OBJS += src/eap_peer/eap_gtc.c 384OBJS_h += src/eap_server/eap_gtc.c 385endif 386CONFIG_IEEE8021X_EAPOL=y 387endif 388 389ifdef CONFIG_EAP_OTP 390# EAP-OTP 391ifeq ($(CONFIG_EAP_OTP), dyn) 392L_CFLAGS += -DEAP_OTP_DYNAMIC 393EAPDYN += src/eap_peer/eap_otp.so 394else 395L_CFLAGS += -DEAP_OTP 396OBJS += src/eap_peer/eap_otp.c 397endif 398CONFIG_IEEE8021X_EAPOL=y 399endif 400 401ifdef CONFIG_EAP_SIM 402# EAP-SIM 403ifeq ($(CONFIG_EAP_SIM), dyn) 404L_CFLAGS += -DEAP_SIM_DYNAMIC 405EAPDYN += src/eap_peer/eap_sim.so 406else 407L_CFLAGS += -DEAP_SIM 408OBJS += src/eap_peer/eap_sim.c 409OBJS_h += src/eap_server/eap_sim.c 410endif 411CONFIG_IEEE8021X_EAPOL=y 412CONFIG_EAP_SIM_COMMON=y 413endif 414 415ifdef CONFIG_EAP_LEAP 416# EAP-LEAP 417ifeq ($(CONFIG_EAP_LEAP), dyn) 418L_CFLAGS += -DEAP_LEAP_DYNAMIC 419EAPDYN += src/eap_peer/eap_leap.so 420else 421L_CFLAGS += -DEAP_LEAP 422OBJS += src/eap_peer/eap_leap.c 423endif 424MS_FUNCS=y 425CONFIG_IEEE8021X_EAPOL=y 426endif 427 428ifdef CONFIG_EAP_PSK 429# EAP-PSK 430ifeq ($(CONFIG_EAP_PSK), dyn) 431L_CFLAGS += -DEAP_PSK_DYNAMIC 432EAPDYN += src/eap_peer/eap_psk.so 433else 434L_CFLAGS += -DEAP_PSK 435OBJS += src/eap_peer/eap_psk.c src/eap_common/eap_psk_common.c 436OBJS_h += src/eap_server/eap_psk.c 437endif 438CONFIG_IEEE8021X_EAPOL=y 439NEED_AES=y 440endif 441 442ifdef CONFIG_EAP_AKA 443# EAP-AKA 444ifeq ($(CONFIG_EAP_AKA), dyn) 445L_CFLAGS += -DEAP_AKA_DYNAMIC 446EAPDYN += src/eap_peer/eap_aka.so 447else 448L_CFLAGS += -DEAP_AKA 449OBJS += src/eap_peer/eap_aka.c 450OBJS_h += src/eap_server/eap_aka.c 451endif 452CONFIG_IEEE8021X_EAPOL=y 453CONFIG_EAP_SIM_COMMON=y 454endif 455 456ifdef CONFIG_EAP_AKA_PRIME 457# EAP-AKA' 458ifeq ($(CONFIG_EAP_AKA_PRIME), dyn) 459L_CFLAGS += -DEAP_AKA_PRIME_DYNAMIC 460else 461L_CFLAGS += -DEAP_AKA_PRIME 462endif 463NEED_SHA256=y 464endif 465 466ifdef CONFIG_EAP_SIM_COMMON 467OBJS += src/eap_common/eap_sim_common.c 468OBJS_h += src/eap_server/eap_sim_db.c 469NEED_AES=y 470NEED_FIPS186_2_PRF=y 471endif 472 473ifdef CONFIG_EAP_FAST 474# EAP-FAST 475ifeq ($(CONFIG_EAP_FAST), dyn) 476L_CFLAGS += -DEAP_FAST_DYNAMIC 477EAPDYN += src/eap_peer/eap_fast.so 478EAPDYN += src/eap_common/eap_fast_common.c 479else 480L_CFLAGS += -DEAP_FAST 481OBJS += src/eap_peer/eap_fast.c src/eap_peer/eap_fast_pac.c 482OBJS += src/eap_common/eap_fast_common.c 483OBJS_h += src/eap_server/eap_fast.c 484endif 485TLS_FUNCS=y 486CONFIG_IEEE8021X_EAPOL=y 487NEED_T_PRF=y 488endif 489 490ifdef CONFIG_EAP_PAX 491# EAP-PAX 492ifeq ($(CONFIG_EAP_PAX), dyn) 493L_CFLAGS += -DEAP_PAX_DYNAMIC 494EAPDYN += src/eap_peer/eap_pax.so 495else 496L_CFLAGS += -DEAP_PAX 497OBJS += src/eap_peer/eap_pax.c src/eap_common/eap_pax_common.c 498OBJS_h += src/eap_server/eap_pax.c 499endif 500CONFIG_IEEE8021X_EAPOL=y 501endif 502 503ifdef CONFIG_EAP_SAKE 504# EAP-SAKE 505ifeq ($(CONFIG_EAP_SAKE), dyn) 506L_CFLAGS += -DEAP_SAKE_DYNAMIC 507EAPDYN += src/eap_peer/eap_sake.so 508else 509L_CFLAGS += -DEAP_SAKE 510OBJS += src/eap_peer/eap_sake.c src/eap_common/eap_sake_common.c 511OBJS_h += src/eap_server/eap_sake.c 512endif 513CONFIG_IEEE8021X_EAPOL=y 514endif 515 516ifdef CONFIG_EAP_GPSK 517# EAP-GPSK 518ifeq ($(CONFIG_EAP_GPSK), dyn) 519L_CFLAGS += -DEAP_GPSK_DYNAMIC 520EAPDYN += src/eap_peer/eap_gpsk.so 521else 522L_CFLAGS += -DEAP_GPSK 523OBJS += src/eap_peer/eap_gpsk.c src/eap_common/eap_gpsk_common.c 524OBJS_h += src/eap_server/eap_gpsk.c 525endif 526CONFIG_IEEE8021X_EAPOL=y 527ifdef CONFIG_EAP_GPSK_SHA256 528CFLAGS += -DEAP_GPSK_SHA256 529endif 530NEED_SHA256=y 531endif 532 533ifdef CONFIG_WPS 534# EAP-WSC 535L_CFLAGS += -DCONFIG_WPS -DEAP_WSC 536OBJS += wps_supplicant.c 537OBJS += src/utils/uuid.c 538OBJS += src/eap_peer/eap_wsc.c src/eap_common/eap_wsc_common.c 539OBJS += src/wps/wps.c 540OBJS += src/wps/wps_common.c 541OBJS += src/wps/wps_attr_parse.c 542OBJS += src/wps/wps_attr_build.c 543OBJS += src/wps/wps_attr_process.c 544OBJS += src/wps/wps_dev_attr.c 545OBJS += src/wps/wps_enrollee.c 546OBJS += src/wps/wps_registrar.c 547OBJS_h += src/eap_server/eap_wsc.c 548CONFIG_IEEE8021X_EAPOL=y 549NEED_DH_GROUPS=y 550NEED_SHA256=y 551NEED_BASE64=y 552NEED_CRYPTO=y 553NEED_80211_COMMON=y 554 555ifdef CONFIG_WPS_UPNP 556L_CFLAGS += -DCONFIG_WPS_UPNP 557OBJS += src/wps/wps_upnp.c 558OBJS += src/wps/wps_upnp_ssdp.c 559OBJS += src/wps/wps_upnp_web.c 560OBJS += src/wps/wps_upnp_event.c 561OBJS += src/wps/httpread.c 562endif 563 564endif 565 566ifdef CONFIG_EAP_IKEV2 567# EAP-IKEv2 568ifeq ($(CONFIG_EAP_IKEV2), dyn) 569L_CFLAGS += -DEAP_IKEV2_DYNAMIC 570EAPDYN += src/eap_peer/eap_ikev2.so src/eap_peer/ikev2.c 571EAPDYN += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c 572else 573L_CFLAGS += -DEAP_IKEV2 574OBJS += src/eap_peer/eap_ikev2.c src/eap_peer/ikev2.c 575OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c 576OBJS_h += src/eap_server/eap_ikev2.c 577OBJS_h += src/eap_server/ikev2.c 578endif 579CONFIG_IEEE8021X_EAPOL=y 580NEED_DH_GROUPS=y 581NEED_DH_GROUPS_ALL=y 582endif 583 584ifdef CONFIG_EAP_VENDOR_TEST 585ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn) 586L_CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC 587EAPDYN += src/eap_peer/eap_vendor_test.so 588else 589L_CFLAGS += -DEAP_VENDOR_TEST 590OBJS += src/eap_peer/eap_vendor_test.c 591OBJS_h += src/eap_server/eap_vendor_test.c 592endif 593CONFIG_IEEE8021X_EAPOL=y 594endif 595 596ifdef CONFIG_EAP_TNC 597# EAP-TNC 598L_CFLAGS += -DEAP_TNC 599OBJS += src/eap_peer/eap_tnc.c 600OBJS += src/eap_peer/tncc.c 601NEED_BASE64=y 602ifndef CONFIG_NATIVE_WINDOWS 603ifndef CONFIG_DRIVER_BSD 604LIBS += -ldl 605endif 606endif 607endif 608 609ifdef CONFIG_IEEE8021X_EAPOL 610# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication) 611L_CFLAGS += -DIEEE8021X_EAPOL 612OBJS += src/eapol_supp/eapol_supp_sm.c src/eap_peer/eap.c src/eap_common/eap_common.c src/eap_peer/eap_methods.c 613ifdef CONFIG_DYNAMIC_EAP_METHODS 614L_CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS 615LIBS += -ldl -rdynamic 616endif 617endif 618 619ifdef CONFIG_EAP_SERVER 620L_CFLAGS += -DEAP_SERVER 621OBJS_h += src/eap_server/eap.c 622OBJS_h += src/eap_server/eap_identity.c 623OBJS_h += src/eap_server/eap_methods.c 624endif 625 626ifdef CONFIG_RADIUS_CLIENT 627OBJS_h += src/utils/ip_addr.c 628OBJS_h += src/radius/radius.c 629OBJS_h += src/radius/radius_client.c 630endif 631 632ifdef CONFIG_AUTHENTICATOR 633OBJS_h += hostapd/eapol_sm.c 634OBJS_h += hostapd/ieee802_1x.c 635endif 636 637ifdef CONFIG_WPA_AUTHENTICATOR 638OBJS_h += hostapd/wpa.c 639OBJS_h += hostapd/wpa_auth_ie.c 640ifdef CONFIG_IEEE80211R 641OBJS_h += hostapd/wpa_ft.c 642endif 643ifdef CONFIG_PEERKEY 644OBJS_h += hostapd/peerkey.c 645endif 646endif 647 648ifdef CONFIG_PCSC 649# PC/SC interface for smartcards (USIM, GSM SIM) 650L_CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC 651OBJS += src/utils/pcsc_funcs.c 652# -lpthread may not be needed depending on how pcsc-lite was configured 653ifdef CONFIG_NATIVE_WINDOWS 654#Once MinGW gets support for WinScard, -lwinscard could be used instead of the 655#dynamic symbol loading that is now used in pcsc_funcs.c 656#LIBS += -lwinscard 657else 658LIBS += -lpcsclite -lpthread 659endif 660endif 661 662ifdef CONFIG_SIM_SIMULATOR 663L_CFLAGS += -DCONFIG_SIM_SIMULATOR 664NEED_MILENAGE=y 665endif 666 667ifdef CONFIG_USIM_SIMULATOR 668L_CFLAGS += -DCONFIG_USIM_SIMULATOR 669NEED_MILENAGE=y 670endif 671 672ifdef NEED_MILENAGE 673OBJS += src/hlr_auc_gw/milenage.c 674endif 675 676ifndef CONFIG_TLS 677CONFIG_TLS=openssl 678endif 679 680ifeq ($(CONFIG_TLS), internal) 681ifndef CONFIG_CRYPTO 682CONFIG_CRYPTO=internal 683endif 684endif 685ifeq ($(CONFIG_CRYPTO), libtomcrypt) 686L_CFLAGS += -DCONFIG_INTERNAL_X509 687endif 688ifeq ($(CONFIG_CRYPTO), internal) 689L_CFLAGS += -DCONFIG_INTERNAL_X509 690endif 691 692 693ifdef TLS_FUNCS 694# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST) 695L_CFLAGS += -DEAP_TLS_FUNCS 696OBJS += src/eap_peer/eap_tls_common.c 697OBJS_h += src/eap_server/eap_tls_common.c 698NEED_TLS_PRF=y 699ifeq ($(CONFIG_TLS), openssl) 700L_CFLAGS += -DEAP_TLS_OPENSSL 701OBJS += src/crypto/tls_openssl.c 702LIBS += -lssl -lcrypto 703LIBS_p += -lcrypto 704endif 705ifeq ($(CONFIG_TLS), gnutls) 706OBJS += src/crypto/tls_gnutls.c 707LIBS += -lgnutls -lgcrypt -lgpg-error 708LIBS_p += -lgcrypt 709ifdef CONFIG_GNUTLS_EXTRA 710L_CFLAGS += -DCONFIG_GNUTLS_EXTRA 711LIBS += -lgnutls-extra 712endif 713endif 714ifeq ($(CONFIG_TLS), schannel) 715OBJS += src/crypto/tls_schannel.c 716endif 717ifeq ($(CONFIG_TLS), internal) 718OBJS += src/crypto/tls_internal.c 719OBJS += src/tls/tlsv1_common.c src/tls/tlsv1_record.c 720OBJS += src/tls/tlsv1_cred.c src/tls/tlsv1_client.c 721OBJS += src/tls/tlsv1_client_write.c src/tls/tlsv1_client_read.c 722OBJS += src/tls/asn1.c src/tls/rsa.c src/tls/x509v3.c 723OBJS_p += src/tls/asn1.c src/tls/rsa.c 724OBJS_p += src/crypto/rc4.c src/crypto/aes_wrap.c src/crypto/aes.c 725NEED_BASE64=y 726NEED_TLS_PRF=y 727L_CFLAGS += -DCONFIG_TLS_INTERNAL 728L_CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT 729ifeq ($(CONFIG_CRYPTO), internal) 730endif 731ifeq ($(CONFIG_CRYPTO), libtomcrypt) 732LIBS += -ltomcrypt -ltfm 733LIBS_p += -ltomcrypt -ltfm 734endif 735endif 736ifeq ($(CONFIG_TLS), none) 737OBJS += src/crypto/tls_none.c 738L_CFLAGS += -DEAP_TLS_NONE 739CONFIG_INTERNAL_AES=y 740CONFIG_INTERNAL_SHA1=y 741CONFIG_INTERNAL_MD5=y 742CONFIG_INTERNAL_SHA256=y 743endif 744ifdef CONFIG_SMARTCARD 745ifndef CONFIG_NATIVE_WINDOWS 746ifneq ($(CONFIG_L2_PACKET), freebsd) 747LIBS += -ldl 748endif 749endif 750endif 751NEED_CRYPTO=y 752else 753OBJS += src/crypto/tls_none.c 754endif 755 756ifdef CONFIG_PKCS12 757L_CFLAGS += -DPKCS12_FUNCS 758endif 759 760ifdef CONFIG_SMARTCARD 761L_CFLAGS += -DCONFIG_SMARTCARD 762endif 763 764ifdef MS_FUNCS 765OBJS += src/crypto/ms_funcs.c 766NEED_CRYPTO=y 767endif 768 769ifdef CHAP 770OBJS += src/eap_common/chap.c 771endif 772 773ifdef NEED_CRYPTO 774ifndef TLS_FUNCS 775ifeq ($(CONFIG_TLS), openssl) 776LIBS += -lcrypto 777LIBS_p += -lcrypto 778endif 779ifeq ($(CONFIG_TLS), gnutls) 780LIBS += -lgcrypt 781LIBS_p += -lgcrypt 782endif 783ifeq ($(CONFIG_TLS), schannel) 784endif 785ifeq ($(CONFIG_TLS), internal) 786ifeq ($(CONFIG_CRYPTO), libtomcrypt) 787LIBS += -ltomcrypt -ltfm 788LIBS_p += -ltomcrypt -ltfm 789endif 790endif 791endif 792ifeq ($(CONFIG_TLS), openssl) 793OBJS += src/crypto/crypto_openssl.c 794OBJS_p += src/crypto/crypto_openssl.c 795CONFIG_INTERNAL_SHA256=y 796endif 797ifeq ($(CONFIG_TLS), gnutls) 798OBJS += src/crypto/crypto_gnutls.c 799OBJS_p += src/crypto/crypto_gnutls.c 800CONFIG_INTERNAL_SHA256=y 801endif 802ifeq ($(CONFIG_TLS), schannel) 803OBJS += src/crypto/crypto_cryptoapi.c 804OBJS_p += src/crypto/crypto_cryptoapi.c 805CONFIG_INTERNAL_SHA256=y 806endif 807ifeq ($(CONFIG_TLS), internal) 808ifeq ($(CONFIG_CRYPTO), libtomcrypt) 809OBJS += src/crypto/crypto_libtomcrypt.c 810OBJS_p += src/crypto/crypto_libtomcrypt.c 811CONFIG_INTERNAL_SHA256=y 812endif 813ifeq ($(CONFIG_CRYPTO), internal) 814OBJS += src/crypto/crypto_internal.c src/tls/bignum.c 815OBJS_p += src/crypto/crypto_internal.c src/tls/bignum.c 816L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL 817ifdef CONFIG_INTERNAL_LIBTOMMATH 818L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 819ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 820L_CFLAGS += -DLTM_FAST 821endif 822else 823LIBS += -ltommath 824LIBS_p += -ltommath 825endif 826CONFIG_INTERNAL_AES=y 827CONFIG_INTERNAL_DES=y 828CONFIG_INTERNAL_SHA1=y 829CONFIG_INTERNAL_MD4=y 830CONFIG_INTERNAL_MD5=y 831CONFIG_INTERNAL_SHA256=y 832endif 833ifeq ($(CONFIG_CRYPTO), cryptoapi) 834OBJS += src/crypto/crypto_cryptoapi.c 835OBJS_p += src/crypto/crypto_cryptoapi.c 836L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 837CONFIG_INTERNAL_SHA256=y 838endif 839endif 840ifeq ($(CONFIG_TLS), none) 841OBJS += src/crypto/crypto_none.c 842OBJS_p += src/crypto/crypto_none.c 843CONFIG_INTERNAL_SHA256=y 844endif 845else 846CONFIG_INTERNAL_AES=y 847CONFIG_INTERNAL_SHA1=y 848CONFIG_INTERNAL_MD5=y 849endif 850 851ifdef CONFIG_INTERNAL_AES 852L_CFLAGS += -DINTERNAL_AES 853endif 854ifdef CONFIG_INTERNAL_SHA1 855L_CFLAGS += -DINTERNAL_SHA1 856endif 857ifdef CONFIG_INTERNAL_SHA256 858L_CFLAGS += -DINTERNAL_SHA256 859endif 860ifdef CONFIG_INTERNAL_MD5 861L_CFLAGS += -DINTERNAL_MD5 862endif 863ifdef CONFIG_INTERNAL_MD4 864L_CFLAGS += -DINTERNAL_MD4 865endif 866ifdef CONFIG_INTERNAL_DES 867L_CFLAGS += -DINTERNAL_DES 868endif 869 870ifdef CONFIG_IEEE80211R 871NEED_SHA256=y 872endif 873 874ifdef CONFIG_IEEE80211W 875L_CFLAGS += -DCONFIG_IEEE80211W 876NEED_SHA256=y 877endif 878 879ifdef NEED_SHA256 880OBJS += src/crypto/sha256.c 881L_CFLAGS += -DNEED_SHA256 882endif 883 884ifdef CONFIG_WIRELESS_EXTENSION 885OBJS_d += src/drivers/driver_wext.c 886endif 887 888ifdef CONFIG_CTRL_IFACE 889ifeq ($(CONFIG_CTRL_IFACE), y) 890ifdef CONFIG_NATIVE_WINDOWS 891CONFIG_CTRL_IFACE=named_pipe 892else 893CONFIG_CTRL_IFACE=unix 894endif 895endif 896L_CFLAGS += -DCONFIG_CTRL_IFACE 897ifeq ($(CONFIG_CTRL_IFACE), unix) 898L_CFLAGS += -DCONFIG_CTRL_IFACE_UNIX 899endif 900ifeq ($(CONFIG_CTRL_IFACE), udp) 901L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP 902endif 903ifeq ($(CONFIG_CTRL_IFACE), named_pipe) 904L_CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE 905endif 906OBJS += ctrl_iface.c ctrl_iface_$(CONFIG_CTRL_IFACE).c 907endif 908 909ifdef CONFIG_CTRL_IFACE_DBUS 910L_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE 911OBJS += ctrl_iface_dbus.c ctrl_iface_dbus_handlers.c dbus_dict_helpers.c 912ifndef DBUS_LIBS 913DBUS_LIBS := $(shell pkg-config --libs dbus-1) 914endif 915LIBS += $(DBUS_LIBS) 916ifndef DBUS_INCLUDE 917DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1) 918endif 919dbus_version=$(subst ., ,$(shell pkg-config --modversion dbus-1)) 920DBUS_VERSION_MAJOR=$(word 1,$(dbus_version)) 921DBUS_VERSION_MINOR=$(word 2,$(dbus_version)) 922ifeq ($(DBUS_VERSION_MAJOR),) 923DBUS_VERSION_MAJOR=0 924endif 925ifeq ($(DBUS_VERSION_MINOR),) 926DBUS_VERSION_MINOR=0 927endif 928DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR) 929DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR) 930L_CFLAGS += $(DBUS_INCLUDE) 931endif 932 933ifdef CONFIG_READLINE 934L_CFLAGS += -DCONFIG_READLINE 935LIBS_c += -lncurses -lreadline 936endif 937 938ifdef CONFIG_NATIVE_WINDOWS 939L_CFLAGS += -DCONFIG_NATIVE_WINDOWS 940LIBS += -lws2_32 -lgdi32 -lcrypt32 941LIBS_c += -lws2_32 942LIBS_p += -lws2_32 -lgdi32 943ifeq ($(CONFIG_CRYPTO), cryptoapi) 944LIBS_p += -lcrypt32 945endif 946endif 947 948ifdef CONFIG_NO_STDOUT_DEBUG 949L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 950ifndef CONFIG_CTRL_IFACE 951L_CFLAGS += -DCONFIG_NO_WPA_MSG 952endif 953endif 954 955ifdef CONFIG_IPV6 956# for eapol_test only 957L_CFLAGS += -DCONFIG_IPV6 958endif 959 960ifdef CONFIG_PEERKEY 961L_CFLAGS += -DCONFIG_PEERKEY 962endif 963 964ifdef CONFIG_IEEE80211R 965L_CFLAGS += -DCONFIG_IEEE80211R 966OBJS += src/rsn_supp/wpa_ft.c 967endif 968 969ifndef CONFIG_NO_WPA 970OBJS += src/rsn_supp/wpa.c 971OBJS += src/rsn_supp/preauth.c 972OBJS += src/rsn_supp/pmksa_cache.c 973OBJS += src/rsn_supp/peerkey.c 974OBJS += src/rsn_supp/wpa_ie.c 975OBJS += src/common/wpa_common.c 976NEED_AES=y 977else 978L_CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2 979endif 980 981ifdef CONFIG_NO_WPA2 982L_CFLAGS += -DCONFIG_NO_WPA2 983endif 984 985ifdef CONFIG_NO_WPA_PASSPHRASE 986L_CFLAGS += -DCONFIG_NO_PBKDF2 987endif 988 989ifdef CONFIG_NO_AES_EXTRAS 990L_CFLAGS += -DCONFIG_NO_AES_WRAP 991L_CFLAGS += -DCONFIG_NO_AES_CTR -DCONFIG_NO_AES_OMAC1 992L_CFLAGS += -DCONFIG_NO_AES_EAX -DCONFIG_NO_AES_CBC 993L_CFLAGS += -DCONFIG_NO_AES_ENCRYPT 994L_CFLAGS += -DCONFIG_NO_AES_ENCRYPT_BLOCK 995endif 996 997ifdef NEED_AES 998OBJS += src/crypto/aes_wrap.c src/crypto/aes.c 999endif 1000 1001ifdef NEED_DH_GROUPS 1002OBJS += src/crypto/dh_groups.c 1003ifdef NEED_DH_GROUPS_ALL 1004L_CFLAGS += -DALL_DH_GROUPS 1005endif 1006endif 1007 1008ifndef NEED_FIPS186_2_PRF 1009L_CFLAGS += -DCONFIG_NO_FIPS186_2_PRF 1010endif 1011 1012ifndef NEED_T_PRF 1013L_CFLAGS += -DCONFIG_NO_T_PRF 1014endif 1015 1016ifndef NEED_TLS_PRF 1017L_CFLAGS += -DCONFIG_NO_TLS_PRF 1018endif 1019 1020ifdef NEED_BASE64 1021OBJS += src/utils/base64.c 1022endif 1023 1024ifdef CONFIG_CLIENT_MLME 1025OBJS += mlme.c src/common/ieee802_11_common.c 1026L_CFLAGS += -DCONFIG_CLIENT_MLME 1027endif 1028 1029ifndef CONFIG_MAIN 1030CONFIG_MAIN=main 1031endif 1032 1033ifdef CONFIG_DEBUG_FILE 1034L_CFLAGS += -DCONFIG_DEBUG_FILE 1035endif 1036 1037ifdef CONFIG_ANDROID_LOG 1038L_CFLAGS += -DCONFIG_ANDROID_LOG 1039endif 1040 1041ifdef CONFIG_DELAYED_MIC_ERROR_REPORT 1042L_CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT 1043endif 1044 1045OBJS += src/drivers/scan_helpers.c 1046 1047OBJS_wpa_rm := ctrl_iface.c mlme.c ctrl_iface_unix.c 1048OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.c 1049ifdef CONFIG_AUTHENTICATOR 1050OBJS_wpa += tests/link_test.c 1051endif 1052OBJS_wpa += $(OBJS_l2) 1053OBJS += wpa_supplicant.c events.c blacklist.c wpas_glue.c scan.c 1054OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.c src/radius/radius.c src/radius/radius_client.c 1055OBJS_t += src/utils/ip_addr.c 1056OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.c 1057OBJS += $(CONFIG_MAIN).c 1058 1059ifdef CONFIG_PRIVSEP 1060OBJS_priv += $(OBJS_d) src/drivers/drivers.c src/drivers/scan_helpers.c 1061OBJS_priv += $(OBJS_l2) 1062OBJS_priv += src/utils/os_$(CONFIG_OS).c 1063OBJS_priv += src/utils/$(CONFIG_ELOOP).c 1064OBJS_priv += src/utils/common.c 1065OBJS_priv += src/utils/wpa_debug.c 1066OBJS_priv += src/utils/wpabuf.c 1067OBJS_priv += wpa_priv.c 1068ifdef CONFIG_DRIVER_TEST 1069OBJS_priv += src/crypto/sha1.c 1070OBJS_priv += src/crypto/md5.c 1071ifeq ($(CONFIG_TLS), openssl) 1072OBJS_priv += src/crypto/crypto_openssl.c 1073endif 1074ifeq ($(CONFIG_TLS), gnutls) 1075OBJS_priv += src/crypto/crypto_gnutls.c 1076endif 1077ifeq ($(CONFIG_TLS), internal) 1078ifeq ($(CONFIG_CRYPTO), libtomcrypt) 1079OBJS_priv += src/crypto/crypto_libtomcrypt.c 1080else 1081OBJS_priv += src/crypto/crypto_internal.c 1082endif 1083endif 1084endif # CONFIG_DRIVER_TEST 1085OBJS += src/l2_packet/l2_packet_privsep.c 1086OBJS += src/drivers/driver_privsep.c 1087EXTRA_progs += wpa_priv 1088else 1089OBJS += $(OBJS_d) src/drivers/drivers.c 1090OBJS += $(OBJS_l2) 1091endif 1092 1093ifdef CONFIG_NDIS_EVENTS_INTEGRATED 1094L_CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED 1095OBJS += src/drivers/ndis_events.c 1096EXTRALIBS += -loleaut32 -lole32 -luuid 1097ifdef PLATFORMSDKLIB 1098EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib 1099else 1100EXTRALIBS += WbemUuid.Lib 1101endif 1102endif 1103 1104ifndef LDO 1105LDO=$(CC) 1106endif 1107 1108ifeq ($(WPA_BUILD_SUPPLICANT),true) 1109 1110######################## 1111 1112include $(CLEAR_VARS) 1113LOCAL_MODULE := wpa_cli 1114LOCAL_MODULE_TAGS := debug 1115LOCAL_SHARED_LIBRARIES := libc libcutils 1116LOCAL_CFLAGS := $(L_CFLAGS) 1117LOCAL_SRC_FILES := $(OBJS_c) 1118LOCAL_C_INCLUDES := $(INCLUDES) 1119include $(BUILD_EXECUTABLE) 1120 1121######################## 1122include $(CLEAR_VARS) 1123LOCAL_MODULE := wpa_supplicant 1124ifdef CONFIG_DRIVER_CUSTOM 1125LOCAL_STATIC_LIBRARIES := libCustomWifi 1126endif 1127ifneq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),) 1128LOCAL_STATIC_LIBRARIES += $(BOARD_WPA_SUPPLICANT_PRIVATE_LIB) 1129endif 1130LOCAL_SHARED_LIBRARIES := libc libcutils libcrypto libssl 1131LOCAL_CFLAGS := $(L_CFLAGS) 1132LOCAL_SRC_FILES := $(OBJS) 1133LOCAL_C_INCLUDES := $(INCLUDES) 1134include $(BUILD_EXECUTABLE) 1135 1136######################## 1137# 1138#include $(CLEAR_VARS) 1139#LOCAL_MODULE := eapol_test 1140#ifdef CONFIG_DRIVER_CUSTOM 1141#LOCAL_STATIC_LIBRARIES := libCustomWifi 1142#endif 1143#LOCAL_SHARED_LIBRARIES := libc libcrypto libssl 1144#LOCAL_CFLAGS := $(L_CFLAGS) 1145#LOCAL_SRC_FILES := $(OBJS_t) 1146#LOCAL_C_INCLUDES := $(INCLUDES) 1147#include $(BUILD_EXECUTABLE) 1148# 1149######################## 1150# 1151#local_target_dir := $(TARGET_OUT)/etc/wifi 1152# 1153#include $(CLEAR_VARS) 1154#LOCAL_MODULE := wpa_supplicant.conf 1155#LOCAL_MODULE_TAGS := user 1156#LOCAL_MODULE_CLASS := ETC 1157#LOCAL_MODULE_PATH := $(local_target_dir) 1158#LOCAL_SRC_FILES := $(LOCAL_MODULE) 1159#include $(BUILD_PREBUILT) 1160# 1161######################## 1162 1163endif # ifeq ($(WPA_BUILD_SUPPLICANT),true) 1164 1165include $(CLEAR_VARS) 1166LOCAL_MODULE = libwpa_client 1167LOCAL_CFLAGS = $(L_CFLAGS) 1168LOCAL_SRC_FILES = src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c 1169LOCAL_C_INCLUDES = $(INCLUDES) 1170LOCAL_SHARED_LIBRARIES := libcutils 1171LOCAL_COPY_HEADERS_TO := libwpa_client 1172LOCAL_COPY_HEADERS := src/common/wpa_ctrl.h 1173include $(BUILD_SHARED_LIBRARY) 1174