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