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