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