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