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