1#ifeq ($(KERNEL_TYPE), linux) 2#CC=arm-himix410-linux-gcc 3#LD=arm-himix410-linux-ld 4#else 5#CC=../../../../prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-gcc 6#endif 7LD:=$(abspath ../../../../prebuilts/clang/host/linux-x86/clang-r353983c/bin/clang) 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 18ifdef LIBS 19# If LIBS is set with some global build system defaults, clone those for 20# LIBS_c, LIBS_h, and LIBS_n to cover hostapd_cli, hlr_auc_gw, and 21# nt_password_hash as well. 22ifndef LIBS_c 23LIBS_c := $(LIBS) 24endif 25ifndef LIBS_h 26LIBS_h := $(LIBS) 27endif 28ifndef LIBS_n 29LIBS_n := $(LIBS) 30endif 31endif 32 33CFLAGS += $(EXTRA_CFLAGS) 34CFLAGS += -I$(abspath ../src) 35CFLAGS += -I$(abspath ../src/utils) 36CFLAGS += -I$(abspath ../src/drivers) 37CFLAGS += -I$(abspath ./) 38CFLAGS += -I$(abspath ../os_dep/include) 39CFLAGS += -I$(abspath ../../../../drivers/framework/include) 40CFLAGS += -I$(abspath ../../../../drivers/framework/include/utils) 41CFLAGS += -I$(abspath ../../../../drivers/framework/utils/include) 42CFLAGS += -I$(abspath ../../../../drivers/framework/include/osal) 43CFLAGS += -I$(abspath ../../../../third_party/bounds_checking_function/include) 44CFLAGS += -I$(abspath ../../../../drivers/framework/ability/sbuf/include) 45CFLAGS += -I$(abspath ../../../../drivers/framework/include/core) 46CFLAGS += -I$(abspath ../../../../drivers/framework/core/adapter/syscall/include) 47CFLAGS += -I$(abspath ../../../../drivers/adapter/uhdf/posix/include) 48CFLAGS += -I$(abspath ../../../../drivers/adapter/uhdf2/osal/include) 49CFLAGS += -I$(abspath ../../../../drivers/framework/core/shared/include) 50CFLAGS += -I$(abspath ../../../../drivers/peripheral/wlan/client/include) 51CFLAGS += -I$(abspath ../../../../base/hiviewdfx/hilog/interfaces/native/innerkits/include) 52CFLAGS += -I$(abspath ../build/include) 53CFLAGS += -I$(abspath ../../../../${AOSP_LIBS_DIR}/ndk/sysroot/usr/include) 54CFLAGS += -I$(abspath ../../../../${AOSP_LIBS_DIR}/ndk/sysroot/usr/include/arm-linux-androideabi) 55CFLAGS += -shared -fPIC 56CFLAGS += -fstack-protector-all 57CFLAGS += -DUSERSPACE_CLIENT_SUPPORT 58DEPDIR_WIFIDRIVERCLIENT = $(abspath ../../../../out/ohos-arm-release/common/common) 59DEPDIR_HDFUTILS = $(abspath ../../../../out/ohos-arm-release/hdf/hdf) 60DEPDIR_HILOG = $(abspath ../../../../out/ohos-arm-release/hiviewdfx/hilog/) 61DEPDIR_SEC = $(abspath ../../../../device/hisilicon/hispark_taurus/sdk_linux/soc/lib/) 62LIBS += -L$(DEPDIR_HDFUTILS) -lhdf_utils.z -L$(DEPDIR_HILOG) -lhilog -L$(DEPDIR_WIFIDRIVERCLIENT) -lwifi_driver_client.z -L$(DEPDIR_SEC) -lsecurec 63 64export BINDIR ?= /usr/local/bin/ 65 66-include .config 67 68ifeq ($(COMPILER_TYPE), clang) 69CC := $(abspath ../../../../prebuilts/clang/host/linux-x86/clang-r353983c/bin/clang) 70CFLAGS += --target=arm-linux-androideabi 71CFLAGS += -march=armv7-a 72CFLAGS += -mfloat-abi=softfp 73CFLAGS += --sysroot=../../../../${AOSP_LIBS_DIR}/ndk/platforms/current/arch-arm 74 75LDFLAGS = -fuse-ld=lld 76LDFLAGS += --target=arm-linux-androideabi 77LDFLAGS += --sysroot=../../../../${AOSP_LIBS_DIR}/ndk/platforms/current/arch-arm 78DEPDIR_LIBC = $(abspath ../../../../${AOSP_LIBS_DIR}/ndk/platforms/current/arch-arm/usr/lib) 79LDFLAGS += -L$(DEPDIR_LIBC) -lc -ldl 80LDFLAGS += -nodefaultlibs 81LDFLAGS += -Wl,--exclude-libs=libunwind_llvm.a 82LDFLAGS += -lunwind_llvm 83LDFLAGS += -Wl,--exclude-libs=libclang_rt.builtins-arm-android.a 84LDFLAGS += $(abspath ../../../../prebuilts/clang/host/linux-x86/clang-r353983c/lib64/clang/9.0.3/lib/linux/libclang_rt.builtins-arm-android.a) 85endif 86 87ifndef CONFIG_NO_GITVER 88# Add VERSION_STR postfix for builds from a git repository 89ifeq ($(wildcard ../.git),../.git) 90GITVER := $(shell git describe --dirty=+) 91ifneq ($(GITVER),) 92CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\" 93endif 94endif 95endif 96 97ifdef CONFIG_TESTING_OPTIONS 98CFLAGS += -DCONFIG_TESTING_OPTIONS 99CONFIG_WPS_TESTING=y 100endif 101 102ifndef CONFIG_OS 103ifdef CONFIG_NATIVE_WINDOWS 104CONFIG_OS=win32 105else 106CONFIG_OS=unix 107endif 108endif 109 110ifeq ($(CONFIG_OS), internal) 111CFLAGS += -DOS_NO_C_LIB_DEFINES 112endif 113 114ifdef CONFIG_NATIVE_WINDOWS 115CFLAGS += -DCONFIG_NATIVE_WINDOWS 116LIBS += -lws2_32 117endif 118 119OBJS += ap_main.o 120OBJS += ap_config_file.o 121 122OBJS += ../src/ap/hostapd.o 123OBJS += ../src/ap/wpa_auth_glue.o 124OBJS += ../src/ap/drv_callbacks.o 125OBJS += ../src/ap/ap_drv_ops.o 126OBJS += ../src/ap/utils.o 127OBJS += ../src/ap/authsrv.o 128OBJS += ../src/ap/ieee802_1x.o 129OBJS += ../src/ap/ap_config.o 130OBJS += ../src/ap/eap_user_db.o 131OBJS += ../src/ap/ieee802_11_auth.o 132OBJS += ../src/ap/sta_info.o 133OBJS += ../src/ap/wpa_auth.o 134OBJS += ../src/ap/tkip_countermeasures.o 135OBJS += ../src/ap/ap_mlme.o 136OBJS += ../src/ap/wpa_auth_ie.o 137OBJS += ../src/ap/preauth_auth.o 138OBJS += ../src/ap/pmksa_cache_auth.o 139OBJS += ../src/ap/ieee802_11_shared.o 140OBJS += ../src/ap/beacon.o 141OBJS += ../src/ap/bss_load.o 142OBJS += ../src/ap/neighbor_db.o 143OBJS += ../src/ap/ap_rrm.o 144 145OBJS_c = hostapd_cli.o 146OBJS_c += ../src/common/wpa_ctrl.o 147OBJS_c += ../src/utils/os_$(CONFIG_OS).o 148OBJS_c += ../src/common/cli.o 149 150NEED_RC4=y 151NEED_AES=y 152NEED_MD5=y 153NEED_SHA1=y 154 155OBJS += ../src/drivers/drivers.o 156CFLAGS += -DHOSTAPD 157 158ifdef CONFIG_TAXONOMY 159CFLAGS += -DCONFIG_TAXONOMY 160OBJS += ../src/ap/taxonomy.o 161endif 162 163ifdef CONFIG_MODULE_TESTS 164CFLAGS += -DCONFIG_MODULE_TESTS 165OBJS += hapd_module_tests.o 166endif 167 168ifdef CONFIG_WPA_TRACE 169CFLAGS += -DWPA_TRACE 170OBJS += ../src/utils/trace.o 171HOBJS += ../src/utils/trace.o 172LDFLAGS += -rdynamic 173CFLAGS += -funwind-tables 174ifdef CONFIG_WPA_TRACE_BFD 175CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD 176LIBS += -lbfd -ldl -liberty -lz 177LIBS_c += -lbfd -ldl -liberty -lz 178LIBS_h += -lbfd -ldl -liberty -lz 179endif 180endif 181 182ifndef CONFIG_ELOOP 183CONFIG_ELOOP=eloop 184endif 185OBJS += ../src/utils/$(CONFIG_ELOOP).o 186OBJS_c += ../src/utils/$(CONFIG_ELOOP).o 187 188ifeq ($(CONFIG_ELOOP), eloop) 189# Using glibc < 2.17 requires -lrt for clock_gettime() 190#LIBS += -lrt 191#LIBS_c += -lrt 192#LIBS_h += -lrt 193#LIBS_n += -lrt 194endif 195 196ifdef CONFIG_ELOOP_POLL 197CFLAGS += -DCONFIG_ELOOP_POLL 198endif 199 200ifdef CONFIG_ELOOP_EPOLL 201CFLAGS += -DCONFIG_ELOOP_EPOLL 202endif 203 204ifdef CONFIG_ELOOP_KQUEUE 205CFLAGS += -DCONFIG_ELOOP_KQUEUE 206endif 207 208OBJS += ../src/utils/common.o 209OBJS_c += ../src/utils/common.o 210OBJS += ../src/utils/wpa_debug.o 211OBJS_c += ../src/utils/wpa_debug.o 212OBJS += ../src/utils/wpabuf.o 213OBJS += ../src/utils/os_$(CONFIG_OS).o 214OBJS += ../src/utils/ip_addr.o 215 216OBJS += ../src/common/ieee802_11_common.o 217OBJS += ../src/common/wpa_common.o 218OBJS += ../src/common/hw_features_common.o 219 220OBJS += ../src/eapol_auth/eapol_auth_sm.o 221 222 223ifdef CONFIG_CODE_COVERAGE 224CFLAGS += -O0 -fprofile-arcs -ftest-coverage 225LIBS += -lgcov 226LIBS_c += -lgcov 227LIBS_h += -lgcov 228LIBS_n += -lgcov 229endif 230 231ifndef CONFIG_NO_DUMP_STATE 232# define HOSTAPD_DUMP_STATE to include support for dumping internal state 233# through control interface commands (undefine it, if you want to save in 234# binary size) 235CFLAGS += -DHOSTAPD_DUMP_STATE 236OBJS += ../src/eapol_auth/eapol_auth_dump.o 237endif 238 239ifdef CONFIG_NO_RADIUS 240CFLAGS += -DCONFIG_NO_RADIUS 241CONFIG_NO_ACCOUNTING=y 242else 243OBJS += ../src/radius/radius.o 244OBJS += ../src/radius/radius_client.o 245OBJS += ../src/radius/radius_das.o 246endif 247 248ifdef CONFIG_NO_ACCOUNTING 249CFLAGS += -DCONFIG_NO_ACCOUNTING 250else 251OBJS += ../src/ap/accounting.o 252endif 253 254ifdef CONFIG_NO_VLAN 255CFLAGS += -DCONFIG_NO_VLAN 256else 257OBJS += ../src/ap/vlan_init.o 258OBJS += ../src/ap/vlan_ifconfig.o 259OBJS += ../src/ap/vlan.o 260ifdef CONFIG_FULL_DYNAMIC_VLAN 261# Define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges 262# and VLAN interfaces for the VLAN feature. 263CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN 264OBJS += ../src/ap/vlan_full.o 265ifdef CONFIG_VLAN_NETLINK 266OBJS += ../src/ap/vlan_util.o 267else 268OBJS += ../src/ap/vlan_ioctl.o 269endif 270endif 271endif 272 273ifdef CONFIG_NO_CTRL_IFACE 274CFLAGS += -DCONFIG_NO_CTRL_IFACE 275else 276ifeq ($(CONFIG_CTRL_IFACE), udp) 277CFLAGS += -DCONFIG_CTRL_IFACE_UDP 278else 279ifeq ($(CONFIG_CTRL_IFACE), udp6) 280CFLAGS += -DCONFIG_CTRL_IFACE_UDP 281CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6 282else 283ifeq ($(CONFIG_CTRL_IFACE), udp-remote) 284CFLAGS += -DCONFIG_CTRL_IFACE_UDP 285CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE 286else 287ifeq ($(CONFIG_CTRL_IFACE), udp6-remote) 288CFLAGS += -DCONFIG_CTRL_IFACE_UDP 289CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE 290CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6 291else 292CFLAGS += -DCONFIG_CTRL_IFACE_UNIX 293endif 294endif 295endif 296endif 297OBJS += ../src/common/ctrl_iface_common.o 298OBJS += ap_ctrl_iface.o 299OBJS += ../src/ap/ctrl_iface_ap.o 300endif 301 302ifndef CONFIG_NO_CTRL_IFACE 303CFLAGS += -DCONFIG_CTRL_IFACE 304endif 305 306ifdef CONFIG_IAPP 307CFLAGS += -DCONFIG_IAPP 308OBJS += ../src/ap/iapp.o 309endif 310 311ifdef CONFIG_RSN_PREAUTH 312CFLAGS += -DCONFIG_RSN_PREAUTH 313#CONFIG_L2_PACKET=y 314endif 315 316ifdef CONFIG_HS20 317NEED_AES_OMAC1=y 318CONFIG_PROXYARP=y 319endif 320 321ifdef CONFIG_PROXYARP 322#CONFIG_L2_PACKET=y 323endif 324 325ifdef CONFIG_SUITEB 326CFLAGS += -DCONFIG_SUITEB 327NEED_SHA256=y 328NEED_AES_OMAC1=y 329endif 330 331ifdef CONFIG_SUITEB192 332CFLAGS += -DCONFIG_SUITEB192 333NEED_SHA384=y 334endif 335 336ifdef CONFIG_OCV 337CFLAGS += -DCONFIG_OCV 338OBJS += ../src/common/ocv.o 339CONFIG_IEEE80211W=y 340endif 341 342ifdef CONFIG_IEEE80211W 343CFLAGS += -DCONFIG_IEEE80211W 344NEED_SHA256=y 345NEED_AES_OMAC1=y 346endif 347 348ifdef CONFIG_IEEE80211R 349CFLAGS += -DCONFIG_IEEE80211R -DCONFIG_IEEE80211R_AP 350OBJS += ../src/ap/wpa_auth_ft.o 351NEED_SHA256=y 352NEED_AES_OMAC1=y 353NEED_AES_UNWRAP=y 354NEED_AES_SIV=y 355NEED_ETH_P_OUI=y 356NEED_SHA256=y 357NEED_HMAC_SHA256_KDF=y 358endif 359 360ifdef NEED_ETH_P_OUI 361CFLAGS += -DCONFIG_ETH_P_OUI 362OBJS += ../src/ap/eth_p_oui.o 363endif 364 365ifdef CONFIG_SAE 366CFLAGS += -DCONFIG_SAE 367OBJS += ../src/common/sae.o 368NEED_ECC=y 369NEED_DH_GROUPS=y 370NEED_AP_MLME=y 371NEED_DRAGONFLY=y 372endif 373 374ifdef CONFIG_OWE 375CFLAGS += -DCONFIG_OWE 376NEED_ECC=y 377NEED_HMAC_SHA256_KDF=y 378NEED_HMAC_SHA384_KDF=y 379NEED_HMAC_SHA512_KDF=y 380NEED_SHA256=y 381NEED_SHA384=y 382NEED_SHA512=y 383endif 384 385ifdef CONFIG_AIRTIME_POLICY 386CFLAGS += -DCONFIG_AIRTIME_POLICY 387OBJS += ../src/ap/airtime_policy.o 388endif 389 390ifdef CONFIG_FILS 391CFLAGS += -DCONFIG_FILS 392OBJS += ../src/ap/fils_hlp.o 393NEED_SHA384=y 394NEED_AES_SIV=y 395ifdef CONFIG_FILS_SK_PFS 396CFLAGS += -DCONFIG_FILS_SK_PFS 397NEED_ECC=y 398endif 399endif 400 401ifdef CONFIG_WNM 402CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP 403OBJS += ../src/ap/wnm_ap.o 404endif 405 406ifdef CONFIG_IEEE80211N 407CFLAGS += -DCONFIG_IEEE80211N 408endif 409 410ifdef CONFIG_IEEE80211AC 411CFLAGS += -DCONFIG_IEEE80211AC 412endif 413 414ifdef CONFIG_IEEE80211AX 415CFLAGS += -DCONFIG_IEEE80211AX 416OBJS += ../src/ap/ieee802_11_he.o 417endif 418 419ifdef CONFIG_MBO 420CFLAGS += -DCONFIG_MBO 421OBJS += ../src/ap/mbo_ap.o 422endif 423 424include ../src/drivers/drivers.mak 425OBJS += $(DRV_AP_OBJS) 426CFLAGS += $(DRV_AP_CFLAGS) 427LDFLAGS += $(DRV_AP_LDFLAGS) 428LIBS += $(DRV_AP_LIBS) 429 430#ifdef CONFIG_L2_PACKET 431#ifdef CONFIG_DNET_PCAP 432#ifdef CONFIG_L2_FREEBSD 433#LIBS += -lpcap 434#OBJS += ../src/l2_packet/l2_packet_freebsd.o 435#else 436#LIBS += -ldnet -lpcap 437#OBJS += ../src/l2_packet/l2_packet_pcap.o 438#endif 439#else 440#OBJS += ../src/l2_packet/l2_packet_linux.o 441#endif 442#else 443#OBJS += ../src/l2_packet/l2_packet_none.o 444#endif 445 446ifndef CONFIG_L2_PACKET 447CONFIG_L2_PACKET=rtos 448endif 449 450OBJS += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o 451 452ifeq ($(CONFIG_L2_PACKET), pcap) 453ifdef CONFIG_WINPCAP 454CFLAGS += -DCONFIG_WINPCAP 455LIBS += -lwpcap -lpacket 456LIBS_w += -lwpcap 457else 458LIBS += -ldnet -lpcap 459endif 460endif 461 462ifeq ($(CONFIG_L2_PACKET), winpcap) 463LIBS += -lwpcap -lpacket 464LIBS_w += -lwpcap 465endif 466 467ifeq ($(CONFIG_L2_PACKET), freebsd) 468LIBS += -lpcap 469endif 470 471 472ifdef CONFIG_ERP 473CFLAGS += -DCONFIG_ERP 474NEED_SHA256=y 475NEED_HMAC_SHA256_KDF=y 476endif 477 478ifdef CONFIG_EAP_MD5 479CFLAGS += -DEAP_SERVER_MD5 480OBJS += ../src/eap_server/eap_server_md5.o 481CHAP=y 482endif 483 484ifdef CONFIG_EAP_TLS 485CFLAGS += -DEAP_SERVER_TLS 486OBJS += ../src/eap_server/eap_server_tls.o 487TLS_FUNCS=y 488endif 489 490ifdef CONFIG_EAP_UNAUTH_TLS 491CFLAGS += -DEAP_SERVER_UNAUTH_TLS 492ifndef CONFIG_EAP_TLS 493OBJS += ../src/eap_server/eap_server_tls.o 494TLS_FUNCS=y 495endif 496endif 497 498ifdef CONFIG_EAP_PEAP 499CFLAGS += -DEAP_SERVER_PEAP 500OBJS += ../src/eap_server/eap_server_peap.o 501OBJS += ../src/eap_common/eap_peap_common.o 502TLS_FUNCS=y 503CONFIG_EAP_MSCHAPV2=y 504endif 505 506ifdef CONFIG_EAP_TTLS 507CFLAGS += -DEAP_SERVER_TTLS 508OBJS += ../src/eap_server/eap_server_ttls.o 509TLS_FUNCS=y 510CHAP=y 511endif 512 513ifdef CONFIG_EAP_MSCHAPV2 514CFLAGS += -DEAP_SERVER_MSCHAPV2 515OBJS += ../src/eap_server/eap_server_mschapv2.o 516MS_FUNCS=y 517endif 518 519ifdef CONFIG_EAP_GTC 520CFLAGS += -DEAP_SERVER_GTC 521OBJS += ../src/eap_server/eap_server_gtc.o 522endif 523 524ifdef CONFIG_EAP_SIM 525CFLAGS += -DEAP_SERVER_SIM 526OBJS += ../src/eap_server/eap_server_sim.o 527CONFIG_EAP_SIM_COMMON=y 528NEED_AES_CBC=y 529endif 530 531ifdef CONFIG_EAP_AKA 532CFLAGS += -DEAP_SERVER_AKA 533OBJS += ../src/eap_server/eap_server_aka.o 534CONFIG_EAP_SIM_COMMON=y 535NEED_SHA256=y 536NEED_AES_CBC=y 537endif 538 539ifdef CONFIG_EAP_AKA_PRIME 540CFLAGS += -DEAP_SERVER_AKA_PRIME 541endif 542 543ifdef CONFIG_EAP_SIM_COMMON 544OBJS += ../src/eap_common/eap_sim_common.o 545# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be 546# replaced with another file implementating the interface specified in 547# eap_sim_db.h. 548OBJS += ../src/eap_server/eap_sim_db.o 549NEED_FIPS186_2_PRF=y 550endif 551 552ifdef CONFIG_EAP_PAX 553CFLAGS += -DEAP_SERVER_PAX 554OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o 555endif 556 557ifdef CONFIG_EAP_PSK 558CFLAGS += -DEAP_SERVER_PSK 559OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o 560NEED_AES_OMAC1=y 561NEED_AES_ENCBLOCK=y 562NEED_AES_EAX=y 563endif 564 565ifdef CONFIG_EAP_SAKE 566CFLAGS += -DEAP_SERVER_SAKE 567OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o 568endif 569 570ifdef CONFIG_EAP_GPSK 571CFLAGS += -DEAP_SERVER_GPSK 572OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o 573ifdef CONFIG_EAP_GPSK_SHA256 574CFLAGS += -DEAP_GPSK_SHA256 575endif 576NEED_SHA256=y 577NEED_AES_OMAC1=y 578endif 579 580ifdef CONFIG_EAP_PWD 581CFLAGS += -DEAP_SERVER_PWD 582OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o 583NEED_SHA256=y 584NEED_ECC=y 585NEED_DRAGONFLY=y 586endif 587 588ifdef CONFIG_EAP_EKE 589CFLAGS += -DEAP_SERVER_EKE 590OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o 591NEED_DH_GROUPS=y 592NEED_DH_GROUPS_ALL=y 593endif 594 595ifdef CONFIG_EAP_VENDOR_TEST 596CFLAGS += -DEAP_SERVER_VENDOR_TEST 597OBJS += ../src/eap_server/eap_server_vendor_test.o 598endif 599 600ifdef CONFIG_EAP_FAST 601CFLAGS += -DEAP_SERVER_FAST 602OBJS += ../src/eap_server/eap_server_fast.o 603OBJS += ../src/eap_common/eap_fast_common.o 604TLS_FUNCS=y 605NEED_T_PRF=y 606NEED_AES_UNWRAP=y 607endif 608 609ifdef CONFIG_EAP_TEAP 610CFLAGS += -DEAP_SERVER_TEAP 611OBJS += ../src/eap_server/eap_server_teap.o 612OBJS += ../src/eap_common/eap_teap_common.o 613TLS_FUNCS=y 614NEED_T_PRF=y 615NEED_SHA384=y 616NEED_AES_UNWRAP=y 617endif 618 619ifdef CONFIG_WPS 620CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC 621OBJS += ../src/utils/uuid.o 622OBJS += ../src/ap/wps_hostapd.o 623OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o 624OBJS += ../src/wps/wps.o 625OBJS += ../src/wps/wps_common.o 626OBJS += ../src/wps/wps_attr_parse.o 627OBJS += ../src/wps/wps_attr_build.o 628OBJS += ../src/wps/wps_attr_process.o 629OBJS += ../src/wps/wps_dev_attr.o 630OBJS += ../src/wps/wps_enrollee.o 631OBJS += ../src/wps/wps_registrar.o 632NEED_DH_GROUPS=y 633NEED_SHA256=y 634NEED_BASE64=y 635NEED_AES_CBC=y 636NEED_MODEXP=y 637CONFIG_EAP=y 638 639ifdef CONFIG_WPS_NFC 640CFLAGS += -DCONFIG_WPS_NFC 641OBJS += ../src/wps/ndef.o 642NEED_WPS_OOB=y 643endif 644 645ifdef NEED_WPS_OOB 646CFLAGS += -DCONFIG_WPS_OOB 647endif 648 649ifdef CONFIG_WPS_UPNP 650CFLAGS += -DCONFIG_WPS_UPNP 651OBJS += ../src/wps/wps_upnp.o 652OBJS += ../src/wps/wps_upnp_ssdp.o 653OBJS += ../src/wps/wps_upnp_web.o 654OBJS += ../src/wps/wps_upnp_event.o 655OBJS += ../src/wps/wps_upnp_ap.o 656OBJS += ../src/wps/upnp_xml.o 657OBJS += ../src/wps/httpread.o 658OBJS += ../src/wps/http_client.o 659OBJS += ../src/wps/http_server.o 660endif 661 662ifdef CONFIG_WPS_STRICT 663CFLAGS += -DCONFIG_WPS_STRICT 664OBJS += ../src/wps/wps_validate.o 665endif 666 667ifdef CONFIG_WPS_TESTING 668CFLAGS += -DCONFIG_WPS_TESTING 669endif 670 671endif 672 673ifdef CONFIG_DPP 674CFLAGS += -DCONFIG_DPP 675OBJS += ../src/common/dpp.o 676OBJS += ../src/ap/dpp_hostapd.o 677OBJS += ../src/ap/gas_query_ap.o 678NEED_AES_SIV=y 679NEED_HMAC_SHA256_KDF=y 680NEED_HMAC_SHA384_KDF=y 681NEED_HMAC_SHA512_KDF=y 682NEED_SHA256=y 683NEED_SHA384=y 684NEED_SHA512=y 685NEED_JSON=y 686NEED_GAS=y 687NEED_BASE64=y 688ifdef CONFIG_DPP2 689CFLAGS += -DCONFIG_DPP2 690endif 691endif 692 693ifdef CONFIG_EAP_IKEV2 694CFLAGS += -DEAP_SERVER_IKEV2 695OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o 696OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o 697NEED_DH_GROUPS=y 698NEED_DH_GROUPS_ALL=y 699NEED_MODEXP=y 700NEED_CIPHER=y 701endif 702 703ifdef CONFIG_EAP_TNC 704CFLAGS += -DEAP_SERVER_TNC 705OBJS += ../src/eap_server/eap_server_tnc.o 706OBJS += ../src/eap_server/tncs.o 707NEED_BASE64=y 708ifndef CONFIG_DRIVER_BSD 709LIBS += -ldl 710endif 711endif 712 713ifdef CONFIG_MACSEC 714CFLAGS += -DCONFIG_MACSEC 715OBJS += ../src/ap/wpa_auth_kay.o 716OBJS += ../src/pae/ieee802_1x_cp.o 717OBJS += ../src/pae/ieee802_1x_kay.o 718OBJS += ../src/pae/ieee802_1x_key.o 719OBJS += ../src/pae/ieee802_1x_secy_ops.o 720endif 721 722# Basic EAP functionality is needed for EAPOL 723OBJS += ap_eap_register.o 724OBJS += ../src/eap_server/eap_server.o 725OBJS += ../src/eap_common/eap_common.o 726OBJS += ../src/eap_server/eap_server_methods.o 727OBJS += ../src/eap_server/eap_server_identity.o 728CFLAGS += -DEAP_SERVER_IDENTITY 729 730ifdef CONFIG_EAP 731CFLAGS += -DEAP_SERVER 732endif 733 734ifdef CONFIG_PKCS12 735CFLAGS += -DPKCS12_FUNCS 736endif 737 738ifdef NEED_DRAGONFLY 739OBJS += ../src/common/dragonfly.o 740endif 741 742ifdef MS_FUNCS 743OBJS += ../src/crypto/ms_funcs.o 744NEED_DES=y 745NEED_MD4=y 746endif 747 748ifdef CHAP 749OBJS += ../src/eap_common/chap.o 750endif 751 752ifdef TLS_FUNCS 753NEED_DES=y 754# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS) 755CFLAGS += -DEAP_TLS_FUNCS 756OBJS += ../src/eap_server/eap_server_tls_common.o 757NEED_TLS_PRF=y 758endif 759 760ifndef CONFIG_TLS 761CONFIG_TLS=openssl 762endif 763 764ifdef CONFIG_TLSV11 765CFLAGS += -DCONFIG_TLSV11 766endif 767 768ifdef CONFIG_TLSV12 769CFLAGS += -DCONFIG_TLSV12 770NEED_SHA256=y 771endif 772 773ifeq ($(CONFIG_TLS), wolfssl) 774CONFIG_CRYPTO=wolfssl 775ifdef TLS_FUNCS 776OBJS += ../src/crypto/tls_wolfssl.o 777LIBS += -lwolfssl -lm 778endif 779OBJS += ../src/crypto/crypto_wolfssl.o 780HOBJS += ../src/crypto/crypto_wolfssl.o 781ifdef NEED_FIPS186_2_PRF 782OBJS += ../src/crypto/fips_prf_wolfssl.o 783endif 784NEED_SHA256=y 785NEED_TLS_PRF_SHA256=y 786LIBS += -lwolfssl -lm 787LIBS_h += -lwolfssl -lm 788ifdef CONFIG_TLS_ADD_DL 789LIBS += -ldl 790LIBS_h += -ldl 791endif 792endif 793 794ifeq ($(CONFIG_TLS), openssl) 795CONFIG_CRYPTO=openssl 796ifdef TLS_FUNCS 797OBJS += ../src/crypto/tls_openssl.o 798OBJS += ../src/crypto/tls_openssl_ocsp.o 799LIBS += -lssl 800endif 801OBJS += ../src/crypto/crypto_openssl.o 802HOBJS += ../src/crypto/crypto_openssl.o 803ifdef NEED_FIPS186_2_PRF 804OBJS += ../src/crypto/fips_prf_openssl.o 805endif 806NEED_SHA256=y 807NEED_TLS_PRF_SHA256=y 808LIBS += -lcrypto 809LIBS_h += -lcrypto 810LIBS_n += -lcrypto 811ifdef CONFIG_TLS_ADD_DL 812LIBS += -ldl 813LIBS_h += -ldl 814endif 815ifndef CONFIG_TLS_DEFAULT_CIPHERS 816CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW" 817endif 818CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\" 819endif 820 821ifeq ($(CONFIG_TLS), gnutls) 822ifndef CONFIG_CRYPTO 823# default to libgcrypt 824CONFIG_CRYPTO=gnutls 825endif 826ifdef TLS_FUNCS 827OBJS += ../src/crypto/tls_gnutls.o 828LIBS += -lgnutls -lgpg-error 829endif 830OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 831HOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 832ifdef NEED_FIPS186_2_PRF 833OBJS += ../src/crypto/fips_prf_internal.o 834SHA1OBJS += ../src/crypto/sha1-internal.o 835endif 836ifeq ($(CONFIG_CRYPTO), gnutls) 837LIBS += -lgcrypt 838LIBS_h += -lgcrypt 839LIBS_n += -lgcrypt 840CONFIG_INTERNAL_RC4=y 841CONFIG_INTERNAL_DH_GROUP5=y 842endif 843ifeq ($(CONFIG_CRYPTO), nettle) 844LIBS += -lnettle -lgmp 845LIBS_p += -lnettle -lgmp 846CONFIG_INTERNAL_RC4=y 847CONFIG_INTERNAL_DH_GROUP5=y 848endif 849endif 850 851ifeq ($(CONFIG_TLS), internal) 852ifndef CONFIG_CRYPTO 853CONFIG_CRYPTO=internal 854endif 855ifdef TLS_FUNCS 856OBJS += ../src/crypto/crypto_internal-rsa.o 857OBJS += ../src/crypto/tls_internal.o 858OBJS += ../src/tls/tlsv1_common.o 859OBJS += ../src/tls/tlsv1_record.o 860OBJS += ../src/tls/tlsv1_cred.o 861OBJS += ../src/tls/tlsv1_server.o 862OBJS += ../src/tls/tlsv1_server_write.o 863OBJS += ../src/tls/tlsv1_server_read.o 864OBJS += ../src/tls/asn1.o 865OBJS += ../src/tls/rsa.o 866OBJS += ../src/tls/x509v3.o 867OBJS += ../src/tls/pkcs1.o 868OBJS += ../src/tls/pkcs5.o 869OBJS += ../src/tls/pkcs8.o 870NEED_SHA256=y 871NEED_BASE64=y 872NEED_TLS_PRF=y 873ifdef CONFIG_TLSV12 874NEED_TLS_PRF_SHA256=y 875endif 876NEED_MODEXP=y 877NEED_CIPHER=y 878CFLAGS += -DCONFIG_TLS_INTERNAL 879CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 880endif 881ifdef NEED_CIPHER 882NEED_DES=y 883OBJS += ../src/crypto/crypto_internal-cipher.o 884endif 885ifdef NEED_MODEXP 886OBJS += ../src/crypto/crypto_internal-modexp.o 887OBJS += ../src/tls/bignum.o 888endif 889ifeq ($(CONFIG_CRYPTO), libtomcrypt) 890OBJS += ../src/crypto/crypto_libtomcrypt.o 891LIBS += -ltomcrypt -ltfm 892LIBS_h += -ltomcrypt -ltfm 893CONFIG_INTERNAL_SHA256=y 894CONFIG_INTERNAL_RC4=y 895CONFIG_INTERNAL_DH_GROUP5=y 896endif 897ifeq ($(CONFIG_CRYPTO), internal) 898OBJS += ../src/crypto/crypto_internal.o 899NEED_AES_DEC=y 900CFLAGS += -DCONFIG_CRYPTO_INTERNAL 901ifdef CONFIG_INTERNAL_LIBTOMMATH 902CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 903ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 904CFLAGS += -DLTM_FAST 905endif 906else 907LIBS += -ltommath 908LIBS_h += -ltommath 909endif 910CONFIG_INTERNAL_AES=y 911CONFIG_INTERNAL_DES=y 912CONFIG_INTERNAL_SHA1=y 913CONFIG_INTERNAL_MD4=y 914CONFIG_INTERNAL_MD5=y 915CONFIG_INTERNAL_SHA256=y 916CONFIG_INTERNAL_SHA384=y 917CONFIG_INTERNAL_SHA512=y 918CONFIG_INTERNAL_RC4=y 919CONFIG_INTERNAL_DH_GROUP5=y 920endif 921ifeq ($(CONFIG_CRYPTO), cryptoapi) 922OBJS += ../src/crypto/crypto_cryptoapi.o 923OBJS_p += ../src/crypto/crypto_cryptoapi.o 924CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 925CONFIG_INTERNAL_SHA256=y 926CONFIG_INTERNAL_RC4=y 927endif 928endif 929 930ifeq ($(CONFIG_TLS), linux) 931OBJS += ../src/crypto/crypto_linux.o 932ifdef TLS_FUNCS 933OBJS += ../src/crypto/crypto_internal-rsa.o 934OBJS += ../src/crypto/tls_internal.o 935OBJS += ../src/tls/tlsv1_common.o 936OBJS += ../src/tls/tlsv1_record.o 937OBJS += ../src/tls/tlsv1_cred.o 938OBJS += ../src/tls/tlsv1_server.o 939OBJS += ../src/tls/tlsv1_server_write.o 940OBJS += ../src/tls/tlsv1_server_read.o 941OBJS += ../src/tls/asn1.o 942OBJS += ../src/tls/rsa.o 943OBJS += ../src/tls/x509v3.o 944OBJS += ../src/tls/pkcs1.o 945OBJS += ../src/tls/pkcs5.o 946OBJS += ../src/tls/pkcs8.o 947NEED_SHA256=y 948NEED_BASE64=y 949NEED_TLS_PRF=y 950ifdef CONFIG_TLSV12 951NEED_TLS_PRF_SHA256=y 952endif 953NEED_MODEXP=y 954NEED_CIPHER=y 955CFLAGS += -DCONFIG_TLS_INTERNAL 956CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 957endif 958ifdef NEED_MODEXP 959OBJS += ../src/crypto/crypto_internal-modexp.o 960OBJS += ../src/tls/bignum.o 961CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 962CFLAGS += -DLTM_FAST 963endif 964CONFIG_INTERNAL_DH_GROUP5=y 965ifdef NEED_FIPS186_2_PRF 966OBJS += ../src/crypto/fips_prf_internal.o 967OBJS += ../src/crypto/sha1-internal.o 968endif 969endif 970 971ifeq ($(CONFIG_TLS), none) 972ifdef TLS_FUNCS 973OBJS += ../src/crypto/tls_none.o 974CFLAGS += -DEAP_TLS_NONE 975CONFIG_INTERNAL_AES=y 976CONFIG_INTERNAL_SHA1=y 977CONFIG_INTERNAL_MD5=y 978endif 979OBJS += ../src/crypto/crypto_none.o 980OBJS_p += ../src/crypto/crypto_none.o 981CONFIG_INTERNAL_SHA256=y 982CONFIG_INTERNAL_RC4=y 983endif 984 985ifndef TLS_FUNCS 986OBJS += ../src/crypto/tls_none.o 987ifeq ($(CONFIG_TLS), internal) 988CONFIG_INTERNAL_AES=y 989CONFIG_INTERNAL_SHA1=y 990CONFIG_INTERNAL_MD5=y 991CONFIG_INTERNAL_RC4=y 992endif 993endif 994 995AESOBJS = # none so far 996ifdef CONFIG_INTERNAL_AES 997AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o 998endif 999 1000ifneq ($(CONFIG_TLS), openssl) 1001ifneq ($(CONFIG_TLS), wolfssl) 1002AESOBJS += ../src/crypto/aes-wrap.o 1003endif 1004endif 1005ifdef NEED_AES_EAX 1006AESOBJS += ../src/crypto/aes-eax.o 1007NEED_AES_CTR=y 1008NEED_AES_OMAC1=y 1009endif 1010ifdef NEED_AES_SIV 1011AESOBJS += ../src/crypto/aes-siv.o 1012NEED_AES_CTR=y 1013NEED_AES_OMAC1=y 1014endif 1015ifdef NEED_AES_CTR 1016AESOBJS += ../src/crypto/aes-ctr.o 1017endif 1018ifdef NEED_AES_ENCBLOCK 1019AESOBJS += ../src/crypto/aes-encblock.o 1020endif 1021ifdef NEED_AES_OMAC1 1022ifneq ($(CONFIG_TLS), linux) 1023ifneq ($(CONFIG_TLS), wolfssl) 1024AESOBJS += ../src/crypto/aes-omac1.o 1025endif 1026endif 1027endif 1028ifdef NEED_AES_UNWRAP 1029ifneq ($(CONFIG_TLS), openssl) 1030ifneq ($(CONFIG_TLS), linux) 1031ifneq ($(CONFIG_TLS), wolfssl) 1032NEED_AES_DEC=y 1033AESOBJS += ../src/crypto/aes-unwrap.o 1034endif 1035endif 1036endif 1037endif 1038ifdef NEED_AES_CBC 1039NEED_AES_DEC=y 1040ifneq ($(CONFIG_TLS), openssl) 1041ifneq ($(CONFIG_TLS), linux) 1042ifneq ($(CONFIG_TLS), wolfssl) 1043AESOBJS += ../src/crypto/aes-cbc.o 1044endif 1045endif 1046endif 1047endif 1048ifdef NEED_AES_DEC 1049ifdef CONFIG_INTERNAL_AES 1050AESOBJS += ../src/crypto/aes-internal-dec.o 1051endif 1052endif 1053ifdef NEED_AES 1054OBJS += $(AESOBJS) 1055endif 1056 1057ifdef NEED_SHA1 1058ifneq ($(CONFIG_TLS), openssl) 1059ifneq ($(CONFIG_TLS), linux) 1060ifneq ($(CONFIG_TLS), gnutls) 1061ifneq ($(CONFIG_TLS), wolfssl) 1062SHA1OBJS += ../src/crypto/sha1.o 1063endif 1064endif 1065endif 1066endif 1067SHA1OBJS += ../src/crypto/sha1-prf.o 1068ifdef CONFIG_INTERNAL_SHA1 1069SHA1OBJS += ../src/crypto/sha1-internal.o 1070ifdef NEED_FIPS186_2_PRF 1071SHA1OBJS += ../src/crypto/fips_prf_internal.o 1072endif 1073endif 1074ifneq ($(CONFIG_TLS), openssl) 1075ifneq ($(CONFIG_TLS), wolfssl) 1076SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 1077endif 1078endif 1079ifdef NEED_T_PRF 1080SHA1OBJS += ../src/crypto/sha1-tprf.o 1081endif 1082ifdef NEED_TLS_PRF 1083SHA1OBJS += ../src/crypto/sha1-tlsprf.o 1084endif 1085endif 1086 1087ifdef NEED_SHA1 1088OBJS += $(SHA1OBJS) 1089endif 1090 1091ifneq ($(CONFIG_TLS), openssl) 1092ifneq ($(CONFIG_TLS), linux) 1093ifneq ($(CONFIG_TLS), gnutls) 1094ifneq ($(CONFIG_TLS), wolfssl) 1095OBJS += ../src/crypto/md5.o 1096endif 1097endif 1098endif 1099endif 1100 1101ifdef NEED_MD5 1102ifdef CONFIG_INTERNAL_MD5 1103OBJS += ../src/crypto/md5-internal.o 1104HOBJS += ../src/crypto/md5-internal.o 1105endif 1106endif 1107 1108ifdef NEED_MD4 1109ifdef CONFIG_INTERNAL_MD4 1110OBJS += ../src/crypto/md4-internal.o 1111endif 1112endif 1113 1114ifdef NEED_DES 1115CFLAGS += -DCONFIG_DES 1116ifdef CONFIG_INTERNAL_DES 1117OBJS += ../src/crypto/des-internal.o 1118endif 1119endif 1120 1121ifdef CONFIG_NO_RC4 1122CFLAGS += -DCONFIG_NO_RC4 1123endif 1124 1125ifdef NEED_RC4 1126ifdef CONFIG_INTERNAL_RC4 1127ifndef CONFIG_NO_RC4 1128OBJS += ../src/crypto/rc4.o 1129endif 1130endif 1131endif 1132 1133ifdef NEED_SHA256 1134CFLAGS += -DCONFIG_SHA256 1135ifneq ($(CONFIG_TLS), openssl) 1136ifneq ($(CONFIG_TLS), linux) 1137ifneq ($(CONFIG_TLS), gnutls) 1138ifneq ($(CONFIG_TLS), wolfssl) 1139OBJS += ../src/crypto/sha256.o 1140endif 1141endif 1142endif 1143endif 1144OBJS += ../src/crypto/sha256-prf.o 1145ifdef CONFIG_INTERNAL_SHA256 1146OBJS += ../src/crypto/sha256-internal.o 1147endif 1148ifdef NEED_TLS_PRF_SHA256 1149OBJS += ../src/crypto/sha256-tlsprf.o 1150endif 1151ifdef NEED_HMAC_SHA256_KDF 1152OBJS += ../src/crypto/sha256-kdf.o 1153endif 1154ifdef NEED_HMAC_SHA384_KDF 1155OBJS += ../src/crypto/sha384-kdf.o 1156endif 1157ifdef NEED_HMAC_SHA512_KDF 1158OBJS += ../src/crypto/sha512-kdf.o 1159endif 1160endif 1161ifdef NEED_SHA384 1162CFLAGS += -DCONFIG_SHA384 1163ifneq ($(CONFIG_TLS), openssl) 1164ifneq ($(CONFIG_TLS), linux) 1165ifneq ($(CONFIG_TLS), gnutls) 1166ifneq ($(CONFIG_TLS), wolfssl) 1167OBJS += ../src/crypto/sha384.o 1168endif 1169endif 1170endif 1171endif 1172OBJS += ../src/crypto/sha384-prf.o 1173endif 1174ifdef NEED_SHA512 1175CFLAGS += -DCONFIG_SHA512 1176ifneq ($(CONFIG_TLS), openssl) 1177ifneq ($(CONFIG_TLS), linux) 1178ifneq ($(CONFIG_TLS), gnutls) 1179ifneq ($(CONFIG_TLS), wolfssl) 1180OBJS += ../src/crypto/sha512.o 1181endif 1182endif 1183endif 1184endif 1185OBJS += ../src/crypto/sha512-prf.o 1186endif 1187 1188ifdef CONFIG_INTERNAL_SHA384 1189CFLAGS += -DCONFIG_INTERNAL_SHA384 1190OBJS += ../src/crypto/sha384-internal.o 1191endif 1192 1193ifdef CONFIG_INTERNAL_SHA512 1194CFLAGS += -DCONFIG_INTERNAL_SHA512 1195OBJS += ../src/crypto/sha512-internal.o 1196endif 1197 1198ifdef NEED_DH_GROUPS 1199OBJS += ../src/crypto/dh_groups.o 1200endif 1201ifdef NEED_DH_GROUPS_ALL 1202CFLAGS += -DALL_DH_GROUPS 1203endif 1204ifdef CONFIG_INTERNAL_DH_GROUP5 1205ifdef NEED_DH_GROUPS 1206OBJS += ../src/crypto/dh_group5.o 1207endif 1208endif 1209 1210ifdef NEED_ECC 1211CFLAGS += -DCONFIG_ECC 1212endif 1213 1214ifdef CONFIG_NO_RANDOM_POOL 1215CFLAGS += -DCONFIG_NO_RANDOM_POOL 1216else 1217ifdef CONFIG_GETRANDOM 1218CFLAGS += -DCONFIG_GETRANDOM 1219endif 1220OBJS += ../src/crypto/random.o 1221HOBJS += ../src/crypto/random.o 1222HOBJS += ../src/utils/eloop.o 1223HOBJS += $(SHA1OBJS) 1224ifneq ($(CONFIG_TLS), openssl) 1225ifneq ($(CONFIG_TLS), linux) 1226ifneq ($(CONFIG_TLS), wolfssl) 1227HOBJS += ../src/crypto/md5.o 1228endif 1229endif 1230endif 1231endif 1232 1233ifdef CONFIG_RADIUS_SERVER 1234CFLAGS += -DRADIUS_SERVER 1235OBJS += ../src/radius/radius_server.o 1236endif 1237 1238ifdef CONFIG_IPV6 1239CFLAGS += -DCONFIG_IPV6 1240endif 1241 1242ifdef CONFIG_DRIVER_RADIUS_ACL 1243CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL 1244endif 1245 1246ifdef NEED_BASE64 1247OBJS += ../src/utils/base64.o 1248endif 1249 1250ifdef NEED_JSON 1251OBJS += ../src/utils/json.o 1252CFLAGS += -DCONFIG_JSON 1253endif 1254 1255ifdef NEED_AP_MLME 1256OBJS += ../src/ap/wmm.o 1257OBJS += ../src/ap/ap_list.o 1258OBJS += ../src/ap/ieee802_11.o 1259OBJS += ../src/ap/hw_features.o 1260OBJS += ../src/ap/dfs.o 1261CFLAGS += -DNEED_AP_MLME 1262endif 1263ifdef CONFIG_IEEE80211N 1264OBJS += ../src/ap/ieee802_11_ht.o 1265endif 1266 1267ifdef CONFIG_IEEE80211AC 1268OBJS += ../src/ap/ieee802_11_vht.o 1269endif 1270 1271ifdef CONFIG_P2P_MANAGER 1272CFLAGS += -DCONFIG_P2P_MANAGER 1273OBJS += ../src/ap/p2p_hostapd.o 1274endif 1275 1276ifdef CONFIG_HS20 1277CFLAGS += -DCONFIG_HS20 1278OBJS += ../src/ap/hs20.o 1279CONFIG_INTERWORKING=y 1280endif 1281 1282ifdef CONFIG_INTERWORKING 1283CFLAGS += -DCONFIG_INTERWORKING 1284NEED_GAS=y 1285endif 1286 1287ifdef NEED_GAS 1288OBJS += ../src/common/gas.o 1289OBJS += ../src/ap/gas_serv.o 1290endif 1291 1292ifdef CONFIG_PROXYARP 1293CFLAGS += -DCONFIG_PROXYARP 1294OBJS += ../src/ap/x_snoop.o 1295OBJS += ../src/ap/dhcp_snoop.o 1296ifdef CONFIG_IPV6 1297OBJS += ../src/ap/ndisc_snoop.o 1298endif 1299endif 1300 1301OBJS += ../src/drivers/driver_common.o 1302 1303ifdef CONFIG_WPA_CLI_EDIT 1304OBJS_c += ../src/utils/edit.o 1305else 1306OBJS_c += ../src/utils/edit_simple.o 1307endif 1308 1309ifdef CONFIG_ACS 1310CFLAGS += -DCONFIG_ACS 1311OBJS += ../src/ap/acs.o 1312LIBS += -lm 1313endif 1314 1315#ifdef CONFIG_NO_STDOUT_DEBUG 1316ifneq ($(DEBUG), 1) 1317CFLAGS += -DCONFIG_WPA_NO_LOG 1318CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 1319endif 1320 1321ifdef CONFIG_DEBUG_SYSLOG 1322CFLAGS += -DCONFIG_DEBUG_SYSLOG 1323endif 1324 1325ifdef CONFIG_DEBUG_LINUX_TRACING 1326CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING 1327endif 1328 1329ifdef CONFIG_DEBUG_FILE 1330CFLAGS += -DCONFIG_DEBUG_FILE 1331endif 1332 1333ifdef CONFIG_SQLITE 1334CFLAGS += -DCONFIG_SQLITE 1335LIBS += -lsqlite3 1336LIBS_h += -lsqlite3 1337endif 1338 1339ifdef CONFIG_FST 1340CFLAGS += -DCONFIG_FST 1341OBJS += ../src/fst/fst.o 1342OBJS += ../src/fst/fst_group.o 1343OBJS += ../src/fst/fst_iface.o 1344OBJS += ../src/fst/fst_session.o 1345OBJS += ../src/fst/fst_ctrl_aux.o 1346ifdef CONFIG_FST_TEST 1347CFLAGS += -DCONFIG_FST_TEST 1348endif 1349ifndef CONFIG_NO_CTRL_IFACE 1350OBJS += ../src/fst/fst_ctrl_iface.o 1351endif 1352endif 1353 1354COPY_OBJS = copy_objs 1355ALL=$(COPY_OBJS) hostapd_cli 1356 1357all: verify_config $(ALL) 1358 1359Q=@ 1360E=echo 1361ifeq ($(V), 1) 1362Q= 1363E=true 1364endif 1365ifeq ($(QUIET), 1) 1366Q=@ 1367E=true 1368endif 1369 1370ifdef CONFIG_CODE_COVERAGE 1371%.o: %.c 1372 @$(E) " CC " $< 1373 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<) 1374else 1375%.o: %.c 1376 $(Q)$(CC) -c -o $@ $(CFLAGS) $< 1377 @$(E) " CC " $< 1378endif 1379 1380verify_config: 1381 @if [ ! -r .config ]; then \ 1382 echo 'Building hostapd requires a configuration file'; \ 1383 echo '(.config). See README for more instructions. You can'; \ 1384 echo 'run "cp defconfig .config" to create an example'; \ 1385 echo 'configuration.'; \ 1386 exit 1; \ 1387 fi 1388 1389$(DESTDIR)$(BINDIR)/%: % 1390 install -D $(<) $(@) 1391 1392install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL)) 1393 1394../src/drivers/build.hostapd: 1395 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \ 1396 $(MAKE) -C ../src/drivers clean; \ 1397 fi 1398 @touch ../src/drivers/build.hostapd 1399 1400BCHECK=../src/drivers/build.hostapd 1401 1402$(COPY_OBJS): $(OBJS) 1403 cp $(OBJS) ../build/objs > /dev/null 2>&1 1404 1405#hostapd: $(BCHECK) $(OBJS) 1406# $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS) 1407# @$(E) " LD " $@ 1408 1409ifdef CONFIG_WPA_TRACE 1410OBJS_c += ../src/utils/trace.o 1411endif 1412hostapd_cli: $(OBJS_c) 1413 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c) 1414 @$(E) " LD " $@ 1415 1416NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) 1417NOBJS += ../src/utils/common.o 1418ifdef NEED_RC4 1419ifdef CONFIG_INTERNAL_RC4 1420ifndef CONFIG_NO_RC4 1421NOBJS += ../src/crypto/rc4.o 1422endif 1423endif 1424endif 1425ifdef CONFIG_INTERNAL_MD5 1426NOBJS += ../src/crypto/md5-internal.o 1427endif 1428NOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1429NOBJS += ../src/utils/os_$(CONFIG_OS).o 1430NOBJS += ../src/utils/wpa_debug.o 1431NOBJS += ../src/utils/wpabuf.o 1432ifdef CONFIG_WPA_TRACE 1433NOBJS += ../src/utils/trace.o 1434LIBS_n += -lbfd 1435endif 1436 1437HOBJS += hlr_auc_gw.o ../src/utils/common.o ../src/utils/wpa_debug.o ../src/utils/os_$(CONFIG_OS).o ../src/utils/wpabuf.o ../src/crypto/milenage.o 1438HOBJS += ../src/crypto/aes-encblock.o 1439ifdef CONFIG_INTERNAL_AES 1440HOBJS += ../src/crypto/aes-internal.o 1441HOBJS += ../src/crypto/aes-internal-enc.o 1442endif 1443ifeq ($(CONFIG_TLS), linux) 1444HOBJS += ../src/crypto/crypto_linux.o 1445endif 1446 1447nt_password_hash: $(NOBJS) 1448 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n) 1449 @$(E) " LD " $@ 1450 1451hlr_auc_gw: $(HOBJS) 1452 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h) 1453 @$(E) " LD " $@ 1454 1455lcov-html: 1456 lcov -c -d .. > lcov.info 1457 genhtml lcov.info --output-directory lcov-html 1458 1459clean: 1460 $(MAKE) -C ../src clean 1461 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw 1462 rm -f *.d *.gcno *.gcda *.gcov 1463 rm -f lcov.info 1464 rm -rf lcov-html 1465 1466-include $(OBJS:%.o=%.d) 1467