Makefile revision b97e428f8acf1ecb93f38f8d0063d2f2fd0bc36e
1ifndef CC 2CC=gcc 3endif 4 5ifndef CFLAGS 6CFLAGS = -MMD -O2 -Wall -g 7endif 8 9ifdef LIBS 10# If LIBS is set with some global build system defaults, clone those for 11# LIBS_c, LIBS_h, and LIBS_n to cover hostapd_cli, hlr_auc_gw, and 12# nt_password_hash as well. 13ifndef LIBS_c 14LIBS_c := $(LIBS) 15endif 16ifndef LIBS_h 17LIBS_h := $(LIBS) 18endif 19ifndef LIBS_n 20LIBS_n := $(LIBS) 21endif 22endif 23 24CFLAGS += $(EXTRA_CFLAGS) 25CFLAGS += -I$(abspath ../src) 26CFLAGS += -I$(abspath ../src/utils) 27 28export BINDIR ?= /usr/local/bin/ 29 30# Uncomment following line and set the path to your kernel tree include 31# directory if your C library does not include all header files. 32# CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include 33 34-include .config 35 36ifndef CONFIG_NO_GITVER 37# Add VERSION_STR postfix for builds from a git repository 38ifeq ($(wildcard ../.git),../.git) 39GITVER := $(shell git describe --dirty=+) 40ifneq ($(GITVER),) 41CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\" 42endif 43endif 44endif 45 46ifdef CONFIG_TESTING_OPTIONS 47CFLAGS += -DCONFIG_TESTING_OPTIONS 48CONFIG_WPS_TESTING=y 49endif 50 51ifndef CONFIG_OS 52ifdef CONFIG_NATIVE_WINDOWS 53CONFIG_OS=win32 54else 55CONFIG_OS=unix 56endif 57endif 58 59ifeq ($(CONFIG_OS), internal) 60CFLAGS += -DOS_NO_C_LIB_DEFINES 61endif 62 63ifdef CONFIG_NATIVE_WINDOWS 64CFLAGS += -DCONFIG_NATIVE_WINDOWS 65LIBS += -lws2_32 66endif 67 68OBJS += main.o 69OBJS += config_file.o 70 71OBJS += ../src/ap/hostapd.o 72OBJS += ../src/ap/wpa_auth_glue.o 73OBJS += ../src/ap/drv_callbacks.o 74OBJS += ../src/ap/ap_drv_ops.o 75OBJS += ../src/ap/utils.o 76OBJS += ../src/ap/authsrv.o 77OBJS += ../src/ap/ieee802_1x.o 78OBJS += ../src/ap/ap_config.o 79OBJS += ../src/ap/eap_user_db.o 80OBJS += ../src/ap/ieee802_11_auth.o 81OBJS += ../src/ap/sta_info.o 82OBJS += ../src/ap/wpa_auth.o 83OBJS += ../src/ap/tkip_countermeasures.o 84OBJS += ../src/ap/ap_mlme.o 85OBJS += ../src/ap/wpa_auth_ie.o 86OBJS += ../src/ap/preauth_auth.o 87OBJS += ../src/ap/pmksa_cache_auth.o 88OBJS += ../src/ap/ieee802_11_shared.o 89OBJS += ../src/ap/beacon.o 90OBJS += ../src/ap/bss_load.o 91 92OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o 93 94NEED_RC4=y 95NEED_AES=y 96NEED_MD5=y 97NEED_SHA1=y 98 99OBJS += ../src/drivers/drivers.o 100CFLAGS += -DHOSTAPD 101 102ifdef CONFIG_MODULE_TESTS 103CFLAGS += -DCONFIG_MODULE_TESTS 104OBJS += hapd_module_tests.o 105endif 106 107ifdef CONFIG_WPA_TRACE 108CFLAGS += -DWPA_TRACE 109OBJS += ../src/utils/trace.o 110HOBJS += ../src/utils/trace.o 111LDFLAGS += -rdynamic 112CFLAGS += -funwind-tables 113ifdef CONFIG_WPA_TRACE_BFD 114CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD 115LIBS += -lbfd -ldl -liberty -lz 116LIBS_c += -lbfd -ldl -liberty -lz 117LIBS_h += -lbfd -ldl -liberty -lz 118endif 119endif 120 121ifndef CONFIG_ELOOP 122CONFIG_ELOOP=eloop 123endif 124OBJS += ../src/utils/$(CONFIG_ELOOP).o 125OBJS_c += ../src/utils/$(CONFIG_ELOOP).o 126 127ifeq ($(CONFIG_ELOOP), eloop) 128# Using glibc < 2.17 requires -lrt for clock_gettime() 129LIBS += -lrt 130LIBS_c += -lrt 131LIBS_h += -lrt 132LIBS_n += -lrt 133endif 134 135ifdef CONFIG_ELOOP_POLL 136CFLAGS += -DCONFIG_ELOOP_POLL 137endif 138 139ifdef CONFIG_ELOOP_EPOLL 140CFLAGS += -DCONFIG_ELOOP_EPOLL 141endif 142 143ifdef CONFIG_ELOOP_KQUEUE 144CFLAGS += -DCONFIG_ELOOP_KQUEUE 145endif 146 147OBJS += ../src/utils/common.o 148OBJS_c += ../src/utils/common.o 149OBJS += ../src/utils/wpa_debug.o 150OBJS_c += ../src/utils/wpa_debug.o 151OBJS += ../src/utils/wpabuf.o 152OBJS += ../src/utils/os_$(CONFIG_OS).o 153OBJS += ../src/utils/ip_addr.o 154 155OBJS += ../src/common/ieee802_11_common.o 156OBJS += ../src/common/wpa_common.o 157OBJS += ../src/common/hw_features_common.o 158 159OBJS += ../src/eapol_auth/eapol_auth_sm.o 160 161 162ifdef CONFIG_CODE_COVERAGE 163CFLAGS += -O0 -fprofile-arcs -ftest-coverage 164LIBS += -lgcov 165LIBS_c += -lgcov 166LIBS_h += -lgcov 167LIBS_n += -lgcov 168endif 169 170ifndef CONFIG_NO_DUMP_STATE 171# define HOSTAPD_DUMP_STATE to include support for dumping internal state 172# through control interface commands (undefine it, if you want to save in 173# binary size) 174CFLAGS += -DHOSTAPD_DUMP_STATE 175OBJS += ../src/eapol_auth/eapol_auth_dump.o 176endif 177 178ifdef CONFIG_NO_RADIUS 179CFLAGS += -DCONFIG_NO_RADIUS 180CONFIG_NO_ACCOUNTING=y 181else 182OBJS += ../src/radius/radius.o 183OBJS += ../src/radius/radius_client.o 184OBJS += ../src/radius/radius_das.o 185endif 186 187ifdef CONFIG_NO_ACCOUNTING 188CFLAGS += -DCONFIG_NO_ACCOUNTING 189else 190OBJS += ../src/ap/accounting.o 191endif 192 193ifdef CONFIG_NO_VLAN 194CFLAGS += -DCONFIG_NO_VLAN 195else 196OBJS += ../src/ap/vlan_init.o 197ifdef CONFIG_VLAN_NETLINK 198ifdef CONFIG_FULL_DYNAMIC_VLAN 199OBJS += ../src/ap/vlan_util.o 200endif 201CFLAGS += -DCONFIG_VLAN_NETLINK 202endif 203endif 204 205ifdef CONFIG_NO_CTRL_IFACE 206CFLAGS += -DCONFIG_NO_CTRL_IFACE 207else 208OBJS += ctrl_iface.o 209OBJS += ../src/ap/ctrl_iface_ap.o 210endif 211 212CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX 213 214ifdef CONFIG_IAPP 215CFLAGS += -DCONFIG_IAPP 216OBJS += ../src/ap/iapp.o 217endif 218 219ifdef CONFIG_RSN_PREAUTH 220CFLAGS += -DCONFIG_RSN_PREAUTH 221CONFIG_L2_PACKET=y 222endif 223 224ifdef CONFIG_PEERKEY 225CFLAGS += -DCONFIG_PEERKEY 226OBJS += ../src/ap/peerkey_auth.o 227endif 228 229ifdef CONFIG_HS20 230NEED_AES_OMAC1=y 231CONFIG_PROXYARP=y 232endif 233 234ifdef CONFIG_PROXYARP 235CONFIG_L2_PACKET=y 236endif 237 238ifdef CONFIG_SUITEB 239CFLAGS += -DCONFIG_SUITEB 240NEED_SHA256=y 241NEED_AES_OMAC1=y 242endif 243 244ifdef CONFIG_SUITEB192 245CFLAGS += -DCONFIG_SUITEB192 246NEED_SHA384=y 247endif 248 249ifdef CONFIG_IEEE80211W 250CFLAGS += -DCONFIG_IEEE80211W 251NEED_SHA256=y 252NEED_AES_OMAC1=y 253endif 254 255ifdef CONFIG_IEEE80211R 256CFLAGS += -DCONFIG_IEEE80211R 257OBJS += ../src/ap/wpa_auth_ft.o 258NEED_SHA256=y 259NEED_AES_OMAC1=y 260NEED_AES_UNWRAP=y 261endif 262 263ifdef CONFIG_SAE 264CFLAGS += -DCONFIG_SAE 265OBJS += ../src/common/sae.o 266NEED_ECC=y 267NEED_DH_GROUPS=y 268NEED_AP_MLME=y 269endif 270 271ifdef CONFIG_WNM 272CFLAGS += -DCONFIG_WNM 273OBJS += ../src/ap/wnm_ap.o 274endif 275 276ifdef CONFIG_IEEE80211N 277CFLAGS += -DCONFIG_IEEE80211N 278endif 279 280ifdef CONFIG_IEEE80211AC 281CFLAGS += -DCONFIG_IEEE80211AC 282endif 283 284include ../src/drivers/drivers.mak 285OBJS += $(DRV_AP_OBJS) 286CFLAGS += $(DRV_AP_CFLAGS) 287LDFLAGS += $(DRV_AP_LDFLAGS) 288LIBS += $(DRV_AP_LIBS) 289 290ifdef CONFIG_L2_PACKET 291ifdef CONFIG_DNET_PCAP 292ifdef CONFIG_L2_FREEBSD 293LIBS += -lpcap 294OBJS += ../src/l2_packet/l2_packet_freebsd.o 295else 296LIBS += -ldnet -lpcap 297OBJS += ../src/l2_packet/l2_packet_pcap.o 298endif 299else 300OBJS += ../src/l2_packet/l2_packet_linux.o 301endif 302else 303OBJS += ../src/l2_packet/l2_packet_none.o 304endif 305 306 307ifdef CONFIG_ERP 308CFLAGS += -DCONFIG_ERP 309NEED_SHA256=y 310NEED_HMAC_SHA256_KDF=y 311endif 312 313ifdef CONFIG_EAP_MD5 314CFLAGS += -DEAP_SERVER_MD5 315OBJS += ../src/eap_server/eap_server_md5.o 316CHAP=y 317endif 318 319ifdef CONFIG_EAP_TLS 320CFLAGS += -DEAP_SERVER_TLS 321OBJS += ../src/eap_server/eap_server_tls.o 322TLS_FUNCS=y 323endif 324 325ifdef CONFIG_EAP_UNAUTH_TLS 326CFLAGS += -DEAP_SERVER_UNAUTH_TLS 327ifndef CONFIG_EAP_TLS 328OBJS += ../src/eap_server/eap_server_tls.o 329TLS_FUNCS=y 330endif 331endif 332 333ifdef CONFIG_EAP_PEAP 334CFLAGS += -DEAP_SERVER_PEAP 335OBJS += ../src/eap_server/eap_server_peap.o 336OBJS += ../src/eap_common/eap_peap_common.o 337TLS_FUNCS=y 338CONFIG_EAP_MSCHAPV2=y 339endif 340 341ifdef CONFIG_EAP_TTLS 342CFLAGS += -DEAP_SERVER_TTLS 343OBJS += ../src/eap_server/eap_server_ttls.o 344TLS_FUNCS=y 345CHAP=y 346endif 347 348ifdef CONFIG_EAP_MSCHAPV2 349CFLAGS += -DEAP_SERVER_MSCHAPV2 350OBJS += ../src/eap_server/eap_server_mschapv2.o 351MS_FUNCS=y 352endif 353 354ifdef CONFIG_EAP_GTC 355CFLAGS += -DEAP_SERVER_GTC 356OBJS += ../src/eap_server/eap_server_gtc.o 357endif 358 359ifdef CONFIG_EAP_SIM 360CFLAGS += -DEAP_SERVER_SIM 361OBJS += ../src/eap_server/eap_server_sim.o 362CONFIG_EAP_SIM_COMMON=y 363NEED_AES_CBC=y 364endif 365 366ifdef CONFIG_EAP_AKA 367CFLAGS += -DEAP_SERVER_AKA 368OBJS += ../src/eap_server/eap_server_aka.o 369CONFIG_EAP_SIM_COMMON=y 370NEED_SHA256=y 371NEED_AES_CBC=y 372endif 373 374ifdef CONFIG_EAP_AKA_PRIME 375CFLAGS += -DEAP_SERVER_AKA_PRIME 376endif 377 378ifdef CONFIG_EAP_SIM_COMMON 379OBJS += ../src/eap_common/eap_sim_common.o 380# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be 381# replaced with another file implementating the interface specified in 382# eap_sim_db.h. 383OBJS += ../src/eap_server/eap_sim_db.o 384NEED_FIPS186_2_PRF=y 385endif 386 387ifdef CONFIG_EAP_PAX 388CFLAGS += -DEAP_SERVER_PAX 389OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o 390endif 391 392ifdef CONFIG_EAP_PSK 393CFLAGS += -DEAP_SERVER_PSK 394OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o 395NEED_AES_OMAC1=y 396NEED_AES_ENCBLOCK=y 397NEED_AES_EAX=y 398endif 399 400ifdef CONFIG_EAP_SAKE 401CFLAGS += -DEAP_SERVER_SAKE 402OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o 403endif 404 405ifdef CONFIG_EAP_GPSK 406CFLAGS += -DEAP_SERVER_GPSK 407OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o 408ifdef CONFIG_EAP_GPSK_SHA256 409CFLAGS += -DEAP_GPSK_SHA256 410endif 411NEED_SHA256=y 412NEED_AES_OMAC1=y 413endif 414 415ifdef CONFIG_EAP_PWD 416CFLAGS += -DEAP_SERVER_PWD 417OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o 418NEED_SHA256=y 419endif 420 421ifdef CONFIG_EAP_EKE 422CFLAGS += -DEAP_SERVER_EKE 423OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o 424NEED_DH_GROUPS=y 425NEED_DH_GROUPS_ALL=y 426endif 427 428ifdef CONFIG_EAP_VENDOR_TEST 429CFLAGS += -DEAP_SERVER_VENDOR_TEST 430OBJS += ../src/eap_server/eap_server_vendor_test.o 431endif 432 433ifdef CONFIG_EAP_FAST 434CFLAGS += -DEAP_SERVER_FAST 435OBJS += ../src/eap_server/eap_server_fast.o 436OBJS += ../src/eap_common/eap_fast_common.o 437TLS_FUNCS=y 438NEED_T_PRF=y 439NEED_AES_UNWRAP=y 440endif 441 442ifdef CONFIG_WPS 443CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC 444OBJS += ../src/utils/uuid.o 445OBJS += ../src/ap/wps_hostapd.o 446OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o 447OBJS += ../src/wps/wps.o 448OBJS += ../src/wps/wps_common.o 449OBJS += ../src/wps/wps_attr_parse.o 450OBJS += ../src/wps/wps_attr_build.o 451OBJS += ../src/wps/wps_attr_process.o 452OBJS += ../src/wps/wps_dev_attr.o 453OBJS += ../src/wps/wps_enrollee.o 454OBJS += ../src/wps/wps_registrar.o 455NEED_DH_GROUPS=y 456NEED_SHA256=y 457NEED_BASE64=y 458NEED_AES_CBC=y 459NEED_MODEXP=y 460CONFIG_EAP=y 461 462ifdef CONFIG_WPS_NFC 463CFLAGS += -DCONFIG_WPS_NFC 464OBJS += ../src/wps/ndef.o 465NEED_WPS_OOB=y 466endif 467 468ifdef NEED_WPS_OOB 469CFLAGS += -DCONFIG_WPS_OOB 470endif 471 472ifdef CONFIG_WPS_UPNP 473CFLAGS += -DCONFIG_WPS_UPNP 474OBJS += ../src/wps/wps_upnp.o 475OBJS += ../src/wps/wps_upnp_ssdp.o 476OBJS += ../src/wps/wps_upnp_web.o 477OBJS += ../src/wps/wps_upnp_event.o 478OBJS += ../src/wps/wps_upnp_ap.o 479OBJS += ../src/wps/upnp_xml.o 480OBJS += ../src/wps/httpread.o 481OBJS += ../src/wps/http_client.o 482OBJS += ../src/wps/http_server.o 483endif 484 485ifdef CONFIG_WPS_STRICT 486CFLAGS += -DCONFIG_WPS_STRICT 487OBJS += ../src/wps/wps_validate.o 488endif 489 490ifdef CONFIG_WPS_TESTING 491CFLAGS += -DCONFIG_WPS_TESTING 492endif 493 494endif 495 496ifdef CONFIG_EAP_IKEV2 497CFLAGS += -DEAP_SERVER_IKEV2 498OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o 499OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o 500NEED_DH_GROUPS=y 501NEED_DH_GROUPS_ALL=y 502NEED_MODEXP=y 503NEED_CIPHER=y 504endif 505 506ifdef CONFIG_EAP_TNC 507CFLAGS += -DEAP_SERVER_TNC 508OBJS += ../src/eap_server/eap_server_tnc.o 509OBJS += ../src/eap_server/tncs.o 510NEED_BASE64=y 511ifndef CONFIG_DRIVER_BSD 512LIBS += -ldl 513endif 514endif 515 516# Basic EAP functionality is needed for EAPOL 517OBJS += eap_register.o 518OBJS += ../src/eap_server/eap_server.o 519OBJS += ../src/eap_common/eap_common.o 520OBJS += ../src/eap_server/eap_server_methods.o 521OBJS += ../src/eap_server/eap_server_identity.o 522CFLAGS += -DEAP_SERVER_IDENTITY 523 524ifdef CONFIG_EAP 525CFLAGS += -DEAP_SERVER 526endif 527 528ifdef CONFIG_PKCS12 529CFLAGS += -DPKCS12_FUNCS 530endif 531 532ifdef MS_FUNCS 533OBJS += ../src/crypto/ms_funcs.o 534NEED_DES=y 535NEED_MD4=y 536endif 537 538ifdef CHAP 539OBJS += ../src/eap_common/chap.o 540endif 541 542ifdef TLS_FUNCS 543NEED_DES=y 544# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS) 545CFLAGS += -DEAP_TLS_FUNCS 546OBJS += ../src/eap_server/eap_server_tls_common.o 547NEED_TLS_PRF=y 548endif 549 550ifndef CONFIG_TLS 551CONFIG_TLS=openssl 552endif 553 554ifdef CONFIG_TLSV11 555CFLAGS += -DCONFIG_TLSV11 556endif 557 558ifdef CONFIG_TLSV12 559CFLAGS += -DCONFIG_TLSV12 560NEED_SHA256=y 561endif 562 563ifeq ($(CONFIG_TLS), openssl) 564ifdef TLS_FUNCS 565OBJS += ../src/crypto/tls_openssl.o 566OBJS += ../src/crypto/tls_openssl_ocsp.o 567LIBS += -lssl 568endif 569OBJS += ../src/crypto/crypto_openssl.o 570HOBJS += ../src/crypto/crypto_openssl.o 571ifdef NEED_FIPS186_2_PRF 572OBJS += ../src/crypto/fips_prf_openssl.o 573endif 574NEED_SHA256=y 575NEED_TLS_PRF_SHA256=y 576LIBS += -lcrypto 577LIBS_h += -lcrypto 578ifdef CONFIG_TLS_ADD_DL 579LIBS += -ldl 580LIBS_h += -ldl 581endif 582endif 583 584ifeq ($(CONFIG_TLS), gnutls) 585ifdef TLS_FUNCS 586OBJS += ../src/crypto/tls_gnutls.o 587LIBS += -lgnutls -lgpg-error 588endif 589OBJS += ../src/crypto/crypto_gnutls.o 590HOBJS += ../src/crypto/crypto_gnutls.o 591ifdef NEED_FIPS186_2_PRF 592OBJS += ../src/crypto/fips_prf_internal.o 593SHA1OBJS += ../src/crypto/sha1-internal.o 594endif 595LIBS += -lgcrypt 596LIBS_h += -lgcrypt 597CONFIG_INTERNAL_SHA256=y 598CONFIG_INTERNAL_RC4=y 599CONFIG_INTERNAL_DH_GROUP5=y 600endif 601 602ifeq ($(CONFIG_TLS), internal) 603ifndef CONFIG_CRYPTO 604CONFIG_CRYPTO=internal 605endif 606ifdef TLS_FUNCS 607OBJS += ../src/crypto/crypto_internal-rsa.o 608OBJS += ../src/crypto/tls_internal.o 609OBJS += ../src/tls/tlsv1_common.o 610OBJS += ../src/tls/tlsv1_record.o 611OBJS += ../src/tls/tlsv1_cred.o 612OBJS += ../src/tls/tlsv1_server.o 613OBJS += ../src/tls/tlsv1_server_write.o 614OBJS += ../src/tls/tlsv1_server_read.o 615OBJS += ../src/tls/asn1.o 616OBJS += ../src/tls/rsa.o 617OBJS += ../src/tls/x509v3.o 618OBJS += ../src/tls/pkcs1.o 619OBJS += ../src/tls/pkcs5.o 620OBJS += ../src/tls/pkcs8.o 621NEED_SHA256=y 622NEED_BASE64=y 623NEED_TLS_PRF=y 624ifdef CONFIG_TLSV12 625NEED_TLS_PRF_SHA256=y 626endif 627NEED_MODEXP=y 628NEED_CIPHER=y 629CFLAGS += -DCONFIG_TLS_INTERNAL 630CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER 631endif 632ifdef NEED_CIPHER 633NEED_DES=y 634OBJS += ../src/crypto/crypto_internal-cipher.o 635endif 636ifdef NEED_MODEXP 637OBJS += ../src/crypto/crypto_internal-modexp.o 638OBJS += ../src/tls/bignum.o 639endif 640ifeq ($(CONFIG_CRYPTO), libtomcrypt) 641OBJS += ../src/crypto/crypto_libtomcrypt.o 642LIBS += -ltomcrypt -ltfm 643LIBS_h += -ltomcrypt -ltfm 644CONFIG_INTERNAL_SHA256=y 645CONFIG_INTERNAL_RC4=y 646CONFIG_INTERNAL_DH_GROUP5=y 647endif 648ifeq ($(CONFIG_CRYPTO), internal) 649OBJS += ../src/crypto/crypto_internal.o 650NEED_AES_DEC=y 651CFLAGS += -DCONFIG_CRYPTO_INTERNAL 652ifdef CONFIG_INTERNAL_LIBTOMMATH 653CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH 654ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST 655CFLAGS += -DLTM_FAST 656endif 657else 658LIBS += -ltommath 659LIBS_h += -ltommath 660endif 661CONFIG_INTERNAL_AES=y 662CONFIG_INTERNAL_DES=y 663CONFIG_INTERNAL_SHA1=y 664CONFIG_INTERNAL_MD4=y 665CONFIG_INTERNAL_MD5=y 666CONFIG_INTERNAL_SHA256=y 667CONFIG_INTERNAL_SHA384=y 668CONFIG_INTERNAL_SHA512=y 669CONFIG_INTERNAL_RC4=y 670CONFIG_INTERNAL_DH_GROUP5=y 671endif 672ifeq ($(CONFIG_CRYPTO), cryptoapi) 673OBJS += ../src/crypto/crypto_cryptoapi.o 674OBJS_p += ../src/crypto/crypto_cryptoapi.o 675CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI 676CONFIG_INTERNAL_SHA256=y 677CONFIG_INTERNAL_RC4=y 678endif 679endif 680 681ifeq ($(CONFIG_TLS), none) 682ifdef TLS_FUNCS 683OBJS += ../src/crypto/tls_none.o 684CFLAGS += -DEAP_TLS_NONE 685CONFIG_INTERNAL_AES=y 686CONFIG_INTERNAL_SHA1=y 687CONFIG_INTERNAL_MD5=y 688endif 689OBJS += ../src/crypto/crypto_none.o 690OBJS_p += ../src/crypto/crypto_none.o 691CONFIG_INTERNAL_SHA256=y 692CONFIG_INTERNAL_RC4=y 693endif 694 695ifndef TLS_FUNCS 696OBJS += ../src/crypto/tls_none.o 697ifeq ($(CONFIG_TLS), internal) 698CONFIG_INTERNAL_AES=y 699CONFIG_INTERNAL_SHA1=y 700CONFIG_INTERNAL_MD5=y 701CONFIG_INTERNAL_RC4=y 702endif 703endif 704 705AESOBJS = # none so far 706ifdef CONFIG_INTERNAL_AES 707AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o 708endif 709 710ifneq ($(CONFIG_TLS), openssl) 711AESOBJS += ../src/crypto/aes-wrap.o 712endif 713ifdef NEED_AES_EAX 714AESOBJS += ../src/crypto/aes-eax.o 715NEED_AES_CTR=y 716endif 717ifdef NEED_AES_CTR 718AESOBJS += ../src/crypto/aes-ctr.o 719endif 720ifdef NEED_AES_ENCBLOCK 721AESOBJS += ../src/crypto/aes-encblock.o 722endif 723ifdef NEED_AES_OMAC1 724AESOBJS += ../src/crypto/aes-omac1.o 725endif 726ifdef NEED_AES_UNWRAP 727ifneq ($(CONFIG_TLS), openssl) 728NEED_AES_DEC=y 729AESOBJS += ../src/crypto/aes-unwrap.o 730endif 731endif 732ifdef NEED_AES_CBC 733NEED_AES_DEC=y 734ifneq ($(CONFIG_TLS), openssl) 735AESOBJS += ../src/crypto/aes-cbc.o 736endif 737endif 738ifdef NEED_AES_DEC 739ifdef CONFIG_INTERNAL_AES 740AESOBJS += ../src/crypto/aes-internal-dec.o 741endif 742endif 743ifdef NEED_AES 744OBJS += $(AESOBJS) 745endif 746 747ifdef NEED_SHA1 748ifneq ($(CONFIG_TLS), openssl) 749SHA1OBJS += ../src/crypto/sha1.o 750endif 751SHA1OBJS += ../src/crypto/sha1-prf.o 752ifdef CONFIG_INTERNAL_SHA1 753SHA1OBJS += ../src/crypto/sha1-internal.o 754ifdef NEED_FIPS186_2_PRF 755SHA1OBJS += ../src/crypto/fips_prf_internal.o 756endif 757endif 758ifneq ($(CONFIG_TLS), openssl) 759SHA1OBJS += ../src/crypto/sha1-pbkdf2.o 760endif 761ifdef NEED_T_PRF 762SHA1OBJS += ../src/crypto/sha1-tprf.o 763endif 764ifdef NEED_TLS_PRF 765SHA1OBJS += ../src/crypto/sha1-tlsprf.o 766endif 767endif 768 769ifdef NEED_SHA1 770OBJS += $(SHA1OBJS) 771endif 772 773ifneq ($(CONFIG_TLS), openssl) 774OBJS += ../src/crypto/md5.o 775endif 776 777ifdef NEED_MD5 778ifdef CONFIG_INTERNAL_MD5 779OBJS += ../src/crypto/md5-internal.o 780HOBJS += ../src/crypto/md5-internal.o 781endif 782endif 783 784ifdef NEED_MD4 785ifdef CONFIG_INTERNAL_MD4 786OBJS += ../src/crypto/md4-internal.o 787endif 788endif 789 790ifdef NEED_DES 791ifdef CONFIG_INTERNAL_DES 792OBJS += ../src/crypto/des-internal.o 793endif 794endif 795 796ifdef CONFIG_NO_RC4 797CFLAGS += -DCONFIG_NO_RC4 798endif 799 800ifdef NEED_RC4 801ifdef CONFIG_INTERNAL_RC4 802ifndef CONFIG_NO_RC4 803OBJS += ../src/crypto/rc4.o 804endif 805endif 806endif 807 808ifdef NEED_SHA256 809CFLAGS += -DCONFIG_SHA256 810ifneq ($(CONFIG_TLS), openssl) 811OBJS += ../src/crypto/sha256.o 812endif 813OBJS += ../src/crypto/sha256-prf.o 814ifdef CONFIG_INTERNAL_SHA256 815OBJS += ../src/crypto/sha256-internal.o 816endif 817ifdef NEED_TLS_PRF_SHA256 818OBJS += ../src/crypto/sha256-tlsprf.o 819endif 820ifdef NEED_HMAC_SHA256_KDF 821OBJS += ../src/crypto/sha256-kdf.o 822endif 823endif 824ifdef NEED_SHA384 825CFLAGS += -DCONFIG_SHA384 826OBJS += ../src/crypto/sha384-prf.o 827endif 828 829ifdef CONFIG_INTERNAL_SHA384 830CFLAGS += -DCONFIG_INTERNAL_SHA384 831OBJS += ../src/crypto/sha384-internal.o 832endif 833 834ifdef CONFIG_INTERNAL_SHA512 835CFLAGS += -DCONFIG_INTERNAL_SHA512 836OBJS += ../src/crypto/sha512-internal.o 837endif 838 839ifdef NEED_DH_GROUPS 840OBJS += ../src/crypto/dh_groups.o 841endif 842ifdef NEED_DH_GROUPS_ALL 843CFLAGS += -DALL_DH_GROUPS 844endif 845ifdef CONFIG_INTERNAL_DH_GROUP5 846ifdef NEED_DH_GROUPS 847OBJS += ../src/crypto/dh_group5.o 848endif 849endif 850 851ifdef NEED_ECC 852CFLAGS += -DCONFIG_ECC 853endif 854 855ifdef CONFIG_NO_RANDOM_POOL 856CFLAGS += -DCONFIG_NO_RANDOM_POOL 857else 858OBJS += ../src/crypto/random.o 859HOBJS += ../src/crypto/random.o 860HOBJS += ../src/utils/eloop.o 861HOBJS += $(SHA1OBJS) 862ifneq ($(CONFIG_TLS), openssl) 863HOBJS += ../src/crypto/md5.o 864endif 865endif 866 867ifdef CONFIG_RADIUS_SERVER 868CFLAGS += -DRADIUS_SERVER 869OBJS += ../src/radius/radius_server.o 870endif 871 872ifdef CONFIG_IPV6 873CFLAGS += -DCONFIG_IPV6 874endif 875 876ifdef CONFIG_DRIVER_RADIUS_ACL 877CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL 878endif 879 880ifdef CONFIG_FULL_DYNAMIC_VLAN 881# define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges 882# and vlan interfaces for the vlan feature. 883CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN 884endif 885 886ifdef NEED_BASE64 887OBJS += ../src/utils/base64.o 888endif 889 890ifdef NEED_AP_MLME 891OBJS += ../src/ap/wmm.o 892OBJS += ../src/ap/ap_list.o 893OBJS += ../src/ap/ieee802_11.o 894OBJS += ../src/ap/hw_features.o 895OBJS += ../src/ap/dfs.o 896CFLAGS += -DNEED_AP_MLME 897endif 898ifdef CONFIG_IEEE80211N 899OBJS += ../src/ap/ieee802_11_ht.o 900endif 901 902ifdef CONFIG_IEEE80211AC 903OBJS += ../src/ap/ieee802_11_vht.o 904endif 905 906ifdef CONFIG_P2P_MANAGER 907CFLAGS += -DCONFIG_P2P_MANAGER 908OBJS += ../src/ap/p2p_hostapd.o 909endif 910 911ifdef CONFIG_HS20 912CFLAGS += -DCONFIG_HS20 913OBJS += ../src/ap/hs20.o 914CONFIG_INTERWORKING=y 915endif 916 917ifdef CONFIG_INTERWORKING 918CFLAGS += -DCONFIG_INTERWORKING 919OBJS += ../src/common/gas.o 920OBJS += ../src/ap/gas_serv.o 921endif 922 923ifdef CONFIG_PROXYARP 924CFLAGS += -DCONFIG_PROXYARP 925OBJS += ../src/ap/x_snoop.o 926OBJS += ../src/ap/dhcp_snoop.o 927ifdef CONFIG_IPV6 928OBJS += ../src/ap/ndisc_snoop.o 929endif 930endif 931 932OBJS += ../src/drivers/driver_common.o 933 934ifdef CONFIG_WPA_CLI_EDIT 935OBJS_c += ../src/utils/edit.o 936else 937OBJS_c += ../src/utils/edit_simple.o 938endif 939 940ifdef CONFIG_ACS 941CFLAGS += -DCONFIG_ACS 942OBJS += ../src/ap/acs.o 943LIBS += -lm 944endif 945 946ifdef CONFIG_NO_STDOUT_DEBUG 947CFLAGS += -DCONFIG_NO_STDOUT_DEBUG 948endif 949 950ifdef CONFIG_DEBUG_LINUX_TRACING 951CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING 952endif 953 954ifdef CONFIG_DEBUG_FILE 955CFLAGS += -DCONFIG_DEBUG_FILE 956endif 957 958ifdef CONFIG_SQLITE 959CFLAGS += -DCONFIG_SQLITE 960LIBS += -lsqlite3 961LIBS_h += -lsqlite3 962endif 963 964ifdef CONFIG_FST 965CFLAGS += -DCONFIG_FST 966OBJS += ../src/fst/fst.o 967OBJS += ../src/fst/fst_group.o 968OBJS += ../src/fst/fst_iface.o 969OBJS += ../src/fst/fst_session.o 970OBJS += ../src/fst/fst_ctrl_aux.o 971ifdef CONFIG_FST_TEST 972CFLAGS += -DCONFIG_FST_TEST 973endif 974ifndef CONFIG_NO_CTRL_IFACE 975OBJS += ../src/fst/fst_ctrl_iface.o 976endif 977endif 978 979ALL=hostapd hostapd_cli 980 981all: verify_config $(ALL) 982 983Q=@ 984E=echo 985ifeq ($(V), 1) 986Q= 987E=true 988endif 989ifeq ($(QUIET), 1) 990Q=@ 991E=true 992endif 993 994ifdef CONFIG_CODE_COVERAGE 995%.o: %.c 996 @$(E) " CC " $< 997 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<) 998else 999%.o: %.c 1000 $(Q)$(CC) -c -o $@ $(CFLAGS) $< 1001 @$(E) " CC " $< 1002endif 1003 1004verify_config: 1005 @if [ ! -r .config ]; then \ 1006 echo 'Building hostapd requires a configuration file'; \ 1007 echo '(.config). See README for more instructions. You can'; \ 1008 echo 'run "cp defconfig .config" to create an example'; \ 1009 echo 'configuration.'; \ 1010 exit 1; \ 1011 fi 1012 1013$(DESTDIR)$(BINDIR)/%: % 1014 install -D $(<) $(@) 1015 1016install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL)) 1017 1018../src/drivers/build.hostapd: 1019 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \ 1020 $(MAKE) -C ../src/drivers clean; \ 1021 fi 1022 @touch ../src/drivers/build.hostapd 1023 1024BCHECK=../src/drivers/build.hostapd 1025 1026hostapd: $(BCHECK) $(OBJS) 1027 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS) 1028 @$(E) " LD " $@ 1029 1030ifdef CONFIG_WPA_TRACE 1031OBJS_c += ../src/utils/trace.o 1032endif 1033hostapd_cli: $(OBJS_c) 1034 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c) 1035 @$(E) " LD " $@ 1036 1037NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) 1038NOBJS += ../src/utils/common.o 1039ifdef NEED_RC4 1040ifdef CONFIG_INTERNAL_RC4 1041ifndef CONFIG_NO_RC4 1042NOBJS += ../src/crypto/rc4.o 1043endif 1044endif 1045endif 1046ifdef CONFIG_INTERNAL_MD5 1047NOBJS += ../src/crypto/md5-internal.o 1048endif 1049NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o 1050NOBJS += ../src/utils/wpa_debug.o 1051NOBJS += ../src/utils/wpabuf.o 1052ifdef CONFIG_WPA_TRACE 1053NOBJS += ../src/utils/trace.o 1054LIBS_n += -lbfd 1055endif 1056ifdef TLS_FUNCS 1057LIBS_n += -lcrypto 1058endif 1059 1060HOBJS += 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 1061HOBJS += ../src/crypto/aes-encblock.o 1062ifdef CONFIG_INTERNAL_AES 1063HOBJS += ../src/crypto/aes-internal.o 1064HOBJS += ../src/crypto/aes-internal-enc.o 1065endif 1066 1067nt_password_hash: $(NOBJS) 1068 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n) 1069 @$(E) " LD " $@ 1070 1071hlr_auc_gw: $(HOBJS) 1072 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h) 1073 @$(E) " LD " $@ 1074 1075lcov-html: 1076 lcov -c -d .. > lcov.info 1077 genhtml lcov.info --output-directory lcov-html 1078 1079clean: 1080 $(MAKE) -C ../src clean 1081 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw 1082 rm -f *.d *.gcno *.gcda *.gcov 1083 rm -f lcov.info 1084 rm -rf lcov-html 1085 1086-include $(OBJS:%.o=%.d) 1087