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