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