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