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