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