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