Home | History | Annotate | Download | only in hostapd
      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