1ifeq ($(KERNEL_TYPE), linux) 2CC=arm-himix410-linux-gcc 3LD=arm-himix410-linux-ld 4else 5CC=../../../../prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/bin/arm-linux-ohoseabi-gcc 6endif 7 8ifndef CFLAGS 9ifeq ($(LIB_TYPE),$(KERNEL_TYPE), 1,linux) 10CFLAGS = -fvisibility=hidden -MMD -O2 -g -w -fsigned-char 11else ifeq ($(LIB_TYPE), 1) 12CFLAGS = -fvisibility=hidden -flto -MMD -O2 -g -w -fsigned-char 13else 14CFLAGS = -MMD -O2 -g -w -fsigned-char 15endif 16endif 17 18ifeq ($(MAKECMDGOALS), libwpa_client.so) 19ifeq ($(LIB_TYPE),$(KERNEL_TYPE), 1,linux) 20CFLAGS = -MMD -O2 -g -w -fsigned-char 21else ifeq ($(LIB_TYPE), 1) 22CFLAGS = -flto -MMD -O2 -g -w -fsigned-char 23endif 24endif 25 26ifeq ($(MAKECMDGOALS), libwpa_client.a) 27CFLAGS = -MMD -O2 -g -w -fsigned-char 28endif 29 30ifdef LIBS 31# If LIBS is set with some global build system defaults, clone those for 32# LIBS_c and LIBS_p to cover wpa_passphrase and wpa_cli as well. 33ifndef LIBS_c 34LIBS_c := $(LIBS) 35endif 36ifndef LIBS_p 37LIBS_p := $(LIBS) 38endif 39endif 40 41export LIBDIR ?= /usr/local/lib 42export INCDIR ?= /usr/local/include 43export BINDIR ?= /usr/local/sbin 44PKG_CONFIG ?= pkg-config 45 46CFLAGS += $(EXTRA_CFLAGS) 47CFLAGS += -I$(abspath ../src) 48CFLAGS += -I$(abspath ../src/utils) 49CFLAGS += -I$(abspath ../src/drivers) 50CFLAGS += -I$(abspath ./) 51CFLAGS += -I$(abspath ../os_dep/include) 52CFLAGS += -I$(abspath ../../../../drivers/framework/include) 53CFLAGS += -I$(abspath ../../../../drivers/framework/include/utils) 54CFLAGS += -I$(abspath ../../../../drivers/framework/utils/include) 55CFLAGS += -I$(abspath ../../../../drivers/framework/include/osal) 56CFLAGS += -I$(abspath ../../../../drivers/framework/ability/sbuf/include) 57CFLAGS += -I$(abspath ../../../../drivers/framework/core/shared/include) 58CFLAGS += -I$(abspath ../../../../drivers/framework/include/core) 59CFLAGS += -I$(abspath ../../../../drivers/framework/core/adapter/syscall/include) 60CFLAGS += -I$(abspath ../../../../third_party/bounds_checking_function/include) 61CFLAGS += -I$(abspath ../../../../drivers/peripheral/wlan/client/include) 62CFLAGS += -I$(abspath ../build/include) 63CFLAGS += -shared -fPIC 64CFLAGS += -DUSERSPACE_CLIENT_SUPPORT 65CFLAGS += -fstack-protector-all 66LIBS += -L$(DEPDIR) -lsec_shared -lhilog_shared -lwifi_driver_client 67ifeq ($(COMPILER_TYPE), clang) 68SYSROOT_PATH ?= ../../../../sysroot 69ARCH_CFLAGS ?= --target=arm-liteos-ohos -march=armv7-a -mfloat-abi=softfp 70CC := $(COMPILER_DIR)/bin/clang 71CFLAGS += --sysroot=$(SYSROOT_PATH) $(ARCH_CFLAGS) 72LDFLAGS += --sysroot=$(SYSROOT_PATH) $(ARCH_CFLAGS) 73LDFLAGS += -lc 74endif 75 76ifndef CONFIG_NO_GITVER 77# Add VERSION_STR postfix for builds from a git repository 78ifeq ($(wildcard ../.git),../.git) 79GITVER := $(shell git describe --dirty=+) 80ifneq ($(GITVER),) 81CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\" 82endif 83endif 84endif 85 86ifdef CONFIG_TESTING_OPTIONS 87CFLAGS += -DCONFIG_TESTING_OPTIONS 88CONFIG_WPS_TESTING=y 89CONFIG_TDLS_TESTING=y 90endif 91 92COPY_OBJS = copy_objs 93BINALL=$(COPY_OBJS) wpa_cli 94 95ifndef CONFIG_NO_WPA_PASSPHRASE 96BINALL += wpa_passphrase 97endif 98 99ALL = $(BINALL) 100ALL += systemd/wpa_supplicant.service 101ALL += systemd/wpa_supplicant@.service 102ALL += systemd/wpa_supplicant-nl80211@.service 103ALL += systemd/wpa_supplicant-wired@.service 104ALL += dbus/fi.w1.wpa_supplicant1.service 105ifdef CONFIG_BUILD_WPA_CLIENT_SO 106ALL += libwpa_client.so 107endif 108 109 110all: verify_config $(ALL) dynamic_eap_methods 111 112verify_config: 113 @if [ ! -r .config ]; then \ 114 echo 'Building wpa_supplicant requires a configuration file'; \ 115 echo '(.config). See README for more instructions. You can'; \ 116 echo 'run "cp defconfig .config" to create an example'; \ 117 echo 'configuration.'; \ 118 exit 1; \ 119 fi 120 121mkconfig: 122 @if [ -f .config ]; then \ 123 echo '.config exists - did not replace it'; \ 124 exit 1; \ 125 fi 126 echo CONFIG_DRIVER_HOSTAP=y >> .config 127 echo CONFIG_DRIVER_WEXT=y >> .config 128 129$(DESTDIR)$(BINDIR)/%: % 130 install -D $(<) $(@) 131 132install: $(addprefix $(DESTDIR)$(BINDIR)/,$(BINALL)) 133 $(MAKE) -C ../src install 134ifdef CONFIG_BUILD_WPA_CLIENT_SO 135 install -m 0644 -D libwpa_client.so $(DESTDIR)/$(LIBDIR)/libwpa_client.so 136 install -m 0644 -D ../src/common/wpa_ctrl.h $(DESTDIR)/$(INCDIR)/wpa_ctrl.h 137endif 138 if ls eap_*.so >/dev/null 2>&1; then \ 139 install -d $(DESTDIR)$(LIBDIR)/wpa_supplicant && \ 140 cp *.so $(DESTDIR)$(LIBDIR)/wpa_supplicant \ 141 ; fi 142 143ifdef CONFIG_FIPS 144CONFIG_NO_RANDOM_POOL= 145CONFIG_OPENSSL_CMAC=y 146endif 147 148OBJS = config.o 149OBJS += notify.o 150OBJS += bss.o 151OBJS += eap_register.o 152OBJS += ../src/utils/common.o 153OBJS += ../src/utils/config.o 154OBJS += ../src/utils/wpa_debug.o 155OBJS += ../src/utils/wpabuf.o 156OBJS += ../src/utils/bitfield.o 157OBJS += ../src/utils/ip_addr.o 158OBJS += ../src/utils/crc32.o 159OBJS += op_classes.o 160OBJS += rrm.o 161OBJS += twt.o 162OBJS += robust_av.o 163OBJS_p = wpa_passphrase.o 164OBJS_p += ../src/utils/common.o 165OBJS_p += ../src/utils/wpa_debug.o 166OBJS_p += ../src/utils/wpabuf.o 167OBJS_c = wpa_cli.o ../src/common/wpa_ctrl.o 168OBJS_c += ../src/utils/wpa_debug.o 169OBJS_c += ../src/utils/common.o 170OBJS_c += ../src/common/cli.o 171OBJS += wmm_ac.o 172 173ifndef CONFIG_OS 174ifdef CONFIG_NATIVE_WINDOWS 175CONFIG_OS=win32 176else 177CONFIG_OS=unix 178endif 179endif 180 181ifeq ($(CONFIG_OS), internal) 182CFLAGS += -DOS_NO_C_LIB_DEFINES 183endif 184 185OBJS += ../src/utils/os_$(CONFIG_OS).o 186OBJS_p += ../src/utils/os_$(CONFIG_OS).o 187OBJS_c += ../src/utils/os_$(CONFIG_OS).o 188 189ifdef CONFIG_WPA_TRACE 190CFLAGS += -DWPA_TRACE 191OBJS += ../src/utils/trace.o 192OBJS_p += ../src/utils/trace.o 193OBJS_c += ../src/utils/trace.o 194OBJS_priv += ../src/utils/trace.o 195LIBCTRL += ../src/utils/trace.o 196ifeq ($(LIB_TYPE), 0) 197OBJS += ../src/utils/trace.o 198endif 199LIBCTRLSO += ../src/utils/trace.c 200LDFLAGS += -rdynamic 201CFLAGS += -funwind-tables 202ifdef CONFIG_WPA_TRACE_BFD 203CFLAGS += -DPACKAGE="wpa_supplicant" -DWPA_TRACE_BFD 204LIBS += -lbfd -ldl -liberty -lz 205LIBS_p += -lbfd -ldl -liberty -lz 206LIBS_c += -lbfd -ldl -liberty -lz 207endif 208endif 209 210ifndef CONFIG_ELOOP 211CONFIG_ELOOP=eloop 212endif 213OBJS += ../src/utils/$(CONFIG_ELOOP).o 214OBJS_c += ../src/utils/$(CONFIG_ELOOP).o 215 216ifndef CONFIG_OSX 217ifeq ($(CONFIG_ELOOP), eloop) 218# Using glibc < 2.17 requires -lrt for clock_gettime() 219# OS X has an alternate implementation 220LIBS += -lrt 221LIBS_c += -lrt 222LIBS_p += -lrt 223endif 224endif 225 226ifdef CONFIG_ELOOP_POLL 227CFLAGS += -DCONFIG_ELOOP_POLL 228endif 229 230ifdef CONFIG_ELOOP_EPOLL 231CFLAGS += -DCONFIG_ELOOP_EPOLL 232endif 233 234ifdef CONFIG_ELOOP_KQUEUE 235CFLAGS += -DCONFIG_ELOOP_KQUEUE 236endif 237 238ifdef CONFIG_EAPOL_TEST 239CFLAGS += -Werror -DEAPOL_TEST 240endif 241 242ifdef CONFIG_CODE_COVERAGE 243CFLAGS += -O0 -fprofile-arcs -ftest-coverage 244LIBS += -lgcov 245LIBS_c += -lgcov 246LIBS_p += -lgcov 247endif 248 249ifdef CONFIG_HT_OVERRIDES 250CFLAGS += -DCONFIG_HT_OVERRIDES 251endif 252 253ifdef CONFIG_VHT_OVERRIDES 254CFLAGS += -DCONFIG_VHT_OVERRIDES 255endif 256 257ifdef CONFIG_HE_OVERRIDES 258CFLAGS += -DCONFIG_HE_OVERRIDES 259endif 260 261ifndef CONFIG_BACKEND 262CONFIG_BACKEND=file 263endif 264 265ifeq ($(CONFIG_BACKEND), file) 266OBJS += config_file.o 267ifndef CONFIG_NO_CONFIG_BLOBS 268NEED_BASE64=y 269endif 270CFLAGS += -DCONFIG_BACKEND_FILE 271endif 272 273ifeq ($(CONFIG_BACKEND), winreg) 274OBJS += config_winreg.o 275endif 276 277ifeq ($(CONFIG_BACKEND), none) 278OBJS += config_none.o 279endif 280 281ifdef CONFIG_NO_CONFIG_WRITE 282CFLAGS += -DCONFIG_NO_CONFIG_WRITE 283endif 284 285ifdef CONFIG_NO_CONFIG_BLOBS 286CFLAGS += -DCONFIG_NO_CONFIG_BLOBS 287endif 288 289ifdef CONFIG_NO_SCAN_PROCESSING 290CFLAGS += -DCONFIG_NO_SCAN_PROCESSING 291endif 292 293ifdef CONFIG_SUITEB 294CFLAGS += -DCONFIG_SUITEB 295endif 296 297ifdef CONFIG_SUITEB192 298CFLAGS += -DCONFIG_SUITEB192 299NEED_SHA384=y 300endif 301 302ifdef CONFIG_OCV 303CFLAGS += -DCONFIG_OCV 304OBJS += ../src/common/ocv.o 305endif 306 307ifdef CONFIG_IEEE80211R 308CFLAGS += -DCONFIG_IEEE80211R 309OBJS += ../src/rsn_supp/wpa_ft.o 310endif 311 312ifdef CONFIG_MESH 313NEED_80211_COMMON=y 314NEED_AES_SIV=y 315CONFIG_SAE=y 316CONFIG_AP=y 317CFLAGS += -DCONFIG_MESH 318OBJS += mesh.o 319OBJS += mesh_mpm.o 320OBJS += mesh_rsn.o 321endif 322 323ifdef CONFIG_SAE 324CFLAGS += -DCONFIG_SAE 325OBJS += ../src/common/sae.o 326ifdef CONFIG_SAE_PK 327CFLAGS += -DCONFIG_SAE_PK 328OBJS += ../src/common/sae_pk.o 329endif 330NEED_ECC=y 331NEED_DH_GROUPS=y 332NEED_HMAC_SHA256_KDF=y 333NEED_DRAGONFLY=y 334ifdef CONFIG_TESTING_OPTIONS 335NEED_DH_GROUPS_ALL=y 336endif 337endif 338 339ifdef CONFIG_DPP 340CFLAGS += -DCONFIG_DPP 341OBJS += ../src/common/dpp.o 342OBJS += ../src/common/dpp_auth.o 343OBJS += ../src/common/dpp_backup.o 344OBJS += ../src/common/dpp_crypto.o 345OBJS += ../src/common/dpp_pkex.o 346OBJS += ../src/common/dpp_reconfig.o 347OBJS += ../src/common/dpp_tcp.o 348OBJS += dpp_supplicant.o 349NEED_AES_SIV=y 350NEED_HMAC_SHA256_KDF=y 351NEED_HMAC_SHA384_KDF=y 352NEED_HMAC_SHA512_KDF=y 353NEED_SHA384=y 354NEED_SHA512=y 355NEED_ECC=y 356NEED_JSON=y 357NEED_GAS_SERVER=y 358NEED_BASE64=y 359NEED_ASN1=y 360ifdef CONFIG_DPP2 361CFLAGS += -DCONFIG_DPP2 362endif 363ifdef CONFIG_DPP3 364CFLAGS += -DCONFIG_DPP3 365endif 366endif 367 368ifdef CONFIG_OWE 369CFLAGS += -DCONFIG_OWE 370NEED_ECC=y 371NEED_HMAC_SHA256_KDF=y 372NEED_HMAC_SHA384_KDF=y 373NEED_HMAC_SHA512_KDF=y 374NEED_SHA384=y 375NEED_SHA512=y 376endif 377 378ifdef CONFIG_FILS 379CFLAGS += -DCONFIG_FILS 380NEED_SHA384=y 381NEED_AES_SIV=y 382ifdef CONFIG_FILS_SK_PFS 383CFLAGS += -DCONFIG_FILS_SK_PFS 384NEED_ECC=y 385endif 386endif 387 388ifdef CONFIG_MBO 389CONFIG_WNM=y 390endif 391 392ifdef CONFIG_WNM 393CFLAGS += -DCONFIG_WNM 394OBJS += wnm_sta.o 395endif 396 397ifdef CONFIG_TDLS 398CFLAGS += -DCONFIG_TDLS 399OBJS += ../src/rsn_supp/tdls.o 400endif 401 402ifdef CONFIG_TDLS_TESTING 403CFLAGS += -DCONFIG_TDLS_TESTING 404endif 405 406ifdef CONFIG_PMKSA_CACHE_EXTERNAL 407CFLAGS += -DCONFIG_PMKSA_CACHE_EXTERNAL 408endif 409 410ifndef CONFIG_NO_WPA 411OBJS += ../src/rsn_supp/wpa.o 412OBJS += ../src/rsn_supp/preauth.o 413OBJS += ../src/rsn_supp/pmksa_cache.o 414OBJS += ../src/rsn_supp/wpa_ie.o 415OBJS += ../src/common/wpa_common.o 416NEED_AES=y 417NEED_SHA1=y 418NEED_MD5=y 419NEED_RC4=y 420else 421CFLAGS += -DCONFIG_NO_WPA 422ifeq ($(CONFIG_TLS), internal) 423NEED_SHA1=y 424NEED_MD5=y 425endif 426endif 427 428ifdef CONFIG_IBSS_RSN 429NEED_RSN_AUTHENTICATOR=y 430CFLAGS += -DCONFIG_IBSS_RSN 431CFLAGS += -DCONFIG_NO_VLAN 432OBJS += ibss_rsn.o 433endif 434 435ifdef CONFIG_MATCH_IFACE 436CFLAGS += -DCONFIG_MATCH_IFACE 437endif 438 439ifdef CONFIG_P2P 440OBJS += p2p_supplicant.o 441OBJS += p2p_supplicant_sd.o 442OBJS += ../src/p2p/p2p.o 443OBJS += ../src/p2p/p2p_utils.o 444OBJS += ../src/p2p/p2p_parse.o 445OBJS += ../src/p2p/p2p_build.o 446OBJS += ../src/p2p/p2p_go_neg.o 447OBJS += ../src/p2p/p2p_sd.o 448OBJS += ../src/p2p/p2p_pd.o 449OBJS += ../src/p2p/p2p_invitation.o 450OBJS += ../src/p2p/p2p_dev_disc.o 451OBJS += ../src/p2p/p2p_group.o 452OBJS += ../src/ap/p2p_hostapd.o 453CFLAGS += -DCONFIG_P2P 454NEED_GAS=y 455NEED_OFFCHANNEL=y 456CONFIG_WPS=y 457CONFIG_AP=y 458ifdef CONFIG_P2P_STRICT 459CFLAGS += -DCONFIG_P2P_STRICT 460endif 461ifdef CONFIG_WIFI_DISPLAY 462CFLAGS += -DCONFIG_WIFI_DISPLAY 463OBJS += wifi_display.o 464endif 465endif 466 467ifdef CONFIG_PASN 468CFLAGS += -DCONFIG_PASN 469CFLAGS += -DCONFIG_PTKSA_CACHE 470NEED_HMAC_SHA256_KDF=y 471NEED_HMAC_SHA384_KDF=y 472NEED_SHA256=y 473NEED_SHA384=y 474OBJS += ../src/common/ptksa_cache.o 475OBJS += pasn_supplicant.o 476endif 477 478ifdef CONFIG_HS20 479OBJS += hs20_supplicant.o 480CFLAGS += -DCONFIG_HS20 481CONFIG_INTERWORKING=y 482endif 483 484ifdef CONFIG_INTERWORKING 485OBJS += interworking.o 486CFLAGS += -DCONFIG_INTERWORKING 487NEED_GAS=y 488endif 489 490ifdef CONFIG_NO_ROAMING 491CFLAGS += -DCONFIG_NO_ROAMING 492endif 493 494include ../src/drivers/drivers.mak 495ifdef CONFIG_AP 496OBJS_d += $(DRV_BOTH_OBJS) 497CFLAGS += $(DRV_BOTH_CFLAGS) 498LDFLAGS += $(DRV_BOTH_LDFLAGS) 499LIBS += $(DRV_BOTH_LIBS) 500else 501NEED_AP_MLME= 502OBJS_d += $(DRV_WPA_OBJS) 503CFLAGS += $(DRV_WPA_CFLAGS) 504LDFLAGS += $(DRV_WPA_LDFLAGS) 505LIBS += $(DRV_WPA_LIBS) 506endif 507 508ifndef CONFIG_L2_PACKET 509CONFIG_L2_PACKET=linux 510endif 511 512OBJS_l2 += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o 513 514ifeq ($(CONFIG_L2_PACKET), pcap) 515ifdef CONFIG_WINPCAP 516CFLAGS += -DCONFIG_WINPCAP 517LIBS += -lwpcap -lpacket 518LIBS_w += -lwpcap 519else 520LIBS += -ldnet -lpcap 521endif 522endif 523 524ifeq ($(CONFIG_L2_PACKET), winpcap) 525LIBS += -lwpcap -lpacket 526LIBS_w += -lwpcap 527endif 528 529ifeq ($(CONFIG_L2_PACKET), freebsd) 530LIBS += -lpcap 531endif 532 533ifdef CONFIG_ERP 534CFLAGS += -DCONFIG_ERP 535NEED_HMAC_SHA256_KDF=y 536endif 537 538ifdef CONFIG_EAP_TLS 539# EAP-TLS 540ifeq ($(CONFIG_EAP_TLS), dyn) 541CFLAGS += -DEAP_TLS_DYNAMIC 542EAPDYN += eap_tls.so 543else 544CFLAGS += -DEAP_TLS 545OBJS += ../src/eap_peer/eap_tls.o 546endif 547TLS_FUNCS=y 548CONFIG_IEEE8021X_EAPOL=y 549endif 550 551ifdef CONFIG_EAP_UNAUTH_TLS 552# EAP-UNAUTH-TLS 553CFLAGS += -DEAP_UNAUTH_TLS 554ifndef CONFIG_EAP_TLS 555OBJS += ../src/eap_peer/eap_tls.o 556TLS_FUNCS=y 557endif 558CONFIG_IEEE8021X_EAPOL=y 559endif 560 561ifdef CONFIG_EAP_PEAP 562# EAP-PEAP 563SRC_EAP_PEAP = ../src/eap_peer/eap_peap.c ../src/eap_common/eap_peap_common.c 564ifeq ($(CONFIG_EAP_PEAP), dyn) 565CFLAGS += -DEAP_PEAP_DYNAMIC 566EAPDYN += eap_peap.so 567else 568CFLAGS += -DEAP_PEAP 569OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PEAP)) 570endif 571TLS_FUNCS=y 572CONFIG_IEEE8021X_EAPOL=y 573endif 574 575ifdef CONFIG_EAP_TTLS 576# EAP-TTLS 577ifeq ($(CONFIG_EAP_TTLS), dyn) 578CFLAGS += -DEAP_TTLS_DYNAMIC 579EAPDYN += eap_ttls.so 580else 581CFLAGS += -DEAP_TTLS 582OBJS += ../src/eap_peer/eap_ttls.o 583endif 584TLS_FUNCS=y 585ifndef CONFIG_FIPS 586MS_FUNCS=y 587CHAP=y 588endif 589CONFIG_IEEE8021X_EAPOL=y 590endif 591 592ifdef CONFIG_EAP_MD5 593# EAP-MD5 594ifeq ($(CONFIG_EAP_MD5), dyn) 595CFLAGS += -DEAP_MD5_DYNAMIC 596EAPDYN += eap_md5.so 597else 598CFLAGS += -DEAP_MD5 599OBJS += ../src/eap_peer/eap_md5.o 600endif 601CHAP=y 602CONFIG_IEEE8021X_EAPOL=y 603endif 604 605# backwards compatibility for old spelling 606ifdef CONFIG_MSCHAPV2 607ifndef CONFIG_EAP_MSCHAPV2 608CONFIG_EAP_MSCHAPV2=y 609endif 610endif 611 612ifdef CONFIG_EAP_MSCHAPV2 613# EAP-MSCHAPv2 614SRC_EAP_MSCHAPV2 = ../src/eap_peer/eap_mschapv2.c ../src/eap_peer/mschapv2.c 615ifeq ($(CONFIG_EAP_MSCHAPV2), dyn) 616CFLAGS += -DEAP_MSCHAPv2_DYNAMIC 617EAPDYN += eap_mschapv2.so 618else 619CFLAGS += -DEAP_MSCHAPv2 620OBJS += $(patsubst %.c, %.o, $(SRC_EAP_MSCHAPV2)) 621endif 622MS_FUNCS=y 623CONFIG_IEEE8021X_EAPOL=y 624endif 625 626ifdef CONFIG_EAP_GTC 627# EAP-GTC 628ifeq ($(CONFIG_EAP_GTC), dyn) 629CFLAGS += -DEAP_GTC_DYNAMIC 630EAPDYN += eap_gtc.so 631else 632CFLAGS += -DEAP_GTC 633OBJS += ../src/eap_peer/eap_gtc.o 634endif 635CONFIG_IEEE8021X_EAPOL=y 636endif 637 638ifdef CONFIG_EAP_OTP 639# EAP-OTP 640ifeq ($(CONFIG_EAP_OTP), dyn) 641CFLAGS += -DEAP_OTP_DYNAMIC 642EAPDYN += eap_otp.so 643else 644CFLAGS += -DEAP_OTP 645OBJS += ../src/eap_peer/eap_otp.o 646endif 647CONFIG_IEEE8021X_EAPOL=y 648endif 649 650ifdef CONFIG_EAP_SIM 651# EAP-SIM 652ifeq ($(CONFIG_EAP_SIM), dyn) 653CFLAGS += -DEAP_SIM_DYNAMIC 654EAPDYN += eap_sim.so 655else 656CFLAGS += -DEAP_SIM 657OBJS += ../src/eap_peer/eap_sim.o 658endif 659CONFIG_IEEE8021X_EAPOL=y 660CONFIG_EAP_SIM_COMMON=y 661NEED_AES_CBC=y 662endif 663 664ifdef CONFIG_EAP_LEAP 665# EAP-LEAP 666ifeq ($(CONFIG_EAP_LEAP), dyn) 667CFLAGS += -DEAP_LEAP_DYNAMIC 668EAPDYN += eap_leap.so 669else 670CFLAGS += -DEAP_LEAP 671OBJS += ../src/eap_peer/eap_leap.o 672endif 673MS_FUNCS=y 674CONFIG_IEEE8021X_EAPOL=y 675endif 676 677ifdef CONFIG_EAP_PSK 678# EAP-PSK 679SRC_EAP_PSK = ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c 680ifeq ($(CONFIG_EAP_PSK), dyn) 681CFLAGS += -DEAP_PSK_DYNAMIC 682EAPDYN += eap_psk.so 683else 684CFLAGS += -DEAP_PSK 685OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PSK)) 686endif 687CONFIG_IEEE8021X_EAPOL=y 688NEED_AES=y 689NEED_AES_ENCBLOCK=y 690NEED_AES_EAX=y 691endif 692 693ifdef CONFIG_EAP_AKA 694# EAP-AKA 695ifeq ($(CONFIG_EAP_AKA), dyn) 696CFLAGS += -DEAP_AKA_DYNAMIC 697EAPDYN += eap_aka.so 698else 699CFLAGS += -DEAP_AKA 700OBJS += ../src/eap_peer/eap_aka.o 701endif 702CONFIG_IEEE8021X_EAPOL=y 703CONFIG_EAP_SIM_COMMON=y 704NEED_AES_CBC=y 705endif 706 707ifdef CONFIG_EAP_PROXY 708CFLAGS += -DCONFIG_EAP_PROXY 709OBJS += ../src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).o 710include eap_proxy_$(CONFIG_EAP_PROXY).mak 711CONFIG_IEEE8021X_EAPOL=y 712endif 713 714ifdef CONFIG_EAP_AKA_PRIME 715# EAP-AKA' 716ifeq ($(CONFIG_EAP_AKA_PRIME), dyn) 717CFLAGS += -DEAP_AKA_PRIME_DYNAMIC 718else 719CFLAGS += -DEAP_AKA_PRIME 720endif 721endif 722 723ifdef CONFIG_EAP_SIM_COMMON 724OBJS += ../src/eap_common/eap_sim_common.o 725NEED_AES=y 726NEED_FIPS186_2_PRF=y 727endif 728 729ifdef CONFIG_EAP_FAST 730# EAP-FAST 731SRC_EAP_FAST = ../src/eap_peer/eap_fast.c ../src/eap_peer/eap_fast_pac.c 732SRC_EAP_FAST += ../src/eap_common/eap_fast_common.c 733ifeq ($(CONFIG_EAP_FAST), dyn) 734CFLAGS += -DEAP_FAST_DYNAMIC 735EAPDYN += eap_fast.so 736else 737CFLAGS += -DEAP_FAST 738OBJS += $(patsubst %.c, %.o, $(SRC_EAP_FAST)) 739endif 740TLS_FUNCS=y 741CONFIG_IEEE8021X_EAPOL=y 742NEED_T_PRF=y 743endif 744 745ifdef CONFIG_EAP_TEAP 746# EAP-TEAP 747SRC_EAP_TEAP = ../src/eap_peer/eap_teap.c ../src/eap_peer/eap_teap_pac.c 748SRC_EAP_TEAP += ../src/eap_common/eap_teap_common.c 749ifeq ($(CONFIG_EAP_TEAP), dyn) 750CFLAGS += -DEAP_TEAP_DYNAMIC 751EAPDYN += eap_teap.so 752else 753CFLAGS += -DEAP_TEAP 754OBJS += $(patsubst %.c, %.o, $(SRC_EAP_TEAP)) 755endif 756TLS_FUNCS=y 757CONFIG_IEEE8021X_EAPOL=y 758NEED_T_PRF=y 759NEED_SHA384=y 760NEED_TLS_PRF_SHA256=y 761NEED_TLS_PRF_SHA384=y 762endif 763 764ifdef CONFIG_EAP_PAX 765# EAP-PAX 766SRC_EAP_PAX = ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c 767ifeq ($(CONFIG_EAP_PAX), dyn) 768CFLAGS += -DEAP_PAX_DYNAMIC 769EAPDYN += eap_pax.so 770else 771CFLAGS += -DEAP_PAX 772OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PAX)) 773endif 774CONFIG_IEEE8021X_EAPOL=y 775endif 776 777ifdef CONFIG_EAP_SAKE 778# EAP-SAKE 779SRC_EAP_SAKE = ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c 780ifeq ($(CONFIG_EAP_SAKE), dyn) 781CFLAGS += -DEAP_SAKE_DYNAMIC 782EAPDYN += eap_sake.so 783else 784CFLAGS += -DEAP_SAKE 785OBJS += $(patsubst %.c, %.o, $(SRC_EAP_SAKE)) 786endif 787CONFIG_IEEE8021X_EAPOL=y 788endif 789 790ifdef CONFIG_EAP_GPSK 791# EAP-GPSK 792SRC_EAP_GPSK = ../src/eap_peer/eap_gpsk.c ../src/eap_common/eap_gpsk_common.c 793ifeq ($(CONFIG_EAP_GPSK), dyn) 794CFLAGS += -DEAP_GPSK_DYNAMIC 795EAPDYN += eap_gpsk.so 796else 797CFLAGS += -DEAP_GPSK 798OBJS += $(patsubst %.c, %.o, $(SRC_EAP_GPSK)) 799endif 800CONFIG_IEEE8021X_EAPOL=y 801ifdef CONFIG_EAP_GPSK_SHA256 802CFLAGS += -DEAP_GPSK_SHA256 803endif 804endif 805 806ifdef CONFIG_EAP_PWD 807CFLAGS += -DEAP_PWD 808ifeq ($(CONFIG_TLS), wolfssl) 809CFLAGS += -DCONFIG_ECC 810endif 811OBJS += ../src/eap_peer/eap_pwd.o ../src/eap_common/eap_pwd_common.o 812CONFIG_IEEE8021X_EAPOL=y 813NEED_ECC=y 814NEED_DRAGONFLY=y 815endif 816 817ifdef CONFIG_EAP_EKE 818# EAP-EKE 819SRC_EAP_EKE = ../src/eap_peer/eap_eke.c ../src/eap_common/eap_eke_common.c 820ifeq ($(CONFIG_EAP_EKE), dyn) 821CFLAGS += -DEAP_EKE_DYNAMIC 822EAPDYN += eap_eke.so 823else 824CFLAGS += -DEAP_EKE 825OBJS += $(patsubst %.c, %.o, $(SRC_EAP_EKE)) 826endif 827CONFIG_IEEE8021X_EAPOL=y 828NEED_DH_GROUPS=y 829NEED_DH_GROUPS_ALL=y 830NEED_AES_CBC=y 831endif 832 833ifdef CONFIG_WPS 834# EAP-WSC 835CFLAGS += -DCONFIG_WPS -DEAP_WSC 836OBJS += wps_supplicant.o 837OBJS += ../src/utils/uuid.o 838OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o 839OBJS += ../src/wps/wps.o 840OBJS += ../src/wps/wps_common.o 841OBJS += ../src/wps/wps_attr_parse.o 842OBJS += ../src/wps/wps_attr_build.o 843OBJS += ../src/wps/wps_attr_process.o 844OBJS += ../src/wps/wps_dev_attr.o 845OBJS += ../src/wps/wps_enrollee.o 846OBJS += ../src/wps/wps_registrar.o 847CONFIG_IEEE8021X_EAPOL=y 848NEED_DH_GROUPS=y 849NEED_BASE64=y 850NEED_AES_CBC=y 851NEED_MODEXP=y 852 853ifdef CONFIG_WPS_NFC 854CFLAGS += -DCONFIG_WPS_NFC 855OBJS += ../src/wps/ndef.o 856NEED_WPS_OOB=y 857endif 858 859ifdef NEED_WPS_OOB 860CFLAGS += -DCONFIG_WPS_OOB 861endif 862 863ifdef CONFIG_WPS_ER 864CONFIG_WPS_UPNP=y 865CFLAGS += -DCONFIG_WPS_ER 866OBJS += ../src/wps/wps_er.o 867OBJS += ../src/wps/wps_er_ssdp.o 868endif 869 870ifdef CONFIG_WPS_UPNP 871CFLAGS += -DCONFIG_WPS_UPNP 872OBJS += ../src/wps/wps_upnp.o 873OBJS += ../src/wps/wps_upnp_ssdp.o 874OBJS += ../src/wps/wps_upnp_web.o 875OBJS += ../src/wps/wps_upnp_event.o 876OBJS += ../src/wps/wps_upnp_ap.o 877OBJS += ../src/wps/upnp_xml.o 878OBJS += ../src/wps/httpread.o 879OBJS += ../src/wps/http_client.o 880OBJS += ../src/wps/http_server.o 881endif 882 883ifdef CONFIG_WPS_STRICT 884CFLAGS += -DCONFIG_WPS_STRICT 885OBJS += ../src/wps/wps_validate.o 886endif 887 888ifdef CONFIG_WPS_TESTING 889CFLAGS += -DCONFIG_WPS_TESTING 890endif 891 892ifdef CONFIG_WPS_REG_DISABLE_OPEN 893CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN 894endif 895 896endif 897 898ifdef CONFIG_EAP_IKEV2 899# EAP-IKEv2 900SRC_EAP_IKEV2 = ../src/eap_peer/eap_ikev2.c 901SRC_EAP_IKEV2 += ../src/eap_peer/ikev2.c 902SRC_EAP_IKEV2 += ../src/eap_common/eap_ikev2_common.c 903SRC_EAP_IKEV2 += ../src/eap_common/ikev2_common.c 904ifeq ($(CONFIG_EAP_IKEV2), dyn) 905CFLAGS += -DEAP_IKEV2_DYNAMIC 906EAPDYN += eap_ikev2.so 907else 908CFLAGS += -DEAP_IKEV2 909OBJS += $(patsubst %.c, %.o, $(SRC_EAP_IKEV2)) 910endif 911CONFIG_IEEE8021X_EAPOL=y 912NEED_DH_GROUPS=y 913NEED_DH_GROUPS_ALL=y 914NEED_MODEXP=y 915NEED_CIPHER=y 916endif 917 918ifdef CONFIG_EAP_VENDOR_TEST 919ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn) 920CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC 921EAPDYN += eap_vendor_test.so 922else 923CFLAGS += -DEAP_VENDOR_TEST 924OBJS += ../src/eap_peer/eap_vendor_test.o 925endif 926CONFIG_IEEE8021X_EAPOL=y 927endif 928 929ifdef CONFIG_EAP_TNC 930# EAP-TNC 931CFLAGS += -DEAP_TNC 932OBJS += ../src/eap_peer/eap_tnc.o 933OBJS += ../src/eap_peer/tncc.o 934NEED_BASE64=y 935ifndef CONFIG_NATIVE_WINDOWS 936ifndef CONFIG_DRIVER_BSD 937LIBS += -ldl 938endif 939endif 940endif 941 942ifdef CONFIG_MACSEC 943CFLAGS += -DCONFIG_MACSEC 944CONFIG_IEEE8021X_EAPOL=y 945NEED_AES_ENCBLOCK=y 946NEED_AES_UNWRAP=y 947NEED_AES_WRAP=y 948OBJS += wpas_kay.o 949OBJS += ../src/pae/ieee802_1x_cp.o 950OBJS += ../src/pae/ieee802_1x_kay.o 951OBJS += ../src/pae/ieee802_1x_key.o 952OBJS += ../src/pae/ieee802_1x_secy_ops.o 953ifdef CONFIG_AP 954OBJS += ../src/ap/wpa_auth_kay.o 955endif 956endif 957 958ifdef CONFIG_IEEE8021X_EAPOL 959# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication) 960CFLAGS += -DIEEE8021X_EAPOL 961OBJS += ../src/eapol_supp/eapol_supp_sm.o 962OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o 963NEED_EAP_COMMON=y 964ifdef CONFIG_DYNAMIC_EAP_METHODS 965CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS 966LIBS += -ldl -rdynamic 967endif 968endif 969 970ifdef CONFIG_AP 971NEED_EAP_COMMON=y 972NEED_RSN_AUTHENTICATOR=y 973CFLAGS += -DCONFIG_AP 974OBJS += ap.o 975CFLAGS += -DCONFIG_NO_RADIUS 976CFLAGS += -DCONFIG_NO_ACCOUNTING 977CFLAGS += -DCONFIG_NO_VLAN 978OBJS += ../src/ap/hostapd.o 979OBJS += ../src/ap/wpa_auth_glue.o 980OBJS += ../src/ap/utils.o 981OBJS += ../src/ap/authsrv.o 982OBJS += ../src/ap/ap_config.o 983OBJS += ../src/ap/sta_info.o 984OBJS += ../src/ap/tkip_countermeasures.o 985OBJS += ../src/ap/ap_mlme.o 986OBJS += ../src/ap/ieee802_1x.o 987OBJS += ../src/eapol_auth/eapol_auth_sm.o 988OBJS += ../src/ap/ieee802_11_auth.o 989OBJS += ../src/ap/ieee802_11_shared.o 990OBJS += ../src/ap/drv_callbacks.o 991OBJS += ../src/ap/ap_drv_ops.o 992OBJS += ../src/ap/beacon.o 993OBJS += ../src/ap/bss_load.o 994OBJS += ../src/ap/eap_user_db.o 995OBJS += ../src/ap/neighbor_db.o 996OBJS += ../src/ap/rrm.o 997OBJS += ../src/ap/ieee802_11_ht.o 998ifdef CONFIG_IEEE80211AC 999OBJS += ../src/ap/ieee802_11_vht.o 1000endif 1001ifdef CONFIG_IEEE80211AX 1002OBJS += ../src/ap/ieee802_11_he.o 1003endif 1004ifdef CONFIG_WNM_AP 1005CFLAGS += -DCONFIG_WNM_AP 1006OBJS += ../src/ap/wnm_ap.o 1007endif 1008ifdef CONFIG_MBO 1009OBJS += ../src/ap/mbo_ap.o 1010endif 1011ifdef CONFIG_FILS 1012OBJS += ../src/ap/fils_hlp.o 1013endif 1014ifdef CONFIG_CTRL_IFACE 1015OBJS += ../src/ap/ctrl_iface_ap.o 1016endif 1017 1018CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY 1019OBJS += ../src/eap_server/eap_server.o 1020OBJS += ../src/eap_server/eap_server_identity.o 1021OBJS += ../src/eap_server/eap_server_methods.o 1022 1023ifdef CONFIG_IEEE80211AC 1024CFLAGS += -DCONFIG_IEEE80211AC 1025endif 1026ifdef CONFIG_IEEE80211AX 1027CFLAGS += -DCONFIG_IEEE80211AX 1028endif 1029 1030ifdef NEED_AP_MLME 1031OBJS += ../src/ap/wmm.o 1032OBJS += ../src/ap/ap_list.o 1033OBJS += ../src/ap/ieee802_11.o 1034OBJS += ../src/ap/hw_features.o 1035OBJS += ../src/ap/dfs.o 1036CFLAGS += -DNEED_AP_MLME 1037endif 1038ifdef CONFIG_WPS 1039CFLAGS += -DEAP_SERVER_WSC 1040OBJS += ../src/ap/wps_hostapd.o 1041OBJS += ../src/eap_server/eap_server_wsc.o 1042endif 1043ifdef CONFIG_DPP 1044OBJS += ../src/ap/dpp_hostapd.o 1045OBJS += ../src/ap/gas_query_ap.o 1046NEED_AP_GAS_SERV=y 1047endif 1048ifdef CONFIG_INTERWORKING 1049NEED_AP_GAS_SERV=y 1050endif 1051ifdef NEED_AP_GAS_SERV 1052OBJS += ../src/ap/gas_serv.o 1053endif 1054ifdef CONFIG_HS20 1055OBJS += ../src/ap/hs20.o 1056endif 1057endif 1058 1059ifdef CONFIG_MBO 1060OBJS += mbo.o 1061CFLAGS += -DCONFIG_MBO 1062endif 1063 1064ifdef NEED_RSN_AUTHENTICATOR 1065CFLAGS += -DCONFIG_NO_RADIUS 1066NEED_AES_WRAP=y 1067OBJS += ../src/ap/wpa_auth.o 1068OBJS += ../src/ap/wpa_auth_ie.o 1069OBJS += ../src/ap/pmksa_cache_auth.o 1070endif 1071 1072ifdef CONFIG_ACS 1073CFLAGS += -DCONFIG_ACS 1074OBJS += ../src/ap/acs.o 1075LIBS += -lm 1076endif 1077 1078ifdef CONFIG_PCSC 1079# PC/SC interface for smartcards (USIM, GSM SIM) 1080CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC 1081OBJS += ../src/utils/pcsc_funcs.o 1082ifdef CONFIG_NATIVE_WINDOWS 1083#Once MinGW gets support for WinScard, -lwinscard could be used instead of the 1084#dynamic symbol loading that is now used in pcsc_funcs.c 1085#LIBS += -lwinscard 1086else 1087ifdef CONFIG_OSX 1088LIBS += -framework PCSC 1089else 1090LIBS += $(shell $(PKG_CONFIG) --libs libpcsclite) 1091endif 1092endif 1093endif 1094 1095ifdef CONFIG_SIM_SIMULATOR 1096CFLAGS += -DCONFIG_SIM_SIMULATOR 1097NEED_MILENAGE=y 1098endif 1099 1100ifdef CONFIG_USIM_SIMULATOR 1101CFLAGS += -DCONFIG_USIM_SIMULATOR 1102NEED_MILENAGE=y 1103endif 1104 1105ifdef NEED_MILENAGE 1106OBJS += ../src/crypto/milenage.o 1107NEED_AES_ENCBLOCK=y 1108endif 1109 1110ifdef CONFIG_PKCS12 1111CFLAGS += -DPKCS12_FUNCS 1112endif 1113 1114ifdef CONFIG_SMARTCARD 1115CFLAGS += -DCONFIG_SMARTCARD 1116endif 1117 1118ifdef NEED_DRAGONFLY 1119OBJS += ../src/common/dragonfly.o 1120endif 1121 1122ifdef MS_FUNCS 1123OBJS += ../src/crypto/ms_funcs.o 1124NEED_DES=y 1125NEED_MD4=y 1126endif 1127 1128ifdef CHAP 1129OBJS += ../src/eap_common/chap.o 1130endif 1131 1132ifdef TLS_FUNCS 1133NEED_DES=y 1134# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, EAP_FAST, and 1135# EAP_TEAP) 1136OBJS += ../src/eap_peer/eap_tls_common.o 1137ifndef CONFIG_FIPS 1138NEED_TLS_PRF=y 1139NEED_SHA1=y 1140NEED_MD5=y 1141endif 1142endif 1143 1144ifndef CONFIG_TLS 1145CONFIG_TLS=openssl 1146endif 1147 1148ifdef CONFIG_TLSV11 1149CFLAGS += -DCONFIG_TLSV11 1150endif 1151 1152ifdef CONFIG_TLSV12 1153CFLAGS += -DCONFIG_TLSV12 1154endif 1155 1156ifeq ($(CONFIG_TLS), wolfssl) 1157ifdef TLS_FUNCS 1158CFLAGS += -DWOLFSSL_DER_LOAD 1159OBJS += ../src/crypto/tls_wolfssl.o 1160endif 1161OBJS += ../src/crypto/crypto_wolfssl.o 1162OBJS_p += ../src/crypto/crypto_wolfssl.o 1163ifdef NEED_FIPS186_2_PRF 1164OBJS += ../src/crypto/fips_prf_wolfssl.o 1165endif 1166NEED_TLS_PRF_SHA256=y 1167LIBS += -lwolfssl -lm 1168LIBS_p += -lwolfssl -lm 1169endif 1170 1171ifeq ($(CONFIG_TLS), openssl) 1172ifdef TLS_FUNCS 1173CFLAGS += -DEAP_TLS_OPENSSL 1174OBJS += ../src/crypto/tls_openssl.o 1175OBJS += ../src/crypto/tls_openssl_ocsp.o 1176LIBS += -lssl 1177endif 1178OBJS += ../src/crypto/crypto_openssl.o 1179OBJS_p += ../src/crypto/crypto_openssl.o 1180OBJS_priv += ../src/crypto/crypto_openssl.o 1181ifdef NEED_FIPS186_2_PRF 1182OBJS += ../src/crypto/fips_prf_openssl.o 1183endif 1184NEED_TLS_PRF_SHA256=y 1185LIBS += -lcrypto 1186LIBS_p += -lcrypto 1187ifdef CONFIG_TLS_ADD_DL 1188LIBS += -ldl 1189LIBS_p += -ldl 1190endif 1191ifndef CONFIG_TLS_DEFAULT_CIPHERS 1192CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW" 1193endif 1194CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\" 1195endif 1196 1197ifeq ($(CONFIG_TLS), gnutls) 1198ifndef CONFIG_CRYPTO 1199# default to libgcrypt 1200CONFIG_CRYPTO=gnutls 1201endif 1202ifdef TLS_FUNCS 1203OBJS += ../src/crypto/tls_gnutls.o 1204LIBS += -lgnutls -lgpg-error 1205endif 1206OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1207OBJS_p += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1208OBJS_priv += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1209ifdef NEED_FIPS186_2_PRF 1210OBJS += ../src/crypto/fips_prf_internal.o 1211SHA1OBJS += ../src/crypto/sha1-internal.o 1212endif 1213ifeq ($(CONFIG_CRYPTO), gnutls) 1214LIBS += -lgcrypt 1215LIBS_p += -lgcrypt 1216CONFIG_INTERNAL_RC4=y 1217CONFIG_INTERNAL_DH_GROUP5=y 1218endif 1219ifeq ($(CONFIG_CRYPTO), nettle) 1220LIBS += -lnettle -lgmp 1221LIBS_p += -lnettle -lgmp 1222CONFIG_INTERNAL_RC4=y 1223CONFIG_INTERNAL_DH_GROUP5=y 1224endif 1225endif 1226 1227ifeq ($(CONFIG_TLS), internal) 1228ifndef CONFIG_CRYPTO 1229CONFIG_CRYPTO=internal 1230endif 1231ifdef TLS_FUNCS 1232OBJS += ../src/crypto/crypto_internal-rsa.o 1233OBJS += ../src/crypto/tls_internal.o 1234OBJS += ../src/tls/tlsv1_common.o 1235OBJS += ../src/tls/tlsv1_record.o 1236OBJS += ../src/tls/tlsv1_cred.o 1237OBJS += ../src/tls/tlsv1_client.o 1238OBJS += ../src/tls/tlsv1_client_write.o 1239OBJS += ../src/tls/tlsv1_client_read.o 1240OBJS += ../src/tls/tlsv1_client_ocsp.o 1241OBJS += ../src/tls/rsa.o 1242OBJS += ../src/tls/x509v3.o 1243OBJS += ../src/tls/pkcs1.o 1244OBJS += ../src/tls/pkcs5.o 1245OBJS += ../src/tls/pkcs8.o 1246NEED_ASN1=y 1247NEED_BASE64=y 1248NEED_TLS_PRF=y 1249ifdef CONFIG_TLSV12 1250NEED_TLS_PRF_SHA256=y 1251endif 1252NEED_MODEXP=y 1253NEED_CIPHER=y 1254CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT 1255endif 1256ifdef NEED_CIPHER 1257NEED_DES=y 1258OBJS += ../src/crypto/crypto_internal-cipher.o 1259endif 1260ifdef NEED_MODEXP 1261OBJS += ../src/crypto/crypto_internal-modexp.o 1262OBJS += ../src/tls/bignum.o 1263endif 1264ifeq ($(CONFIG_CRYPTO), libtomcrypt) 1265OBJS += ../src/crypto/crypto_libtomcrypt.o 1266OBJS_p += ../src/crypto/crypto_libtomcrypt.o 1267LIBS += -ltomcrypt -ltfm 1268LIBS_p += -ltomcrypt -ltfm 1269CONFIG_INTERNAL_SHA256=y 1270CONFIG_INTERNAL_RC4=y 1271CONFIG_INTERNAL_DH_GROUP5=y 1272endif 1273ifeq ($(CONFIG_CRYPTO), internal) 1274OBJS += ../src/crypto/crypto_internal.o 1275OBJS_p += ../src/crypto/crypto_internal.o 1276NEED_AES_ENC=y 1277CFLAGS += -DCONFIG_CRYPTO_INTERNAL 1278ifdef CONFIG_INTERNAL_LIBTOMMATH 1279CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 1280ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 1281CFLAGS += -DLTM_FAST 1282endif 1283else 1284LIBS += -ltommath 1285LIBS_p += -ltommath 1286endif 1287CONFIG_INTERNAL_AES=y 1288CONFIG_INTERNAL_DES=y 1289CONFIG_INTERNAL_SHA1=y 1290CONFIG_INTERNAL_MD4=y 1291CONFIG_INTERNAL_MD5=y 1292CONFIG_INTERNAL_SHA256=y 1293CONFIG_INTERNAL_SHA384=y 1294CONFIG_INTERNAL_SHA512=y 1295CONFIG_INTERNAL_RC4=y 1296CONFIG_INTERNAL_DH_GROUP5=y 1297endif 1298ifeq ($(CONFIG_CRYPTO), cryptoapi) 1299OBJS += ../src/crypto/crypto_cryptoapi.o 1300OBJS_p += ../src/crypto/crypto_cryptoapi.o 1301CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 1302CONFIG_INTERNAL_SHA256=y 1303CONFIG_INTERNAL_RC4=y 1304endif 1305endif 1306 1307ifeq ($(CONFIG_TLS), linux) 1308OBJS += ../src/crypto/crypto_linux.o 1309OBJS_p += ../src/crypto/crypto_linux.o 1310ifdef TLS_FUNCS 1311OBJS += ../src/crypto/crypto_internal-rsa.o 1312OBJS += ../src/crypto/tls_internal.o 1313OBJS += ../src/tls/tlsv1_common.o 1314OBJS += ../src/tls/tlsv1_record.o 1315OBJS += ../src/tls/tlsv1_cred.o 1316OBJS += ../src/tls/tlsv1_client.o 1317OBJS += ../src/tls/tlsv1_client_write.o 1318OBJS += ../src/tls/tlsv1_client_read.o 1319OBJS += ../src/tls/tlsv1_client_ocsp.o 1320OBJS += ../src/tls/rsa.o 1321OBJS += ../src/tls/x509v3.o 1322OBJS += ../src/tls/pkcs1.o 1323OBJS += ../src/tls/pkcs5.o 1324OBJS += ../src/tls/pkcs8.o 1325NEED_ASN1=y 1326NEED_BASE64=y 1327NEED_TLS_PRF=y 1328ifdef CONFIG_TLSV12 1329NEED_TLS_PRF_SHA256=y 1330endif 1331NEED_MODEXP=y 1332NEED_CIPHER=y 1333CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT 1334endif 1335ifdef NEED_MODEXP 1336OBJS += ../src/crypto/crypto_internal-modexp.o 1337OBJS += ../src/tls/bignum.o 1338CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 1339CFLAGS += -DLTM_FAST 1340endif 1341CONFIG_INTERNAL_DH_GROUP5=y 1342ifdef NEED_FIPS186_2_PRF 1343OBJS += ../src/crypto/fips_prf_internal.o 1344OBJS += ../src/crypto/sha1-internal.o 1345endif 1346endif 1347 1348ifeq ($(CONFIG_TLS), none) 1349ifdef TLS_FUNCS 1350OBJS += ../src/crypto/tls_none.o 1351CFLAGS += -DEAP_TLS_NONE 1352CONFIG_INTERNAL_AES=y 1353CONFIG_INTERNAL_SHA1=y 1354CONFIG_INTERNAL_MD5=y 1355endif 1356OBJS += ../src/crypto/crypto_none.o 1357OBJS_p += ../src/crypto/crypto_none.o 1358CONFIG_INTERNAL_SHA256=y 1359CONFIG_INTERNAL_RC4=y 1360endif 1361 1362ifdef TLS_FUNCS 1363ifdef CONFIG_SMARTCARD 1364ifndef CONFIG_NATIVE_WINDOWS 1365ifneq ($(CONFIG_L2_PACKET), freebsd) 1366LIBS += -ldl 1367endif 1368endif 1369endif 1370endif 1371 1372ifndef TLS_FUNCS 1373OBJS += ../src/crypto/tls_none.o 1374ifeq ($(CONFIG_TLS), internal) 1375CONFIG_INTERNAL_AES=y 1376CONFIG_INTERNAL_SHA1=y 1377CONFIG_INTERNAL_MD5=y 1378CONFIG_INTERNAL_RC4=y 1379endif 1380endif 1381 1382AESOBJS = # none so far (see below) 1383ifdef CONFIG_INTERNAL_AES 1384AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o 1385endif 1386 1387ifneq ($(CONFIG_TLS), openssl) 1388ifneq ($(CONFIG_TLS), wolfssl) 1389NEED_INTERNAL_AES_WRAP=y 1390endif 1391endif 1392ifdef CONFIG_OPENSSL_INTERNAL_AES_WRAP 1393# Seems to be needed at least with BoringSSL 1394NEED_INTERNAL_AES_WRAP=y 1395CFLAGS += -DCONFIG_OPENSSL_INTERNAL_AES_WRAP 1396endif 1397ifdef CONFIG_FIPS 1398# Have to use internal AES key wrap routines to use OpenSSL EVP since the 1399# OpenSSL AES_wrap_key()/AES_unwrap_key() API is not available in FIPS mode. 1400NEED_INTERNAL_AES_WRAP=y 1401endif 1402 1403ifdef NEED_INTERNAL_AES_WRAP 1404ifneq ($(CONFIG_TLS), linux) 1405AESOBJS += ../src/crypto/aes-unwrap.o 1406endif 1407endif 1408ifdef NEED_AES_EAX 1409AESOBJS += ../src/crypto/aes-eax.o 1410NEED_AES_CTR=y 1411endif 1412ifdef NEED_AES_SIV 1413AESOBJS += ../src/crypto/aes-siv.o 1414NEED_AES_CTR=y 1415endif 1416ifdef NEED_AES_CTR 1417AESOBJS += ../src/crypto/aes-ctr.o 1418endif 1419ifdef NEED_AES_ENCBLOCK 1420AESOBJS += ../src/crypto/aes-encblock.o 1421endif 1422NEED_AES_ENC=y 1423ifdef CONFIG_OPENSSL_CMAC 1424CFLAGS += -DCONFIG_OPENSSL_CMAC 1425else 1426ifneq ($(CONFIG_TLS), linux) 1427ifneq ($(CONFIG_TLS), wolfssl) 1428AESOBJS += ../src/crypto/aes-omac1.o 1429endif 1430endif 1431endif 1432ifdef NEED_AES_WRAP 1433NEED_AES_ENC=y 1434ifdef NEED_INTERNAL_AES_WRAP 1435AESOBJS += ../src/crypto/aes-wrap.o 1436endif 1437endif 1438ifdef NEED_AES_CBC 1439NEED_AES_ENC=y 1440ifneq ($(CONFIG_TLS), openssl) 1441ifneq ($(CONFIG_TLS), linux) 1442ifneq ($(CONFIG_TLS), wolfssl) 1443AESOBJS += ../src/crypto/aes-cbc.o 1444endif 1445endif 1446endif 1447endif 1448ifdef NEED_AES_ENC 1449ifdef CONFIG_INTERNAL_AES 1450AESOBJS += ../src/crypto/aes-internal-enc.o 1451endif 1452endif 1453ifdef NEED_AES 1454OBJS += $(AESOBJS) 1455endif 1456 1457ifdef NEED_SHA1 1458ifneq ($(CONFIG_TLS), openssl) 1459ifneq ($(CONFIG_TLS), linux) 1460ifneq ($(CONFIG_TLS), gnutls) 1461ifneq ($(CONFIG_TLS), wolfssl) 1462SHA1OBJS += ../src/crypto/sha1.o 1463endif 1464endif 1465endif 1466endif 1467SHA1OBJS += ../src/crypto/sha1-prf.o 1468ifdef CONFIG_INTERNAL_SHA1 1469SHA1OBJS += ../src/crypto/sha1-internal.o 1470ifdef NEED_FIPS186_2_PRF 1471SHA1OBJS += ../src/crypto/fips_prf_internal.o 1472endif 1473endif 1474ifdef CONFIG_NO_WPA_PASSPHRASE 1475CFLAGS += -DCONFIG_NO_PBKDF2 1476else 1477ifneq ($(CONFIG_TLS), openssl) 1478ifneq ($(CONFIG_TLS), wolfssl) 1479SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 1480endif 1481endif 1482endif 1483ifdef NEED_T_PRF 1484SHA1OBJS += ../src/crypto/sha1-tprf.o 1485endif 1486ifdef NEED_TLS_PRF 1487SHA1OBJS += ../src/crypto/sha1-tlsprf.o 1488endif 1489endif 1490 1491ifndef CONFIG_FIPS 1492ifneq ($(CONFIG_TLS), openssl) 1493ifneq ($(CONFIG_TLS), linux) 1494ifneq ($(CONFIG_TLS), gnutls) 1495ifneq ($(CONFIG_TLS), wolfssl) 1496MD5OBJS += ../src/crypto/md5.o 1497endif 1498endif 1499endif 1500endif 1501endif 1502ifdef NEED_MD5 1503ifdef CONFIG_INTERNAL_MD5 1504MD5OBJS += ../src/crypto/md5-internal.o 1505endif 1506OBJS += $(MD5OBJS) 1507OBJS_p += $(MD5OBJS) 1508OBJS_priv += $(MD5OBJS) 1509endif 1510 1511ifdef NEED_MD4 1512ifdef CONFIG_INTERNAL_MD4 1513OBJS += ../src/crypto/md4-internal.o 1514endif 1515endif 1516 1517DESOBJS = # none needed when not internal 1518ifdef NEED_DES 1519ifndef CONFIG_FIPS 1520CFLAGS += -DCONFIG_DES 1521endif 1522ifdef CONFIG_INTERNAL_DES 1523DESOBJS += ../src/crypto/des-internal.o 1524endif 1525endif 1526 1527ifdef CONFIG_NO_RC4 1528CFLAGS += -DCONFIG_NO_RC4 1529endif 1530 1531ifdef NEED_RC4 1532ifdef CONFIG_INTERNAL_RC4 1533ifndef CONFIG_NO_RC4 1534OBJS += ../src/crypto/rc4.o 1535endif 1536endif 1537endif 1538 1539SHA256OBJS = # none by default 1540CFLAGS += -DCONFIG_SHA256 1541ifneq ($(CONFIG_TLS), openssl) 1542ifneq ($(CONFIG_TLS), linux) 1543ifneq ($(CONFIG_TLS), gnutls) 1544ifneq ($(CONFIG_TLS), wolfssl) 1545SHA256OBJS += ../src/crypto/sha256.o 1546endif 1547endif 1548endif 1549endif 1550SHA256OBJS += ../src/crypto/sha256-prf.o 1551ifdef CONFIG_INTERNAL_SHA256 1552SHA256OBJS += ../src/crypto/sha256-internal.o 1553endif 1554ifdef CONFIG_INTERNAL_SHA384 1555CFLAGS += -DCONFIG_INTERNAL_SHA384 1556SHA256OBJS += ../src/crypto/sha384-internal.o 1557endif 1558ifdef CONFIG_INTERNAL_SHA512 1559CFLAGS += -DCONFIG_INTERNAL_SHA512 1560SHA256OBJS += ../src/crypto/sha512-internal.o 1561endif 1562ifdef NEED_TLS_PRF_SHA256 1563SHA256OBJS += ../src/crypto/sha256-tlsprf.o 1564endif 1565ifdef NEED_TLS_PRF_SHA384 1566SHA256OBJS += ../src/crypto/sha384-tlsprf.o 1567endif 1568ifdef NEED_HMAC_SHA256_KDF 1569CFLAGS += -DCONFIG_HMAC_SHA256_KDF 1570OBJS += ../src/crypto/sha256-kdf.o 1571endif 1572ifdef NEED_HMAC_SHA384_KDF 1573CFLAGS += -DCONFIG_HMAC_SHA384_KDF 1574OBJS += ../src/crypto/sha384-kdf.o 1575endif 1576ifdef NEED_HMAC_SHA512_KDF 1577CFLAGS += -DCONFIG_HMAC_SHA512_KDF 1578OBJS += ../src/crypto/sha512-kdf.o 1579endif 1580OBJS += $(SHA256OBJS) 1581ifdef NEED_SHA384 1582ifneq ($(CONFIG_TLS), openssl) 1583ifneq ($(CONFIG_TLS), linux) 1584ifneq ($(CONFIG_TLS), gnutls) 1585ifneq ($(CONFIG_TLS), wolfssl) 1586OBJS += ../src/crypto/sha384.o 1587endif 1588endif 1589endif 1590endif 1591CFLAGS += -DCONFIG_SHA384 1592OBJS += ../src/crypto/sha384-prf.o 1593endif 1594ifdef NEED_SHA512 1595ifneq ($(CONFIG_TLS), openssl) 1596ifneq ($(CONFIG_TLS), linux) 1597ifneq ($(CONFIG_TLS), gnutls) 1598ifneq ($(CONFIG_TLS), wolfssl) 1599OBJS += ../src/crypto/sha512.o 1600endif 1601endif 1602endif 1603endif 1604CFLAGS += -DCONFIG_SHA512 1605OBJS += ../src/crypto/sha512-prf.o 1606endif 1607 1608ifdef NEED_ASN1 1609OBJS += ../src/tls/asn1.o 1610endif 1611 1612ifdef NEED_DH_GROUPS 1613OBJS += ../src/crypto/dh_groups.o 1614endif 1615ifdef NEED_DH_GROUPS_ALL 1616CFLAGS += -DALL_DH_GROUPS 1617endif 1618ifdef CONFIG_INTERNAL_DH_GROUP5 1619ifdef NEED_DH_GROUPS 1620OBJS += ../src/crypto/dh_group5.o 1621endif 1622endif 1623 1624ifdef NEED_ECC 1625CFLAGS += -DCONFIG_ECC 1626endif 1627 1628ifdef CONFIG_NO_RANDOM_POOL 1629CFLAGS += -DCONFIG_NO_RANDOM_POOL 1630else 1631ifdef CONFIG_GETRANDOM 1632CFLAGS += -DCONFIG_GETRANDOM 1633endif 1634OBJS += ../src/crypto/random.o 1635endif 1636 1637ifdef CONFIG_CTRL_IFACE 1638ifeq ($(CONFIG_CTRL_IFACE), y) 1639ifdef CONFIG_NATIVE_WINDOWS 1640CONFIG_CTRL_IFACE=named_pipe 1641else 1642CONFIG_CTRL_IFACE=unix 1643endif 1644endif 1645CFLAGS += -DCONFIG_CTRL_IFACE 1646ifeq ($(CONFIG_CTRL_IFACE), unix) 1647CFLAGS += -DCONFIG_CTRL_IFACE_UNIX 1648OBJS += ../src/common/ctrl_iface_common.o 1649endif 1650ifeq ($(CONFIG_CTRL_IFACE), udp) 1651CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1652CFLAGS += -DCONFIG_OPEN_HARMONY_PATCH_LITE 1653endif 1654ifeq ($(CONFIG_CTRL_IFACE), udp6) 1655CONFIG_CTRL_IFACE=udp 1656CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1657CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6 1658endif 1659ifeq ($(CONFIG_CTRL_IFACE), named_pipe) 1660CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE 1661endif 1662ifeq ($(CONFIG_CTRL_IFACE), udp-remote) 1663CONFIG_CTRL_IFACE=udp 1664CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1665CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE 1666endif 1667ifeq ($(CONFIG_CTRL_IFACE), udp6-remote) 1668CONFIG_CTRL_IFACE=udp 1669CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1670CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE 1671CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6 1672endif 1673OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o 1674endif 1675 1676ifdef CONFIG_CTRL_IFACE_DBUS_NEW 1677CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW 1678OBJS += dbus/dbus_dict_helpers.o 1679OBJS += dbus/dbus_new_helpers.o 1680OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o 1681OBJS += dbus/dbus_common.o 1682ifdef CONFIG_WPS 1683OBJS += dbus/dbus_new_handlers_wps.o 1684endif 1685ifdef CONFIG_P2P 1686OBJS += dbus/dbus_new_handlers_p2p.o 1687endif 1688ifndef DBUS_LIBS 1689DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1) 1690endif 1691ifndef DBUS_INCLUDE 1692DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1) 1693endif 1694ifdef CONFIG_CTRL_IFACE_DBUS_INTRO 1695OBJS += dbus/dbus_new_introspect.o 1696CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO 1697endif 1698CFLAGS += $(DBUS_INCLUDE) 1699LIBS += $(DBUS_LIBS) 1700endif 1701 1702ifdef CONFIG_READLINE 1703OBJS_c += ../src/utils/edit_readline.o 1704LIBS_c += -lreadline -lncurses 1705else 1706ifdef CONFIG_WPA_CLI_EDIT 1707OBJS_c += ../src/utils/edit.o 1708else 1709OBJS_c += ../src/utils/edit_simple.o 1710endif 1711endif 1712 1713ifdef CONFIG_NATIVE_WINDOWS 1714CFLAGS += -DCONFIG_NATIVE_WINDOWS 1715LIBS += -lws2_32 -lgdi32 -lcrypt32 1716LIBS_c += -lws2_32 1717LIBS_p += -lws2_32 -lgdi32 1718ifeq ($(CONFIG_CRYPTO), cryptoapi) 1719LIBS_p += -lcrypt32 1720endif 1721endif 1722 1723#ifdef CONFIG_NO_STDOUT_DEBUG 1724ifneq ($(DEBUG), 1) 1725CFLAGS += -DCONFIG_WPA_NO_LOG 1726CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 1727ifndef CONFIG_CTRL_IFACE 1728CFLAGS += -DCONFIG_NO_WPA_MSG 1729endif 1730endif 1731 1732ifdef CONFIG_IPV6 1733# for eapol_test only 1734CFLAGS += -DCONFIG_IPV6 1735endif 1736 1737ifdef CONFIG_NO_LINUX_PACKET_SOCKET_WAR 1738CFLAGS += -DCONFIG_NO_LINUX_PACKET_SOCKET_WAR 1739endif 1740 1741ifdef NEED_BASE64 1742OBJS += ../src/utils/base64.o 1743endif 1744 1745ifdef NEED_SME 1746OBJS += sme.o 1747CFLAGS += -DCONFIG_SME 1748endif 1749 1750OBJS += ../src/common/ieee802_11_common.o 1751OBJS += ../src/common/hw_features_common.o 1752 1753ifdef NEED_EAP_COMMON 1754OBJS += ../src/eap_common/eap_common.o 1755endif 1756 1757ifndef CONFIG_MAIN 1758CONFIG_MAIN=main 1759endif 1760 1761ifdef CONFIG_DEBUG_SYSLOG 1762CFLAGS += -DCONFIG_DEBUG_SYSLOG 1763ifdef CONFIG_DEBUG_SYSLOG_FACILITY 1764CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)" 1765endif 1766endif 1767 1768ifdef CONFIG_DEBUG_LINUX_TRACING 1769CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING 1770endif 1771 1772ifdef CONFIG_DEBUG_FILE 1773CFLAGS += -DCONFIG_DEBUG_FILE 1774endif 1775 1776ifdef CONFIG_DELAYED_MIC_ERROR_REPORT 1777CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT 1778endif 1779 1780ifdef CONFIG_FIPS 1781CFLAGS += -DCONFIG_FIPS 1782ifneq ($(CONFIG_TLS), openssl) 1783ifneq ($(CONFIG_TLS), wolfssl) 1784$(error CONFIG_FIPS=y requires CONFIG_TLS=openssl) 1785endif 1786endif 1787endif 1788 1789OBJS += $(SHA1OBJS) $(DESOBJS) 1790 1791OBJS_p += $(SHA1OBJS) 1792OBJS_p += $(SHA256OBJS) 1793OBJS_priv += $(SHA1OBJS) 1794 1795ifdef CONFIG_BGSCAN_SIMPLE 1796CFLAGS += -DCONFIG_BGSCAN_SIMPLE 1797OBJS += bgscan_simple.o 1798NEED_BGSCAN=y 1799endif 1800 1801ifdef CONFIG_BGSCAN_LEARN 1802CFLAGS += -DCONFIG_BGSCAN_LEARN 1803OBJS += bgscan_learn.o 1804NEED_BGSCAN=y 1805endif 1806 1807ifdef NEED_BGSCAN 1808CFLAGS += -DCONFIG_BGSCAN 1809OBJS += bgscan.o 1810endif 1811 1812ifdef CONFIG_AUTOSCAN_EXPONENTIAL 1813CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL 1814OBJS += autoscan_exponential.o 1815NEED_AUTOSCAN=y 1816endif 1817 1818ifdef CONFIG_AUTOSCAN_PERIODIC 1819CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC 1820OBJS += autoscan_periodic.o 1821NEED_AUTOSCAN=y 1822endif 1823 1824ifdef NEED_AUTOSCAN 1825CFLAGS += -DCONFIG_AUTOSCAN 1826OBJS += autoscan.o 1827endif 1828 1829ifdef CONFIG_EXT_PASSWORD_TEST 1830OBJS += ../src/utils/ext_password_test.o 1831CFLAGS += -DCONFIG_EXT_PASSWORD_TEST 1832NEED_EXT_PASSWORD=y 1833endif 1834 1835ifdef CONFIG_EXT_PASSWORD_FILE 1836OBJS += ../src/utils/ext_password_file.o 1837CFLAGS += -DCONFIG_EXT_PASSWORD_FILE 1838NEED_EXT_PASSWORD=y 1839endif 1840 1841ifdef NEED_EXT_PASSWORD 1842OBJS += ../src/utils/ext_password.o 1843CFLAGS += -DCONFIG_EXT_PASSWORD 1844endif 1845 1846ifdef NEED_GAS_SERVER 1847OBJS += ../src/common/gas_server.o 1848CFLAGS += -DCONFIG_GAS_SERVER 1849NEED_GAS=y 1850endif 1851 1852ifdef NEED_GAS 1853OBJS += ../src/common/gas.o 1854OBJS += gas_query.o 1855CFLAGS += -DCONFIG_GAS 1856NEED_OFFCHANNEL=y 1857endif 1858 1859ifdef NEED_OFFCHANNEL 1860OBJS += offchannel.o 1861CFLAGS += -DCONFIG_OFFCHANNEL 1862endif 1863 1864ifdef NEED_JSON 1865OBJS += ../src/utils/json.o 1866CFLAGS += -DCONFIG_JSON 1867endif 1868 1869ifdef CONFIG_MODULE_TESTS 1870CFLAGS += -DCONFIG_MODULE_TESTS 1871OBJS += wpas_module_tests.o 1872OBJS += ../src/utils/utils_module_tests.o 1873OBJS += ../src/common/common_module_tests.o 1874OBJS += ../src/crypto/crypto_module_tests.o 1875ifdef CONFIG_WPS 1876OBJS += ../src/wps/wps_module_tests.o 1877endif 1878endif 1879 1880OBJS += ../src/drivers/driver_common.o 1881OBJS_priv += ../src/drivers/driver_common.o 1882 1883OBJS += wpa_supplicant.o events.o bssid_ignore.o wpas_glue.o scan.o 1884OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o 1885OBJS_t += ../src/radius/radius_client.o 1886OBJS_t += ../src/radius/radius.o 1887OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o 1888 1889OBJS_nfc := $(OBJS) $(OBJS_l2) nfc_pw_token.o 1890OBJS_nfc += $(OBJS_d) ../src/drivers/drivers.o 1891 1892OBJS += $(CONFIG_MAIN).o 1893 1894ifdef CONFIG_PRIVSEP 1895OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o 1896OBJS_priv += $(OBJS_l2) 1897OBJS_priv += ../src/utils/os_$(CONFIG_OS).o 1898OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o 1899OBJS_priv += ../src/utils/common.o 1900OBJS_priv += ../src/utils/wpa_debug.o 1901OBJS_priv += ../src/utils/wpabuf.o 1902OBJS_priv += wpa_priv.o 1903ifdef CONFIG_DRIVER_NL80211 1904OBJS_priv += ../src/common/ieee802_11_common.o 1905endif 1906OBJS += ../src/l2_packet/l2_packet_privsep.o 1907OBJS += ../src/drivers/driver_privsep.o 1908EXTRA_progs += wpa_priv 1909else 1910OBJS += $(OBJS_d) ../src/drivers/drivers.o 1911OBJS += $(OBJS_l2) 1912endif 1913 1914ifdef CONFIG_NDIS_EVENTS_INTEGRATED 1915CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED 1916OBJS += ../src/drivers/ndis_events.o 1917EXTRALIBS += -loleaut32 -lole32 -luuid 1918ifdef PLATFORMSDKLIB 1919EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib 1920else 1921EXTRALIBS += WbemUuid.Lib 1922endif 1923endif 1924 1925ifdef CONFIG_FST 1926CFLAGS += -DCONFIG_FST 1927ifdef CONFIG_FST_TEST 1928CFLAGS += -DCONFIG_FST_TEST 1929endif 1930FST_OBJS += ../src/fst/fst.o 1931FST_OBJS += ../src/fst/fst_session.o 1932FST_OBJS += ../src/fst/fst_iface.o 1933FST_OBJS += ../src/fst/fst_group.o 1934FST_OBJS += ../src/fst/fst_ctrl_aux.o 1935ifdef CONFIG_CTRL_IFACE 1936FST_OBJS += ../src/fst/fst_ctrl_iface.o 1937endif 1938OBJS += $(FST_OBJS) 1939OBJS_t += $(FST_OBJS) 1940OBJS_t2 += $(FST_OBJS) 1941OBJS_nfc += $(FST_OBJS) 1942endif 1943 1944ifdef CONFIG_WEP 1945CFLAGS += -DCONFIG_WEP 1946endif 1947 1948ifdef CONFIG_NO_TKIP 1949CFLAGS += -DCONFIG_NO_TKIP 1950endif 1951 1952dynamic_eap_methods: $(EAPDYN) 1953 1954_OBJS_VAR := OBJS_priv 1955include ../src/objs.mk 1956wpa_priv: $(BCHECK) $(OBJS_priv) 1957 $(Q)$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS) 1958 @$(E) " LD " $@ 1959 1960_OBJS_VAR := OBJS 1961include ../src/objs.mk 1962$(COPY_OBJS): $(OBJS) 1963 cp $(OBJS) ../build/objs > /dev/null 2>&1 1964 1965#wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs) 1966# $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) -lm -lpthread 1967# @$(E) " LD " $@ 1968 1969eapol_test: $(OBJS_t) 1970 $(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS) 1971 @$(E) " LD " $@ 1972 1973_OBJS_VAR := OBJS_t2 1974include ../src/objs.mk 1975preauth_test: $(OBJS_t2) 1976 $(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS) 1977 @$(E) " LD " $@ 1978 1979_OBJS_VAR := OBJS_p 1980include ../src/objs.mk 1981wpa_passphrase: $(OBJS_p) 1982 $(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) $(LIBS) 1983 @$(E) " LD " $@ 1984 1985_OBJS_VAR := OBJS_c 1986include ../src/objs.mk 1987wpa_cli: $(OBJS_c) 1988 $(Q)$(LDO) --static $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c) 1989 @$(E) " LD " $@ 1990 1991LIBCTRL += ../src/common/wpa_ctrl.o 1992LIBCTRL += ../src/utils/os_$(CONFIG_OS).o 1993LIBCTRL += ../src/utils/common.o 1994LIBCTRL += ../src/utils/wpa_debug.o 1995LIBCTRLSO += ../src/common/wpa_ctrl.c 1996LIBCTRLSO += ../src/utils/os_$(CONFIG_OS).c 1997LIBCTRLSO += ../src/utils/common.c 1998LIBCTRLSO += ../src/utils/wpa_debug.c 1999 2000ifeq ($(LIB_TYPE), 0) 2001OBJS += ../src/common/wpa_ctrl.o 2002OBJS += ../src/utils/os_$(CONFIG_OS).o 2003OBJS += ../src/utils/common.o 2004OBJS += ../src/utils/wpa_debug.o 2005endif 2006 2007libwpa_client.a: $(LIBCTRL) 2008 $(Q)rm -f $@ 2009 $(Q)$(AR) crs $@ $? 2010 @$(E) " AR " $@ 2011 cp $@ ../build 2012 2013libwpa_client.so: $(LIBCTRLSO) 2014 @$(E) " CC $@ ($^)" 2015 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -fPIC $^ 2016 cp $@ ../build 2017 2018OBJS_wpatest := libwpa_test.o 2019_OBJS_VAR := OBJS_wpatest 2020include ../src/objs.mk 2021libwpa_test1: $(OBJS_wpatest) libwpa_client.a 2022 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test1 $(OBJS_wpatest) libwpa_client.a $(LIBS_c) 2023 @$(E) " LD " $@ 2024 2025libwpa_test2: $(OBJS_wpatest) libwpa_client.so 2026 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test2 $(OBJS_wpatest) -L. -lwpa_client $(LIBS_c) 2027 @$(E) " LD " $@ 2028 2029_OBJS_VAR := OBJS_nfc 2030include ../src/objs.mk 2031nfc_pw_token: $(OBJS_nfc) 2032 $(Q)$(LDO) $(LDFLAGS) -o nfc_pw_token $(OBJS_nfc) $(LIBS) 2033 @$(E) " LD " $@ 2034 2035win_if_list: win_if_list.c 2036 $(Q)$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w) 2037 @$(E) " LD " $@ 2038 2039eap_psk.so: $(SRC_EAP_PSK) 2040 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2041 -Deap_peer_psk_register=eap_peer_method_dynamic_init 2042 @$(E) " CC/LD " $@ 2043 2044eap_pax.so: $(SRC_EAP_PAX) 2045 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2046 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2047 @$(E) " CC/LD " $@ 2048 2049eap_peap.so: $(SRC_EAP_PEAP) 2050 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2051 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2052 @$(E) " CC/LD " $@ 2053 2054eap_sake.so: $(SRC_EAP_SAKE) 2055 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2056 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2057 @$(E) " CC/LD " $@ 2058 2059eap_ikev2.so: $(SRC_EAP_IKEV2) 2060 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2061 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2062 @$(E) " CC/LD " $@ 2063 2064eap_eke.so: $(SRC_EAP_EKE) 2065 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2066 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2067 @$(E) " CC/LD " $@ 2068 2069eap_mschapv2.so: $(SRC_EAP_MSCHAPV2) 2070 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2071 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2072 @$(E) " CC/LD " $@ 2073 2074eap_fast.so: $(SRC_EAP_FAST) 2075 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2076 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2077 @$(E) " CC/LD " $@ 2078 2079eap_teap.so: $(SRC_EAP_TEAP) 2080 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2081 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2082 @$(E) " CC/LD " $@ 2083 2084eap_gpsk.so: $(SRC_EAP_GPSK) 2085 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2086 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2087 @$(E) " CC/LD " $@ 2088 2089%.so: ../src/eap_peer/%.c 2090 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \ 2091 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init 2092 @$(E) " CC/LD " $@ 2093 2094%.service: %.service.in 2095 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ 2096 @$(E) " sed" $< 2097 2098%@.service: %.service.arg.in 2099 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ 2100 @$(E) " sed" $< 2101 2102wpa_supplicant.exe: wpa_supplicant 2103 mv -f $< $@ 2104wpa_cli.exe: wpa_cli 2105 mv -f $< $@ 2106wpa_passphrase.exe: wpa_passphrase 2107 mv -f $< $@ 2108win_if_list.exe: win_if_list 2109 mv -f $< $@ 2110eapol_test.exe: eapol_test 2111 mv -f $< $@ 2112 2113WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe 2114 2115windows-bin: $(WINALL) 2116 $(STRIP) $(WINALL) 2117 2118wpa_gui: 2119 @echo "wpa_gui has been removed - see wpa_gui-qt4 for replacement" 2120 2121wpa_gui-qt4/Makefile: 2122 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro 2123 2124wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts 2125 lrelease wpa_gui-qt4/wpa_gui.pro 2126 2127wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm 2128 $(MAKE) -C wpa_gui-qt4 2129 2130FIPSDIR=/usr/local/ssl/fips-2.0 2131FIPSLD=$(FIPSDIR)/bin/fipsld 2132fips: 2133 $(MAKE) CC=$(FIPSLD) FIPSLD_CC="$(CC)" 2134 2135.PHONY: lcov-html 2136lcov-html: $(call BUILDOBJ,wpa_supplicant.gcda) 2137 lcov -c -d $(BUILDDIR) > lcov.info 2138 genhtml lcov.info --output-directory lcov-html 2139 2140clean: common-clean 2141 $(MAKE) -C ../src clean 2142 $(MAKE) -C ./dbus clean 2143 rm -f core *~ *.o *.d *.gcno *.gcda *.gcov 2144 rm -f eap_*.so $(WINALL) eapol_test preauth_test 2145 rm -f wpa_priv 2146 rm -f nfc_pw_token 2147 rm -f lcov.info 2148 rm -rf lcov-html 2149 rm -f libwpa_client.a 2150 rm -f libwpa_client.so 2151 rm -f libwpa_test1 libwpa_test2 2152