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