6 CFLAGS = -MMD -O2 -Wall -g
9 CFLAGS += -I$(abspath ../src)
10 CFLAGS += -I$(abspath ../src/utils)
12 export BINDIR ?= /usr/local/bin/
14 # Uncomment following line and set the path to your kernel tree include
15 # directory if your C library does not include all header files.
16 # CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include
20 ifdef CONFIG_TESTING_OPTIONS
21 CFLAGS += -DCONFIG_TESTING_OPTIONS
26 ifdef CONFIG_NATIVE_WINDOWS
33 ifeq ($(CONFIG_OS), internal)
34 CFLAGS += -DOS_NO_C_LIB_DEFINES
37 ifdef CONFIG_NATIVE_WINDOWS
38 CFLAGS += -DCONFIG_NATIVE_WINDOWS
45 OBJS += ../src/ap/hostapd.o
46 OBJS += ../src/ap/wpa_auth_glue.o
47 OBJS += ../src/ap/drv_callbacks.o
48 OBJS += ../src/ap/ap_drv_ops.o
49 OBJS += ../src/ap/utils.o
50 OBJS += ../src/ap/authsrv.o
51 OBJS += ../src/ap/ieee802_1x.o
52 OBJS += ../src/ap/ap_config.o
53 OBJS += ../src/ap/eap_user_db.o
54 OBJS += ../src/ap/ieee802_11_auth.o
55 OBJS += ../src/ap/sta_info.o
56 OBJS += ../src/ap/wpa_auth.o
57 OBJS += ../src/ap/tkip_countermeasures.o
58 OBJS += ../src/ap/ap_mlme.o
59 OBJS += ../src/ap/wpa_auth_ie.o
60 OBJS += ../src/ap/preauth_auth.o
61 OBJS += ../src/ap/pmksa_cache_auth.o
62 OBJS += ../src/ap/ieee802_11_shared.o
63 OBJS += ../src/ap/beacon.o
64 OBJS += ../src/ap/bss_load.o
66 OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o
73 OBJS += ../src/drivers/drivers.o
76 ifdef CONFIG_MODULE_TESTS
77 CFLAGS += -DCONFIG_MODULE_TESTS
78 OBJS += hapd_module_tests.o
81 ifdef CONFIG_WPA_TRACE
83 OBJS += ../src/utils/trace.o
84 HOBJS += ../src/utils/trace.o
86 CFLAGS += -funwind-tables
87 ifdef CONFIG_WPA_TRACE_BFD
88 CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD
89 LIBS += -lbfd -ldl -liberty -lz
90 LIBS_c += -lbfd -ldl -liberty -lz
91 LIBS_h += -lbfd -ldl -liberty -lz
98 OBJS += ../src/utils/$(CONFIG_ELOOP).o
99 OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
101 ifeq ($(CONFIG_ELOOP), eloop)
102 # Using glibc < 2.17 requires -lrt for clock_gettime()
109 OBJS += ../src/utils/common.o
110 OBJS += ../src/utils/wpa_debug.o
111 OBJS_c += ../src/utils/wpa_debug.o
112 OBJS += ../src/utils/wpabuf.o
113 OBJS += ../src/utils/os_$(CONFIG_OS).o
114 OBJS += ../src/utils/ip_addr.o
116 OBJS += ../src/common/ieee802_11_common.o
117 OBJS += ../src/common/wpa_common.o
119 OBJS += ../src/eapol_auth/eapol_auth_sm.o
122 ifdef CONFIG_CODE_COVERAGE
123 CFLAGS += -O0 -fprofile-arcs -ftest-coverage
130 ifndef CONFIG_NO_DUMP_STATE
131 # define HOSTAPD_DUMP_STATE to include support for dumping internal state
132 # through control interface commands (undefine it, if you want to save in
134 CFLAGS += -DHOSTAPD_DUMP_STATE
135 OBJS += ../src/eapol_auth/eapol_auth_dump.o
138 ifdef CONFIG_NO_RADIUS
139 CFLAGS += -DCONFIG_NO_RADIUS
140 CONFIG_NO_ACCOUNTING=y
142 OBJS += ../src/radius/radius.o
143 OBJS += ../src/radius/radius_client.o
144 OBJS += ../src/radius/radius_das.o
147 ifdef CONFIG_NO_ACCOUNTING
148 CFLAGS += -DCONFIG_NO_ACCOUNTING
150 OBJS += ../src/ap/accounting.o
154 CFLAGS += -DCONFIG_NO_VLAN
156 OBJS += ../src/ap/vlan_init.o
157 ifdef CONFIG_VLAN_NETLINK
158 ifdef CONFIG_FULL_DYNAMIC_VLAN
159 OBJS += ../src/ap/vlan_util.o
161 CFLAGS += -DCONFIG_VLAN_NETLINK
165 ifdef CONFIG_NO_CTRL_IFACE
166 CFLAGS += -DCONFIG_NO_CTRL_IFACE
169 OBJS += ../src/ap/ctrl_iface_ap.o
172 OBJS += ../src/crypto/md5.o
174 CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX
177 CFLAGS += -DCONFIG_IAPP
178 OBJS += ../src/ap/iapp.o
181 ifdef CONFIG_RSN_PREAUTH
182 CFLAGS += -DCONFIG_RSN_PREAUTH
187 CFLAGS += -DCONFIG_PEERKEY
188 OBJS += ../src/ap/peerkey_auth.o
196 ifdef CONFIG_PROXYARP
201 CFLAGS += -DCONFIG_SUITEB
206 ifdef CONFIG_IEEE80211W
207 CFLAGS += -DCONFIG_IEEE80211W
212 ifdef CONFIG_IEEE80211R
213 CFLAGS += -DCONFIG_IEEE80211R
214 OBJS += ../src/ap/wpa_auth_ft.o
221 CFLAGS += -DCONFIG_SAE
222 OBJS += ../src/common/sae.o
228 CFLAGS += -DCONFIG_WNM
229 OBJS += ../src/ap/wnm_ap.o
232 ifdef CONFIG_IEEE80211N
233 CFLAGS += -DCONFIG_IEEE80211N
236 ifdef CONFIG_IEEE80211AC
237 CFLAGS += -DCONFIG_IEEE80211AC
240 include ../src/drivers/drivers.mak
241 OBJS += $(DRV_AP_OBJS)
242 CFLAGS += $(DRV_AP_CFLAGS)
243 LDFLAGS += $(DRV_AP_LDFLAGS)
244 LIBS += $(DRV_AP_LIBS)
246 ifdef CONFIG_L2_PACKET
247 ifdef CONFIG_DNET_PCAP
248 ifdef CONFIG_L2_FREEBSD
250 OBJS += ../src/l2_packet/l2_packet_freebsd.o
252 LIBS += -ldnet -lpcap
253 OBJS += ../src/l2_packet/l2_packet_pcap.o
256 OBJS += ../src/l2_packet/l2_packet_linux.o
259 OBJS += ../src/l2_packet/l2_packet_none.o
264 CFLAGS += -DCONFIG_ERP
266 NEED_HMAC_SHA256_KDF=y
270 CFLAGS += -DEAP_SERVER_MD5
271 OBJS += ../src/eap_server/eap_server_md5.o
276 CFLAGS += -DEAP_SERVER_TLS
277 OBJS += ../src/eap_server/eap_server_tls.o
281 ifdef CONFIG_EAP_UNAUTH_TLS
282 CFLAGS += -DEAP_SERVER_UNAUTH_TLS
283 ifndef CONFIG_EAP_TLS
284 OBJS += ../src/eap_server/eap_server_tls.o
289 ifdef CONFIG_EAP_PEAP
290 CFLAGS += -DEAP_SERVER_PEAP
291 OBJS += ../src/eap_server/eap_server_peap.o
292 OBJS += ../src/eap_common/eap_peap_common.o
294 CONFIG_EAP_MSCHAPV2=y
297 ifdef CONFIG_EAP_TTLS
298 CFLAGS += -DEAP_SERVER_TTLS
299 OBJS += ../src/eap_server/eap_server_ttls.o
304 ifdef CONFIG_EAP_MSCHAPV2
305 CFLAGS += -DEAP_SERVER_MSCHAPV2
306 OBJS += ../src/eap_server/eap_server_mschapv2.o
311 CFLAGS += -DEAP_SERVER_GTC
312 OBJS += ../src/eap_server/eap_server_gtc.o
316 CFLAGS += -DEAP_SERVER_SIM
317 OBJS += ../src/eap_server/eap_server_sim.o
318 CONFIG_EAP_SIM_COMMON=y
323 CFLAGS += -DEAP_SERVER_AKA
324 OBJS += ../src/eap_server/eap_server_aka.o
325 CONFIG_EAP_SIM_COMMON=y
330 ifdef CONFIG_EAP_AKA_PRIME
331 CFLAGS += -DEAP_SERVER_AKA_PRIME
334 ifdef CONFIG_EAP_SIM_COMMON
335 OBJS += ../src/eap_common/eap_sim_common.o
336 # Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
337 # replaced with another file implementating the interface specified in
339 OBJS += ../src/eap_server/eap_sim_db.o
344 CFLAGS += -DEAP_SERVER_PAX
345 OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
349 CFLAGS += -DEAP_SERVER_PSK
350 OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
356 ifdef CONFIG_EAP_SAKE
357 CFLAGS += -DEAP_SERVER_SAKE
358 OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
361 ifdef CONFIG_EAP_GPSK
362 CFLAGS += -DEAP_SERVER_GPSK
363 OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
364 ifdef CONFIG_EAP_GPSK_SHA256
365 CFLAGS += -DEAP_GPSK_SHA256
372 CFLAGS += -DEAP_SERVER_PWD
373 OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
378 CFLAGS += -DEAP_SERVER_EKE
379 OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o
384 ifdef CONFIG_EAP_VENDOR_TEST
385 CFLAGS += -DEAP_SERVER_VENDOR_TEST
386 OBJS += ../src/eap_server/eap_server_vendor_test.o
389 ifdef CONFIG_EAP_FAST
390 CFLAGS += -DEAP_SERVER_FAST
391 OBJS += ../src/eap_server/eap_server_fast.o
392 OBJS += ../src/eap_common/eap_fast_common.o
399 CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
400 OBJS += ../src/utils/uuid.o
401 OBJS += ../src/ap/wps_hostapd.o
402 OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
403 OBJS += ../src/wps/wps.o
404 OBJS += ../src/wps/wps_common.o
405 OBJS += ../src/wps/wps_attr_parse.o
406 OBJS += ../src/wps/wps_attr_build.o
407 OBJS += ../src/wps/wps_attr_process.o
408 OBJS += ../src/wps/wps_dev_attr.o
409 OBJS += ../src/wps/wps_enrollee.o
410 OBJS += ../src/wps/wps_registrar.o
419 CFLAGS += -DCONFIG_WPS_NFC
420 OBJS += ../src/wps/ndef.o
425 CFLAGS += -DCONFIG_WPS_OOB
428 ifdef CONFIG_WPS_UPNP
429 CFLAGS += -DCONFIG_WPS_UPNP
430 OBJS += ../src/wps/wps_upnp.o
431 OBJS += ../src/wps/wps_upnp_ssdp.o
432 OBJS += ../src/wps/wps_upnp_web.o
433 OBJS += ../src/wps/wps_upnp_event.o
434 OBJS += ../src/wps/wps_upnp_ap.o
435 OBJS += ../src/wps/upnp_xml.o
436 OBJS += ../src/wps/httpread.o
437 OBJS += ../src/wps/http_client.o
438 OBJS += ../src/wps/http_server.o
441 ifdef CONFIG_WPS_STRICT
442 CFLAGS += -DCONFIG_WPS_STRICT
443 OBJS += ../src/wps/wps_validate.o
446 ifdef CONFIG_WPS_TESTING
447 CFLAGS += -DCONFIG_WPS_TESTING
452 ifdef CONFIG_EAP_IKEV2
453 CFLAGS += -DEAP_SERVER_IKEV2
454 OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
455 OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
463 CFLAGS += -DEAP_SERVER_TNC
464 OBJS += ../src/eap_server/eap_server_tnc.o
465 OBJS += ../src/eap_server/tncs.o
467 ifndef CONFIG_DRIVER_BSD
472 # Basic EAP functionality is needed for EAPOL
473 OBJS += eap_register.o
474 OBJS += ../src/eap_server/eap_server.o
475 OBJS += ../src/eap_common/eap_common.o
476 OBJS += ../src/eap_server/eap_server_methods.o
477 OBJS += ../src/eap_server/eap_server_identity.o
478 CFLAGS += -DEAP_SERVER_IDENTITY
481 CFLAGS += -DEAP_SERVER
485 CFLAGS += -DPKCS12_FUNCS
489 OBJS += ../src/crypto/ms_funcs.o
495 OBJS += ../src/eap_common/chap.o
500 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
501 CFLAGS += -DEAP_TLS_FUNCS
502 OBJS += ../src/eap_server/eap_server_tls_common.o
511 CFLAGS += -DCONFIG_TLSV11
515 CFLAGS += -DCONFIG_TLSV12
519 ifeq ($(CONFIG_TLS), openssl)
521 OBJS += ../src/crypto/tls_openssl.o
524 OBJS += ../src/crypto/crypto_openssl.o
525 HOBJS += ../src/crypto/crypto_openssl.o
526 ifdef NEED_FIPS186_2_PRF
527 OBJS += ../src/crypto/fips_prf_openssl.o
533 ifeq ($(CONFIG_TLS), gnutls)
535 OBJS += ../src/crypto/tls_gnutls.o
536 LIBS += -lgnutls -lgpg-error
538 OBJS += ../src/crypto/crypto_gnutls.o
539 HOBJS += ../src/crypto/crypto_gnutls.o
540 ifdef NEED_FIPS186_2_PRF
541 OBJS += ../src/crypto/fips_prf_internal.o
542 SHA1OBJS += ../src/crypto/sha1-internal.o
546 CONFIG_INTERNAL_SHA256=y
547 CONFIG_INTERNAL_RC4=y
548 CONFIG_INTERNAL_DH_GROUP5=y
551 ifeq ($(CONFIG_TLS), schannel)
553 OBJS += ../src/crypto/tls_schannel.o
555 OBJS += ../src/crypto/crypto_cryptoapi.o
556 OBJS_p += ../src/crypto/crypto_cryptoapi.o
557 CONFIG_INTERNAL_SHA256=y
558 CONFIG_INTERNAL_RC4=y
559 CONFIG_INTERNAL_DH_GROUP5=y
562 ifeq ($(CONFIG_TLS), nss)
564 OBJS += ../src/crypto/tls_nss.o
567 OBJS += ../src/crypto/crypto_nss.o
568 ifdef NEED_FIPS186_2_PRF
569 OBJS += ../src/crypto/fips_prf_internal.o
570 SHA1OBJS += ../src/crypto/sha1-internal.o
574 CONFIG_INTERNAL_MD4=y
575 CONFIG_INTERNAL_DH_GROUP5=y
578 ifeq ($(CONFIG_TLS), internal)
580 CONFIG_CRYPTO=internal
583 OBJS += ../src/crypto/crypto_internal-rsa.o
584 OBJS += ../src/crypto/tls_internal.o
585 OBJS += ../src/tls/tlsv1_common.o
586 OBJS += ../src/tls/tlsv1_record.o
587 OBJS += ../src/tls/tlsv1_cred.o
588 OBJS += ../src/tls/tlsv1_server.o
589 OBJS += ../src/tls/tlsv1_server_write.o
590 OBJS += ../src/tls/tlsv1_server_read.o
591 OBJS += ../src/tls/asn1.o
592 OBJS += ../src/tls/rsa.o
593 OBJS += ../src/tls/x509v3.o
594 OBJS += ../src/tls/pkcs1.o
595 OBJS += ../src/tls/pkcs5.o
596 OBJS += ../src/tls/pkcs8.o
601 NEED_TLS_PRF_SHA256=y
605 CFLAGS += -DCONFIG_TLS_INTERNAL
606 CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
610 OBJS += ../src/crypto/crypto_internal-cipher.o
613 OBJS += ../src/crypto/crypto_internal-modexp.o
614 OBJS += ../src/tls/bignum.o
616 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
617 OBJS += ../src/crypto/crypto_libtomcrypt.o
618 LIBS += -ltomcrypt -ltfm
619 LIBS_h += -ltomcrypt -ltfm
620 CONFIG_INTERNAL_SHA256=y
621 CONFIG_INTERNAL_RC4=y
622 CONFIG_INTERNAL_DH_GROUP5=y
624 ifeq ($(CONFIG_CRYPTO), internal)
625 OBJS += ../src/crypto/crypto_internal.o
627 CFLAGS += -DCONFIG_CRYPTO_INTERNAL
628 ifdef CONFIG_INTERNAL_LIBTOMMATH
629 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
630 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
637 CONFIG_INTERNAL_AES=y
638 CONFIG_INTERNAL_DES=y
639 CONFIG_INTERNAL_SHA1=y
640 CONFIG_INTERNAL_MD4=y
641 CONFIG_INTERNAL_MD5=y
642 CONFIG_INTERNAL_SHA256=y
643 CONFIG_INTERNAL_RC4=y
644 CONFIG_INTERNAL_DH_GROUP5=y
646 ifeq ($(CONFIG_CRYPTO), cryptoapi)
647 OBJS += ../src/crypto/crypto_cryptoapi.o
648 OBJS_p += ../src/crypto/crypto_cryptoapi.o
649 CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
650 CONFIG_INTERNAL_SHA256=y
651 CONFIG_INTERNAL_RC4=y
655 ifeq ($(CONFIG_TLS), none)
657 OBJS += ../src/crypto/tls_none.o
658 CFLAGS += -DEAP_TLS_NONE
659 CONFIG_INTERNAL_AES=y
660 CONFIG_INTERNAL_SHA1=y
661 CONFIG_INTERNAL_MD5=y
663 OBJS += ../src/crypto/crypto_none.o
664 OBJS_p += ../src/crypto/crypto_none.o
665 CONFIG_INTERNAL_SHA256=y
666 CONFIG_INTERNAL_RC4=y
670 OBJS += ../src/crypto/tls_none.o
671 ifeq ($(CONFIG_TLS), internal)
672 CONFIG_INTERNAL_AES=y
673 CONFIG_INTERNAL_SHA1=y
674 CONFIG_INTERNAL_MD5=y
675 CONFIG_INTERNAL_RC4=y
679 AESOBJS = # none so far
680 ifdef CONFIG_INTERNAL_AES
681 AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
684 AESOBJS += ../src/crypto/aes-wrap.o
686 AESOBJS += ../src/crypto/aes-eax.o
690 AESOBJS += ../src/crypto/aes-ctr.o
692 ifdef NEED_AES_ENCBLOCK
693 AESOBJS += ../src/crypto/aes-encblock.o
696 AESOBJS += ../src/crypto/aes-omac1.o
698 ifdef NEED_AES_UNWRAP
700 AESOBJS += ../src/crypto/aes-unwrap.o
704 AESOBJS += ../src/crypto/aes-cbc.o
707 ifdef CONFIG_INTERNAL_AES
708 AESOBJS += ../src/crypto/aes-internal-dec.o
716 ifneq ($(CONFIG_TLS), openssl)
717 SHA1OBJS += ../src/crypto/sha1.o
719 SHA1OBJS += ../src/crypto/sha1-prf.o
720 ifdef CONFIG_INTERNAL_SHA1
721 SHA1OBJS += ../src/crypto/sha1-internal.o
722 ifdef NEED_FIPS186_2_PRF
723 SHA1OBJS += ../src/crypto/fips_prf_internal.o
726 ifneq ($(CONFIG_TLS), openssl)
727 SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
730 SHA1OBJS += ../src/crypto/sha1-tprf.o
733 SHA1OBJS += ../src/crypto/sha1-tlsprf.o
742 ifdef CONFIG_INTERNAL_MD5
743 OBJS += ../src/crypto/md5-internal.o
744 HOBJS += ../src/crypto/md5-internal.o
749 ifdef CONFIG_INTERNAL_MD4
750 OBJS += ../src/crypto/md4-internal.o
755 ifdef CONFIG_INTERNAL_DES
756 OBJS += ../src/crypto/des-internal.o
761 ifdef CONFIG_INTERNAL_RC4
762 OBJS += ../src/crypto/rc4.o
767 CFLAGS += -DCONFIG_SHA256
768 ifneq ($(CONFIG_TLS), openssl)
769 OBJS += ../src/crypto/sha256.o
771 OBJS += ../src/crypto/sha256-prf.o
772 ifdef CONFIG_INTERNAL_SHA256
773 OBJS += ../src/crypto/sha256-internal.o
775 ifdef NEED_TLS_PRF_SHA256
776 OBJS += ../src/crypto/sha256-tlsprf.o
778 ifdef NEED_HMAC_SHA256_KDF
779 OBJS += ../src/crypto/sha256-kdf.o
784 OBJS += ../src/crypto/dh_groups.o
786 ifdef NEED_DH_GROUPS_ALL
787 CFLAGS += -DALL_DH_GROUPS
789 ifdef CONFIG_INTERNAL_DH_GROUP5
791 OBJS += ../src/crypto/dh_group5.o
796 CFLAGS += -DCONFIG_ECC
799 ifdef CONFIG_NO_RANDOM_POOL
800 CFLAGS += -DCONFIG_NO_RANDOM_POOL
802 OBJS += ../src/crypto/random.o
803 HOBJS += ../src/crypto/random.o
804 HOBJS += ../src/utils/eloop.o
806 HOBJS += ../src/crypto/md5.o
809 ifdef CONFIG_RADIUS_SERVER
810 CFLAGS += -DRADIUS_SERVER
811 OBJS += ../src/radius/radius_server.o
815 CFLAGS += -DCONFIG_IPV6
818 ifdef CONFIG_DRIVER_RADIUS_ACL
819 CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
822 ifdef CONFIG_FULL_DYNAMIC_VLAN
823 # define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
824 # and vlan interfaces for the vlan feature.
825 CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
829 OBJS += ../src/utils/base64.o
833 OBJS += ../src/ap/wmm.o
834 OBJS += ../src/ap/ap_list.o
835 OBJS += ../src/ap/ieee802_11.o
836 OBJS += ../src/ap/hw_features.o
837 OBJS += ../src/ap/dfs.o
838 CFLAGS += -DNEED_AP_MLME
840 ifdef CONFIG_IEEE80211N
841 OBJS += ../src/ap/ieee802_11_ht.o
844 ifdef CONFIG_IEEE80211AC
845 OBJS += ../src/ap/ieee802_11_vht.o
848 ifdef CONFIG_P2P_MANAGER
849 CFLAGS += -DCONFIG_P2P_MANAGER
850 OBJS += ../src/ap/p2p_hostapd.o
854 CFLAGS += -DCONFIG_HS20
855 OBJS += ../src/ap/hs20.o
856 CONFIG_INTERWORKING=y
859 ifdef CONFIG_INTERWORKING
860 CFLAGS += -DCONFIG_INTERWORKING
861 OBJS += ../src/common/gas.o
862 OBJS += ../src/ap/gas_serv.o
865 ifdef CONFIG_PROXYARP
866 CFLAGS += -DCONFIG_PROXYARP
867 OBJS += ../src/ap/x_snoop.o
868 OBJS += ../src/ap/dhcp_snoop.o
870 OBJS += ../src/ap/ndisc_snoop.o
874 OBJS += ../src/drivers/driver_common.o
876 ifdef CONFIG_WPA_CLI_EDIT
877 OBJS_c += ../src/utils/edit.o
879 OBJS_c += ../src/utils/edit_simple.o
883 CFLAGS += -DCONFIG_ACS
884 OBJS += ../src/ap/acs.o
888 ifdef CONFIG_NO_STDOUT_DEBUG
889 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
892 ifdef CONFIG_DEBUG_LINUX_TRACING
893 CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
896 ifdef CONFIG_DEBUG_FILE
897 CFLAGS += -DCONFIG_DEBUG_FILE
901 CFLAGS += -DCONFIG_SQLITE
906 ALL=hostapd hostapd_cli
908 all: verify_config $(ALL)
921 ifdef CONFIG_CODE_COVERAGE
924 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<)
927 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
932 @if [ ! -r .config ]; then \
933 echo 'Building hostapd requires a configuration file'; \
934 echo '(.config). See README for more instructions. You can'; \
935 echo 'run "cp defconfig .config" to create an example'; \
936 echo 'configuration.'; \
940 $(DESTDIR)$(BINDIR)/%: %
943 install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL))
945 ../src/drivers/build.hostapd:
946 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \
947 $(MAKE) -C ../src/drivers clean; \
949 @touch ../src/drivers/build.hostapd
951 BCHECK=../src/drivers/build.hostapd
953 hostapd: $(BCHECK) $(OBJS)
954 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
957 ifdef CONFIG_WPA_TRACE
958 OBJS_c += ../src/utils/trace.o
960 hostapd_cli: $(OBJS_c)
961 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
964 NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) ../src/crypto/md5.o
966 ifdef CONFIG_INTERNAL_RC4
967 NOBJS += ../src/crypto/rc4.o
970 ifdef CONFIG_INTERNAL_MD5
971 NOBJS += ../src/crypto/md5-internal.o
973 NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o
974 NOBJS += ../src/utils/wpa_debug.o
975 NOBJS += ../src/utils/wpabuf.o
976 ifdef CONFIG_WPA_TRACE
977 NOBJS += ../src/utils/trace.o
984 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
985 HOBJS += ../src/crypto/aes-encblock.o
986 ifdef CONFIG_INTERNAL_AES
987 HOBJS += ../src/crypto/aes-internal.o
988 HOBJS += ../src/crypto/aes-internal-enc.o
991 nt_password_hash: $(NOBJS)
992 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
996 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
1000 lcov -c -d .. > lcov.info
1001 genhtml lcov.info --output-directory lcov-html
1004 $(MAKE) -C ../src clean
1005 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
1006 rm -f *.d *.gcno *.gcda *.gcov
1010 -include $(OBJS:%.o=%.d)