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