1# Copyright (C) 2008 The Android Open Source Project 2# 3# This software may be distributed under the terms of the BSD license. 4# See README for more details. 5# 6 7LOCAL_PATH := $(call my-dir) 8 9WPA_BUILD_HOSTAPD := false 10ifneq ($(BOARD_HOSTAPD_DRIVER),) 11 WPA_BUILD_HOSTAPD := true 12 CONFIG_DRIVER_$(BOARD_HOSTAPD_DRIVER) := y 13endif 14 15ifeq ($(WPA_BUILD_HOSTAPD),true) 16 17include $(LOCAL_PATH)/android.config 18 19# To ignore possible wrong network configurations 20L_CFLAGS = -DWPA_IGNORE_CONFIG_ERRORS 21 22L_CFLAGS += -DVERSION_STR_POSTFIX=\"-$(PLATFORM_VERSION)\" 23 24# Set Android log name 25L_CFLAGS += -DANDROID_LOG_NAME=\"hostapd\" 26 27# Disable unused parameter warnings 28L_CFLAGS += -Wno-unused-parameter 29 30# Set Android extended P2P functionality 31L_CFLAGS += -DANDROID_P2P 32 33ifeq ($(BOARD_HOSTAPD_PRIVATE_LIB),) 34L_CFLAGS += -DANDROID_LIB_STUB 35endif 36 37ifneq ($(BOARD_HOSTAPD_PRIVATE_LIB_EVENT),) 38L_CFLAGS += -DANDROID_LIB_EVENT 39endif 40 41# Use Android specific directory for control interface sockets 42L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\" 43L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/system/hostapd\" 44 45# Use Android specific directory for hostapd_cli command completion history 46L_CFLAGS += -DCONFIG_HOSTAPD_CLI_HISTORY_DIR=\"/data/misc/wifi\" 47 48# To force sizeof(enum) = 4 49ifeq ($(TARGET_ARCH),arm) 50L_CFLAGS += -mabi=aapcs-linux 51endif 52 53INCLUDES = $(LOCAL_PATH) 54INCLUDES += $(LOCAL_PATH)/src 55INCLUDES += $(LOCAL_PATH)/src/utils 56INCLUDES += system/security/keystore/include 57ifdef CONFIG_DRIVER_NL80211 58ifneq ($(wildcard external/libnl),) 59INCLUDES += external/libnl/include 60else 61INCLUDES += external/libnl-headers 62endif 63endif 64 65 66ifndef CONFIG_OS 67ifdef CONFIG_NATIVE_WINDOWS 68CONFIG_OS=win32 69else 70CONFIG_OS=unix 71endif 72endif 73 74ifeq ($(CONFIG_OS), internal) 75L_CFLAGS += -DOS_NO_C_LIB_DEFINES 76endif 77 78ifdef CONFIG_NATIVE_WINDOWS 79L_CFLAGS += -DCONFIG_NATIVE_WINDOWS 80LIBS += -lws2_32 81endif 82 83OBJS = main.c 84OBJS += config_file.c 85 86OBJS += src/ap/hostapd.c 87OBJS += src/ap/wpa_auth_glue.c 88OBJS += src/ap/drv_callbacks.c 89OBJS += src/ap/ap_drv_ops.c 90OBJS += src/ap/utils.c 91OBJS += src/ap/authsrv.c 92OBJS += src/ap/ieee802_1x.c 93OBJS += src/ap/ap_config.c 94OBJS += src/ap/eap_user_db.c 95OBJS += src/ap/ieee802_11_auth.c 96OBJS += src/ap/sta_info.c 97OBJS += src/ap/wpa_auth.c 98OBJS += src/ap/tkip_countermeasures.c 99OBJS += src/ap/ap_mlme.c 100OBJS += src/ap/wpa_auth_ie.c 101OBJS += src/ap/preauth_auth.c 102OBJS += src/ap/pmksa_cache_auth.c 103OBJS += src/ap/ieee802_11_shared.c 104OBJS += src/ap/beacon.c 105OBJS += src/ap/bss_load.c 106OBJS += src/ap/neighbor_db.c 107OBJS += src/ap/rrm.c 108OBJS_d = 109OBJS_p = 110LIBS = 111LIBS_c = 112HOBJS = 113LIBS_h = 114 115NEED_RC4=y 116NEED_AES=y 117NEED_MD5=y 118NEED_SHA1=y 119 120OBJS += src/drivers/drivers.c 121L_CFLAGS += -DHOSTAPD 122 123ifdef CONFIG_WPA_TRACE 124L_CFLAGS += -DWPA_TRACE 125OBJS += src/utils/trace.c 126HOBJS += src/utils/trace.c 127LDFLAGS += -rdynamic 128L_CFLAGS += -funwind-tables 129ifdef CONFIG_WPA_TRACE_BFD 130L_CFLAGS += -DWPA_TRACE_BFD -fno-inline -fno-optimize-sibling-calls 131LIBS += -lbfd 132LIBS_c += -lbfd 133LIBS_h += -lbfd 134endif 135endif 136 137OBJS += src/utils/eloop.c 138 139ifdef CONFIG_ELOOP_POLL 140L_CFLAGS += -DCONFIG_ELOOP_POLL 141endif 142 143ifdef CONFIG_ELOOP_EPOLL 144L_CFLAGS += -DCONFIG_ELOOP_EPOLL 145endif 146 147OBJS += src/utils/common.c 148OBJS += src/utils/wpa_debug.c 149OBJS += src/utils/wpabuf.c 150OBJS += src/utils/os_$(CONFIG_OS).c 151OBJS += src/utils/ip_addr.c 152OBJS += src/utils/crc32.c 153 154OBJS += src/common/ieee802_11_common.c 155OBJS += src/common/wpa_common.c 156OBJS += src/common/hw_features_common.c 157OBJS += src/common/ptksa_cache.c 158 159OBJS += src/eapol_auth/eapol_auth_sm.c 160 161 162ifndef CONFIG_NO_DUMP_STATE 163# define HOSTAPD_DUMP_STATE to include support for dumping internal state 164# through control interface commands (undefine it, if you want to save in 165# binary size) 166L_CFLAGS += -DHOSTAPD_DUMP_STATE 167OBJS += src/eapol_auth/eapol_auth_dump.c 168endif 169 170ifdef CONFIG_NO_RADIUS 171L_CFLAGS += -DCONFIG_NO_RADIUS 172CONFIG_NO_ACCOUNTING=y 173else 174OBJS += src/radius/radius.c 175OBJS += src/radius/radius_client.c 176OBJS += src/radius/radius_das.c 177endif 178 179ifdef CONFIG_NO_ACCOUNTING 180L_CFLAGS += -DCONFIG_NO_ACCOUNTING 181else 182OBJS += src/ap/accounting.c 183endif 184 185ifdef CONFIG_NO_VLAN 186L_CFLAGS += -DCONFIG_NO_VLAN 187else 188OBJS += src/ap/vlan_init.c 189OBJS += src/ap/vlan_ifconfig.c 190OBJS += src/ap/vlan.c 191ifdef CONFIG_FULL_DYNAMIC_VLAN 192# Define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges 193# and VLAN interfaces for the VLAN feature. 194L_CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN 195OBJS += src/ap/vlan_full.c 196ifdef CONFIG_VLAN_NETLINK 197OBJS += src/ap/vlan_util.c 198else 199OBJS += src/ap/vlan_ioctl.c 200endif 201endif 202endif 203 204ifdef CONFIG_NO_CTRL_IFACE 205L_CFLAGS += -DCONFIG_NO_CTRL_IFACE 206else 207OBJS += src/common/ctrl_iface_common.c 208OBJS += ctrl_iface.c 209OBJS += src/ap/ctrl_iface_ap.c 210endif 211 212L_CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX 213 214ifdef CONFIG_RSN_PREAUTH 215L_CFLAGS += -DCONFIG_RSN_PREAUTH 216CONFIG_L2_PACKET=y 217endif 218 219ifdef CONFIG_HS20 220CONFIG_PROXYARP=y 221endif 222 223ifdef CONFIG_PROXYARP 224CONFIG_L2_PACKET=y 225endif 226 227ifdef CONFIG_SUITEB 228L_CFLAGS += -DCONFIG_SUITEB 229endif 230 231ifdef CONFIG_SUITEB192 232L_CFLAGS += -DCONFIG_SUITEB192 233NEED_SHA384=y 234endif 235 236ifdef CONFIG_OCV 237L_CFLAGS += -DCONFIG_OCV 238OBJS += src/common/ocv.c 239endif 240 241NEED_AES_UNWRAP=y 242 243ifdef CONFIG_IEEE80211R 244L_CFLAGS += -DCONFIG_IEEE80211R -DCONFIG_IEEE80211R_AP 245OBJS += src/ap/wpa_auth_ft.c 246NEED_AES_UNWRAP=y 247NEED_AES_SIV=y 248NEED_ETH_P_OUI=y 249NEED_HMAC_SHA256_KDF=y 250endif 251 252ifdef NEED_ETH_P_OUI 253L_CFLAGS += -DCONFIG_ETH_P_OUI 254OBJS += src/ap/eth_p_oui.c 255endif 256 257ifdef CONFIG_SAE 258L_CFLAGS += -DCONFIG_SAE 259OBJS += src/common/sae.c 260ifdef CONFIG_SAE_PK 261L_CFLAGS += -DCONFIG_SAE_PK 262NEED_AES_SIV=y 263NEED_BASE64=y 264OBJS += src/common/sae_pk.c 265endif 266NEED_ECC=y 267NEED_DH_GROUPS=y 268NEED_HMAC_SHA256_KDF=y 269NEED_DRAGONFLY=y 270endif 271 272ifdef CONFIG_OWE 273L_CFLAGS += -DCONFIG_OWE 274NEED_ECC=y 275NEED_HMAC_SHA256_KDF=y 276NEED_HMAC_SHA384_KDF=y 277NEED_HMAC_SHA512_KDF=y 278NEED_SHA384=y 279NEED_SHA512=y 280endif 281 282ifdef CONFIG_FILS 283L_CFLAGS += -DCONFIG_FILS 284OBJS += src/ap/fils_hlp.c 285NEED_SHA384=y 286NEED_AES_SIV=y 287ifdef CONFIG_FILS_SK_PFS 288L_CFLAGS += -DCONFIG_FILS_SK_PFS 289NEED_ECC=y 290endif 291endif 292 293ifdef CONFIG_WNM 294L_CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP 295OBJS += src/ap/wnm_ap.c 296endif 297 298ifdef CONFIG_IEEE80211AC 299L_CFLAGS += -DCONFIG_IEEE80211AC 300endif 301 302ifdef CONFIG_IEEE80211BE 303CONFIG_IEEE80211AX=y 304L_CFLAGS += -DCONFIG_IEEE80211BE 305OBJS += src/ap/ieee802_11_eht.c 306endif 307 308ifdef CONFIG_IEEE80211AX 309L_CFLAGS += -DCONFIG_IEEE80211AX 310endif 311 312ifdef CONFIG_MBO 313L_CFLAGS += -DCONFIG_MBO 314OBJS += src/ap/mbo_ap.c 315endif 316 317ifdef CONFIG_FST 318L_CFLAGS += -DCONFIG_FST 319OBJS += src/fst/fst.c 320OBJS += src/fst/fst_group.c 321OBJS += src/fst/fst_iface.c 322OBJS += src/fst/fst_session.c 323OBJS += src/fst/fst_ctrl_aux.c 324ifdef CONFIG_FST_TEST 325L_CFLAGS += -DCONFIG_FST_TEST 326endif 327ifndef CONFIG_NO_CTRL_IFACE 328OBJS += src/fst/fst_ctrl_iface.c 329endif 330endif 331 332ifdef CONFIG_WEP 333L_CFLAGS += -DCONFIG_WEP 334endif 335 336ifdef CONFIG_NO_TKIP 337L_CFLAGS += -DCONFIG_NO_TKIP 338endif 339 340 341include $(LOCAL_PATH)/src/drivers/drivers.mk 342 343OBJS += $(DRV_AP_OBJS) 344L_CFLAGS += $(DRV_AP_CFLAGS) 345LDFLAGS += $(DRV_AP_LDFLAGS) 346LIBS += $(DRV_AP_LIBS) 347 348ifdef CONFIG_L2_PACKET 349ifdef CONFIG_DNET_PCAP 350ifdef CONFIG_L2_FREEBSD 351LIBS += -lpcap 352OBJS += src/l2_packet/l2_packet_freebsd.c 353else 354LIBS += -ldnet -lpcap 355OBJS += src/l2_packet/l2_packet_pcap.c 356endif 357else 358OBJS += src/l2_packet/l2_packet_linux.c 359endif 360else 361OBJS += src/l2_packet/l2_packet_none.c 362endif 363 364 365ifdef CONFIG_EAP_MD5 366L_CFLAGS += -DEAP_SERVER_MD5 367OBJS += src/eap_server/eap_server_md5.c 368CHAP=y 369endif 370 371ifdef CONFIG_EAP_TLS 372L_CFLAGS += -DEAP_SERVER_TLS 373OBJS += src/eap_server/eap_server_tls.c 374TLS_FUNCS=y 375endif 376 377ifdef CONFIG_EAP_UNAUTH_TLS 378L_CFLAGS += -DEAP_SERVER_UNAUTH_TLS 379ifndef CONFIG_EAP_TLS 380OBJS += src/eap_server/eap_server_tls.c 381TLS_FUNCS=y 382endif 383endif 384 385ifdef CONFIG_EAP_PEAP 386L_CFLAGS += -DEAP_SERVER_PEAP 387OBJS += src/eap_server/eap_server_peap.c 388OBJS += src/eap_common/eap_peap_common.c 389TLS_FUNCS=y 390CONFIG_EAP_MSCHAPV2=y 391endif 392 393ifdef CONFIG_EAP_TTLS 394L_CFLAGS += -DEAP_SERVER_TTLS 395OBJS += src/eap_server/eap_server_ttls.c 396TLS_FUNCS=y 397CHAP=y 398endif 399 400ifdef CONFIG_EAP_MSCHAPV2 401L_CFLAGS += -DEAP_SERVER_MSCHAPV2 402OBJS += src/eap_server/eap_server_mschapv2.c 403MS_FUNCS=y 404endif 405 406ifdef CONFIG_EAP_GTC 407L_CFLAGS += -DEAP_SERVER_GTC 408OBJS += src/eap_server/eap_server_gtc.c 409endif 410 411ifdef CONFIG_EAP_SIM 412L_CFLAGS += -DEAP_SERVER_SIM 413OBJS += src/eap_server/eap_server_sim.c 414CONFIG_EAP_SIM_COMMON=y 415NEED_AES_CBC=y 416endif 417 418ifdef CONFIG_EAP_AKA 419L_CFLAGS += -DEAP_SERVER_AKA 420OBJS += src/eap_server/eap_server_aka.c 421CONFIG_EAP_SIM_COMMON=y 422NEED_AES_CBC=y 423endif 424 425ifdef CONFIG_EAP_AKA_PRIME 426L_CFLAGS += -DEAP_SERVER_AKA_PRIME 427endif 428 429ifdef CONFIG_EAP_SIM_COMMON 430OBJS += src/eap_common/eap_sim_common.c 431# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be 432# replaced with another file implementing the interface specified in 433# eap_sim_db.h. 434OBJS += src/eap_server/eap_sim_db.c 435NEED_FIPS186_2_PRF=y 436endif 437 438ifdef CONFIG_EAP_PAX 439L_CFLAGS += -DEAP_SERVER_PAX 440OBJS += src/eap_server/eap_server_pax.c src/eap_common/eap_pax_common.c 441endif 442 443ifdef CONFIG_EAP_PSK 444L_CFLAGS += -DEAP_SERVER_PSK 445OBJS += src/eap_server/eap_server_psk.c src/eap_common/eap_psk_common.c 446NEED_AES_ENCBLOCK=y 447NEED_AES_EAX=y 448endif 449 450ifdef CONFIG_EAP_SAKE 451L_CFLAGS += -DEAP_SERVER_SAKE 452OBJS += src/eap_server/eap_server_sake.c src/eap_common/eap_sake_common.c 453endif 454 455ifdef CONFIG_EAP_GPSK 456L_CFLAGS += -DEAP_SERVER_GPSK 457OBJS += src/eap_server/eap_server_gpsk.c src/eap_common/eap_gpsk_common.c 458ifdef CONFIG_EAP_GPSK_SHA256 459L_CFLAGS += -DEAP_GPSK_SHA256 460endif 461endif 462 463ifdef CONFIG_EAP_PWD 464L_CFLAGS += -DEAP_SERVER_PWD 465OBJS += src/eap_server/eap_server_pwd.c src/eap_common/eap_pwd_common.c 466NEED_ECC=y 467NEED_DRAGONFLY=y 468endif 469 470ifdef CONFIG_EAP_EKE 471L_CFLAGS += -DEAP_SERVER_EKE 472OBJS += src/eap_server/eap_server_eke.c src/eap_common/eap_eke_common.c 473NEED_DH_GROUPS=y 474NEED_DH_GROUPS_ALL=y 475endif 476 477ifdef CONFIG_EAP_VENDOR_TEST 478L_CFLAGS += -DEAP_SERVER_VENDOR_TEST 479OBJS += src/eap_server/eap_server_vendor_test.c 480endif 481 482ifdef CONFIG_EAP_FAST 483L_CFLAGS += -DEAP_SERVER_FAST 484OBJS += src/eap_server/eap_server_fast.c 485OBJS += src/eap_common/eap_fast_common.c 486TLS_FUNCS=y 487NEED_T_PRF=y 488NEED_AES_UNWRAP=y 489endif 490 491ifdef CONFIG_EAP_TEAP 492L_CFLAGS += -DEAP_SERVER_TEAP 493OBJS += src/eap_server/eap_server_teap.c 494OBJS += src/eap_common/eap_teap_common.c 495TLS_FUNCS=y 496NEED_T_PRF=y 497NEED_SHA384=y 498NEED_TLS_PRF_SHA256=y 499NEED_TLS_PRF_SHA384=y 500NEED_AES_UNWRAP=y 501endif 502 503ifdef CONFIG_WPS 504L_CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC 505OBJS += src/utils/uuid.c 506OBJS += src/ap/wps_hostapd.c 507OBJS += src/eap_server/eap_server_wsc.c src/eap_common/eap_wsc_common.c 508OBJS += src/wps/wps.c 509OBJS += src/wps/wps_common.c 510OBJS += src/wps/wps_attr_parse.c 511OBJS += src/wps/wps_attr_build.c 512OBJS += src/wps/wps_attr_process.c 513OBJS += src/wps/wps_dev_attr.c 514OBJS += src/wps/wps_enrollee.c 515OBJS += src/wps/wps_registrar.c 516NEED_DH_GROUPS=y 517NEED_BASE64=y 518NEED_AES_CBC=y 519NEED_MODEXP=y 520CONFIG_EAP=y 521 522ifdef CONFIG_WPS_NFC 523L_CFLAGS += -DCONFIG_WPS_NFC 524OBJS += src/wps/ndef.c 525NEED_WPS_OOB=y 526endif 527 528ifdef NEED_WPS_OOB 529L_CFLAGS += -DCONFIG_WPS_OOB 530endif 531 532ifdef CONFIG_WPS_UPNP 533L_CFLAGS += -DCONFIG_WPS_UPNP 534OBJS += src/wps/wps_upnp.c 535OBJS += src/wps/wps_upnp_ssdp.c 536OBJS += src/wps/wps_upnp_web.c 537OBJS += src/wps/wps_upnp_event.c 538OBJS += src/wps/wps_upnp_ap.c 539OBJS += src/wps/upnp_xml.c 540OBJS += src/wps/httpread.c 541OBJS += src/wps/http_client.c 542OBJS += src/wps/http_server.c 543endif 544 545ifdef CONFIG_WPS_STRICT 546L_CFLAGS += -DCONFIG_WPS_STRICT 547OBJS += src/wps/wps_validate.c 548endif 549 550ifdef CONFIG_WPS_TESTING 551L_CFLAGS += -DCONFIG_WPS_TESTING 552endif 553 554endif 555 556ifdef CONFIG_DPP 557L_CFLAGS += -DCONFIG_DPP 558OBJS += src/common/dpp.c 559OBJS += src/common/dpp_auth.c 560OBJS += src/common/dpp_backup.c 561OBJS += src/common/dpp_crypto.c 562OBJS += src/common/dpp_pkex.c 563OBJS += src/common/dpp_reconfig.c 564OBJS += src/common/dpp_tcp.c 565OBJS += src/ap/dpp_hostapd.c 566OBJS += src/ap/gas_query_ap.c 567NEED_AES_SIV=y 568NEED_HMAC_SHA256_KDF=y 569NEED_HMAC_SHA384_KDF=y 570NEED_HMAC_SHA512_KDF=y 571NEED_SHA384=y 572NEED_SHA512=y 573NEED_ECC=y 574NEED_JSON=y 575NEED_GAS=y 576NEED_BASE64=y 577NEED_ASN1=y 578ifdef CONFIG_DPP2 579L_CFLAGS += -DCONFIG_DPP2 580endif 581ifdef CONFIG_DPP3 582L_CFLAGS += -DCONFIG_DPP3 583endif 584endif 585 586ifdef CONFIG_NAN_USD 587OBJS += src/common/nan_de.c 588OBJS += src/ap/nan_usd_ap.c 589L_CFLAGS += -DCONFIG_NAN_USD 590endif 591 592ifdef CONFIG_PASN 593L_CFLAGS += -DCONFIG_PASN 594L_CFLAGS += -DCONFIG_PTKSA_CACHE 595NEED_HMAC_SHA256_KDF=y 596NEED_HMAC_SHA384_KDF=y 597NEED_SHA256=y 598NEED_SHA384=y 599endif 600 601ifdef CONFIG_EAP_IKEV2 602L_CFLAGS += -DEAP_SERVER_IKEV2 603OBJS += src/eap_server/eap_server_ikev2.c src/eap_server/ikev2.c 604OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c 605NEED_DH_GROUPS=y 606NEED_DH_GROUPS_ALL=y 607NEED_MODEXP=y 608NEED_CIPHER=y 609endif 610 611ifdef CONFIG_EAP_TNC 612L_CFLAGS += -DEAP_SERVER_TNC 613OBJS += src/eap_server/eap_server_tnc.c 614OBJS += src/eap_server/tncs.c 615NEED_BASE64=y 616ifndef CONFIG_DRIVER_BSD 617LIBS += -ldl 618endif 619endif 620 621# Basic EAP functionality is needed for EAPOL 622OBJS += eap_register.c 623OBJS += src/eap_server/eap_server.c 624OBJS += src/eap_common/eap_common.c 625OBJS += src/eap_server/eap_server_methods.c 626OBJS += src/eap_server/eap_server_identity.c 627L_CFLAGS += -DEAP_SERVER_IDENTITY 628 629ifdef CONFIG_EAP 630L_CFLAGS += -DEAP_SERVER 631endif 632 633ifdef CONFIG_PKCS12 634L_CFLAGS += -DPKCS12_FUNCS 635endif 636 637ifdef NEED_DRAGONFLY 638OBJS += src/common/dragonfly.c 639endif 640 641ifdef MS_FUNCS 642OBJS += src/crypto/ms_funcs.c 643NEED_DES=y 644NEED_MD4=y 645endif 646 647ifdef CHAP 648OBJS += src/eap_common/chap.c 649endif 650 651ifdef CONFIG_RADIUS_TLS 652TLS_FUNCS=y 653L_CFLAGS += -DCONFIG_RADIUS_TLS 654endif 655 656ifdef TLS_FUNCS 657NEED_DES=y 658# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS) 659L_CFLAGS += -DEAP_TLS_FUNCS 660OBJS += src/eap_server/eap_server_tls_common.c 661NEED_TLS_PRF=y 662endif 663 664ifndef CONFIG_TLS 665CONFIG_TLS=openssl 666endif 667 668ifdef CONFIG_TLSV11 669L_CFLAGS += -DCONFIG_TLSV11 670endif 671 672ifdef CONFIG_TLSV12 673L_CFLAGS += -DCONFIG_TLSV12 674endif 675 676ifeq ($(CONFIG_TLS), openssl) 677L_CFLAGS += -DCRYPTO_RSA_OAEP_SHA256 678ifdef TLS_FUNCS 679OBJS += src/crypto/tls_openssl.c 680OBJS += src/crypto/tls_openssl_ocsp.c 681LIBS += -lssl 682endif 683OBJS += src/crypto/crypto_openssl.c 684HOBJS += src/crypto/crypto_openssl.c 685ifdef NEED_FIPS186_2_PRF 686OBJS += src/crypto/fips_prf_openssl.c 687endif 688NEED_TLS_PRF_SHA256=y 689LIBS += -lcrypto 690LIBS_h += -lcrypto 691ifndef CONFIG_TLS_DEFAULT_CIPHERS 692CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW" 693endif 694L_CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\" 695endif 696 697ifeq ($(CONFIG_TLS), gnutls) 698ifndef CONFIG_CRYPTO 699# default to libgcrypt 700CONFIG_CRYPTO=gnutls 701endif 702ifdef TLS_FUNCS 703OBJS += src/crypto/tls_gnutls.c 704LIBS += -lgnutls -lgpg-error 705endif 706OBJS += src/crypto/crypto_$(CONFIG_CRYPTO).c 707HOBJS += src/crypto/crypto_$(CONFIG_CRYPTO).c 708ifdef NEED_FIPS186_2_PRF 709OBJS += src/crypto/fips_prf_internal.c 710OBJS += src/crypto/sha1-internal.c 711endif 712ifeq ($(CONFIG_CRYPTO), gnutls) 713LIBS += -lgcrypt 714LIBS_h += -lgcrypt 715CONFIG_INTERNAL_RC4=y 716CONFIG_INTERNAL_DH_GROUP5=y 717endif 718ifeq ($(CONFIG_CRYPTO), nettle) 719LIBS += -lnettle -lgmp 720LIBS_p += -lnettle -lgmp 721CONFIG_INTERNAL_RC4=y 722CONFIG_INTERNAL_DH_GROUP5=y 723endif 724endif 725 726ifeq ($(CONFIG_TLS), internal) 727ifndef CONFIG_CRYPTO 728CONFIG_CRYPTO=internal 729endif 730ifdef TLS_FUNCS 731OBJS += src/crypto/crypto_internal-rsa.c 732OBJS += src/crypto/tls_internal.c 733OBJS += src/tls/tlsv1_common.c 734OBJS += src/tls/tlsv1_record.c 735OBJS += src/tls/tlsv1_cred.c 736OBJS += src/tls/tlsv1_server.c 737OBJS += src/tls/tlsv1_server_write.c 738OBJS += src/tls/tlsv1_server_read.c 739OBJS += src/tls/rsa.c 740OBJS += src/tls/x509v3.c 741OBJS += src/tls/pkcs1.c 742OBJS += src/tls/pkcs5.c 743OBJS += src/tls/pkcs8.c 744NEED_ASN1=y 745NEED_BASE64=y 746NEED_TLS_PRF=y 747ifdef CONFIG_TLSV12 748NEED_TLS_PRF_SHA256=y 749endif 750NEED_MODEXP=y 751NEED_CIPHER=y 752L_CFLAGS += -DCONFIG_TLS_INTERNAL 753L_CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 754endif 755ifdef NEED_CIPHER 756NEED_DES=y 757OBJS += src/crypto/crypto_internal-cipher.c 758endif 759ifdef NEED_MODEXP 760OBJS += src/crypto/crypto_internal-modexp.c 761OBJS += src/tls/bignum.c 762endif 763ifeq ($(CONFIG_CRYPTO), libtomcrypt) 764OBJS += src/crypto/crypto_libtomcrypt.c 765LIBS += -ltomcrypt -ltfm 766LIBS_h += -ltomcrypt -ltfm 767CONFIG_INTERNAL_SHA256=y 768CONFIG_INTERNAL_RC4=y 769CONFIG_INTERNAL_DH_GROUP5=y 770endif 771ifeq ($(CONFIG_CRYPTO), internal) 772OBJS += src/crypto/crypto_internal.c 773NEED_AES_DEC=y 774L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL 775ifdef CONFIG_INTERNAL_LIBTOMMATH 776L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 777ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 778L_CFLAGS += -DLTM_FAST 779endif 780else 781LIBS += -ltommath 782LIBS_h += -ltommath 783endif 784CONFIG_INTERNAL_AES=y 785CONFIG_INTERNAL_DES=y 786CONFIG_INTERNAL_SHA1=y 787CONFIG_INTERNAL_MD4=y 788CONFIG_INTERNAL_MD5=y 789CONFIG_INTERNAL_SHA256=y 790CONFIG_INTERNAL_SHA384=y 791CONFIG_INTERNAL_SHA512=y 792CONFIG_INTERNAL_RC4=y 793CONFIG_INTERNAL_DH_GROUP5=y 794endif 795ifeq ($(CONFIG_CRYPTO), cryptoapi) 796OBJS += src/crypto/crypto_cryptoapi.c 797OBJS_p += src/crypto/crypto_cryptoapi.c 798L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 799CONFIG_INTERNAL_SHA256=y 800CONFIG_INTERNAL_RC4=y 801endif 802endif 803 804ifeq ($(CONFIG_TLS), none) 805ifdef TLS_FUNCS 806OBJS += src/crypto/tls_none.c 807L_CFLAGS += -DEAP_TLS_NONE 808CONFIG_INTERNAL_AES=y 809CONFIG_INTERNAL_SHA1=y 810CONFIG_INTERNAL_MD5=y 811endif 812OBJS += src/crypto/crypto_none.c 813OBJS_p += src/crypto/crypto_none.c 814CONFIG_INTERNAL_SHA256=y 815CONFIG_INTERNAL_RC4=y 816endif 817 818ifndef TLS_FUNCS 819OBJS += src/crypto/tls_none.c 820ifeq ($(CONFIG_TLS), internal) 821CONFIG_INTERNAL_AES=y 822CONFIG_INTERNAL_SHA1=y 823CONFIG_INTERNAL_MD5=y 824CONFIG_INTERNAL_RC4=y 825endif 826endif 827 828AESOBJS = # none so far 829ifdef CONFIG_INTERNAL_AES 830AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-enc.c 831endif 832 833ifneq ($(CONFIG_TLS), openssl) 834AESOBJS += src/crypto/aes-wrap.c 835endif 836ifdef NEED_AES_EAX 837AESOBJS += src/crypto/aes-eax.c 838NEED_AES_CTR=y 839endif 840ifdef NEED_AES_SIV 841AESOBJS += src/crypto/aes-siv.c 842NEED_AES_CTR=y 843endif 844ifdef NEED_AES_CTR 845AESOBJS += src/crypto/aes-ctr.c 846endif 847ifdef NEED_AES_ENCBLOCK 848AESOBJS += src/crypto/aes-encblock.c 849endif 850ifneq ($(CONFIG_TLS), openssl) 851AESOBJS += src/crypto/aes-omac1.c 852endif 853ifdef NEED_AES_UNWRAP 854ifneq ($(CONFIG_TLS), openssl) 855NEED_AES_DEC=y 856AESOBJS += src/crypto/aes-unwrap.c 857endif 858endif 859ifdef NEED_AES_CBC 860NEED_AES_DEC=y 861ifneq ($(CONFIG_TLS), openssl) 862AESOBJS += src/crypto/aes-cbc.c 863endif 864endif 865ifdef NEED_AES_DEC 866ifdef CONFIG_INTERNAL_AES 867AESOBJS += src/crypto/aes-internal-dec.c 868endif 869endif 870ifdef NEED_AES 871OBJS += $(AESOBJS) 872endif 873 874SHA1OBJS = 875ifdef NEED_SHA1 876ifneq ($(CONFIG_TLS), openssl) 877ifneq ($(CONFIG_TLS), gnutls) 878SHA1OBJS += src/crypto/sha1.c 879endif 880endif 881SHA1OBJS += src/crypto/sha1-prf.c 882ifdef CONFIG_INTERNAL_SHA1 883SHA1OBJS += src/crypto/sha1-internal.c 884ifdef NEED_FIPS186_2_PRF 885SHA1OBJS += src/crypto/fips_prf_internal.c 886endif 887endif 888ifneq ($(CONFIG_TLS), openssl) 889SHA1OBJS += src/crypto/sha1-pbkdf2.c 890endif 891ifdef NEED_T_PRF 892SHA1OBJS += src/crypto/sha1-tprf.c 893endif 894ifdef NEED_TLS_PRF 895SHA1OBJS += src/crypto/sha1-tlsprf.c 896endif 897endif 898 899ifdef NEED_SHA1 900OBJS += $(SHA1OBJS) 901endif 902 903ifneq ($(CONFIG_TLS), openssl) 904ifneq ($(CONFIG_TLS), gnutls) 905OBJS += src/crypto/md5.c 906endif 907endif 908 909ifdef NEED_MD5 910ifdef CONFIG_INTERNAL_MD5 911OBJS += src/crypto/md5-internal.c 912HOBJS += src/crypto/md5-internal.c 913endif 914endif 915 916ifdef NEED_MD4 917ifdef CONFIG_INTERNAL_MD4 918OBJS += src/crypto/md4-internal.c 919endif 920endif 921 922ifdef NEED_DES 923ifdef CONFIG_INTERNAL_DES 924OBJS += src/crypto/des-internal.c 925endif 926endif 927 928ifdef CONFIG_NO_RC4 929L_CFLAGS += -DCONFIG_NO_RC4 930endif 931 932ifdef NEED_RC4 933ifdef CONFIG_INTERNAL_RC4 934ifndef CONFIG_NO_RC4 935OBJS += src/crypto/rc4.c 936endif 937endif 938endif 939 940ifdef CONFIG_SAE 941ifdef NEED_SHA384 942# Need to add HMAC-SHA384 KDF as well, if SHA384 was enabled. 943NEED_HMAC_SHA384_KDF=y 944endif 945ifdef NEED_SHA512 946# Need to add HMAC-SHA512 KDF as well, if SHA512 was enabled. 947NEED_HMAC_SHA512_KDF=y 948endif 949endif 950 951L_CFLAGS += -DCONFIG_SHA256 952ifneq ($(CONFIG_TLS), openssl) 953ifneq ($(CONFIG_TLS), gnutls) 954OBJS += src/crypto/sha256.c 955endif 956endif 957OBJS += src/crypto/sha256-prf.c 958ifdef CONFIG_INTERNAL_SHA256 959OBJS += src/crypto/sha256-internal.c 960endif 961ifdef NEED_TLS_PRF_SHA256 962OBJS += src/crypto/sha256-tlsprf.c 963endif 964ifdef NEED_TLS_PRF_SHA384 965OBJS += src/crypto/sha384-tlsprf.c 966endif 967ifdef NEED_HMAC_SHA256_KDF 968OBJS += src/crypto/sha256-kdf.c 969endif 970ifdef NEED_HMAC_SHA384_KDF 971OBJS += src/crypto/sha384-kdf.c 972endif 973ifdef NEED_HMAC_SHA512_KDF 974OBJS += src/crypto/sha512-kdf.c 975endif 976ifdef NEED_SHA384 977L_CFLAGS += -DCONFIG_SHA384 978ifneq ($(CONFIG_TLS), openssl) 979ifneq ($(CONFIG_TLS), gnutls) 980OBJS += src/crypto/sha384.c 981endif 982endif 983OBJS += src/crypto/sha384-prf.c 984endif 985ifdef NEED_SHA512 986L_CFLAGS += -DCONFIG_SHA512 987ifneq ($(CONFIG_TLS), openssl) 988ifneq ($(CONFIG_TLS), linux) 989ifneq ($(CONFIG_TLS), gnutls) 990OBJS += src/crypto/sha512.c 991endif 992endif 993endif 994OBJS += src/crypto/sha512-prf.c 995endif 996 997ifdef CONFIG_INTERNAL_SHA384 998L_CFLAGS += -DCONFIG_INTERNAL_SHA384 999OBJS += src/crypto/sha384-internal.c 1000endif 1001 1002ifdef CONFIG_INTERNAL_SHA512 1003L_CFLAGS += -DCONFIG_INTERNAL_SHA512 1004OBJS += src/crypto/sha512-internal.c 1005endif 1006 1007ifdef NEED_ASN1 1008OBJS += src/tls/asn1.c 1009endif 1010 1011ifdef NEED_DH_GROUPS 1012OBJS += src/crypto/dh_groups.c 1013endif 1014ifdef NEED_DH_GROUPS_ALL 1015L_CFLAGS += -DALL_DH_GROUPS 1016endif 1017ifdef CONFIG_INTERNAL_DH_GROUP5 1018ifdef NEED_DH_GROUPS 1019OBJS += src/crypto/dh_group5.c 1020endif 1021endif 1022 1023ifdef NEED_ECC 1024L_CFLAGS += -DCONFIG_ECC 1025endif 1026 1027ifdef CONFIG_NO_RANDOM_POOL 1028L_CFLAGS += -DCONFIG_NO_RANDOM_POOL 1029else 1030OBJS += src/crypto/random.c 1031HOBJS += src/crypto/random.c 1032HOBJS += src/utils/eloop.c 1033HOBJS += $(SHA1OBJS) 1034ifneq ($(CONFIG_TLS), openssl) 1035HOBJS += src/crypto/md5.c 1036endif 1037endif 1038 1039ifdef CONFIG_RADIUS_SERVER 1040L_CFLAGS += -DRADIUS_SERVER 1041OBJS += src/radius/radius_server.c 1042endif 1043 1044ifdef CONFIG_IPV6 1045L_CFLAGS += -DCONFIG_IPV6 1046endif 1047 1048ifdef CONFIG_DRIVER_RADIUS_ACL 1049L_CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL 1050endif 1051 1052ifdef NEED_BASE64 1053OBJS += src/utils/base64.c 1054endif 1055 1056ifdef NEED_JSON 1057OBJS += src/utils/json.c 1058L_CFLAGS += -DCONFIG_JSON 1059endif 1060 1061ifdef NEED_AP_MLME 1062OBJS += src/ap/wmm.c 1063OBJS += src/ap/ap_list.c 1064OBJS += src/ap/comeback_token.c 1065OBJS += src/pasn/pasn_responder.c 1066OBJS += src/pasn/pasn_common.c 1067OBJS += src/ap/ieee802_11.c 1068OBJS += src/ap/hw_features.c 1069OBJS += src/ap/dfs.c 1070L_CFLAGS += -DNEED_AP_MLME 1071endif 1072OBJS += src/ap/ieee802_11_ht.c 1073 1074ifdef CONFIG_IEEE80211AC 1075OBJS += src/ap/ieee802_11_vht.c 1076endif 1077 1078ifdef CONFIG_IEEE80211AX 1079OBJS += src/ap/ieee802_11_he.c 1080endif 1081 1082ifdef CONFIG_P2P_MANAGER 1083L_CFLAGS += -DCONFIG_P2P_MANAGER 1084OBJS += src/ap/p2p_hostapd.c 1085endif 1086 1087ifdef CONFIG_HS20 1088L_CFLAGS += -DCONFIG_HS20 1089OBJS += src/ap/hs20.c 1090CONFIG_INTERWORKING=y 1091endif 1092 1093ifdef CONFIG_INTERWORKING 1094L_CFLAGS += -DCONFIG_INTERWORKING 1095NEED_GAS=y 1096endif 1097 1098ifdef NEED_GAS 1099OBJS += src/common/gas.c 1100OBJS += src/ap/gas_serv.c 1101endif 1102 1103ifdef CONFIG_PROXYARP 1104L_CFLAGS += -DCONFIG_PROXYARP 1105OBJS += src/ap/x_snoop.c 1106OBJS += src/ap/dhcp_snoop.c 1107ifdef CONFIG_IPV6 1108OBJS += src/ap/ndisc_snoop.c 1109endif 1110endif 1111 1112OBJS += src/drivers/driver_common.c 1113 1114ifdef CONFIG_ACS 1115L_CFLAGS += -DCONFIG_ACS 1116OBJS += src/ap/acs.c 1117LIBS += -lm 1118endif 1119 1120ifdef CONFIG_NO_STDOUT_DEBUG 1121L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 1122endif 1123 1124ifdef CONFIG_DEBUG_SYSLOG 1125L_CFLAGS += -DCONFIG_DEBUG_SYSLOG 1126endif 1127 1128ifdef CONFIG_DEBUG_LINUX_TRACING 1129L_CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING 1130endif 1131 1132ifdef CONFIG_DEBUG_FILE 1133L_CFLAGS += -DCONFIG_DEBUG_FILE 1134endif 1135 1136ifdef CONFIG_ANDROID_LOG 1137L_CFLAGS += -DCONFIG_ANDROID_LOG 1138endif 1139 1140OBJS_c = hostapd_cli.c 1141OBJS_c += src/common/wpa_ctrl.c 1142OBJS_c += src/utils/os_$(CONFIG_OS).c 1143OBJS_c += src/common/cli.c 1144OBJS_c += src/utils/eloop.c 1145OBJS_c += src/utils/common.c 1146ifdef CONFIG_WPA_TRACE 1147OBJS_c += src/utils/trace.c 1148endif 1149OBJS_c += src/utils/wpa_debug.c 1150ifdef CONFIG_WPA_CLI_EDIT 1151OBJS_c += src/utils/edit.c 1152else 1153OBJS_c += src/utils/edit_simple.c 1154endif 1155 1156######################## 1157 1158include $(CLEAR_VARS) 1159LOCAL_MODULE := hostapd_cli 1160LOCAL_MODULE_TAGS := debug 1161LOCAL_PROPRIETARY_MODULE := true 1162LOCAL_SHARED_LIBRARIES := libc libcutils liblog 1163LOCAL_CFLAGS := $(L_CFLAGS) 1164LOCAL_SRC_FILES := $(OBJS_c) 1165LOCAL_C_INCLUDES := $(INCLUDES) 1166include $(BUILD_EXECUTABLE) 1167 1168######################## 1169include $(CLEAR_VARS) 1170LOCAL_MODULE := hostapd 1171LOCAL_MODULE_TAGS := optional 1172LOCAL_PROPRIETARY_MODULE := true 1173ifdef CONFIG_DRIVER_CUSTOM 1174LOCAL_STATIC_LIBRARIES := libCustomWifi 1175endif 1176ifneq ($(BOARD_HOSTAPD_PRIVATE_LIB),) 1177LOCAL_STATIC_LIBRARIES += $(BOARD_HOSTAPD_PRIVATE_LIB) 1178endif 1179LOCAL_SHARED_LIBRARIES := libc libcutils liblog libcrypto libssl 1180ifdef CONFIG_DRIVER_NL80211 1181ifneq ($(wildcard external/libnl),) 1182LOCAL_SHARED_LIBRARIES += libnl 1183else 1184LOCAL_STATIC_LIBRARIES += libnl_2 1185endif 1186endif 1187LOCAL_CFLAGS := $(L_CFLAGS) 1188LOCAL_SRC_FILES := $(OBJS) 1189LOCAL_C_INCLUDES := $(INCLUDES) 1190LOCAL_INIT_RC := hostapd.android.rc 1191include $(BUILD_EXECUTABLE) 1192 1193endif # ifeq ($(WPA_BUILD_HOSTAPD),true) 1194