Home | History | Annotate | Download | only in wpa_supplicant
      1 #
      2 # Copyright (C) 2008 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the "License");
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #      http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 #
     16 #
     17 
     18 LOCAL_PATH := $(call my-dir)
     19 PKG_CONFIG ?= pkg-config
     20 
     21 WPA_BUILD_SUPPLICANT := false
     22 ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),)
     23   WPA_BUILD_SUPPLICANT := true
     24   CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) := y
     25 endif
     26 
     27 ifeq ($(WPA_BUILD_SUPPLICANT),true)
     28 
     29 include $(LOCAL_PATH)/.config
     30 
     31 # To ignore possible wrong network configurations
     32 L_CFLAGS = -DWPA_IGNORE_CONFIG_ERRORS
     33 
     34 # Set Android log name
     35 L_CFLAGS += -DANDROID_LOG_NAME=\"wpa_supplicant\"
     36 
     37 ifdef CONFIG_DRIVER_NL80211
     38 L_CFLAGS += -DANDROID_BRCM_P2P_PATCH
     39 endif
     40 
     41 ifdef CONFIG_ROAMING
     42 L_CFLAGS += -DCONFIG_ROAMING
     43 endif
     44 
     45 # Use Android specific directory for control interface sockets
     46 L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\"
     47 L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/system/wpa_supplicant\"
     48 
     49 # To force sizeof(enum) = 4
     50 ifeq ($(TARGET_ARCH),arm)
     51 L_CFLAGS += -mabi=aapcs-linux
     52 endif
     53 
     54 # To allow non-ASCII characters in SSID
     55 L_CFLAGS += -DWPA_UNICODE_SSID
     56 
     57 # OpenSSL is configured without engines on Android
     58 L_CFLAGS += -DOPENSSL_NO_ENGINE
     59 
     60 INCLUDES = $(LOCAL_PATH)
     61 INCLUDES += $(LOCAL_PATH)/src
     62 INCLUDES += $(LOCAL_PATH)/src/common
     63 # INCLUDES += $(LOCAL_PATH)/src/crypto # To force proper includes
     64 INCLUDES += $(LOCAL_PATH)/src/drivers
     65 INCLUDES += $(LOCAL_PATH)/src/eap_common
     66 INCLUDES += $(LOCAL_PATH)/src/eapol_supp
     67 INCLUDES += $(LOCAL_PATH)/src/eap_peer
     68 INCLUDES += $(LOCAL_PATH)/src/eap_server
     69 INCLUDES += $(LOCAL_PATH)/src/hlr_auc_gw
     70 INCLUDES += $(LOCAL_PATH)/src/l2_packet
     71 INCLUDES += $(LOCAL_PATH)/src/radius
     72 INCLUDES += $(LOCAL_PATH)/src/rsn_supp
     73 INCLUDES += $(LOCAL_PATH)/src/tls
     74 INCLUDES += $(LOCAL_PATH)/src/utils
     75 INCLUDES += $(LOCAL_PATH)/src/wps
     76 INCLUDES += external/openssl/include
     77 INCLUDES += frameworks/base/cmds/keystore
     78 ifdef CONFIG_DRIVER_NL80211
     79 INCLUDES += external/libnl-headers
     80 endif
     81 
     82 OBJS = config.c
     83 OBJS += notify.c
     84 OBJS += bss.c
     85 OBJS += eap_register.c
     86 OBJS += src/utils/common.c
     87 OBJS += src/utils/wpa_debug.c
     88 OBJS += src/utils/wpabuf.c
     89 OBJS_p = wpa_passphrase.c
     90 OBJS_p += src/utils/common.c
     91 OBJS_p += src/utils/wpa_debug.c
     92 OBJS_p += src/utils/wpabuf.c
     93 OBJS_c = wpa_cli.c src/common/wpa_ctrl.c
     94 OBJS_c += src/utils/wpa_debug.c
     95 OBJS_d =
     96 OBJS_priv =
     97 
     98 ifndef CONFIG_OS
     99 ifdef CONFIG_NATIVE_WINDOWS
    100 CONFIG_OS=win32
    101 else
    102 CONFIG_OS=unix
    103 endif
    104 endif
    105 
    106 ifeq ($(CONFIG_OS), internal)
    107 L_CFLAGS += -DOS_NO_C_LIB_DEFINES
    108 endif
    109 
    110 OBJS += src/utils/os_$(CONFIG_OS).c
    111 OBJS_p += src/utils/os_$(CONFIG_OS).c
    112 OBJS_c += src/utils/os_$(CONFIG_OS).c
    113 
    114 ifdef CONFIG_WPA_TRACE
    115 L_CFLAGS += -DWPA_TRACE
    116 OBJS += src/utils/trace.c
    117 OBJS_p += src/utils/trace.c
    118 OBJS_c += src/utils/trace.c
    119 LDFLAGS += -rdynamic
    120 L_CFLAGS += -funwind-tables
    121 ifdef CONFIG_WPA_TRACE_BFD
    122 L_CFLAGS += -DWPA_TRACE_BFD
    123 LIBS += -lbfd
    124 LIBS_p += -lbfd
    125 LIBS_c += -lbfd
    126 endif
    127 endif
    128 
    129 ifndef CONFIG_ELOOP
    130 CONFIG_ELOOP=eloop
    131 endif
    132 OBJS += src/utils/$(CONFIG_ELOOP).c
    133 OBJS_c += src/utils/$(CONFIG_ELOOP).c
    134 
    135 
    136 ifdef CONFIG_EAPOL_TEST
    137 L_CFLAGS += -Werror -DEAPOL_TEST
    138 endif
    139 
    140 ifndef CONFIG_BACKEND
    141 CONFIG_BACKEND=file
    142 endif
    143 
    144 ifeq ($(CONFIG_BACKEND), file)
    145 OBJS += config_file.c
    146 ifndef CONFIG_NO_CONFIG_BLOBS
    147 NEED_BASE64=y
    148 endif
    149 L_CFLAGS += -DCONFIG_BACKEND_FILE
    150 endif
    151 
    152 ifeq ($(CONFIG_BACKEND), winreg)
    153 OBJS += config_winreg.c
    154 endif
    155 
    156 ifeq ($(CONFIG_BACKEND), none)
    157 OBJS += config_none.c
    158 endif
    159 
    160 ifdef CONFIG_NO_CONFIG_WRITE
    161 L_CFLAGS += -DCONFIG_NO_CONFIG_WRITE
    162 endif
    163 
    164 ifdef CONFIG_NO_CONFIG_BLOBS
    165 L_CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
    166 endif
    167 
    168 ifdef CONFIG_NO_SCAN_PROCESSING
    169 L_CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
    170 endif
    171 
    172 ifdef CONFIG_IEEE80211W
    173 L_CFLAGS += -DCONFIG_IEEE80211W
    174 NEED_SHA256=y
    175 NEED_AES_OMAC1=y
    176 endif
    177 
    178 ifdef CONFIG_IEEE80211R
    179 L_CFLAGS += -DCONFIG_IEEE80211R
    180 OBJS += src/rsn_supp/wpa_ft.c
    181 NEED_80211_COMMON=y
    182 NEED_SHA256=y
    183 NEED_AES_OMAC1=y
    184 endif
    185 
    186 ifdef CONFIG_TDLS
    187 L_CFLAGS += -DCONFIG_TDLS
    188 OBJS += src/rsn_supp/tdls.o
    189 NEED_SHA256=y
    190 NEED_AES_OMAC1=y
    191 endif
    192 
    193 ifdef CONFIG_PEERKEY
    194 L_CFLAGS += -DCONFIG_PEERKEY
    195 endif
    196 
    197 ifndef CONFIG_NO_WPA
    198 OBJS += src/rsn_supp/wpa.c
    199 OBJS += src/rsn_supp/preauth.c
    200 OBJS += src/rsn_supp/pmksa_cache.c
    201 OBJS += src/rsn_supp/peerkey.c
    202 OBJS += src/rsn_supp/wpa_ie.c
    203 OBJS += src/common/wpa_common.c
    204 NEED_AES=y
    205 NEED_SHA1=y
    206 NEED_MD5=y
    207 NEED_RC4=y
    208 else
    209 L_CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2
    210 endif
    211 
    212 ifdef CONFIG_IBSS_RSN
    213 NEED_RSN_AUTHENTICATOR=y
    214 L_CFLAGS += -DCONFIG_IBSS_RSN
    215 OBJS += ibss_rsn.c
    216 endif
    217 
    218 ifdef CONFIG_P2P
    219 OBJS += p2p_supplicant.c
    220 OBJS += src/p2p/p2p.c
    221 OBJS += src/p2p/p2p_utils.c
    222 OBJS += src/p2p/p2p_parse.c
    223 OBJS += src/p2p/p2p_build.c
    224 OBJS += src/p2p/p2p_go_neg.c
    225 OBJS += src/p2p/p2p_sd.c
    226 OBJS += src/p2p/p2p_pd.c
    227 OBJS += src/p2p/p2p_invitation.c
    228 OBJS += src/p2p/p2p_dev_disc.c
    229 OBJS += src/p2p/p2p_group.c
    230 OBJS += src/ap/p2p_hostapd.c
    231 L_CFLAGS += -DCONFIG_P2P
    232 NEED_80211_COMMON=y
    233 ifdef CONFIG_P2P_STRICT
    234 L_CFLAGS += -DCONFIG_P2P_STRICT
    235 endif
    236 endif
    237 
    238 ifdef CONFIG_NO_WPA2
    239 L_CFLAGS += -DCONFIG_NO_WPA2
    240 endif
    241 
    242 include $(LOCAL_PATH)/src/drivers/drivers.mk
    243 
    244 ifdef CONFIG_AP
    245 OBJS_d += $(DRV_BOTH_OBJS)
    246 L_CFLAGS += $(DRV_BOTH_CFLAGS)
    247 LDFLAGS += $(DRV_BOTH_LDFLAGS)
    248 LIBS += $(DRV_BOTH_LIBS)
    249 else
    250 NEED_AP_MLME=
    251 OBJS_d += $(DRV_WPA_OBJS)
    252 L_CFLAGS += $(DRV_WPA_CFLAGS)
    253 LDFLAGS += $(DRV_WPA_LDFLAGS)
    254 LIBS += $(DRV_WPA_LIBS)
    255 endif
    256 
    257 ifndef CONFIG_L2_PACKET
    258 CONFIG_L2_PACKET=linux
    259 endif
    260 
    261 OBJS_l2 += src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).c
    262 
    263 ifeq ($(CONFIG_L2_PACKET), pcap)
    264 ifdef CONFIG_WINPCAP
    265 L_CFLAGS += -DCONFIG_WINPCAP
    266 LIBS += -lwpcap -lpacket
    267 LIBS_w += -lwpcap
    268 else
    269 LIBS += -ldnet -lpcap
    270 endif
    271 endif
    272 
    273 ifeq ($(CONFIG_L2_PACKET), winpcap)
    274 LIBS += -lwpcap -lpacket
    275 LIBS_w += -lwpcap
    276 endif
    277 
    278 ifeq ($(CONFIG_L2_PACKET), freebsd)
    279 LIBS += -lpcap
    280 endif
    281 
    282 ifdef CONFIG_EAP_TLS
    283 # EAP-TLS
    284 ifeq ($(CONFIG_EAP_TLS), dyn)
    285 L_CFLAGS += -DEAP_TLS_DYNAMIC
    286 EAPDYN += src/eap_peer/eap_tls.so
    287 else
    288 L_CFLAGS += -DEAP_TLS
    289 OBJS += src/eap_peer/eap_tls.c
    290 OBJS_h += src/eap_server/eap_server_tls.c
    291 endif
    292 TLS_FUNCS=y
    293 CONFIG_IEEE8021X_EAPOL=y
    294 endif
    295 
    296 ifdef CONFIG_EAP_PEAP
    297 # EAP-PEAP
    298 ifeq ($(CONFIG_EAP_PEAP), dyn)
    299 L_CFLAGS += -DEAP_PEAP_DYNAMIC
    300 EAPDYN += src/eap_peer/eap_peap.so
    301 else
    302 L_CFLAGS += -DEAP_PEAP
    303 OBJS += src/eap_peer/eap_peap.c
    304 OBJS += src/eap_common/eap_peap_common.c
    305 OBJS_h += src/eap_server/eap_server_peap.c
    306 endif
    307 TLS_FUNCS=y
    308 CONFIG_IEEE8021X_EAPOL=y
    309 endif
    310 
    311 ifdef CONFIG_EAP_TTLS
    312 # EAP-TTLS
    313 ifeq ($(CONFIG_EAP_TTLS), dyn)
    314 L_CFLAGS += -DEAP_TTLS_DYNAMIC
    315 EAPDYN += src/eap_peer/eap_ttls.so
    316 else
    317 L_CFLAGS += -DEAP_TTLS
    318 OBJS += src/eap_peer/eap_ttls.c
    319 OBJS_h += src/eap_server/eap_server_ttls.c
    320 endif
    321 MS_FUNCS=y
    322 TLS_FUNCS=y
    323 CHAP=y
    324 CONFIG_IEEE8021X_EAPOL=y
    325 endif
    326 
    327 ifdef CONFIG_EAP_MD5
    328 # EAP-MD5
    329 ifeq ($(CONFIG_EAP_MD5), dyn)
    330 L_CFLAGS += -DEAP_MD5_DYNAMIC
    331 EAPDYN += src/eap_peer/eap_md5.so
    332 else
    333 L_CFLAGS += -DEAP_MD5
    334 OBJS += src/eap_peer/eap_md5.c
    335 OBJS_h += src/eap_server/eap_server_md5.c
    336 endif
    337 CHAP=y
    338 CONFIG_IEEE8021X_EAPOL=y
    339 endif
    340 
    341 # backwards compatibility for old spelling
    342 ifdef CONFIG_MSCHAPV2
    343 ifndef CONFIG_EAP_MSCHAPV2
    344 CONFIG_EAP_MSCHAPV2=y
    345 endif
    346 endif
    347 
    348 ifdef CONFIG_EAP_MSCHAPV2
    349 # EAP-MSCHAPv2
    350 ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
    351 L_CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
    352 EAPDYN += src/eap_peer/eap_mschapv2.so
    353 EAPDYN += src/eap_peer/mschapv2.so
    354 else
    355 L_CFLAGS += -DEAP_MSCHAPv2
    356 OBJS += src/eap_peer/eap_mschapv2.c
    357 OBJS += src/eap_peer/mschapv2.c
    358 OBJS_h += src/eap_server/eap_server_mschapv2.c
    359 endif
    360 MS_FUNCS=y
    361 CONFIG_IEEE8021X_EAPOL=y
    362 endif
    363 
    364 ifdef CONFIG_EAP_GTC
    365 # EAP-GTC
    366 ifeq ($(CONFIG_EAP_GTC), dyn)
    367 L_CFLAGS += -DEAP_GTC_DYNAMIC
    368 EAPDYN += src/eap_peer/eap_gtc.so
    369 else
    370 L_CFLAGS += -DEAP_GTC
    371 OBJS += src/eap_peer/eap_gtc.c
    372 OBJS_h += src/eap_server/eap_server_gtc.c
    373 endif
    374 CONFIG_IEEE8021X_EAPOL=y
    375 endif
    376 
    377 ifdef CONFIG_EAP_OTP
    378 # EAP-OTP
    379 ifeq ($(CONFIG_EAP_OTP), dyn)
    380 L_CFLAGS += -DEAP_OTP_DYNAMIC
    381 EAPDYN += src/eap_peer/eap_otp.so
    382 else
    383 L_CFLAGS += -DEAP_OTP
    384 OBJS += src/eap_peer/eap_otp.c
    385 endif
    386 CONFIG_IEEE8021X_EAPOL=y
    387 endif
    388 
    389 ifdef CONFIG_EAP_SIM
    390 # EAP-SIM
    391 ifeq ($(CONFIG_EAP_SIM), dyn)
    392 L_CFLAGS += -DEAP_SIM_DYNAMIC
    393 EAPDYN += src/eap_peer/eap_sim.so
    394 else
    395 L_CFLAGS += -DEAP_SIM
    396 OBJS += src/eap_peer/eap_sim.c
    397 OBJS_h += src/eap_server/eap_server_sim.c
    398 endif
    399 CONFIG_IEEE8021X_EAPOL=y
    400 CONFIG_EAP_SIM_COMMON=y
    401 NEED_AES_CBC=y
    402 endif
    403 
    404 ifdef CONFIG_EAP_LEAP
    405 # EAP-LEAP
    406 ifeq ($(CONFIG_EAP_LEAP), dyn)
    407 L_CFLAGS += -DEAP_LEAP_DYNAMIC
    408 EAPDYN += src/eap_peer/eap_leap.so
    409 else
    410 L_CFLAGS += -DEAP_LEAP
    411 OBJS += src/eap_peer/eap_leap.c
    412 endif
    413 MS_FUNCS=y
    414 CONFIG_IEEE8021X_EAPOL=y
    415 endif
    416 
    417 ifdef CONFIG_EAP_PSK
    418 # EAP-PSK
    419 ifeq ($(CONFIG_EAP_PSK), dyn)
    420 L_CFLAGS += -DEAP_PSK_DYNAMIC
    421 EAPDYN += src/eap_peer/eap_psk.so
    422 else
    423 L_CFLAGS += -DEAP_PSK
    424 OBJS += src/eap_peer/eap_psk.c src/eap_common/eap_psk_common.c
    425 OBJS_h += src/eap_server/eap_server_psk.c
    426 endif
    427 CONFIG_IEEE8021X_EAPOL=y
    428 NEED_AES=y
    429 NEED_AES_OMAC1=y
    430 NEED_AES_ENCBLOCK=y
    431 NEED_AES_EAX=y
    432 endif
    433 
    434 ifdef CONFIG_EAP_AKA
    435 # EAP-AKA
    436 ifeq ($(CONFIG_EAP_AKA), dyn)
    437 L_CFLAGS += -DEAP_AKA_DYNAMIC
    438 EAPDYN += src/eap_peer/eap_aka.so
    439 else
    440 L_CFLAGS += -DEAP_AKA
    441 OBJS += src/eap_peer/eap_aka.c
    442 OBJS_h += src/eap_server/eap_server_aka.c
    443 endif
    444 CONFIG_IEEE8021X_EAPOL=y
    445 CONFIG_EAP_SIM_COMMON=y
    446 NEED_AES_CBC=y
    447 endif
    448 
    449 ifdef CONFIG_EAP_AKA_PRIME
    450 # EAP-AKA'
    451 ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
    452 L_CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
    453 else
    454 L_CFLAGS += -DEAP_AKA_PRIME
    455 endif
    456 NEED_SHA256=y
    457 endif
    458 
    459 ifdef CONFIG_EAP_SIM_COMMON
    460 OBJS += src/eap_common/eap_sim_common.c
    461 OBJS_h += src/eap_server/eap_sim_db.c
    462 NEED_AES=y
    463 NEED_FIPS186_2_PRF=y
    464 endif
    465 
    466 ifdef CONFIG_EAP_FAST
    467 # EAP-FAST
    468 ifeq ($(CONFIG_EAP_FAST), dyn)
    469 L_CFLAGS += -DEAP_FAST_DYNAMIC
    470 EAPDYN += src/eap_peer/eap_fast.so
    471 EAPDYN += src/eap_common/eap_fast_common.c
    472 else
    473 L_CFLAGS += -DEAP_FAST
    474 OBJS += src/eap_peer/eap_fast.c src/eap_peer/eap_fast_pac.c
    475 OBJS += src/eap_common/eap_fast_common.c
    476 OBJS_h += src/eap_server/eap_server_fast.c
    477 endif
    478 TLS_FUNCS=y
    479 CONFIG_IEEE8021X_EAPOL=y
    480 NEED_T_PRF=y
    481 endif
    482 
    483 ifdef CONFIG_EAP_PAX
    484 # EAP-PAX
    485 ifeq ($(CONFIG_EAP_PAX), dyn)
    486 L_CFLAGS += -DEAP_PAX_DYNAMIC
    487 EAPDYN += src/eap_peer/eap_pax.so
    488 else
    489 L_CFLAGS += -DEAP_PAX
    490 OBJS += src/eap_peer/eap_pax.c src/eap_common/eap_pax_common.c
    491 OBJS_h += src/eap_server/eap_server_pax.c
    492 endif
    493 CONFIG_IEEE8021X_EAPOL=y
    494 endif
    495 
    496 ifdef CONFIG_EAP_SAKE
    497 # EAP-SAKE
    498 ifeq ($(CONFIG_EAP_SAKE), dyn)
    499 L_CFLAGS += -DEAP_SAKE_DYNAMIC
    500 EAPDYN += src/eap_peer/eap_sake.so
    501 else
    502 L_CFLAGS += -DEAP_SAKE
    503 OBJS += src/eap_peer/eap_sake.c src/eap_common/eap_sake_common.c
    504 OBJS_h += src/eap_server/eap_server_sake.c
    505 endif
    506 CONFIG_IEEE8021X_EAPOL=y
    507 endif
    508 
    509 ifdef CONFIG_EAP_GPSK
    510 # EAP-GPSK
    511 ifeq ($(CONFIG_EAP_GPSK), dyn)
    512 L_CFLAGS += -DEAP_GPSK_DYNAMIC
    513 EAPDYN += src/eap_peer/eap_gpsk.so
    514 else
    515 L_CFLAGS += -DEAP_GPSK
    516 OBJS += src/eap_peer/eap_gpsk.c src/eap_common/eap_gpsk_common.c
    517 OBJS_h += src/eap_server/eap_server_gpsk.c
    518 endif
    519 CONFIG_IEEE8021X_EAPOL=y
    520 ifdef CONFIG_EAP_GPSK_SHA256
    521 L_CFLAGS += -DEAP_GPSK_SHA256
    522 endif
    523 NEED_SHA256=y
    524 NEED_AES_OMAC1=y
    525 endif
    526 
    527 ifdef CONFIG_EAP_PWD
    528 L_CFLAGS += -DEAP_PWD
    529 OBJS += src/eap_peer/eap_pwd.c src/eap_common/eap_pwd_common.c
    530 OBJS_h += src/eap_server/eap_pwd.c
    531 CONFIG_IEEE8021X_EAPOL=y
    532 NEED_SHA256=y
    533 endif
    534 
    535 ifdef CONFIG_WPS
    536 ifdef CONFIG_WPS2
    537 L_CFLAGS += -DCONFIG_WPS2
    538 endif
    539 
    540 # EAP-WSC
    541 L_CFLAGS += -DCONFIG_WPS -DEAP_WSC
    542 OBJS += wps_supplicant.c
    543 OBJS += src/utils/uuid.c
    544 OBJS += src/eap_peer/eap_wsc.c src/eap_common/eap_wsc_common.c
    545 OBJS += src/wps/wps.c
    546 OBJS += src/wps/wps_common.c
    547 OBJS += src/wps/wps_attr_parse.c
    548 OBJS += src/wps/wps_attr_build.c
    549 OBJS += src/wps/wps_attr_process.c
    550 OBJS += src/wps/wps_dev_attr.c
    551 OBJS += src/wps/wps_enrollee.c
    552 OBJS += src/wps/wps_registrar.c
    553 OBJS_h += src/eap_server/eap_server_wsc.c
    554 CONFIG_IEEE8021X_EAPOL=y
    555 NEED_DH_GROUPS=y
    556 NEED_SHA256=y
    557 NEED_BASE64=y
    558 NEED_80211_COMMON=y
    559 NEED_AES_CBC=y
    560 NEED_MODEXP=y
    561 
    562 ifdef CONFIG_WPS_UFD
    563 L_CFLAGS += -DCONFIG_WPS_UFD
    564 OBJS += src/wps/wps_ufd.c
    565 NEED_WPS_OOB=y
    566 endif
    567 
    568 ifdef CONFIG_WPS_NFC
    569 L_CFLAGS += -DCONFIG_WPS_NFC
    570 OBJS += src/wps/ndef.c
    571 OBJS += src/wps/wps_nfc.c
    572 NEED_WPS_OOB=y
    573 ifdef CONFIG_WPS_NFC_PN531
    574 PN531_PATH ?= /usr/local/src/nfc
    575 L_CFLAGS += -DCONFIG_WPS_NFC_PN531
    576 L_CFLAGS += -I${PN531_PATH}/inc
    577 OBJS += src/wps/wps_nfc_pn531.c
    578 LIBS += ${PN531_PATH}/lib/wpsnfc.dll
    579 LIBS += ${PN531_PATH}/lib/libnfc_mapping_pn53x.dll
    580 endif
    581 endif
    582 
    583 ifdef NEED_WPS_OOB
    584 L_CFLAGS += -DCONFIG_WPS_OOB
    585 endif
    586 
    587 ifdef CONFIG_WPS_ER
    588 CONFIG_WPS_UPNP=y
    589 L_CFLAGS += -DCONFIG_WPS_ER
    590 OBJS += src/wps/wps_er.c
    591 OBJS += src/wps/wps_er_ssdp.c
    592 endif
    593 
    594 ifdef CONFIG_WPS_UPNP
    595 L_CFLAGS += -DCONFIG_WPS_UPNP
    596 OBJS += src/wps/wps_upnp.c
    597 OBJS += src/wps/wps_upnp_ssdp.c
    598 OBJS += src/wps/wps_upnp_web.c
    599 OBJS += src/wps/wps_upnp_event.c
    600 OBJS += src/wps/wps_upnp_ap.c
    601 OBJS += src/wps/upnp_xml.c
    602 OBJS += src/wps/httpread.c
    603 OBJS += src/wps/http_client.c
    604 OBJS += src/wps/http_server.c
    605 endif
    606 
    607 ifdef CONFIG_WPS_STRICT
    608 L_CFLAGS += -DCONFIG_WPS_STRICT
    609 OBJS += src/wps/wps_validate.c
    610 endif
    611 
    612 ifdef CONFIG_WPS_TESTING
    613 L_CFLAGS += -DCONFIG_WPS_TESTING
    614 endif
    615 
    616 ifdef CONFIG_WPS_REG_DISABLE_OPEN
    617 L_CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN
    618 endif
    619 
    620 endif
    621 
    622 ifdef CONFIG_EAP_IKEV2
    623 # EAP-IKEv2
    624 ifeq ($(CONFIG_EAP_IKEV2), dyn)
    625 L_CFLAGS += -DEAP_IKEV2_DYNAMIC
    626 EAPDYN += src/eap_peer/eap_ikev2.so src/eap_peer/ikev2.c
    627 EAPDYN += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
    628 else
    629 L_CFLAGS += -DEAP_IKEV2
    630 OBJS += src/eap_peer/eap_ikev2.c src/eap_peer/ikev2.c
    631 OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
    632 OBJS_h += src/eap_server/eap_server_ikev2.c
    633 OBJS_h += src/eap_server/ikev2.c
    634 endif
    635 CONFIG_IEEE8021X_EAPOL=y
    636 NEED_DH_GROUPS=y
    637 NEED_DH_GROUPS_ALL=y
    638 NEED_MODEXP=y
    639 NEED_CIPHER=y
    640 endif
    641 
    642 ifdef CONFIG_EAP_VENDOR_TEST
    643 ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
    644 L_CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
    645 EAPDYN += src/eap_peer/eap_vendor_test.so
    646 else
    647 L_CFLAGS += -DEAP_VENDOR_TEST
    648 OBJS += src/eap_peer/eap_vendor_test.c
    649 OBJS_h += src/eap_server/eap_server_vendor_test.c
    650 endif
    651 CONFIG_IEEE8021X_EAPOL=y
    652 endif
    653 
    654 ifdef CONFIG_EAP_TNC
    655 # EAP-TNC
    656 L_CFLAGS += -DEAP_TNC
    657 OBJS += src/eap_peer/eap_tnc.c
    658 OBJS += src/eap_peer/tncc.c
    659 OBJS_h += src/eap_server/eap_server_tnc.c
    660 OBJS_h += src/eap_server/tncs.c
    661 NEED_BASE64=y
    662 ifndef CONFIG_NATIVE_WINDOWS
    663 ifndef CONFIG_DRIVER_BSD
    664 LIBS += -ldl
    665 endif
    666 endif
    667 endif
    668 
    669 ifdef CONFIG_IEEE8021X_EAPOL
    670 # IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
    671 L_CFLAGS += -DIEEE8021X_EAPOL
    672 OBJS += src/eapol_supp/eapol_supp_sm.c
    673 OBJS += src/eap_peer/eap.c src/eap_peer/eap_methods.c
    674 NEED_EAP_COMMON=y
    675 ifdef CONFIG_DYNAMIC_EAP_METHODS
    676 L_CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
    677 LIBS += -ldl -rdynamic
    678 endif
    679 endif
    680 
    681 ifdef CONFIG_AP
    682 NEED_80211_COMMON=y
    683 NEED_EAP_COMMON=y
    684 NEED_RSN_AUTHENTICATOR=y
    685 L_CFLAGS += -DCONFIG_AP
    686 OBJS += ap.c
    687 L_CFLAGS += -DCONFIG_NO_RADIUS
    688 L_CFLAGS += -DCONFIG_NO_ACCOUNTING
    689 L_CFLAGS += -DCONFIG_NO_VLAN
    690 OBJS += src/ap/hostapd.c
    691 OBJS += src/ap/wpa_auth_glue.c
    692 OBJS += src/ap/utils.c
    693 OBJS += src/ap/authsrv.c
    694 OBJS += src/ap/ap_config.c
    695 OBJS += src/utils/ip_addr.c
    696 OBJS += src/ap/sta_info.c
    697 OBJS += src/ap/tkip_countermeasures.c
    698 OBJS += src/ap/ap_mlme.c
    699 OBJS += src/ap/ieee802_1x.c
    700 OBJS += src/eapol_auth/eapol_auth_sm.c
    701 OBJS += src/ap/ieee802_11_auth.c
    702 OBJS += src/ap/drv_callbacks.c
    703 OBJS += src/ap/ap_drv_ops.c
    704 ifdef CONFIG_IEEE80211N
    705 OBJS += src/ap/ieee802_11_ht.c
    706 endif
    707 ifdef CONFIG_CTRL_IFACE
    708 OBJS += src/ap/ctrl_iface_ap.c
    709 endif
    710 
    711 L_CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
    712 OBJS += src/eap_server/eap_server.c
    713 OBJS += src/eap_server/eap_server_identity.c
    714 OBJS += src/eap_server/eap_server_methods.c
    715 
    716 ifdef CONFIG_IEEE80211N
    717 L_CFLAGS += -DCONFIG_IEEE80211N
    718 endif
    719 
    720 ifdef NEED_AP_MLME
    721 OBJS += src/ap/beacon.c
    722 OBJS += src/ap/wmm.c
    723 OBJS += src/ap/ap_list.c
    724 OBJS += src/ap/ieee802_11.c
    725 OBJS += src/ap/hw_features.c
    726 L_CFLAGS += -DNEED_AP_MLME
    727 endif
    728 ifdef CONFIG_WPS
    729 L_CFLAGS += -DEAP_SERVER_WSC
    730 OBJS += src/ap/wps_hostapd.c
    731 OBJS += src/eap_server/eap_server_wsc.c
    732 endif
    733 endif
    734 
    735 ifdef NEED_RSN_AUTHENTICATOR
    736 L_CFLAGS += -DCONFIG_NO_RADIUS
    737 NEED_AES_WRAP=y
    738 OBJS += src/ap/wpa_auth.c
    739 OBJS += src/ap/wpa_auth_ie.c
    740 OBJS += src/ap/pmksa_cache_auth.c
    741 ifdef CONFIG_IEEE80211R
    742 OBJS += src/ap/wpa_auth_ft.c
    743 endif
    744 ifdef CONFIG_PEERKEY
    745 OBJS += src/ap/peerkey_auth.c
    746 endif
    747 endif
    748 
    749 ifdef CONFIG_EAP_SERVER
    750 L_CFLAGS += -DEAP_SERVER
    751 OBJS_h += src/eap_server/eap_server.c
    752 OBJS_h += src/eap_server/eap_server_identity.c
    753 OBJS_h += src/eap_server/eap_server_methods.c
    754 endif
    755 
    756 ifdef CONFIG_RADIUS_CLIENT
    757 OBJS_h += src/utils/ip_addr.c
    758 OBJS_h += src/radius/radius.c
    759 OBJS_h += src/radius/radius_client.c
    760 endif
    761 
    762 ifdef CONFIG_AUTHENTICATOR
    763 OBJS_h += src/eapol_auth/eapol_auth_sm.c
    764 OBJS_h += src/ap/ieee802_1x.c
    765 endif
    766 
    767 ifdef CONFIG_WPA_AUTHENTICATOR
    768 OBJS_h += src/ap/wpa_auth.c
    769 OBJS_h += src/ap/wpa_auth_ie.c
    770 OBJS_h += src/ap/pmksa_cache_auth.c
    771 ifdef CONFIG_IEEE80211R
    772 OBJS_h += src/ap/wpa_auth_ft.c
    773 endif
    774 ifdef CONFIG_PEERKEY
    775 OBJS_h += src/ap/peerkey_auth.c
    776 endif
    777 endif
    778 
    779 ifdef CONFIG_PCSC
    780 # PC/SC interface for smartcards (USIM, GSM SIM)
    781 L_CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
    782 OBJS += src/utils/pcsc_funcs.c
    783 # -lpthread may not be needed depending on how pcsc-lite was configured
    784 ifdef CONFIG_NATIVE_WINDOWS
    785 #Once MinGW gets support for WinScard, -lwinscard could be used instead of the
    786 #dynamic symbol loading that is now used in pcsc_funcs.c
    787 #LIBS += -lwinscard
    788 else
    789 LIBS += -lpcsclite -lpthread
    790 endif
    791 endif
    792 
    793 ifdef CONFIG_SIM_SIMULATOR
    794 L_CFLAGS += -DCONFIG_SIM_SIMULATOR
    795 NEED_MILENAGE=y
    796 endif
    797 
    798 ifdef CONFIG_USIM_SIMULATOR
    799 L_CFLAGS += -DCONFIG_USIM_SIMULATOR
    800 NEED_MILENAGE=y
    801 endif
    802 
    803 ifdef NEED_MILENAGE
    804 OBJS += src/crypto/milenage.c
    805 endif
    806 
    807 ifdef CONFIG_PKCS12
    808 L_CFLAGS += -DPKCS12_FUNCS
    809 endif
    810 
    811 ifdef CONFIG_SMARTCARD
    812 L_CFLAGS += -DCONFIG_SMARTCARD
    813 endif
    814 
    815 ifdef MS_FUNCS
    816 OBJS += src/crypto/ms_funcs.c
    817 NEED_DES=y
    818 NEED_MD4=y
    819 endif
    820 
    821 ifdef CHAP
    822 OBJS += src/eap_common/chap.c
    823 endif
    824 
    825 ifdef TLS_FUNCS
    826 NEED_DES=y
    827 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
    828 OBJS += src/eap_peer/eap_tls_common.c
    829 OBJS_h += src/eap_server/eap_server_tls_common.c
    830 NEED_TLS_PRF=y
    831 endif
    832 
    833 ifndef CONFIG_TLS
    834 CONFIG_TLS=openssl
    835 endif
    836 
    837 ifeq ($(CONFIG_TLS), openssl)
    838 ifdef TLS_FUNCS
    839 L_CFLAGS += -DEAP_TLS_OPENSSL
    840 OBJS += src/crypto/tls_openssl.c
    841 LIBS += -lssl
    842 endif
    843 OBJS += src/crypto/crypto_openssl.c
    844 OBJS_p += src/crypto/crypto_openssl.c
    845 ifdef NEED_FIPS186_2_PRF
    846 OBJS += src/crypto/fips_prf_openssl.c
    847 endif
    848 LIBS += -lcrypto
    849 LIBS_p += -lcrypto
    850 endif
    851 
    852 ifeq ($(CONFIG_TLS), gnutls)
    853 ifdef TLS_FUNCS
    854 OBJS += src/crypto/tls_gnutls.c
    855 LIBS += -lgnutls -lgpg-error
    856 ifdef CONFIG_GNUTLS_EXTRA
    857 L_CFLAGS += -DCONFIG_GNUTLS_EXTRA
    858 LIBS += -lgnutls-extra
    859 endif
    860 endif
    861 OBJS += src/crypto/crypto_gnutls.c
    862 OBJS_p += src/crypto/crypto_gnutls.c
    863 ifdef NEED_FIPS186_2_PRF
    864 OBJS += src/crypto/fips_prf_gnutls.c
    865 endif
    866 LIBS += -lgcrypt
    867 LIBS_p += -lgcrypt
    868 CONFIG_INTERNAL_SHA256=y
    869 CONFIG_INTERNAL_RC4=y
    870 CONFIG_INTERNAL_DH_GROUP5=y
    871 endif
    872 
    873 ifeq ($(CONFIG_TLS), schannel)
    874 ifdef TLS_FUNCS
    875 OBJS += src/crypto/tls_schannel.c
    876 endif
    877 OBJS += src/crypto/crypto_cryptoapi.c
    878 OBJS_p += src/crypto/crypto_cryptoapi.c
    879 ifdef NEED_FIPS186_2_PRF
    880 OBJS += src/crypto/fips_prf_cryptoapi.c
    881 endif
    882 CONFIG_INTERNAL_SHA256=y
    883 CONFIG_INTERNAL_RC4=y
    884 CONFIG_INTERNAL_DH_GROUP5=y
    885 endif
    886 
    887 ifeq ($(CONFIG_TLS), nss)
    888 ifdef TLS_FUNCS
    889 OBJS += src/crypto/tls_nss.c
    890 LIBS += -lssl3
    891 endif
    892 OBJS += src/crypto/crypto_nss.c
    893 OBJS_p += src/crypto/crypto_nss.c
    894 ifdef NEED_FIPS186_2_PRF
    895 OBJS += src/crypto/fips_prf_nss.c
    896 endif
    897 LIBS += -lnss3
    898 LIBS_p += -lnss3
    899 CONFIG_INTERNAL_MD4=y
    900 CONFIG_INTERNAL_DH_GROUP5=y
    901 endif
    902 
    903 ifeq ($(CONFIG_TLS), internal)
    904 ifndef CONFIG_CRYPTO
    905 CONFIG_CRYPTO=internal
    906 endif
    907 ifdef TLS_FUNCS
    908 OBJS += src/crypto/crypto_internal-rsa.c
    909 OBJS += src/crypto/tls_internal.c
    910 OBJS += src/tls/tlsv1_common.c
    911 OBJS += src/tls/tlsv1_record.c
    912 OBJS += src/tls/tlsv1_cred.c
    913 OBJS += src/tls/tlsv1_client.c
    914 OBJS += src/tls/tlsv1_client_write.c
    915 OBJS += src/tls/tlsv1_client_read.c
    916 OBJS += src/tls/asn1.c
    917 OBJS += src/tls/rsa.c
    918 OBJS += src/tls/x509v3.c
    919 OBJS += src/tls/pkcs1.c
    920 OBJS += src/tls/pkcs5.c
    921 OBJS += src/tls/pkcs8.c
    922 NEED_SHA256=y
    923 NEED_BASE64=y
    924 NEED_TLS_PRF=y
    925 NEED_MODEXP=y
    926 NEED_CIPHER=y
    927 L_CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
    928 endif
    929 ifdef NEED_CIPHER
    930 NEED_DES=y
    931 OBJS += src/crypto/crypto_internal-cipher.c
    932 endif
    933 ifdef NEED_MODEXP
    934 OBJS += src/crypto/crypto_internal-modexp.c
    935 OBJS += src/tls/bignum.c
    936 endif
    937 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
    938 OBJS += src/crypto/crypto_libtomcrypt.c
    939 OBJS_p += src/crypto/crypto_libtomcrypt.c
    940 LIBS += -ltomcrypt -ltfm
    941 LIBS_p += -ltomcrypt -ltfm
    942 CONFIG_INTERNAL_SHA256=y
    943 CONFIG_INTERNAL_RC4=y
    944 CONFIG_INTERNAL_DH_GROUP5=y
    945 endif
    946 ifeq ($(CONFIG_CRYPTO), internal)
    947 OBJS += src/crypto/crypto_internal.c
    948 OBJS_p += src/crypto/crypto_internal.c
    949 NEED_AES_ENC=y
    950 L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL
    951 ifdef CONFIG_INTERNAL_LIBTOMMATH
    952 L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
    953 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
    954 L_CFLAGS += -DLTM_FAST
    955 endif
    956 else
    957 LIBS += -ltommath
    958 LIBS_p += -ltommath
    959 endif
    960 CONFIG_INTERNAL_AES=y
    961 CONFIG_INTERNAL_DES=y
    962 CONFIG_INTERNAL_SHA1=y
    963 CONFIG_INTERNAL_MD4=y
    964 CONFIG_INTERNAL_MD5=y
    965 CONFIG_INTERNAL_SHA256=y
    966 CONFIG_INTERNAL_RC4=y
    967 CONFIG_INTERNAL_DH_GROUP5=y
    968 endif
    969 ifeq ($(CONFIG_CRYPTO), cryptoapi)
    970 OBJS += src/crypto/crypto_cryptoapi.c
    971 OBJS_p += src/crypto/crypto_cryptoapi.c
    972 L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
    973 CONFIG_INTERNAL_SHA256=y
    974 CONFIG_INTERNAL_RC4=y
    975 endif
    976 endif
    977 
    978 ifeq ($(CONFIG_TLS), none)
    979 ifdef TLS_FUNCS
    980 OBJS += src/crypto/tls_none.c
    981 L_CFLAGS += -DEAP_TLS_NONE
    982 CONFIG_INTERNAL_AES=y
    983 CONFIG_INTERNAL_SHA1=y
    984 CONFIG_INTERNAL_MD5=y
    985 endif
    986 OBJS += src/crypto/crypto_none.c
    987 OBJS_p += src/crypto/crypto_none.c
    988 CONFIG_INTERNAL_SHA256=y
    989 CONFIG_INTERNAL_RC4=y
    990 endif
    991 
    992 ifdef TLS_FUNCS
    993 ifdef CONFIG_SMARTCARD
    994 ifndef CONFIG_NATIVE_WINDOWS
    995 ifneq ($(CONFIG_L2_PACKET), freebsd)
    996 LIBS += -ldl
    997 endif
    998 endif
    999 endif
   1000 endif
   1001 
   1002 ifndef TLS_FUNCS
   1003 OBJS += src/crypto/tls_none.c
   1004 ifeq ($(CONFIG_TLS), internal)
   1005 CONFIG_INTERNAL_AES=y
   1006 CONFIG_INTERNAL_SHA1=y
   1007 CONFIG_INTERNAL_MD5=y
   1008 CONFIG_INTERNAL_RC4=y
   1009 endif
   1010 endif
   1011 
   1012 AESOBJS = # none so far (see below)
   1013 ifdef CONFIG_INTERNAL_AES
   1014 AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-dec.c
   1015 endif
   1016 
   1017 AESOBJS += src/crypto/aes-unwrap.c
   1018 ifdef NEED_AES_EAX
   1019 AESOBJS += src/crypto/aes-eax.c
   1020 NEED_AES_CTR=y
   1021 endif
   1022 ifdef NEED_AES_CTR
   1023 AESOBJS += src/crypto/aes-ctr.c
   1024 endif
   1025 ifdef NEED_AES_ENCBLOCK
   1026 AESOBJS += src/crypto/aes-encblock.c
   1027 endif
   1028 ifdef NEED_AES_OMAC1
   1029 NEED_AES_ENC=y
   1030 AESOBJS += src/crypto/aes-omac1.c
   1031 endif
   1032 ifdef NEED_AES_WRAP
   1033 NEED_AES_ENC=y
   1034 AESOBJS += src/crypto/aes-wrap.c
   1035 endif
   1036 ifdef NEED_AES_CBC
   1037 NEED_AES_ENC=y
   1038 AESOBJS += src/crypto/aes-cbc.c
   1039 endif
   1040 ifdef NEED_AES_ENC
   1041 ifdef CONFIG_INTERNAL_AES
   1042 AESOBJS += src/crypto/aes-internal-enc.c
   1043 endif
   1044 endif
   1045 ifdef NEED_AES
   1046 OBJS += $(AESOBJS)
   1047 endif
   1048 
   1049 SHA1OBJS =
   1050 ifdef NEED_SHA1
   1051 SHA1OBJS += src/crypto/sha1.c
   1052 ifdef CONFIG_INTERNAL_SHA1
   1053 SHA1OBJS += src/crypto/sha1-internal.c
   1054 ifdef NEED_FIPS186_2_PRF
   1055 SHA1OBJS += src/crypto/fips_prf_internal.c
   1056 endif
   1057 endif
   1058 ifdef CONFIG_NO_WPA_PASSPHRASE
   1059 L_CFLAGS += -DCONFIG_NO_PBKDF2
   1060 else
   1061 SHA1OBJS += src/crypto/sha1-pbkdf2.c
   1062 endif
   1063 ifdef NEED_T_PRF
   1064 SHA1OBJS += src/crypto/sha1-tprf.c
   1065 endif
   1066 ifdef NEED_TLS_PRF
   1067 SHA1OBJS += src/crypto/sha1-tlsprf.c
   1068 endif
   1069 endif
   1070 
   1071 MD5OBJS = src/crypto/md5.c
   1072 ifdef NEED_MD5
   1073 ifdef CONFIG_INTERNAL_MD5
   1074 MD5OBJS += src/crypto/md5-internal.c
   1075 endif
   1076 ifdef CONFIG_FIPS
   1077 MD5OBJS += src/crypto/md5-non-fips.c
   1078 endif
   1079 OBJS += $(MD5OBJS)
   1080 OBJS_p += $(MD5OBJS)
   1081 endif
   1082 
   1083 ifdef NEED_MD4
   1084 ifdef CONFIG_INTERNAL_MD4
   1085 OBJS += src/crypto/md4-internal.c
   1086 endif
   1087 endif
   1088 
   1089 DESOBJS = # none needed when not internal
   1090 ifdef NEED_DES
   1091 ifdef CONFIG_INTERNAL_DES
   1092 DESOBJS += src/crypto/des-internal.c
   1093 endif
   1094 endif
   1095 
   1096 ifdef NEED_RC4
   1097 ifdef CONFIG_INTERNAL_RC4
   1098 OBJS += src/crypto/rc4.c
   1099 endif
   1100 endif
   1101 
   1102 SHA256OBJS = # none by default
   1103 ifdef NEED_SHA256
   1104 L_CFLAGS += -DCONFIG_SHA256
   1105 SHA256OBJS += src/crypto/sha256.c
   1106 ifdef CONFIG_INTERNAL_SHA256
   1107 SHA256OBJS += src/crypto/sha256-internal.c
   1108 endif
   1109 OBJS += $(SHA256OBJS)
   1110 endif
   1111 
   1112 ifdef NEED_DH_GROUPS
   1113 OBJS += src/crypto/dh_groups.c
   1114 endif
   1115 ifdef NEED_DH_GROUPS_ALL
   1116 L_CFLAGS += -DALL_DH_GROUPS
   1117 endif
   1118 ifdef CONFIG_INTERNAL_DH_GROUP5
   1119 ifdef NEED_DH_GROUPS
   1120 OBJS += src/crypto/dh_group5.c
   1121 endif
   1122 endif
   1123 
   1124 ifdef CONFIG_NO_RANDOM_POOL
   1125 L_CFLAGS += -DCONFIG_NO_RANDOM_POOL
   1126 else
   1127 OBJS += src/crypto/random.c
   1128 endif
   1129 
   1130 ifdef CONFIG_CTRL_IFACE
   1131 ifeq ($(CONFIG_CTRL_IFACE), y)
   1132 ifdef CONFIG_NATIVE_WINDOWS
   1133 CONFIG_CTRL_IFACE=named_pipe
   1134 else
   1135 CONFIG_CTRL_IFACE=unix
   1136 endif
   1137 endif
   1138 L_CFLAGS += -DCONFIG_CTRL_IFACE
   1139 ifeq ($(CONFIG_CTRL_IFACE), unix)
   1140 L_CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
   1141 endif
   1142 ifeq ($(CONFIG_CTRL_IFACE), udp)
   1143 L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP
   1144 endif
   1145 ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
   1146 L_CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
   1147 endif
   1148 OBJS += ctrl_iface.c ctrl_iface_$(CONFIG_CTRL_IFACE).c
   1149 endif
   1150 
   1151 ifdef CONFIG_CTRL_IFACE_DBUS
   1152 DBUS=y
   1153 DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
   1154 DBUS_OBJS += dbus/dbus_old.c dbus/dbus_old_handlers.c
   1155 ifdef CONFIG_WPS
   1156 DBUS_OBJS += dbus/dbus_old_handlers_wps.c
   1157 endif
   1158 DBUS_OBJS += dbus/dbus_dict_helpers.c
   1159 ifndef DBUS_LIBS
   1160 DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
   1161 endif
   1162 ifndef DBUS_INCLUDE
   1163 DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
   1164 endif
   1165 dbus_version=$(subst ., ,$(shell $(PKG_CONFIG) --modversion dbus-1))
   1166 DBUS_VERSION_MAJOR=$(word 1,$(dbus_version))
   1167 DBUS_VERSION_MINOR=$(word 2,$(dbus_version))
   1168 ifeq ($(DBUS_VERSION_MAJOR),)
   1169 DBUS_VERSION_MAJOR=0
   1170 endif
   1171 ifeq ($(DBUS_VERSION_MINOR),)
   1172 DBUS_VERSION_MINOR=0
   1173 endif
   1174 DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR)
   1175 DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR)
   1176 DBUS_CFLAGS += $(DBUS_INCLUDE)
   1177 endif
   1178 
   1179 ifdef CONFIG_CTRL_IFACE_DBUS_NEW
   1180 DBUS=y
   1181 DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
   1182 DBUS_OBJS ?= dbus/dbus_dict_helpers.c
   1183 DBUS_OBJS += dbus/dbus_new_helpers.c
   1184 DBUS_OBJS += dbus/dbus_new.c dbus/dbus_new_handlers.c
   1185 ifdef CONFIG_WPS
   1186 DBUS_OBJS += dbus/dbus_new_handlers_wps.c
   1187 endif
   1188 ifdef CONFIG_P2P
   1189 DBUS_OBJS += dbus/dbus_new_handlers_p2p.c
   1190 endif
   1191 ifndef DBUS_LIBS
   1192 DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
   1193 endif
   1194 ifndef DBUS_INCLUDE
   1195 DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
   1196 endif
   1197 ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
   1198 DBUS_OBJS += dbus/dbus_new_introspect.c
   1199 DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
   1200 endif
   1201 DBUS_CFLAGS += $(DBUS_INCLUDE)
   1202 endif
   1203 
   1204 ifdef DBUS
   1205 DBUS_CFLAGS += -DCONFIG_DBUS
   1206 DBUS_OBJS += dbus/dbus_common.c
   1207 endif
   1208 
   1209 OBJS += $(DBUS_OBJS)
   1210 L_CFLAGS += $(DBUS_CFLAGS)
   1211 LIBS += $(DBUS_LIBS)
   1212 
   1213 ifdef CONFIG_READLINE
   1214 OBJS_c += src/utils/edit_readline.c
   1215 LIBS_c += -lncurses -lreadline
   1216 else
   1217 ifdef CONFIG_WPA_CLI_EDIT
   1218 OBJS_c += src/utils/edit.c
   1219 else
   1220 OBJS_c += src/utils/edit_simple.c
   1221 endif
   1222 endif
   1223 
   1224 ifdef CONFIG_NATIVE_WINDOWS
   1225 L_CFLAGS += -DCONFIG_NATIVE_WINDOWS
   1226 LIBS += -lws2_32 -lgdi32 -lcrypt32
   1227 LIBS_c += -lws2_32
   1228 LIBS_p += -lws2_32 -lgdi32
   1229 ifeq ($(CONFIG_CRYPTO), cryptoapi)
   1230 LIBS_p += -lcrypt32
   1231 endif
   1232 endif
   1233 
   1234 ifdef CONFIG_NO_STDOUT_DEBUG
   1235 L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
   1236 ifndef CONFIG_CTRL_IFACE
   1237 L_CFLAGS += -DCONFIG_NO_WPA_MSG
   1238 endif
   1239 endif
   1240 
   1241 ifdef CONFIG_ANDROID_LOG
   1242 L_CFLAGS += -DCONFIG_ANDROID_LOG
   1243 endif
   1244 
   1245 ifdef CONFIG_IPV6
   1246 # for eapol_test only
   1247 L_CFLAGS += -DCONFIG_IPV6
   1248 endif
   1249 
   1250 ifdef NEED_BASE64
   1251 OBJS += src/utils/base64.c
   1252 endif
   1253 
   1254 ifdef NEED_SME
   1255 NEED_80211_COMMON=y
   1256 OBJS += sme.c
   1257 L_CFLAGS += -DCONFIG_SME
   1258 endif
   1259 
   1260 ifdef CONFIG_CLIENT_MLME
   1261 OBJS += mlme.c
   1262 L_CFLAGS += -DCONFIG_CLIENT_MLME
   1263 NEED_80211_COMMON=y
   1264 endif
   1265 
   1266 ifdef NEED_80211_COMMON
   1267 OBJS += src/common/ieee802_11_common.c
   1268 endif
   1269 
   1270 ifdef NEED_EAP_COMMON
   1271 OBJS += src/eap_common/eap_common.c
   1272 endif
   1273 
   1274 ifndef CONFIG_MAIN
   1275 CONFIG_MAIN=main
   1276 endif
   1277 
   1278 ifdef CONFIG_DEBUG_SYSLOG
   1279 L_CFLAGS += -DCONFIG_DEBUG_SYSLOG
   1280 ifdef CONFIG_DEBUG_SYSLOG_FACILITY
   1281 L_CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
   1282 endif
   1283 endif
   1284 
   1285 ifdef CONFIG_DEBUG_FILE
   1286 L_CFLAGS += -DCONFIG_DEBUG_FILE
   1287 endif
   1288 
   1289 ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
   1290 L_CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
   1291 endif
   1292 
   1293 ifdef CONFIG_FIPS
   1294 L_CFLAGS += -DCONFIG_FIPS
   1295 endif
   1296 
   1297 OBJS += $(SHA1OBJS) $(DESOBJS)
   1298 
   1299 OBJS_p += $(SHA1OBJS)
   1300 
   1301 ifdef CONFIG_BGSCAN_SIMPLE
   1302 L_CFLAGS += -DCONFIG_BGSCAN_SIMPLE
   1303 OBJS += bgscan_simple.c
   1304 NEED_BGSCAN=y
   1305 endif
   1306 
   1307 ifdef CONFIG_BGSCAN_LEARN
   1308 L_CFLAGS += -DCONFIG_BGSCAN_LEARN
   1309 OBJS += bgscan_learn.c
   1310 NEED_BGSCAN=y
   1311 endif
   1312 
   1313 ifdef NEED_BGSCAN
   1314 L_CFLAGS += -DCONFIG_BGSCAN
   1315 OBJS += bgscan.c
   1316 endif
   1317 
   1318 OBJS_wpa_rm := ctrl_iface.c mlme.c ctrl_iface_unix.c
   1319 OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.c
   1320 ifdef CONFIG_AUTHENTICATOR
   1321 OBJS_wpa += tests/link_test.c
   1322 endif
   1323 OBJS_wpa += $(OBJS_l2)
   1324 OBJS += wpa_supplicant.c events.c blacklist.c wpas_glue.c scan.c
   1325 OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.c
   1326 OBJS_t += src/radius/radius_client.c
   1327 OBJS_t += src/radius/radius.c
   1328 ifndef CONFIG_AP
   1329 OBJS_t += src/utils/ip_addr.c
   1330 endif
   1331 OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.c
   1332 OBJS += $(CONFIG_MAIN).c
   1333 
   1334 ifdef CONFIG_PRIVSEP
   1335 OBJS_priv += $(OBJS_d) src/drivers/drivers.c
   1336 OBJS_priv += $(OBJS_l2)
   1337 OBJS_priv += src/utils/os_$(CONFIG_OS).c
   1338 OBJS_priv += src/utils/$(CONFIG_ELOOP).c
   1339 OBJS_priv += src/utils/common.c
   1340 OBJS_priv += src/utils/wpa_debug.c
   1341 OBJS_priv += src/utils/wpabuf.c
   1342 OBJS_priv += wpa_priv.c
   1343 ifdef CONFIG_DRIVER_TEST
   1344 OBJS_priv += $(SHA1OBJS)
   1345 OBJS_priv += $(MD5OBJS)
   1346 ifeq ($(CONFIG_TLS), openssl)
   1347 OBJS_priv += src/crypto/crypto_openssl.c
   1348 endif
   1349 ifeq ($(CONFIG_TLS), gnutls)
   1350 OBJS_priv += src/crypto/crypto_gnutls.c
   1351 endif
   1352 ifeq ($(CONFIG_TLS), nss)
   1353 OBJS_priv += src/crypto/crypto_nss.c
   1354 endif
   1355 ifeq ($(CONFIG_TLS), internal)
   1356 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
   1357 OBJS_priv += src/crypto/crypto_libtomcrypt.c
   1358 else
   1359 OBJS_priv += src/crypto/crypto_internal.c
   1360 endif
   1361 endif
   1362 endif # CONFIG_DRIVER_TEST
   1363 OBJS += src/l2_packet/l2_packet_privsep.c
   1364 OBJS += src/drivers/driver_privsep.c
   1365 EXTRA_progs += wpa_priv
   1366 else
   1367 OBJS += $(OBJS_d) src/drivers/drivers.c
   1368 OBJS += $(OBJS_l2)
   1369 endif
   1370 
   1371 ifdef CONFIG_NDIS_EVENTS_INTEGRATED
   1372 L_CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
   1373 OBJS += src/drivers/ndis_events.c
   1374 EXTRALIBS += -loleaut32 -lole32 -luuid
   1375 ifdef PLATFORMSDKLIB
   1376 EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
   1377 else
   1378 EXTRALIBS += WbemUuid.Lib
   1379 endif
   1380 endif
   1381 
   1382 ifndef LDO
   1383 LDO=$(CC)
   1384 endif
   1385 
   1386 ########################
   1387 
   1388 include $(CLEAR_VARS)
   1389 LOCAL_MODULE := wpa_cli
   1390 LOCAL_MODULE_TAGS := debug
   1391 LOCAL_SHARED_LIBRARIES := libc libcutils
   1392 LOCAL_CFLAGS := $(L_CFLAGS)
   1393 LOCAL_SRC_FILES := $(OBJS_c)
   1394 LOCAL_C_INCLUDES := $(INCLUDES)
   1395 include $(BUILD_EXECUTABLE)
   1396 
   1397 ########################
   1398 include $(CLEAR_VARS)
   1399 LOCAL_MODULE := wpa_supplicant
   1400 ifdef CONFIG_DRIVER_CUSTOM
   1401 LOCAL_STATIC_LIBRARIES := libCustomWifi
   1402 endif
   1403 ifneq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),)
   1404 LOCAL_STATIC_LIBRARIES += $(BOARD_WPA_SUPPLICANT_PRIVATE_LIB)
   1405 endif
   1406 LOCAL_SHARED_LIBRARIES := libc libcutils libcrypto libssl
   1407 ifdef CONFIG_DRIVER_NL80211
   1408 LOCAL_STATIC_LIBRARIES += libnl_2
   1409 endif
   1410 LOCAL_CFLAGS := $(L_CFLAGS)
   1411 LOCAL_SRC_FILES := $(OBJS)
   1412 LOCAL_C_INCLUDES := $(INCLUDES)
   1413 include $(BUILD_EXECUTABLE)
   1414 
   1415 ########################
   1416 #
   1417 #include $(CLEAR_VARS)
   1418 #LOCAL_MODULE := eapol_test
   1419 #ifdef CONFIG_DRIVER_CUSTOM
   1420 #LOCAL_STATIC_LIBRARIES := libCustomWifi
   1421 #endif
   1422 #LOCAL_SHARED_LIBRARIES := libc libcrypto libssl
   1423 #LOCAL_CFLAGS := $(L_CFLAGS)
   1424 #LOCAL_SRC_FILES := $(OBJS_t)
   1425 #LOCAL_C_INCLUDES := $(INCLUDES)
   1426 #include $(BUILD_EXECUTABLE)
   1427 #
   1428 ########################
   1429 #
   1430 #local_target_dir := $(TARGET_OUT)/etc/wifi
   1431 #
   1432 #include $(CLEAR_VARS)
   1433 #LOCAL_MODULE := wpa_supplicant.conf
   1434 #LOCAL_MODULE_TAGS := user
   1435 #LOCAL_MODULE_CLASS := ETC
   1436 #LOCAL_MODULE_PATH := $(local_target_dir)
   1437 #LOCAL_SRC_FILES := $(LOCAL_MODULE)
   1438 #include $(BUILD_PREBUILT)
   1439 #
   1440 ########################
   1441 
   1442 endif # ifeq ($(WPA_BUILD_SUPPLICANT),true)
   1443 
   1444 include $(CLEAR_VARS)
   1445 LOCAL_MODULE = libwpa_client
   1446 LOCAL_CFLAGS = $(L_CFLAGS)
   1447 LOCAL_SRC_FILES = src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c
   1448 LOCAL_C_INCLUDES = $(INCLUDES)
   1449 LOCAL_SHARED_LIBRARIES := libcutils
   1450 LOCAL_COPY_HEADERS_TO := libwpa_client
   1451 LOCAL_COPY_HEADERS := src/common/wpa_ctrl.h
   1452 include $(BUILD_SHARED_LIBRARY)
   1453