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