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