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