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