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_EKE 327CFLAGS += -DEAP_SERVER_EKE 328OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o 329NEED_DH_GROUPS=y 330NEED_DH_GROUPS_ALL=y 331endif 332 333ifdef CONFIG_EAP_VENDOR_TEST 334CFLAGS += -DEAP_SERVER_VENDOR_TEST 335OBJS += ../src/eap_server/eap_server_vendor_test.o 336endif 337 338ifdef CONFIG_EAP_FAST 339CFLAGS += -DEAP_SERVER_FAST 340OBJS += ../src/eap_server/eap_server_fast.o 341OBJS += ../src/eap_common/eap_fast_common.o 342TLS_FUNCS=y 343NEED_T_PRF=y 344NEED_AES_UNWRAP=y 345endif 346 347ifdef CONFIG_WPS 348ifdef CONFIG_WPS2 349CFLAGS += -DCONFIG_WPS2 350endif 351 352CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC 353OBJS += ../src/utils/uuid.o 354OBJS += ../src/ap/wps_hostapd.o 355OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o 356OBJS += ../src/wps/wps.o 357OBJS += ../src/wps/wps_common.o 358OBJS += ../src/wps/wps_attr_parse.o 359OBJS += ../src/wps/wps_attr_build.o 360OBJS += ../src/wps/wps_attr_process.o 361OBJS += ../src/wps/wps_dev_attr.o 362OBJS += ../src/wps/wps_enrollee.o 363OBJS += ../src/wps/wps_registrar.o 364NEED_DH_GROUPS=y 365NEED_SHA256=y 366NEED_BASE64=y 367NEED_AES_CBC=y 368NEED_MODEXP=y 369CONFIG_EAP=y 370 371ifdef CONFIG_WPS_NFC 372CFLAGS += -DCONFIG_WPS_NFC 373OBJS += ../src/wps/ndef.o 374NEED_WPS_OOB=y 375endif 376 377ifdef NEED_WPS_OOB 378CFLAGS += -DCONFIG_WPS_OOB 379endif 380 381ifdef CONFIG_WPS_UPNP 382CFLAGS += -DCONFIG_WPS_UPNP 383OBJS += ../src/wps/wps_upnp.o 384OBJS += ../src/wps/wps_upnp_ssdp.o 385OBJS += ../src/wps/wps_upnp_web.o 386OBJS += ../src/wps/wps_upnp_event.o 387OBJS += ../src/wps/wps_upnp_ap.o 388OBJS += ../src/wps/upnp_xml.o 389OBJS += ../src/wps/httpread.o 390OBJS += ../src/wps/http_client.o 391OBJS += ../src/wps/http_server.o 392endif 393 394ifdef CONFIG_WPS_STRICT 395CFLAGS += -DCONFIG_WPS_STRICT 396OBJS += ../src/wps/wps_validate.o 397endif 398 399ifdef CONFIG_WPS_TESTING 400CFLAGS += -DCONFIG_WPS_TESTING 401endif 402 403endif 404 405ifdef CONFIG_EAP_IKEV2 406CFLAGS += -DEAP_SERVER_IKEV2 407OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o 408OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o 409NEED_DH_GROUPS=y 410NEED_DH_GROUPS_ALL=y 411NEED_MODEXP=y 412NEED_CIPHER=y 413endif 414 415ifdef CONFIG_EAP_TNC 416CFLAGS += -DEAP_SERVER_TNC 417OBJS += ../src/eap_server/eap_server_tnc.o 418OBJS += ../src/eap_server/tncs.o 419NEED_BASE64=y 420ifndef CONFIG_DRIVER_BSD 421LIBS += -ldl 422endif 423endif 424 425# Basic EAP functionality is needed for EAPOL 426OBJS += eap_register.o 427OBJS += ../src/eap_server/eap_server.o 428OBJS += ../src/eap_common/eap_common.o 429OBJS += ../src/eap_server/eap_server_methods.o 430OBJS += ../src/eap_server/eap_server_identity.o 431CFLAGS += -DEAP_SERVER_IDENTITY 432 433ifdef CONFIG_EAP 434CFLAGS += -DEAP_SERVER 435endif 436 437ifdef CONFIG_PKCS12 438CFLAGS += -DPKCS12_FUNCS 439endif 440 441ifdef MS_FUNCS 442OBJS += ../src/crypto/ms_funcs.o 443NEED_DES=y 444NEED_MD4=y 445endif 446 447ifdef CHAP 448OBJS += ../src/eap_common/chap.o 449endif 450 451ifdef TLS_FUNCS 452NEED_DES=y 453# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS) 454CFLAGS += -DEAP_TLS_FUNCS 455OBJS += ../src/eap_server/eap_server_tls_common.o 456NEED_TLS_PRF=y 457endif 458 459ifndef CONFIG_TLS 460CONFIG_TLS=openssl 461endif 462 463ifdef CONFIG_TLSV11 464CFLAGS += -DCONFIG_TLSV11 465endif 466 467ifdef CONFIG_TLSV12 468CFLAGS += -DCONFIG_TLSV12 469NEED_SHA256=y 470endif 471 472ifeq ($(CONFIG_TLS), openssl) 473ifdef TLS_FUNCS 474OBJS += ../src/crypto/tls_openssl.o 475LIBS += -lssl 476endif 477OBJS += ../src/crypto/crypto_openssl.o 478HOBJS += ../src/crypto/crypto_openssl.o 479ifdef NEED_FIPS186_2_PRF 480OBJS += ../src/crypto/fips_prf_openssl.o 481endif 482LIBS += -lcrypto 483LIBS_h += -lcrypto 484endif 485 486ifeq ($(CONFIG_TLS), gnutls) 487ifdef TLS_FUNCS 488OBJS += ../src/crypto/tls_gnutls.o 489LIBS += -lgnutls -lgpg-error 490endif 491OBJS += ../src/crypto/crypto_gnutls.o 492HOBJS += ../src/crypto/crypto_gnutls.o 493ifdef NEED_FIPS186_2_PRF 494OBJS += ../src/crypto/fips_prf_gnutls.o 495endif 496LIBS += -lgcrypt 497LIBS_h += -lgcrypt 498CONFIG_INTERNAL_SHA256=y 499CONFIG_INTERNAL_RC4=y 500CONFIG_INTERNAL_DH_GROUP5=y 501endif 502 503ifeq ($(CONFIG_TLS), schannel) 504ifdef TLS_FUNCS 505OBJS += ../src/crypto/tls_schannel.o 506endif 507OBJS += ../src/crypto/crypto_cryptoapi.o 508OBJS_p += ../src/crypto/crypto_cryptoapi.o 509CONFIG_INTERNAL_SHA256=y 510CONFIG_INTERNAL_RC4=y 511CONFIG_INTERNAL_DH_GROUP5=y 512endif 513 514ifeq ($(CONFIG_TLS), nss) 515ifdef TLS_FUNCS 516OBJS += ../src/crypto/tls_nss.o 517LIBS += -lssl3 518endif 519OBJS += ../src/crypto/crypto_nss.o 520ifdef NEED_FIPS186_2_PRF 521OBJS += ../src/crypto/fips_prf_nss.o 522endif 523LIBS += -lnss3 524LIBS_h += -lnss3 525CONFIG_INTERNAL_MD4=y 526CONFIG_INTERNAL_DH_GROUP5=y 527endif 528 529ifeq ($(CONFIG_TLS), internal) 530ifndef CONFIG_CRYPTO 531CONFIG_CRYPTO=internal 532endif 533ifdef TLS_FUNCS 534OBJS += ../src/crypto/crypto_internal-rsa.o 535OBJS += ../src/crypto/tls_internal.o 536OBJS += ../src/tls/tlsv1_common.o 537OBJS += ../src/tls/tlsv1_record.o 538OBJS += ../src/tls/tlsv1_cred.o 539OBJS += ../src/tls/tlsv1_server.o 540OBJS += ../src/tls/tlsv1_server_write.o 541OBJS += ../src/tls/tlsv1_server_read.o 542OBJS += ../src/tls/asn1.o 543OBJS += ../src/tls/rsa.o 544OBJS += ../src/tls/x509v3.o 545OBJS += ../src/tls/pkcs1.o 546OBJS += ../src/tls/pkcs5.o 547OBJS += ../src/tls/pkcs8.o 548NEED_SHA256=y 549NEED_BASE64=y 550NEED_TLS_PRF=y 551ifdef CONFIG_TLSV12 552NEED_TLS_PRF_SHA256=y 553endif 554NEED_MODEXP=y 555NEED_CIPHER=y 556CFLAGS += -DCONFIG_TLS_INTERNAL 557CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 558endif 559ifdef NEED_CIPHER 560NEED_DES=y 561OBJS += ../src/crypto/crypto_internal-cipher.o 562endif 563ifdef NEED_MODEXP 564OBJS += ../src/crypto/crypto_internal-modexp.o 565OBJS += ../src/tls/bignum.o 566endif 567ifeq ($(CONFIG_CRYPTO), libtomcrypt) 568OBJS += ../src/crypto/crypto_libtomcrypt.o 569LIBS += -ltomcrypt -ltfm 570LIBS_h += -ltomcrypt -ltfm 571CONFIG_INTERNAL_SHA256=y 572CONFIG_INTERNAL_RC4=y 573CONFIG_INTERNAL_DH_GROUP5=y 574endif 575ifeq ($(CONFIG_CRYPTO), internal) 576OBJS += ../src/crypto/crypto_internal.o 577NEED_AES_DEC=y 578CFLAGS += -DCONFIG_CRYPTO_INTERNAL 579ifdef CONFIG_INTERNAL_LIBTOMMATH 580CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 581ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 582CFLAGS += -DLTM_FAST 583endif 584else 585LIBS += -ltommath 586LIBS_h += -ltommath 587endif 588CONFIG_INTERNAL_AES=y 589CONFIG_INTERNAL_DES=y 590CONFIG_INTERNAL_SHA1=y 591CONFIG_INTERNAL_MD4=y 592CONFIG_INTERNAL_MD5=y 593CONFIG_INTERNAL_SHA256=y 594CONFIG_INTERNAL_RC4=y 595CONFIG_INTERNAL_DH_GROUP5=y 596endif 597ifeq ($(CONFIG_CRYPTO), cryptoapi) 598OBJS += ../src/crypto/crypto_cryptoapi.o 599OBJS_p += ../src/crypto/crypto_cryptoapi.o 600CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 601CONFIG_INTERNAL_SHA256=y 602CONFIG_INTERNAL_RC4=y 603endif 604endif 605 606ifeq ($(CONFIG_TLS), none) 607ifdef TLS_FUNCS 608OBJS += ../src/crypto/tls_none.o 609CFLAGS += -DEAP_TLS_NONE 610CONFIG_INTERNAL_AES=y 611CONFIG_INTERNAL_SHA1=y 612CONFIG_INTERNAL_MD5=y 613endif 614OBJS += ../src/crypto/crypto_none.o 615OBJS_p += ../src/crypto/crypto_none.o 616CONFIG_INTERNAL_SHA256=y 617CONFIG_INTERNAL_RC4=y 618endif 619 620ifndef TLS_FUNCS 621OBJS += ../src/crypto/tls_none.o 622ifeq ($(CONFIG_TLS), internal) 623CONFIG_INTERNAL_AES=y 624CONFIG_INTERNAL_SHA1=y 625CONFIG_INTERNAL_MD5=y 626CONFIG_INTERNAL_RC4=y 627endif 628endif 629 630AESOBJS = # none so far 631ifdef CONFIG_INTERNAL_AES 632AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o 633endif 634 635AESOBJS += ../src/crypto/aes-wrap.o 636ifdef NEED_AES_EAX 637AESOBJS += ../src/crypto/aes-eax.o 638NEED_AES_CTR=y 639endif 640ifdef NEED_AES_CTR 641AESOBJS += ../src/crypto/aes-ctr.o 642endif 643ifdef NEED_AES_ENCBLOCK 644AESOBJS += ../src/crypto/aes-encblock.o 645endif 646ifdef NEED_AES_OMAC1 647AESOBJS += ../src/crypto/aes-omac1.o 648endif 649ifdef NEED_AES_UNWRAP 650NEED_AES_DEC=y 651AESOBJS += ../src/crypto/aes-unwrap.o 652endif 653ifdef NEED_AES_CBC 654NEED_AES_DEC=y 655AESOBJS += ../src/crypto/aes-cbc.o 656endif 657ifdef NEED_AES_DEC 658ifdef CONFIG_INTERNAL_AES 659AESOBJS += ../src/crypto/aes-internal-dec.o 660endif 661endif 662ifdef NEED_AES 663OBJS += $(AESOBJS) 664endif 665 666ifdef NEED_SHA1 667ifneq ($(CONFIG_TLS), openssl) 668SHA1OBJS += ../src/crypto/sha1.o 669endif 670SHA1OBJS += ../src/crypto/sha1-prf.o 671ifdef CONFIG_INTERNAL_SHA1 672SHA1OBJS += ../src/crypto/sha1-internal.o 673ifdef NEED_FIPS186_2_PRF 674SHA1OBJS += ../src/crypto/fips_prf_internal.o 675endif 676endif 677ifneq ($(CONFIG_TLS), openssl) 678SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 679endif 680ifdef NEED_T_PRF 681SHA1OBJS += ../src/crypto/sha1-tprf.o 682endif 683ifdef NEED_TLS_PRF 684SHA1OBJS += ../src/crypto/sha1-tlsprf.o 685endif 686endif 687 688ifdef NEED_SHA1 689OBJS += $(SHA1OBJS) 690endif 691 692ifdef NEED_MD5 693ifdef CONFIG_INTERNAL_MD5 694OBJS += ../src/crypto/md5-internal.o 695HOBJS += ../src/crypto/md5-internal.o 696endif 697endif 698 699ifdef NEED_MD4 700ifdef CONFIG_INTERNAL_MD4 701OBJS += ../src/crypto/md4-internal.o 702endif 703endif 704 705ifdef NEED_DES 706ifdef CONFIG_INTERNAL_DES 707OBJS += ../src/crypto/des-internal.o 708endif 709endif 710 711ifdef NEED_RC4 712ifdef CONFIG_INTERNAL_RC4 713OBJS += ../src/crypto/rc4.o 714endif 715endif 716 717ifdef NEED_SHA256 718CFLAGS += -DCONFIG_SHA256 719ifneq ($(CONFIG_TLS), openssl) 720OBJS += ../src/crypto/sha256.o 721endif 722OBJS += ../src/crypto/sha256-prf.o 723ifdef CONFIG_INTERNAL_SHA256 724OBJS += ../src/crypto/sha256-internal.o 725endif 726ifdef NEED_TLS_PRF_SHA256 727OBJS += ../src/crypto/sha256-tlsprf.o 728endif 729endif 730 731ifdef NEED_DH_GROUPS 732OBJS += ../src/crypto/dh_groups.o 733endif 734ifdef NEED_DH_GROUPS_ALL 735CFLAGS += -DALL_DH_GROUPS 736endif 737ifdef CONFIG_INTERNAL_DH_GROUP5 738ifdef NEED_DH_GROUPS 739OBJS += ../src/crypto/dh_group5.o 740endif 741endif 742 743ifdef NEED_ECC 744CFLAGS += -DCONFIG_ECC 745endif 746 747ifdef CONFIG_NO_RANDOM_POOL 748CFLAGS += -DCONFIG_NO_RANDOM_POOL 749else 750OBJS += ../src/crypto/random.o 751HOBJS += ../src/crypto/random.o 752HOBJS += ../src/utils/eloop.o 753HOBJS += $(SHA1OBJS) 754HOBJS += ../src/crypto/md5.o 755endif 756 757ifdef CONFIG_RADIUS_SERVER 758CFLAGS += -DRADIUS_SERVER 759OBJS += ../src/radius/radius_server.o 760endif 761 762ifdef CONFIG_IPV6 763CFLAGS += -DCONFIG_IPV6 764endif 765 766ifdef CONFIG_DRIVER_RADIUS_ACL 767CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL 768endif 769 770ifdef CONFIG_FULL_DYNAMIC_VLAN 771# define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges 772# and vlan interfaces for the vlan feature. 773CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN 774endif 775 776ifdef NEED_BASE64 777OBJS += ../src/utils/base64.o 778endif 779 780ifdef NEED_AP_MLME 781OBJS += ../src/ap/wmm.o 782OBJS += ../src/ap/ap_list.o 783OBJS += ../src/ap/ieee802_11.o 784OBJS += ../src/ap/hw_features.o 785CFLAGS += -DNEED_AP_MLME 786endif 787ifdef CONFIG_IEEE80211N 788OBJS += ../src/ap/ieee802_11_ht.o 789endif 790 791ifdef CONFIG_IEEE80211AC 792OBJS += ../src/ap/ieee802_11_vht.o 793endif 794 795ifdef CONFIG_P2P_MANAGER 796CFLAGS += -DCONFIG_P2P_MANAGER 797OBJS += ../src/ap/p2p_hostapd.o 798endif 799 800ifdef CONFIG_HS20 801CFLAGS += -DCONFIG_HS20 802OBJS += ../src/ap/hs20.o 803CONFIG_INTERWORKING=y 804endif 805 806ifdef CONFIG_INTERWORKING 807CFLAGS += -DCONFIG_INTERWORKING 808OBJS += ../src/common/gas.o 809OBJS += ../src/ap/gas_serv.o 810endif 811 812OBJS += ../src/drivers/driver_common.o 813 814ifdef CONFIG_WPA_CLI_EDIT 815OBJS_c += ../src/utils/edit.o 816else 817OBJS_c += ../src/utils/edit_simple.o 818endif 819 820ifdef CONFIG_ACS 821CFLAGS += -DCONFIG_ACS 822OBJS += ../src/ap/acs.o 823LIBS += -lm 824endif 825 826ifdef CONFIG_NO_STDOUT_DEBUG 827CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 828endif 829 830ifdef CONFIG_DEBUG_FILE 831CFLAGS += -DCONFIG_DEBUG_FILE 832endif 833 834ifdef CONFIG_SQLITE 835CFLAGS += -DCONFIG_SQLITE 836LIBS += -lsqlite3 837LIBS_h += -lsqlite3 838endif 839 840ifdef CONFIG_TESTING_OPTIONS 841CFLAGS += -DCONFIG_TESTING_OPTIONS 842endif 843 844ALL=hostapd hostapd_cli 845 846all: verify_config $(ALL) 847 848Q=@ 849E=echo 850ifeq ($(V), 1) 851Q= 852E=true 853endif 854 855%.o: %.c 856 $(Q)$(CC) -c -o $@ $(CFLAGS) $< 857 @$(E) " CC " $< 858 859verify_config: 860 @if [ ! -r .config ]; then \ 861 echo 'Building hostapd requires a configuration file'; \ 862 echo '(.config). See README for more instructions. You can'; \ 863 echo 'run "cp defconfig .config" to create an example'; \ 864 echo 'configuration.'; \ 865 exit 1; \ 866 fi 867 868install: all 869 mkdir -p $(DESTDIR)/usr/local/bin 870 for i in $(ALL); do cp -f $$i $(DESTDIR)/usr/local/bin/$$i; done 871 872../src/drivers/build.hostapd: 873 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \ 874 $(MAKE) -C ../src/drivers clean; \ 875 fi 876 @touch ../src/drivers/build.hostapd 877 878BCHECK=../src/drivers/build.hostapd 879 880hostapd: $(BCHECK) $(OBJS) 881 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS) 882 @$(E) " LD " $@ 883 884ifdef CONFIG_WPA_TRACE 885OBJS_c += ../src/utils/trace.o 886endif 887hostapd_cli: $(OBJS_c) 888 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c) 889 @$(E) " LD " $@ 890 891NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) ../src/crypto/md5.o 892ifdef NEED_RC4 893ifdef CONFIG_INTERNAL_RC4 894NOBJS += ../src/crypto/rc4.o 895endif 896endif 897ifdef CONFIG_INTERNAL_MD5 898NOBJS += ../src/crypto/md5-internal.o 899endif 900NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o 901NOBJS += ../src/utils/wpa_debug.o 902NOBJS += ../src/utils/wpabuf.o 903ifdef CONFIG_WPA_TRACE 904NOBJS += ../src/utils/trace.o 905LIBS_n += -lbfd 906endif 907ifdef TLS_FUNCS 908LIBS_n += -lcrypto 909endif 910 911HOBJS += 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 912HOBJS += ../src/crypto/aes-encblock.o 913ifdef CONFIG_INTERNAL_AES 914HOBJS += ../src/crypto/aes-internal.o 915HOBJS += ../src/crypto/aes-internal-enc.o 916endif 917 918nt_password_hash: $(NOBJS) 919 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n) 920 @$(E) " LD " $@ 921 922hlr_auc_gw: $(HOBJS) 923 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h) 924 @$(E) " LD " $@ 925 926clean: 927 $(MAKE) -C ../src clean 928 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw 929 rm -f *.d 930 931-include $(OBJS:%.o=%.d) 932