1 ifndef CC 2 CC=gcc 3 endif 4 5 ifndef CFLAGS 6 CFLAGS = -MMD -O2 -Wall -g 7 endif 8 9 ifdef LIBS 10 # If LIBS is set with some global build system defaults, clone those for 11 # LIBS_c and LIBS_p to cover wpa_passphrase and wpa_cli as well. 12 ifndef LIBS_c 13 LIBS_c := $(LIBS) 14 endif 15 ifndef LIBS_p 16 LIBS_p := $(LIBS) 17 endif 18 endif 19 20 export LIBDIR ?= /usr/local/lib/ 21 export INCDIR ?= /usr/local/include/ 22 export BINDIR ?= /usr/local/sbin/ 23 PKG_CONFIG ?= pkg-config 24 25 CFLAGS += $(EXTRA_CFLAGS) 26 CFLAGS += -I$(abspath ../src) 27 CFLAGS += -I$(abspath ../src/utils) 28 29 -include .config 30 31 ifndef CONFIG_NO_GITVER 32 # Add VERSION_STR postfix for builds from a git repository 33 ifeq ($(wildcard ../.git),../.git) 34 GITVER := $(shell git describe --dirty=+) 35 ifneq ($(GITVER),) 36 CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\" 37 endif 38 endif 39 endif 40 41 ifdef CONFIG_TESTING_OPTIONS 42 CFLAGS += -DCONFIG_TESTING_OPTIONS 43 CONFIG_WPS_TESTING=y 44 CONFIG_TDLS_TESTING=y 45 endif 46 47 BINALL=wpa_supplicant wpa_cli 48 49 ifndef CONFIG_NO_WPA_PASSPHRASE 50 BINALL += wpa_passphrase 51 endif 52 53 ALL = $(BINALL) 54 ALL += systemd/wpa_supplicant.service 55 ALL += systemd/wpa_supplicant@.service 56 ALL += systemd/wpa_supplicant-nl80211@.service 57 ALL += systemd/wpa_supplicant-wired@.service 58 ALL += dbus/fi.w1.wpa_supplicant1.service 59 ifdef CONFIG_BUILD_WPA_CLIENT_SO 60 ALL += libwpa_client.so 61 endif 62 63 64 all: verify_config $(ALL) dynamic_eap_methods 65 66 verify_config: 67 @if [ ! -r .config ]; then \ 68 echo 'Building wpa_supplicant requires a configuration file'; \ 69 echo '(.config). See README for more instructions. You can'; \ 70 echo 'run "cp defconfig .config" to create an example'; \ 71 echo 'configuration.'; \ 72 exit 1; \ 73 fi 74 75 mkconfig: 76 @if [ -f .config ]; then \ 77 echo '.config exists - did not replace it'; \ 78 exit 1; \ 79 fi 80 echo CONFIG_DRIVER_HOSTAP=y >> .config 81 echo CONFIG_DRIVER_WEXT=y >> .config 82 83 $(DESTDIR)$(BINDIR)/%: % 84 install -D $(<) $(@) 85 86 install: $(addprefix $(DESTDIR)$(BINDIR)/,$(BINALL)) 87 $(MAKE) -C ../src install 88 ifdef CONFIG_BUILD_WPA_CLIENT_SO 89 install -m 0644 -D libwpa_client.so $(DESTDIR)/$(LIBDIR)/libwpa_client.so 90 install -m 0644 -D ../src/common/wpa_ctrl.h $(DESTDIR)/$(INCDIR)/wpa_ctrl.h 91 endif 92 93 ifdef CONFIG_FIPS 94 CONFIG_NO_RANDOM_POOL= 95 CONFIG_OPENSSL_CMAC=y 96 endif 97 98 OBJS = config.o 99 OBJS += notify.o 100 OBJS += bss.o 101 OBJS += eap_register.o 102 OBJS += ../src/utils/common.o 103 OBJS += ../src/utils/wpa_debug.o 104 OBJS += ../src/utils/wpabuf.o 105 OBJS += ../src/utils/bitfield.o 106 OBJS += op_classes.o 107 OBJS += rrm.o 108 OBJS_p = wpa_passphrase.o 109 OBJS_p += ../src/utils/common.o 110 OBJS_p += ../src/utils/wpa_debug.o 111 OBJS_p += ../src/utils/wpabuf.o 112 OBJS_c = wpa_cli.o ../src/common/wpa_ctrl.o 113 OBJS_c += ../src/utils/wpa_debug.o 114 OBJS_c += ../src/utils/common.o 115 OBJS_c += ../src/common/cli.o 116 OBJS += wmm_ac.o 117 118 ifndef CONFIG_OS 119 ifdef CONFIG_NATIVE_WINDOWS 120 CONFIG_OS=win32 121 else 122 CONFIG_OS=unix 123 endif 124 endif 125 126 ifeq ($(CONFIG_OS), internal) 127 CFLAGS += -DOS_NO_C_LIB_DEFINES 128 endif 129 130 OBJS += ../src/utils/os_$(CONFIG_OS).o 131 OBJS_p += ../src/utils/os_$(CONFIG_OS).o 132 OBJS_c += ../src/utils/os_$(CONFIG_OS).o 133 134 ifdef CONFIG_WPA_TRACE 135 CFLAGS += -DWPA_TRACE 136 OBJS += ../src/utils/trace.o 137 OBJS_p += ../src/utils/trace.o 138 OBJS_c += ../src/utils/trace.o 139 OBJS_priv += ../src/utils/trace.o 140 LIBCTRL += ../src/utils/trace.o 141 LIBCTRLSO += ../src/utils/trace.c 142 LDFLAGS += -rdynamic 143 CFLAGS += -funwind-tables 144 ifdef CONFIG_WPA_TRACE_BFD 145 CFLAGS += -DPACKAGE="wpa_supplicant" -DWPA_TRACE_BFD 146 LIBS += -lbfd -ldl -liberty -lz 147 LIBS_p += -lbfd -ldl -liberty -lz 148 LIBS_c += -lbfd -ldl -liberty -lz 149 endif 150 endif 151 152 ifndef CONFIG_ELOOP 153 CONFIG_ELOOP=eloop 154 endif 155 OBJS += ../src/utils/$(CONFIG_ELOOP).o 156 OBJS_c += ../src/utils/$(CONFIG_ELOOP).o 157 158 ifndef CONFIG_OSX 159 ifeq ($(CONFIG_ELOOP), eloop) 160 # Using glibc < 2.17 requires -lrt for clock_gettime() 161 # OS X has an alternate implementation 162 LIBS += -lrt 163 LIBS_c += -lrt 164 LIBS_p += -lrt 165 endif 166 endif 167 168 ifdef CONFIG_ELOOP_POLL 169 CFLAGS += -DCONFIG_ELOOP_POLL 170 endif 171 172 ifdef CONFIG_ELOOP_EPOLL 173 CFLAGS += -DCONFIG_ELOOP_EPOLL 174 endif 175 176 ifdef CONFIG_ELOOP_KQUEUE 177 CFLAGS += -DCONFIG_ELOOP_KQUEUE 178 endif 179 180 ifdef CONFIG_EAPOL_TEST 181 CFLAGS += -Werror -DEAPOL_TEST 182 endif 183 184 ifdef CONFIG_CODE_COVERAGE 185 CFLAGS += -O0 -fprofile-arcs -ftest-coverage 186 LIBS += -lgcov 187 LIBS_c += -lgcov 188 LIBS_p += -lgcov 189 endif 190 191 ifdef CONFIG_HT_OVERRIDES 192 CFLAGS += -DCONFIG_HT_OVERRIDES 193 endif 194 195 ifdef CONFIG_VHT_OVERRIDES 196 CFLAGS += -DCONFIG_VHT_OVERRIDES 197 endif 198 199 ifndef CONFIG_BACKEND 200 CONFIG_BACKEND=file 201 endif 202 203 ifeq ($(CONFIG_BACKEND), file) 204 OBJS += config_file.o 205 ifndef CONFIG_NO_CONFIG_BLOBS 206 NEED_BASE64=y 207 endif 208 CFLAGS += -DCONFIG_BACKEND_FILE 209 endif 210 211 ifeq ($(CONFIG_BACKEND), winreg) 212 OBJS += config_winreg.o 213 endif 214 215 ifeq ($(CONFIG_BACKEND), none) 216 OBJS += config_none.o 217 endif 218 219 ifdef CONFIG_NO_CONFIG_WRITE 220 CFLAGS += -DCONFIG_NO_CONFIG_WRITE 221 endif 222 223 ifdef CONFIG_NO_CONFIG_BLOBS 224 CFLAGS += -DCONFIG_NO_CONFIG_BLOBS 225 endif 226 227 ifdef CONFIG_NO_SCAN_PROCESSING 228 CFLAGS += -DCONFIG_NO_SCAN_PROCESSING 229 endif 230 231 ifdef CONFIG_SUITEB 232 CFLAGS += -DCONFIG_SUITEB 233 NEED_SHA256=y 234 NEED_AES_OMAC1=y 235 endif 236 237 ifdef CONFIG_SUITEB192 238 CFLAGS += -DCONFIG_SUITEB192 239 NEED_SHA384=y 240 endif 241 242 ifdef CONFIG_OCV 243 CFLAGS += -DCONFIG_OCV 244 OBJS += ../src/common/ocv.o 245 CONFIG_IEEE80211W=y 246 endif 247 248 ifdef CONFIG_IEEE80211W 249 CFLAGS += -DCONFIG_IEEE80211W 250 NEED_SHA256=y 251 NEED_AES_OMAC1=y 252 endif 253 254 ifdef CONFIG_IEEE80211R 255 CFLAGS += -DCONFIG_IEEE80211R 256 OBJS += ../src/rsn_supp/wpa_ft.o 257 NEED_SHA256=y 258 NEED_AES_OMAC1=y 259 endif 260 261 ifdef CONFIG_MESH 262 NEED_80211_COMMON=y 263 NEED_SHA256=y 264 NEED_AES_SIV=y 265 CONFIG_SAE=y 266 CONFIG_AP=y 267 CFLAGS += -DCONFIG_MESH 268 OBJS += mesh.o 269 OBJS += mesh_mpm.o 270 OBJS += mesh_rsn.o 271 endif 272 273 ifdef CONFIG_SAE 274 CFLAGS += -DCONFIG_SAE 275 OBJS += ../src/common/sae.o 276 NEED_ECC=y 277 NEED_DH_GROUPS=y 278 endif 279 280 ifdef CONFIG_DPP 281 CFLAGS += -DCONFIG_DPP 282 OBJS += ../src/common/dpp.o 283 OBJS += dpp_supplicant.o 284 NEED_AES_SIV=y 285 NEED_HMAC_SHA256_KDF=y 286 NEED_HMAC_SHA384_KDF=y 287 NEED_HMAC_SHA512_KDF=y 288 NEED_SHA256=y 289 NEED_SHA384=y 290 NEED_SHA512=y 291 NEED_JSON=y 292 NEED_GAS_SERVER=y 293 NEED_BASE64=y 294 ifdef CONFIG_DPP2 295 CFLAGS += -DCONFIG_DPP2 296 endif 297 endif 298 299 ifdef CONFIG_OWE 300 CFLAGS += -DCONFIG_OWE 301 NEED_ECC=y 302 NEED_HMAC_SHA256_KDF=y 303 NEED_HMAC_SHA384_KDF=y 304 NEED_HMAC_SHA512_KDF=y 305 NEED_SHA256=y 306 NEED_SHA384=y 307 NEED_SHA512=y 308 endif 309 310 ifdef CONFIG_FILS 311 CFLAGS += -DCONFIG_FILS 312 NEED_SHA384=y 313 NEED_AES_SIV=y 314 ifdef CONFIG_FILS_SK_PFS 315 CFLAGS += -DCONFIG_FILS_SK_PFS 316 NEED_ECC=y 317 endif 318 endif 319 320 ifdef CONFIG_MBO 321 CONFIG_WNM=y 322 endif 323 324 ifdef CONFIG_WNM 325 CFLAGS += -DCONFIG_WNM 326 OBJS += wnm_sta.o 327 endif 328 329 ifdef CONFIG_TDLS 330 CFLAGS += -DCONFIG_TDLS 331 OBJS += ../src/rsn_supp/tdls.o 332 NEED_SHA256=y 333 NEED_AES_OMAC1=y 334 endif 335 336 ifdef CONFIG_TDLS_TESTING 337 CFLAGS += -DCONFIG_TDLS_TESTING 338 endif 339 340 ifdef CONFIG_PMKSA_CACHE_EXTERNAL 341 CFLAGS += -DCONFIG_PMKSA_CACHE_EXTERNAL 342 endif 343 344 ifndef CONFIG_NO_WPA 345 OBJS += ../src/rsn_supp/wpa.o 346 OBJS += ../src/rsn_supp/preauth.o 347 OBJS += ../src/rsn_supp/pmksa_cache.o 348 OBJS += ../src/rsn_supp/wpa_ie.o 349 OBJS += ../src/common/wpa_common.o 350 NEED_AES=y 351 NEED_SHA1=y 352 NEED_MD5=y 353 NEED_RC4=y 354 else 355 CFLAGS += -DCONFIG_NO_WPA 356 ifeq ($(CONFIG_TLS), internal) 357 NEED_SHA1=y 358 NEED_MD5=y 359 endif 360 endif 361 362 ifdef CONFIG_IBSS_RSN 363 NEED_RSN_AUTHENTICATOR=y 364 CFLAGS += -DCONFIG_IBSS_RSN 365 CFLAGS += -DCONFIG_NO_VLAN 366 OBJS += ibss_rsn.o 367 endif 368 369 ifdef CONFIG_MATCH_IFACE 370 CFLAGS += -DCONFIG_MATCH_IFACE 371 endif 372 373 ifdef CONFIG_P2P 374 OBJS += p2p_supplicant.o 375 OBJS += p2p_supplicant_sd.o 376 OBJS += ../src/p2p/p2p.o 377 OBJS += ../src/p2p/p2p_utils.o 378 OBJS += ../src/p2p/p2p_parse.o 379 OBJS += ../src/p2p/p2p_build.o 380 OBJS += ../src/p2p/p2p_go_neg.o 381 OBJS += ../src/p2p/p2p_sd.o 382 OBJS += ../src/p2p/p2p_pd.o 383 OBJS += ../src/p2p/p2p_invitation.o 384 OBJS += ../src/p2p/p2p_dev_disc.o 385 OBJS += ../src/p2p/p2p_group.o 386 OBJS += ../src/ap/p2p_hostapd.o 387 CFLAGS += -DCONFIG_P2P 388 NEED_GAS=y 389 NEED_OFFCHANNEL=y 390 CONFIG_WPS=y 391 CONFIG_AP=y 392 ifdef CONFIG_P2P_STRICT 393 CFLAGS += -DCONFIG_P2P_STRICT 394 endif 395 endif 396 397 ifdef CONFIG_WIFI_DISPLAY 398 CFLAGS += -DCONFIG_WIFI_DISPLAY 399 OBJS += wifi_display.o 400 endif 401 402 ifdef CONFIG_HS20 403 OBJS += hs20_supplicant.o 404 CFLAGS += -DCONFIG_HS20 405 CONFIG_INTERWORKING=y 406 NEED_AES_OMAC1=y 407 endif 408 409 ifdef CONFIG_INTERWORKING 410 OBJS += interworking.o 411 CFLAGS += -DCONFIG_INTERWORKING 412 NEED_GAS=y 413 endif 414 415 ifdef CONFIG_NO_ROAMING 416 CFLAGS += -DCONFIG_NO_ROAMING 417 endif 418 419 include ../src/drivers/drivers.mak 420 ifdef CONFIG_AP 421 OBJS_d += $(DRV_BOTH_OBJS) 422 CFLAGS += $(DRV_BOTH_CFLAGS) 423 LDFLAGS += $(DRV_BOTH_LDFLAGS) 424 LIBS += $(DRV_BOTH_LIBS) 425 else 426 NEED_AP_MLME= 427 OBJS_d += $(DRV_WPA_OBJS) 428 CFLAGS += $(DRV_WPA_CFLAGS) 429 LDFLAGS += $(DRV_WPA_LDFLAGS) 430 LIBS += $(DRV_WPA_LIBS) 431 endif 432 433 ifndef CONFIG_L2_PACKET 434 CONFIG_L2_PACKET=linux 435 endif 436 437 OBJS_l2 += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o 438 439 ifeq ($(CONFIG_L2_PACKET), pcap) 440 ifdef CONFIG_WINPCAP 441 CFLAGS += -DCONFIG_WINPCAP 442 LIBS += -lwpcap -lpacket 443 LIBS_w += -lwpcap 444 else 445 LIBS += -ldnet -lpcap 446 endif 447 endif 448 449 ifeq ($(CONFIG_L2_PACKET), winpcap) 450 LIBS += -lwpcap -lpacket 451 LIBS_w += -lwpcap 452 endif 453 454 ifeq ($(CONFIG_L2_PACKET), freebsd) 455 LIBS += -lpcap 456 endif 457 458 ifdef CONFIG_ERP 459 CFLAGS += -DCONFIG_ERP 460 NEED_SHA256=y 461 NEED_HMAC_SHA256_KDF=y 462 endif 463 464 ifdef CONFIG_EAP_TLS 465 # EAP-TLS 466 ifeq ($(CONFIG_EAP_TLS), dyn) 467 CFLAGS += -DEAP_TLS_DYNAMIC 468 EAPDYN += ../src/eap_peer/eap_tls.so 469 else 470 CFLAGS += -DEAP_TLS 471 OBJS += ../src/eap_peer/eap_tls.o 472 endif 473 TLS_FUNCS=y 474 CONFIG_IEEE8021X_EAPOL=y 475 endif 476 477 ifdef CONFIG_EAP_UNAUTH_TLS 478 # EAP-UNAUTH-TLS 479 CFLAGS += -DEAP_UNAUTH_TLS 480 ifndef CONFIG_EAP_TLS 481 OBJS += ../src/eap_peer/eap_tls.o 482 TLS_FUNCS=y 483 endif 484 CONFIG_IEEE8021X_EAPOL=y 485 endif 486 487 ifdef CONFIG_EAP_PEAP 488 # EAP-PEAP 489 ifeq ($(CONFIG_EAP_PEAP), dyn) 490 CFLAGS += -DEAP_PEAP_DYNAMIC 491 EAPDYN += ../src/eap_peer/eap_peap.so 492 else 493 CFLAGS += -DEAP_PEAP 494 OBJS += ../src/eap_peer/eap_peap.o 495 OBJS += ../src/eap_common/eap_peap_common.o 496 endif 497 TLS_FUNCS=y 498 CONFIG_IEEE8021X_EAPOL=y 499 endif 500 501 ifdef CONFIG_EAP_TTLS 502 # EAP-TTLS 503 ifeq ($(CONFIG_EAP_TTLS), dyn) 504 CFLAGS += -DEAP_TTLS_DYNAMIC 505 EAPDYN += ../src/eap_peer/eap_ttls.so 506 else 507 CFLAGS += -DEAP_TTLS 508 OBJS += ../src/eap_peer/eap_ttls.o 509 endif 510 TLS_FUNCS=y 511 ifndef CONFIG_FIPS 512 MS_FUNCS=y 513 CHAP=y 514 endif 515 CONFIG_IEEE8021X_EAPOL=y 516 endif 517 518 ifdef CONFIG_EAP_MD5 519 # EAP-MD5 520 ifeq ($(CONFIG_EAP_MD5), dyn) 521 CFLAGS += -DEAP_MD5_DYNAMIC 522 EAPDYN += ../src/eap_peer/eap_md5.so 523 else 524 CFLAGS += -DEAP_MD5 525 OBJS += ../src/eap_peer/eap_md5.o 526 endif 527 CHAP=y 528 CONFIG_IEEE8021X_EAPOL=y 529 endif 530 531 # backwards compatibility for old spelling 532 ifdef CONFIG_MSCHAPV2 533 ifndef CONFIG_EAP_MSCHAPV2 534 CONFIG_EAP_MSCHAPV2=y 535 endif 536 endif 537 538 ifdef CONFIG_EAP_MSCHAPV2 539 # EAP-MSCHAPv2 540 ifeq ($(CONFIG_EAP_MSCHAPV2), dyn) 541 CFLAGS += -DEAP_MSCHAPv2_DYNAMIC 542 EAPDYN += ../src/eap_peer/eap_mschapv2.so 543 EAPDYN += ../src/eap_peer/mschapv2.so 544 else 545 CFLAGS += -DEAP_MSCHAPv2 546 OBJS += ../src/eap_peer/eap_mschapv2.o 547 OBJS += ../src/eap_peer/mschapv2.o 548 endif 549 MS_FUNCS=y 550 CONFIG_IEEE8021X_EAPOL=y 551 endif 552 553 ifdef CONFIG_EAP_GTC 554 # EAP-GTC 555 ifeq ($(CONFIG_EAP_GTC), dyn) 556 CFLAGS += -DEAP_GTC_DYNAMIC 557 EAPDYN += ../src/eap_peer/eap_gtc.so 558 else 559 CFLAGS += -DEAP_GTC 560 OBJS += ../src/eap_peer/eap_gtc.o 561 endif 562 CONFIG_IEEE8021X_EAPOL=y 563 endif 564 565 ifdef CONFIG_EAP_OTP 566 # EAP-OTP 567 ifeq ($(CONFIG_EAP_OTP), dyn) 568 CFLAGS += -DEAP_OTP_DYNAMIC 569 EAPDYN += ../src/eap_peer/eap_otp.so 570 else 571 CFLAGS += -DEAP_OTP 572 OBJS += ../src/eap_peer/eap_otp.o 573 endif 574 CONFIG_IEEE8021X_EAPOL=y 575 endif 576 577 ifdef CONFIG_EAP_SIM 578 # EAP-SIM 579 ifeq ($(CONFIG_EAP_SIM), dyn) 580 CFLAGS += -DEAP_SIM_DYNAMIC 581 EAPDYN += ../src/eap_peer/eap_sim.so 582 else 583 CFLAGS += -DEAP_SIM 584 OBJS += ../src/eap_peer/eap_sim.o 585 endif 586 CONFIG_IEEE8021X_EAPOL=y 587 CONFIG_EAP_SIM_COMMON=y 588 NEED_AES_CBC=y 589 endif 590 591 ifdef CONFIG_EAP_LEAP 592 # EAP-LEAP 593 ifeq ($(CONFIG_EAP_LEAP), dyn) 594 CFLAGS += -DEAP_LEAP_DYNAMIC 595 EAPDYN += ../src/eap_peer/eap_leap.so 596 else 597 CFLAGS += -DEAP_LEAP 598 OBJS += ../src/eap_peer/eap_leap.o 599 endif 600 MS_FUNCS=y 601 CONFIG_IEEE8021X_EAPOL=y 602 endif 603 604 ifdef CONFIG_EAP_PSK 605 # EAP-PSK 606 ifeq ($(CONFIG_EAP_PSK), dyn) 607 CFLAGS += -DEAP_PSK_DYNAMIC 608 EAPDYN += ../src/eap_peer/eap_psk.so 609 else 610 CFLAGS += -DEAP_PSK 611 OBJS += ../src/eap_peer/eap_psk.o ../src/eap_common/eap_psk_common.o 612 endif 613 CONFIG_IEEE8021X_EAPOL=y 614 NEED_AES=y 615 NEED_AES_OMAC1=y 616 NEED_AES_ENCBLOCK=y 617 NEED_AES_EAX=y 618 endif 619 620 ifdef CONFIG_EAP_AKA 621 # EAP-AKA 622 ifeq ($(CONFIG_EAP_AKA), dyn) 623 CFLAGS += -DEAP_AKA_DYNAMIC 624 EAPDYN += ../src/eap_peer/eap_aka.so 625 else 626 CFLAGS += -DEAP_AKA 627 OBJS += ../src/eap_peer/eap_aka.o 628 endif 629 CONFIG_IEEE8021X_EAPOL=y 630 CONFIG_EAP_SIM_COMMON=y 631 NEED_AES_CBC=y 632 endif 633 634 ifdef CONFIG_EAP_PROXY 635 CFLAGS += -DCONFIG_EAP_PROXY 636 OBJS += ../src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).o 637 include eap_proxy_$(CONFIG_EAP_PROXY).mak 638 CONFIG_IEEE8021X_EAPOL=y 639 endif 640 641 ifdef CONFIG_EAP_AKA_PRIME 642 # EAP-AKA' 643 ifeq ($(CONFIG_EAP_AKA_PRIME), dyn) 644 CFLAGS += -DEAP_AKA_PRIME_DYNAMIC 645 else 646 CFLAGS += -DEAP_AKA_PRIME 647 endif 648 NEED_SHA256=y 649 endif 650 651 ifdef CONFIG_EAP_SIM_COMMON 652 OBJS += ../src/eap_common/eap_sim_common.o 653 NEED_AES=y 654 NEED_FIPS186_2_PRF=y 655 endif 656 657 ifdef CONFIG_EAP_FAST 658 # EAP-FAST 659 ifeq ($(CONFIG_EAP_FAST), dyn) 660 CFLAGS += -DEAP_FAST_DYNAMIC 661 EAPDYN += ../src/eap_peer/eap_fast.so 662 EAPDYN += ../src/eap_common/eap_fast_common.o 663 else 664 CFLAGS += -DEAP_FAST 665 OBJS += ../src/eap_peer/eap_fast.o ../src/eap_peer/eap_fast_pac.o 666 OBJS += ../src/eap_common/eap_fast_common.o 667 endif 668 TLS_FUNCS=y 669 CONFIG_IEEE8021X_EAPOL=y 670 NEED_T_PRF=y 671 endif 672 673 ifdef CONFIG_EAP_PAX 674 # EAP-PAX 675 ifeq ($(CONFIG_EAP_PAX), dyn) 676 CFLAGS += -DEAP_PAX_DYNAMIC 677 EAPDYN += ../src/eap_peer/eap_pax.so 678 else 679 CFLAGS += -DEAP_PAX 680 OBJS += ../src/eap_peer/eap_pax.o ../src/eap_common/eap_pax_common.o 681 endif 682 CONFIG_IEEE8021X_EAPOL=y 683 endif 684 685 ifdef CONFIG_EAP_SAKE 686 # EAP-SAKE 687 ifeq ($(CONFIG_EAP_SAKE), dyn) 688 CFLAGS += -DEAP_SAKE_DYNAMIC 689 EAPDYN += ../src/eap_peer/eap_sake.so 690 else 691 CFLAGS += -DEAP_SAKE 692 OBJS += ../src/eap_peer/eap_sake.o ../src/eap_common/eap_sake_common.o 693 endif 694 CONFIG_IEEE8021X_EAPOL=y 695 endif 696 697 ifdef CONFIG_EAP_GPSK 698 # EAP-GPSK 699 ifeq ($(CONFIG_EAP_GPSK), dyn) 700 CFLAGS += -DEAP_GPSK_DYNAMIC 701 EAPDYN += ../src/eap_peer/eap_gpsk.so 702 else 703 CFLAGS += -DEAP_GPSK 704 OBJS += ../src/eap_peer/eap_gpsk.o ../src/eap_common/eap_gpsk_common.o 705 endif 706 CONFIG_IEEE8021X_EAPOL=y 707 ifdef CONFIG_EAP_GPSK_SHA256 708 CFLAGS += -DEAP_GPSK_SHA256 709 endif 710 NEED_SHA256=y 711 NEED_AES_OMAC1=y 712 endif 713 714 ifdef CONFIG_EAP_PWD 715 CFLAGS += -DEAP_PWD 716 ifeq ($(CONFIG_TLS), wolfssl) 717 CFLAGS += -DCONFIG_ECC 718 endif 719 OBJS += ../src/eap_peer/eap_pwd.o ../src/eap_common/eap_pwd_common.o 720 CONFIG_IEEE8021X_EAPOL=y 721 NEED_SHA256=y 722 NEED_ECC=y 723 endif 724 725 ifdef CONFIG_EAP_EKE 726 # EAP-EKE 727 ifeq ($(CONFIG_EAP_EKE), dyn) 728 CFLAGS += -DEAP_EKE_DYNAMIC 729 EAPDYN += ../src/eap_peer/eap_eke.so 730 else 731 CFLAGS += -DEAP_EKE 732 OBJS += ../src/eap_peer/eap_eke.o ../src/eap_common/eap_eke_common.o 733 endif 734 CONFIG_IEEE8021X_EAPOL=y 735 NEED_DH_GROUPS=y 736 NEED_DH_GROUPS_ALL=y 737 NEED_SHA256=y 738 NEED_AES_CBC=y 739 endif 740 741 ifdef CONFIG_WPS 742 # EAP-WSC 743 CFLAGS += -DCONFIG_WPS -DEAP_WSC 744 OBJS += wps_supplicant.o 745 OBJS += ../src/utils/uuid.o 746 OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o 747 OBJS += ../src/wps/wps.o 748 OBJS += ../src/wps/wps_common.o 749 OBJS += ../src/wps/wps_attr_parse.o 750 OBJS += ../src/wps/wps_attr_build.o 751 OBJS += ../src/wps/wps_attr_process.o 752 OBJS += ../src/wps/wps_dev_attr.o 753 OBJS += ../src/wps/wps_enrollee.o 754 OBJS += ../src/wps/wps_registrar.o 755 CONFIG_IEEE8021X_EAPOL=y 756 NEED_DH_GROUPS=y 757 NEED_SHA256=y 758 NEED_BASE64=y 759 NEED_AES_CBC=y 760 NEED_MODEXP=y 761 762 ifdef CONFIG_WPS_NFC 763 CFLAGS += -DCONFIG_WPS_NFC 764 OBJS += ../src/wps/ndef.o 765 NEED_WPS_OOB=y 766 endif 767 768 ifdef NEED_WPS_OOB 769 CFLAGS += -DCONFIG_WPS_OOB 770 endif 771 772 ifdef CONFIG_WPS_ER 773 CONFIG_WPS_UPNP=y 774 CFLAGS += -DCONFIG_WPS_ER 775 OBJS += ../src/wps/wps_er.o 776 OBJS += ../src/wps/wps_er_ssdp.o 777 endif 778 779 ifdef CONFIG_WPS_UPNP 780 CFLAGS += -DCONFIG_WPS_UPNP 781 OBJS += ../src/wps/wps_upnp.o 782 OBJS += ../src/wps/wps_upnp_ssdp.o 783 OBJS += ../src/wps/wps_upnp_web.o 784 OBJS += ../src/wps/wps_upnp_event.o 785 OBJS += ../src/wps/wps_upnp_ap.o 786 OBJS += ../src/wps/upnp_xml.o 787 OBJS += ../src/wps/httpread.o 788 OBJS += ../src/wps/http_client.o 789 OBJS += ../src/wps/http_server.o 790 endif 791 792 ifdef CONFIG_WPS_STRICT 793 CFLAGS += -DCONFIG_WPS_STRICT 794 OBJS += ../src/wps/wps_validate.o 795 endif 796 797 ifdef CONFIG_WPS_TESTING 798 CFLAGS += -DCONFIG_WPS_TESTING 799 endif 800 801 ifdef CONFIG_WPS_REG_DISABLE_OPEN 802 CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN 803 endif 804 805 endif 806 807 ifdef CONFIG_EAP_IKEV2 808 # EAP-IKEv2 809 ifeq ($(CONFIG_EAP_IKEV2), dyn) 810 CFLAGS += -DEAP_IKEV2_DYNAMIC 811 EAPDYN += ../src/eap_peer/eap_ikev2.so ../src/eap_peer/ikev2.o 812 EAPDYN += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o 813 else 814 CFLAGS += -DEAP_IKEV2 815 OBJS += ../src/eap_peer/eap_ikev2.o ../src/eap_peer/ikev2.o 816 OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o 817 endif 818 CONFIG_IEEE8021X_EAPOL=y 819 NEED_DH_GROUPS=y 820 NEED_DH_GROUPS_ALL=y 821 NEED_MODEXP=y 822 NEED_CIPHER=y 823 endif 824 825 ifdef CONFIG_EAP_VENDOR_TEST 826 ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn) 827 CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC 828 EAPDYN += ../src/eap_peer/eap_vendor_test.so 829 else 830 CFLAGS += -DEAP_VENDOR_TEST 831 OBJS += ../src/eap_peer/eap_vendor_test.o 832 endif 833 CONFIG_IEEE8021X_EAPOL=y 834 endif 835 836 ifdef CONFIG_EAP_TNC 837 # EAP-TNC 838 CFLAGS += -DEAP_TNC 839 OBJS += ../src/eap_peer/eap_tnc.o 840 OBJS += ../src/eap_peer/tncc.o 841 NEED_BASE64=y 842 ifndef CONFIG_NATIVE_WINDOWS 843 ifndef CONFIG_DRIVER_BSD 844 LIBS += -ldl 845 endif 846 endif 847 endif 848 849 ifdef CONFIG_MACSEC 850 CFLAGS += -DCONFIG_MACSEC 851 CONFIG_IEEE8021X_EAPOL=y 852 NEED_AES_ENCBLOCK=y 853 NEED_AES_UNWRAP=y 854 NEED_AES_WRAP=y 855 NEED_AES_OMAC1=y 856 OBJS += wpas_kay.o 857 OBJS += ../src/pae/ieee802_1x_cp.o 858 OBJS += ../src/pae/ieee802_1x_kay.o 859 OBJS += ../src/pae/ieee802_1x_key.o 860 OBJS += ../src/pae/ieee802_1x_secy_ops.o 861 endif 862 863 ifdef CONFIG_IEEE8021X_EAPOL 864 # IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication) 865 CFLAGS += -DIEEE8021X_EAPOL 866 OBJS += ../src/eapol_supp/eapol_supp_sm.o 867 OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o 868 NEED_EAP_COMMON=y 869 ifdef CONFIG_DYNAMIC_EAP_METHODS 870 CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS 871 LIBS += -ldl -rdynamic 872 endif 873 endif 874 875 ifdef CONFIG_AP 876 NEED_EAP_COMMON=y 877 NEED_RSN_AUTHENTICATOR=y 878 CFLAGS += -DCONFIG_AP 879 OBJS += ap.o 880 CFLAGS += -DCONFIG_NO_RADIUS 881 CFLAGS += -DCONFIG_NO_ACCOUNTING 882 CFLAGS += -DCONFIG_NO_VLAN 883 OBJS += ../src/ap/hostapd.o 884 OBJS += ../src/ap/wpa_auth_glue.o 885 OBJS += ../src/ap/utils.o 886 OBJS += ../src/ap/authsrv.o 887 OBJS += ../src/ap/ap_config.o 888 OBJS += ../src/utils/ip_addr.o 889 OBJS += ../src/ap/sta_info.o 890 OBJS += ../src/ap/tkip_countermeasures.o 891 OBJS += ../src/ap/ap_mlme.o 892 OBJS += ../src/ap/ieee802_1x.o 893 OBJS += ../src/eapol_auth/eapol_auth_sm.o 894 OBJS += ../src/ap/ieee802_11_auth.o 895 OBJS += ../src/ap/ieee802_11_shared.o 896 OBJS += ../src/ap/drv_callbacks.o 897 OBJS += ../src/ap/ap_drv_ops.o 898 OBJS += ../src/ap/beacon.o 899 OBJS += ../src/ap/bss_load.o 900 OBJS += ../src/ap/eap_user_db.o 901 OBJS += ../src/ap/neighbor_db.o 902 OBJS += ../src/ap/rrm.o 903 ifdef CONFIG_IEEE80211N 904 OBJS += ../src/ap/ieee802_11_ht.o 905 ifdef CONFIG_IEEE80211AC 906 OBJS += ../src/ap/ieee802_11_vht.o 907 endif 908 ifdef CONFIG_IEEE80211AX 909 OBJS += ../src/ap/ieee802_11_he.o 910 endif 911 endif 912 ifdef CONFIG_WNM_AP 913 CFLAGS += -DCONFIG_WNM_AP 914 OBJS += ../src/ap/wnm_ap.o 915 endif 916 ifdef CONFIG_MBO 917 OBJS += ../src/ap/mbo_ap.o 918 endif 919 ifdef CONFIG_FILS 920 OBJS += ../src/ap/fils_hlp.o 921 endif 922 ifdef CONFIG_CTRL_IFACE 923 OBJS += ../src/ap/ctrl_iface_ap.o 924 endif 925 926 CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY 927 OBJS += ../src/eap_server/eap_server.o 928 OBJS += ../src/eap_server/eap_server_identity.o 929 OBJS += ../src/eap_server/eap_server_methods.o 930 931 ifdef CONFIG_IEEE80211N 932 CFLAGS += -DCONFIG_IEEE80211N 933 ifdef CONFIG_IEEE80211AC 934 CFLAGS += -DCONFIG_IEEE80211AC 935 endif 936 ifdef CONFIG_IEEE80211AX 937 CFLAGS += -DCONFIG_IEEE80211AX 938 endif 939 endif 940 941 ifdef NEED_AP_MLME 942 OBJS += ../src/ap/wmm.o 943 OBJS += ../src/ap/ap_list.o 944 OBJS += ../src/ap/ieee802_11.o 945 OBJS += ../src/ap/hw_features.o 946 OBJS += ../src/ap/dfs.o 947 CFLAGS += -DNEED_AP_MLME 948 endif 949 ifdef CONFIG_WPS 950 CFLAGS += -DEAP_SERVER_WSC 951 OBJS += ../src/ap/wps_hostapd.o 952 OBJS += ../src/eap_server/eap_server_wsc.o 953 endif 954 ifdef CONFIG_DPP 955 OBJS += ../src/ap/dpp_hostapd.o 956 OBJS += ../src/ap/gas_query_ap.o 957 endif 958 ifdef CONFIG_INTERWORKING 959 OBJS += ../src/ap/gas_serv.o 960 endif 961 ifdef CONFIG_HS20 962 OBJS += ../src/ap/hs20.o 963 endif 964 endif 965 966 ifdef CONFIG_MBO 967 OBJS += mbo.o 968 CFLAGS += -DCONFIG_MBO 969 endif 970 971 ifdef NEED_RSN_AUTHENTICATOR 972 CFLAGS += -DCONFIG_NO_RADIUS 973 NEED_AES_WRAP=y 974 OBJS += ../src/ap/wpa_auth.o 975 OBJS += ../src/ap/wpa_auth_ie.o 976 OBJS += ../src/ap/pmksa_cache_auth.o 977 endif 978 979 ifdef CONFIG_ACS 980 CFLAGS += -DCONFIG_ACS 981 OBJS += ../src/ap/acs.o 982 LIBS += -lm 983 endif 984 985 ifdef CONFIG_PCSC 986 # PC/SC interface for smartcards (USIM, GSM SIM) 987 CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC 988 OBJS += ../src/utils/pcsc_funcs.o 989 # -lpthread may not be needed depending on how pcsc-lite was configured 990 ifdef CONFIG_NATIVE_WINDOWS 991 #Once MinGW gets support for WinScard, -lwinscard could be used instead of the 992 #dynamic symbol loading that is now used in pcsc_funcs.c 993 #LIBS += -lwinscard 994 else 995 ifdef CONFIG_OSX 996 LIBS += -framework PCSC 997 else 998 LIBS += -lpcsclite -lpthread 999 endif 1000 endif 1001 endif 1002 1003 ifdef CONFIG_SIM_SIMULATOR 1004 CFLAGS += -DCONFIG_SIM_SIMULATOR 1005 NEED_MILENAGE=y 1006 endif 1007 1008 ifdef CONFIG_USIM_SIMULATOR 1009 CFLAGS += -DCONFIG_USIM_SIMULATOR 1010 NEED_MILENAGE=y 1011 endif 1012 1013 ifdef NEED_MILENAGE 1014 OBJS += ../src/crypto/milenage.o 1015 NEED_AES_ENCBLOCK=y 1016 endif 1017 1018 ifdef CONFIG_PKCS12 1019 CFLAGS += -DPKCS12_FUNCS 1020 endif 1021 1022 ifdef CONFIG_SMARTCARD 1023 CFLAGS += -DCONFIG_SMARTCARD 1024 endif 1025 1026 ifdef MS_FUNCS 1027 OBJS += ../src/crypto/ms_funcs.o 1028 NEED_DES=y 1029 NEED_MD4=y 1030 endif 1031 1032 ifdef CHAP 1033 OBJS += ../src/eap_common/chap.o 1034 endif 1035 1036 ifdef TLS_FUNCS 1037 NEED_DES=y 1038 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST) 1039 OBJS += ../src/eap_peer/eap_tls_common.o 1040 ifndef CONFIG_FIPS 1041 NEED_TLS_PRF=y 1042 NEED_SHA1=y 1043 NEED_MD5=y 1044 endif 1045 endif 1046 1047 ifndef CONFIG_TLS 1048 CONFIG_TLS=openssl 1049 endif 1050 1051 ifdef CONFIG_TLSV11 1052 CFLAGS += -DCONFIG_TLSV11 1053 endif 1054 1055 ifdef CONFIG_TLSV12 1056 CFLAGS += -DCONFIG_TLSV12 1057 NEED_SHA256=y 1058 endif 1059 1060 ifeq ($(CONFIG_TLS), wolfssl) 1061 ifdef TLS_FUNCS 1062 CFLAGS += -DWOLFSSL_DER_LOAD -I/usr/local/include/wolfssl 1063 OBJS += ../src/crypto/tls_wolfssl.o 1064 endif 1065 OBJS += ../src/crypto/crypto_wolfssl.o 1066 OBJS_p += ../src/crypto/crypto_wolfssl.o 1067 ifdef NEED_FIPS186_2_PRF 1068 OBJS += ../src/crypto/fips_prf_wolfssl.o 1069 endif 1070 NEED_TLS_PRF_SHA256=y 1071 LIBS += -lwolfssl -lm 1072 LIBS_p += -lwolfssl -lm 1073 endif 1074 1075 ifeq ($(CONFIG_TLS), openssl) 1076 ifdef TLS_FUNCS 1077 CFLAGS += -DEAP_TLS_OPENSSL 1078 OBJS += ../src/crypto/tls_openssl.o 1079 OBJS += ../src/crypto/tls_openssl_ocsp.o 1080 LIBS += -lssl 1081 endif 1082 OBJS += ../src/crypto/crypto_openssl.o 1083 OBJS_p += ../src/crypto/crypto_openssl.o 1084 OBJS_priv += ../src/crypto/crypto_openssl.o 1085 ifdef NEED_FIPS186_2_PRF 1086 OBJS += ../src/crypto/fips_prf_openssl.o 1087 endif 1088 NEED_SHA256=y 1089 NEED_TLS_PRF_SHA256=y 1090 LIBS += -lcrypto 1091 LIBS_p += -lcrypto 1092 ifdef CONFIG_TLS_ADD_DL 1093 LIBS += -ldl 1094 LIBS_p += -ldl 1095 endif 1096 ifndef CONFIG_TLS_DEFAULT_CIPHERS 1097 CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW" 1098 endif 1099 CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\" 1100 endif 1101 1102 ifeq ($(CONFIG_TLS), gnutls) 1103 ifndef CONFIG_CRYPTO 1104 # default to libgcrypt 1105 CONFIG_CRYPTO=gnutls 1106 endif 1107 ifdef TLS_FUNCS 1108 OBJS += ../src/crypto/tls_gnutls.o 1109 LIBS += -lgnutls -lgpg-error 1110 endif 1111 OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1112 OBJS_p += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1113 OBJS_priv += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1114 ifdef NEED_FIPS186_2_PRF 1115 OBJS += ../src/crypto/fips_prf_internal.o 1116 SHA1OBJS += ../src/crypto/sha1-internal.o 1117 endif 1118 ifeq ($(CONFIG_CRYPTO), gnutls) 1119 LIBS += -lgcrypt 1120 LIBS_p += -lgcrypt 1121 CONFIG_INTERNAL_RC4=y 1122 CONFIG_INTERNAL_DH_GROUP5=y 1123 endif 1124 ifeq ($(CONFIG_CRYPTO), nettle) 1125 LIBS += -lnettle -lgmp 1126 LIBS_p += -lnettle -lgmp 1127 CONFIG_INTERNAL_RC4=y 1128 CONFIG_INTERNAL_DH_GROUP5=y 1129 endif 1130 endif 1131 1132 ifeq ($(CONFIG_TLS), internal) 1133 ifndef CONFIG_CRYPTO 1134 CONFIG_CRYPTO=internal 1135 endif 1136 ifdef TLS_FUNCS 1137 OBJS += ../src/crypto/crypto_internal-rsa.o 1138 OBJS += ../src/crypto/tls_internal.o 1139 OBJS += ../src/tls/tlsv1_common.o 1140 OBJS += ../src/tls/tlsv1_record.o 1141 OBJS += ../src/tls/tlsv1_cred.o 1142 OBJS += ../src/tls/tlsv1_client.o 1143 OBJS += ../src/tls/tlsv1_client_write.o 1144 OBJS += ../src/tls/tlsv1_client_read.o 1145 OBJS += ../src/tls/tlsv1_client_ocsp.o 1146 OBJS += ../src/tls/asn1.o 1147 OBJS += ../src/tls/rsa.o 1148 OBJS += ../src/tls/x509v3.o 1149 OBJS += ../src/tls/pkcs1.o 1150 OBJS += ../src/tls/pkcs5.o 1151 OBJS += ../src/tls/pkcs8.o 1152 NEED_SHA256=y 1153 NEED_BASE64=y 1154 NEED_TLS_PRF=y 1155 ifdef CONFIG_TLSV12 1156 NEED_TLS_PRF_SHA256=y 1157 endif 1158 NEED_MODEXP=y 1159 NEED_CIPHER=y 1160 CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT 1161 endif 1162 ifdef NEED_CIPHER 1163 NEED_DES=y 1164 OBJS += ../src/crypto/crypto_internal-cipher.o 1165 endif 1166 ifdef NEED_MODEXP 1167 OBJS += ../src/crypto/crypto_internal-modexp.o 1168 OBJS += ../src/tls/bignum.o 1169 endif 1170 ifeq ($(CONFIG_CRYPTO), libtomcrypt) 1171 OBJS += ../src/crypto/crypto_libtomcrypt.o 1172 OBJS_p += ../src/crypto/crypto_libtomcrypt.o 1173 LIBS += -ltomcrypt -ltfm 1174 LIBS_p += -ltomcrypt -ltfm 1175 CONFIG_INTERNAL_SHA256=y 1176 CONFIG_INTERNAL_RC4=y 1177 CONFIG_INTERNAL_DH_GROUP5=y 1178 endif 1179 ifeq ($(CONFIG_CRYPTO), internal) 1180 OBJS += ../src/crypto/crypto_internal.o 1181 OBJS_p += ../src/crypto/crypto_internal.o 1182 NEED_AES_ENC=y 1183 CFLAGS += -DCONFIG_CRYPTO_INTERNAL 1184 ifdef CONFIG_INTERNAL_LIBTOMMATH 1185 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 1186 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 1187 CFLAGS += -DLTM_FAST 1188 endif 1189 else 1190 LIBS += -ltommath 1191 LIBS_p += -ltommath 1192 endif 1193 CONFIG_INTERNAL_AES=y 1194 CONFIG_INTERNAL_DES=y 1195 CONFIG_INTERNAL_SHA1=y 1196 CONFIG_INTERNAL_MD4=y 1197 CONFIG_INTERNAL_MD5=y 1198 CONFIG_INTERNAL_SHA256=y 1199 CONFIG_INTERNAL_SHA384=y 1200 CONFIG_INTERNAL_SHA512=y 1201 CONFIG_INTERNAL_RC4=y 1202 CONFIG_INTERNAL_DH_GROUP5=y 1203 endif 1204 ifeq ($(CONFIG_CRYPTO), cryptoapi) 1205 OBJS += ../src/crypto/crypto_cryptoapi.o 1206 OBJS_p += ../src/crypto/crypto_cryptoapi.o 1207 CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 1208 CONFIG_INTERNAL_SHA256=y 1209 CONFIG_INTERNAL_RC4=y 1210 endif 1211 endif 1212 1213 ifeq ($(CONFIG_TLS), linux) 1214 OBJS += ../src/crypto/crypto_linux.o 1215 OBJS_p += ../src/crypto/crypto_linux.o 1216 ifdef TLS_FUNCS 1217 OBJS += ../src/crypto/crypto_internal-rsa.o 1218 OBJS += ../src/crypto/tls_internal.o 1219 OBJS += ../src/tls/tlsv1_common.o 1220 OBJS += ../src/tls/tlsv1_record.o 1221 OBJS += ../src/tls/tlsv1_cred.o 1222 OBJS += ../src/tls/tlsv1_client.o 1223 OBJS += ../src/tls/tlsv1_client_write.o 1224 OBJS += ../src/tls/tlsv1_client_read.o 1225 OBJS += ../src/tls/tlsv1_client_ocsp.o 1226 OBJS += ../src/tls/asn1.o 1227 OBJS += ../src/tls/rsa.o 1228 OBJS += ../src/tls/x509v3.o 1229 OBJS += ../src/tls/pkcs1.o 1230 OBJS += ../src/tls/pkcs5.o 1231 OBJS += ../src/tls/pkcs8.o 1232 NEED_SHA256=y 1233 NEED_BASE64=y 1234 NEED_TLS_PRF=y 1235 ifdef CONFIG_TLSV12 1236 NEED_TLS_PRF_SHA256=y 1237 endif 1238 NEED_MODEXP=y 1239 NEED_CIPHER=y 1240 CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT 1241 endif 1242 ifdef NEED_MODEXP 1243 OBJS += ../src/crypto/crypto_internal-modexp.o 1244 OBJS += ../src/tls/bignum.o 1245 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 1246 CFLAGS += -DLTM_FAST 1247 endif 1248 CONFIG_INTERNAL_DH_GROUP5=y 1249 ifdef NEED_FIPS186_2_PRF 1250 OBJS += ../src/crypto/fips_prf_internal.o 1251 OBJS += ../src/crypto/sha1-internal.o 1252 endif 1253 endif 1254 1255 ifeq ($(CONFIG_TLS), none) 1256 ifdef TLS_FUNCS 1257 OBJS += ../src/crypto/tls_none.o 1258 CFLAGS += -DEAP_TLS_NONE 1259 CONFIG_INTERNAL_AES=y 1260 CONFIG_INTERNAL_SHA1=y 1261 CONFIG_INTERNAL_MD5=y 1262 endif 1263 OBJS += ../src/crypto/crypto_none.o 1264 OBJS_p += ../src/crypto/crypto_none.o 1265 CONFIG_INTERNAL_SHA256=y 1266 CONFIG_INTERNAL_RC4=y 1267 endif 1268 1269 ifdef TLS_FUNCS 1270 ifdef CONFIG_SMARTCARD 1271 ifndef CONFIG_NATIVE_WINDOWS 1272 ifneq ($(CONFIG_L2_PACKET), freebsd) 1273 LIBS += -ldl 1274 endif 1275 endif 1276 endif 1277 endif 1278 1279 ifndef TLS_FUNCS 1280 OBJS += ../src/crypto/tls_none.o 1281 ifeq ($(CONFIG_TLS), internal) 1282 CONFIG_INTERNAL_AES=y 1283 CONFIG_INTERNAL_SHA1=y 1284 CONFIG_INTERNAL_MD5=y 1285 CONFIG_INTERNAL_RC4=y 1286 endif 1287 endif 1288 1289 AESOBJS = # none so far (see below) 1290 ifdef CONFIG_INTERNAL_AES 1291 AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o 1292 endif 1293 1294 ifneq ($(CONFIG_TLS), openssl) 1295 ifneq ($(CONFIG_TLS), wolfssl) 1296 NEED_INTERNAL_AES_WRAP=y 1297 endif 1298 endif 1299 ifdef CONFIG_OPENSSL_INTERNAL_AES_WRAP 1300 # Seems to be needed at least with BoringSSL 1301 NEED_INTERNAL_AES_WRAP=y 1302 CFLAGS += -DCONFIG_OPENSSL_INTERNAL_AES_WRAP 1303 endif 1304 ifdef CONFIG_FIPS 1305 # Have to use internal AES key wrap routines to use OpenSSL EVP since the 1306 # OpenSSL AES_wrap_key()/AES_unwrap_key() API is not available in FIPS mode. 1307 NEED_INTERNAL_AES_WRAP=y 1308 endif 1309 1310 ifdef NEED_INTERNAL_AES_WRAP 1311 ifneq ($(CONFIG_TLS), linux) 1312 AESOBJS += ../src/crypto/aes-unwrap.o 1313 endif 1314 endif 1315 ifdef NEED_AES_EAX 1316 AESOBJS += ../src/crypto/aes-eax.o 1317 NEED_AES_CTR=y 1318 NEED_AES_OMAC1=y 1319 endif 1320 ifdef NEED_AES_SIV 1321 AESOBJS += ../src/crypto/aes-siv.o 1322 NEED_AES_CTR=y 1323 NEED_AES_OMAC1=y 1324 endif 1325 ifdef NEED_AES_CTR 1326 AESOBJS += ../src/crypto/aes-ctr.o 1327 endif 1328 ifdef NEED_AES_ENCBLOCK 1329 AESOBJS += ../src/crypto/aes-encblock.o 1330 endif 1331 ifdef NEED_AES_OMAC1 1332 NEED_AES_ENC=y 1333 ifdef CONFIG_OPENSSL_CMAC 1334 CFLAGS += -DCONFIG_OPENSSL_CMAC 1335 else 1336 ifneq ($(CONFIG_TLS), linux) 1337 ifneq ($(CONFIG_TLS), wolfssl) 1338 AESOBJS += ../src/crypto/aes-omac1.o 1339 endif 1340 endif 1341 endif 1342 endif 1343 ifdef NEED_AES_WRAP 1344 NEED_AES_ENC=y 1345 ifdef NEED_INTERNAL_AES_WRAP 1346 AESOBJS += ../src/crypto/aes-wrap.o 1347 endif 1348 endif 1349 ifdef NEED_AES_CBC 1350 NEED_AES_ENC=y 1351 ifneq ($(CONFIG_TLS), openssl) 1352 ifneq ($(CONFIG_TLS), linux) 1353 ifneq ($(CONFIG_TLS), wolfssl) 1354 AESOBJS += ../src/crypto/aes-cbc.o 1355 endif 1356 endif 1357 endif 1358 endif 1359 ifdef NEED_AES_ENC 1360 ifdef CONFIG_INTERNAL_AES 1361 AESOBJS += ../src/crypto/aes-internal-enc.o 1362 endif 1363 endif 1364 ifdef NEED_AES 1365 OBJS += $(AESOBJS) 1366 endif 1367 1368 ifdef NEED_SHA1 1369 ifneq ($(CONFIG_TLS), openssl) 1370 ifneq ($(CONFIG_TLS), linux) 1371 ifneq ($(CONFIG_TLS), gnutls) 1372 ifneq ($(CONFIG_TLS), wolfssl) 1373 SHA1OBJS += ../src/crypto/sha1.o 1374 endif 1375 endif 1376 endif 1377 endif 1378 SHA1OBJS += ../src/crypto/sha1-prf.o 1379 ifdef CONFIG_INTERNAL_SHA1 1380 SHA1OBJS += ../src/crypto/sha1-internal.o 1381 ifdef NEED_FIPS186_2_PRF 1382 SHA1OBJS += ../src/crypto/fips_prf_internal.o 1383 endif 1384 endif 1385 ifdef CONFIG_NO_WPA_PASSPHRASE 1386 CFLAGS += -DCONFIG_NO_PBKDF2 1387 else 1388 ifneq ($(CONFIG_TLS), openssl) 1389 ifneq ($(CONFIG_TLS), wolfssl) 1390 SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 1391 endif 1392 endif 1393 endif 1394 ifdef NEED_T_PRF 1395 SHA1OBJS += ../src/crypto/sha1-tprf.o 1396 endif 1397 ifdef NEED_TLS_PRF 1398 SHA1OBJS += ../src/crypto/sha1-tlsprf.o 1399 endif 1400 endif 1401 1402 ifndef CONFIG_FIPS 1403 ifneq ($(CONFIG_TLS), openssl) 1404 ifneq ($(CONFIG_TLS), linux) 1405 ifneq ($(CONFIG_TLS), gnutls) 1406 ifneq ($(CONFIG_TLS), wolfssl) 1407 MD5OBJS += ../src/crypto/md5.o 1408 endif 1409 endif 1410 endif 1411 endif 1412 endif 1413 ifdef NEED_MD5 1414 ifdef CONFIG_INTERNAL_MD5 1415 MD5OBJS += ../src/crypto/md5-internal.o 1416 endif 1417 OBJS += $(MD5OBJS) 1418 OBJS_p += $(MD5OBJS) 1419 OBJS_priv += $(MD5OBJS) 1420 endif 1421 1422 ifdef NEED_MD4 1423 ifdef CONFIG_INTERNAL_MD4 1424 OBJS += ../src/crypto/md4-internal.o 1425 endif 1426 endif 1427 1428 DESOBJS = # none needed when not internal 1429 ifdef NEED_DES 1430 ifndef CONFIG_FIPS 1431 CFLAGS += -DCONFIG_DES 1432 endif 1433 ifdef CONFIG_INTERNAL_DES 1434 DESOBJS += ../src/crypto/des-internal.o 1435 endif 1436 endif 1437 1438 ifdef CONFIG_NO_RC4 1439 CFLAGS += -DCONFIG_NO_RC4 1440 endif 1441 1442 ifdef NEED_RC4 1443 ifdef CONFIG_INTERNAL_RC4 1444 ifndef CONFIG_NO_RC4 1445 OBJS += ../src/crypto/rc4.o 1446 endif 1447 endif 1448 endif 1449 1450 SHA256OBJS = # none by default 1451 ifdef NEED_SHA256 1452 CFLAGS += -DCONFIG_SHA256 1453 ifneq ($(CONFIG_TLS), openssl) 1454 ifneq ($(CONFIG_TLS), linux) 1455 ifneq ($(CONFIG_TLS), gnutls) 1456 ifneq ($(CONFIG_TLS), wolfssl) 1457 SHA256OBJS += ../src/crypto/sha256.o 1458 endif 1459 endif 1460 endif 1461 endif 1462 SHA256OBJS += ../src/crypto/sha256-prf.o 1463 ifdef CONFIG_INTERNAL_SHA256 1464 SHA256OBJS += ../src/crypto/sha256-internal.o 1465 endif 1466 ifdef CONFIG_INTERNAL_SHA384 1467 CFLAGS += -DCONFIG_INTERNAL_SHA384 1468 SHA256OBJS += ../src/crypto/sha384-internal.o 1469 endif 1470 ifdef CONFIG_INTERNAL_SHA512 1471 CFLAGS += -DCONFIG_INTERNAL_SHA512 1472 SHA256OBJS += ../src/crypto/sha512-internal.o 1473 endif 1474 ifdef NEED_TLS_PRF_SHA256 1475 SHA256OBJS += ../src/crypto/sha256-tlsprf.o 1476 endif 1477 ifdef NEED_HMAC_SHA256_KDF 1478 CFLAGS += -DCONFIG_HMAC_SHA256_KDF 1479 OBJS += ../src/crypto/sha256-kdf.o 1480 endif 1481 ifdef NEED_HMAC_SHA384_KDF 1482 CFLAGS += -DCONFIG_HMAC_SHA384_KDF 1483 OBJS += ../src/crypto/sha384-kdf.o 1484 endif 1485 ifdef NEED_HMAC_SHA512_KDF 1486 CFLAGS += -DCONFIG_HMAC_SHA512_KDF 1487 OBJS += ../src/crypto/sha512-kdf.o 1488 endif 1489 OBJS += $(SHA256OBJS) 1490 endif 1491 ifdef NEED_SHA384 1492 ifneq ($(CONFIG_TLS), openssl) 1493 ifneq ($(CONFIG_TLS), linux) 1494 ifneq ($(CONFIG_TLS), gnutls) 1495 ifneq ($(CONFIG_TLS), wolfssl) 1496 OBJS += ../src/crypto/sha384.o 1497 endif 1498 endif 1499 endif 1500 endif 1501 CFLAGS += -DCONFIG_SHA384 1502 OBJS += ../src/crypto/sha384-prf.o 1503 endif 1504 ifdef NEED_SHA512 1505 ifneq ($(CONFIG_TLS), openssl) 1506 ifneq ($(CONFIG_TLS), linux) 1507 ifneq ($(CONFIG_TLS), gnutls) 1508 ifneq ($(CONFIG_TLS), wolfssl) 1509 OBJS += ../src/crypto/sha512.o 1510 endif 1511 endif 1512 endif 1513 endif 1514 CFLAGS += -DCONFIG_SHA512 1515 OBJS += ../src/crypto/sha512-prf.o 1516 endif 1517 1518 ifdef NEED_DH_GROUPS 1519 OBJS += ../src/crypto/dh_groups.o 1520 endif 1521 ifdef NEED_DH_GROUPS_ALL 1522 CFLAGS += -DALL_DH_GROUPS 1523 endif 1524 ifdef CONFIG_INTERNAL_DH_GROUP5 1525 ifdef NEED_DH_GROUPS 1526 OBJS += ../src/crypto/dh_group5.o 1527 endif 1528 endif 1529 1530 ifdef NEED_ECC 1531 CFLAGS += -DCONFIG_ECC 1532 endif 1533 1534 ifdef CONFIG_NO_RANDOM_POOL 1535 CFLAGS += -DCONFIG_NO_RANDOM_POOL 1536 else 1537 ifdef CONFIG_GETRANDOM 1538 CFLAGS += -DCONFIG_GETRANDOM 1539 endif 1540 OBJS += ../src/crypto/random.o 1541 endif 1542 1543 ifdef CONFIG_CTRL_IFACE 1544 ifeq ($(CONFIG_CTRL_IFACE), y) 1545 ifdef CONFIG_NATIVE_WINDOWS 1546 CONFIG_CTRL_IFACE=named_pipe 1547 else 1548 CONFIG_CTRL_IFACE=unix 1549 endif 1550 endif 1551 CFLAGS += -DCONFIG_CTRL_IFACE 1552 ifeq ($(CONFIG_CTRL_IFACE), unix) 1553 CFLAGS += -DCONFIG_CTRL_IFACE_UNIX 1554 OBJS += ../src/common/ctrl_iface_common.o 1555 endif 1556 ifeq ($(CONFIG_CTRL_IFACE), udp) 1557 CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1558 endif 1559 ifeq ($(CONFIG_CTRL_IFACE), udp6) 1560 CONFIG_CTRL_IFACE=udp 1561 CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1562 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6 1563 endif 1564 ifeq ($(CONFIG_CTRL_IFACE), named_pipe) 1565 CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE 1566 endif 1567 ifeq ($(CONFIG_CTRL_IFACE), udp-remote) 1568 CONFIG_CTRL_IFACE=udp 1569 CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1570 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE 1571 endif 1572 ifeq ($(CONFIG_CTRL_IFACE), udp6-remote) 1573 CONFIG_CTRL_IFACE=udp 1574 CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1575 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE 1576 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6 1577 endif 1578 OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o 1579 endif 1580 1581 ifdef CONFIG_CTRL_IFACE_DBUS_NEW 1582 CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW 1583 OBJS += dbus/dbus_dict_helpers.o 1584 OBJS += dbus/dbus_new_helpers.o 1585 OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o 1586 OBJS += dbus/dbus_common.o 1587 ifdef CONFIG_WPS 1588 OBJS += dbus/dbus_new_handlers_wps.o 1589 endif 1590 ifdef CONFIG_P2P 1591 OBJS += dbus/dbus_new_handlers_p2p.o 1592 endif 1593 ifndef DBUS_LIBS 1594 DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1) 1595 endif 1596 ifndef DBUS_INCLUDE 1597 DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1) 1598 endif 1599 ifdef CONFIG_CTRL_IFACE_DBUS_INTRO 1600 OBJS += dbus/dbus_new_introspect.o 1601 CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO 1602 endif 1603 CFLAGS += $(DBUS_INCLUDE) 1604 LIBS += $(DBUS_LIBS) 1605 endif 1606 1607 ifdef CONFIG_READLINE 1608 OBJS_c += ../src/utils/edit_readline.o 1609 LIBS_c += -lreadline -lncurses 1610 else 1611 ifdef CONFIG_WPA_CLI_EDIT 1612 OBJS_c += ../src/utils/edit.o 1613 else 1614 OBJS_c += ../src/utils/edit_simple.o 1615 endif 1616 endif 1617 1618 ifdef CONFIG_NATIVE_WINDOWS 1619 CFLAGS += -DCONFIG_NATIVE_WINDOWS 1620 LIBS += -lws2_32 -lgdi32 -lcrypt32 1621 LIBS_c += -lws2_32 1622 LIBS_p += -lws2_32 -lgdi32 1623 ifeq ($(CONFIG_CRYPTO), cryptoapi) 1624 LIBS_p += -lcrypt32 1625 endif 1626 endif 1627 1628 ifdef CONFIG_NO_STDOUT_DEBUG 1629 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 1630 ifndef CONFIG_CTRL_IFACE 1631 CFLAGS += -DCONFIG_NO_WPA_MSG 1632 endif 1633 endif 1634 1635 ifdef CONFIG_IPV6 1636 # for eapol_test only 1637 CFLAGS += -DCONFIG_IPV6 1638 endif 1639 1640 ifdef CONFIG_NO_LINUX_PACKET_SOCKET_WAR 1641 CFLAGS += -DCONFIG_NO_LINUX_PACKET_SOCKET_WAR 1642 endif 1643 1644 ifdef NEED_BASE64 1645 OBJS += ../src/utils/base64.o 1646 endif 1647 1648 ifdef NEED_SME 1649 OBJS += sme.o 1650 CFLAGS += -DCONFIG_SME 1651 endif 1652 1653 OBJS += ../src/common/ieee802_11_common.o 1654 OBJS += ../src/common/hw_features_common.o 1655 1656 ifdef NEED_EAP_COMMON 1657 OBJS += ../src/eap_common/eap_common.o 1658 endif 1659 1660 ifndef CONFIG_MAIN 1661 CONFIG_MAIN=main 1662 endif 1663 1664 ifdef CONFIG_DEBUG_SYSLOG 1665 CFLAGS += -DCONFIG_DEBUG_SYSLOG 1666 ifdef CONFIG_DEBUG_SYSLOG_FACILITY 1667 CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)" 1668 endif 1669 endif 1670 1671 ifdef CONFIG_DEBUG_LINUX_TRACING 1672 CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING 1673 endif 1674 1675 ifdef CONFIG_DEBUG_FILE 1676 CFLAGS += -DCONFIG_DEBUG_FILE 1677 endif 1678 1679 ifdef CONFIG_DELAYED_MIC_ERROR_REPORT 1680 CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT 1681 endif 1682 1683 ifdef CONFIG_FIPS 1684 CFLAGS += -DCONFIG_FIPS 1685 ifneq ($(CONFIG_TLS), openssl) 1686 ifneq ($(CONFIG_TLS), wolfssl) 1687 $(error CONFIG_FIPS=y requires CONFIG_TLS=openssl) 1688 endif 1689 endif 1690 endif 1691 1692 OBJS += $(SHA1OBJS) $(DESOBJS) 1693 1694 OBJS_p += $(SHA1OBJS) 1695 OBJS_p += $(SHA256OBJS) 1696 OBJS_priv += $(SHA1OBJS) 1697 1698 ifdef CONFIG_BGSCAN_SIMPLE 1699 CFLAGS += -DCONFIG_BGSCAN_SIMPLE 1700 OBJS += bgscan_simple.o 1701 NEED_BGSCAN=y 1702 endif 1703 1704 ifdef CONFIG_BGSCAN_LEARN 1705 CFLAGS += -DCONFIG_BGSCAN_LEARN 1706 OBJS += bgscan_learn.o 1707 NEED_BGSCAN=y 1708 endif 1709 1710 ifdef NEED_BGSCAN 1711 CFLAGS += -DCONFIG_BGSCAN 1712 OBJS += bgscan.o 1713 endif 1714 1715 ifdef CONFIG_AUTOSCAN_EXPONENTIAL 1716 CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL 1717 OBJS += autoscan_exponential.o 1718 NEED_AUTOSCAN=y 1719 endif 1720 1721 ifdef CONFIG_AUTOSCAN_PERIODIC 1722 CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC 1723 OBJS += autoscan_periodic.o 1724 NEED_AUTOSCAN=y 1725 endif 1726 1727 ifdef NEED_AUTOSCAN 1728 CFLAGS += -DCONFIG_AUTOSCAN 1729 OBJS += autoscan.o 1730 endif 1731 1732 ifdef CONFIG_EXT_PASSWORD_TEST 1733 OBJS += ../src/utils/ext_password_test.o 1734 CFLAGS += -DCONFIG_EXT_PASSWORD_TEST 1735 NEED_EXT_PASSWORD=y 1736 endif 1737 1738 ifdef NEED_EXT_PASSWORD 1739 OBJS += ../src/utils/ext_password.o 1740 CFLAGS += -DCONFIG_EXT_PASSWORD 1741 endif 1742 1743 ifdef NEED_GAS_SERVER 1744 OBJS += ../src/common/gas_server.o 1745 CFLAGS += -DCONFIG_GAS_SERVER 1746 NEED_GAS=y 1747 endif 1748 1749 ifdef NEED_GAS 1750 OBJS += ../src/common/gas.o 1751 OBJS += gas_query.o 1752 CFLAGS += -DCONFIG_GAS 1753 NEED_OFFCHANNEL=y 1754 endif 1755 1756 ifdef NEED_OFFCHANNEL 1757 OBJS += offchannel.o 1758 CFLAGS += -DCONFIG_OFFCHANNEL 1759 endif 1760 1761 ifdef NEED_JSON 1762 OBJS += ../src/utils/json.o 1763 CFLAGS += -DCONFIG_JSON 1764 endif 1765 1766 ifdef CONFIG_MODULE_TESTS 1767 CFLAGS += -DCONFIG_MODULE_TESTS 1768 OBJS += wpas_module_tests.o 1769 OBJS += ../src/utils/utils_module_tests.o 1770 OBJS += ../src/common/common_module_tests.o 1771 OBJS += ../src/crypto/crypto_module_tests.o 1772 ifdef CONFIG_WPS 1773 OBJS += ../src/wps/wps_module_tests.o 1774 endif 1775 endif 1776 1777 OBJS += ../src/drivers/driver_common.o 1778 OBJS_priv += ../src/drivers/driver_common.o 1779 1780 OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o 1781 OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o 1782 OBJS_t += ../src/radius/radius_client.o 1783 OBJS_t += ../src/radius/radius.o 1784 ifndef CONFIG_AP 1785 OBJS_t += ../src/utils/ip_addr.o 1786 endif 1787 OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o 1788 1789 OBJS_nfc := $(OBJS) $(OBJS_l2) nfc_pw_token.o 1790 OBJS_nfc += $(OBJS_d) ../src/drivers/drivers.o 1791 1792 OBJS += $(CONFIG_MAIN).o 1793 1794 ifdef CONFIG_PRIVSEP 1795 OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o 1796 OBJS_priv += $(OBJS_l2) 1797 OBJS_priv += ../src/utils/os_$(CONFIG_OS).o 1798 OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o 1799 OBJS_priv += ../src/utils/common.o 1800 OBJS_priv += ../src/utils/wpa_debug.o 1801 OBJS_priv += ../src/utils/wpabuf.o 1802 OBJS_priv += wpa_priv.o 1803 ifdef CONFIG_DRIVER_NL80211 1804 OBJS_priv += ../src/common/ieee802_11_common.o 1805 endif 1806 OBJS += ../src/l2_packet/l2_packet_privsep.o 1807 OBJS += ../src/drivers/driver_privsep.o 1808 EXTRA_progs += wpa_priv 1809 else 1810 OBJS += $(OBJS_d) ../src/drivers/drivers.o 1811 OBJS += $(OBJS_l2) 1812 endif 1813 1814 ifdef CONFIG_NDIS_EVENTS_INTEGRATED 1815 CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED 1816 OBJS += ../src/drivers/ndis_events.o 1817 EXTRALIBS += -loleaut32 -lole32 -luuid 1818 ifdef PLATFORMSDKLIB 1819 EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib 1820 else 1821 EXTRALIBS += WbemUuid.Lib 1822 endif 1823 endif 1824 1825 ifdef CONFIG_FST 1826 CFLAGS += -DCONFIG_FST 1827 ifdef CONFIG_FST_TEST 1828 CFLAGS += -DCONFIG_FST_TEST 1829 endif 1830 FST_OBJS += ../src/fst/fst.o 1831 FST_OBJS += ../src/fst/fst_session.o 1832 FST_OBJS += ../src/fst/fst_iface.o 1833 FST_OBJS += ../src/fst/fst_group.o 1834 FST_OBJS += ../src/fst/fst_ctrl_aux.o 1835 ifdef CONFIG_CTRL_IFACE 1836 FST_OBJS += ../src/fst/fst_ctrl_iface.o 1837 endif 1838 OBJS += $(FST_OBJS) 1839 OBJS_t += $(FST_OBJS) 1840 OBJS_t2 += $(FST_OBJS) 1841 OBJS_nfc += $(FST_OBJS) 1842 endif 1843 1844 ifndef LDO 1845 LDO=$(CC) 1846 endif 1847 1848 Q=@ 1849 E=echo 1850 ifeq ($(V), 1) 1851 Q= 1852 E=true 1853 endif 1854 ifeq ($(QUIET), 1) 1855 Q=@ 1856 E=true 1857 endif 1858 1859 dynamic_eap_methods: $(EAPDYN) 1860 1861 ../src/drivers/build.wpa_supplicant: 1862 @if [ -f ../src/drivers/build.hostapd ]; then \ 1863 $(MAKE) -C ../src/drivers clean; \ 1864 fi 1865 @touch ../src/drivers/build.wpa_supplicant 1866 1867 BCHECK=../src/drivers/build.wpa_supplicant 1868 1869 wpa_priv: $(BCHECK) $(OBJS_priv) 1870 $(Q)$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS) 1871 @$(E) " LD " $@ 1872 1873 $(OBJS_c) $(OBJS_t) $(OBJS_t2) $(OBJS) $(BCHECK) $(EXTRA_progs): .config 1874 1875 wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs) 1876 $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) 1877 @$(E) " LD " $@ 1878 1879 eapol_test: $(OBJS_t) 1880 $(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS) 1881 @$(E) " LD " $@ 1882 1883 preauth_test: $(OBJS_t2) 1884 $(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS) 1885 @$(E) " LD " $@ 1886 1887 wpa_passphrase: $(OBJS_p) 1888 $(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) $(LIBS) 1889 @$(E) " LD " $@ 1890 1891 wpa_cli: $(OBJS_c) 1892 $(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c) 1893 @$(E) " LD " $@ 1894 1895 LIBCTRL += ../src/common/wpa_ctrl.o 1896 LIBCTRL += ../src/utils/os_$(CONFIG_OS).o 1897 LIBCTRL += ../src/utils/common.o 1898 LIBCTRL += ../src/utils/wpa_debug.o 1899 LIBCTRLSO += ../src/common/wpa_ctrl.c 1900 LIBCTRLSO += ../src/utils/os_$(CONFIG_OS).c 1901 LIBCTRLSO += ../src/utils/common.c 1902 LIBCTRLSO += ../src/utils/wpa_debug.c 1903 1904 libwpa_client.a: $(LIBCTRL) 1905 $(Q)rm -f $@ 1906 $(Q)$(AR) crs $@ $? 1907 @$(E) " AR " $@ 1908 1909 libwpa_client.so: $(LIBCTRLSO) 1910 @$(E) " CC $@ ($^)" 1911 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -fPIC $^ 1912 1913 libwpa_test1: libwpa_test.o libwpa_client.a 1914 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test1 libwpa_test.o libwpa_client.a $(LIBS_c) 1915 @$(E) " LD " $@ 1916 1917 libwpa_test2: libwpa_test.o libwpa_client.so 1918 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test2 libwpa_test.o -L. -lwpa_client $(LIBS_c) 1919 @$(E) " LD " $@ 1920 1921 nfc_pw_token: $(OBJS_nfc) 1922 $(Q)$(LDO) $(LDFLAGS) -o nfc_pw_token $(OBJS_nfc) $(LIBS) 1923 @$(E) " LD " $@ 1924 1925 win_if_list: win_if_list.c 1926 $(Q)$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w) 1927 @$(E) " LD " $@ 1928 1929 eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c 1930 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1931 -Deap_peer_psk_register=eap_peer_method_dynamic_init 1932 1933 eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c 1934 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1935 -Deap_peer_pax_register=eap_peer_method_dynamic_init 1936 1937 eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c 1938 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1939 -Deap_peer_sake_register=eap_peer_method_dynamic_init 1940 1941 eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c 1942 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1943 -Deap_peer_wsc_register=eap_peer_method_dynamic_init 1944 1945 eap_ikev2.so: ../src/eap_peer/eap_ikev2.c ../src/eap_peer/ikev2.c ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.c 1946 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1947 -Deap_peer_ikev2_register=eap_peer_method_dynamic_init 1948 1949 eap_eke.so: ../src/eap_peer/eap_eke.c ../src/eap_common/eap_eke_common.c 1950 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1951 -Deap_peer_eke_register=eap_peer_method_dynamic_init 1952 1953 %.so: %.c 1954 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \ 1955 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init 1956 1957 ifdef CONFIG_CODE_COVERAGE 1958 %.o: %.c 1959 @$(E) " CC " $< 1960 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<) 1961 else 1962 %.o: %.c 1963 $(Q)$(CC) -c -o $@ $(CFLAGS) $< 1964 @$(E) " CC " $< 1965 endif 1966 1967 %.service: %.service.in 1968 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ 1969 @$(E) " sed" $< 1970 1971 %@.service: %.service.arg.in 1972 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ 1973 @$(E) " sed" $< 1974 1975 wpa_supplicant.exe: wpa_supplicant 1976 mv -f $< $@ 1977 wpa_cli.exe: wpa_cli 1978 mv -f $< $@ 1979 wpa_passphrase.exe: wpa_passphrase 1980 mv -f $< $@ 1981 win_if_list.exe: win_if_list 1982 mv -f $< $@ 1983 eapol_test.exe: eapol_test 1984 mv -f $< $@ 1985 1986 WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe 1987 1988 windows-bin: $(WINALL) 1989 $(STRIP) $(WINALL) 1990 1991 wpa_gui: 1992 @echo "wpa_gui has been removed - see wpa_gui-qt4 for replacement" 1993 1994 wpa_gui-qt4/Makefile: 1995 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro 1996 1997 wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts 1998 lrelease wpa_gui-qt4/wpa_gui.pro 1999 2000 wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm 2001 $(MAKE) -C wpa_gui-qt4 2002 2003 FIPSDIR=/usr/local/ssl/fips-2.0 2004 FIPSLD=$(FIPSDIR)/bin/fipsld 2005 fips: 2006 $(MAKE) CC=$(FIPSLD) FIPSLD_CC="$(CC)" 2007 2008 lcov-html: wpa_supplicant.gcda 2009 lcov -c -d .. > lcov.info 2010 genhtml lcov.info --output-directory lcov-html 2011 2012 clean: 2013 $(MAKE) -C ../src clean 2014 $(MAKE) -C dbus clean 2015 rm -f core *~ *.o *.d *.gcno *.gcda *.gcov 2016 rm -f eap_*.so $(ALL) $(WINALL) eapol_test preauth_test 2017 rm -f wpa_priv 2018 rm -f nfc_pw_token 2019 rm -f lcov.info 2020 rm -rf lcov-html 2021 rm -f libwpa_client.a 2022 rm -f libwpa_client.so 2023 rm -f libwpa_test1 libwpa_test2 2024 2025 -include $(OBJS:%.o=%.d) 2026