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