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 578OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o 579NEED_EAP_COMMON=y 580ifdef CONFIG_DYNAMIC_EAP_METHODS 581CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS 582LIBS += -ldl -rdynamic 583endif 584endif 585 586ifdef CONFIG_AP 587NEED_80211_COMMON=y 588NEED_EAP_COMMON=y 589NEED_RSN_AUTHENTICATOR=y 590CFLAGS += -DCONFIG_AP 591OBJS += ap.o 592CFLAGS += -DCONFIG_NO_RADIUS 593CFLAGS += -DCONFIG_NO_ACCOUNTING 594CFLAGS += -DCONFIG_NO_VLAN 595OBJS += ../src/ap/hostapd.o 596OBJS += ../src/ap/wpa_auth_glue.o 597OBJS += ../src/ap/utils.o 598OBJS += ../src/ap/authsrv.o 599OBJS += ../src/ap/ap_config.o 600OBJS += ../src/utils/ip_addr.o 601OBJS += ../src/ap/sta_info.o 602OBJS += ../src/ap/tkip_countermeasures.o 603OBJS += ../src/ap/ap_mlme.o 604OBJS += ../src/ap/ieee802_1x.o 605OBJS += ../src/eapol_auth/eapol_auth_sm.o 606OBJS += ../src/ap/ieee802_11_auth.o 607OBJS += ../src/ap/drv_callbacks.o 608OBJS += ../src/ap/ap_drv_ops.o 609ifdef CONFIG_CTRL_IFACE 610OBJS += ../src/ap/ctrl_iface_ap.o 611endif 612 613CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY 614OBJS += ../src/eap_server/eap_server.o 615OBJS += ../src/eap_server/eap_server_identity.o 616OBJS += ../src/eap_server/eap_server_methods.o 617 618ifdef CONFIG_IEEE80211N 619CFLAGS += -DCONFIG_IEEE80211N 620endif 621 622ifdef NEED_AP_MLME 623OBJS += ../src/ap/beacon.o 624OBJS += ../src/ap/wmm.o 625OBJS += ../src/ap/ap_list.o 626OBJS += ../src/ap/ieee802_11.o 627OBJS += ../src/ap/hw_features.o 628ifdef CONFIG_IEEE80211N 629OBJS += ../src/ap/ieee802_11_ht.o 630endif 631CFLAGS += -DNEED_AP_MLME 632endif 633ifdef CONFIG_WPS 634CFLAGS += -DEAP_SERVER_WSC 635OBJS += ../src/ap/wps_hostapd.o 636OBJS += ../src/eap_server/eap_server_wsc.o 637endif 638endif 639 640ifdef NEED_RSN_AUTHENTICATOR 641CFLAGS += -DCONFIG_NO_RADIUS 642NEED_AES_WRAP=y 643OBJS += ../src/ap/wpa_auth.o 644OBJS += ../src/ap/wpa_auth_ie.o 645OBJS += ../src/ap/pmksa_cache_auth.o 646ifdef CONFIG_IEEE80211R 647OBJS += ../src/ap/wpa_auth_ft.o 648endif 649ifdef CONFIG_PEERKEY 650OBJS += ../src/ap/peerkey_auth.o 651endif 652endif 653 654ifdef CONFIG_EAP_SERVER 655CFLAGS += -DEAP_SERVER 656OBJS_h += ../src/eap_server/eap_server.o 657OBJS_h += ../src/eap_server/eap_server_identity.o 658OBJS_h += ../src/eap_server/eap_server_methods.o 659endif 660 661ifdef CONFIG_RADIUS_CLIENT 662OBJS_h += ../src/utils/ip_addr.o 663OBJS_h += ../src/radius/radius.o 664OBJS_h += ../src/radius/radius_client.o 665endif 666 667ifdef CONFIG_AUTHENTICATOR 668OBJS_h += ../src/eapol_auth/eapol_auth_sm.o 669OBJS_h += ../src/ap/ieee802_1x.o 670endif 671 672ifdef CONFIG_WPA_AUTHENTICATOR 673OBJS_h += ../src/ap/wpa_auth.o 674OBJS_h += ../src/ap/wpa_auth_ie.o 675OBJS_h += ../src/ap/pmksa_cache_auth.o 676ifdef CONFIG_IEEE80211R 677OBJS_h += ../src/ap/wpa_auth_ft.o 678endif 679ifdef CONFIG_PEERKEY 680OBJS_h += ../src/ap/peerkey_auth.o 681endif 682endif 683 684ifdef CONFIG_PCSC 685# PC/SC interface for smartcards (USIM, GSM SIM) 686CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC 687OBJS += ../src/utils/pcsc_funcs.o 688# -lpthread may not be needed depending on how pcsc-lite was configured 689ifdef CONFIG_NATIVE_WINDOWS 690#Once MinGW gets support for WinScard, -lwinscard could be used instead of the 691#dynamic symbol loading that is now used in pcsc_funcs.c 692#LIBS += -lwinscard 693else 694LIBS += -lpcsclite -lpthread 695endif 696endif 697 698ifdef CONFIG_SIM_SIMULATOR 699CFLAGS += -DCONFIG_SIM_SIMULATOR 700NEED_MILENAGE=y 701endif 702 703ifdef CONFIG_USIM_SIMULATOR 704CFLAGS += -DCONFIG_USIM_SIMULATOR 705NEED_MILENAGE=y 706endif 707 708ifdef NEED_MILENAGE 709OBJS += ../src/crypto/milenage.o 710endif 711 712ifdef CONFIG_PKCS12 713CFLAGS += -DPKCS12_FUNCS 714endif 715 716ifdef CONFIG_SMARTCARD 717CFLAGS += -DCONFIG_SMARTCARD 718endif 719 720ifdef MS_FUNCS 721OBJS += ../src/crypto/ms_funcs.o 722NEED_DES=y 723NEED_MD4=y 724endif 725 726ifdef CHAP 727OBJS += ../src/eap_common/chap.o 728endif 729 730ifdef TLS_FUNCS 731NEED_DES=y 732# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST) 733OBJS += ../src/eap_peer/eap_tls_common.o 734OBJS_h += ../src/eap_server/eap_server_tls_common.o 735NEED_TLS_PRF=y 736endif 737 738ifndef CONFIG_TLS 739CONFIG_TLS=openssl 740endif 741 742ifeq ($(CONFIG_TLS), openssl) 743ifdef TLS_FUNCS 744CFLAGS += -DEAP_TLS_OPENSSL 745OBJS += ../src/crypto/tls_openssl.o 746LIBS += -lssl 747endif 748OBJS += ../src/crypto/crypto_openssl.o 749OBJS_p += ../src/crypto/crypto_openssl.o 750ifdef NEED_FIPS186_2_PRF 751OBJS += ../src/crypto/fips_prf_openssl.o 752endif 753LIBS += -lcrypto 754LIBS_p += -lcrypto 755endif 756 757ifeq ($(CONFIG_TLS), gnutls) 758ifdef TLS_FUNCS 759OBJS += ../src/crypto/tls_gnutls.o 760LIBS += -lgnutls -lgpg-error 761ifdef CONFIG_GNUTLS_EXTRA 762CFLAGS += -DCONFIG_GNUTLS_EXTRA 763LIBS += -lgnutls-extra 764endif 765endif 766OBJS += ../src/crypto/crypto_gnutls.o 767OBJS_p += ../src/crypto/crypto_gnutls.o 768ifdef NEED_FIPS186_2_PRF 769OBJS += ../src/crypto/fips_prf_gnutls.o 770endif 771LIBS += -lgcrypt 772LIBS_p += -lgcrypt 773CONFIG_INTERNAL_SHA256=y 774CONFIG_INTERNAL_RC4=y 775CONFIG_INTERNAL_DH_GROUP5=y 776endif 777 778ifeq ($(CONFIG_TLS), schannel) 779ifdef TLS_FUNCS 780OBJS += ../src/crypto/tls_schannel.o 781endif 782OBJS += ../src/crypto/crypto_cryptoapi.o 783OBJS_p += ../src/crypto/crypto_cryptoapi.o 784ifdef NEED_FIPS186_2_PRF 785OBJS += ../src/crypto/fips_prf_cryptoapi.o 786endif 787CONFIG_INTERNAL_SHA256=y 788CONFIG_INTERNAL_RC4=y 789CONFIG_INTERNAL_DH_GROUP5=y 790endif 791 792ifeq ($(CONFIG_TLS), nss) 793ifdef TLS_FUNCS 794OBJS += ../src/crypto/tls_nss.o 795LIBS += -lssl3 796endif 797OBJS += ../src/crypto/crypto_nss.o 798OBJS_p += ../src/crypto/crypto_nss.o 799ifdef NEED_FIPS186_2_PRF 800OBJS += ../src/crypto/fips_prf_nss.o 801endif 802LIBS += -lnss3 803LIBS_p += -lnss3 804CONFIG_INTERNAL_MD4=y 805CONFIG_INTERNAL_DH_GROUP5=y 806endif 807 808ifeq ($(CONFIG_TLS), internal) 809ifndef CONFIG_CRYPTO 810CONFIG_CRYPTO=internal 811endif 812ifdef TLS_FUNCS 813OBJS += ../src/crypto/crypto_internal-rsa.o 814OBJS += ../src/crypto/tls_internal.o 815OBJS += ../src/tls/tlsv1_common.o 816OBJS += ../src/tls/tlsv1_record.o 817OBJS += ../src/tls/tlsv1_cred.o 818OBJS += ../src/tls/tlsv1_client.o 819OBJS += ../src/tls/tlsv1_client_write.o 820OBJS += ../src/tls/tlsv1_client_read.o 821OBJS += ../src/tls/asn1.o 822OBJS += ../src/tls/rsa.o 823OBJS += ../src/tls/x509v3.o 824OBJS += ../src/tls/pkcs1.o 825OBJS += ../src/tls/pkcs5.o 826OBJS += ../src/tls/pkcs8.o 827NEED_SHA256=y 828NEED_BASE64=y 829NEED_TLS_PRF=y 830NEED_MODEXP=y 831NEED_CIPHER=y 832CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT 833endif 834ifdef NEED_CIPHER 835NEED_DES=y 836OBJS += ../src/crypto/crypto_internal-cipher.o 837endif 838ifdef NEED_MODEXP 839OBJS += ../src/crypto/crypto_internal-modexp.o 840OBJS += ../src/tls/bignum.o 841endif 842ifeq ($(CONFIG_CRYPTO), libtomcrypt) 843OBJS += ../src/crypto/crypto_libtomcrypt.o 844OBJS_p += ../src/crypto/crypto_libtomcrypt.o 845LIBS += -ltomcrypt -ltfm 846LIBS_p += -ltomcrypt -ltfm 847CONFIG_INTERNAL_SHA256=y 848CONFIG_INTERNAL_RC4=y 849CONFIG_INTERNAL_DH_GROUP5=y 850endif 851ifeq ($(CONFIG_CRYPTO), internal) 852OBJS += ../src/crypto/crypto_internal.o 853OBJS_p += ../src/crypto/crypto_internal.o 854NEED_AES_ENC=y 855CFLAGS += -DCONFIG_CRYPTO_INTERNAL 856ifdef CONFIG_INTERNAL_LIBTOMMATH 857CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 858ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 859CFLAGS += -DLTM_FAST 860endif 861else 862LIBS += -ltommath 863LIBS_p += -ltommath 864endif 865CONFIG_INTERNAL_AES=y 866CONFIG_INTERNAL_DES=y 867CONFIG_INTERNAL_SHA1=y 868CONFIG_INTERNAL_MD4=y 869CONFIG_INTERNAL_MD5=y 870CONFIG_INTERNAL_SHA256=y 871CONFIG_INTERNAL_RC4=y 872CONFIG_INTERNAL_DH_GROUP5=y 873endif 874ifeq ($(CONFIG_CRYPTO), cryptoapi) 875OBJS += ../src/crypto/crypto_cryptoapi.o 876OBJS_p += ../src/crypto/crypto_cryptoapi.o 877CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 878CONFIG_INTERNAL_SHA256=y 879CONFIG_INTERNAL_RC4=y 880endif 881endif 882 883ifeq ($(CONFIG_TLS), none) 884ifdef TLS_FUNCS 885OBJS += ../src/crypto/tls_none.o 886CFLAGS += -DEAP_TLS_NONE 887CONFIG_INTERNAL_AES=y 888CONFIG_INTERNAL_SHA1=y 889CONFIG_INTERNAL_MD5=y 890endif 891OBJS += ../src/crypto/crypto_none.o 892OBJS_p += ../src/crypto/crypto_none.o 893CONFIG_INTERNAL_SHA256=y 894CONFIG_INTERNAL_RC4=y 895endif 896 897ifdef TLS_FUNCS 898ifdef CONFIG_SMARTCARD 899ifndef CONFIG_NATIVE_WINDOWS 900ifneq ($(CONFIG_L2_PACKET), freebsd) 901LIBS += -ldl 902endif 903endif 904endif 905endif 906 907ifndef TLS_FUNCS 908OBJS += ../src/crypto/tls_none.o 909ifeq ($(CONFIG_TLS), internal) 910CONFIG_INTERNAL_AES=y 911CONFIG_INTERNAL_SHA1=y 912CONFIG_INTERNAL_MD5=y 913CONFIG_INTERNAL_RC4=y 914endif 915endif 916 917AESOBJS = # none so far (see below) 918ifdef CONFIG_INTERNAL_AES 919AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o 920endif 921 922AESOBJS += ../src/crypto/aes-unwrap.o 923ifdef NEED_AES_EAX 924AESOBJS += ../src/crypto/aes-eax.o 925NEED_AES_CTR=y 926endif 927ifdef NEED_AES_CTR 928AESOBJS += ../src/crypto/aes-ctr.o 929endif 930ifdef NEED_AES_ENCBLOCK 931AESOBJS += ../src/crypto/aes-encblock.o 932endif 933ifdef NEED_AES_OMAC1 934NEED_AES_ENC=y 935AESOBJS += ../src/crypto/aes-omac1.o 936endif 937ifdef NEED_AES_WRAP 938NEED_AES_ENC=y 939AESOBJS += ../src/crypto/aes-wrap.o 940endif 941ifdef NEED_AES_CBC 942NEED_AES_ENC=y 943AESOBJS += ../src/crypto/aes-cbc.o 944endif 945ifdef NEED_AES_ENC 946ifdef CONFIG_INTERNAL_AES 947AESOBJS += ../src/crypto/aes-internal-enc.o 948endif 949endif 950ifdef NEED_AES 951OBJS += $(AESOBJS) 952endif 953 954ifdef NEED_SHA1 955SHA1OBJS += ../src/crypto/sha1.o 956ifdef CONFIG_INTERNAL_SHA1 957SHA1OBJS += ../src/crypto/sha1-internal.o 958ifdef NEED_FIPS186_2_PRF 959SHA1OBJS += ../src/crypto/fips_prf_internal.o 960endif 961endif 962ifndef CONFIG_NO_WPA_PASSPHRASE 963SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 964endif 965ifdef NEED_T_PRF 966SHA1OBJS += ../src/crypto/sha1-tprf.o 967endif 968ifdef NEED_TLS_PRF 969SHA1OBJS += ../src/crypto/sha1-tlsprf.o 970endif 971endif 972 973MD5OBJS = ../src/crypto/md5.o 974ifdef NEED_MD5 975ifdef CONFIG_INTERNAL_MD5 976MD5OBJS += ../src/crypto/md5-internal.o 977endif 978ifdef CONFIG_FIPS 979MD5OBJS += ../src/crypto/md5-non-fips.o 980endif 981OBJS += $(MD5OBJS) 982OBJS_p += $(MD5OBJS) 983endif 984 985ifdef NEED_MD4 986ifdef CONFIG_INTERNAL_MD4 987OBJS += ../src/crypto/md4-internal.o 988endif 989endif 990 991DESOBJS = # none needed when not internal 992ifdef NEED_DES 993ifdef CONFIG_INTERNAL_DES 994DESOBJS += ../src/crypto/des-internal.o 995endif 996endif 997 998ifdef NEED_RC4 999ifdef CONFIG_INTERNAL_RC4 1000OBJS += ../src/crypto/rc4.o 1001endif 1002endif 1003 1004SHA256OBJS = # none by default 1005ifdef NEED_SHA256 1006CFLAGS += -DCONFIG_SHA256 1007SHA256OBJS += ../src/crypto/sha256.o 1008ifdef CONFIG_INTERNAL_SHA256 1009SHA256OBJS += ../src/crypto/sha256-internal.o 1010endif 1011OBJS += $(SHA256OBJS) 1012endif 1013 1014ifdef NEED_DH_GROUPS 1015OBJS += ../src/crypto/dh_groups.o 1016endif 1017ifdef NEED_DH_GROUPS_ALL 1018CFLAGS += -DALL_DH_GROUPS 1019endif 1020ifdef CONFIG_INTERNAL_DH_GROUP5 1021ifdef NEED_DH_GROUPS 1022OBJS += ../src/crypto/dh_group5.o 1023endif 1024endif 1025 1026ifdef CONFIG_CTRL_IFACE 1027ifeq ($(CONFIG_CTRL_IFACE), y) 1028ifdef CONFIG_NATIVE_WINDOWS 1029CONFIG_CTRL_IFACE=named_pipe 1030else 1031CONFIG_CTRL_IFACE=unix 1032endif 1033endif 1034CFLAGS += -DCONFIG_CTRL_IFACE 1035ifeq ($(CONFIG_CTRL_IFACE), unix) 1036CFLAGS += -DCONFIG_CTRL_IFACE_UNIX 1037endif 1038ifeq ($(CONFIG_CTRL_IFACE), udp) 1039CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1040endif 1041ifeq ($(CONFIG_CTRL_IFACE), named_pipe) 1042CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE 1043endif 1044OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o 1045endif 1046 1047ifdef CONFIG_CTRL_IFACE_DBUS 1048DBUS=y 1049DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE 1050DBUS_OBJS += dbus/dbus_old.o dbus/dbus_old_handlers.o 1051ifdef CONFIG_WPS 1052DBUS_OBJS += dbus/dbus_old_handlers_wps.o 1053endif 1054DBUS_OBJS += dbus/dbus_dict_helpers.o 1055ifndef DBUS_LIBS 1056DBUS_LIBS := $(shell pkg-config --libs dbus-1) 1057endif 1058ifndef DBUS_INCLUDE 1059DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1) 1060endif 1061dbus_version=$(subst ., ,$(shell pkg-config --modversion dbus-1)) 1062DBUS_VERSION_MAJOR=$(word 1,$(dbus_version)) 1063DBUS_VERSION_MINOR=$(word 2,$(dbus_version)) 1064ifeq ($(DBUS_VERSION_MAJOR),) 1065DBUS_VERSION_MAJOR=0 1066endif 1067ifeq ($(DBUS_VERSION_MINOR),) 1068DBUS_VERSION_MINOR=0 1069endif 1070DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR) 1071DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR) 1072DBUS_CFLAGS += $(DBUS_INCLUDE) 1073endif 1074 1075ifdef CONFIG_CTRL_IFACE_DBUS_NEW 1076DBUS=y 1077DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW 1078DBUS_OBJS ?= dbus/dbus_dict_helpers.o 1079DBUS_OBJS += dbus/dbus_new_helpers.o 1080DBUS_OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o 1081ifdef CONFIG_WPS 1082DBUS_OBJS += dbus/dbus_new_handlers_wps.o 1083endif 1084ifndef DBUS_LIBS 1085DBUS_LIBS := $(shell pkg-config --libs dbus-1) 1086endif 1087ifndef DBUS_INCLUDE 1088DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1) 1089endif 1090ifdef CONFIG_CTRL_IFACE_DBUS_INTRO 1091DBUS_OBJS += dbus/dbus_new_introspect.o 1092DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO 1093endif 1094DBUS_CFLAGS += $(DBUS_INCLUDE) 1095endif 1096 1097ifdef DBUS 1098DBUS_CFLAGS += -DCONFIG_DBUS 1099DBUS_OBJS += dbus/dbus_common.o 1100endif 1101 1102OBJS += $(DBUS_OBJS) 1103CFLAGS += $(DBUS_CFLAGS) 1104LIBS += $(DBUS_LIBS) 1105 1106ifdef CONFIG_READLINE 1107CFLAGS += -DCONFIG_READLINE 1108LIBS_c += -lncurses -lreadline 1109endif 1110 1111ifdef CONFIG_NATIVE_WINDOWS 1112CFLAGS += -DCONFIG_NATIVE_WINDOWS 1113LIBS += -lws2_32 -lgdi32 -lcrypt32 1114LIBS_c += -lws2_32 1115LIBS_p += -lws2_32 -lgdi32 1116ifeq ($(CONFIG_CRYPTO), cryptoapi) 1117LIBS_p += -lcrypt32 1118endif 1119endif 1120 1121ifdef CONFIG_NO_STDOUT_DEBUG 1122CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 1123ifndef CONFIG_CTRL_IFACE 1124CFLAGS += -DCONFIG_NO_WPA_MSG 1125endif 1126endif 1127 1128ifdef CONFIG_IPV6 1129# for eapol_test only 1130CFLAGS += -DCONFIG_IPV6 1131endif 1132 1133ifdef NEED_BASE64 1134OBJS += ../src/utils/base64.o 1135endif 1136 1137ifdef NEED_SME 1138NEED_80211_COMMON=y 1139OBJS += sme.o 1140CFLAGS += -DCONFIG_SME 1141endif 1142 1143ifdef CONFIG_CLIENT_MLME 1144OBJS += mlme.o 1145CFLAGS += -DCONFIG_CLIENT_MLME 1146NEED_80211_COMMON=y 1147endif 1148 1149ifdef NEED_80211_COMMON 1150OBJS += ../src/common/ieee802_11_common.o 1151endif 1152 1153ifdef NEED_EAP_COMMON 1154OBJS += ../src/eap_common/eap_common.o 1155endif 1156 1157ifndef CONFIG_MAIN 1158CONFIG_MAIN=main 1159endif 1160 1161ifdef CONFIG_DEBUG_SYSLOG 1162CFLAGS += -DCONFIG_DEBUG_SYSLOG 1163endif 1164 1165ifdef CONFIG_DEBUG_FILE 1166CFLAGS += -DCONFIG_DEBUG_FILE 1167endif 1168 1169ifdef CONFIG_DELAYED_MIC_ERROR_REPORT 1170CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT 1171endif 1172 1173ifdef CONFIG_FIPS 1174CFLAGS += -DCONFIG_FIPS 1175endif 1176 1177OBJS += $(SHA1OBJS) $(DESOBJS) 1178 1179OBJS_p += $(SHA1OBJS) 1180 1181ifdef CONFIG_BGSCAN_SIMPLE 1182CFLAGS += -DCONFIG_BGSCAN_SIMPLE 1183OBJS += bgscan_simple.o 1184NEED_BGSCAN=y 1185endif 1186 1187ifdef NEED_BGSCAN 1188CFLAGS += -DCONFIG_BGSCAN 1189OBJS += bgscan.o 1190endif 1191 1192OBJS_wpa_rm := ctrl_iface.o mlme.o ctrl_iface_unix.o 1193OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.o 1194ifdef CONFIG_AUTHENTICATOR 1195OBJS_wpa += tests/link_test.o 1196endif 1197OBJS_wpa += $(OBJS_l2) 1198OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o 1199OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o 1200OBJS_t += ../src/radius/radius_client.o 1201OBJS_t += ../src/radius/radius.o 1202ifndef CONFIG_AP 1203OBJS_t += ../src/utils/ip_addr.o 1204endif 1205OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o 1206OBJS += $(CONFIG_MAIN).o 1207 1208ifdef CONFIG_PRIVSEP 1209OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o 1210OBJS_priv += $(OBJS_l2) 1211OBJS_priv += ../src/utils/os_$(CONFIG_OS).o 1212OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o 1213OBJS_priv += ../src/utils/common.o 1214OBJS_priv += ../src/utils/wpa_debug.o 1215OBJS_priv += ../src/utils/wpabuf.o 1216OBJS_priv += wpa_priv.o 1217ifdef CONFIG_DRIVER_TEST 1218OBJS_priv += $(SHA1OBJS) 1219OBJS_priv += $(MD5OBJS) 1220ifeq ($(CONFIG_TLS), openssl) 1221OBJS_priv += ../src/crypto/crypto_openssl.o 1222endif 1223ifeq ($(CONFIG_TLS), gnutls) 1224OBJS_priv += ../src/crypto/crypto_gnutls.o 1225endif 1226ifeq ($(CONFIG_TLS), nss) 1227OBJS_priv += ../src/crypto/crypto_nss.o 1228endif 1229ifeq ($(CONFIG_TLS), internal) 1230ifeq ($(CONFIG_CRYPTO), libtomcrypt) 1231OBJS_priv += ../src/crypto/crypto_libtomcrypt.o 1232else 1233OBJS_priv += ../src/crypto/crypto_internal.o 1234endif 1235endif 1236endif # CONFIG_DRIVER_TEST 1237OBJS += ../src/l2_packet/l2_packet_privsep.o 1238OBJS += ../src/drivers/driver_privsep.o 1239EXTRA_progs += wpa_priv 1240else 1241OBJS += $(OBJS_d) ../src/drivers/drivers.o 1242OBJS += $(OBJS_l2) 1243endif 1244 1245ifdef CONFIG_NDIS_EVENTS_INTEGRATED 1246CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED 1247OBJS += ../src/drivers/ndis_events.o 1248EXTRALIBS += -loleaut32 -lole32 -luuid 1249ifdef PLATFORMSDKLIB 1250EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib 1251else 1252EXTRALIBS += WbemUuid.Lib 1253endif 1254endif 1255 1256ifndef LDO 1257LDO=$(CC) 1258endif 1259 1260dynamic_eap_methods: $(EAPDYN) 1261 1262../src/drivers/build.wpa_supplicant: 1263 @if [ -f ../src/drivers/build.hostapd ]; then \ 1264 $(MAKE) -C ../src/drivers clean; \ 1265 fi 1266 @touch ../src/drivers/build.wpa_supplicant 1267 1268BCHECK=../src/drivers/build.wpa_supplicant 1269 1270wpa_priv: $(BCHECK) $(OBJS_priv) 1271 $(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS) 1272 1273wpa_supplicant: .config $(BCHECK) $(OBJS) $(EXTRA_progs) 1274 $(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) 1275 1276eapol_test: .config $(OBJS_t) 1277 $(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS) 1278 1279preauth_test: .config $(OBJS_t2) 1280 $(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS) 1281 1282wpa_passphrase: $(OBJS_p) 1283 $(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) 1284 1285wpa_cli: $(OBJS_c) 1286 $(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c) 1287 1288link_test: $(OBJS) $(OBJS_h) tests/link_test.o 1289 $(LDO) $(LDFLAGS) -o link_test $(OBJS) $(OBJS_h) tests/link_test.o $(LIBS) 1290 1291test_wpa: $(OBJS_wpa) $(OBJS_h) 1292 $(LDO) $(LDFLAGS) -o test_wpa $(OBJS_wpa) $(LIBS) 1293 1294win_if_list: win_if_list.c 1295 $(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w) 1296 1297eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c 1298 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1299 -Deap_peer_psk_register=eap_peer_method_dynamic_init 1300 1301eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c 1302 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1303 -Deap_peer_pax_register=eap_peer_method_dynamic_init 1304 1305eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c 1306 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1307 -Deap_peer_sake_register=eap_peer_method_dynamic_init 1308 1309eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c 1310 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1311 -Deap_peer_wsc_register=eap_peer_method_dynamic_init 1312 1313eap_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 1314 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 1315 -Deap_peer_ikev2_register=eap_peer_method_dynamic_init 1316 1317%.so: %.c 1318 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \ 1319 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init 1320 1321Q=@ 1322E=echo 1323ifeq ($(V), 1) 1324Q= 1325E=true 1326endif 1327 1328%.o: %.c 1329 $(Q)$(CC) -c -o $@ $(CFLAGS) $< 1330 @$(E) " CC " $< 1331 1332wpa_supplicant.exe: wpa_supplicant 1333 mv -f $< $@ 1334wpa_cli.exe: wpa_cli 1335 mv -f $< $@ 1336wpa_passphrase.exe: wpa_passphrase 1337 mv -f $< $@ 1338win_if_list.exe: win_if_list 1339 mv -f $< $@ 1340eapol_test.exe: eapol_test 1341 mv -f $< $@ 1342 1343WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe 1344 1345windows-bin: $(WINALL) 1346 $(STRIP) $(WINALL) 1347 1348wpa_gui/Makefile: 1349 qmake -o wpa_gui/Makefile wpa_gui/wpa_gui.pro 1350 1351wpa_gui: wpa_gui/Makefile 1352 $(MAKE) -C wpa_gui 1353 1354wpa_gui-qt4/Makefile: 1355 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro 1356 1357wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts 1358 lrelease wpa_gui-qt4/wpa_gui.pro 1359 1360wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm 1361 $(MAKE) -C wpa_gui-qt4 1362 1363TEST_EAP_SIM_COMMON_OBJS = $(SHA1OBJS) $(MD5OBJS) \ 1364 ../src/utils/common.o ../src/utils/os_unix.o \ 1365 ../src/utils/wpa_debug.o $(AESOBJS) \ 1366 tests/test_eap_sim_common.o 1367test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS) 1368 $(LDO) $(LDFLAGS) -o $@ $(TEST_EAP_SIM_COMMON_OBJS) $(LIBS) 1369 ./test-eap_sim_common 1370 rm test-eap_sim_common 1371 1372tests: test-eap_sim_common 1373 1374clean: 1375 $(MAKE) -C ../src clean 1376 $(MAKE) -C dbus clean 1377 rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL) eapol_test preauth_test 1378 rm -f wpa_priv 1379 1380-include $(OBJS:%.o=%.d) 1381