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_OCV 282CFLAGS += -DCONFIG_OCV 283OBJS += ../src/common/ocv.o 284CONFIG_IEEE80211W=y 285endif 286 287ifdef CONFIG_IEEE80211W 288CFLAGS += -DCONFIG_IEEE80211W 289NEED_SHA256=y 290NEED_AES_OMAC1=y 291endif 292 293ifdef CONFIG_IEEE80211R 294CFLAGS += -DCONFIG_IEEE80211R -DCONFIG_IEEE80211R_AP 295OBJS += ../src/ap/wpa_auth_ft.o 296NEED_SHA256=y 297NEED_AES_OMAC1=y 298NEED_AES_UNWRAP=y 299NEED_AES_SIV=y 300NEED_ETH_P_OUI=y 301NEED_SHA256=y 302NEED_HMAC_SHA256_KDF=y 303endif 304 305ifdef NEED_ETH_P_OUI 306CFLAGS += -DCONFIG_ETH_P_OUI 307OBJS += ../src/ap/eth_p_oui.o 308endif 309 310ifdef CONFIG_SAE 311CFLAGS += -DCONFIG_SAE 312OBJS += ../src/common/sae.o 313NEED_ECC=y 314NEED_DH_GROUPS=y 315NEED_AP_MLME=y 316NEED_DRAGONFLY=y 317endif 318 319ifdef CONFIG_OWE 320CFLAGS += -DCONFIG_OWE 321NEED_ECC=y 322NEED_HMAC_SHA256_KDF=y 323NEED_HMAC_SHA384_KDF=y 324NEED_HMAC_SHA512_KDF=y 325NEED_SHA256=y 326NEED_SHA384=y 327NEED_SHA512=y 328endif 329 330ifdef CONFIG_AIRTIME_POLICY 331CFLAGS += -DCONFIG_AIRTIME_POLICY 332OBJS += ../src/ap/airtime_policy.o 333endif 334 335ifdef CONFIG_FILS 336CFLAGS += -DCONFIG_FILS 337OBJS += ../src/ap/fils_hlp.o 338NEED_SHA384=y 339NEED_AES_SIV=y 340ifdef CONFIG_FILS_SK_PFS 341CFLAGS += -DCONFIG_FILS_SK_PFS 342NEED_ECC=y 343endif 344endif 345 346ifdef CONFIG_WNM 347CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP 348OBJS += ../src/ap/wnm_ap.o 349endif 350 351ifdef CONFIG_IEEE80211N 352CFLAGS += -DCONFIG_IEEE80211N 353endif 354 355ifdef CONFIG_IEEE80211AC 356CFLAGS += -DCONFIG_IEEE80211AC 357endif 358 359ifdef CONFIG_IEEE80211AX 360CFLAGS += -DCONFIG_IEEE80211AX 361OBJS += ../src/ap/ieee802_11_he.o 362endif 363 364ifdef CONFIG_MBO 365CFLAGS += -DCONFIG_MBO 366OBJS += ../src/ap/mbo_ap.o 367endif 368 369include ../src/drivers/drivers.mak 370OBJS += $(DRV_AP_OBJS) 371CFLAGS += $(DRV_AP_CFLAGS) 372LDFLAGS += $(DRV_AP_LDFLAGS) 373LIBS += $(DRV_AP_LIBS) 374 375ifdef CONFIG_L2_PACKET 376ifdef CONFIG_DNET_PCAP 377ifdef CONFIG_L2_FREEBSD 378LIBS += -lpcap 379OBJS += ../src/l2_packet/l2_packet_freebsd.o 380else 381LIBS += -ldnet -lpcap 382OBJS += ../src/l2_packet/l2_packet_pcap.o 383endif 384else 385OBJS += ../src/l2_packet/l2_packet_linux.o 386endif 387else 388OBJS += ../src/l2_packet/l2_packet_none.o 389endif 390 391 392ifdef CONFIG_ERP 393CFLAGS += -DCONFIG_ERP 394NEED_SHA256=y 395NEED_HMAC_SHA256_KDF=y 396endif 397 398ifdef CONFIG_EAP_MD5 399CFLAGS += -DEAP_SERVER_MD5 400OBJS += ../src/eap_server/eap_server_md5.o 401CHAP=y 402endif 403 404ifdef CONFIG_EAP_TLS 405CFLAGS += -DEAP_SERVER_TLS 406OBJS += ../src/eap_server/eap_server_tls.o 407TLS_FUNCS=y 408endif 409 410ifdef CONFIG_EAP_UNAUTH_TLS 411CFLAGS += -DEAP_SERVER_UNAUTH_TLS 412ifndef CONFIG_EAP_TLS 413OBJS += ../src/eap_server/eap_server_tls.o 414TLS_FUNCS=y 415endif 416endif 417 418ifdef CONFIG_EAP_PEAP 419CFLAGS += -DEAP_SERVER_PEAP 420OBJS += ../src/eap_server/eap_server_peap.o 421OBJS += ../src/eap_common/eap_peap_common.o 422TLS_FUNCS=y 423CONFIG_EAP_MSCHAPV2=y 424endif 425 426ifdef CONFIG_EAP_TTLS 427CFLAGS += -DEAP_SERVER_TTLS 428OBJS += ../src/eap_server/eap_server_ttls.o 429TLS_FUNCS=y 430CHAP=y 431endif 432 433ifdef CONFIG_EAP_MSCHAPV2 434CFLAGS += -DEAP_SERVER_MSCHAPV2 435OBJS += ../src/eap_server/eap_server_mschapv2.o 436MS_FUNCS=y 437endif 438 439ifdef CONFIG_EAP_GTC 440CFLAGS += -DEAP_SERVER_GTC 441OBJS += ../src/eap_server/eap_server_gtc.o 442endif 443 444ifdef CONFIG_EAP_SIM 445CFLAGS += -DEAP_SERVER_SIM 446OBJS += ../src/eap_server/eap_server_sim.o 447CONFIG_EAP_SIM_COMMON=y 448NEED_AES_CBC=y 449endif 450 451ifdef CONFIG_EAP_AKA 452CFLAGS += -DEAP_SERVER_AKA 453OBJS += ../src/eap_server/eap_server_aka.o 454CONFIG_EAP_SIM_COMMON=y 455NEED_SHA256=y 456NEED_AES_CBC=y 457endif 458 459ifdef CONFIG_EAP_AKA_PRIME 460CFLAGS += -DEAP_SERVER_AKA_PRIME 461endif 462 463ifdef CONFIG_EAP_SIM_COMMON 464OBJS += ../src/eap_common/eap_sim_common.o 465# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be 466# replaced with another file implementating the interface specified in 467# eap_sim_db.h. 468OBJS += ../src/eap_server/eap_sim_db.o 469NEED_FIPS186_2_PRF=y 470endif 471 472ifdef CONFIG_EAP_PAX 473CFLAGS += -DEAP_SERVER_PAX 474OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o 475endif 476 477ifdef CONFIG_EAP_PSK 478CFLAGS += -DEAP_SERVER_PSK 479OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o 480NEED_AES_OMAC1=y 481NEED_AES_ENCBLOCK=y 482NEED_AES_EAX=y 483endif 484 485ifdef CONFIG_EAP_SAKE 486CFLAGS += -DEAP_SERVER_SAKE 487OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o 488endif 489 490ifdef CONFIG_EAP_GPSK 491CFLAGS += -DEAP_SERVER_GPSK 492OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o 493ifdef CONFIG_EAP_GPSK_SHA256 494CFLAGS += -DEAP_GPSK_SHA256 495endif 496NEED_SHA256=y 497NEED_AES_OMAC1=y 498endif 499 500ifdef CONFIG_EAP_PWD 501CFLAGS += -DEAP_SERVER_PWD 502OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o 503NEED_SHA256=y 504NEED_ECC=y 505NEED_DRAGONFLY=y 506endif 507 508ifdef CONFIG_EAP_EKE 509CFLAGS += -DEAP_SERVER_EKE 510OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o 511NEED_DH_GROUPS=y 512NEED_DH_GROUPS_ALL=y 513endif 514 515ifdef CONFIG_EAP_VENDOR_TEST 516CFLAGS += -DEAP_SERVER_VENDOR_TEST 517OBJS += ../src/eap_server/eap_server_vendor_test.o 518endif 519 520ifdef CONFIG_EAP_FAST 521CFLAGS += -DEAP_SERVER_FAST 522OBJS += ../src/eap_server/eap_server_fast.o 523OBJS += ../src/eap_common/eap_fast_common.o 524TLS_FUNCS=y 525NEED_T_PRF=y 526NEED_AES_UNWRAP=y 527endif 528 529ifdef CONFIG_EAP_TEAP 530CFLAGS += -DEAP_SERVER_TEAP 531OBJS += ../src/eap_server/eap_server_teap.o 532OBJS += ../src/eap_common/eap_teap_common.o 533TLS_FUNCS=y 534NEED_T_PRF=y 535NEED_SHA384=y 536NEED_AES_UNWRAP=y 537endif 538 539ifdef CONFIG_WPS 540CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC 541OBJS += ../src/utils/uuid.o 542OBJS += ../src/ap/wps_hostapd.o 543OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o 544OBJS += ../src/wps/wps.o 545OBJS += ../src/wps/wps_common.o 546OBJS += ../src/wps/wps_attr_parse.o 547OBJS += ../src/wps/wps_attr_build.o 548OBJS += ../src/wps/wps_attr_process.o 549OBJS += ../src/wps/wps_dev_attr.o 550OBJS += ../src/wps/wps_enrollee.o 551OBJS += ../src/wps/wps_registrar.o 552NEED_DH_GROUPS=y 553NEED_SHA256=y 554NEED_BASE64=y 555NEED_AES_CBC=y 556NEED_MODEXP=y 557CONFIG_EAP=y 558 559ifdef CONFIG_WPS_NFC 560CFLAGS += -DCONFIG_WPS_NFC 561OBJS += ../src/wps/ndef.o 562NEED_WPS_OOB=y 563endif 564 565ifdef NEED_WPS_OOB 566CFLAGS += -DCONFIG_WPS_OOB 567endif 568 569ifdef CONFIG_WPS_UPNP 570CFLAGS += -DCONFIG_WPS_UPNP 571OBJS += ../src/wps/wps_upnp.o 572OBJS += ../src/wps/wps_upnp_ssdp.o 573OBJS += ../src/wps/wps_upnp_web.o 574OBJS += ../src/wps/wps_upnp_event.o 575OBJS += ../src/wps/wps_upnp_ap.o 576OBJS += ../src/wps/upnp_xml.o 577OBJS += ../src/wps/httpread.o 578OBJS += ../src/wps/http_client.o 579OBJS += ../src/wps/http_server.o 580endif 581 582ifdef CONFIG_WPS_STRICT 583CFLAGS += -DCONFIG_WPS_STRICT 584OBJS += ../src/wps/wps_validate.o 585endif 586 587ifdef CONFIG_WPS_TESTING 588CFLAGS += -DCONFIG_WPS_TESTING 589endif 590 591endif 592 593ifdef CONFIG_DPP 594CFLAGS += -DCONFIG_DPP 595OBJS += ../src/common/dpp.o 596OBJS += ../src/ap/dpp_hostapd.o 597OBJS += ../src/ap/gas_query_ap.o 598NEED_AES_SIV=y 599NEED_HMAC_SHA256_KDF=y 600NEED_HMAC_SHA384_KDF=y 601NEED_HMAC_SHA512_KDF=y 602NEED_SHA256=y 603NEED_SHA384=y 604NEED_SHA512=y 605NEED_JSON=y 606NEED_GAS=y 607NEED_BASE64=y 608ifdef CONFIG_DPP2 609CFLAGS += -DCONFIG_DPP2 610endif 611endif 612 613ifdef CONFIG_EAP_IKEV2 614CFLAGS += -DEAP_SERVER_IKEV2 615OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o 616OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o 617NEED_DH_GROUPS=y 618NEED_DH_GROUPS_ALL=y 619NEED_MODEXP=y 620NEED_CIPHER=y 621endif 622 623ifdef CONFIG_EAP_TNC 624CFLAGS += -DEAP_SERVER_TNC 625OBJS += ../src/eap_server/eap_server_tnc.o 626OBJS += ../src/eap_server/tncs.o 627NEED_BASE64=y 628ifndef CONFIG_DRIVER_BSD 629LIBS += -ldl 630endif 631endif 632 633ifdef CONFIG_MACSEC 634CFLAGS += -DCONFIG_MACSEC 635OBJS += ../src/ap/wpa_auth_kay.o 636OBJS += ../src/pae/ieee802_1x_cp.o 637OBJS += ../src/pae/ieee802_1x_kay.o 638OBJS += ../src/pae/ieee802_1x_key.o 639OBJS += ../src/pae/ieee802_1x_secy_ops.o 640endif 641 642# Basic EAP functionality is needed for EAPOL 643OBJS += eap_register.o 644OBJS += ../src/eap_server/eap_server.o 645OBJS += ../src/eap_common/eap_common.o 646OBJS += ../src/eap_server/eap_server_methods.o 647OBJS += ../src/eap_server/eap_server_identity.o 648CFLAGS += -DEAP_SERVER_IDENTITY 649 650ifdef CONFIG_EAP 651CFLAGS += -DEAP_SERVER 652endif 653 654ifdef CONFIG_PKCS12 655CFLAGS += -DPKCS12_FUNCS 656endif 657 658ifdef NEED_DRAGONFLY 659OBJS += ../src/common/dragonfly.o 660endif 661 662ifdef MS_FUNCS 663OBJS += ../src/crypto/ms_funcs.o 664NEED_DES=y 665NEED_MD4=y 666endif 667 668ifdef CHAP 669OBJS += ../src/eap_common/chap.o 670endif 671 672ifdef TLS_FUNCS 673NEED_DES=y 674# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS) 675CFLAGS += -DEAP_TLS_FUNCS 676OBJS += ../src/eap_server/eap_server_tls_common.o 677NEED_TLS_PRF=y 678endif 679 680ifndef CONFIG_TLS 681CONFIG_TLS=openssl 682endif 683 684ifdef CONFIG_TLSV11 685CFLAGS += -DCONFIG_TLSV11 686endif 687 688ifdef CONFIG_TLSV12 689CFLAGS += -DCONFIG_TLSV12 690NEED_SHA256=y 691endif 692 693ifeq ($(CONFIG_TLS), wolfssl) 694CONFIG_CRYPTO=wolfssl 695ifdef TLS_FUNCS 696OBJS += ../src/crypto/tls_wolfssl.o 697LIBS += -lwolfssl -lm 698endif 699OBJS += ../src/crypto/crypto_wolfssl.o 700HOBJS += ../src/crypto/crypto_wolfssl.o 701ifdef NEED_FIPS186_2_PRF 702OBJS += ../src/crypto/fips_prf_wolfssl.o 703endif 704NEED_SHA256=y 705NEED_TLS_PRF_SHA256=y 706LIBS += -lwolfssl -lm 707LIBS_h += -lwolfssl -lm 708ifdef CONFIG_TLS_ADD_DL 709LIBS += -ldl 710LIBS_h += -ldl 711endif 712endif 713 714ifeq ($(CONFIG_TLS), openssl) 715CONFIG_CRYPTO=openssl 716ifdef TLS_FUNCS 717OBJS += ../src/crypto/tls_openssl.o 718OBJS += ../src/crypto/tls_openssl_ocsp.o 719LIBS += -lssl 720endif 721OBJS += ../src/crypto/crypto_openssl.o 722HOBJS += ../src/crypto/crypto_openssl.o 723ifdef NEED_FIPS186_2_PRF 724OBJS += ../src/crypto/fips_prf_openssl.o 725endif 726NEED_SHA256=y 727NEED_TLS_PRF_SHA256=y 728LIBS += -lcrypto 729LIBS_h += -lcrypto 730LIBS_n += -lcrypto 731ifdef CONFIG_TLS_ADD_DL 732LIBS += -ldl 733LIBS_h += -ldl 734endif 735ifndef CONFIG_TLS_DEFAULT_CIPHERS 736CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW" 737endif 738CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\" 739endif 740 741ifeq ($(CONFIG_TLS), gnutls) 742ifndef CONFIG_CRYPTO 743# default to libgcrypt 744CONFIG_CRYPTO=gnutls 745endif 746ifdef TLS_FUNCS 747OBJS += ../src/crypto/tls_gnutls.o 748LIBS += -lgnutls -lgpg-error 749endif 750OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 751HOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 752ifdef NEED_FIPS186_2_PRF 753OBJS += ../src/crypto/fips_prf_internal.o 754SHA1OBJS += ../src/crypto/sha1-internal.o 755endif 756ifeq ($(CONFIG_CRYPTO), gnutls) 757LIBS += -lgcrypt 758LIBS_h += -lgcrypt 759LIBS_n += -lgcrypt 760CONFIG_INTERNAL_RC4=y 761CONFIG_INTERNAL_DH_GROUP5=y 762endif 763ifeq ($(CONFIG_CRYPTO), nettle) 764LIBS += -lnettle -lgmp 765LIBS_p += -lnettle -lgmp 766CONFIG_INTERNAL_RC4=y 767CONFIG_INTERNAL_DH_GROUP5=y 768endif 769endif 770 771ifeq ($(CONFIG_TLS), internal) 772ifndef CONFIG_CRYPTO 773CONFIG_CRYPTO=internal 774endif 775ifdef TLS_FUNCS 776OBJS += ../src/crypto/crypto_internal-rsa.o 777OBJS += ../src/crypto/tls_internal.o 778OBJS += ../src/tls/tlsv1_common.o 779OBJS += ../src/tls/tlsv1_record.o 780OBJS += ../src/tls/tlsv1_cred.o 781OBJS += ../src/tls/tlsv1_server.o 782OBJS += ../src/tls/tlsv1_server_write.o 783OBJS += ../src/tls/tlsv1_server_read.o 784OBJS += ../src/tls/asn1.o 785OBJS += ../src/tls/rsa.o 786OBJS += ../src/tls/x509v3.o 787OBJS += ../src/tls/pkcs1.o 788OBJS += ../src/tls/pkcs5.o 789OBJS += ../src/tls/pkcs8.o 790NEED_SHA256=y 791NEED_BASE64=y 792NEED_TLS_PRF=y 793ifdef CONFIG_TLSV12 794NEED_TLS_PRF_SHA256=y 795endif 796NEED_MODEXP=y 797NEED_CIPHER=y 798CFLAGS += -DCONFIG_TLS_INTERNAL 799CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 800endif 801ifdef NEED_CIPHER 802NEED_DES=y 803OBJS += ../src/crypto/crypto_internal-cipher.o 804endif 805ifdef NEED_MODEXP 806OBJS += ../src/crypto/crypto_internal-modexp.o 807OBJS += ../src/tls/bignum.o 808endif 809ifeq ($(CONFIG_CRYPTO), libtomcrypt) 810OBJS += ../src/crypto/crypto_libtomcrypt.o 811LIBS += -ltomcrypt -ltfm 812LIBS_h += -ltomcrypt -ltfm 813CONFIG_INTERNAL_SHA256=y 814CONFIG_INTERNAL_RC4=y 815CONFIG_INTERNAL_DH_GROUP5=y 816endif 817ifeq ($(CONFIG_CRYPTO), internal) 818OBJS += ../src/crypto/crypto_internal.o 819NEED_AES_DEC=y 820CFLAGS += -DCONFIG_CRYPTO_INTERNAL 821ifdef CONFIG_INTERNAL_LIBTOMMATH 822CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 823ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 824CFLAGS += -DLTM_FAST 825endif 826else 827LIBS += -ltommath 828LIBS_h += -ltommath 829endif 830CONFIG_INTERNAL_AES=y 831CONFIG_INTERNAL_DES=y 832CONFIG_INTERNAL_SHA1=y 833CONFIG_INTERNAL_MD4=y 834CONFIG_INTERNAL_MD5=y 835CONFIG_INTERNAL_SHA256=y 836CONFIG_INTERNAL_SHA384=y 837CONFIG_INTERNAL_SHA512=y 838CONFIG_INTERNAL_RC4=y 839CONFIG_INTERNAL_DH_GROUP5=y 840endif 841ifeq ($(CONFIG_CRYPTO), cryptoapi) 842OBJS += ../src/crypto/crypto_cryptoapi.o 843OBJS_p += ../src/crypto/crypto_cryptoapi.o 844CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 845CONFIG_INTERNAL_SHA256=y 846CONFIG_INTERNAL_RC4=y 847endif 848endif 849 850ifeq ($(CONFIG_TLS), linux) 851OBJS += ../src/crypto/crypto_linux.o 852ifdef TLS_FUNCS 853OBJS += ../src/crypto/crypto_internal-rsa.o 854OBJS += ../src/crypto/tls_internal.o 855OBJS += ../src/tls/tlsv1_common.o 856OBJS += ../src/tls/tlsv1_record.o 857OBJS += ../src/tls/tlsv1_cred.o 858OBJS += ../src/tls/tlsv1_server.o 859OBJS += ../src/tls/tlsv1_server_write.o 860OBJS += ../src/tls/tlsv1_server_read.o 861OBJS += ../src/tls/asn1.o 862OBJS += ../src/tls/rsa.o 863OBJS += ../src/tls/x509v3.o 864OBJS += ../src/tls/pkcs1.o 865OBJS += ../src/tls/pkcs5.o 866OBJS += ../src/tls/pkcs8.o 867NEED_SHA256=y 868NEED_BASE64=y 869NEED_TLS_PRF=y 870ifdef CONFIG_TLSV12 871NEED_TLS_PRF_SHA256=y 872endif 873NEED_MODEXP=y 874NEED_CIPHER=y 875CFLAGS += -DCONFIG_TLS_INTERNAL 876CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 877endif 878ifdef NEED_MODEXP 879OBJS += ../src/crypto/crypto_internal-modexp.o 880OBJS += ../src/tls/bignum.o 881CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 882CFLAGS += -DLTM_FAST 883endif 884CONFIG_INTERNAL_DH_GROUP5=y 885ifdef NEED_FIPS186_2_PRF 886OBJS += ../src/crypto/fips_prf_internal.o 887OBJS += ../src/crypto/sha1-internal.o 888endif 889endif 890 891ifeq ($(CONFIG_TLS), none) 892ifdef TLS_FUNCS 893OBJS += ../src/crypto/tls_none.o 894CFLAGS += -DEAP_TLS_NONE 895CONFIG_INTERNAL_AES=y 896CONFIG_INTERNAL_SHA1=y 897CONFIG_INTERNAL_MD5=y 898endif 899OBJS += ../src/crypto/crypto_none.o 900OBJS_p += ../src/crypto/crypto_none.o 901CONFIG_INTERNAL_SHA256=y 902CONFIG_INTERNAL_RC4=y 903endif 904 905ifndef TLS_FUNCS 906OBJS += ../src/crypto/tls_none.o 907ifeq ($(CONFIG_TLS), internal) 908CONFIG_INTERNAL_AES=y 909CONFIG_INTERNAL_SHA1=y 910CONFIG_INTERNAL_MD5=y 911CONFIG_INTERNAL_RC4=y 912endif 913endif 914 915AESOBJS = # none so far 916ifdef CONFIG_INTERNAL_AES 917AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o 918endif 919 920ifneq ($(CONFIG_TLS), openssl) 921ifneq ($(CONFIG_TLS), wolfssl) 922AESOBJS += ../src/crypto/aes-wrap.o 923endif 924endif 925ifdef NEED_AES_EAX 926AESOBJS += ../src/crypto/aes-eax.o 927NEED_AES_CTR=y 928NEED_AES_OMAC1=y 929endif 930ifdef NEED_AES_SIV 931AESOBJS += ../src/crypto/aes-siv.o 932NEED_AES_CTR=y 933NEED_AES_OMAC1=y 934endif 935ifdef NEED_AES_CTR 936AESOBJS += ../src/crypto/aes-ctr.o 937endif 938ifdef NEED_AES_ENCBLOCK 939AESOBJS += ../src/crypto/aes-encblock.o 940endif 941ifdef NEED_AES_OMAC1 942ifneq ($(CONFIG_TLS), linux) 943ifneq ($(CONFIG_TLS), wolfssl) 944AESOBJS += ../src/crypto/aes-omac1.o 945endif 946endif 947endif 948ifdef NEED_AES_UNWRAP 949ifneq ($(CONFIG_TLS), openssl) 950ifneq ($(CONFIG_TLS), linux) 951ifneq ($(CONFIG_TLS), wolfssl) 952NEED_AES_DEC=y 953AESOBJS += ../src/crypto/aes-unwrap.o 954endif 955endif 956endif 957endif 958ifdef NEED_AES_CBC 959NEED_AES_DEC=y 960ifneq ($(CONFIG_TLS), openssl) 961ifneq ($(CONFIG_TLS), linux) 962ifneq ($(CONFIG_TLS), wolfssl) 963AESOBJS += ../src/crypto/aes-cbc.o 964endif 965endif 966endif 967endif 968ifdef NEED_AES_DEC 969ifdef CONFIG_INTERNAL_AES 970AESOBJS += ../src/crypto/aes-internal-dec.o 971endif 972endif 973ifdef NEED_AES 974OBJS += $(AESOBJS) 975endif 976 977ifdef NEED_SHA1 978ifneq ($(CONFIG_TLS), openssl) 979ifneq ($(CONFIG_TLS), linux) 980ifneq ($(CONFIG_TLS), gnutls) 981ifneq ($(CONFIG_TLS), wolfssl) 982SHA1OBJS += ../src/crypto/sha1.o 983endif 984endif 985endif 986endif 987SHA1OBJS += ../src/crypto/sha1-prf.o 988ifdef CONFIG_INTERNAL_SHA1 989SHA1OBJS += ../src/crypto/sha1-internal.o 990ifdef NEED_FIPS186_2_PRF 991SHA1OBJS += ../src/crypto/fips_prf_internal.o 992endif 993endif 994ifneq ($(CONFIG_TLS), openssl) 995ifneq ($(CONFIG_TLS), wolfssl) 996SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 997endif 998endif 999ifdef NEED_T_PRF 1000SHA1OBJS += ../src/crypto/sha1-tprf.o 1001endif 1002ifdef NEED_TLS_PRF 1003SHA1OBJS += ../src/crypto/sha1-tlsprf.o 1004endif 1005endif 1006 1007ifdef NEED_SHA1 1008OBJS += $(SHA1OBJS) 1009endif 1010 1011ifneq ($(CONFIG_TLS), openssl) 1012ifneq ($(CONFIG_TLS), linux) 1013ifneq ($(CONFIG_TLS), gnutls) 1014ifneq ($(CONFIG_TLS), wolfssl) 1015OBJS += ../src/crypto/md5.o 1016endif 1017endif 1018endif 1019endif 1020 1021ifdef NEED_MD5 1022ifdef CONFIG_INTERNAL_MD5 1023OBJS += ../src/crypto/md5-internal.o 1024HOBJS += ../src/crypto/md5-internal.o 1025endif 1026endif 1027 1028ifdef NEED_MD4 1029ifdef CONFIG_INTERNAL_MD4 1030OBJS += ../src/crypto/md4-internal.o 1031endif 1032endif 1033 1034ifdef NEED_DES 1035CFLAGS += -DCONFIG_DES 1036ifdef CONFIG_INTERNAL_DES 1037OBJS += ../src/crypto/des-internal.o 1038endif 1039endif 1040 1041ifdef CONFIG_NO_RC4 1042CFLAGS += -DCONFIG_NO_RC4 1043endif 1044 1045ifdef NEED_RC4 1046ifdef CONFIG_INTERNAL_RC4 1047ifndef CONFIG_NO_RC4 1048OBJS += ../src/crypto/rc4.o 1049endif 1050endif 1051endif 1052 1053ifdef NEED_SHA256 1054CFLAGS += -DCONFIG_SHA256 1055ifneq ($(CONFIG_TLS), openssl) 1056ifneq ($(CONFIG_TLS), linux) 1057ifneq ($(CONFIG_TLS), gnutls) 1058ifneq ($(CONFIG_TLS), wolfssl) 1059OBJS += ../src/crypto/sha256.o 1060endif 1061endif 1062endif 1063endif 1064OBJS += ../src/crypto/sha256-prf.o 1065ifdef CONFIG_INTERNAL_SHA256 1066OBJS += ../src/crypto/sha256-internal.o 1067endif 1068ifdef NEED_TLS_PRF_SHA256 1069OBJS += ../src/crypto/sha256-tlsprf.o 1070endif 1071ifdef NEED_HMAC_SHA256_KDF 1072OBJS += ../src/crypto/sha256-kdf.o 1073endif 1074ifdef NEED_HMAC_SHA384_KDF 1075OBJS += ../src/crypto/sha384-kdf.o 1076endif 1077ifdef NEED_HMAC_SHA512_KDF 1078OBJS += ../src/crypto/sha512-kdf.o 1079endif 1080endif 1081ifdef NEED_SHA384 1082CFLAGS += -DCONFIG_SHA384 1083ifneq ($(CONFIG_TLS), openssl) 1084ifneq ($(CONFIG_TLS), linux) 1085ifneq ($(CONFIG_TLS), gnutls) 1086ifneq ($(CONFIG_TLS), wolfssl) 1087OBJS += ../src/crypto/sha384.o 1088endif 1089endif 1090endif 1091endif 1092OBJS += ../src/crypto/sha384-prf.o 1093endif 1094ifdef NEED_SHA512 1095CFLAGS += -DCONFIG_SHA512 1096ifneq ($(CONFIG_TLS), openssl) 1097ifneq ($(CONFIG_TLS), linux) 1098ifneq ($(CONFIG_TLS), gnutls) 1099ifneq ($(CONFIG_TLS), wolfssl) 1100OBJS += ../src/crypto/sha512.o 1101endif 1102endif 1103endif 1104endif 1105OBJS += ../src/crypto/sha512-prf.o 1106endif 1107 1108ifdef CONFIG_INTERNAL_SHA384 1109CFLAGS += -DCONFIG_INTERNAL_SHA384 1110OBJS += ../src/crypto/sha384-internal.o 1111endif 1112 1113ifdef CONFIG_INTERNAL_SHA512 1114CFLAGS += -DCONFIG_INTERNAL_SHA512 1115OBJS += ../src/crypto/sha512-internal.o 1116endif 1117 1118ifdef NEED_DH_GROUPS 1119OBJS += ../src/crypto/dh_groups.o 1120endif 1121ifdef NEED_DH_GROUPS_ALL 1122CFLAGS += -DALL_DH_GROUPS 1123endif 1124ifdef CONFIG_INTERNAL_DH_GROUP5 1125ifdef NEED_DH_GROUPS 1126OBJS += ../src/crypto/dh_group5.o 1127endif 1128endif 1129 1130ifdef NEED_ECC 1131CFLAGS += -DCONFIG_ECC 1132endif 1133 1134ifdef CONFIG_NO_RANDOM_POOL 1135CFLAGS += -DCONFIG_NO_RANDOM_POOL 1136else 1137ifdef CONFIG_GETRANDOM 1138CFLAGS += -DCONFIG_GETRANDOM 1139endif 1140OBJS += ../src/crypto/random.o 1141HOBJS += ../src/crypto/random.o 1142HOBJS += ../src/utils/eloop.o 1143HOBJS += $(SHA1OBJS) 1144ifneq ($(CONFIG_TLS), openssl) 1145ifneq ($(CONFIG_TLS), linux) 1146ifneq ($(CONFIG_TLS), wolfssl) 1147HOBJS += ../src/crypto/md5.o 1148endif 1149endif 1150endif 1151endif 1152 1153ifdef CONFIG_RADIUS_SERVER 1154CFLAGS += -DRADIUS_SERVER 1155OBJS += ../src/radius/radius_server.o 1156endif 1157 1158ifdef CONFIG_IPV6 1159CFLAGS += -DCONFIG_IPV6 1160endif 1161 1162ifdef CONFIG_DRIVER_RADIUS_ACL 1163CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL 1164endif 1165 1166ifdef NEED_BASE64 1167OBJS += ../src/utils/base64.o 1168endif 1169 1170ifdef NEED_JSON 1171OBJS += ../src/utils/json.o 1172CFLAGS += -DCONFIG_JSON 1173endif 1174 1175ifdef NEED_AP_MLME 1176OBJS += ../src/ap/wmm.o 1177OBJS += ../src/ap/ap_list.o 1178OBJS += ../src/ap/ieee802_11.o 1179OBJS += ../src/ap/hw_features.o 1180OBJS += ../src/ap/dfs.o 1181CFLAGS += -DNEED_AP_MLME 1182endif 1183ifdef CONFIG_IEEE80211N 1184OBJS += ../src/ap/ieee802_11_ht.o 1185endif 1186 1187ifdef CONFIG_IEEE80211AC 1188OBJS += ../src/ap/ieee802_11_vht.o 1189endif 1190 1191ifdef CONFIG_P2P_MANAGER 1192CFLAGS += -DCONFIG_P2P_MANAGER 1193OBJS += ../src/ap/p2p_hostapd.o 1194endif 1195 1196ifdef CONFIG_HS20 1197CFLAGS += -DCONFIG_HS20 1198OBJS += ../src/ap/hs20.o 1199CONFIG_INTERWORKING=y 1200endif 1201 1202ifdef CONFIG_INTERWORKING 1203CFLAGS += -DCONFIG_INTERWORKING 1204NEED_GAS=y 1205endif 1206 1207ifdef NEED_GAS 1208OBJS += ../src/common/gas.o 1209OBJS += ../src/ap/gas_serv.o 1210endif 1211 1212ifdef CONFIG_PROXYARP 1213CFLAGS += -DCONFIG_PROXYARP 1214OBJS += ../src/ap/x_snoop.o 1215OBJS += ../src/ap/dhcp_snoop.o 1216ifdef CONFIG_IPV6 1217OBJS += ../src/ap/ndisc_snoop.o 1218endif 1219endif 1220 1221OBJS += ../src/drivers/driver_common.o 1222 1223ifdef CONFIG_WPA_CLI_EDIT 1224OBJS_c += ../src/utils/edit.o 1225else 1226OBJS_c += ../src/utils/edit_simple.o 1227endif 1228 1229ifdef CONFIG_ACS 1230CFLAGS += -DCONFIG_ACS 1231OBJS += ../src/ap/acs.o 1232LIBS += -lm 1233endif 1234 1235ifdef CONFIG_NO_STDOUT_DEBUG 1236CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 1237endif 1238 1239ifdef CONFIG_DEBUG_SYSLOG 1240CFLAGS += -DCONFIG_DEBUG_SYSLOG 1241endif 1242 1243ifdef CONFIG_DEBUG_LINUX_TRACING 1244CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING 1245endif 1246 1247ifdef CONFIG_DEBUG_FILE 1248CFLAGS += -DCONFIG_DEBUG_FILE 1249endif 1250 1251ifdef CONFIG_SQLITE 1252CFLAGS += -DCONFIG_SQLITE 1253LIBS += -lsqlite3 1254LIBS_h += -lsqlite3 1255endif 1256 1257ifdef CONFIG_FST 1258CFLAGS += -DCONFIG_FST 1259OBJS += ../src/fst/fst.o 1260OBJS += ../src/fst/fst_group.o 1261OBJS += ../src/fst/fst_iface.o 1262OBJS += ../src/fst/fst_session.o 1263OBJS += ../src/fst/fst_ctrl_aux.o 1264ifdef CONFIG_FST_TEST 1265CFLAGS += -DCONFIG_FST_TEST 1266endif 1267ifndef CONFIG_NO_CTRL_IFACE 1268OBJS += ../src/fst/fst_ctrl_iface.o 1269endif 1270endif 1271 1272ALL=hostapd hostapd_cli 1273 1274all: verify_config $(ALL) 1275 1276Q=@ 1277E=echo 1278ifeq ($(V), 1) 1279Q= 1280E=true 1281endif 1282ifeq ($(QUIET), 1) 1283Q=@ 1284E=true 1285endif 1286 1287ifdef CONFIG_CODE_COVERAGE 1288%.o: %.c 1289 @$(E) " $(CC) " $< 1290 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<) 1291else 1292%.o: %.c 1293 $(Q)$(CC) -c -o $@ $(CFLAGS) $< 1294 @$(E) " $(CC) " $< 1295endif 1296 1297verify_config: 1298 @if [ ! -r .config ]; then \ 1299 echo 'Building hostapd requires a configuration file'; \ 1300 echo '(.config). See README for more instructions. You can'; \ 1301 echo 'run "cp defconfig .config" to create an example'; \ 1302 echo 'configuration.'; \ 1303 exit 1; \ 1304 fi 1305 1306$(DESTDIR)$(BINDIR)/%: % 1307 install -D $(<) $(@) 1308 1309install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL)) 1310 1311../src/drivers/build.hostapd: 1312 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \ 1313 $(MAKE) -C ../src/drivers clean; \ 1314 fi 1315 @touch ../src/drivers/build.hostapd 1316 1317BCHECK=../src/drivers/build.hostapd 1318 1319hostapd: $(BCHECK) $(OBJS) 1320 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS) 1321 @$(E) " LD " $@ 1322 1323ifdef CONFIG_WPA_TRACE 1324OBJS_c += ../src/utils/trace.o 1325endif 1326hostapd_cli: $(OBJS_c) 1327 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c) 1328 @$(E) " LD " $@ 1329 1330NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) 1331NOBJS += ../src/utils/common.o 1332ifdef NEED_RC4 1333ifdef CONFIG_INTERNAL_RC4 1334ifndef CONFIG_NO_RC4 1335NOBJS += ../src/crypto/rc4.o 1336endif 1337endif 1338endif 1339ifdef CONFIG_INTERNAL_MD5 1340NOBJS += ../src/crypto/md5-internal.o 1341endif 1342NOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o 1343NOBJS += ../src/utils/os_$(CONFIG_OS).o 1344NOBJS += ../src/utils/wpa_debug.o 1345NOBJS += ../src/utils/wpabuf.o 1346ifdef CONFIG_WPA_TRACE 1347NOBJS += ../src/utils/trace.o 1348LIBS_n += -lbfd 1349endif 1350 1351HOBJS += 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 1352HOBJS += ../src/crypto/aes-encblock.o 1353ifdef CONFIG_INTERNAL_AES 1354HOBJS += ../src/crypto/aes-internal.o 1355HOBJS += ../src/crypto/aes-internal-enc.o 1356endif 1357ifeq ($(CONFIG_TLS), linux) 1358HOBJS += ../src/crypto/crypto_linux.o 1359endif 1360 1361nt_password_hash: $(NOBJS) 1362 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n) 1363 @$(E) " LD " $@ 1364 1365hlr_auc_gw: $(HOBJS) 1366 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h) 1367 @$(E) " LD " $@ 1368 1369lcov-html: 1370 lcov -c -d .. > lcov.info 1371 genhtml lcov.info --output-directory lcov-html 1372 1373clean: 1374 $(MAKE) -C ../src clean 1375 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw 1376 rm -f *.d *.gcno *.gcda *.gcov 1377 rm -f lcov.info 1378 rm -rf lcov-html 1379 1380-include $(OBJS:%.o=%.d) 1381