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