1ifndef CC 2CC=gcc 3endif 4 5ifndef CFLAGS 6CFLAGS = -MMD -O2 -Wall -g 7endif 8 9CFLAGS += $(EXTRA_CFLAGS) 10CFLAGS += -I$(abspath ../src) 11CFLAGS += -I$(abspath ../src/utils) 12 13export BINDIR ?= /usr/local/bin/ 14 15# Uncomment following line and set the path to your kernel tree include 16# directory if your C library does not include all header files. 17# CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include 18 19-include .config 20 21ifdef CONFIG_TESTING_OPTIONS 22CFLAGS += -DCONFIG_TESTING_OPTIONS 23CONFIG_WPS_TESTING=y 24endif 25 26ifndef CONFIG_OS 27ifdef CONFIG_NATIVE_WINDOWS 28CONFIG_OS=win32 29else 30CONFIG_OS=unix 31endif 32endif 33 34ifeq ($(CONFIG_OS), internal) 35CFLAGS += -DOS_NO_C_LIB_DEFINES 36endif 37 38ifdef CONFIG_NATIVE_WINDOWS 39CFLAGS += -DCONFIG_NATIVE_WINDOWS 40LIBS += -lws2_32 41endif 42 43OBJS += main.o 44OBJS += config_file.o 45 46OBJS += ../src/ap/hostapd.o 47OBJS += ../src/ap/wpa_auth_glue.o 48OBJS += ../src/ap/drv_callbacks.o 49OBJS += ../src/ap/ap_drv_ops.o 50OBJS += ../src/ap/utils.o 51OBJS += ../src/ap/authsrv.o 52OBJS += ../src/ap/ieee802_1x.o 53OBJS += ../src/ap/ap_config.o 54OBJS += ../src/ap/eap_user_db.o 55OBJS += ../src/ap/ieee802_11_auth.o 56OBJS += ../src/ap/sta_info.o 57OBJS += ../src/ap/wpa_auth.o 58OBJS += ../src/ap/tkip_countermeasures.o 59OBJS += ../src/ap/ap_mlme.o 60OBJS += ../src/ap/wpa_auth_ie.o 61OBJS += ../src/ap/preauth_auth.o 62OBJS += ../src/ap/pmksa_cache_auth.o 63OBJS += ../src/ap/ieee802_11_shared.o 64OBJS += ../src/ap/beacon.o 65OBJS += ../src/ap/bss_load.o 66 67OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o 68 69NEED_RC4=y 70NEED_AES=y 71NEED_MD5=y 72NEED_SHA1=y 73 74OBJS += ../src/drivers/drivers.o 75CFLAGS += -DHOSTAPD 76 77ifdef CONFIG_MODULE_TESTS 78CFLAGS += -DCONFIG_MODULE_TESTS 79OBJS += hapd_module_tests.o 80endif 81 82ifdef CONFIG_WPA_TRACE 83CFLAGS += -DWPA_TRACE 84OBJS += ../src/utils/trace.o 85HOBJS += ../src/utils/trace.o 86LDFLAGS += -rdynamic 87CFLAGS += -funwind-tables 88ifdef CONFIG_WPA_TRACE_BFD 89CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD 90LIBS += -lbfd -ldl -liberty -lz 91LIBS_c += -lbfd -ldl -liberty -lz 92LIBS_h += -lbfd -ldl -liberty -lz 93endif 94endif 95 96ifndef CONFIG_ELOOP 97CONFIG_ELOOP=eloop 98endif 99OBJS += ../src/utils/$(CONFIG_ELOOP).o 100OBJS_c += ../src/utils/$(CONFIG_ELOOP).o 101 102ifeq ($(CONFIG_ELOOP), eloop) 103# Using glibc < 2.17 requires -lrt for clock_gettime() 104LIBS += -lrt 105LIBS_c += -lrt 106LIBS_h += -lrt 107LIBS_n += -lrt 108endif 109 110OBJS += ../src/utils/common.o 111OBJS += ../src/utils/wpa_debug.o 112OBJS_c += ../src/utils/wpa_debug.o 113OBJS += ../src/utils/wpabuf.o 114OBJS += ../src/utils/os_$(CONFIG_OS).o 115OBJS += ../src/utils/ip_addr.o 116 117OBJS += ../src/common/ieee802_11_common.o 118OBJS += ../src/common/wpa_common.o 119OBJS += ../src/common/hw_features_common.o 120 121OBJS += ../src/eapol_auth/eapol_auth_sm.o 122 123 124ifdef CONFIG_CODE_COVERAGE 125CFLAGS += -O0 -fprofile-arcs -ftest-coverage 126LIBS += -lgcov 127LIBS_c += -lgcov 128LIBS_h += -lgcov 129LIBS_n += -lgcov 130endif 131 132ifndef CONFIG_NO_DUMP_STATE 133# define HOSTAPD_DUMP_STATE to include support for dumping internal state 134# through control interface commands (undefine it, if you want to save in 135# binary size) 136CFLAGS += -DHOSTAPD_DUMP_STATE 137OBJS += ../src/eapol_auth/eapol_auth_dump.o 138endif 139 140ifdef CONFIG_NO_RADIUS 141CFLAGS += -DCONFIG_NO_RADIUS 142CONFIG_NO_ACCOUNTING=y 143else 144OBJS += ../src/radius/radius.o 145OBJS += ../src/radius/radius_client.o 146OBJS += ../src/radius/radius_das.o 147endif 148 149ifdef CONFIG_NO_ACCOUNTING 150CFLAGS += -DCONFIG_NO_ACCOUNTING 151else 152OBJS += ../src/ap/accounting.o 153endif 154 155ifdef CONFIG_NO_VLAN 156CFLAGS += -DCONFIG_NO_VLAN 157else 158OBJS += ../src/ap/vlan_init.o 159ifdef CONFIG_VLAN_NETLINK 160ifdef CONFIG_FULL_DYNAMIC_VLAN 161OBJS += ../src/ap/vlan_util.o 162endif 163CFLAGS += -DCONFIG_VLAN_NETLINK 164endif 165endif 166 167ifdef CONFIG_NO_CTRL_IFACE 168CFLAGS += -DCONFIG_NO_CTRL_IFACE 169else 170OBJS += ctrl_iface.o 171OBJS += ../src/ap/ctrl_iface_ap.o 172endif 173 174CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX 175 176ifdef CONFIG_IAPP 177CFLAGS += -DCONFIG_IAPP 178OBJS += ../src/ap/iapp.o 179endif 180 181ifdef CONFIG_RSN_PREAUTH 182CFLAGS += -DCONFIG_RSN_PREAUTH 183CONFIG_L2_PACKET=y 184endif 185 186ifdef CONFIG_PEERKEY 187CFLAGS += -DCONFIG_PEERKEY 188OBJS += ../src/ap/peerkey_auth.o 189endif 190 191ifdef CONFIG_HS20 192NEED_AES_OMAC1=y 193CONFIG_PROXYARP=y 194endif 195 196ifdef CONFIG_PROXYARP 197CONFIG_L2_PACKET=y 198endif 199 200ifdef CONFIG_SUITEB 201CFLAGS += -DCONFIG_SUITEB 202NEED_SHA256=y 203NEED_AES_OMAC1=y 204endif 205 206ifdef CONFIG_SUITEB192 207CFLAGS += -DCONFIG_SUITEB192 208NEED_SHA384=y 209endif 210 211ifdef CONFIG_IEEE80211W 212CFLAGS += -DCONFIG_IEEE80211W 213NEED_SHA256=y 214NEED_AES_OMAC1=y 215endif 216 217ifdef CONFIG_IEEE80211R 218CFLAGS += -DCONFIG_IEEE80211R 219OBJS += ../src/ap/wpa_auth_ft.o 220NEED_SHA256=y 221NEED_AES_OMAC1=y 222NEED_AES_UNWRAP=y 223endif 224 225ifdef CONFIG_SAE 226CFLAGS += -DCONFIG_SAE 227OBJS += ../src/common/sae.o 228NEED_ECC=y 229NEED_DH_GROUPS=y 230endif 231 232ifdef CONFIG_WNM 233CFLAGS += -DCONFIG_WNM 234OBJS += ../src/ap/wnm_ap.o 235endif 236 237ifdef CONFIG_IEEE80211N 238CFLAGS += -DCONFIG_IEEE80211N 239endif 240 241ifdef CONFIG_IEEE80211AC 242CFLAGS += -DCONFIG_IEEE80211AC 243endif 244 245include ../src/drivers/drivers.mak 246OBJS += $(DRV_AP_OBJS) 247CFLAGS += $(DRV_AP_CFLAGS) 248LDFLAGS += $(DRV_AP_LDFLAGS) 249LIBS += $(DRV_AP_LIBS) 250 251ifdef CONFIG_L2_PACKET 252ifdef CONFIG_DNET_PCAP 253ifdef CONFIG_L2_FREEBSD 254LIBS += -lpcap 255OBJS += ../src/l2_packet/l2_packet_freebsd.o 256else 257LIBS += -ldnet -lpcap 258OBJS += ../src/l2_packet/l2_packet_pcap.o 259endif 260else 261OBJS += ../src/l2_packet/l2_packet_linux.o 262endif 263else 264OBJS += ../src/l2_packet/l2_packet_none.o 265endif 266 267 268ifdef CONFIG_ERP 269CFLAGS += -DCONFIG_ERP 270NEED_SHA256=y 271NEED_HMAC_SHA256_KDF=y 272endif 273 274ifdef CONFIG_EAP_MD5 275CFLAGS += -DEAP_SERVER_MD5 276OBJS += ../src/eap_server/eap_server_md5.o 277CHAP=y 278endif 279 280ifdef CONFIG_EAP_TLS 281CFLAGS += -DEAP_SERVER_TLS 282OBJS += ../src/eap_server/eap_server_tls.o 283TLS_FUNCS=y 284endif 285 286ifdef CONFIG_EAP_UNAUTH_TLS 287CFLAGS += -DEAP_SERVER_UNAUTH_TLS 288ifndef CONFIG_EAP_TLS 289OBJS += ../src/eap_server/eap_server_tls.o 290TLS_FUNCS=y 291endif 292endif 293 294ifdef CONFIG_EAP_PEAP 295CFLAGS += -DEAP_SERVER_PEAP 296OBJS += ../src/eap_server/eap_server_peap.o 297OBJS += ../src/eap_common/eap_peap_common.o 298TLS_FUNCS=y 299CONFIG_EAP_MSCHAPV2=y 300endif 301 302ifdef CONFIG_EAP_TTLS 303CFLAGS += -DEAP_SERVER_TTLS 304OBJS += ../src/eap_server/eap_server_ttls.o 305TLS_FUNCS=y 306CHAP=y 307endif 308 309ifdef CONFIG_EAP_MSCHAPV2 310CFLAGS += -DEAP_SERVER_MSCHAPV2 311OBJS += ../src/eap_server/eap_server_mschapv2.o 312MS_FUNCS=y 313endif 314 315ifdef CONFIG_EAP_GTC 316CFLAGS += -DEAP_SERVER_GTC 317OBJS += ../src/eap_server/eap_server_gtc.o 318endif 319 320ifdef CONFIG_EAP_SIM 321CFLAGS += -DEAP_SERVER_SIM 322OBJS += ../src/eap_server/eap_server_sim.o 323CONFIG_EAP_SIM_COMMON=y 324NEED_AES_CBC=y 325endif 326 327ifdef CONFIG_EAP_AKA 328CFLAGS += -DEAP_SERVER_AKA 329OBJS += ../src/eap_server/eap_server_aka.o 330CONFIG_EAP_SIM_COMMON=y 331NEED_SHA256=y 332NEED_AES_CBC=y 333endif 334 335ifdef CONFIG_EAP_AKA_PRIME 336CFLAGS += -DEAP_SERVER_AKA_PRIME 337endif 338 339ifdef CONFIG_EAP_SIM_COMMON 340OBJS += ../src/eap_common/eap_sim_common.o 341# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be 342# replaced with another file implementating the interface specified in 343# eap_sim_db.h. 344OBJS += ../src/eap_server/eap_sim_db.o 345NEED_FIPS186_2_PRF=y 346endif 347 348ifdef CONFIG_EAP_PAX 349CFLAGS += -DEAP_SERVER_PAX 350OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o 351endif 352 353ifdef CONFIG_EAP_PSK 354CFLAGS += -DEAP_SERVER_PSK 355OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o 356NEED_AES_OMAC1=y 357NEED_AES_ENCBLOCK=y 358NEED_AES_EAX=y 359endif 360 361ifdef CONFIG_EAP_SAKE 362CFLAGS += -DEAP_SERVER_SAKE 363OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o 364endif 365 366ifdef CONFIG_EAP_GPSK 367CFLAGS += -DEAP_SERVER_GPSK 368OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o 369ifdef CONFIG_EAP_GPSK_SHA256 370CFLAGS += -DEAP_GPSK_SHA256 371endif 372NEED_SHA256=y 373NEED_AES_OMAC1=y 374endif 375 376ifdef CONFIG_EAP_PWD 377CFLAGS += -DEAP_SERVER_PWD 378OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o 379NEED_SHA256=y 380endif 381 382ifdef CONFIG_EAP_EKE 383CFLAGS += -DEAP_SERVER_EKE 384OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o 385NEED_DH_GROUPS=y 386NEED_DH_GROUPS_ALL=y 387endif 388 389ifdef CONFIG_EAP_VENDOR_TEST 390CFLAGS += -DEAP_SERVER_VENDOR_TEST 391OBJS += ../src/eap_server/eap_server_vendor_test.o 392endif 393 394ifdef CONFIG_EAP_FAST 395CFLAGS += -DEAP_SERVER_FAST 396OBJS += ../src/eap_server/eap_server_fast.o 397OBJS += ../src/eap_common/eap_fast_common.o 398TLS_FUNCS=y 399NEED_T_PRF=y 400NEED_AES_UNWRAP=y 401endif 402 403ifdef CONFIG_WPS 404CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC 405OBJS += ../src/utils/uuid.o 406OBJS += ../src/ap/wps_hostapd.o 407OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o 408OBJS += ../src/wps/wps.o 409OBJS += ../src/wps/wps_common.o 410OBJS += ../src/wps/wps_attr_parse.o 411OBJS += ../src/wps/wps_attr_build.o 412OBJS += ../src/wps/wps_attr_process.o 413OBJS += ../src/wps/wps_dev_attr.o 414OBJS += ../src/wps/wps_enrollee.o 415OBJS += ../src/wps/wps_registrar.o 416NEED_DH_GROUPS=y 417NEED_SHA256=y 418NEED_BASE64=y 419NEED_AES_CBC=y 420NEED_MODEXP=y 421CONFIG_EAP=y 422 423ifdef CONFIG_WPS_NFC 424CFLAGS += -DCONFIG_WPS_NFC 425OBJS += ../src/wps/ndef.o 426NEED_WPS_OOB=y 427endif 428 429ifdef NEED_WPS_OOB 430CFLAGS += -DCONFIG_WPS_OOB 431endif 432 433ifdef CONFIG_WPS_UPNP 434CFLAGS += -DCONFIG_WPS_UPNP 435OBJS += ../src/wps/wps_upnp.o 436OBJS += ../src/wps/wps_upnp_ssdp.o 437OBJS += ../src/wps/wps_upnp_web.o 438OBJS += ../src/wps/wps_upnp_event.o 439OBJS += ../src/wps/wps_upnp_ap.o 440OBJS += ../src/wps/upnp_xml.o 441OBJS += ../src/wps/httpread.o 442OBJS += ../src/wps/http_client.o 443OBJS += ../src/wps/http_server.o 444endif 445 446ifdef CONFIG_WPS_STRICT 447CFLAGS += -DCONFIG_WPS_STRICT 448OBJS += ../src/wps/wps_validate.o 449endif 450 451ifdef CONFIG_WPS_TESTING 452CFLAGS += -DCONFIG_WPS_TESTING 453endif 454 455endif 456 457ifdef CONFIG_EAP_IKEV2 458CFLAGS += -DEAP_SERVER_IKEV2 459OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o 460OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o 461NEED_DH_GROUPS=y 462NEED_DH_GROUPS_ALL=y 463NEED_MODEXP=y 464NEED_CIPHER=y 465endif 466 467ifdef CONFIG_EAP_TNC 468CFLAGS += -DEAP_SERVER_TNC 469OBJS += ../src/eap_server/eap_server_tnc.o 470OBJS += ../src/eap_server/tncs.o 471NEED_BASE64=y 472ifndef CONFIG_DRIVER_BSD 473LIBS += -ldl 474endif 475endif 476 477# Basic EAP functionality is needed for EAPOL 478OBJS += eap_register.o 479OBJS += ../src/eap_server/eap_server.o 480OBJS += ../src/eap_common/eap_common.o 481OBJS += ../src/eap_server/eap_server_methods.o 482OBJS += ../src/eap_server/eap_server_identity.o 483CFLAGS += -DEAP_SERVER_IDENTITY 484 485ifdef CONFIG_EAP 486CFLAGS += -DEAP_SERVER 487endif 488 489ifdef CONFIG_PKCS12 490CFLAGS += -DPKCS12_FUNCS 491endif 492 493ifdef MS_FUNCS 494OBJS += ../src/crypto/ms_funcs.o 495NEED_DES=y 496NEED_MD4=y 497endif 498 499ifdef CHAP 500OBJS += ../src/eap_common/chap.o 501endif 502 503ifdef TLS_FUNCS 504NEED_DES=y 505# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS) 506CFLAGS += -DEAP_TLS_FUNCS 507OBJS += ../src/eap_server/eap_server_tls_common.o 508NEED_TLS_PRF=y 509endif 510 511ifndef CONFIG_TLS 512CONFIG_TLS=openssl 513endif 514 515ifdef CONFIG_TLSV11 516CFLAGS += -DCONFIG_TLSV11 517endif 518 519ifdef CONFIG_TLSV12 520CFLAGS += -DCONFIG_TLSV12 521NEED_SHA256=y 522endif 523 524ifeq ($(CONFIG_TLS), openssl) 525ifdef TLS_FUNCS 526OBJS += ../src/crypto/tls_openssl.o 527LIBS += -lssl 528endif 529OBJS += ../src/crypto/crypto_openssl.o 530HOBJS += ../src/crypto/crypto_openssl.o 531ifdef NEED_FIPS186_2_PRF 532OBJS += ../src/crypto/fips_prf_openssl.o 533endif 534LIBS += -lcrypto 535LIBS_h += -lcrypto 536endif 537 538ifeq ($(CONFIG_TLS), gnutls) 539ifdef TLS_FUNCS 540OBJS += ../src/crypto/tls_gnutls.o 541LIBS += -lgnutls -lgpg-error 542endif 543OBJS += ../src/crypto/crypto_gnutls.o 544HOBJS += ../src/crypto/crypto_gnutls.o 545ifdef NEED_FIPS186_2_PRF 546OBJS += ../src/crypto/fips_prf_internal.o 547SHA1OBJS += ../src/crypto/sha1-internal.o 548endif 549LIBS += -lgcrypt 550LIBS_h += -lgcrypt 551CONFIG_INTERNAL_SHA256=y 552CONFIG_INTERNAL_RC4=y 553CONFIG_INTERNAL_DH_GROUP5=y 554endif 555 556ifeq ($(CONFIG_TLS), schannel) 557ifdef TLS_FUNCS 558OBJS += ../src/crypto/tls_schannel.o 559endif 560OBJS += ../src/crypto/crypto_cryptoapi.o 561OBJS_p += ../src/crypto/crypto_cryptoapi.o 562CONFIG_INTERNAL_SHA256=y 563CONFIG_INTERNAL_RC4=y 564CONFIG_INTERNAL_DH_GROUP5=y 565endif 566 567ifeq ($(CONFIG_TLS), internal) 568ifndef CONFIG_CRYPTO 569CONFIG_CRYPTO=internal 570endif 571ifdef TLS_FUNCS 572OBJS += ../src/crypto/crypto_internal-rsa.o 573OBJS += ../src/crypto/tls_internal.o 574OBJS += ../src/tls/tlsv1_common.o 575OBJS += ../src/tls/tlsv1_record.o 576OBJS += ../src/tls/tlsv1_cred.o 577OBJS += ../src/tls/tlsv1_server.o 578OBJS += ../src/tls/tlsv1_server_write.o 579OBJS += ../src/tls/tlsv1_server_read.o 580OBJS += ../src/tls/asn1.o 581OBJS += ../src/tls/rsa.o 582OBJS += ../src/tls/x509v3.o 583OBJS += ../src/tls/pkcs1.o 584OBJS += ../src/tls/pkcs5.o 585OBJS += ../src/tls/pkcs8.o 586NEED_SHA256=y 587NEED_BASE64=y 588NEED_TLS_PRF=y 589ifdef CONFIG_TLSV12 590NEED_TLS_PRF_SHA256=y 591endif 592NEED_MODEXP=y 593NEED_CIPHER=y 594CFLAGS += -DCONFIG_TLS_INTERNAL 595CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 596endif 597ifdef NEED_CIPHER 598NEED_DES=y 599OBJS += ../src/crypto/crypto_internal-cipher.o 600endif 601ifdef NEED_MODEXP 602OBJS += ../src/crypto/crypto_internal-modexp.o 603OBJS += ../src/tls/bignum.o 604endif 605ifeq ($(CONFIG_CRYPTO), libtomcrypt) 606OBJS += ../src/crypto/crypto_libtomcrypt.o 607LIBS += -ltomcrypt -ltfm 608LIBS_h += -ltomcrypt -ltfm 609CONFIG_INTERNAL_SHA256=y 610CONFIG_INTERNAL_RC4=y 611CONFIG_INTERNAL_DH_GROUP5=y 612endif 613ifeq ($(CONFIG_CRYPTO), internal) 614OBJS += ../src/crypto/crypto_internal.o 615NEED_AES_DEC=y 616CFLAGS += -DCONFIG_CRYPTO_INTERNAL 617ifdef CONFIG_INTERNAL_LIBTOMMATH 618CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 619ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 620CFLAGS += -DLTM_FAST 621endif 622else 623LIBS += -ltommath 624LIBS_h += -ltommath 625endif 626CONFIG_INTERNAL_AES=y 627CONFIG_INTERNAL_DES=y 628CONFIG_INTERNAL_SHA1=y 629CONFIG_INTERNAL_MD4=y 630CONFIG_INTERNAL_MD5=y 631CONFIG_INTERNAL_SHA256=y 632CONFIG_INTERNAL_RC4=y 633CONFIG_INTERNAL_DH_GROUP5=y 634endif 635ifeq ($(CONFIG_CRYPTO), cryptoapi) 636OBJS += ../src/crypto/crypto_cryptoapi.o 637OBJS_p += ../src/crypto/crypto_cryptoapi.o 638CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 639CONFIG_INTERNAL_SHA256=y 640CONFIG_INTERNAL_RC4=y 641endif 642endif 643 644ifeq ($(CONFIG_TLS), none) 645ifdef TLS_FUNCS 646OBJS += ../src/crypto/tls_none.o 647CFLAGS += -DEAP_TLS_NONE 648CONFIG_INTERNAL_AES=y 649CONFIG_INTERNAL_SHA1=y 650CONFIG_INTERNAL_MD5=y 651endif 652OBJS += ../src/crypto/crypto_none.o 653OBJS_p += ../src/crypto/crypto_none.o 654CONFIG_INTERNAL_SHA256=y 655CONFIG_INTERNAL_RC4=y 656endif 657 658ifndef TLS_FUNCS 659OBJS += ../src/crypto/tls_none.o 660ifeq ($(CONFIG_TLS), internal) 661CONFIG_INTERNAL_AES=y 662CONFIG_INTERNAL_SHA1=y 663CONFIG_INTERNAL_MD5=y 664CONFIG_INTERNAL_RC4=y 665endif 666endif 667 668AESOBJS = # none so far 669ifdef CONFIG_INTERNAL_AES 670AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o 671endif 672 673ifneq ($(CONFIG_TLS), openssl) 674AESOBJS += ../src/crypto/aes-wrap.o 675endif 676ifdef NEED_AES_EAX 677AESOBJS += ../src/crypto/aes-eax.o 678NEED_AES_CTR=y 679endif 680ifdef NEED_AES_CTR 681AESOBJS += ../src/crypto/aes-ctr.o 682endif 683ifdef NEED_AES_ENCBLOCK 684AESOBJS += ../src/crypto/aes-encblock.o 685endif 686ifdef NEED_AES_OMAC1 687AESOBJS += ../src/crypto/aes-omac1.o 688endif 689ifdef NEED_AES_UNWRAP 690ifneq ($(CONFIG_TLS), openssl) 691NEED_AES_DEC=y 692AESOBJS += ../src/crypto/aes-unwrap.o 693endif 694endif 695ifdef NEED_AES_CBC 696NEED_AES_DEC=y 697AESOBJS += ../src/crypto/aes-cbc.o 698endif 699ifdef NEED_AES_DEC 700ifdef CONFIG_INTERNAL_AES 701AESOBJS += ../src/crypto/aes-internal-dec.o 702endif 703endif 704ifdef NEED_AES 705OBJS += $(AESOBJS) 706endif 707 708ifdef NEED_SHA1 709ifneq ($(CONFIG_TLS), openssl) 710SHA1OBJS += ../src/crypto/sha1.o 711endif 712SHA1OBJS += ../src/crypto/sha1-prf.o 713ifdef CONFIG_INTERNAL_SHA1 714SHA1OBJS += ../src/crypto/sha1-internal.o 715ifdef NEED_FIPS186_2_PRF 716SHA1OBJS += ../src/crypto/fips_prf_internal.o 717endif 718endif 719ifneq ($(CONFIG_TLS), openssl) 720SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 721endif 722ifdef NEED_T_PRF 723SHA1OBJS += ../src/crypto/sha1-tprf.o 724endif 725ifdef NEED_TLS_PRF 726SHA1OBJS += ../src/crypto/sha1-tlsprf.o 727endif 728endif 729 730ifdef NEED_SHA1 731OBJS += $(SHA1OBJS) 732endif 733 734ifneq ($(CONFIG_TLS), openssl) 735OBJS += ../src/crypto/md5.o 736endif 737 738ifdef NEED_MD5 739ifdef CONFIG_INTERNAL_MD5 740OBJS += ../src/crypto/md5-internal.o 741HOBJS += ../src/crypto/md5-internal.o 742endif 743endif 744 745ifdef NEED_MD4 746ifdef CONFIG_INTERNAL_MD4 747OBJS += ../src/crypto/md4-internal.o 748endif 749endif 750 751ifdef NEED_DES 752ifdef CONFIG_INTERNAL_DES 753OBJS += ../src/crypto/des-internal.o 754endif 755endif 756 757ifdef NEED_RC4 758ifdef CONFIG_INTERNAL_RC4 759OBJS += ../src/crypto/rc4.o 760endif 761endif 762 763ifdef NEED_SHA256 764CFLAGS += -DCONFIG_SHA256 765ifneq ($(CONFIG_TLS), openssl) 766OBJS += ../src/crypto/sha256.o 767endif 768OBJS += ../src/crypto/sha256-prf.o 769ifdef CONFIG_INTERNAL_SHA256 770OBJS += ../src/crypto/sha256-internal.o 771endif 772ifdef NEED_TLS_PRF_SHA256 773OBJS += ../src/crypto/sha256-tlsprf.o 774endif 775ifdef NEED_HMAC_SHA256_KDF 776OBJS += ../src/crypto/sha256-kdf.o 777endif 778endif 779ifdef NEED_SHA384 780CFLAGS += -DCONFIG_SHA384 781endif 782 783ifdef NEED_DH_GROUPS 784OBJS += ../src/crypto/dh_groups.o 785endif 786ifdef NEED_DH_GROUPS_ALL 787CFLAGS += -DALL_DH_GROUPS 788endif 789ifdef CONFIG_INTERNAL_DH_GROUP5 790ifdef NEED_DH_GROUPS 791OBJS += ../src/crypto/dh_group5.o 792endif 793endif 794 795ifdef NEED_ECC 796CFLAGS += -DCONFIG_ECC 797endif 798 799ifdef CONFIG_NO_RANDOM_POOL 800CFLAGS += -DCONFIG_NO_RANDOM_POOL 801else 802OBJS += ../src/crypto/random.o 803HOBJS += ../src/crypto/random.o 804HOBJS += ../src/utils/eloop.o 805HOBJS += $(SHA1OBJS) 806HOBJS += ../src/crypto/md5.o 807endif 808 809ifdef CONFIG_RADIUS_SERVER 810CFLAGS += -DRADIUS_SERVER 811OBJS += ../src/radius/radius_server.o 812endif 813 814ifdef CONFIG_IPV6 815CFLAGS += -DCONFIG_IPV6 816endif 817 818ifdef CONFIG_DRIVER_RADIUS_ACL 819CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL 820endif 821 822ifdef CONFIG_FULL_DYNAMIC_VLAN 823# define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges 824# and vlan interfaces for the vlan feature. 825CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN 826endif 827 828ifdef NEED_BASE64 829OBJS += ../src/utils/base64.o 830endif 831 832ifdef NEED_AP_MLME 833OBJS += ../src/ap/wmm.o 834OBJS += ../src/ap/ap_list.o 835OBJS += ../src/ap/ieee802_11.o 836OBJS += ../src/ap/hw_features.o 837OBJS += ../src/ap/dfs.o 838CFLAGS += -DNEED_AP_MLME 839endif 840ifdef CONFIG_IEEE80211N 841OBJS += ../src/ap/ieee802_11_ht.o 842endif 843 844ifdef CONFIG_IEEE80211AC 845OBJS += ../src/ap/ieee802_11_vht.o 846endif 847 848ifdef CONFIG_P2P_MANAGER 849CFLAGS += -DCONFIG_P2P_MANAGER 850OBJS += ../src/ap/p2p_hostapd.o 851endif 852 853ifdef CONFIG_HS20 854CFLAGS += -DCONFIG_HS20 855OBJS += ../src/ap/hs20.o 856CONFIG_INTERWORKING=y 857endif 858 859ifdef CONFIG_INTERWORKING 860CFLAGS += -DCONFIG_INTERWORKING 861OBJS += ../src/common/gas.o 862OBJS += ../src/ap/gas_serv.o 863endif 864 865ifdef CONFIG_PROXYARP 866CFLAGS += -DCONFIG_PROXYARP 867OBJS += ../src/ap/x_snoop.o 868OBJS += ../src/ap/dhcp_snoop.o 869ifdef CONFIG_IPV6 870OBJS += ../src/ap/ndisc_snoop.o 871endif 872endif 873 874OBJS += ../src/drivers/driver_common.o 875 876ifdef CONFIG_WPA_CLI_EDIT 877OBJS_c += ../src/utils/edit.o 878else 879OBJS_c += ../src/utils/edit_simple.o 880endif 881 882ifdef CONFIG_ACS 883CFLAGS += -DCONFIG_ACS 884OBJS += ../src/ap/acs.o 885LIBS += -lm 886endif 887 888ifdef CONFIG_NO_STDOUT_DEBUG 889CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 890endif 891 892ifdef CONFIG_DEBUG_LINUX_TRACING 893CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING 894endif 895 896ifdef CONFIG_DEBUG_FILE 897CFLAGS += -DCONFIG_DEBUG_FILE 898endif 899 900ifdef CONFIG_SQLITE 901CFLAGS += -DCONFIG_SQLITE 902LIBS += -lsqlite3 903LIBS_h += -lsqlite3 904endif 905 906ALL=hostapd hostapd_cli 907 908all: verify_config $(ALL) 909 910Q=@ 911E=echo 912ifeq ($(V), 1) 913Q= 914E=true 915endif 916ifeq ($(QUIET), 1) 917Q=@ 918E=true 919endif 920 921ifdef CONFIG_CODE_COVERAGE 922%.o: %.c 923 @$(E) " CC " $< 924 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<) 925else 926%.o: %.c 927 $(Q)$(CC) -c -o $@ $(CFLAGS) $< 928 @$(E) " CC " $< 929endif 930 931verify_config: 932 @if [ ! -r .config ]; then \ 933 echo 'Building hostapd requires a configuration file'; \ 934 echo '(.config). See README for more instructions. You can'; \ 935 echo 'run "cp defconfig .config" to create an example'; \ 936 echo 'configuration.'; \ 937 exit 1; \ 938 fi 939 940$(DESTDIR)$(BINDIR)/%: % 941 install -D $(<) $(@) 942 943install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL)) 944 945../src/drivers/build.hostapd: 946 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \ 947 $(MAKE) -C ../src/drivers clean; \ 948 fi 949 @touch ../src/drivers/build.hostapd 950 951BCHECK=../src/drivers/build.hostapd 952 953hostapd: $(BCHECK) $(OBJS) 954 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS) 955 @$(E) " LD " $@ 956 957ifdef CONFIG_WPA_TRACE 958OBJS_c += ../src/utils/trace.o 959endif 960hostapd_cli: $(OBJS_c) 961 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c) 962 @$(E) " LD " $@ 963 964NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) 965NOBJS += ../src/utils/common.o 966ifdef NEED_RC4 967ifdef CONFIG_INTERNAL_RC4 968NOBJS += ../src/crypto/rc4.o 969endif 970endif 971ifdef CONFIG_INTERNAL_MD5 972NOBJS += ../src/crypto/md5-internal.o 973endif 974NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o 975NOBJS += ../src/utils/wpa_debug.o 976NOBJS += ../src/utils/wpabuf.o 977ifdef CONFIG_WPA_TRACE 978NOBJS += ../src/utils/trace.o 979LIBS_n += -lbfd 980endif 981ifdef TLS_FUNCS 982LIBS_n += -lcrypto 983endif 984 985HOBJS += 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 986HOBJS += ../src/crypto/aes-encblock.o 987ifdef CONFIG_INTERNAL_AES 988HOBJS += ../src/crypto/aes-internal.o 989HOBJS += ../src/crypto/aes-internal-enc.o 990endif 991 992nt_password_hash: $(NOBJS) 993 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n) 994 @$(E) " LD " $@ 995 996hlr_auc_gw: $(HOBJS) 997 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h) 998 @$(E) " LD " $@ 999 1000lcov-html: 1001 lcov -c -d .. > lcov.info 1002 genhtml lcov.info --output-directory lcov-html 1003 1004clean: 1005 $(MAKE) -C ../src clean 1006 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw 1007 rm -f *.d *.gcno *.gcda *.gcov 1008 rm -f lcov.info 1009 rm -rf lcov-html 1010 1011-include $(OBJS:%.o=%.d) 1012