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