6 CFLAGS = -MMD -O2 -Wall -g
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.
24 CFLAGS += $(EXTRA_CFLAGS)
25 CFLAGS += -I$(abspath ../src)
26 CFLAGS += -I$(abspath ../src/utils)
28 export BINDIR ?= /usr/local/bin/
32 ifndef CONFIG_NO_GITVER
33 # Add VERSION_STR postfix for builds from a git repository
34 ifeq ($(wildcard ../.git),../.git)
35 GITVER := $(shell git describe --dirty=+)
37 CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\"
42 ifdef CONFIG_TESTING_OPTIONS
43 CFLAGS += -DCONFIG_TESTING_OPTIONS
48 ifdef CONFIG_NATIVE_WINDOWS
55 ifeq ($(CONFIG_OS), internal)
56 CFLAGS += -DOS_NO_C_LIB_DEFINES
59 ifdef CONFIG_NATIVE_WINDOWS
60 CFLAGS += -DCONFIG_NATIVE_WINDOWS
67 OBJS += ../src/ap/hostapd.o
68 OBJS += ../src/ap/wpa_auth_glue.o
69 OBJS += ../src/ap/drv_callbacks.o
70 OBJS += ../src/ap/ap_drv_ops.o
71 OBJS += ../src/ap/utils.o
72 OBJS += ../src/ap/authsrv.o
73 OBJS += ../src/ap/ieee802_1x.o
74 OBJS += ../src/ap/ap_config.o
75 OBJS += ../src/ap/eap_user_db.o
76 OBJS += ../src/ap/ieee802_11_auth.o
77 OBJS += ../src/ap/sta_info.o
78 OBJS += ../src/ap/wpa_auth.o
79 OBJS += ../src/ap/tkip_countermeasures.o
80 OBJS += ../src/ap/ap_mlme.o
81 OBJS += ../src/ap/wpa_auth_ie.o
82 OBJS += ../src/ap/preauth_auth.o
83 OBJS += ../src/ap/pmksa_cache_auth.o
84 OBJS += ../src/ap/ieee802_11_shared.o
85 OBJS += ../src/ap/beacon.o
86 OBJS += ../src/ap/bss_load.o
87 OBJS += ../src/ap/neighbor_db.o
88 OBJS += ../src/ap/rrm.o
90 OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o
97 OBJS += ../src/drivers/drivers.o
100 ifdef CONFIG_MODULE_TESTS
101 CFLAGS += -DCONFIG_MODULE_TESTS
102 OBJS += hapd_module_tests.o
105 ifdef CONFIG_WPA_TRACE
106 CFLAGS += -DWPA_TRACE
107 OBJS += ../src/utils/trace.o
108 HOBJS += ../src/utils/trace.o
110 CFLAGS += -funwind-tables
111 ifdef CONFIG_WPA_TRACE_BFD
112 CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD
113 LIBS += -lbfd -ldl -liberty -lz
114 LIBS_c += -lbfd -ldl -liberty -lz
115 LIBS_h += -lbfd -ldl -liberty -lz
122 OBJS += ../src/utils/$(CONFIG_ELOOP).o
123 OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
125 ifeq ($(CONFIG_ELOOP), eloop)
126 # Using glibc < 2.17 requires -lrt for clock_gettime()
133 ifdef CONFIG_ELOOP_POLL
134 CFLAGS += -DCONFIG_ELOOP_POLL
137 ifdef CONFIG_ELOOP_EPOLL
138 CFLAGS += -DCONFIG_ELOOP_EPOLL
141 ifdef CONFIG_ELOOP_KQUEUE
142 CFLAGS += -DCONFIG_ELOOP_KQUEUE
145 OBJS += ../src/utils/common.o
146 OBJS_c += ../src/utils/common.o
147 OBJS += ../src/utils/wpa_debug.o
148 OBJS_c += ../src/utils/wpa_debug.o
149 OBJS += ../src/utils/wpabuf.o
150 OBJS += ../src/utils/os_$(CONFIG_OS).o
151 OBJS += ../src/utils/ip_addr.o
153 OBJS += ../src/common/ieee802_11_common.o
154 OBJS += ../src/common/wpa_common.o
155 OBJS += ../src/common/hw_features_common.o
157 OBJS += ../src/eapol_auth/eapol_auth_sm.o
160 ifdef CONFIG_CODE_COVERAGE
161 CFLAGS += -O0 -fprofile-arcs -ftest-coverage
168 ifndef CONFIG_NO_DUMP_STATE
169 # define HOSTAPD_DUMP_STATE to include support for dumping internal state
170 # through control interface commands (undefine it, if you want to save in
172 CFLAGS += -DHOSTAPD_DUMP_STATE
173 OBJS += ../src/eapol_auth/eapol_auth_dump.o
176 ifdef CONFIG_NO_RADIUS
177 CFLAGS += -DCONFIG_NO_RADIUS
178 CONFIG_NO_ACCOUNTING=y
180 OBJS += ../src/radius/radius.o
181 OBJS += ../src/radius/radius_client.o
182 OBJS += ../src/radius/radius_das.o
185 ifdef CONFIG_NO_ACCOUNTING
186 CFLAGS += -DCONFIG_NO_ACCOUNTING
188 OBJS += ../src/ap/accounting.o
192 CFLAGS += -DCONFIG_NO_VLAN
194 OBJS += ../src/ap/vlan_init.o
195 OBJS += ../src/ap/vlan_ifconfig.o
196 OBJS += ../src/ap/vlan.o
197 ifdef CONFIG_FULL_DYNAMIC_VLAN
198 # Define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
199 # and VLAN interfaces for the VLAN feature.
200 CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
201 OBJS += ../src/ap/vlan_full.o
202 ifdef CONFIG_VLAN_NETLINK
203 OBJS += ../src/ap/vlan_util.o
205 OBJS += ../src/ap/vlan_ioctl.o
210 ifdef CONFIG_NO_CTRL_IFACE
211 CFLAGS += -DCONFIG_NO_CTRL_IFACE
213 ifeq ($(CONFIG_CTRL_IFACE), udp)
214 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
216 ifeq ($(CONFIG_CTRL_IFACE), udp6)
217 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
218 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
220 ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
221 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
222 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
224 ifeq ($(CONFIG_CTRL_IFACE), udp6-remote)
225 CFLAGS += -DCONFIG_CTRL_IFACE_UDP
226 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
227 CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
229 CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
234 OBJS += ../src/common/ctrl_iface_common.o
236 OBJS += ../src/ap/ctrl_iface_ap.o
239 ifndef CONFIG_NO_CTRL_IFACE
240 CFLAGS += -DCONFIG_CTRL_IFACE
244 CFLAGS += -DCONFIG_IAPP
245 OBJS += ../src/ap/iapp.o
248 ifdef CONFIG_RSN_PREAUTH
249 CFLAGS += -DCONFIG_RSN_PREAUTH
254 CFLAGS += -DCONFIG_PEERKEY
255 OBJS += ../src/ap/peerkey_auth.o
263 ifdef CONFIG_PROXYARP
268 CFLAGS += -DCONFIG_SUITEB
273 ifdef CONFIG_SUITEB192
274 CFLAGS += -DCONFIG_SUITEB192
278 ifdef CONFIG_IEEE80211W
279 CFLAGS += -DCONFIG_IEEE80211W
284 ifdef CONFIG_IEEE80211R
285 CFLAGS += -DCONFIG_IEEE80211R
286 OBJS += ../src/ap/wpa_auth_ft.o
293 CFLAGS += -DCONFIG_SAE
294 OBJS += ../src/common/sae.o
301 CFLAGS += -DCONFIG_WNM
302 OBJS += ../src/ap/wnm_ap.o
305 ifdef CONFIG_IEEE80211N
306 CFLAGS += -DCONFIG_IEEE80211N
309 ifdef CONFIG_IEEE80211AC
310 CFLAGS += -DCONFIG_IEEE80211AC
314 CFLAGS += -DCONFIG_MBO
315 OBJS += ../src/ap/mbo_ap.o
318 include ../src/drivers/drivers.mak
319 OBJS += $(DRV_AP_OBJS)
320 CFLAGS += $(DRV_AP_CFLAGS)
321 LDFLAGS += $(DRV_AP_LDFLAGS)
322 LIBS += $(DRV_AP_LIBS)
324 ifdef CONFIG_L2_PACKET
325 ifdef CONFIG_DNET_PCAP
326 ifdef CONFIG_L2_FREEBSD
328 OBJS += ../src/l2_packet/l2_packet_freebsd.o
330 LIBS += -ldnet -lpcap
331 OBJS += ../src/l2_packet/l2_packet_pcap.o
334 OBJS += ../src/l2_packet/l2_packet_linux.o
337 OBJS += ../src/l2_packet/l2_packet_none.o
342 CFLAGS += -DCONFIG_ERP
344 NEED_HMAC_SHA256_KDF=y
348 CFLAGS += -DEAP_SERVER_MD5
349 OBJS += ../src/eap_server/eap_server_md5.o
354 CFLAGS += -DEAP_SERVER_TLS
355 OBJS += ../src/eap_server/eap_server_tls.o
359 ifdef CONFIG_EAP_UNAUTH_TLS
360 CFLAGS += -DEAP_SERVER_UNAUTH_TLS
361 ifndef CONFIG_EAP_TLS
362 OBJS += ../src/eap_server/eap_server_tls.o
367 ifdef CONFIG_EAP_PEAP
368 CFLAGS += -DEAP_SERVER_PEAP
369 OBJS += ../src/eap_server/eap_server_peap.o
370 OBJS += ../src/eap_common/eap_peap_common.o
372 CONFIG_EAP_MSCHAPV2=y
375 ifdef CONFIG_EAP_TTLS
376 CFLAGS += -DEAP_SERVER_TTLS
377 OBJS += ../src/eap_server/eap_server_ttls.o
382 ifdef CONFIG_EAP_MSCHAPV2
383 CFLAGS += -DEAP_SERVER_MSCHAPV2
384 OBJS += ../src/eap_server/eap_server_mschapv2.o
389 CFLAGS += -DEAP_SERVER_GTC
390 OBJS += ../src/eap_server/eap_server_gtc.o
394 CFLAGS += -DEAP_SERVER_SIM
395 OBJS += ../src/eap_server/eap_server_sim.o
396 CONFIG_EAP_SIM_COMMON=y
401 CFLAGS += -DEAP_SERVER_AKA
402 OBJS += ../src/eap_server/eap_server_aka.o
403 CONFIG_EAP_SIM_COMMON=y
408 ifdef CONFIG_EAP_AKA_PRIME
409 CFLAGS += -DEAP_SERVER_AKA_PRIME
412 ifdef CONFIG_EAP_SIM_COMMON
413 OBJS += ../src/eap_common/eap_sim_common.o
414 # Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
415 # replaced with another file implementating the interface specified in
417 OBJS += ../src/eap_server/eap_sim_db.o
422 CFLAGS += -DEAP_SERVER_PAX
423 OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
427 CFLAGS += -DEAP_SERVER_PSK
428 OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
434 ifdef CONFIG_EAP_SAKE
435 CFLAGS += -DEAP_SERVER_SAKE
436 OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
439 ifdef CONFIG_EAP_GPSK
440 CFLAGS += -DEAP_SERVER_GPSK
441 OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
442 ifdef CONFIG_EAP_GPSK_SHA256
443 CFLAGS += -DEAP_GPSK_SHA256
450 CFLAGS += -DEAP_SERVER_PWD
451 OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
456 CFLAGS += -DEAP_SERVER_EKE
457 OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o
462 ifdef CONFIG_EAP_VENDOR_TEST
463 CFLAGS += -DEAP_SERVER_VENDOR_TEST
464 OBJS += ../src/eap_server/eap_server_vendor_test.o
467 ifdef CONFIG_EAP_FAST
468 CFLAGS += -DEAP_SERVER_FAST
469 OBJS += ../src/eap_server/eap_server_fast.o
470 OBJS += ../src/eap_common/eap_fast_common.o
477 CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
478 OBJS += ../src/utils/uuid.o
479 OBJS += ../src/ap/wps_hostapd.o
480 OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
481 OBJS += ../src/wps/wps.o
482 OBJS += ../src/wps/wps_common.o
483 OBJS += ../src/wps/wps_attr_parse.o
484 OBJS += ../src/wps/wps_attr_build.o
485 OBJS += ../src/wps/wps_attr_process.o
486 OBJS += ../src/wps/wps_dev_attr.o
487 OBJS += ../src/wps/wps_enrollee.o
488 OBJS += ../src/wps/wps_registrar.o
497 CFLAGS += -DCONFIG_WPS_NFC
498 OBJS += ../src/wps/ndef.o
503 CFLAGS += -DCONFIG_WPS_OOB
506 ifdef CONFIG_WPS_UPNP
507 CFLAGS += -DCONFIG_WPS_UPNP
508 OBJS += ../src/wps/wps_upnp.o
509 OBJS += ../src/wps/wps_upnp_ssdp.o
510 OBJS += ../src/wps/wps_upnp_web.o
511 OBJS += ../src/wps/wps_upnp_event.o
512 OBJS += ../src/wps/wps_upnp_ap.o
513 OBJS += ../src/wps/upnp_xml.o
514 OBJS += ../src/wps/httpread.o
515 OBJS += ../src/wps/http_client.o
516 OBJS += ../src/wps/http_server.o
519 ifdef CONFIG_WPS_STRICT
520 CFLAGS += -DCONFIG_WPS_STRICT
521 OBJS += ../src/wps/wps_validate.o
524 ifdef CONFIG_WPS_TESTING
525 CFLAGS += -DCONFIG_WPS_TESTING
530 ifdef CONFIG_EAP_IKEV2
531 CFLAGS += -DEAP_SERVER_IKEV2
532 OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
533 OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
541 CFLAGS += -DEAP_SERVER_TNC
542 OBJS += ../src/eap_server/eap_server_tnc.o
543 OBJS += ../src/eap_server/tncs.o
545 ifndef CONFIG_DRIVER_BSD
550 # Basic EAP functionality is needed for EAPOL
551 OBJS += eap_register.o
552 OBJS += ../src/eap_server/eap_server.o
553 OBJS += ../src/eap_common/eap_common.o
554 OBJS += ../src/eap_server/eap_server_methods.o
555 OBJS += ../src/eap_server/eap_server_identity.o
556 CFLAGS += -DEAP_SERVER_IDENTITY
559 CFLAGS += -DEAP_SERVER
563 CFLAGS += -DPKCS12_FUNCS
567 OBJS += ../src/crypto/ms_funcs.o
573 OBJS += ../src/eap_common/chap.o
578 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
579 CFLAGS += -DEAP_TLS_FUNCS
580 OBJS += ../src/eap_server/eap_server_tls_common.o
589 CFLAGS += -DCONFIG_TLSV11
593 CFLAGS += -DCONFIG_TLSV12
597 ifeq ($(CONFIG_TLS), openssl)
599 OBJS += ../src/crypto/tls_openssl.o
600 OBJS += ../src/crypto/tls_openssl_ocsp.o
603 OBJS += ../src/crypto/crypto_openssl.o
604 HOBJS += ../src/crypto/crypto_openssl.o
605 ifdef NEED_FIPS186_2_PRF
606 OBJS += ../src/crypto/fips_prf_openssl.o
609 NEED_TLS_PRF_SHA256=y
612 ifdef CONFIG_TLS_ADD_DL
618 ifeq ($(CONFIG_TLS), gnutls)
620 OBJS += ../src/crypto/tls_gnutls.o
621 LIBS += -lgnutls -lgpg-error
623 OBJS += ../src/crypto/crypto_gnutls.o
624 HOBJS += ../src/crypto/crypto_gnutls.o
625 ifdef NEED_FIPS186_2_PRF
626 OBJS += ../src/crypto/fips_prf_internal.o
627 SHA1OBJS += ../src/crypto/sha1-internal.o
631 CONFIG_INTERNAL_SHA256=y
632 CONFIG_INTERNAL_RC4=y
633 CONFIG_INTERNAL_DH_GROUP5=y
636 ifeq ($(CONFIG_TLS), internal)
638 CONFIG_CRYPTO=internal
641 OBJS += ../src/crypto/crypto_internal-rsa.o
642 OBJS += ../src/crypto/tls_internal.o
643 OBJS += ../src/tls/tlsv1_common.o
644 OBJS += ../src/tls/tlsv1_record.o
645 OBJS += ../src/tls/tlsv1_cred.o
646 OBJS += ../src/tls/tlsv1_server.o
647 OBJS += ../src/tls/tlsv1_server_write.o
648 OBJS += ../src/tls/tlsv1_server_read.o
649 OBJS += ../src/tls/asn1.o
650 OBJS += ../src/tls/rsa.o
651 OBJS += ../src/tls/x509v3.o
652 OBJS += ../src/tls/pkcs1.o
653 OBJS += ../src/tls/pkcs5.o
654 OBJS += ../src/tls/pkcs8.o
659 NEED_TLS_PRF_SHA256=y
663 CFLAGS += -DCONFIG_TLS_INTERNAL
664 CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
668 OBJS += ../src/crypto/crypto_internal-cipher.o
671 OBJS += ../src/crypto/crypto_internal-modexp.o
672 OBJS += ../src/tls/bignum.o
674 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
675 OBJS += ../src/crypto/crypto_libtomcrypt.o
676 LIBS += -ltomcrypt -ltfm
677 LIBS_h += -ltomcrypt -ltfm
678 CONFIG_INTERNAL_SHA256=y
679 CONFIG_INTERNAL_RC4=y
680 CONFIG_INTERNAL_DH_GROUP5=y
682 ifeq ($(CONFIG_CRYPTO), internal)
683 OBJS += ../src/crypto/crypto_internal.o
685 CFLAGS += -DCONFIG_CRYPTO_INTERNAL
686 ifdef CONFIG_INTERNAL_LIBTOMMATH
687 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
688 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
695 CONFIG_INTERNAL_AES=y
696 CONFIG_INTERNAL_DES=y
697 CONFIG_INTERNAL_SHA1=y
698 CONFIG_INTERNAL_MD4=y
699 CONFIG_INTERNAL_MD5=y
700 CONFIG_INTERNAL_SHA256=y
701 CONFIG_INTERNAL_SHA384=y
702 CONFIG_INTERNAL_SHA512=y
703 CONFIG_INTERNAL_RC4=y
704 CONFIG_INTERNAL_DH_GROUP5=y
706 ifeq ($(CONFIG_CRYPTO), cryptoapi)
707 OBJS += ../src/crypto/crypto_cryptoapi.o
708 OBJS_p += ../src/crypto/crypto_cryptoapi.o
709 CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
710 CONFIG_INTERNAL_SHA256=y
711 CONFIG_INTERNAL_RC4=y
715 ifeq ($(CONFIG_TLS), none)
717 OBJS += ../src/crypto/tls_none.o
718 CFLAGS += -DEAP_TLS_NONE
719 CONFIG_INTERNAL_AES=y
720 CONFIG_INTERNAL_SHA1=y
721 CONFIG_INTERNAL_MD5=y
723 OBJS += ../src/crypto/crypto_none.o
724 OBJS_p += ../src/crypto/crypto_none.o
725 CONFIG_INTERNAL_SHA256=y
726 CONFIG_INTERNAL_RC4=y
730 OBJS += ../src/crypto/tls_none.o
731 ifeq ($(CONFIG_TLS), internal)
732 CONFIG_INTERNAL_AES=y
733 CONFIG_INTERNAL_SHA1=y
734 CONFIG_INTERNAL_MD5=y
735 CONFIG_INTERNAL_RC4=y
739 AESOBJS = # none so far
740 ifdef CONFIG_INTERNAL_AES
741 AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
744 ifneq ($(CONFIG_TLS), openssl)
745 AESOBJS += ../src/crypto/aes-wrap.o
748 AESOBJS += ../src/crypto/aes-eax.o
752 AESOBJS += ../src/crypto/aes-ctr.o
754 ifdef NEED_AES_ENCBLOCK
755 AESOBJS += ../src/crypto/aes-encblock.o
758 AESOBJS += ../src/crypto/aes-omac1.o
760 ifdef NEED_AES_UNWRAP
761 ifneq ($(CONFIG_TLS), openssl)
763 AESOBJS += ../src/crypto/aes-unwrap.o
768 ifneq ($(CONFIG_TLS), openssl)
769 AESOBJS += ../src/crypto/aes-cbc.o
773 ifdef CONFIG_INTERNAL_AES
774 AESOBJS += ../src/crypto/aes-internal-dec.o
782 ifneq ($(CONFIG_TLS), openssl)
783 SHA1OBJS += ../src/crypto/sha1.o
785 SHA1OBJS += ../src/crypto/sha1-prf.o
786 ifdef CONFIG_INTERNAL_SHA1
787 SHA1OBJS += ../src/crypto/sha1-internal.o
788 ifdef NEED_FIPS186_2_PRF
789 SHA1OBJS += ../src/crypto/fips_prf_internal.o
792 ifneq ($(CONFIG_TLS), openssl)
793 SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
796 SHA1OBJS += ../src/crypto/sha1-tprf.o
799 SHA1OBJS += ../src/crypto/sha1-tlsprf.o
807 ifneq ($(CONFIG_TLS), openssl)
808 OBJS += ../src/crypto/md5.o
812 ifdef CONFIG_INTERNAL_MD5
813 OBJS += ../src/crypto/md5-internal.o
814 HOBJS += ../src/crypto/md5-internal.o
819 ifdef CONFIG_INTERNAL_MD4
820 OBJS += ../src/crypto/md4-internal.o
825 ifdef CONFIG_INTERNAL_DES
826 OBJS += ../src/crypto/des-internal.o
831 CFLAGS += -DCONFIG_NO_RC4
835 ifdef CONFIG_INTERNAL_RC4
837 OBJS += ../src/crypto/rc4.o
843 CFLAGS += -DCONFIG_SHA256
844 ifneq ($(CONFIG_TLS), openssl)
845 OBJS += ../src/crypto/sha256.o
847 OBJS += ../src/crypto/sha256-prf.o
848 ifdef CONFIG_INTERNAL_SHA256
849 OBJS += ../src/crypto/sha256-internal.o
851 ifdef NEED_TLS_PRF_SHA256
852 OBJS += ../src/crypto/sha256-tlsprf.o
854 ifdef NEED_HMAC_SHA256_KDF
855 OBJS += ../src/crypto/sha256-kdf.o
859 CFLAGS += -DCONFIG_SHA384
860 OBJS += ../src/crypto/sha384-prf.o
863 ifdef CONFIG_INTERNAL_SHA384
864 CFLAGS += -DCONFIG_INTERNAL_SHA384
865 OBJS += ../src/crypto/sha384-internal.o
868 ifdef CONFIG_INTERNAL_SHA512
869 CFLAGS += -DCONFIG_INTERNAL_SHA512
870 OBJS += ../src/crypto/sha512-internal.o
874 OBJS += ../src/crypto/dh_groups.o
876 ifdef NEED_DH_GROUPS_ALL
877 CFLAGS += -DALL_DH_GROUPS
879 ifdef CONFIG_INTERNAL_DH_GROUP5
881 OBJS += ../src/crypto/dh_group5.o
886 CFLAGS += -DCONFIG_ECC
889 ifdef CONFIG_NO_RANDOM_POOL
890 CFLAGS += -DCONFIG_NO_RANDOM_POOL
892 OBJS += ../src/crypto/random.o
893 HOBJS += ../src/crypto/random.o
894 HOBJS += ../src/utils/eloop.o
896 ifneq ($(CONFIG_TLS), openssl)
897 HOBJS += ../src/crypto/md5.o
901 ifdef CONFIG_RADIUS_SERVER
902 CFLAGS += -DRADIUS_SERVER
903 OBJS += ../src/radius/radius_server.o
907 CFLAGS += -DCONFIG_IPV6
910 ifdef CONFIG_DRIVER_RADIUS_ACL
911 CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
915 OBJS += ../src/utils/base64.o
919 OBJS += ../src/ap/wmm.o
920 OBJS += ../src/ap/ap_list.o
921 OBJS += ../src/ap/ieee802_11.o
922 OBJS += ../src/ap/hw_features.o
923 OBJS += ../src/ap/dfs.o
924 CFLAGS += -DNEED_AP_MLME
926 ifdef CONFIG_IEEE80211N
927 OBJS += ../src/ap/ieee802_11_ht.o
930 ifdef CONFIG_IEEE80211AC
931 OBJS += ../src/ap/ieee802_11_vht.o
934 ifdef CONFIG_P2P_MANAGER
935 CFLAGS += -DCONFIG_P2P_MANAGER
936 OBJS += ../src/ap/p2p_hostapd.o
940 CFLAGS += -DCONFIG_HS20
941 OBJS += ../src/ap/hs20.o
942 CONFIG_INTERWORKING=y
945 ifdef CONFIG_INTERWORKING
946 CFLAGS += -DCONFIG_INTERWORKING
947 OBJS += ../src/common/gas.o
948 OBJS += ../src/ap/gas_serv.o
951 ifdef CONFIG_PROXYARP
952 CFLAGS += -DCONFIG_PROXYARP
953 OBJS += ../src/ap/x_snoop.o
954 OBJS += ../src/ap/dhcp_snoop.o
956 OBJS += ../src/ap/ndisc_snoop.o
960 OBJS += ../src/drivers/driver_common.o
962 ifdef CONFIG_WPA_CLI_EDIT
963 OBJS_c += ../src/utils/edit.o
965 OBJS_c += ../src/utils/edit_simple.o
969 CFLAGS += -DCONFIG_ACS
970 OBJS += ../src/ap/acs.o
974 ifdef CONFIG_NO_STDOUT_DEBUG
975 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
978 ifdef CONFIG_DEBUG_LINUX_TRACING
979 CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
982 ifdef CONFIG_DEBUG_FILE
983 CFLAGS += -DCONFIG_DEBUG_FILE
987 CFLAGS += -DCONFIG_SQLITE
993 CFLAGS += -DCONFIG_FST
994 OBJS += ../src/fst/fst.o
995 OBJS += ../src/fst/fst_group.o
996 OBJS += ../src/fst/fst_iface.o
997 OBJS += ../src/fst/fst_session.o
998 OBJS += ../src/fst/fst_ctrl_aux.o
999 ifdef CONFIG_FST_TEST
1000 CFLAGS += -DCONFIG_FST_TEST
1002 ifndef CONFIG_NO_CTRL_IFACE
1003 OBJS += ../src/fst/fst_ctrl_iface.o
1007 ALL=hostapd hostapd_cli
1009 all: verify_config $(ALL)
1022 ifdef CONFIG_CODE_COVERAGE
1025 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<)
1028 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1033 @if [ ! -r .config ]; then \
1034 echo 'Building hostapd requires a configuration file'; \
1035 echo '(.config). See README for more instructions. You can'; \
1036 echo 'run "cp defconfig .config" to create an example'; \
1037 echo 'configuration.'; \
1041 $(DESTDIR)$(BINDIR)/%: %
1042 install -D $(<) $(@)
1044 install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL))
1046 ../src/drivers/build.hostapd:
1047 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \
1048 $(MAKE) -C ../src/drivers clean; \
1050 @touch ../src/drivers/build.hostapd
1052 BCHECK=../src/drivers/build.hostapd
1054 hostapd: $(BCHECK) $(OBJS)
1055 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
1058 ifdef CONFIG_WPA_TRACE
1059 OBJS_c += ../src/utils/trace.o
1061 hostapd_cli: $(OBJS_c)
1062 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
1065 NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
1066 NOBJS += ../src/utils/common.o
1068 ifdef CONFIG_INTERNAL_RC4
1069 ifndef CONFIG_NO_RC4
1070 NOBJS += ../src/crypto/rc4.o
1074 ifdef CONFIG_INTERNAL_MD5
1075 NOBJS += ../src/crypto/md5-internal.o
1077 NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o
1078 NOBJS += ../src/utils/wpa_debug.o
1079 NOBJS += ../src/utils/wpabuf.o
1080 ifdef CONFIG_WPA_TRACE
1081 NOBJS += ../src/utils/trace.o
1088 HOBJS += 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
1089 HOBJS += ../src/crypto/aes-encblock.o
1090 ifdef CONFIG_INTERNAL_AES
1091 HOBJS += ../src/crypto/aes-internal.o
1092 HOBJS += ../src/crypto/aes-internal-enc.o
1095 nt_password_hash: $(NOBJS)
1096 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
1099 hlr_auc_gw: $(HOBJS)
1100 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
1104 lcov -c -d .. > lcov.info
1105 genhtml lcov.info --output-directory lcov-html
1108 $(MAKE) -C ../src clean
1109 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
1110 rm -f *.d *.gcno *.gcda *.gcov
1114 -include $(OBJS:%.o=%.d)