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