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