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