Home | History | Annotate | Line # | Download | only in hostapd
Android.mk revision 1.1.1.6.2.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_OCV
    239 L_CFLAGS += -DCONFIG_OCV
    240 OBJS += src/common/ocv.c
    241 CONFIG_IEEE80211W=y
    242 endif
    243 
    244 ifdef CONFIG_IEEE80211W
    245 L_CFLAGS += -DCONFIG_IEEE80211W
    246 NEED_SHA256=y
    247 NEED_AES_OMAC1=y
    248 endif
    249 
    250 ifdef CONFIG_IEEE80211R
    251 L_CFLAGS += -DCONFIG_IEEE80211R -DCONFIG_IEEE80211R_AP
    252 OBJS += src/ap/wpa_auth_ft.c
    253 NEED_SHA256=y
    254 NEED_AES_OMAC1=y
    255 NEED_AES_UNWRAP=y
    256 NEED_AES_SIV=y
    257 NEED_ETH_P_OUI=y
    258 NEED_SHA256=y
    259 NEED_HMAC_SHA256_KDF=y
    260 endif
    261 
    262 ifdef NEED_ETH_P_OUI
    263 L_CFLAGS += -DCONFIG_ETH_P_OUI
    264 OBJS += src/ap/eth_p_oui.c
    265 endif
    266 
    267 ifdef CONFIG_SAE
    268 L_CFLAGS += -DCONFIG_SAE
    269 OBJS += src/common/sae.c
    270 NEED_ECC=y
    271 NEED_DH_GROUPS=y
    272 NEED_DRAGONFLY=y
    273 endif
    274 
    275 ifdef CONFIG_OWE
    276 L_CFLAGS += -DCONFIG_OWE
    277 NEED_ECC=y
    278 NEED_HMAC_SHA256_KDF=y
    279 NEED_HMAC_SHA384_KDF=y
    280 NEED_HMAC_SHA512_KDF=y
    281 NEED_SHA256=y
    282 NEED_SHA384=y
    283 NEED_SHA512=y
    284 endif
    285 
    286 ifdef CONFIG_FILS
    287 L_CFLAGS += -DCONFIG_FILS
    288 OBJS += src/ap/fils_hlp.c
    289 NEED_SHA384=y
    290 NEED_AES_SIV=y
    291 ifdef CONFIG_FILS_SK_PFS
    292 L_CFLAGS += -DCONFIG_FILS_SK_PFS
    293 NEED_ECC=y
    294 endif
    295 endif
    296 
    297 ifdef CONFIG_WNM
    298 L_CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP
    299 OBJS += src/ap/wnm_ap.c
    300 endif
    301 
    302 ifdef CONFIG_IEEE80211N
    303 L_CFLAGS += -DCONFIG_IEEE80211N
    304 endif
    305 
    306 ifdef CONFIG_IEEE80211AC
    307 L_CFLAGS += -DCONFIG_IEEE80211AC
    308 endif
    309 
    310 ifdef CONFIG_IEEE80211AX
    311 L_CFLAGS += -DCONFIG_IEEE80211AX
    312 endif
    313 
    314 ifdef CONFIG_MBO
    315 L_CFLAGS += -DCONFIG_MBO
    316 OBJS += src/ap/mbo_ap.c
    317 endif
    318 
    319 ifdef CONFIG_FST
    320 L_CFLAGS += -DCONFIG_FST
    321 OBJS += src/fst/fst.c
    322 OBJS += src/fst/fst_group.c
    323 OBJS += src/fst/fst_iface.c
    324 OBJS += src/fst/fst_session.c
    325 OBJS += src/fst/fst_ctrl_aux.c
    326 ifdef CONFIG_FST_TEST
    327 L_CFLAGS += -DCONFIG_FST_TEST
    328 endif
    329 ifndef CONFIG_NO_CTRL_IFACE
    330 OBJS += src/fst/fst_ctrl_iface.c
    331 endif
    332 endif
    333 
    334 
    335 include $(LOCAL_PATH)/src/drivers/drivers.mk
    336 
    337 OBJS += $(DRV_AP_OBJS)
    338 L_CFLAGS += $(DRV_AP_CFLAGS)
    339 LDFLAGS += $(DRV_AP_LDFLAGS)
    340 LIBS += $(DRV_AP_LIBS)
    341 
    342 ifdef CONFIG_L2_PACKET
    343 ifdef CONFIG_DNET_PCAP
    344 ifdef CONFIG_L2_FREEBSD
    345 LIBS += -lpcap
    346 OBJS += src/l2_packet/l2_packet_freebsd.c
    347 else
    348 LIBS += -ldnet -lpcap
    349 OBJS += src/l2_packet/l2_packet_pcap.c
    350 endif
    351 else
    352 OBJS += src/l2_packet/l2_packet_linux.c
    353 endif
    354 else
    355 OBJS += src/l2_packet/l2_packet_none.c
    356 endif
    357 
    358 
    359 ifdef CONFIG_EAP_MD5
    360 L_CFLAGS += -DEAP_SERVER_MD5
    361 OBJS += src/eap_server/eap_server_md5.c
    362 CHAP=y
    363 endif
    364 
    365 ifdef CONFIG_EAP_TLS
    366 L_CFLAGS += -DEAP_SERVER_TLS
    367 OBJS += src/eap_server/eap_server_tls.c
    368 TLS_FUNCS=y
    369 endif
    370 
    371 ifdef CONFIG_EAP_UNAUTH_TLS
    372 L_CFLAGS += -DEAP_SERVER_UNAUTH_TLS
    373 ifndef CONFIG_EAP_TLS
    374 OBJS += src/eap_server/eap_server_tls.c
    375 TLS_FUNCS=y
    376 endif
    377 endif
    378 
    379 ifdef CONFIG_EAP_PEAP
    380 L_CFLAGS += -DEAP_SERVER_PEAP
    381 OBJS += src/eap_server/eap_server_peap.c
    382 OBJS += src/eap_common/eap_peap_common.c
    383 TLS_FUNCS=y
    384 CONFIG_EAP_MSCHAPV2=y
    385 endif
    386 
    387 ifdef CONFIG_EAP_TTLS
    388 L_CFLAGS += -DEAP_SERVER_TTLS
    389 OBJS += src/eap_server/eap_server_ttls.c
    390 TLS_FUNCS=y
    391 CHAP=y
    392 endif
    393 
    394 ifdef CONFIG_EAP_MSCHAPV2
    395 L_CFLAGS += -DEAP_SERVER_MSCHAPV2
    396 OBJS += src/eap_server/eap_server_mschapv2.c
    397 MS_FUNCS=y
    398 endif
    399 
    400 ifdef CONFIG_EAP_GTC
    401 L_CFLAGS += -DEAP_SERVER_GTC
    402 OBJS += src/eap_server/eap_server_gtc.c
    403 endif
    404 
    405 ifdef CONFIG_EAP_SIM
    406 L_CFLAGS += -DEAP_SERVER_SIM
    407 OBJS += src/eap_server/eap_server_sim.c
    408 CONFIG_EAP_SIM_COMMON=y
    409 NEED_AES_CBC=y
    410 endif
    411 
    412 ifdef CONFIG_EAP_AKA
    413 L_CFLAGS += -DEAP_SERVER_AKA
    414 OBJS += src/eap_server/eap_server_aka.c
    415 CONFIG_EAP_SIM_COMMON=y
    416 NEED_SHA256=y
    417 NEED_AES_CBC=y
    418 endif
    419 
    420 ifdef CONFIG_EAP_AKA_PRIME
    421 L_CFLAGS += -DEAP_SERVER_AKA_PRIME
    422 endif
    423 
    424 ifdef CONFIG_EAP_SIM_COMMON
    425 OBJS += src/eap_common/eap_sim_common.c
    426 # Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
    427 # replaced with another file implementating the interface specified in
    428 # eap_sim_db.h.
    429 OBJS += src/eap_server/eap_sim_db.c
    430 NEED_FIPS186_2_PRF=y
    431 endif
    432 
    433 ifdef CONFIG_EAP_PAX
    434 L_CFLAGS += -DEAP_SERVER_PAX
    435 OBJS += src/eap_server/eap_server_pax.c src/eap_common/eap_pax_common.c
    436 endif
    437 
    438 ifdef CONFIG_EAP_PSK
    439 L_CFLAGS += -DEAP_SERVER_PSK
    440 OBJS += src/eap_server/eap_server_psk.c src/eap_common/eap_psk_common.c
    441 NEED_AES_OMAC1=y
    442 NEED_AES_ENCBLOCK=y
    443 NEED_AES_EAX=y
    444 endif
    445 
    446 ifdef CONFIG_EAP_SAKE
    447 L_CFLAGS += -DEAP_SERVER_SAKE
    448 OBJS += src/eap_server/eap_server_sake.c src/eap_common/eap_sake_common.c
    449 endif
    450 
    451 ifdef CONFIG_EAP_GPSK
    452 L_CFLAGS += -DEAP_SERVER_GPSK
    453 OBJS += src/eap_server/eap_server_gpsk.c src/eap_common/eap_gpsk_common.c
    454 ifdef CONFIG_EAP_GPSK_SHA256
    455 L_CFLAGS += -DEAP_GPSK_SHA256
    456 endif
    457 NEED_SHA256=y
    458 NEED_AES_OMAC1=y
    459 endif
    460 
    461 ifdef CONFIG_EAP_PWD
    462 L_CFLAGS += -DEAP_SERVER_PWD
    463 OBJS += src/eap_server/eap_server_pwd.c src/eap_common/eap_pwd_common.c
    464 NEED_SHA256=y
    465 NEED_ECC=y
    466 NEED_DRAGONFLY=y
    467 endif
    468 
    469 ifdef CONFIG_EAP_EKE
    470 L_CFLAGS += -DEAP_SERVER_EKE
    471 OBJS += src/eap_server/eap_server_eke.c src/eap_common/eap_eke_common.c
    472 NEED_DH_GROUPS=y
    473 NEED_DH_GROUPS_ALL=y
    474 endif
    475 
    476 ifdef CONFIG_EAP_VENDOR_TEST
    477 L_CFLAGS += -DEAP_SERVER_VENDOR_TEST
    478 OBJS += src/eap_server/eap_server_vendor_test.c
    479 endif
    480 
    481 ifdef CONFIG_EAP_FAST
    482 L_CFLAGS += -DEAP_SERVER_FAST
    483 OBJS += src/eap_server/eap_server_fast.c
    484 OBJS += src/eap_common/eap_fast_common.c
    485 TLS_FUNCS=y
    486 NEED_T_PRF=y
    487 NEED_AES_UNWRAP=y
    488 endif
    489 
    490 ifdef CONFIG_EAP_TEAP
    491 L_CFLAGS += -DEAP_SERVER_TEAP
    492 OBJS += src/eap_server/eap_server_teap.c
    493 OBJS += src/eap_common/eap_teap_common.c
    494 TLS_FUNCS=y
    495 NEED_T_PRF=y
    496 NEED_SHA384=y
    497 NEED_AES_UNWRAP=y
    498 endif
    499 
    500 ifdef CONFIG_WPS
    501 L_CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
    502 OBJS += src/utils/uuid.c
    503 OBJS += src/ap/wps_hostapd.c
    504 OBJS += src/eap_server/eap_server_wsc.c src/eap_common/eap_wsc_common.c
    505 OBJS += src/wps/wps.c
    506 OBJS += src/wps/wps_common.c
    507 OBJS += src/wps/wps_attr_parse.c
    508 OBJS += src/wps/wps_attr_build.c
    509 OBJS += src/wps/wps_attr_process.c
    510 OBJS += src/wps/wps_dev_attr.c
    511 OBJS += src/wps/wps_enrollee.c
    512 OBJS += src/wps/wps_registrar.c
    513 NEED_DH_GROUPS=y
    514 NEED_SHA256=y
    515 NEED_BASE64=y
    516 NEED_AES_CBC=y
    517 NEED_MODEXP=y
    518 CONFIG_EAP=y
    519 
    520 ifdef CONFIG_WPS_NFC
    521 L_CFLAGS += -DCONFIG_WPS_NFC
    522 OBJS += src/wps/ndef.c
    523 NEED_WPS_OOB=y
    524 endif
    525 
    526 ifdef NEED_WPS_OOB
    527 L_CFLAGS += -DCONFIG_WPS_OOB
    528 endif
    529 
    530 ifdef CONFIG_WPS_UPNP
    531 L_CFLAGS += -DCONFIG_WPS_UPNP
    532 OBJS += src/wps/wps_upnp.c
    533 OBJS += src/wps/wps_upnp_ssdp.c
    534 OBJS += src/wps/wps_upnp_web.c
    535 OBJS += src/wps/wps_upnp_event.c
    536 OBJS += src/wps/wps_upnp_ap.c
    537 OBJS += src/wps/upnp_xml.c
    538 OBJS += src/wps/httpread.c
    539 OBJS += src/wps/http_client.c
    540 OBJS += src/wps/http_server.c
    541 endif
    542 
    543 ifdef CONFIG_WPS_STRICT
    544 L_CFLAGS += -DCONFIG_WPS_STRICT
    545 OBJS += src/wps/wps_validate.c
    546 endif
    547 
    548 ifdef CONFIG_WPS_TESTING
    549 L_CFLAGS += -DCONFIG_WPS_TESTING
    550 endif
    551 
    552 endif
    553 
    554 ifdef CONFIG_DPP
    555 L_CFLAGS += -DCONFIG_DPP
    556 OBJS += src/common/dpp.c
    557 OBJS += src/ap/dpp_hostapd.c
    558 OBJS += src/ap/gas_query_ap.c
    559 NEED_AES_SIV=y
    560 NEED_HMAC_SHA256_KDF=y
    561 NEED_HMAC_SHA384_KDF=y
    562 NEED_HMAC_SHA512_KDF=y
    563 NEED_SHA256=y
    564 NEED_SHA384=y
    565 NEED_SHA512=y
    566 NEED_JSON=y
    567 NEED_GAS=y
    568 NEED_BASE64=y
    569 ifdef CONFIG_DPP2
    570 L_CFLAGS += -DCONFIG_DPP2
    571 endif
    572 endif
    573 
    574 ifdef CONFIG_EAP_IKEV2
    575 L_CFLAGS += -DEAP_SERVER_IKEV2
    576 OBJS += src/eap_server/eap_server_ikev2.c src/eap_server/ikev2.c
    577 OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
    578 NEED_DH_GROUPS=y
    579 NEED_DH_GROUPS_ALL=y
    580 NEED_MODEXP=y
    581 NEED_CIPHER=y
    582 endif
    583 
    584 ifdef CONFIG_EAP_TNC
    585 L_CFLAGS += -DEAP_SERVER_TNC
    586 OBJS += src/eap_server/eap_server_tnc.c
    587 OBJS += src/eap_server/tncs.c
    588 NEED_BASE64=y
    589 ifndef CONFIG_DRIVER_BSD
    590 LIBS += -ldl
    591 endif
    592 endif
    593 
    594 # Basic EAP functionality is needed for EAPOL
    595 OBJS += eap_register.c
    596 OBJS += src/eap_server/eap_server.c
    597 OBJS += src/eap_common/eap_common.c
    598 OBJS += src/eap_server/eap_server_methods.c
    599 OBJS += src/eap_server/eap_server_identity.c
    600 L_CFLAGS += -DEAP_SERVER_IDENTITY
    601 
    602 ifdef CONFIG_EAP
    603 L_CFLAGS += -DEAP_SERVER
    604 endif
    605 
    606 ifdef CONFIG_PKCS12
    607 L_CFLAGS += -DPKCS12_FUNCS
    608 endif
    609 
    610 ifdef NEED_DRAGONFLY
    611 OBJS += src/common/dragonfly.c
    612 endif
    613 
    614 ifdef MS_FUNCS
    615 OBJS += src/crypto/ms_funcs.c
    616 NEED_DES=y
    617 NEED_MD4=y
    618 endif
    619 
    620 ifdef CHAP
    621 OBJS += src/eap_common/chap.c
    622 endif
    623 
    624 ifdef TLS_FUNCS
    625 NEED_DES=y
    626 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
    627 L_CFLAGS += -DEAP_TLS_FUNCS
    628 OBJS += src/eap_server/eap_server_tls_common.c
    629 NEED_TLS_PRF=y
    630 endif
    631 
    632 ifndef CONFIG_TLS
    633 CONFIG_TLS=openssl
    634 endif
    635 
    636 ifdef CONFIG_TLSV11
    637 L_CFLAGS += -DCONFIG_TLSV11
    638 endif
    639 
    640 ifdef CONFIG_TLSV12
    641 L_CFLAGS += -DCONFIG_TLSV12
    642 NEED_SHA256=y
    643 endif
    644 
    645 ifeq ($(CONFIG_TLS), openssl)
    646 ifdef TLS_FUNCS
    647 OBJS += src/crypto/tls_openssl.c
    648 OBJS += src/crypto/tls_openssl_ocsp.c
    649 LIBS += -lssl
    650 endif
    651 OBJS += src/crypto/crypto_openssl.c
    652 HOBJS += src/crypto/crypto_openssl.c
    653 ifdef NEED_FIPS186_2_PRF
    654 OBJS += src/crypto/fips_prf_openssl.c
    655 endif
    656 NEED_SHA256=y
    657 NEED_TLS_PRF_SHA256=y
    658 LIBS += -lcrypto
    659 LIBS_h += -lcrypto
    660 ifndef CONFIG_TLS_DEFAULT_CIPHERS
    661 CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW"
    662 endif
    663 L_CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\"
    664 endif
    665 
    666 ifeq ($(CONFIG_TLS), gnutls)
    667 ifndef CONFIG_CRYPTO
    668 # default to libgcrypt
    669 CONFIG_CRYPTO=gnutls
    670 endif
    671 ifdef TLS_FUNCS
    672 OBJS += src/crypto/tls_gnutls.c
    673 LIBS += -lgnutls -lgpg-error
    674 endif
    675 OBJS += src/crypto/crypto_$(CONFIG_CRYPTO).c
    676 HOBJS += src/crypto/crypto_$(CONFIG_CRYPTO).c
    677 ifdef NEED_FIPS186_2_PRF
    678 OBJS += src/crypto/fips_prf_internal.c
    679 OBJS += src/crypto/sha1-internal.c
    680 endif
    681 ifeq ($(CONFIG_CRYPTO), gnutls)
    682 LIBS += -lgcrypt
    683 LIBS_h += -lgcrypt
    684 CONFIG_INTERNAL_RC4=y
    685 CONFIG_INTERNAL_DH_GROUP5=y
    686 endif
    687 ifeq ($(CONFIG_CRYPTO), nettle)
    688 LIBS += -lnettle -lgmp
    689 LIBS_p += -lnettle -lgmp
    690 CONFIG_INTERNAL_RC4=y
    691 CONFIG_INTERNAL_DH_GROUP5=y
    692 endif
    693 endif
    694 
    695 ifeq ($(CONFIG_TLS), internal)
    696 ifndef CONFIG_CRYPTO
    697 CONFIG_CRYPTO=internal
    698 endif
    699 ifdef TLS_FUNCS
    700 OBJS += src/crypto/crypto_internal-rsa.c
    701 OBJS += src/crypto/tls_internal.c
    702 OBJS += src/tls/tlsv1_common.c
    703 OBJS += src/tls/tlsv1_record.c
    704 OBJS += src/tls/tlsv1_cred.c
    705 OBJS += src/tls/tlsv1_server.c
    706 OBJS += src/tls/tlsv1_server_write.c
    707 OBJS += src/tls/tlsv1_server_read.c
    708 OBJS += src/tls/asn1.c
    709 OBJS += src/tls/rsa.c
    710 OBJS += src/tls/x509v3.c
    711 OBJS += src/tls/pkcs1.c
    712 OBJS += src/tls/pkcs5.c
    713 OBJS += src/tls/pkcs8.c
    714 NEED_SHA256=y
    715 NEED_BASE64=y
    716 NEED_TLS_PRF=y
    717 ifdef CONFIG_TLSV12
    718 NEED_TLS_PRF_SHA256=y
    719 endif
    720 NEED_MODEXP=y
    721 NEED_CIPHER=y
    722 L_CFLAGS += -DCONFIG_TLS_INTERNAL
    723 L_CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
    724 endif
    725 ifdef NEED_CIPHER
    726 NEED_DES=y
    727 OBJS += src/crypto/crypto_internal-cipher.c
    728 endif
    729 ifdef NEED_MODEXP
    730 OBJS += src/crypto/crypto_internal-modexp.c
    731 OBJS += src/tls/bignum.c
    732 endif
    733 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
    734 OBJS += src/crypto/crypto_libtomcrypt.c
    735 LIBS += -ltomcrypt -ltfm
    736 LIBS_h += -ltomcrypt -ltfm
    737 CONFIG_INTERNAL_SHA256=y
    738 CONFIG_INTERNAL_RC4=y
    739 CONFIG_INTERNAL_DH_GROUP5=y
    740 endif
    741 ifeq ($(CONFIG_CRYPTO), internal)
    742 OBJS += src/crypto/crypto_internal.c
    743 NEED_AES_DEC=y
    744 L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL
    745 ifdef CONFIG_INTERNAL_LIBTOMMATH
    746 L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
    747 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
    748 L_CFLAGS += -DLTM_FAST
    749 endif
    750 else
    751 LIBS += -ltommath
    752 LIBS_h += -ltommath
    753 endif
    754 CONFIG_INTERNAL_AES=y
    755 CONFIG_INTERNAL_DES=y
    756 CONFIG_INTERNAL_SHA1=y
    757 CONFIG_INTERNAL_MD4=y
    758 CONFIG_INTERNAL_MD5=y
    759 CONFIG_INTERNAL_SHA256=y
    760 CONFIG_INTERNAL_SHA384=y
    761 CONFIG_INTERNAL_SHA512=y
    762 CONFIG_INTERNAL_RC4=y
    763 CONFIG_INTERNAL_DH_GROUP5=y
    764 endif
    765 ifeq ($(CONFIG_CRYPTO), cryptoapi)
    766 OBJS += src/crypto/crypto_cryptoapi.c
    767 OBJS_p += src/crypto/crypto_cryptoapi.c
    768 L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
    769 CONFIG_INTERNAL_SHA256=y
    770 CONFIG_INTERNAL_RC4=y
    771 endif
    772 endif
    773 
    774 ifeq ($(CONFIG_TLS), none)
    775 ifdef TLS_FUNCS
    776 OBJS += src/crypto/tls_none.c
    777 L_CFLAGS += -DEAP_TLS_NONE
    778 CONFIG_INTERNAL_AES=y
    779 CONFIG_INTERNAL_SHA1=y
    780 CONFIG_INTERNAL_MD5=y
    781 endif
    782 OBJS += src/crypto/crypto_none.c
    783 OBJS_p += src/crypto/crypto_none.c
    784 CONFIG_INTERNAL_SHA256=y
    785 CONFIG_INTERNAL_RC4=y
    786 endif
    787 
    788 ifndef TLS_FUNCS
    789 OBJS += src/crypto/tls_none.c
    790 ifeq ($(CONFIG_TLS), internal)
    791 CONFIG_INTERNAL_AES=y
    792 CONFIG_INTERNAL_SHA1=y
    793 CONFIG_INTERNAL_MD5=y
    794 CONFIG_INTERNAL_RC4=y
    795 endif
    796 endif
    797 
    798 AESOBJS = # none so far
    799 ifdef CONFIG_INTERNAL_AES
    800 AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-enc.c
    801 endif
    802 
    803 ifneq ($(CONFIG_TLS), openssl)
    804 AESOBJS += src/crypto/aes-wrap.c
    805 endif
    806 ifdef NEED_AES_EAX
    807 AESOBJS += src/crypto/aes-eax.c
    808 NEED_AES_CTR=y
    809 NEED_AES_OMAC1=y
    810 endif
    811 ifdef NEED_AES_SIV
    812 AESOBJS += src/crypto/aes-siv.c
    813 NEED_AES_CTR=y
    814 NEED_AES_OMAC1=y
    815 endif
    816 ifdef NEED_AES_CTR
    817 AESOBJS += src/crypto/aes-ctr.c
    818 endif
    819 ifdef NEED_AES_ENCBLOCK
    820 AESOBJS += src/crypto/aes-encblock.c
    821 endif
    822 ifdef NEED_AES_OMAC1
    823 AESOBJS += src/crypto/aes-omac1.c
    824 endif
    825 ifdef NEED_AES_UNWRAP
    826 ifneq ($(CONFIG_TLS), openssl)
    827 NEED_AES_DEC=y
    828 AESOBJS += src/crypto/aes-unwrap.c
    829 endif
    830 endif
    831 ifdef NEED_AES_CBC
    832 NEED_AES_DEC=y
    833 ifneq ($(CONFIG_TLS), openssl)
    834 AESOBJS += src/crypto/aes-cbc.c
    835 endif
    836 endif
    837 ifdef NEED_AES_DEC
    838 ifdef CONFIG_INTERNAL_AES
    839 AESOBJS += src/crypto/aes-internal-dec.c
    840 endif
    841 endif
    842 ifdef NEED_AES
    843 OBJS += $(AESOBJS)
    844 endif
    845 
    846 SHA1OBJS =
    847 ifdef NEED_SHA1
    848 ifneq ($(CONFIG_TLS), openssl)
    849 ifneq ($(CONFIG_TLS), gnutls)
    850 SHA1OBJS += src/crypto/sha1.c
    851 endif
    852 endif
    853 SHA1OBJS += src/crypto/sha1-prf.c
    854 ifdef CONFIG_INTERNAL_SHA1
    855 SHA1OBJS += src/crypto/sha1-internal.c
    856 ifdef NEED_FIPS186_2_PRF
    857 SHA1OBJS += src/crypto/fips_prf_internal.c
    858 endif
    859 endif
    860 ifneq ($(CONFIG_TLS), openssl)
    861 SHA1OBJS += src/crypto/sha1-pbkdf2.c
    862 endif
    863 ifdef NEED_T_PRF
    864 SHA1OBJS += src/crypto/sha1-tprf.c
    865 endif
    866 ifdef NEED_TLS_PRF
    867 SHA1OBJS += src/crypto/sha1-tlsprf.c
    868 endif
    869 endif
    870 
    871 ifdef NEED_SHA1
    872 OBJS += $(SHA1OBJS)
    873 endif
    874 
    875 ifneq ($(CONFIG_TLS), openssl)
    876 ifneq ($(CONFIG_TLS), gnutls)
    877 OBJS += src/crypto/md5.c
    878 endif
    879 endif
    880 
    881 ifdef NEED_MD5
    882 ifdef CONFIG_INTERNAL_MD5
    883 OBJS += src/crypto/md5-internal.c
    884 HOBJS += src/crypto/md5-internal.c
    885 endif
    886 endif
    887 
    888 ifdef NEED_MD4
    889 ifdef CONFIG_INTERNAL_MD4
    890 OBJS += src/crypto/md4-internal.c
    891 endif
    892 endif
    893 
    894 ifdef NEED_DES
    895 ifdef CONFIG_INTERNAL_DES
    896 OBJS += src/crypto/des-internal.c
    897 endif
    898 endif
    899 
    900 ifdef CONFIG_NO_RC4
    901 L_CFLAGS += -DCONFIG_NO_RC4
    902 endif
    903 
    904 ifdef NEED_RC4
    905 ifdef CONFIG_INTERNAL_RC4
    906 ifndef CONFIG_NO_RC4
    907 OBJS += src/crypto/rc4.c
    908 endif
    909 endif
    910 endif
    911 
    912 ifdef NEED_SHA256
    913 L_CFLAGS += -DCONFIG_SHA256
    914 ifneq ($(CONFIG_TLS), openssl)
    915 ifneq ($(CONFIG_TLS), gnutls)
    916 OBJS += src/crypto/sha256.c
    917 endif
    918 endif
    919 OBJS += src/crypto/sha256-prf.c
    920 ifdef CONFIG_INTERNAL_SHA256
    921 OBJS += src/crypto/sha256-internal.c
    922 endif
    923 ifdef NEED_TLS_PRF_SHA256
    924 OBJS += src/crypto/sha256-tlsprf.c
    925 endif
    926 ifdef NEED_HMAC_SHA256_KDF
    927 OBJS += src/crypto/sha256-kdf.c
    928 endif
    929 ifdef NEED_HMAC_SHA384_KDF
    930 OBJS += src/crypto/sha384-kdf.c
    931 endif
    932 ifdef NEED_HMAC_SHA512_KDF
    933 OBJS += src/crypto/sha512-kdf.c
    934 endif
    935 endif
    936 ifdef NEED_SHA384
    937 L_CFLAGS += -DCONFIG_SHA384
    938 ifneq ($(CONFIG_TLS), openssl)
    939 ifneq ($(CONFIG_TLS), gnutls)
    940 OBJS += src/crypto/sha384.c
    941 endif
    942 endif
    943 OBJS += src/crypto/sha384-prf.c
    944 endif
    945 ifdef NEED_SHA512
    946 L_CFLAGS += -DCONFIG_SHA512
    947 ifneq ($(CONFIG_TLS), openssl)
    948 ifneq ($(CONFIG_TLS), linux)
    949 ifneq ($(CONFIG_TLS), gnutls)
    950 OBJS += src/crypto/sha512.c
    951 endif
    952 endif
    953 endif
    954 OBJS += src/crypto/sha512-prf.c
    955 endif
    956 
    957 ifdef CONFIG_INTERNAL_SHA384
    958 L_CFLAGS += -DCONFIG_INTERNAL_SHA384
    959 OBJS += src/crypto/sha384-internal.c
    960 endif
    961 
    962 ifdef CONFIG_INTERNAL_SHA512
    963 L_CFLAGS += -DCONFIG_INTERNAL_SHA512
    964 OBJS += src/crypto/sha512-internal.c
    965 endif
    966 
    967 ifdef NEED_DH_GROUPS
    968 OBJS += src/crypto/dh_groups.c
    969 endif
    970 ifdef NEED_DH_GROUPS_ALL
    971 L_CFLAGS += -DALL_DH_GROUPS
    972 endif
    973 ifdef CONFIG_INTERNAL_DH_GROUP5
    974 ifdef NEED_DH_GROUPS
    975 OBJS += src/crypto/dh_group5.c
    976 endif
    977 endif
    978 
    979 ifdef NEED_ECC
    980 L_CFLAGS += -DCONFIG_ECC
    981 endif
    982 
    983 ifdef CONFIG_NO_RANDOM_POOL
    984 L_CFLAGS += -DCONFIG_NO_RANDOM_POOL
    985 else
    986 OBJS += src/crypto/random.c
    987 HOBJS += src/crypto/random.c
    988 HOBJS += src/utils/eloop.c
    989 HOBJS += $(SHA1OBJS)
    990 ifneq ($(CONFIG_TLS), openssl)
    991 HOBJS += src/crypto/md5.c
    992 endif
    993 endif
    994 
    995 ifdef CONFIG_RADIUS_SERVER
    996 L_CFLAGS += -DRADIUS_SERVER
    997 OBJS += src/radius/radius_server.c
    998 endif
    999 
   1000 ifdef CONFIG_IPV6
   1001 L_CFLAGS += -DCONFIG_IPV6
   1002 endif
   1003 
   1004 ifdef CONFIG_DRIVER_RADIUS_ACL
   1005 L_CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
   1006 endif
   1007 
   1008 ifdef NEED_BASE64
   1009 OBJS += src/utils/base64.c
   1010 endif
   1011 
   1012 ifdef NEED_JSON
   1013 OBJS += src/utils/json.c
   1014 L_CFLAGS += -DCONFIG_JSON
   1015 endif
   1016 
   1017 ifdef NEED_AP_MLME
   1018 OBJS += src/ap/wmm.c
   1019 OBJS += src/ap/ap_list.c
   1020 OBJS += src/ap/ieee802_11.c
   1021 OBJS += src/ap/hw_features.c
   1022 OBJS += src/ap/dfs.c
   1023 L_CFLAGS += -DNEED_AP_MLME
   1024 endif
   1025 ifdef CONFIG_IEEE80211N
   1026 OBJS += src/ap/ieee802_11_ht.c
   1027 endif
   1028 
   1029 ifdef CONFIG_IEEE80211AC
   1030 OBJS += src/ap/ieee802_11_vht.c
   1031 endif
   1032 
   1033 ifdef CONFIG_IEEE80211AX
   1034 OBJS += src/ap/ieee802_11_he.c
   1035 endif
   1036 
   1037 ifdef CONFIG_P2P_MANAGER
   1038 L_CFLAGS += -DCONFIG_P2P_MANAGER
   1039 OBJS += src/ap/p2p_hostapd.c
   1040 endif
   1041 
   1042 ifdef CONFIG_HS20
   1043 L_CFLAGS += -DCONFIG_HS20
   1044 OBJS += src/ap/hs20.c
   1045 CONFIG_INTERWORKING=y
   1046 endif
   1047 
   1048 ifdef CONFIG_INTERWORKING
   1049 L_CFLAGS += -DCONFIG_INTERWORKING
   1050 NEED_GAS=y
   1051 endif
   1052 
   1053 ifdef NEED_GAS
   1054 OBJS += src/common/gas.c
   1055 OBJS += src/ap/gas_serv.c
   1056 endif
   1057 
   1058 ifdef CONFIG_PROXYARP
   1059 L_CFLAGS += -DCONFIG_PROXYARP
   1060 OBJS += src/ap/x_snoop.c
   1061 OBJS += src/ap/dhcp_snoop.c
   1062 ifdef CONFIG_IPV6
   1063 OBJS += src/ap/ndisc_snoop.c
   1064 endif
   1065 endif
   1066 
   1067 OBJS += src/drivers/driver_common.c
   1068 
   1069 ifdef CONFIG_ACS
   1070 L_CFLAGS += -DCONFIG_ACS
   1071 OBJS += src/ap/acs.c
   1072 LIBS += -lm
   1073 endif
   1074 
   1075 ifdef CONFIG_NO_STDOUT_DEBUG
   1076 L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
   1077 endif
   1078 
   1079 ifdef CONFIG_DEBUG_SYSLOG
   1080 L_CFLAGS += -DCONFIG_DEBUG_SYSLOG
   1081 endif
   1082 
   1083 ifdef CONFIG_DEBUG_LINUX_TRACING
   1084 L_CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
   1085 endif
   1086 
   1087 ifdef CONFIG_DEBUG_FILE
   1088 L_CFLAGS += -DCONFIG_DEBUG_FILE
   1089 endif
   1090 
   1091 ifdef CONFIG_ANDROID_LOG
   1092 L_CFLAGS += -DCONFIG_ANDROID_LOG
   1093 endif
   1094 
   1095 OBJS_c = hostapd_cli.c
   1096 OBJS_c += src/common/wpa_ctrl.c
   1097 OBJS_c += src/utils/os_$(CONFIG_OS).c
   1098 OBJS_c += src/common/cli.c
   1099 OBJS_c += src/utils/eloop.c
   1100 OBJS_c += src/utils/common.c
   1101 ifdef CONFIG_WPA_TRACE
   1102 OBJS_c += src/utils/trace.c
   1103 endif
   1104 OBJS_c += src/utils/wpa_debug.c
   1105 ifdef CONFIG_WPA_CLI_EDIT
   1106 OBJS_c += src/utils/edit.c
   1107 else
   1108 OBJS_c += src/utils/edit_simple.c
   1109 endif
   1110 
   1111 ########################
   1112 
   1113 include $(CLEAR_VARS)
   1114 LOCAL_MODULE := hostapd_cli
   1115 LOCAL_MODULE_TAGS := debug
   1116 LOCAL_PROPRIETARY_MODULE := true
   1117 LOCAL_SHARED_LIBRARIES := libc libcutils liblog
   1118 LOCAL_CFLAGS := $(L_CFLAGS)
   1119 LOCAL_SRC_FILES := $(OBJS_c)
   1120 LOCAL_C_INCLUDES := $(INCLUDES)
   1121 include $(BUILD_EXECUTABLE)
   1122 
   1123 ########################
   1124 include $(CLEAR_VARS)
   1125 LOCAL_MODULE := hostapd
   1126 LOCAL_MODULE_TAGS := optional
   1127 LOCAL_PROPRIETARY_MODULE := true
   1128 ifdef CONFIG_DRIVER_CUSTOM
   1129 LOCAL_STATIC_LIBRARIES := libCustomWifi
   1130 endif
   1131 ifneq ($(BOARD_HOSTAPD_PRIVATE_LIB),)
   1132 LOCAL_STATIC_LIBRARIES += $(BOARD_HOSTAPD_PRIVATE_LIB)
   1133 endif
   1134 LOCAL_SHARED_LIBRARIES := libc libcutils liblog libcrypto libssl
   1135 ifdef CONFIG_DRIVER_NL80211
   1136 ifneq ($(wildcard external/libnl),)
   1137 LOCAL_SHARED_LIBRARIES += libnl
   1138 else
   1139 LOCAL_STATIC_LIBRARIES += libnl_2
   1140 endif
   1141 endif
   1142 LOCAL_CFLAGS := $(L_CFLAGS)
   1143 LOCAL_SRC_FILES := $(OBJS)
   1144 LOCAL_C_INCLUDES := $(INCLUDES)
   1145 LOCAL_INIT_RC := hostapd.android.rc
   1146 include $(BUILD_EXECUTABLE)
   1147 
   1148 endif # ifeq ($(WPA_BUILD_HOSTAPD),true)
   1149