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