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 494ifdef CONFIG_OPENSC_ENGINE_PATH 495CFLAGS += -DCONFIG_OPENSC_ENGINE_PATH=\"$(CONFIG_OPENSC_ENGINE_PATH)\" 496endif 497 498ifdef CONFIG_NO_OPENSC_ENGINE_PATH 499CFLAGS += -DCONFIG_OPENSC_ENGINE_PATH=NULL 500endif 501 502ifdef CONFIG_PKCS11_ENGINE_PATH 503CFLAGS += -DCONFIG_PKCS11_ENGINE_PATH=\"$(CONFIG_PKCS11_ENGINE_PATH)\" 504endif 505 506ifdef CONFIG_NO_PKCS11_ENGINE_PATH 507CFLAGS += -DCONFIG_PKCS11_ENGINE_PATH=NULL 508endif 509 510ifdef CONFIG_PKCS11_MODULE_PATH 511CFLAGS += -DCONFIG_PKCS11_MODULE_PATH=\"$(CONFIG_PKCS11_MODULE_PATH)\" 512endif 513 514ifdef CONFIG_NO_PKCS11_MODULE_PATH 515CFLAGS += -DCONFIG_PKCS11_MODULE_PATH=NULL 516endif 517 518ifdef CONFIG_NO_LOAD_DYNAMIC_EAP 519CFLAGS += -DCONFIG_NO_LOAD_DYNAMIC_EAP 520endif 521 522include ../src/drivers/drivers.mak 523ifdef CONFIG_AP 524OBJS_d += $(DRV_BOTH_OBJS) 525CFLAGS += $(DRV_BOTH_CFLAGS) 526LDFLAGS += $(DRV_BOTH_LDFLAGS) 527LIBS += $(DRV_BOTH_LIBS) 528else 529NEED_AP_MLME= 530OBJS_d += $(DRV_WPA_OBJS) 531CFLAGS += $(DRV_WPA_CFLAGS) 532LDFLAGS += $(DRV_WPA_LDFLAGS) 533LIBS += $(DRV_WPA_LIBS) 534endif 535 536ifndef CONFIG_L2_PACKET 537CONFIG_L2_PACKET=linux 538endif 539 540OBJS_l2 += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o 541 542ifeq ($(CONFIG_L2_PACKET), pcap) 543ifdef CONFIG_WINPCAP 544CFLAGS += -DCONFIG_WINPCAP 545LIBS += -lwpcap -lpacket 546LIBS_w += -lwpcap 547else 548LIBS += -ldnet -lpcap 549endif 550endif 551 552ifeq ($(CONFIG_L2_PACKET), winpcap) 553LIBS += -lwpcap -lpacket 554LIBS_w += -lwpcap 555endif 556 557ifeq ($(CONFIG_L2_PACKET), freebsd) 558LIBS += -lpcap 559endif 560 561ifdef CONFIG_ERP 562CFLAGS += -DCONFIG_ERP 563NEED_HMAC_SHA256_KDF=y 564endif 565 566ifdef CONFIG_EAP_TLS 567# EAP-TLS 568ifeq ($(CONFIG_EAP_TLS), dyn) 569CFLAGS += -DEAP_TLS_DYNAMIC 570EAPDYN += eap_tls.so 571else 572CFLAGS += -DEAP_TLS 573OBJS += ../src/eap_peer/eap_tls.o 574endif 575TLS_FUNCS=y 576CONFIG_IEEE8021X_EAPOL=y 577endif 578 579ifdef CONFIG_EAP_UNAUTH_TLS 580# EAP-UNAUTH-TLS 581CFLAGS += -DEAP_UNAUTH_TLS 582ifndef CONFIG_EAP_TLS 583OBJS += ../src/eap_peer/eap_tls.o 584TLS_FUNCS=y 585endif 586CONFIG_IEEE8021X_EAPOL=y 587endif 588 589ifdef CONFIG_EAP_PEAP 590# EAP-PEAP 591SRC_EAP_PEAP = ../src/eap_peer/eap_peap.c ../src/eap_common/eap_peap_common.c 592ifeq ($(CONFIG_EAP_PEAP), dyn) 593CFLAGS += -DEAP_PEAP_DYNAMIC 594EAPDYN += eap_peap.so 595else 596CFLAGS += -DEAP_PEAP 597OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PEAP)) 598endif 599TLS_FUNCS=y 600CONFIG_IEEE8021X_EAPOL=y 601endif 602 603ifdef CONFIG_EAP_TTLS 604# EAP-TTLS 605ifeq ($(CONFIG_EAP_TTLS), dyn) 606CFLAGS += -DEAP_TTLS_DYNAMIC 607EAPDYN += eap_ttls.so 608else 609CFLAGS += -DEAP_TTLS 610OBJS += ../src/eap_peer/eap_ttls.o 611endif 612TLS_FUNCS=y 613ifndef CONFIG_FIPS 614MS_FUNCS=y 615CHAP=y 616endif 617CONFIG_IEEE8021X_EAPOL=y 618endif 619 620ifdef CONFIG_EAP_MD5 621# EAP-MD5 622ifeq ($(CONFIG_EAP_MD5), dyn) 623CFLAGS += -DEAP_MD5_DYNAMIC 624EAPDYN += eap_md5.so 625else 626CFLAGS += -DEAP_MD5 627OBJS += ../src/eap_peer/eap_md5.o 628endif 629CHAP=y 630CONFIG_IEEE8021X_EAPOL=y 631endif 632 633# backwards compatibility for old spelling 634ifdef CONFIG_MSCHAPV2 635ifndef CONFIG_EAP_MSCHAPV2 636CONFIG_EAP_MSCHAPV2=y 637endif 638endif 639 640ifdef CONFIG_EAP_MSCHAPV2 641# EAP-MSCHAPv2 642SRC_EAP_MSCHAPV2 = ../src/eap_peer/eap_mschapv2.c ../src/eap_peer/mschapv2.c 643ifeq ($(CONFIG_EAP_MSCHAPV2), dyn) 644CFLAGS += -DEAP_MSCHAPv2_DYNAMIC 645EAPDYN += eap_mschapv2.so 646else 647CFLAGS += -DEAP_MSCHAPv2 648OBJS += $(patsubst %.c, %.o, $(SRC_EAP_MSCHAPV2)) 649endif 650MS_FUNCS=y 651CONFIG_IEEE8021X_EAPOL=y 652endif 653 654ifdef CONFIG_EAP_GTC 655# EAP-GTC 656ifeq ($(CONFIG_EAP_GTC), dyn) 657CFLAGS += -DEAP_GTC_DYNAMIC 658EAPDYN += eap_gtc.so 659else 660CFLAGS += -DEAP_GTC 661OBJS += ../src/eap_peer/eap_gtc.o 662endif 663CONFIG_IEEE8021X_EAPOL=y 664endif 665 666ifdef CONFIG_EAP_OTP 667# EAP-OTP 668ifeq ($(CONFIG_EAP_OTP), dyn) 669CFLAGS += -DEAP_OTP_DYNAMIC 670EAPDYN += eap_otp.so 671else 672CFLAGS += -DEAP_OTP 673OBJS += ../src/eap_peer/eap_otp.o 674endif 675CONFIG_IEEE8021X_EAPOL=y 676endif 677 678ifdef CONFIG_EAP_SIM 679# EAP-SIM 680ifeq ($(CONFIG_EAP_SIM), dyn) 681CFLAGS += -DEAP_SIM_DYNAMIC 682EAPDYN += eap_sim.so 683else 684CFLAGS += -DEAP_SIM 685OBJS += ../src/eap_peer/eap_sim.o 686endif 687CONFIG_IEEE8021X_EAPOL=y 688CONFIG_EAP_SIM_COMMON=y 689NEED_AES_CBC=y 690endif 691 692ifdef CONFIG_EAP_LEAP 693# EAP-LEAP 694ifeq ($(CONFIG_EAP_LEAP), dyn) 695CFLAGS += -DEAP_LEAP_DYNAMIC 696EAPDYN += eap_leap.so 697else 698CFLAGS += -DEAP_LEAP 699OBJS += ../src/eap_peer/eap_leap.o 700endif 701MS_FUNCS=y 702CONFIG_IEEE8021X_EAPOL=y 703endif 704 705ifdef CONFIG_EAP_PSK 706# EAP-PSK 707SRC_EAP_PSK = ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c 708ifeq ($(CONFIG_EAP_PSK), dyn) 709CFLAGS += -DEAP_PSK_DYNAMIC 710EAPDYN += eap_psk.so 711else 712CFLAGS += -DEAP_PSK 713OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PSK)) 714endif 715CONFIG_IEEE8021X_EAPOL=y 716NEED_AES=y 717NEED_AES_ENCBLOCK=y 718NEED_AES_EAX=y 719endif 720 721ifdef CONFIG_EAP_AKA 722# EAP-AKA 723ifeq ($(CONFIG_EAP_AKA), dyn) 724CFLAGS += -DEAP_AKA_DYNAMIC 725EAPDYN += eap_aka.so 726else 727CFLAGS += -DEAP_AKA 728OBJS += ../src/eap_peer/eap_aka.o 729endif 730CONFIG_IEEE8021X_EAPOL=y 731CONFIG_EAP_SIM_COMMON=y 732NEED_AES_CBC=y 733endif 734 735ifdef CONFIG_EAP_PROXY 736CFLAGS += -DCONFIG_EAP_PROXY 737OBJS += ../src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).o 738include eap_proxy_$(CONFIG_EAP_PROXY).mak 739CONFIG_IEEE8021X_EAPOL=y 740endif 741 742ifdef CONFIG_EAP_AKA_PRIME 743# EAP-AKA' 744ifeq ($(CONFIG_EAP_AKA_PRIME), dyn) 745CFLAGS += -DEAP_AKA_PRIME_DYNAMIC 746else 747CFLAGS += -DEAP_AKA_PRIME 748endif 749endif 750 751ifdef CONFIG_EAP_SIM_COMMON 752OBJS += ../src/eap_common/eap_sim_common.o 753NEED_AES=y 754NEED_FIPS186_2_PRF=y 755endif 756 757ifdef CONFIG_EAP_FAST 758# EAP-FAST 759SRC_EAP_FAST = ../src/eap_peer/eap_fast.c ../src/eap_peer/eap_fast_pac.c 760SRC_EAP_FAST += ../src/eap_common/eap_fast_common.c 761ifeq ($(CONFIG_EAP_FAST), dyn) 762CFLAGS += -DEAP_FAST_DYNAMIC 763EAPDYN += eap_fast.so 764else 765CFLAGS += -DEAP_FAST 766OBJS += $(patsubst %.c, %.o, $(SRC_EAP_FAST)) 767endif 768TLS_FUNCS=y 769CONFIG_IEEE8021X_EAPOL=y 770NEED_T_PRF=y 771endif 772 773ifdef CONFIG_EAP_TEAP 774# EAP-TEAP 775SRC_EAP_TEAP = ../src/eap_peer/eap_teap.c ../src/eap_peer/eap_teap_pac.c 776SRC_EAP_TEAP += ../src/eap_common/eap_teap_common.c 777ifeq ($(CONFIG_EAP_TEAP), dyn) 778CFLAGS += -DEAP_TEAP_DYNAMIC 779EAPDYN += eap_teap.so 780else 781CFLAGS += -DEAP_TEAP 782OBJS += $(patsubst %.c, %.o, $(SRC_EAP_TEAP)) 783endif 784TLS_FUNCS=y 785CONFIG_IEEE8021X_EAPOL=y 786NEED_T_PRF=y 787NEED_SHA384=y 788NEED_TLS_PRF_SHA256=y 789NEED_TLS_PRF_SHA384=y 790endif 791 792ifdef CONFIG_EAP_PAX 793# EAP-PAX 794SRC_EAP_PAX = ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c 795ifeq ($(CONFIG_EAP_PAX), dyn) 796CFLAGS += -DEAP_PAX_DYNAMIC 797EAPDYN += eap_pax.so 798else 799CFLAGS += -DEAP_PAX 800OBJS += $(patsubst %.c, %.o, $(SRC_EAP_PAX)) 801endif 802CONFIG_IEEE8021X_EAPOL=y 803endif 804 805ifdef CONFIG_EAP_SAKE 806# EAP-SAKE 807SRC_EAP_SAKE = ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c 808ifeq ($(CONFIG_EAP_SAKE), dyn) 809CFLAGS += -DEAP_SAKE_DYNAMIC 810EAPDYN += eap_sake.so 811else 812CFLAGS += -DEAP_SAKE 813OBJS += $(patsubst %.c, %.o, $(SRC_EAP_SAKE)) 814endif 815CONFIG_IEEE8021X_EAPOL=y 816endif 817 818ifdef CONFIG_EAP_GPSK 819# EAP-GPSK 820SRC_EAP_GPSK = ../src/eap_peer/eap_gpsk.c ../src/eap_common/eap_gpsk_common.c 821ifeq ($(CONFIG_EAP_GPSK), dyn) 822CFLAGS += -DEAP_GPSK_DYNAMIC 823EAPDYN += eap_gpsk.so 824else 825CFLAGS += -DEAP_GPSK 826OBJS += $(patsubst %.c, %.o, $(SRC_EAP_GPSK)) 827endif 828CONFIG_IEEE8021X_EAPOL=y 829ifdef CONFIG_EAP_GPSK_SHA256 830CFLAGS += -DEAP_GPSK_SHA256 831endif 832endif 833 834ifdef CONFIG_EAP_PWD 835CFLAGS += -DEAP_PWD 836ifeq ($(CONFIG_TLS), wolfssl) 837CFLAGS += -DCONFIG_ECC 838endif 839OBJS += ../src/eap_peer/eap_pwd.o ../src/eap_common/eap_pwd_common.o 840CONFIG_IEEE8021X_EAPOL=y 841NEED_ECC=y 842NEED_DRAGONFLY=y 843endif 844 845ifdef CONFIG_EAP_EKE 846# EAP-EKE 847SRC_EAP_EKE = ../src/eap_peer/eap_eke.c ../src/eap_common/eap_eke_common.c 848ifeq ($(CONFIG_EAP_EKE), dyn) 849CFLAGS += -DEAP_EKE_DYNAMIC 850EAPDYN += eap_eke.so 851else 852CFLAGS += -DEAP_EKE 853OBJS += $(patsubst %.c, %.o, $(SRC_EAP_EKE)) 854endif 855CONFIG_IEEE8021X_EAPOL=y 856NEED_DH_GROUPS=y 857NEED_DH_GROUPS_ALL=y 858NEED_AES_CBC=y 859endif 860 861ifdef CONFIG_WPS 862# EAP-WSC 863CFLAGS += -DCONFIG_WPS -DEAP_WSC 864OBJS += wps_supplicant.o 865OBJS += ../src/utils/uuid.o 866OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o 867OBJS += ../src/wps/wps.o 868OBJS += ../src/wps/wps_common.o 869OBJS += ../src/wps/wps_attr_parse.o 870OBJS += ../src/wps/wps_attr_build.o 871OBJS += ../src/wps/wps_attr_process.o 872OBJS += ../src/wps/wps_dev_attr.o 873OBJS += ../src/wps/wps_enrollee.o 874OBJS += ../src/wps/wps_registrar.o 875CONFIG_IEEE8021X_EAPOL=y 876NEED_DH_GROUPS=y 877NEED_BASE64=y 878NEED_AES_CBC=y 879NEED_MODEXP=y 880 881ifdef CONFIG_WPS_NFC 882CFLAGS += -DCONFIG_WPS_NFC 883OBJS += ../src/wps/ndef.o 884NEED_WPS_OOB=y 885endif 886 887ifdef NEED_WPS_OOB 888CFLAGS += -DCONFIG_WPS_OOB 889endif 890 891ifdef CONFIG_WPS_ER 892CONFIG_WPS_UPNP=y 893CFLAGS += -DCONFIG_WPS_ER 894OBJS += ../src/wps/wps_er.o 895OBJS += ../src/wps/wps_er_ssdp.o 896endif 897 898ifdef CONFIG_WPS_UPNP 899CFLAGS += -DCONFIG_WPS_UPNP 900OBJS += ../src/wps/wps_upnp.o 901OBJS += ../src/wps/wps_upnp_ssdp.o 902OBJS += ../src/wps/wps_upnp_web.o 903OBJS += ../src/wps/wps_upnp_event.o 904OBJS += ../src/wps/wps_upnp_ap.o 905OBJS += ../src/wps/upnp_xml.o 906OBJS += ../src/wps/httpread.o 907OBJS += ../src/wps/http_client.o 908OBJS += ../src/wps/http_server.o 909endif 910 911ifdef CONFIG_WPS_STRICT 912CFLAGS += -DCONFIG_WPS_STRICT 913OBJS += ../src/wps/wps_validate.o 914endif 915 916ifdef CONFIG_WPS_TESTING 917CFLAGS += -DCONFIG_WPS_TESTING 918endif 919 920ifdef CONFIG_WPS_REG_DISABLE_OPEN 921CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN 922endif 923 924endif 925 926ifdef CONFIG_EAP_IKEV2 927# EAP-IKEv2 928SRC_EAP_IKEV2 = ../src/eap_peer/eap_ikev2.c 929SRC_EAP_IKEV2 += ../src/eap_peer/ikev2.c 930SRC_EAP_IKEV2 += ../src/eap_common/eap_ikev2_common.c 931SRC_EAP_IKEV2 += ../src/eap_common/ikev2_common.c 932ifeq ($(CONFIG_EAP_IKEV2), dyn) 933CFLAGS += -DEAP_IKEV2_DYNAMIC 934EAPDYN += eap_ikev2.so 935else 936CFLAGS += -DEAP_IKEV2 937OBJS += $(patsubst %.c, %.o, $(SRC_EAP_IKEV2)) 938endif 939CONFIG_IEEE8021X_EAPOL=y 940NEED_DH_GROUPS=y 941NEED_DH_GROUPS_ALL=y 942NEED_MODEXP=y 943NEED_CIPHER=y 944endif 945 946ifdef CONFIG_EAP_VENDOR_TEST 947ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn) 948CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC 949EAPDYN += eap_vendor_test.so 950else 951CFLAGS += -DEAP_VENDOR_TEST 952OBJS += ../src/eap_peer/eap_vendor_test.o 953endif 954CONFIG_IEEE8021X_EAPOL=y 955endif 956 957ifdef CONFIG_EAP_TNC 958# EAP-TNC 959CFLAGS += -DEAP_TNC 960OBJS += ../src/eap_peer/eap_tnc.o 961OBJS += ../src/eap_peer/tncc.o 962NEED_BASE64=y 963ifndef CONFIG_NATIVE_WINDOWS 964ifndef CONFIG_DRIVER_BSD 965LIBS += -ldl 966endif 967endif 968endif 969 970ifdef CONFIG_MACSEC 971CFLAGS += -DCONFIG_MACSEC 972CONFIG_IEEE8021X_EAPOL=y 973NEED_AES_ENCBLOCK=y 974NEED_AES_UNWRAP=y 975NEED_AES_WRAP=y 976OBJS += wpas_kay.o 977OBJS += ../src/pae/ieee802_1x_cp.o 978OBJS += ../src/pae/ieee802_1x_kay.o 979OBJS += ../src/pae/ieee802_1x_key.o 980OBJS += ../src/pae/ieee802_1x_secy_ops.o 981ifdef CONFIG_AP 982OBJS += ../src/ap/wpa_auth_kay.o 983endif 984endif 985 986ifdef CONFIG_IEEE8021X_EAPOL 987# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication) 988CFLAGS += -DIEEE8021X_EAPOL 989OBJS += ../src/eapol_supp/eapol_supp_sm.o 990OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o 991NEED_EAP_COMMON=y 992ifdef CONFIG_DYNAMIC_EAP_METHODS 993CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS 994LIBS += -ldl -rdynamic 995endif 996endif 997 998ifdef CONFIG_AP 999NEED_EAP_COMMON=y 1000NEED_RSN_AUTHENTICATOR=y 1001CFLAGS += -DCONFIG_AP 1002OBJS += ap.o 1003CFLAGS += -DCONFIG_NO_RADIUS 1004CFLAGS += -DCONFIG_NO_ACCOUNTING 1005CFLAGS += -DCONFIG_NO_VLAN 1006OBJS += ../src/ap/hostapd.o 1007OBJS += ../src/ap/wpa_auth_glue.o 1008OBJS += ../src/ap/utils.o 1009OBJS += ../src/ap/authsrv.o 1010OBJS += ../src/ap/ap_config.o 1011OBJS += ../src/ap/sta_info.o 1012OBJS += ../src/ap/tkip_countermeasures.o 1013OBJS += ../src/ap/ap_mlme.o 1014OBJS += ../src/ap/ieee802_1x.o 1015OBJS += ../src/eapol_auth/eapol_auth_sm.o 1016OBJS += ../src/ap/ieee802_11_auth.o 1017OBJS += ../src/ap/ieee802_11_shared.o 1018OBJS += ../src/ap/drv_callbacks.o 1019OBJS += ../src/ap/ap_drv_ops.o 1020OBJS += ../src/ap/beacon.o 1021OBJS += ../src/ap/bss_load.o 1022OBJS += ../src/ap/eap_user_db.o 1023OBJS += ../src/ap/neighbor_db.o 1024OBJS += ../src/ap/rrm.o 1025OBJS += ../src/ap/ieee802_11_ht.o 1026ifdef CONFIG_IEEE80211AC 1027OBJS += ../src/ap/ieee802_11_vht.o 1028endif 1029ifdef CONFIG_IEEE80211AX 1030OBJS += ../src/ap/ieee802_11_he.o 1031endif 1032ifdef CONFIG_WNM_AP 1033CFLAGS += -DCONFIG_WNM_AP 1034OBJS += ../src/ap/wnm_ap.o 1035endif 1036ifdef CONFIG_MBO 1037OBJS += ../src/ap/mbo_ap.o 1038endif 1039ifdef CONFIG_FILS 1040OBJS += ../src/ap/fils_hlp.o 1041endif 1042ifdef CONFIG_CTRL_IFACE 1043OBJS += ../src/ap/ctrl_iface_ap.o 1044endif 1045 1046CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY 1047OBJS += ../src/eap_server/eap_server.o 1048OBJS += ../src/eap_server/eap_server_identity.o 1049OBJS += ../src/eap_server/eap_server_methods.o 1050 1051ifdef CONFIG_IEEE80211AC 1052CFLAGS += -DCONFIG_IEEE80211AC 1053endif 1054ifdef CONFIG_IEEE80211AX 1055CFLAGS += -DCONFIG_IEEE80211AX 1056endif 1057 1058ifdef NEED_AP_MLME 1059OBJS += ../src/ap/wmm.o 1060OBJS += ../src/ap/ap_list.o 1061OBJS += ../src/ap/ieee802_11.o 1062OBJS += ../src/ap/hw_features.o 1063OBJS += ../src/ap/dfs.o 1064CFLAGS += -DNEED_AP_MLME 1065endif 1066ifdef CONFIG_WPS 1067CFLAGS += -DEAP_SERVER_WSC 1068OBJS += ../src/ap/wps_hostapd.o 1069OBJS += ../src/eap_server/eap_server_wsc.o 1070endif 1071ifdef CONFIG_DPP 1072OBJS += ../src/ap/dpp_hostapd.o 1073OBJS += ../src/ap/gas_query_ap.o 1074NEED_AP_GAS_SERV=y 1075endif 1076ifdef CONFIG_INTERWORKING 1077NEED_AP_GAS_SERV=y 1078endif 1079ifdef NEED_AP_GAS_SERV 1080OBJS += ../src/ap/gas_serv.o 1081endif 1082ifdef CONFIG_HS20 1083OBJS += ../src/ap/hs20.o 1084endif 1085endif 1086 1087ifdef CONFIG_MBO 1088OBJS += mbo.o 1089CFLAGS += -DCONFIG_MBO 1090endif 1091 1092ifdef NEED_RSN_AUTHENTICATOR 1093CFLAGS += -DCONFIG_NO_RADIUS 1094NEED_AES_WRAP=y 1095OBJS += ../src/ap/wpa_auth.o 1096OBJS += ../src/ap/wpa_auth_ie.o 1097OBJS += ../src/ap/pmksa_cache_auth.o 1098endif 1099 1100ifdef CONFIG_ACS 1101CFLAGS += -DCONFIG_ACS 1102OBJS += ../src/ap/acs.o 1103LIBS += -lm 1104endif 1105 1106ifdef CONFIG_PCSC 1107# PC/SC interface for smartcards (USIM, GSM SIM) 1108CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC 1109OBJS += ../src/utils/pcsc_funcs.o 1110ifdef CONFIG_NATIVE_WINDOWS 1111#Once MinGW gets support for WinScard, -lwinscard could be used instead of the 1112#dynamic symbol loading that is now used in pcsc_funcs.c 1113#LIBS += -lwinscard 1114else 1115ifdef CONFIG_OSX 1116LIBS += -framework PCSC 1117else 1118LIBS += $(shell $(PKG_CONFIG) --libs libpcsclite) 1119endif 1120endif 1121endif 1122 1123ifdef CONFIG_SIM_SIMULATOR 1124CFLAGS += -DCONFIG_SIM_SIMULATOR 1125NEED_MILENAGE=y 1126endif 1127 1128ifdef CONFIG_USIM_SIMULATOR 1129CFLAGS += -DCONFIG_USIM_SIMULATOR 1130NEED_MILENAGE=y 1131endif 1132 1133ifdef NEED_MILENAGE 1134OBJS += ../src/crypto/milenage.o 1135NEED_AES_ENCBLOCK=y 1136endif 1137 1138ifdef CONFIG_PKCS12 1139CFLAGS += -DPKCS12_FUNCS 1140endif 1141 1142ifdef CONFIG_SMARTCARD 1143CFLAGS += -DCONFIG_SMARTCARD 1144endif 1145 1146ifdef NEED_DRAGONFLY 1147OBJS += ../src/common/dragonfly.o 1148endif 1149 1150ifdef MS_FUNCS 1151OBJS += ../src/crypto/ms_funcs.o 1152NEED_DES=y 1153NEED_MD4=y 1154endif 1155 1156ifdef CHAP 1157OBJS += ../src/eap_common/chap.o 1158endif 1159 1160ifdef TLS_FUNCS 1161NEED_DES=y 1162# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, EAP_FAST, and 1163# EAP_TEAP) 1164OBJS += ../src/eap_peer/eap_tls_common.o 1165ifndef CONFIG_FIPS 1166NEED_TLS_PRF=y 1167NEED_SHA1=y 1168NEED_MD5=y 1169endif 1170endif 1171 1172ifndef CONFIG_TLS 1173CONFIG_TLS=openssl 1174endif 1175 1176ifdef CONFIG_TLSV11 1177CFLAGS += -DCONFIG_TLSV11 1178endif 1179 1180ifdef CONFIG_TLSV12 1181CFLAGS += -DCONFIG_TLSV12 1182endif 1183 1184ifeq ($(CONFIG_TLS), wolfssl) 1185ifdef TLS_FUNCS 1186CFLAGS += -DWOLFSSL_DER_LOAD 1187OBJS += ../src/crypto/tls_wolfssl.o 1188endif 1189OBJS += ../src/crypto/crypto_wolfssl.o 1190OBJS_p += ../src/crypto/crypto_wolfssl.o 1191ifdef NEED_FIPS186_2_PRF 1192OBJS += ../src/crypto/fips_prf_wolfssl.o 1193endif 1194NEED_TLS_PRF_SHA256=y 1195LIBS += -lwolfssl -lm 1196LIBS_p += -lwolfssl -lm 1197endif 1198 1199ifeq ($(CONFIG_TLS), openssl) 1200ifdef TLS_FUNCS 1201CFLAGS += -DEAP_TLS_OPENSSL 1202OBJS += ../src/crypto/tls_openssl.o 1203OBJS += ../src/crypto/tls_openssl_ocsp.o 1204LIBS += -lssl 1205endif 1206OBJS += ../src/crypto/crypto_openssl.o 1207OBJS_p += ../src/crypto/crypto_openssl.o 1208OBJS_priv += ../src/crypto/crypto_openssl.o 1209ifdef NEED_FIPS186_2_PRF 1210OBJS += ../src/crypto/fips_prf_openssl.o 1211endif 1212NEED_TLS_PRF_SHA256=y 1213LIBS += -lcrypto 1214LIBS_p += -lcrypto 1215ifdef CONFIG_TLS_ADD_DL 1216LIBS += -ldl 1217LIBS_p += -ldl 1218endif 1219ifndef CONFIG_TLS_DEFAULT_CIPHERS 1220CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW" 1221endif 1222CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\" 1223endif 1224 1225ifeq ($(CONFIG_TLS), gnutls) 1226ifndef CONFIG_CRYPTO 1227# default to libgcrypt 1228CONFIG_CRYPTO=gnutls 1229endif 1230ifdef TLS_FUNCS 1231OBJS += ../src/crypto/tls_gnutls.o 1232LIBS += -lgnutls -lgpg-error 1233endif 1234OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1235OBJS_p += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1236OBJS_priv += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1237ifdef NEED_FIPS186_2_PRF 1238OBJS += ../src/crypto/fips_prf_internal.o 1239SHA1OBJS += ../src/crypto/sha1-internal.o 1240endif 1241ifeq ($(CONFIG_CRYPTO), gnutls) 1242LIBS += -lgcrypt 1243LIBS_p += -lgcrypt 1244CONFIG_INTERNAL_RC4=y 1245CONFIG_INTERNAL_DH_GROUP5=y 1246endif 1247ifeq ($(CONFIG_CRYPTO), nettle) 1248LIBS += -lnettle -lgmp 1249LIBS_p += -lnettle -lgmp 1250CONFIG_INTERNAL_RC4=y 1251CONFIG_INTERNAL_DH_GROUP5=y 1252endif 1253endif 1254 1255ifeq ($(CONFIG_TLS), internal) 1256ifndef CONFIG_CRYPTO 1257CONFIG_CRYPTO=internal 1258endif 1259ifdef TLS_FUNCS 1260OBJS += ../src/crypto/crypto_internal-rsa.o 1261OBJS += ../src/crypto/tls_internal.o 1262OBJS += ../src/tls/tlsv1_common.o 1263OBJS += ../src/tls/tlsv1_record.o 1264OBJS += ../src/tls/tlsv1_cred.o 1265OBJS += ../src/tls/tlsv1_client.o 1266OBJS += ../src/tls/tlsv1_client_write.o 1267OBJS += ../src/tls/tlsv1_client_read.o 1268OBJS += ../src/tls/tlsv1_client_ocsp.o 1269OBJS += ../src/tls/rsa.o 1270OBJS += ../src/tls/x509v3.o 1271OBJS += ../src/tls/pkcs1.o 1272OBJS += ../src/tls/pkcs5.o 1273OBJS += ../src/tls/pkcs8.o 1274NEED_ASN1=y 1275NEED_BASE64=y 1276NEED_TLS_PRF=y 1277ifdef CONFIG_TLSV12 1278NEED_TLS_PRF_SHA256=y 1279endif 1280NEED_MODEXP=y 1281NEED_CIPHER=y 1282CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT 1283endif 1284ifdef NEED_CIPHER 1285NEED_DES=y 1286OBJS += ../src/crypto/crypto_internal-cipher.o 1287endif 1288ifdef NEED_MODEXP 1289OBJS += ../src/crypto/crypto_internal-modexp.o 1290OBJS += ../src/tls/bignum.o 1291endif 1292ifeq ($(CONFIG_CRYPTO), libtomcrypt) 1293OBJS += ../src/crypto/crypto_libtomcrypt.o 1294OBJS_p += ../src/crypto/crypto_libtomcrypt.o 1295LIBS += -ltomcrypt -ltfm 1296LIBS_p += -ltomcrypt -ltfm 1297CONFIG_INTERNAL_SHA256=y 1298CONFIG_INTERNAL_RC4=y 1299CONFIG_INTERNAL_DH_GROUP5=y 1300endif 1301ifeq ($(CONFIG_CRYPTO), internal) 1302OBJS += ../src/crypto/crypto_internal.o 1303OBJS_p += ../src/crypto/crypto_internal.o 1304NEED_AES_ENC=y 1305CFLAGS += -DCONFIG_CRYPTO_INTERNAL 1306ifdef CONFIG_INTERNAL_LIBTOMMATH 1307CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 1308ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 1309CFLAGS += -DLTM_FAST 1310endif 1311else 1312LIBS += -ltommath 1313LIBS_p += -ltommath 1314endif 1315CONFIG_INTERNAL_AES=y 1316CONFIG_INTERNAL_DES=y 1317CONFIG_INTERNAL_SHA1=y 1318CONFIG_INTERNAL_MD4=y 1319CONFIG_INTERNAL_MD5=y 1320CONFIG_INTERNAL_SHA256=y 1321CONFIG_INTERNAL_SHA384=y 1322CONFIG_INTERNAL_SHA512=y 1323CONFIG_INTERNAL_RC4=y 1324CONFIG_INTERNAL_DH_GROUP5=y 1325endif 1326ifeq ($(CONFIG_CRYPTO), cryptoapi) 1327OBJS += ../src/crypto/crypto_cryptoapi.o 1328OBJS_p += ../src/crypto/crypto_cryptoapi.o 1329CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 1330CONFIG_INTERNAL_SHA256=y 1331CONFIG_INTERNAL_RC4=y 1332endif 1333endif 1334 1335ifeq ($(CONFIG_TLS), linux) 1336OBJS += ../src/crypto/crypto_linux.o 1337OBJS_p += ../src/crypto/crypto_linux.o 1338ifdef TLS_FUNCS 1339OBJS += ../src/crypto/crypto_internal-rsa.o 1340OBJS += ../src/crypto/tls_internal.o 1341OBJS += ../src/tls/tlsv1_common.o 1342OBJS += ../src/tls/tlsv1_record.o 1343OBJS += ../src/tls/tlsv1_cred.o 1344OBJS += ../src/tls/tlsv1_client.o 1345OBJS += ../src/tls/tlsv1_client_write.o 1346OBJS += ../src/tls/tlsv1_client_read.o 1347OBJS += ../src/tls/tlsv1_client_ocsp.o 1348OBJS += ../src/tls/rsa.o 1349OBJS += ../src/tls/x509v3.o 1350OBJS += ../src/tls/pkcs1.o 1351OBJS += ../src/tls/pkcs5.o 1352OBJS += ../src/tls/pkcs8.o 1353NEED_ASN1=y 1354NEED_BASE64=y 1355NEED_TLS_PRF=y 1356ifdef CONFIG_TLSV12 1357NEED_TLS_PRF_SHA256=y 1358endif 1359NEED_MODEXP=y 1360NEED_CIPHER=y 1361CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT 1362endif 1363ifdef NEED_MODEXP 1364OBJS += ../src/crypto/crypto_internal-modexp.o 1365OBJS += ../src/tls/bignum.o 1366CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 1367CFLAGS += -DLTM_FAST 1368endif 1369CONFIG_INTERNAL_DH_GROUP5=y 1370ifdef NEED_FIPS186_2_PRF 1371OBJS += ../src/crypto/fips_prf_internal.o 1372OBJS += ../src/crypto/sha1-internal.o 1373endif 1374endif 1375 1376ifeq ($(CONFIG_TLS), none) 1377ifdef TLS_FUNCS 1378OBJS += ../src/crypto/tls_none.o 1379CFLAGS += -DEAP_TLS_NONE 1380CONFIG_INTERNAL_AES=y 1381CONFIG_INTERNAL_SHA1=y 1382CONFIG_INTERNAL_MD5=y 1383endif 1384OBJS += ../src/crypto/crypto_none.o 1385OBJS_p += ../src/crypto/crypto_none.o 1386CONFIG_INTERNAL_SHA256=y 1387CONFIG_INTERNAL_RC4=y 1388endif 1389 1390ifdef TLS_FUNCS 1391ifdef CONFIG_SMARTCARD 1392ifndef CONFIG_NATIVE_WINDOWS 1393ifneq ($(CONFIG_L2_PACKET), freebsd) 1394LIBS += -ldl 1395endif 1396endif 1397endif 1398endif 1399 1400ifndef TLS_FUNCS 1401OBJS += ../src/crypto/tls_none.o 1402ifeq ($(CONFIG_TLS), internal) 1403CONFIG_INTERNAL_AES=y 1404CONFIG_INTERNAL_SHA1=y 1405CONFIG_INTERNAL_MD5=y 1406CONFIG_INTERNAL_RC4=y 1407endif 1408endif 1409 1410AESOBJS = # none so far (see below) 1411ifdef CONFIG_INTERNAL_AES 1412AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o 1413endif 1414 1415ifneq ($(CONFIG_TLS), openssl) 1416ifneq ($(CONFIG_TLS), wolfssl) 1417NEED_INTERNAL_AES_WRAP=y 1418endif 1419endif 1420ifdef CONFIG_OPENSSL_INTERNAL_AES_WRAP 1421# Seems to be needed at least with BoringSSL 1422NEED_INTERNAL_AES_WRAP=y 1423CFLAGS += -DCONFIG_OPENSSL_INTERNAL_AES_WRAP 1424endif 1425ifdef CONFIG_FIPS 1426# Have to use internal AES key wrap routines to use OpenSSL EVP since the 1427# OpenSSL AES_wrap_key()/AES_unwrap_key() API is not available in FIPS mode. 1428NEED_INTERNAL_AES_WRAP=y 1429endif 1430 1431ifdef NEED_INTERNAL_AES_WRAP 1432ifneq ($(CONFIG_TLS), linux) 1433AESOBJS += ../src/crypto/aes-unwrap.o 1434endif 1435endif 1436ifdef NEED_AES_EAX 1437AESOBJS += ../src/crypto/aes-eax.o 1438NEED_AES_CTR=y 1439endif 1440ifdef NEED_AES_SIV 1441AESOBJS += ../src/crypto/aes-siv.o 1442NEED_AES_CTR=y 1443endif 1444ifdef NEED_AES_CTR 1445AESOBJS += ../src/crypto/aes-ctr.o 1446endif 1447ifdef NEED_AES_ENCBLOCK 1448AESOBJS += ../src/crypto/aes-encblock.o 1449endif 1450NEED_AES_ENC=y 1451ifdef CONFIG_OPENSSL_CMAC 1452CFLAGS += -DCONFIG_OPENSSL_CMAC 1453else 1454ifneq ($(CONFIG_TLS), linux) 1455ifneq ($(CONFIG_TLS), wolfssl) 1456AESOBJS += ../src/crypto/aes-omac1.o 1457endif 1458endif 1459endif 1460ifdef NEED_AES_WRAP 1461NEED_AES_ENC=y 1462ifdef NEED_INTERNAL_AES_WRAP 1463AESOBJS += ../src/crypto/aes-wrap.o 1464endif 1465endif 1466ifdef NEED_AES_CBC 1467NEED_AES_ENC=y 1468ifneq ($(CONFIG_TLS), openssl) 1469ifneq ($(CONFIG_TLS), linux) 1470ifneq ($(CONFIG_TLS), wolfssl) 1471AESOBJS += ../src/crypto/aes-cbc.o 1472endif 1473endif 1474endif 1475endif 1476ifdef NEED_AES_ENC 1477ifdef CONFIG_INTERNAL_AES 1478AESOBJS += ../src/crypto/aes-internal-enc.o 1479endif 1480endif 1481ifdef NEED_AES 1482OBJS += $(AESOBJS) 1483endif 1484 1485ifdef NEED_SHA1 1486ifneq ($(CONFIG_TLS), openssl) 1487ifneq ($(CONFIG_TLS), linux) 1488ifneq ($(CONFIG_TLS), gnutls) 1489ifneq ($(CONFIG_TLS), wolfssl) 1490SHA1OBJS += ../src/crypto/sha1.o 1491endif 1492endif 1493endif 1494endif 1495SHA1OBJS += ../src/crypto/sha1-prf.o 1496ifdef CONFIG_INTERNAL_SHA1 1497SHA1OBJS += ../src/crypto/sha1-internal.o 1498ifdef NEED_FIPS186_2_PRF 1499SHA1OBJS += ../src/crypto/fips_prf_internal.o 1500endif 1501endif 1502ifdef CONFIG_NO_WPA_PASSPHRASE 1503CFLAGS += -DCONFIG_NO_PBKDF2 1504else 1505ifneq ($(CONFIG_TLS), openssl) 1506ifneq ($(CONFIG_TLS), wolfssl) 1507SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 1508endif 1509endif 1510endif 1511ifdef NEED_T_PRF 1512SHA1OBJS += ../src/crypto/sha1-tprf.o 1513endif 1514ifdef NEED_TLS_PRF 1515SHA1OBJS += ../src/crypto/sha1-tlsprf.o 1516endif 1517endif 1518 1519ifndef CONFIG_FIPS 1520ifneq ($(CONFIG_TLS), openssl) 1521ifneq ($(CONFIG_TLS), linux) 1522ifneq ($(CONFIG_TLS), gnutls) 1523ifneq ($(CONFIG_TLS), wolfssl) 1524MD5OBJS += ../src/crypto/md5.o 1525endif 1526endif 1527endif 1528endif 1529endif 1530ifdef NEED_MD5 1531ifdef CONFIG_INTERNAL_MD5 1532MD5OBJS += ../src/crypto/md5-internal.o 1533endif 1534OBJS += $(MD5OBJS) 1535OBJS_p += $(MD5OBJS) 1536OBJS_priv += $(MD5OBJS) 1537endif 1538 1539ifdef NEED_MD4 1540ifdef CONFIG_INTERNAL_MD4 1541OBJS += ../src/crypto/md4-internal.o 1542endif 1543endif 1544 1545DESOBJS = # none needed when not internal 1546ifdef NEED_DES 1547ifndef CONFIG_FIPS 1548CFLAGS += -DCONFIG_DES 1549endif 1550ifdef CONFIG_INTERNAL_DES 1551DESOBJS += ../src/crypto/des-internal.o 1552endif 1553endif 1554 1555ifdef CONFIG_NO_RC4 1556CFLAGS += -DCONFIG_NO_RC4 1557endif 1558 1559ifdef NEED_RC4 1560ifdef CONFIG_INTERNAL_RC4 1561ifndef CONFIG_NO_RC4 1562OBJS += ../src/crypto/rc4.o 1563endif 1564endif 1565endif 1566 1567SHA256OBJS = # none by default 1568CFLAGS += -DCONFIG_SHA256 1569ifneq ($(CONFIG_TLS), openssl) 1570ifneq ($(CONFIG_TLS), linux) 1571ifneq ($(CONFIG_TLS), gnutls) 1572ifneq ($(CONFIG_TLS), wolfssl) 1573SHA256OBJS += ../src/crypto/sha256.o 1574endif 1575endif 1576endif 1577endif 1578SHA256OBJS += ../src/crypto/sha256-prf.o 1579ifdef CONFIG_INTERNAL_SHA256 1580SHA256OBJS += ../src/crypto/sha256-internal.o 1581endif 1582ifdef CONFIG_INTERNAL_SHA384 1583CFLAGS += -DCONFIG_INTERNAL_SHA384 1584SHA256OBJS += ../src/crypto/sha384-internal.o 1585endif 1586ifdef CONFIG_INTERNAL_SHA512 1587CFLAGS += -DCONFIG_INTERNAL_SHA512 1588SHA256OBJS += ../src/crypto/sha512-internal.o 1589endif 1590ifdef NEED_TLS_PRF_SHA256 1591SHA256OBJS += ../src/crypto/sha256-tlsprf.o 1592endif 1593ifdef NEED_TLS_PRF_SHA384 1594SHA256OBJS += ../src/crypto/sha384-tlsprf.o 1595endif 1596ifdef NEED_HMAC_SHA256_KDF 1597CFLAGS += -DCONFIG_HMAC_SHA256_KDF 1598OBJS += ../src/crypto/sha256-kdf.o 1599endif 1600ifdef NEED_HMAC_SHA384_KDF 1601CFLAGS += -DCONFIG_HMAC_SHA384_KDF 1602OBJS += ../src/crypto/sha384-kdf.o 1603endif 1604ifdef NEED_HMAC_SHA512_KDF 1605CFLAGS += -DCONFIG_HMAC_SHA512_KDF 1606OBJS += ../src/crypto/sha512-kdf.o 1607endif 1608OBJS += $(SHA256OBJS) 1609ifdef NEED_SHA384 1610ifneq ($(CONFIG_TLS), openssl) 1611ifneq ($(CONFIG_TLS), linux) 1612ifneq ($(CONFIG_TLS), gnutls) 1613ifneq ($(CONFIG_TLS), wolfssl) 1614OBJS += ../src/crypto/sha384.o 1615endif 1616endif 1617endif 1618endif 1619CFLAGS += -DCONFIG_SHA384 1620OBJS += ../src/crypto/sha384-prf.o 1621endif 1622ifdef NEED_SHA512 1623ifneq ($(CONFIG_TLS), openssl) 1624ifneq ($(CONFIG_TLS), linux) 1625ifneq ($(CONFIG_TLS), gnutls) 1626ifneq ($(CONFIG_TLS), wolfssl) 1627OBJS += ../src/crypto/sha512.o 1628endif 1629endif 1630endif 1631endif 1632CFLAGS += -DCONFIG_SHA512 1633OBJS += ../src/crypto/sha512-prf.o 1634endif 1635 1636ifdef NEED_ASN1 1637OBJS += ../src/tls/asn1.o 1638endif 1639 1640ifdef NEED_DH_GROUPS 1641OBJS += ../src/crypto/dh_groups.o 1642endif 1643ifdef NEED_DH_GROUPS_ALL 1644CFLAGS += -DALL_DH_GROUPS 1645endif 1646ifdef CONFIG_INTERNAL_DH_GROUP5 1647ifdef NEED_DH_GROUPS 1648OBJS += ../src/crypto/dh_group5.o 1649endif 1650endif 1651 1652ifdef NEED_ECC 1653CFLAGS += -DCONFIG_ECC 1654endif 1655 1656ifdef CONFIG_NO_RANDOM_POOL 1657CFLAGS += -DCONFIG_NO_RANDOM_POOL 1658else 1659ifdef CONFIG_GETRANDOM 1660CFLAGS += -DCONFIG_GETRANDOM 1661endif 1662OBJS += ../src/crypto/random.o 1663endif 1664 1665ifdef CONFIG_CTRL_IFACE 1666ifeq ($(CONFIG_CTRL_IFACE), y) 1667ifdef CONFIG_NATIVE_WINDOWS 1668CONFIG_CTRL_IFACE=named_pipe 1669else 1670CONFIG_CTRL_IFACE=unix 1671endif 1672endif 1673CFLAGS += -DCONFIG_CTRL_IFACE 1674ifeq ($(CONFIG_CTRL_IFACE), unix) 1675CFLAGS += -DCONFIG_CTRL_IFACE_UNIX 1676OBJS += ../src/common/ctrl_iface_common.o 1677endif 1678ifeq ($(CONFIG_CTRL_IFACE), udp) 1679CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1680CFLAGS += -DCONFIG_OPEN_HARMONY_PATCH_LITE 1681endif 1682ifeq ($(CONFIG_CTRL_IFACE), udp6) 1683CONFIG_CTRL_IFACE=udp 1684CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1685CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6 1686endif 1687ifeq ($(CONFIG_CTRL_IFACE), named_pipe) 1688CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE 1689endif 1690ifeq ($(CONFIG_CTRL_IFACE), udp-remote) 1691CONFIG_CTRL_IFACE=udp 1692CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1693CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE 1694endif 1695ifeq ($(CONFIG_CTRL_IFACE), udp6-remote) 1696CONFIG_CTRL_IFACE=udp 1697CFLAGS += -DCONFIG_CTRL_IFACE_UDP 1698CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE 1699CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6 1700endif 1701OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o 1702endif 1703 1704ifdef CONFIG_CTRL_IFACE_DBUS_NEW 1705CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW 1706OBJS += dbus/dbus_dict_helpers.o 1707OBJS += dbus/dbus_new_helpers.o 1708OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o 1709OBJS += dbus/dbus_common.o 1710ifdef CONFIG_WPS 1711OBJS += dbus/dbus_new_handlers_wps.o 1712endif 1713ifdef CONFIG_P2P 1714OBJS += dbus/dbus_new_handlers_p2p.o 1715endif 1716ifndef DBUS_LIBS 1717DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1) 1718endif 1719ifndef DBUS_INCLUDE 1720DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1) 1721endif 1722ifdef CONFIG_CTRL_IFACE_DBUS_INTRO 1723OBJS += dbus/dbus_new_introspect.o 1724CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO 1725endif 1726CFLAGS += $(DBUS_INCLUDE) 1727LIBS += $(DBUS_LIBS) 1728endif 1729 1730ifdef CONFIG_READLINE 1731OBJS_c += ../src/utils/edit_readline.o 1732LIBS_c += -lreadline -lncurses 1733else 1734ifdef CONFIG_WPA_CLI_EDIT 1735OBJS_c += ../src/utils/edit.o 1736else 1737OBJS_c += ../src/utils/edit_simple.o 1738endif 1739endif 1740 1741ifdef CONFIG_NATIVE_WINDOWS 1742CFLAGS += -DCONFIG_NATIVE_WINDOWS 1743LIBS += -lws2_32 -lgdi32 -lcrypt32 1744LIBS_c += -lws2_32 1745LIBS_p += -lws2_32 -lgdi32 1746ifeq ($(CONFIG_CRYPTO), cryptoapi) 1747LIBS_p += -lcrypt32 1748endif 1749endif 1750 1751#ifdef CONFIG_NO_STDOUT_DEBUG 1752ifneq ($(DEBUG), 1) 1753CFLAGS += -DCONFIG_WPA_NO_LOG 1754CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 1755ifndef CONFIG_CTRL_IFACE 1756CFLAGS += -DCONFIG_NO_WPA_MSG 1757endif 1758endif 1759 1760ifdef CONFIG_IPV6 1761# for eapol_test only 1762CFLAGS += -DCONFIG_IPV6 1763endif 1764 1765ifdef CONFIG_NO_LINUX_PACKET_SOCKET_WAR 1766CFLAGS += -DCONFIG_NO_LINUX_PACKET_SOCKET_WAR 1767endif 1768 1769ifdef NEED_BASE64 1770OBJS += ../src/utils/base64.o 1771endif 1772 1773ifdef NEED_SME 1774OBJS += sme.o 1775CFLAGS += -DCONFIG_SME 1776endif 1777 1778OBJS += ../src/common/ieee802_11_common.o 1779OBJS += ../src/common/hw_features_common.o 1780 1781ifdef NEED_EAP_COMMON 1782OBJS += ../src/eap_common/eap_common.o 1783endif 1784 1785ifndef CONFIG_MAIN 1786CONFIG_MAIN=main 1787endif 1788 1789ifdef CONFIG_DEBUG_SYSLOG 1790CFLAGS += -DCONFIG_DEBUG_SYSLOG 1791ifdef CONFIG_DEBUG_SYSLOG_FACILITY 1792CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)" 1793endif 1794endif 1795 1796ifdef CONFIG_DEBUG_LINUX_TRACING 1797CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING 1798endif 1799 1800ifdef CONFIG_DEBUG_FILE 1801CFLAGS += -DCONFIG_DEBUG_FILE 1802endif 1803 1804ifdef CONFIG_DELAYED_MIC_ERROR_REPORT 1805CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT 1806endif 1807 1808ifdef CONFIG_FIPS 1809CFLAGS += -DCONFIG_FIPS 1810ifneq ($(CONFIG_TLS), openssl) 1811ifneq ($(CONFIG_TLS), wolfssl) 1812$(error CONFIG_FIPS=y requires CONFIG_TLS=openssl) 1813endif 1814endif 1815endif 1816 1817OBJS += $(SHA1OBJS) $(DESOBJS) 1818 1819OBJS_p += $(SHA1OBJS) 1820OBJS_p += $(SHA256OBJS) 1821OBJS_priv += $(SHA1OBJS) 1822 1823ifdef CONFIG_BGSCAN_SIMPLE 1824CFLAGS += -DCONFIG_BGSCAN_SIMPLE 1825OBJS += bgscan_simple.o 1826NEED_BGSCAN=y 1827endif 1828 1829ifdef CONFIG_BGSCAN_LEARN 1830CFLAGS += -DCONFIG_BGSCAN_LEARN 1831OBJS += bgscan_learn.o 1832NEED_BGSCAN=y 1833endif 1834 1835ifdef NEED_BGSCAN 1836CFLAGS += -DCONFIG_BGSCAN 1837OBJS += bgscan.o 1838endif 1839 1840ifdef CONFIG_AUTOSCAN_EXPONENTIAL 1841CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL 1842OBJS += autoscan_exponential.o 1843NEED_AUTOSCAN=y 1844endif 1845 1846ifdef CONFIG_AUTOSCAN_PERIODIC 1847CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC 1848OBJS += autoscan_periodic.o 1849NEED_AUTOSCAN=y 1850endif 1851 1852ifdef NEED_AUTOSCAN 1853CFLAGS += -DCONFIG_AUTOSCAN 1854OBJS += autoscan.o 1855endif 1856 1857ifdef CONFIG_EXT_PASSWORD_TEST 1858OBJS += ../src/utils/ext_password_test.o 1859CFLAGS += -DCONFIG_EXT_PASSWORD_TEST 1860NEED_EXT_PASSWORD=y 1861endif 1862 1863ifdef CONFIG_EXT_PASSWORD_FILE 1864OBJS += ../src/utils/ext_password_file.o 1865CFLAGS += -DCONFIG_EXT_PASSWORD_FILE 1866NEED_EXT_PASSWORD=y 1867endif 1868 1869ifdef NEED_EXT_PASSWORD 1870OBJS += ../src/utils/ext_password.o 1871CFLAGS += -DCONFIG_EXT_PASSWORD 1872endif 1873 1874ifdef NEED_GAS_SERVER 1875OBJS += ../src/common/gas_server.o 1876CFLAGS += -DCONFIG_GAS_SERVER 1877NEED_GAS=y 1878endif 1879 1880ifdef NEED_GAS 1881OBJS += ../src/common/gas.o 1882OBJS += gas_query.o 1883CFLAGS += -DCONFIG_GAS 1884NEED_OFFCHANNEL=y 1885endif 1886 1887ifdef NEED_OFFCHANNEL 1888OBJS += offchannel.o 1889CFLAGS += -DCONFIG_OFFCHANNEL 1890endif 1891 1892ifdef NEED_JSON 1893OBJS += ../src/utils/json.o 1894CFLAGS += -DCONFIG_JSON 1895endif 1896 1897ifdef CONFIG_MODULE_TESTS 1898CFLAGS += -DCONFIG_MODULE_TESTS 1899OBJS += wpas_module_tests.o 1900OBJS += ../src/utils/utils_module_tests.o 1901OBJS += ../src/common/common_module_tests.o 1902OBJS += ../src/crypto/crypto_module_tests.o 1903ifdef CONFIG_WPS 1904OBJS += ../src/wps/wps_module_tests.o 1905endif 1906endif 1907 1908OBJS += ../src/drivers/driver_common.o 1909OBJS_priv += ../src/drivers/driver_common.o 1910 1911OBJS += wpa_supplicant.o events.o bssid_ignore.o wpas_glue.o scan.o 1912OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o 1913OBJS_t += ../src/radius/radius_client.o 1914OBJS_t += ../src/radius/radius.o 1915OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o 1916 1917OBJS_nfc := $(OBJS) $(OBJS_l2) nfc_pw_token.o 1918OBJS_nfc += $(OBJS_d) ../src/drivers/drivers.o 1919 1920OBJS += $(CONFIG_MAIN).o 1921 1922ifdef CONFIG_PRIVSEP 1923OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o 1924OBJS_priv += $(OBJS_l2) 1925OBJS_priv += ../src/utils/os_$(CONFIG_OS).o 1926OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o 1927OBJS_priv += ../src/utils/common.o 1928OBJS_priv += ../src/utils/wpa_debug.o 1929OBJS_priv += ../src/utils/wpabuf.o 1930OBJS_priv += wpa_priv.o 1931ifdef CONFIG_DRIVER_NL80211 1932OBJS_priv += ../src/common/ieee802_11_common.o 1933endif 1934OBJS += ../src/l2_packet/l2_packet_privsep.o 1935OBJS += ../src/drivers/driver_privsep.o 1936EXTRA_progs += wpa_priv 1937else 1938OBJS += $(OBJS_d) ../src/drivers/drivers.o 1939OBJS += $(OBJS_l2) 1940endif 1941 1942ifdef CONFIG_NDIS_EVENTS_INTEGRATED 1943CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED 1944OBJS += ../src/drivers/ndis_events.o 1945EXTRALIBS += -loleaut32 -lole32 -luuid 1946ifdef PLATFORMSDKLIB 1947EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib 1948else 1949EXTRALIBS += WbemUuid.Lib 1950endif 1951endif 1952 1953ifdef CONFIG_FST 1954CFLAGS += -DCONFIG_FST 1955ifdef CONFIG_FST_TEST 1956CFLAGS += -DCONFIG_FST_TEST 1957endif 1958FST_OBJS += ../src/fst/fst.o 1959FST_OBJS += ../src/fst/fst_session.o 1960FST_OBJS += ../src/fst/fst_iface.o 1961FST_OBJS += ../src/fst/fst_group.o 1962FST_OBJS += ../src/fst/fst_ctrl_aux.o 1963ifdef CONFIG_CTRL_IFACE 1964FST_OBJS += ../src/fst/fst_ctrl_iface.o 1965endif 1966OBJS += $(FST_OBJS) 1967OBJS_t += $(FST_OBJS) 1968OBJS_t2 += $(FST_OBJS) 1969OBJS_nfc += $(FST_OBJS) 1970endif 1971 1972ifdef CONFIG_WEP 1973CFLAGS += -DCONFIG_WEP 1974endif 1975 1976ifdef CONFIG_NO_TKIP 1977CFLAGS += -DCONFIG_NO_TKIP 1978endif 1979 1980dynamic_eap_methods: $(EAPDYN) 1981 1982_OBJS_VAR := OBJS_priv 1983include ../src/objs.mk 1984wpa_priv: $(BCHECK) $(OBJS_priv) 1985 $(Q)$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS) 1986 @$(E) " LD " $@ 1987 1988_OBJS_VAR := OBJS 1989include ../src/objs.mk 1990$(COPY_OBJS): $(OBJS) 1991 cp $(OBJS) ../build/objs > /dev/null 2>&1 1992 1993#wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs) 1994# $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) -lm -lpthread 1995# @$(E) " LD " $@ 1996 1997eapol_test: $(OBJS_t) 1998 $(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS) 1999 @$(E) " LD " $@ 2000 2001_OBJS_VAR := OBJS_t2 2002include ../src/objs.mk 2003preauth_test: $(OBJS_t2) 2004 $(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS) 2005 @$(E) " LD " $@ 2006 2007_OBJS_VAR := OBJS_p 2008include ../src/objs.mk 2009wpa_passphrase: $(OBJS_p) 2010 $(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) $(LIBS) 2011 @$(E) " LD " $@ 2012 2013_OBJS_VAR := OBJS_c 2014include ../src/objs.mk 2015wpa_cli: $(OBJS_c) 2016 $(Q)$(LDO) --static $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c) 2017 @$(E) " LD " $@ 2018 2019LIBCTRL += ../src/common/wpa_ctrl.o 2020LIBCTRL += ../src/utils/os_$(CONFIG_OS).o 2021LIBCTRL += ../src/utils/common.o 2022LIBCTRL += ../src/utils/wpa_debug.o 2023LIBCTRLSO += ../src/common/wpa_ctrl.c 2024LIBCTRLSO += ../src/utils/os_$(CONFIG_OS).c 2025LIBCTRLSO += ../src/utils/common.c 2026LIBCTRLSO += ../src/utils/wpa_debug.c 2027 2028ifeq ($(LIB_TYPE), 0) 2029OBJS += ../src/common/wpa_ctrl.o 2030OBJS += ../src/utils/os_$(CONFIG_OS).o 2031OBJS += ../src/utils/common.o 2032OBJS += ../src/utils/wpa_debug.o 2033endif 2034 2035libwpa_client.a: $(LIBCTRL) 2036 $(Q)rm -f $@ 2037 $(Q)$(AR) crs $@ $? 2038 @$(E) " AR " $@ 2039 cp $@ ../build 2040 2041libwpa_client.so: $(LIBCTRLSO) 2042 @$(E) " CC $@ ($^)" 2043 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -fPIC $^ 2044 cp $@ ../build 2045 2046OBJS_wpatest := libwpa_test.o 2047_OBJS_VAR := OBJS_wpatest 2048include ../src/objs.mk 2049libwpa_test1: $(OBJS_wpatest) libwpa_client.a 2050 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test1 $(OBJS_wpatest) libwpa_client.a $(LIBS_c) 2051 @$(E) " LD " $@ 2052 2053libwpa_test2: $(OBJS_wpatest) libwpa_client.so 2054 $(Q)$(LDO) $(LDFLAGS) -o libwpa_test2 $(OBJS_wpatest) -L. -lwpa_client $(LIBS_c) 2055 @$(E) " LD " $@ 2056 2057_OBJS_VAR := OBJS_nfc 2058include ../src/objs.mk 2059nfc_pw_token: $(OBJS_nfc) 2060 $(Q)$(LDO) $(LDFLAGS) -o nfc_pw_token $(OBJS_nfc) $(LIBS) 2061 @$(E) " LD " $@ 2062 2063win_if_list: win_if_list.c 2064 $(Q)$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w) 2065 @$(E) " LD " $@ 2066 2067eap_psk.so: $(SRC_EAP_PSK) 2068 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2069 -Deap_peer_psk_register=eap_peer_method_dynamic_init 2070 @$(E) " CC/LD " $@ 2071 2072eap_pax.so: $(SRC_EAP_PAX) 2073 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2074 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2075 @$(E) " CC/LD " $@ 2076 2077eap_peap.so: $(SRC_EAP_PEAP) 2078 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2079 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2080 @$(E) " CC/LD " $@ 2081 2082eap_sake.so: $(SRC_EAP_SAKE) 2083 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2084 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2085 @$(E) " CC/LD " $@ 2086 2087eap_ikev2.so: $(SRC_EAP_IKEV2) 2088 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2089 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2090 @$(E) " CC/LD " $@ 2091 2092eap_eke.so: $(SRC_EAP_EKE) 2093 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2094 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2095 @$(E) " CC/LD " $@ 2096 2097eap_mschapv2.so: $(SRC_EAP_MSCHAPV2) 2098 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2099 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2100 @$(E) " CC/LD " $@ 2101 2102eap_fast.so: $(SRC_EAP_FAST) 2103 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2104 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2105 @$(E) " CC/LD " $@ 2106 2107eap_teap.so: $(SRC_EAP_TEAP) 2108 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2109 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2110 @$(E) " CC/LD " $@ 2111 2112eap_gpsk.so: $(SRC_EAP_GPSK) 2113 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ 2114 -D$(@F:eap_%.so=eap_peer_%)_register=eap_peer_method_dynamic_init 2115 @$(E) " CC/LD " $@ 2116 2117%.so: ../src/eap_peer/%.c 2118 $(Q)$(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \ 2119 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init 2120 @$(E) " CC/LD " $@ 2121 2122%.service: %.service.in 2123 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ 2124 @$(E) " sed" $< 2125 2126%@.service: %.service.arg.in 2127 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ 2128 @$(E) " sed" $< 2129 2130wpa_supplicant.exe: wpa_supplicant 2131 mv -f $< $@ 2132wpa_cli.exe: wpa_cli 2133 mv -f $< $@ 2134wpa_passphrase.exe: wpa_passphrase 2135 mv -f $< $@ 2136win_if_list.exe: win_if_list 2137 mv -f $< $@ 2138eapol_test.exe: eapol_test 2139 mv -f $< $@ 2140 2141WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe 2142 2143windows-bin: $(WINALL) 2144 $(STRIP) $(WINALL) 2145 2146wpa_gui: 2147 @echo "wpa_gui has been removed - see wpa_gui-qt4 for replacement" 2148 2149wpa_gui-qt4/Makefile: 2150 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro 2151 2152wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts 2153 lrelease wpa_gui-qt4/wpa_gui.pro 2154 2155wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm 2156 $(MAKE) -C wpa_gui-qt4 2157 2158FIPSDIR=/usr/local/ssl/fips-2.0 2159FIPSLD=$(FIPSDIR)/bin/fipsld 2160fips: 2161 $(MAKE) CC=$(FIPSLD) FIPSLD_CC="$(CC)" 2162 2163.PHONY: lcov-html 2164lcov-html: $(call BUILDOBJ,wpa_supplicant.gcda) 2165 lcov -c -d $(BUILDDIR) > lcov.info 2166 genhtml lcov.info --output-directory lcov-html 2167 2168clean: common-clean 2169 $(MAKE) -C ../src clean 2170 $(MAKE) -C ./dbus clean 2171 rm -f core *~ *.o *.d *.gcno *.gcda *.gcov 2172 rm -f eap_*.so $(WINALL) eapol_test preauth_test 2173 rm -f wpa_priv 2174 rm -f nfc_pw_token 2175 rm -f lcov.info 2176 rm -rf lcov-html 2177 rm -f libwpa_client.a 2178 rm -f libwpa_client.so 2179 rm -f libwpa_test1 libwpa_test2 2180