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