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