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