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