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