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