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 ifeq ($(BOARD_WLAN_DEVICE), bcmdhd) 28 L_CFLAGS += -DANDROID_P2P 29 endif 30 31 ifeq ($(BOARD_WLAN_DEVICE), qcwcn) 32 L_CFLAGS += -DANDROID_QCOM_WCN 33 L_CFLAGS += -DANDROID_P2P 34 endif 35 36 # Use Android specific directory for control interface sockets 37 L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\" 38 L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/system/hostapd\" 39 40 # To force sizeof(enum) = 4 41 ifeq ($(TARGET_ARCH),arm) 42 L_CFLAGS += -mabi=aapcs-linux 43 endif 44 45 # To allow non-ASCII characters in SSID 46 L_CFLAGS += -DWPA_UNICODE_SSID 47 48 INCLUDES = $(LOCAL_PATH) 49 INCLUDES += $(LOCAL_PATH)/src 50 INCLUDES += $(LOCAL_PATH)/src/utils 51 INCLUDES += external/openssl/include 52 INCLUDES += system/security/keystore 53 ifdef CONFIG_DRIVER_NL80211 54 INCLUDES += external/libnl-headers 55 endif 56 57 58 ifndef CONFIG_OS 59 ifdef CONFIG_NATIVE_WINDOWS 60 CONFIG_OS=win32 61 else 62 CONFIG_OS=unix 63 endif 64 endif 65 66 ifeq ($(CONFIG_OS), internal) 67 L_CFLAGS += -DOS_NO_C_LIB_DEFINES 68 endif 69 70 ifdef CONFIG_NATIVE_WINDOWS 71 L_CFLAGS += -DCONFIG_NATIVE_WINDOWS 72 LIBS += -lws2_32 73 endif 74 75 OBJS = main.c 76 OBJS += config_file.c 77 78 OBJS += src/ap/hostapd.c 79 OBJS += src/ap/wpa_auth_glue.c 80 OBJS += src/ap/drv_callbacks.c 81 OBJS += src/ap/ap_drv_ops.c 82 OBJS += src/ap/utils.c 83 OBJS += src/ap/authsrv.c 84 OBJS += src/ap/ieee802_1x.c 85 OBJS += src/ap/ap_config.c 86 OBJS += src/ap/ieee802_11_auth.c 87 OBJS += src/ap/sta_info.c 88 OBJS += src/ap/wpa_auth.c 89 OBJS += src/ap/tkip_countermeasures.c 90 OBJS += src/ap/ap_mlme.c 91 OBJS += src/ap/wpa_auth_ie.c 92 OBJS += src/ap/preauth_auth.c 93 OBJS += src/ap/pmksa_cache_auth.c 94 OBJS += src/ap/ieee802_11_shared.c 95 OBJS += src/ap/beacon.c 96 OBJS_d = 97 OBJS_p = 98 LIBS = 99 LIBS_c = 100 HOBJS = 101 LIBS_h = 102 103 NEED_RC4=y 104 NEED_AES=y 105 NEED_MD5=y 106 NEED_SHA1=y 107 NEED_SHA256=y 108 109 OBJS += src/drivers/drivers.c 110 L_CFLAGS += -DHOSTAPD 111 112 ifdef CONFIG_WPA_TRACE 113 L_CFLAGS += -DWPA_TRACE 114 OBJS += src/utils/trace.c 115 HOBJS += src/utils/trace.c 116 LDFLAGS += -rdynamic 117 L_CFLAGS += -funwind-tables 118 ifdef CONFIG_WPA_TRACE_BFD 119 L_CFLAGS += -DWPA_TRACE_BFD 120 LIBS += -lbfd 121 LIBS_c += -lbfd 122 LIBS_h += -lbfd 123 endif 124 endif 125 126 OBJS += src/utils/eloop.c 127 OBJS += src/utils/common.c 128 OBJS += src/utils/wpa_debug.c 129 OBJS += src/utils/wpabuf.c 130 OBJS += src/utils/os_$(CONFIG_OS).c 131 OBJS += src/utils/ip_addr.c 132 133 OBJS += src/common/ieee802_11_common.c 134 OBJS += src/common/wpa_common.c 135 136 OBJS += src/eapol_auth/eapol_auth_sm.c 137 138 139 ifndef CONFIG_NO_DUMP_STATE 140 # define HOSTAPD_DUMP_STATE to include SIGUSR1 handler for dumping state to 141 # a file (undefine it, if you want to save in binary size) 142 L_CFLAGS += -DHOSTAPD_DUMP_STATE 143 OBJS += dump_state.c 144 OBJS += src/eapol_auth/eapol_auth_dump.c 145 endif 146 147 ifdef CONFIG_NO_RADIUS 148 L_CFLAGS += -DCONFIG_NO_RADIUS 149 CONFIG_NO_ACCOUNTING=y 150 else 151 OBJS += src/radius/radius.c 152 OBJS += src/radius/radius_client.c 153 OBJS += src/radius/radius_das.c 154 endif 155 156 ifdef CONFIG_NO_ACCOUNTING 157 L_CFLAGS += -DCONFIG_NO_ACCOUNTING 158 else 159 OBJS += src/ap/accounting.c 160 endif 161 162 ifdef CONFIG_NO_VLAN 163 L_CFLAGS += -DCONFIG_NO_VLAN 164 else 165 OBJS += src/ap/vlan_init.c 166 ifdef CONFIG_VLAN_NETLINK 167 ifdef CONFIG_FULL_DYNAMIC_VLAN 168 OBJS += src/ap/vlan_util.c 169 endif 170 L_CFLAGS += -DCONFIG_VLAN_NETLINK 171 endif 172 endif 173 174 ifdef CONFIG_NO_CTRL_IFACE 175 L_CFLAGS += -DCONFIG_NO_CTRL_IFACE 176 else 177 OBJS += ctrl_iface.c 178 OBJS += src/ap/ctrl_iface_ap.c 179 endif 180 181 OBJS += src/crypto/md5.c 182 183 L_CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX 184 185 ifdef CONFIG_IAPP 186 L_CFLAGS += -DCONFIG_IAPP 187 OBJS += src/ap/iapp.c 188 endif 189 190 ifdef CONFIG_RSN_PREAUTH 191 L_CFLAGS += -DCONFIG_RSN_PREAUTH 192 CONFIG_L2_PACKET=y 193 endif 194 195 ifdef CONFIG_PEERKEY 196 L_CFLAGS += -DCONFIG_PEERKEY 197 OBJS += src/ap/peerkey_auth.c 198 endif 199 200 ifdef CONFIG_IEEE80211W 201 L_CFLAGS += -DCONFIG_IEEE80211W 202 NEED_SHA256=y 203 NEED_AES_OMAC1=y 204 endif 205 206 ifdef CONFIG_IEEE80211R 207 L_CFLAGS += -DCONFIG_IEEE80211R 208 OBJS += src/ap/wpa_auth_ft.c 209 NEED_SHA256=y 210 NEED_AES_OMAC1=y 211 NEED_AES_UNWRAP=y 212 endif 213 214 ifdef CONFIG_IEEE80211V 215 L_CFLAGS += -DCONFIG_IEEE80211V 216 OBJS += src/ap/wnm_ap.c 217 endif 218 219 ifdef CONFIG_IEEE80211N 220 L_CFLAGS += -DCONFIG_IEEE80211N 221 endif 222 223 ifdef CONFIG_WNM 224 L_CFLAGS += -DCONFIG_WNM 225 endif 226 227 ifdef CONFIG_IEEE80211AC 228 L_CFLAGS += -DCONFIG_IEEE80211AC 229 endif 230 231 include $(LOCAL_PATH)/src/drivers/drivers.mk 232 233 OBJS += $(DRV_AP_OBJS) 234 L_CFLAGS += $(DRV_AP_CFLAGS) 235 LDFLAGS += $(DRV_AP_LDFLAGS) 236 LIBS += $(DRV_AP_LIBS) 237 238 ifdef CONFIG_L2_PACKET 239 ifdef CONFIG_DNET_PCAP 240 ifdef CONFIG_L2_FREEBSD 241 LIBS += -lpcap 242 OBJS += src/l2_packet/l2_packet_freebsd.c 243 else 244 LIBS += -ldnet -lpcap 245 OBJS += src/l2_packet/l2_packet_pcap.c 246 endif 247 else 248 OBJS += src/l2_packet/l2_packet_linux.c 249 endif 250 else 251 OBJS += src/l2_packet/l2_packet_none.c 252 endif 253 254 255 ifdef CONFIG_EAP_MD5 256 L_CFLAGS += -DEAP_SERVER_MD5 257 OBJS += src/eap_server/eap_server_md5.c 258 CHAP=y 259 endif 260 261 ifdef CONFIG_EAP_TLS 262 L_CFLAGS += -DEAP_SERVER_TLS 263 OBJS += src/eap_server/eap_server_tls.c 264 TLS_FUNCS=y 265 endif 266 267 ifdef CONFIG_EAP_UNAUTH_TLS 268 L_CFLAGS += -DEAP_SERVER_UNAUTH_TLS 269 ifndef CONFIG_EAP_TLS 270 OBJS += src/eap_server/eap_server_tls.c 271 TLS_FUNCS=y 272 endif 273 endif 274 275 ifdef CONFIG_EAP_PEAP 276 L_CFLAGS += -DEAP_SERVER_PEAP 277 OBJS += src/eap_server/eap_server_peap.c 278 OBJS += src/eap_common/eap_peap_common.c 279 TLS_FUNCS=y 280 CONFIG_EAP_MSCHAPV2=y 281 endif 282 283 ifdef CONFIG_EAP_TTLS 284 L_CFLAGS += -DEAP_SERVER_TTLS 285 OBJS += src/eap_server/eap_server_ttls.c 286 TLS_FUNCS=y 287 CHAP=y 288 endif 289 290 ifdef CONFIG_EAP_MSCHAPV2 291 L_CFLAGS += -DEAP_SERVER_MSCHAPV2 292 OBJS += src/eap_server/eap_server_mschapv2.c 293 MS_FUNCS=y 294 endif 295 296 ifdef CONFIG_EAP_GTC 297 L_CFLAGS += -DEAP_SERVER_GTC 298 OBJS += src/eap_server/eap_server_gtc.c 299 endif 300 301 ifdef CONFIG_EAP_SIM 302 L_CFLAGS += -DEAP_SERVER_SIM 303 OBJS += src/eap_server/eap_server_sim.c 304 CONFIG_EAP_SIM_COMMON=y 305 NEED_AES_CBC=y 306 endif 307 308 ifdef CONFIG_EAP_AKA 309 L_CFLAGS += -DEAP_SERVER_AKA 310 OBJS += src/eap_server/eap_server_aka.c 311 CONFIG_EAP_SIM_COMMON=y 312 NEED_SHA256=y 313 NEED_AES_CBC=y 314 endif 315 316 ifdef CONFIG_EAP_AKA_PRIME 317 L_CFLAGS += -DEAP_SERVER_AKA_PRIME 318 endif 319 320 ifdef CONFIG_EAP_SIM_COMMON 321 OBJS += src/eap_common/eap_sim_common.c 322 # Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be 323 # replaced with another file implementating the interface specified in 324 # eap_sim_db.h. 325 OBJS += src/eap_server/eap_sim_db.c 326 NEED_FIPS186_2_PRF=y 327 endif 328 329 ifdef CONFIG_EAP_PAX 330 L_CFLAGS += -DEAP_SERVER_PAX 331 OBJS += src/eap_server/eap_server_pax.c src/eap_common/eap_pax_common.c 332 endif 333 334 ifdef CONFIG_EAP_PSK 335 L_CFLAGS += -DEAP_SERVER_PSK 336 OBJS += src/eap_server/eap_server_psk.c src/eap_common/eap_psk_common.c 337 NEED_AES_OMAC1=y 338 NEED_AES_ENCBLOCK=y 339 NEED_AES_EAX=y 340 endif 341 342 ifdef CONFIG_EAP_SAKE 343 L_CFLAGS += -DEAP_SERVER_SAKE 344 OBJS += src/eap_server/eap_server_sake.c src/eap_common/eap_sake_common.c 345 endif 346 347 ifdef CONFIG_EAP_GPSK 348 L_CFLAGS += -DEAP_SERVER_GPSK 349 OBJS += src/eap_server/eap_server_gpsk.c src/eap_common/eap_gpsk_common.c 350 ifdef CONFIG_EAP_GPSK_SHA256 351 L_CFLAGS += -DEAP_SERVER_GPSK_SHA256 352 endif 353 NEED_SHA256=y 354 NEED_AES_OMAC1=y 355 endif 356 357 ifdef CONFIG_EAP_PWD 358 L_CFLAGS += -DEAP_SERVER_PWD 359 OBJS += src/eap_server/eap_server_pwd.c src/eap_common/eap_pwd_common.c 360 NEED_SHA256=y 361 endif 362 363 ifdef CONFIG_EAP_VENDOR_TEST 364 L_CFLAGS += -DEAP_SERVER_VENDOR_TEST 365 OBJS += src/eap_server/eap_server_vendor_test.c 366 endif 367 368 ifdef CONFIG_EAP_FAST 369 L_CFLAGS += -DEAP_SERVER_FAST 370 OBJS += src/eap_server/eap_server_fast.c 371 OBJS += src/eap_common/eap_fast_common.c 372 TLS_FUNCS=y 373 NEED_T_PRF=y 374 NEED_AES_UNWRAP=y 375 endif 376 377 ifdef CONFIG_WPS 378 ifdef CONFIG_WPS2 379 L_CFLAGS += -DCONFIG_WPS2 380 endif 381 382 L_CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC 383 OBJS += src/utils/uuid.c 384 OBJS += src/ap/wps_hostapd.c 385 OBJS += src/eap_server/eap_server_wsc.c src/eap_common/eap_wsc_common.c 386 OBJS += src/wps/wps.c 387 OBJS += src/wps/wps_common.c 388 OBJS += src/wps/wps_attr_parse.c 389 OBJS += src/wps/wps_attr_build.c 390 OBJS += src/wps/wps_attr_process.c 391 OBJS += src/wps/wps_dev_attr.c 392 OBJS += src/wps/wps_enrollee.c 393 OBJS += src/wps/wps_registrar.c 394 NEED_DH_GROUPS=y 395 NEED_SHA256=y 396 NEED_BASE64=y 397 NEED_AES_CBC=y 398 NEED_MODEXP=y 399 CONFIG_EAP=y 400 401 ifdef CONFIG_WPS_UFD 402 L_CFLAGS += -DCONFIG_WPS_UFD 403 OBJS += src/wps/wps_ufd.c 404 NEED_WPS_OOB=y 405 endif 406 407 ifdef CONFIG_WPS_NFC 408 L_CFLAGS += -DCONFIG_WPS_NFC 409 OBJS += src/wps/ndef.c 410 OBJS += src/wps/wps_nfc.c 411 NEED_WPS_OOB=y 412 ifdef CONFIG_WPS_NFC_PN531 413 PN531_PATH ?= /usr/local/src/nfc 414 L_CFLAGS += -DCONFIG_WPS_NFC_PN531 415 L_CFLAGS += -I${PN531_PATH}/inc 416 OBJS += src/wps/wps_nfc_pn531.c 417 LIBS += ${PN531_PATH}/lib/wpsnfc.dll 418 LIBS += ${PN531_PATH}/lib/libnfc_mapping_pn53x.dll 419 endif 420 endif 421 422 ifdef NEED_WPS_OOB 423 L_CFLAGS += -DCONFIG_WPS_OOB 424 endif 425 426 ifdef CONFIG_WPS_UPNP 427 L_CFLAGS += -DCONFIG_WPS_UPNP 428 OBJS += src/wps/wps_upnp.c 429 OBJS += src/wps/wps_upnp_ssdp.c 430 OBJS += src/wps/wps_upnp_web.c 431 OBJS += src/wps/wps_upnp_event.c 432 OBJS += src/wps/wps_upnp_ap.c 433 OBJS += src/wps/upnp_xml.c 434 OBJS += src/wps/httpread.c 435 OBJS += src/wps/http_client.c 436 OBJS += src/wps/http_server.c 437 endif 438 439 ifdef CONFIG_WPS_STRICT 440 L_CFLAGS += -DCONFIG_WPS_STRICT 441 OBJS += src/wps/wps_validate.c 442 endif 443 444 ifdef CONFIG_WPS_TESTING 445 L_CFLAGS += -DCONFIG_WPS_TESTING 446 endif 447 448 endif 449 450 ifdef CONFIG_EAP_IKEV2 451 L_CFLAGS += -DEAP_SERVER_IKEV2 452 OBJS += src/eap_server/eap_server_ikev2.c src/eap_server/ikev2.c 453 OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c 454 NEED_DH_GROUPS=y 455 NEED_DH_GROUPS_ALL=y 456 NEED_MODEXP=y 457 NEED_CIPHER=y 458 endif 459 460 ifdef CONFIG_EAP_TNC 461 L_CFLAGS += -DEAP_SERVER_TNC 462 OBJS += src/eap_server/eap_server_tnc.c 463 OBJS += src/eap_server/tncs.c 464 NEED_BASE64=y 465 ifndef CONFIG_DRIVER_BSD 466 LIBS += -ldl 467 endif 468 endif 469 470 # Basic EAP functionality is needed for EAPOL 471 OBJS += eap_register.c 472 OBJS += src/eap_server/eap_server.c 473 OBJS += src/eap_common/eap_common.c 474 OBJS += src/eap_server/eap_server_methods.c 475 OBJS += src/eap_server/eap_server_identity.c 476 L_CFLAGS += -DEAP_SERVER_IDENTITY 477 478 ifdef CONFIG_EAP 479 L_CFLAGS += -DEAP_SERVER 480 endif 481 482 ifdef CONFIG_PKCS12 483 L_CFLAGS += -DPKCS12_FUNCS 484 endif 485 486 ifdef MS_FUNCS 487 OBJS += src/crypto/ms_funcs.c 488 NEED_DES=y 489 NEED_MD4=y 490 endif 491 492 ifdef CHAP 493 OBJS += src/eap_common/chap.c 494 endif 495 496 ifdef TLS_FUNCS 497 NEED_DES=y 498 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS) 499 L_CFLAGS += -DEAP_TLS_FUNCS 500 OBJS += src/eap_server/eap_server_tls_common.c 501 NEED_TLS_PRF=y 502 endif 503 504 ifndef CONFIG_TLS 505 CONFIG_TLS=openssl 506 endif 507 508 ifdef CONFIG_TLSV11 509 L_CFLAGS += -DCONFIG_TLSV11 510 endif 511 512 ifdef CONFIG_TLSV12 513 L_CFLAGS += -DCONFIG_TLSV12 514 NEED_SHA256=y 515 endif 516 517 ifeq ($(CONFIG_TLS), openssl) 518 ifdef TLS_FUNCS 519 OBJS += src/crypto/tls_openssl.c 520 LIBS += -lssl 521 endif 522 OBJS += src/crypto/crypto_openssl.c 523 HOBJS += src/crypto/crypto_openssl.c 524 ifdef NEED_FIPS186_2_PRF 525 OBJS += src/crypto/fips_prf_openssl.c 526 endif 527 LIBS += -lcrypto 528 LIBS_h += -lcrypto 529 endif 530 531 ifeq ($(CONFIG_TLS), gnutls) 532 ifdef TLS_FUNCS 533 OBJS += src/crypto/tls_gnutls.c 534 LIBS += -lgnutls -lgpg-error 535 ifdef CONFIG_GNUTLS_EXTRA 536 L_CFLAGS += -DCONFIG_GNUTLS_EXTRA 537 LIBS += -lgnutls-extra 538 endif 539 endif 540 OBJS += src/crypto/crypto_gnutls.c 541 HOBJS += src/crypto/crypto_gnutls.c 542 ifdef NEED_FIPS186_2_PRF 543 OBJS += src/crypto/fips_prf_gnutls.c 544 endif 545 LIBS += -lgcrypt 546 LIBS_h += -lgcrypt 547 CONFIG_INTERNAL_SHA256=y 548 CONFIG_INTERNAL_RC4=y 549 CONFIG_INTERNAL_DH_GROUP5=y 550 endif 551 552 ifeq ($(CONFIG_TLS), schannel) 553 ifdef TLS_FUNCS 554 OBJS += src/crypto/tls_schannel.c 555 endif 556 OBJS += src/crypto/crypto_cryptoapi.c 557 OBJS_p += src/crypto/crypto_cryptoapi.c 558 CONFIG_INTERNAL_SHA256=y 559 CONFIG_INTERNAL_RC4=y 560 CONFIG_INTERNAL_DH_GROUP5=y 561 endif 562 563 ifeq ($(CONFIG_TLS), nss) 564 ifdef TLS_FUNCS 565 OBJS += src/crypto/tls_nss.c 566 LIBS += -lssl3 567 endif 568 OBJS += src/crypto/crypto_nss.c 569 ifdef NEED_FIPS186_2_PRF 570 OBJS += src/crypto/fips_prf_nss.c 571 endif 572 LIBS += -lnss3 573 LIBS_h += -lnss3 574 CONFIG_INTERNAL_MD4=y 575 CONFIG_INTERNAL_DH_GROUP5=y 576 endif 577 578 ifeq ($(CONFIG_TLS), internal) 579 ifndef CONFIG_CRYPTO 580 CONFIG_CRYPTO=internal 581 endif 582 ifdef TLS_FUNCS 583 OBJS += src/crypto/crypto_internal-rsa.c 584 OBJS += src/crypto/tls_internal.c 585 OBJS += src/tls/tlsv1_common.c 586 OBJS += src/tls/tlsv1_record.c 587 OBJS += src/tls/tlsv1_cred.c 588 OBJS += src/tls/tlsv1_server.c 589 OBJS += src/tls/tlsv1_server_write.c 590 OBJS += src/tls/tlsv1_server_read.c 591 OBJS += src/tls/asn1.c 592 OBJS += src/tls/rsa.c 593 OBJS += src/tls/x509v3.c 594 OBJS += src/tls/pkcs1.c 595 OBJS += src/tls/pkcs5.c 596 OBJS += src/tls/pkcs8.c 597 NEED_SHA256=y 598 NEED_BASE64=y 599 NEED_TLS_PRF=y 600 ifdef CONFIG_TLSV12 601 NEED_TLS_PRF_SHA256=y 602 endif 603 NEED_MODEXP=y 604 NEED_CIPHER=y 605 L_CFLAGS += -DCONFIG_TLS_INTERNAL 606 L_CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 607 endif 608 ifdef NEED_CIPHER 609 NEED_DES=y 610 OBJS += src/crypto/crypto_internal-cipher.c 611 endif 612 ifdef NEED_MODEXP 613 OBJS += src/crypto/crypto_internal-modexp.c 614 OBJS += src/tls/bignum.c 615 endif 616 ifeq ($(CONFIG_CRYPTO), libtomcrypt) 617 OBJS += src/crypto/crypto_libtomcrypt.c 618 LIBS += -ltomcrypt -ltfm 619 LIBS_h += -ltomcrypt -ltfm 620 CONFIG_INTERNAL_SHA256=y 621 CONFIG_INTERNAL_RC4=y 622 CONFIG_INTERNAL_DH_GROUP5=y 623 endif 624 ifeq ($(CONFIG_CRYPTO), internal) 625 OBJS += src/crypto/crypto_internal.c 626 NEED_AES_DEC=y 627 L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL 628 ifdef CONFIG_INTERNAL_LIBTOMMATH 629 L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 630 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 631 L_CFLAGS += -DLTM_FAST 632 endif 633 else 634 LIBS += -ltommath 635 LIBS_h += -ltommath 636 endif 637 CONFIG_INTERNAL_AES=y 638 CONFIG_INTERNAL_DES=y 639 CONFIG_INTERNAL_SHA1=y 640 CONFIG_INTERNAL_MD4=y 641 CONFIG_INTERNAL_MD5=y 642 CONFIG_INTERNAL_SHA256=y 643 CONFIG_INTERNAL_RC4=y 644 CONFIG_INTERNAL_DH_GROUP5=y 645 endif 646 ifeq ($(CONFIG_CRYPTO), cryptoapi) 647 OBJS += src/crypto/crypto_cryptoapi.c 648 OBJS_p += src/crypto/crypto_cryptoapi.c 649 L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 650 CONFIG_INTERNAL_SHA256=y 651 CONFIG_INTERNAL_RC4=y 652 endif 653 endif 654 655 ifeq ($(CONFIG_TLS), none) 656 ifdef TLS_FUNCS 657 OBJS += src/crypto/tls_none.c 658 L_CFLAGS += -DEAP_TLS_NONE 659 CONFIG_INTERNAL_AES=y 660 CONFIG_INTERNAL_SHA1=y 661 CONFIG_INTERNAL_MD5=y 662 endif 663 OBJS += src/crypto/crypto_none.c 664 OBJS_p += src/crypto/crypto_none.c 665 CONFIG_INTERNAL_SHA256=y 666 CONFIG_INTERNAL_RC4=y 667 endif 668 669 ifndef TLS_FUNCS 670 OBJS += src/crypto/tls_none.c 671 ifeq ($(CONFIG_TLS), internal) 672 CONFIG_INTERNAL_AES=y 673 CONFIG_INTERNAL_SHA1=y 674 CONFIG_INTERNAL_MD5=y 675 CONFIG_INTERNAL_RC4=y 676 endif 677 endif 678 679 AESOBJS = # none so far 680 ifdef CONFIG_INTERNAL_AES 681 AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-enc.c 682 endif 683 684 AESOBJS += src/crypto/aes-wrap.c 685 ifdef NEED_AES_EAX 686 AESOBJS += src/crypto/aes-eax.c 687 NEED_AES_CTR=y 688 endif 689 ifdef NEED_AES_CTR 690 AESOBJS += src/crypto/aes-ctr.c 691 endif 692 ifdef NEED_AES_ENCBLOCK 693 AESOBJS += src/crypto/aes-encblock.c 694 endif 695 ifdef NEED_AES_OMAC1 696 AESOBJS += src/crypto/aes-omac1.c 697 endif 698 ifdef NEED_AES_UNWRAP 699 NEED_AES_DEC=y 700 AESOBJS += src/crypto/aes-unwrap.c 701 endif 702 ifdef NEED_AES_CBC 703 NEED_AES_DEC=y 704 AESOBJS += src/crypto/aes-cbc.c 705 endif 706 ifdef NEED_AES_DEC 707 ifdef CONFIG_INTERNAL_AES 708 AESOBJS += src/crypto/aes-internal-dec.c 709 endif 710 endif 711 ifdef NEED_AES 712 OBJS += $(AESOBJS) 713 endif 714 715 SHA1OBJS = 716 ifdef NEED_SHA1 717 ifneq ($(CONFIG_TLS), openssl) 718 SHA1OBJS += src/crypto/sha1.c 719 endif 720 SHA1OBJS += src/crypto/sha1-prf.c 721 ifdef CONFIG_INTERNAL_SHA1 722 SHA1OBJS += src/crypto/sha1-internal.c 723 ifdef NEED_FIPS186_2_PRF 724 SHA1OBJS += src/crypto/fips_prf_internal.c 725 endif 726 endif 727 ifneq ($(CONFIG_TLS), openssl) 728 SHA1OBJS += src/crypto/sha1-pbkdf2.c 729 endif 730 ifdef NEED_T_PRF 731 SHA1OBJS += src/crypto/sha1-tprf.c 732 endif 733 ifdef NEED_TLS_PRF 734 SHA1OBJS += src/crypto/sha1-tlsprf.c 735 endif 736 endif 737 738 ifdef NEED_SHA1 739 OBJS += $(SHA1OBJS) 740 endif 741 742 ifdef NEED_MD5 743 ifdef CONFIG_INTERNAL_MD5 744 OBJS += src/crypto/md5-internal.c 745 HOBJS += src/crypto/md5-internal.c 746 endif 747 endif 748 749 ifdef NEED_MD4 750 ifdef CONFIG_INTERNAL_MD4 751 OBJS += src/crypto/md4-internal.c 752 endif 753 endif 754 755 ifdef NEED_DES 756 ifdef CONFIG_INTERNAL_DES 757 OBJS += src/crypto/des-internal.c 758 endif 759 endif 760 761 ifdef NEED_RC4 762 ifdef CONFIG_INTERNAL_RC4 763 OBJS += src/crypto/rc4.c 764 endif 765 endif 766 767 ifdef NEED_SHA256 768 L_CFLAGS += -DCONFIG_SHA256 769 ifneq ($(CONFIG_TLS), openssl) 770 OBJS += src/crypto/sha256.c 771 endif 772 OBJS += src/crypto/sha256-prf.c 773 ifdef CONFIG_INTERNAL_SHA256 774 OBJS += src/crypto/sha256-internal.c 775 endif 776 ifdef NEED_TLS_PRF_SHA256 777 OBJS += src/crypto/sha256-tlsprf.c 778 endif 779 endif 780 781 ifdef NEED_DH_GROUPS 782 OBJS += src/crypto/dh_groups.c 783 endif 784 ifdef NEED_DH_GROUPS_ALL 785 L_CFLAGS += -DALL_DH_GROUPS 786 endif 787 ifdef CONFIG_INTERNAL_DH_GROUP5 788 ifdef NEED_DH_GROUPS 789 OBJS += src/crypto/dh_group5.c 790 endif 791 endif 792 793 ifdef CONFIG_NO_RANDOM_POOL 794 L_CFLAGS += -DCONFIG_NO_RANDOM_POOL 795 else 796 OBJS += src/crypto/random.c 797 HOBJS += src/crypto/random.c 798 HOBJS += src/utils/eloop.c 799 HOBJS += $(SHA1OBJS) 800 HOBJS += src/crypto/md5.c 801 endif 802 803 ifdef CONFIG_RADIUS_SERVER 804 L_CFLAGS += -DRADIUS_SERVER 805 OBJS += src/radius/radius_server.c 806 endif 807 808 ifdef CONFIG_IPV6 809 L_CFLAGS += -DCONFIG_IPV6 810 endif 811 812 ifdef CONFIG_DRIVER_RADIUS_ACL 813 L_CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL 814 endif 815 816 ifdef CONFIG_FULL_DYNAMIC_VLAN 817 # define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges 818 # and vlan interfaces for the vlan feature. 819 L_CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN 820 endif 821 822 ifdef NEED_BASE64 823 OBJS += src/utils/base64.c 824 endif 825 826 ifdef NEED_AP_MLME 827 OBJS += src/ap/wmm.c 828 OBJS += src/ap/ap_list.c 829 OBJS += src/ap/ieee802_11.c 830 OBJS += src/ap/hw_features.c 831 L_CFLAGS += -DNEED_AP_MLME 832 endif 833 ifdef CONFIG_IEEE80211N 834 OBJS += src/ap/ieee802_11_ht.c 835 endif 836 837 ifdef CONFIG_IEEE80211AC 838 OBJS += src/ap/ieee802_11_vht.c 839 endif 840 841 ifdef CONFIG_P2P_MANAGER 842 L_CFLAGS += -DCONFIG_P2P_MANAGER 843 OBJS += src/ap/p2p_hostapd.c 844 endif 845 846 ifdef CONFIG_HS20 847 L_CFLAGS += -DCONFIG_HS20 848 OBJS += src/ap/hs20.c 849 CONFIG_INTERWORKING=y 850 endif 851 852 ifdef CONFIG_INTERWORKING 853 L_CFLAGS += -DCONFIG_INTERWORKING 854 OBJS += src/common/gas.c 855 OBJS += src/ap/gas_serv.c 856 endif 857 858 OBJS += src/drivers/driver_common.c 859 860 ifdef CONFIG_NO_STDOUT_DEBUG 861 L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 862 endif 863 864 ifdef CONFIG_DEBUG_FILE 865 L_CFLAGS += -DCONFIG_DEBUG_FILE 866 endif 867 868 ifdef CONFIG_ANDROID_LOG 869 L_CFLAGS += -DCONFIG_ANDROID_LOG 870 endif 871 872 OBJS_c = hostapd_cli.c src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c 873 OBJS_c += src/utils/eloop.c 874 ifdef CONFIG_WPA_TRACE 875 OBJS_c += src/utils/trace.c 876 endif 877 OBJS_c += src/utils/wpa_debug.c 878 ifdef CONFIG_WPA_CLI_EDIT 879 OBJS_c += src/utils/edit.c 880 else 881 OBJS_c += src/utils/edit_simple.c 882 endif 883 884 ######################## 885 886 include $(CLEAR_VARS) 887 LOCAL_MODULE := hostapd_cli 888 LOCAL_MODULE_TAGS := debug 889 LOCAL_SHARED_LIBRARIES := libc libcutils 890 LOCAL_CFLAGS := $(L_CFLAGS) 891 LOCAL_SRC_FILES := $(OBJS_c) 892 LOCAL_C_INCLUDES := $(INCLUDES) 893 include $(BUILD_EXECUTABLE) 894 895 ######################## 896 include $(CLEAR_VARS) 897 LOCAL_MODULE := hostapd 898 LOCAL_MODULE_TAGS := optional 899 ifdef CONFIG_DRIVER_CUSTOM 900 LOCAL_STATIC_LIBRARIES := libCustomWifi 901 endif 902 ifneq ($(BOARD_HOSTAPD_PRIVATE_LIB),) 903 LOCAL_STATIC_LIBRARIES += $(BOARD_HOSTAPD_PRIVATE_LIB) 904 endif 905 LOCAL_SHARED_LIBRARIES := libc libcutils libcrypto libssl 906 ifdef CONFIG_DRIVER_NL80211 907 LOCAL_STATIC_LIBRARIES += libnl_2 908 endif 909 LOCAL_CFLAGS := $(L_CFLAGS) 910 LOCAL_SRC_FILES := $(OBJS) 911 LOCAL_C_INCLUDES := $(INCLUDES) 912 include $(BUILD_EXECUTABLE) 913 914 endif # ifeq ($(WPA_BUILD_HOSTAPD),true) 915