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