xref: /aosp_15_r20/external/wpa_supplicant_8/hostapd/Android.mk (revision 03f9172ca588f91df233974f4258bab95191f931)
1# Copyright (C) 2008 The Android Open Source Project
2#
3# This software may be distributed under the terms of the BSD license.
4# See README for more details.
5#
6
7LOCAL_PATH := $(call my-dir)
8
9WPA_BUILD_HOSTAPD := false
10ifneq ($(BOARD_HOSTAPD_DRIVER),)
11  WPA_BUILD_HOSTAPD := true
12  CONFIG_DRIVER_$(BOARD_HOSTAPD_DRIVER) := y
13endif
14
15ifeq ($(WPA_BUILD_HOSTAPD),true)
16
17include $(LOCAL_PATH)/android.config
18
19# To ignore possible wrong network configurations
20L_CFLAGS = -DWPA_IGNORE_CONFIG_ERRORS
21
22L_CFLAGS += -DVERSION_STR_POSTFIX=\"-$(PLATFORM_VERSION)\"
23
24# Set Android log name
25L_CFLAGS += -DANDROID_LOG_NAME=\"hostapd\"
26
27L_CFLAGS += -Wall -Werror
28
29# Disable unused parameter warnings
30L_CFLAGS += -Wno-unused-parameter
31
32# Disable unused variable warnings
33L_CFLAGS += -Wno-unused-variable
34
35# Disable macro redefined warnings
36L_CFLAGS += -Wno-macro-redefined
37
38# Set Android extended P2P functionality
39L_CFLAGS += -DANDROID_P2P
40
41ifeq ($(BOARD_HOSTAPD_PRIVATE_LIB),)
42L_CFLAGS += -DANDROID_LIB_STUB
43endif
44
45ifeq ($(BOARD_HOSTAPD_CONFIG_80211W_MFP_OPTIONAL),true)
46L_CFLAGS += -DENABLE_HOSTAPD_CONFIG_80211W_MFP_OPTIONAL
47endif
48
49ifneq ($(BOARD_HOSTAPD_PRIVATE_LIB_EVENT),)
50L_CFLAGS += -DANDROID_LIB_EVENT
51endif
52
53# Use Android specific directory for control interface sockets
54L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/vendor/wifi/hostapd/sockets\"
55L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/vendor/wifi/hostapd/ctrl\"
56
57# Use Android specific directory for hostapd_cli command completion history
58L_CFLAGS += -DCONFIG_HOSTAPD_CLI_HISTORY_DIR=\"/data/vendor/wifi/hostapd\"
59
60# To force sizeof(enum) = 4
61ifeq ($(TARGET_ARCH),arm)
62L_CFLAGS += -mabi=aapcs-linux
63endif
64
65INCLUDES = $(LOCAL_PATH)
66INCLUDES += $(LOCAL_PATH)/src
67INCLUDES += $(LOCAL_PATH)/src/utils
68INCLUDES += system/security/keystore/include
69ifdef CONFIG_DRIVER_NL80211
70ifneq ($(wildcard external/libnl),)
71INCLUDES += external/libnl/include
72else
73INCLUDES += external/libnl-headers
74endif
75endif
76
77ifdef CONFIG_TESTING_OPTIONS
78L_CFLAGS += -DCONFIG_TESTING_OPTIONS
79CONFIG_WPS_TESTING=y
80endif
81
82ifndef CONFIG_OS
83ifdef CONFIG_NATIVE_WINDOWS
84CONFIG_OS=win32
85else
86CONFIG_OS=unix
87endif
88endif
89
90ifeq ($(CONFIG_OS), internal)
91L_CFLAGS += -DOS_NO_C_LIB_DEFINES
92endif
93
94ifdef CONFIG_NATIVE_WINDOWS
95L_CFLAGS += -DCONFIG_NATIVE_WINDOWS
96LIBS += -lws2_32
97endif
98
99OBJS = main.c
100OBJS += config_file.c
101
102OBJS += src/ap/hostapd.c
103OBJS += src/ap/wpa_auth_glue.c
104OBJS += src/ap/drv_callbacks.c
105OBJS += src/ap/ap_drv_ops.c
106OBJS += src/ap/utils.c
107OBJS += src/ap/authsrv.c
108OBJS += src/ap/ieee802_1x.c
109OBJS += src/ap/ap_config.c
110OBJS += src/ap/eap_user_db.c
111OBJS += src/ap/ieee802_11_auth.c
112OBJS += src/ap/sta_info.c
113OBJS += src/ap/wpa_auth.c
114OBJS += src/ap/tkip_countermeasures.c
115OBJS += src/ap/ap_mlme.c
116OBJS += src/ap/wpa_auth_ie.c
117OBJS += src/ap/preauth_auth.c
118OBJS += src/ap/pmksa_cache_auth.c
119OBJS += src/ap/ieee802_11_shared.c
120OBJS += src/ap/beacon.c
121OBJS += src/ap/bss_load.c
122OBJS += src/ap/neighbor_db.c
123OBJS += src/ap/rrm.c
124OBJS_d =
125OBJS_p =
126LIBS =
127LIBS_c =
128HOBJS =
129LIBS_h =
130
131NEED_RC4=y
132NEED_AES=y
133NEED_MD5=y
134NEED_SHA1=y
135
136OBJS += src/drivers/drivers.c
137L_CFLAGS += -DHOSTAPD
138
139ifdef CONFIG_WPA_TRACE
140L_CFLAGS += -DWPA_TRACE
141OBJS += src/utils/trace.c
142HOBJS += src/utils/trace.c
143LDFLAGS += -rdynamic
144L_CFLAGS += -funwind-tables
145ifdef CONFIG_WPA_TRACE_BFD
146L_CFLAGS += -DWPA_TRACE_BFD
147LIBS += -lbfd
148LIBS_c += -lbfd
149LIBS_h += -lbfd
150endif
151endif
152
153OBJS += src/utils/eloop.c
154
155ifdef CONFIG_ELOOP_POLL
156L_CFLAGS += -DCONFIG_ELOOP_POLL
157endif
158
159ifdef CONFIG_ELOOP_EPOLL
160L_CFLAGS += -DCONFIG_ELOOP_EPOLL
161endif
162
163OBJS += src/utils/common.c
164OBJS += src/utils/wpa_debug.c
165OBJS += src/utils/wpabuf.c
166OBJS += src/utils/os_$(CONFIG_OS).c
167OBJS += src/utils/ip_addr.c
168OBJS += src/utils/crc32.c
169
170OBJS += src/common/ieee802_11_common.c
171OBJS += src/common/wpa_common.c
172OBJS += src/common/hw_features_common.c
173OBJS += src/common/ptksa_cache.c
174
175OBJS += src/eapol_auth/eapol_auth_sm.c
176
177
178ifndef CONFIG_NO_DUMP_STATE
179# define HOSTAPD_DUMP_STATE to include support for dumping internal state
180# through control interface commands (undefine it, if you want to save in
181# binary size)
182L_CFLAGS += -DHOSTAPD_DUMP_STATE
183OBJS += src/eapol_auth/eapol_auth_dump.c
184endif
185
186ifdef CONFIG_NO_RADIUS
187L_CFLAGS += -DCONFIG_NO_RADIUS
188CONFIG_NO_ACCOUNTING=y
189else
190OBJS += src/radius/radius.c
191OBJS += src/radius/radius_client.c
192OBJS += src/radius/radius_das.c
193endif
194
195ifdef CONFIG_NO_ACCOUNTING
196L_CFLAGS += -DCONFIG_NO_ACCOUNTING
197else
198OBJS += src/ap/accounting.c
199endif
200
201ifdef CONFIG_NO_VLAN
202L_CFLAGS += -DCONFIG_NO_VLAN
203else
204OBJS += src/ap/vlan_init.c
205OBJS += src/ap/vlan_ifconfig.c
206OBJS += src/ap/vlan.c
207ifdef CONFIG_FULL_DYNAMIC_VLAN
208# Define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
209# and VLAN interfaces for the VLAN feature.
210L_CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
211OBJS += src/ap/vlan_full.c
212ifdef CONFIG_VLAN_NETLINK
213OBJS += src/ap/vlan_util.c
214else
215OBJS += src/ap/vlan_ioctl.c
216endif
217endif
218endif
219
220ifdef CONFIG_NO_CTRL_IFACE
221L_CFLAGS += -DCONFIG_NO_CTRL_IFACE
222else
223OBJS += src/common/ctrl_iface_common.c
224OBJS += ctrl_iface.c
225OBJS += src/ap/ctrl_iface_ap.c
226endif
227
228L_CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX
229
230ifdef CONFIG_RSN_PREAUTH
231L_CFLAGS += -DCONFIG_RSN_PREAUTH
232CONFIG_L2_PACKET=y
233endif
234
235ifdef CONFIG_HS20
236CONFIG_PROXYARP=y
237endif
238
239ifdef CONFIG_PROXYARP
240CONFIG_L2_PACKET=y
241endif
242
243ifdef CONFIG_SUITEB
244L_CFLAGS += -DCONFIG_SUITEB
245endif
246
247ifdef CONFIG_SUITEB192
248L_CFLAGS += -DCONFIG_SUITEB192
249NEED_SHA384=y
250endif
251
252ifdef CONFIG_OCV
253L_CFLAGS += -DCONFIG_OCV
254OBJS += src/common/ocv.c
255endif
256
257NEED_AES_UNWRAP=y
258
259ifdef CONFIG_IEEE80211R
260L_CFLAGS += -DCONFIG_IEEE80211R -DCONFIG_IEEE80211R_AP
261OBJS += src/ap/wpa_auth_ft.c
262NEED_AES_UNWRAP=y
263NEED_AES_SIV=y
264NEED_ETH_P_OUI=y
265NEED_HMAC_SHA256_KDF=y
266endif
267
268ifdef NEED_ETH_P_OUI
269L_CFLAGS += -DCONFIG_ETH_P_OUI
270OBJS += src/ap/eth_p_oui.c
271endif
272
273ifdef CONFIG_SAE
274L_CFLAGS += -DCONFIG_SAE
275OBJS += src/common/sae.c
276ifdef CONFIG_SAE_PK
277L_CFLAGS += -DCONFIG_SAE_PK
278NEED_AES_SIV=y
279OBJS += src/common/sae_pk.c
280endif
281NEED_ECC=y
282NEED_DH_GROUPS=y
283NEED_HMAC_SHA256_KDF=y
284NEED_DRAGONFLY=y
285endif
286
287ifdef CONFIG_OWE
288L_CFLAGS += -DCONFIG_OWE
289NEED_ECC=y
290NEED_HMAC_SHA256_KDF=y
291NEED_HMAC_SHA384_KDF=y
292NEED_HMAC_SHA512_KDF=y
293NEED_SHA384=y
294NEED_SHA512=y
295endif
296
297ifdef CONFIG_WAPI_INTERFACE
298L_CFLAGS += -DCONFIG_WAPI_INTERFACE
299endif
300
301ifdef CONFIG_FILS
302L_CFLAGS += -DCONFIG_FILS
303OBJS += src/ap/fils_hlp.c
304NEED_SHA384=y
305NEED_AES_SIV=y
306ifdef CONFIG_FILS_SK_PFS
307L_CFLAGS += -DCONFIG_FILS_SK_PFS
308NEED_ECC=y
309endif
310endif
311
312ifdef CONFIG_WNM
313L_CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP
314OBJS += src/ap/wnm_ap.c
315endif
316
317ifdef CONFIG_IEEE80211AC
318L_CFLAGS += -DCONFIG_IEEE80211AC
319endif
320
321ifdef CONFIG_IEEE80211BE
322CONFIG_IEEE80211AX=y
323L_CFLAGS += -DCONFIG_IEEE80211BE
324OBJS += src/ap/ieee802_11_eht.c
325endif
326
327ifdef CONFIG_IEEE80211AX
328L_CFLAGS += -DCONFIG_IEEE80211AX
329endif
330
331ifdef CONFIG_MBO
332L_CFLAGS += -DCONFIG_MBO
333OBJS += src/ap/mbo_ap.c
334endif
335
336ifdef CONFIG_FST
337L_CFLAGS += -DCONFIG_FST
338OBJS += src/fst/fst.c
339OBJS += src/fst/fst_group.c
340OBJS += src/fst/fst_iface.c
341OBJS += src/fst/fst_session.c
342OBJS += src/fst/fst_ctrl_aux.c
343ifdef CONFIG_FST_TEST
344L_CFLAGS += -DCONFIG_FST_TEST
345endif
346ifndef CONFIG_NO_CTRL_IFACE
347OBJS += src/fst/fst_ctrl_iface.c
348endif
349endif
350
351ifdef CONFIG_WEP
352L_CFLAGS += -DCONFIG_WEP
353endif
354
355ifdef CONFIG_NO_TKIP
356L_CFLAGS += -DCONFIG_NO_TKIP
357endif
358
359
360include $(LOCAL_PATH)/src/drivers/drivers.mk
361
362OBJS += $(DRV_AP_OBJS)
363L_CFLAGS += $(DRV_AP_CFLAGS)
364LDFLAGS += $(DRV_AP_LDFLAGS)
365LIBS += $(DRV_AP_LIBS)
366
367ifdef CONFIG_L2_PACKET
368ifdef CONFIG_DNET_PCAP
369ifdef CONFIG_L2_FREEBSD
370LIBS += -lpcap
371OBJS += src/l2_packet/l2_packet_freebsd.c
372else
373LIBS += -ldnet -lpcap
374OBJS += src/l2_packet/l2_packet_pcap.c
375endif
376else
377OBJS += src/l2_packet/l2_packet_linux.c
378endif
379else
380OBJS += src/l2_packet/l2_packet_none.c
381endif
382
383
384ifdef CONFIG_EAP_MD5
385L_CFLAGS += -DEAP_SERVER_MD5
386OBJS += src/eap_server/eap_server_md5.c
387CHAP=y
388endif
389
390ifdef CONFIG_EAP_TLS
391L_CFLAGS += -DEAP_SERVER_TLS
392OBJS += src/eap_server/eap_server_tls.c
393TLS_FUNCS=y
394endif
395
396ifdef CONFIG_EAP_UNAUTH_TLS
397L_CFLAGS += -DEAP_SERVER_UNAUTH_TLS
398ifndef CONFIG_EAP_TLS
399OBJS += src/eap_server/eap_server_tls.c
400TLS_FUNCS=y
401endif
402endif
403
404ifdef CONFIG_EAP_PEAP
405L_CFLAGS += -DEAP_SERVER_PEAP
406OBJS += src/eap_server/eap_server_peap.c
407OBJS += src/eap_common/eap_peap_common.c
408TLS_FUNCS=y
409CONFIG_EAP_MSCHAPV2=y
410endif
411
412ifdef CONFIG_EAP_TTLS
413L_CFLAGS += -DEAP_SERVER_TTLS
414OBJS += src/eap_server/eap_server_ttls.c
415TLS_FUNCS=y
416CHAP=y
417endif
418
419ifdef CONFIG_EAP_MSCHAPV2
420L_CFLAGS += -DEAP_SERVER_MSCHAPV2
421OBJS += src/eap_server/eap_server_mschapv2.c
422MS_FUNCS=y
423endif
424
425ifdef CONFIG_EAP_GTC
426L_CFLAGS += -DEAP_SERVER_GTC
427OBJS += src/eap_server/eap_server_gtc.c
428endif
429
430ifdef CONFIG_EAP_SIM
431L_CFLAGS += -DEAP_SERVER_SIM
432OBJS += src/eap_server/eap_server_sim.c
433CONFIG_EAP_SIM_COMMON=y
434NEED_AES_CBC=y
435endif
436
437ifdef CONFIG_EAP_AKA
438L_CFLAGS += -DEAP_SERVER_AKA
439OBJS += src/eap_server/eap_server_aka.c
440CONFIG_EAP_SIM_COMMON=y
441NEED_AES_CBC=y
442endif
443
444ifdef CONFIG_EAP_AKA_PRIME
445L_CFLAGS += -DEAP_SERVER_AKA_PRIME
446endif
447
448ifdef CONFIG_EAP_SIM_COMMON
449OBJS += src/eap_common/eap_sim_common.c
450# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
451# replaced with another file implementing the interface specified in
452# eap_sim_db.h.
453OBJS += src/eap_server/eap_sim_db.c
454NEED_FIPS186_2_PRF=y
455endif
456
457ifdef CONFIG_EAP_PAX
458L_CFLAGS += -DEAP_SERVER_PAX
459OBJS += src/eap_server/eap_server_pax.c src/eap_common/eap_pax_common.c
460endif
461
462ifdef CONFIG_EAP_PSK
463L_CFLAGS += -DEAP_SERVER_PSK
464OBJS += src/eap_server/eap_server_psk.c src/eap_common/eap_psk_common.c
465NEED_AES_ENCBLOCK=y
466NEED_AES_EAX=y
467endif
468
469ifdef CONFIG_EAP_SAKE
470L_CFLAGS += -DEAP_SERVER_SAKE
471OBJS += src/eap_server/eap_server_sake.c src/eap_common/eap_sake_common.c
472endif
473
474ifdef CONFIG_EAP_GPSK
475L_CFLAGS += -DEAP_SERVER_GPSK
476OBJS += src/eap_server/eap_server_gpsk.c src/eap_common/eap_gpsk_common.c
477ifdef CONFIG_EAP_GPSK_SHA256
478L_CFLAGS += -DEAP_GPSK_SHA256
479endif
480endif
481
482ifdef CONFIG_EAP_PWD
483L_CFLAGS += -DEAP_SERVER_PWD
484OBJS += src/eap_server/eap_server_pwd.c src/eap_common/eap_pwd_common.c
485NEED_ECC=y
486NEED_DRAGONFLY=y
487endif
488
489ifdef CONFIG_EAP_EKE
490L_CFLAGS += -DEAP_SERVER_EKE
491OBJS += src/eap_server/eap_server_eke.c src/eap_common/eap_eke_common.c
492NEED_DH_GROUPS=y
493NEED_DH_GROUPS_ALL=y
494endif
495
496ifdef CONFIG_EAP_VENDOR_TEST
497L_CFLAGS += -DEAP_SERVER_VENDOR_TEST
498OBJS += src/eap_server/eap_server_vendor_test.c
499endif
500
501ifdef CONFIG_EAP_FAST
502L_CFLAGS += -DEAP_SERVER_FAST
503OBJS += src/eap_server/eap_server_fast.c
504OBJS += src/eap_common/eap_fast_common.c
505TLS_FUNCS=y
506NEED_T_PRF=y
507NEED_AES_UNWRAP=y
508endif
509
510ifdef CONFIG_EAP_TEAP
511L_CFLAGS += -DEAP_SERVER_TEAP
512OBJS += src/eap_server/eap_server_teap.c
513OBJS += src/eap_common/eap_teap_common.c
514TLS_FUNCS=y
515NEED_T_PRF=y
516NEED_SHA384=y
517NEED_TLS_PRF_SHA256=y
518NEED_TLS_PRF_SHA384=y
519NEED_AES_UNWRAP=y
520endif
521
522ifdef CONFIG_WPS
523L_CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
524OBJS += src/utils/uuid.c
525OBJS += src/ap/wps_hostapd.c
526OBJS += src/eap_server/eap_server_wsc.c src/eap_common/eap_wsc_common.c
527OBJS += src/wps/wps.c
528OBJS += src/wps/wps_common.c
529OBJS += src/wps/wps_attr_parse.c
530OBJS += src/wps/wps_attr_build.c
531OBJS += src/wps/wps_attr_process.c
532OBJS += src/wps/wps_dev_attr.c
533OBJS += src/wps/wps_enrollee.c
534OBJS += src/wps/wps_registrar.c
535NEED_DH_GROUPS=y
536NEED_BASE64=y
537NEED_AES_CBC=y
538NEED_MODEXP=y
539CONFIG_EAP=y
540
541ifdef CONFIG_WPS_NFC
542L_CFLAGS += -DCONFIG_WPS_NFC
543OBJS += src/wps/ndef.c
544NEED_WPS_OOB=y
545endif
546
547ifdef NEED_WPS_OOB
548L_CFLAGS += -DCONFIG_WPS_OOB
549endif
550
551ifdef CONFIG_WPS_UPNP
552L_CFLAGS += -DCONFIG_WPS_UPNP
553OBJS += src/wps/wps_upnp.c
554OBJS += src/wps/wps_upnp_ssdp.c
555OBJS += src/wps/wps_upnp_web.c
556OBJS += src/wps/wps_upnp_event.c
557OBJS += src/wps/wps_upnp_ap.c
558OBJS += src/wps/upnp_xml.c
559OBJS += src/wps/httpread.c
560OBJS += src/wps/http_client.c
561OBJS += src/wps/http_server.c
562endif
563
564ifdef CONFIG_WPS_STRICT
565L_CFLAGS += -DCONFIG_WPS_STRICT
566OBJS += src/wps/wps_validate.c
567endif
568
569ifdef CONFIG_WPS_TESTING
570L_CFLAGS += -DCONFIG_WPS_TESTING
571endif
572
573endif
574
575ifdef CONFIG_DPP
576L_CFLAGS += -DCONFIG_DPP
577OBJS += src/common/dpp.c
578OBJS += src/common/dpp_auth.c
579OBJS += src/common/dpp_backup.c
580OBJS += src/common/dpp_crypto.c
581OBJS += src/common/dpp_pkex.c
582OBJS += src/common/dpp_reconfig.c
583OBJS += src/common/dpp_tcp.c
584OBJS += src/ap/dpp_hostapd.c
585OBJS += src/ap/gas_query_ap.c
586NEED_AES_SIV=y
587NEED_HMAC_SHA256_KDF=y
588NEED_HMAC_SHA384_KDF=y
589NEED_HMAC_SHA512_KDF=y
590NEED_SHA384=y
591NEED_SHA512=y
592NEED_ECC=y
593NEED_JSON=y
594NEED_GAS=y
595NEED_BASE64=y
596NEED_ASN1=y
597ifdef CONFIG_DPP2
598L_CFLAGS += -DCONFIG_DPP2
599endif
600ifdef CONFIG_DPP3
601L_CFLAGS += -DCONFIG_DPP3
602endif
603endif
604
605ifdef CONFIG_NAN_USD
606OBJS += src/common/nan_de.c
607OBJS += src/ap/nan_usd_ap.c
608L_CFLAGS += -DCONFIG_NAN_USD
609endif
610
611ifdef CONFIG_PASN
612L_CFLAGS += -DCONFIG_PASN
613L_CFLAGS += -DCONFIG_PTKSA_CACHE
614NEED_HMAC_SHA256_KDF=y
615NEED_HMAC_SHA384_KDF=y
616NEED_SHA256=y
617NEED_SHA384=y
618endif
619
620ifdef CONFIG_EAP_IKEV2
621L_CFLAGS += -DEAP_SERVER_IKEV2
622OBJS += src/eap_server/eap_server_ikev2.c src/eap_server/ikev2.c
623OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
624NEED_DH_GROUPS=y
625NEED_DH_GROUPS_ALL=y
626NEED_MODEXP=y
627NEED_CIPHER=y
628endif
629
630ifdef CONFIG_EAP_TNC
631L_CFLAGS += -DEAP_SERVER_TNC
632OBJS += src/eap_server/eap_server_tnc.c
633OBJS += src/eap_server/tncs.c
634NEED_BASE64=y
635ifndef CONFIG_DRIVER_BSD
636LIBS += -ldl
637endif
638endif
639
640# Basic EAP functionality is needed for EAPOL
641OBJS += eap_register.c
642OBJS += src/eap_server/eap_server.c
643OBJS += src/eap_common/eap_common.c
644OBJS += src/eap_server/eap_server_methods.c
645OBJS += src/eap_server/eap_server_identity.c
646L_CFLAGS += -DEAP_SERVER_IDENTITY
647
648ifdef CONFIG_EAP
649L_CFLAGS += -DEAP_SERVER
650endif
651
652ifdef CONFIG_PKCS12
653L_CFLAGS += -DPKCS12_FUNCS
654endif
655
656ifdef NEED_DRAGONFLY
657OBJS += src/common/dragonfly.c
658endif
659
660ifdef MS_FUNCS
661OBJS += src/crypto/ms_funcs.c
662NEED_DES=y
663NEED_MD4=y
664endif
665
666ifdef CHAP
667OBJS += src/eap_common/chap.c
668endif
669
670ifdef CONFIG_RADIUS_TLS
671TLS_FUNCS=y
672L_CFLAGS += -DCONFIG_RADIUS_TLS
673endif
674
675ifdef TLS_FUNCS
676NEED_DES=y
677# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
678L_CFLAGS += -DEAP_TLS_FUNCS
679OBJS += src/eap_server/eap_server_tls_common.c
680NEED_TLS_PRF=y
681endif
682
683ifndef CONFIG_TLS
684CONFIG_TLS=openssl
685endif
686
687ifdef CONFIG_TLSV11
688L_CFLAGS += -DCONFIG_TLSV11
689endif
690
691ifdef CONFIG_TLSV12
692L_CFLAGS += -DCONFIG_TLSV12
693endif
694
695ifeq ($(CONFIG_TLS), openssl)
696L_CFLAGS += -DCRYPTO_RSA_OAEP_SHA256
697ifdef TLS_FUNCS
698OBJS += src/crypto/tls_openssl.c
699OBJS += src/crypto/tls_openssl_ocsp.c
700LIBS += -lssl
701endif
702OBJS += src/crypto/crypto_openssl.c
703HOBJS += src/crypto/crypto_openssl.c
704ifdef NEED_FIPS186_2_PRF
705OBJS += src/crypto/fips_prf_openssl.c
706endif
707NEED_TLS_PRF_SHA256=y
708LIBS += -lcrypto
709LIBS_h += -lcrypto
710ifndef CONFIG_TLS_DEFAULT_CIPHERS
711CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW"
712endif
713L_CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\"
714endif
715
716ifeq ($(CONFIG_TLS), gnutls)
717ifndef CONFIG_CRYPTO
718# default to libgcrypt
719CONFIG_CRYPTO=gnutls
720endif
721ifdef TLS_FUNCS
722OBJS += src/crypto/tls_gnutls.c
723LIBS += -lgnutls -lgpg-error
724endif
725OBJS += src/crypto/crypto_$(CONFIG_CRYPTO).c
726HOBJS += src/crypto/crypto_$(CONFIG_CRYPTO).c
727ifdef NEED_FIPS186_2_PRF
728OBJS += src/crypto/fips_prf_internal.c
729OBJS += src/crypto/sha1-internal.c
730endif
731ifeq ($(CONFIG_CRYPTO), gnutls)
732LIBS += -lgcrypt
733LIBS_h += -lgcrypt
734CONFIG_INTERNAL_RC4=y
735CONFIG_INTERNAL_DH_GROUP5=y
736endif
737ifeq ($(CONFIG_CRYPTO), nettle)
738LIBS += -lnettle -lgmp
739LIBS_p += -lnettle -lgmp
740CONFIG_INTERNAL_RC4=y
741CONFIG_INTERNAL_DH_GROUP5=y
742endif
743endif
744
745ifeq ($(CONFIG_TLS), internal)
746ifndef CONFIG_CRYPTO
747CONFIG_CRYPTO=internal
748endif
749ifdef TLS_FUNCS
750OBJS += src/crypto/crypto_internal-rsa.c
751OBJS += src/crypto/tls_internal.c
752OBJS += src/tls/tlsv1_common.c
753OBJS += src/tls/tlsv1_record.c
754OBJS += src/tls/tlsv1_cred.c
755OBJS += src/tls/tlsv1_server.c
756OBJS += src/tls/tlsv1_server_write.c
757OBJS += src/tls/tlsv1_server_read.c
758OBJS += src/tls/rsa.c
759OBJS += src/tls/x509v3.c
760OBJS += src/tls/pkcs1.c
761OBJS += src/tls/pkcs5.c
762OBJS += src/tls/pkcs8.c
763NEED_ASN1=y
764NEED_BASE64=y
765NEED_TLS_PRF=y
766ifdef CONFIG_TLSV12
767NEED_TLS_PRF_SHA256=y
768endif
769NEED_MODEXP=y
770NEED_CIPHER=y
771L_CFLAGS += -DCONFIG_TLS_INTERNAL
772L_CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
773endif
774ifdef NEED_CIPHER
775NEED_DES=y
776OBJS += src/crypto/crypto_internal-cipher.c
777endif
778ifdef NEED_MODEXP
779OBJS += src/crypto/crypto_internal-modexp.c
780OBJS += src/tls/bignum.c
781endif
782ifeq ($(CONFIG_CRYPTO), libtomcrypt)
783OBJS += src/crypto/crypto_libtomcrypt.c
784LIBS += -ltomcrypt -ltfm
785LIBS_h += -ltomcrypt -ltfm
786CONFIG_INTERNAL_SHA256=y
787CONFIG_INTERNAL_RC4=y
788CONFIG_INTERNAL_DH_GROUP5=y
789endif
790ifeq ($(CONFIG_CRYPTO), internal)
791OBJS += src/crypto/crypto_internal.c
792NEED_AES_DEC=y
793L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL
794ifdef CONFIG_INTERNAL_LIBTOMMATH
795L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
796ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
797L_CFLAGS += -DLTM_FAST
798endif
799else
800LIBS += -ltommath
801LIBS_h += -ltommath
802endif
803CONFIG_INTERNAL_AES=y
804CONFIG_INTERNAL_DES=y
805CONFIG_INTERNAL_SHA1=y
806CONFIG_INTERNAL_MD4=y
807CONFIG_INTERNAL_MD5=y
808CONFIG_INTERNAL_SHA256=y
809CONFIG_INTERNAL_SHA384=y
810CONFIG_INTERNAL_SHA512=y
811CONFIG_INTERNAL_RC4=y
812CONFIG_INTERNAL_DH_GROUP5=y
813endif
814ifeq ($(CONFIG_CRYPTO), cryptoapi)
815OBJS += src/crypto/crypto_cryptoapi.c
816OBJS_p += src/crypto/crypto_cryptoapi.c
817L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
818CONFIG_INTERNAL_SHA256=y
819CONFIG_INTERNAL_RC4=y
820endif
821endif
822
823ifeq ($(CONFIG_TLS), none)
824ifdef TLS_FUNCS
825OBJS += src/crypto/tls_none.c
826L_CFLAGS += -DEAP_TLS_NONE
827CONFIG_INTERNAL_AES=y
828CONFIG_INTERNAL_SHA1=y
829CONFIG_INTERNAL_MD5=y
830endif
831OBJS += src/crypto/crypto_none.c
832OBJS_p += src/crypto/crypto_none.c
833CONFIG_INTERNAL_SHA256=y
834CONFIG_INTERNAL_RC4=y
835endif
836
837ifndef TLS_FUNCS
838OBJS += src/crypto/tls_none.c
839ifeq ($(CONFIG_TLS), internal)
840CONFIG_INTERNAL_AES=y
841CONFIG_INTERNAL_SHA1=y
842CONFIG_INTERNAL_MD5=y
843CONFIG_INTERNAL_RC4=y
844endif
845endif
846
847AESOBJS = # none so far
848ifdef CONFIG_INTERNAL_AES
849AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-enc.c
850endif
851
852ifneq ($(CONFIG_TLS), openssl)
853AESOBJS += src/crypto/aes-wrap.c
854endif
855ifdef NEED_AES_EAX
856AESOBJS += src/crypto/aes-eax.c
857NEED_AES_CTR=y
858endif
859ifdef NEED_AES_SIV
860AESOBJS += src/crypto/aes-siv.c
861NEED_AES_CTR=y
862endif
863ifdef NEED_AES_CTR
864AESOBJS += src/crypto/aes-ctr.c
865endif
866ifdef NEED_AES_ENCBLOCK
867AESOBJS += src/crypto/aes-encblock.c
868endif
869ifneq ($(CONFIG_TLS), openssl)
870AESOBJS += src/crypto/aes-omac1.c
871endif
872ifdef NEED_AES_UNWRAP
873ifneq ($(CONFIG_TLS), openssl)
874NEED_AES_DEC=y
875AESOBJS += src/crypto/aes-unwrap.c
876endif
877endif
878ifdef NEED_AES_CBC
879NEED_AES_DEC=y
880ifneq ($(CONFIG_TLS), openssl)
881AESOBJS += src/crypto/aes-cbc.c
882endif
883endif
884ifdef NEED_AES_DEC
885ifdef CONFIG_INTERNAL_AES
886AESOBJS += src/crypto/aes-internal-dec.c
887endif
888endif
889ifdef NEED_AES
890OBJS += $(AESOBJS)
891endif
892
893SHA1OBJS =
894ifdef NEED_SHA1
895ifneq ($(CONFIG_TLS), openssl)
896ifneq ($(CONFIG_TLS), gnutls)
897SHA1OBJS += src/crypto/sha1.c
898endif
899endif
900SHA1OBJS += src/crypto/sha1-prf.c
901ifdef CONFIG_INTERNAL_SHA1
902SHA1OBJS += src/crypto/sha1-internal.c
903ifdef NEED_FIPS186_2_PRF
904SHA1OBJS += src/crypto/fips_prf_internal.c
905endif
906endif
907ifneq ($(CONFIG_TLS), openssl)
908SHA1OBJS += src/crypto/sha1-pbkdf2.c
909endif
910ifdef NEED_T_PRF
911SHA1OBJS += src/crypto/sha1-tprf.c
912endif
913ifdef NEED_TLS_PRF
914SHA1OBJS += src/crypto/sha1-tlsprf.c
915endif
916endif
917
918ifdef NEED_SHA1
919OBJS += $(SHA1OBJS)
920endif
921
922ifneq ($(CONFIG_TLS), openssl)
923ifneq ($(CONFIG_TLS), gnutls)
924OBJS += src/crypto/md5.c
925endif
926endif
927
928ifdef NEED_MD5
929ifdef CONFIG_INTERNAL_MD5
930OBJS += src/crypto/md5-internal.c
931HOBJS += src/crypto/md5-internal.c
932endif
933endif
934
935ifdef NEED_MD4
936ifdef CONFIG_INTERNAL_MD4
937OBJS += src/crypto/md4-internal.c
938endif
939endif
940
941ifdef NEED_DES
942ifdef CONFIG_INTERNAL_DES
943OBJS += src/crypto/des-internal.c
944endif
945endif
946
947ifdef CONFIG_NO_RC4
948L_CFLAGS += -DCONFIG_NO_RC4
949endif
950
951ifdef NEED_RC4
952ifdef CONFIG_INTERNAL_RC4
953ifndef CONFIG_NO_RC4
954OBJS += src/crypto/rc4.c
955endif
956endif
957endif
958
959L_CFLAGS += -DCONFIG_SHA256
960ifneq ($(CONFIG_TLS), openssl)
961ifneq ($(CONFIG_TLS), gnutls)
962OBJS += src/crypto/sha256.c
963endif
964endif
965OBJS += src/crypto/sha256-prf.c
966ifdef CONFIG_INTERNAL_SHA256
967OBJS += src/crypto/sha256-internal.c
968endif
969ifdef NEED_TLS_PRF_SHA256
970OBJS += src/crypto/sha256-tlsprf.c
971endif
972ifdef NEED_TLS_PRF_SHA384
973OBJS += src/crypto/sha384-tlsprf.c
974endif
975ifdef NEED_HMAC_SHA256_KDF
976OBJS += src/crypto/sha256-kdf.c
977endif
978ifdef NEED_HMAC_SHA384_KDF
979OBJS += src/crypto/sha384-kdf.c
980endif
981ifdef NEED_HMAC_SHA512_KDF
982OBJS += src/crypto/sha512-kdf.c
983endif
984ifdef NEED_SHA384
985L_CFLAGS += -DCONFIG_SHA384
986ifneq ($(CONFIG_TLS), openssl)
987ifneq ($(CONFIG_TLS), gnutls)
988OBJS += src/crypto/sha384.c
989endif
990endif
991OBJS += src/crypto/sha384-prf.c
992endif
993ifdef NEED_SHA512
994L_CFLAGS += -DCONFIG_SHA512
995ifneq ($(CONFIG_TLS), openssl)
996ifneq ($(CONFIG_TLS), linux)
997ifneq ($(CONFIG_TLS), gnutls)
998OBJS += src/crypto/sha512.c
999endif
1000endif
1001endif
1002OBJS += src/crypto/sha512-prf.c
1003endif
1004
1005ifdef CONFIG_INTERNAL_SHA384
1006L_CFLAGS += -DCONFIG_INTERNAL_SHA384
1007OBJS += src/crypto/sha384-internal.c
1008endif
1009
1010ifdef CONFIG_INTERNAL_SHA512
1011L_CFLAGS += -DCONFIG_INTERNAL_SHA512
1012OBJS += src/crypto/sha512-internal.c
1013endif
1014
1015ifdef NEED_ASN1
1016OBJS += src/tls/asn1.c
1017endif
1018
1019ifdef NEED_DH_GROUPS
1020OBJS += src/crypto/dh_groups.c
1021endif
1022ifdef NEED_DH_GROUPS_ALL
1023L_CFLAGS += -DALL_DH_GROUPS
1024endif
1025ifdef CONFIG_INTERNAL_DH_GROUP5
1026ifdef NEED_DH_GROUPS
1027OBJS += src/crypto/dh_group5.c
1028endif
1029endif
1030
1031ifdef NEED_ECC
1032L_CFLAGS += -DCONFIG_ECC
1033endif
1034
1035ifdef CONFIG_NO_RANDOM_POOL
1036L_CFLAGS += -DCONFIG_NO_RANDOM_POOL
1037else
1038OBJS += src/crypto/random.c
1039HOBJS += src/crypto/random.c
1040HOBJS += src/utils/eloop.c
1041HOBJS += $(SHA1OBJS)
1042ifneq ($(CONFIG_TLS), openssl)
1043HOBJS += src/crypto/md5.c
1044endif
1045endif
1046
1047ifdef CONFIG_RADIUS_SERVER
1048L_CFLAGS += -DRADIUS_SERVER
1049OBJS += src/radius/radius_server.c
1050endif
1051
1052ifdef CONFIG_IPV6
1053L_CFLAGS += -DCONFIG_IPV6
1054endif
1055
1056ifdef CONFIG_DRIVER_RADIUS_ACL
1057L_CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
1058endif
1059
1060ifdef NEED_BASE64
1061OBJS += src/utils/base64.c
1062endif
1063
1064ifdef NEED_JSON
1065OBJS += src/utils/json.c
1066L_CFLAGS += -DCONFIG_JSON
1067endif
1068
1069ifdef NEED_AP_MLME
1070OBJS += src/ap/wmm.c
1071OBJS += src/ap/ap_list.c
1072OBJS += src/ap/comeback_token.c
1073OBJS += src/pasn/pasn_responder.c
1074OBJS += src/pasn/pasn_common.c
1075OBJS += src/ap/ieee802_11.c
1076OBJS += src/ap/hw_features.c
1077OBJS += src/ap/dfs.c
1078L_CFLAGS += -DNEED_AP_MLME
1079endif
1080OBJS += src/ap/ieee802_11_ht.c
1081
1082ifdef CONFIG_IEEE80211AC
1083OBJS += src/ap/ieee802_11_vht.c
1084endif
1085
1086ifdef CONFIG_IEEE80211AX
1087OBJS += src/ap/ieee802_11_he.c
1088endif
1089
1090ifdef CONFIG_P2P_MANAGER
1091L_CFLAGS += -DCONFIG_P2P_MANAGER
1092OBJS += src/ap/p2p_hostapd.c
1093endif
1094
1095ifdef CONFIG_HS20
1096L_CFLAGS += -DCONFIG_HS20
1097OBJS += src/ap/hs20.c
1098CONFIG_INTERWORKING=y
1099endif
1100
1101ifdef CONFIG_INTERWORKING
1102L_CFLAGS += -DCONFIG_INTERWORKING
1103NEED_GAS=y
1104endif
1105
1106ifdef NEED_GAS
1107OBJS += src/common/gas.c
1108OBJS += src/ap/gas_serv.c
1109endif
1110
1111ifdef CONFIG_PROXYARP
1112L_CFLAGS += -DCONFIG_PROXYARP
1113OBJS += src/ap/x_snoop.c
1114OBJS += src/ap/dhcp_snoop.c
1115ifdef CONFIG_IPV6
1116OBJS += src/ap/ndisc_snoop.c
1117endif
1118endif
1119
1120OBJS += src/drivers/driver_common.c
1121
1122ifdef CONFIG_ACS
1123L_CFLAGS += -DCONFIG_ACS
1124OBJS += src/ap/acs.c
1125LIBS += -lm
1126endif
1127
1128ifdef CONFIG_NO_STDOUT_DEBUG
1129L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1130endif
1131
1132ifdef CONFIG_DEBUG_SYSLOG
1133L_CFLAGS += -DCONFIG_DEBUG_SYSLOG
1134endif
1135
1136ifdef CONFIG_DEBUG_LINUX_TRACING
1137L_CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
1138endif
1139
1140ifdef CONFIG_DEBUG_FILE
1141L_CFLAGS += -DCONFIG_DEBUG_FILE
1142endif
1143
1144ifdef CONFIG_ANDROID_LOG
1145L_CFLAGS += -DCONFIG_ANDROID_LOG
1146endif
1147
1148OBJS_c = hostapd_cli.c
1149OBJS_c += src/common/wpa_ctrl.c
1150OBJS_c += src/utils/os_$(CONFIG_OS).c
1151OBJS_c += src/common/cli.c
1152OBJS_c += src/utils/eloop.c
1153OBJS_c += src/utils/common.c
1154ifdef CONFIG_WPA_TRACE
1155OBJS_c += src/utils/trace.c
1156endif
1157OBJS_c += src/utils/wpa_debug.c
1158ifdef CONFIG_WPA_CLI_EDIT
1159OBJS_c += src/utils/edit.c
1160else
1161OBJS_c += src/utils/edit_simple.c
1162endif
1163
1164ifeq ($(filter gce_x86 gce_x86_64 calypso, $(TARGET_DEVICE)),)
1165ifdef CONFIG_CTRL_IFACE_AIDL
1166HOSTAPD_USE_AIDL=y
1167L_CFLAGS += -DCONFIG_CTRL_IFACE_AIDL
1168L_CPPFLAGS = -Wall -Werror
1169endif
1170endif
1171
1172########################
1173
1174include $(CLEAR_VARS)
1175LOCAL_MODULE := hostapd_cli
1176LOCAL_LICENSE_KINDS := SPDX-license-identifier-BSD SPDX-license-identifier-BSD-3-Clause SPDX-license-identifier-ISC legacy_unencumbered
1177LOCAL_LICENSE_CONDITIONS := notice unencumbered
1178LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../LICENSE
1179LOCAL_PROPRIETARY_MODULE := true
1180LOCAL_SHARED_LIBRARIES := libc libcutils liblog
1181LOCAL_CFLAGS := $(L_CFLAGS)
1182LOCAL_SRC_FILES := $(OBJS_c)
1183LOCAL_C_INCLUDES := $(INCLUDES)
1184include $(BUILD_EXECUTABLE)
1185
1186########################
1187include $(CLEAR_VARS)
1188LOCAL_MODULE := hostapd
1189LOCAL_LICENSE_KINDS := SPDX-license-identifier-BSD SPDX-license-identifier-BSD-3-Clause SPDX-license-identifier-ISC legacy_unencumbered
1190LOCAL_LICENSE_CONDITIONS := notice unencumbered
1191LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../LICENSE
1192LOCAL_MODULE_TAGS := optional
1193LOCAL_PROPRIETARY_MODULE := true
1194LOCAL_MODULE_RELATIVE_PATH := hw
1195LOCAL_REQUIRED_MODULES += android.hardware.wifi.hostapd.xml
1196ifdef CONFIG_DRIVER_CUSTOM
1197LOCAL_STATIC_LIBRARIES := libCustomWifi
1198endif
1199ifneq ($(BOARD_HOSTAPD_PRIVATE_LIB),)
1200LOCAL_STATIC_LIBRARIES += $(BOARD_HOSTAPD_PRIVATE_LIB)
1201endif
1202LOCAL_SHARED_LIBRARIES := libc libcutils liblog libcrypto libssl
1203ifdef CONFIG_DRIVER_NL80211
1204ifneq ($(wildcard external/libnl),)
1205LOCAL_SHARED_LIBRARIES += libnl
1206else
1207LOCAL_STATIC_LIBRARIES += libnl_2
1208endif
1209endif
1210ifeq ($(HOSTAPD_USE_AIDL), y)
1211LOCAL_SHARED_LIBRARIES += android.hardware.wifi.hostapd-V3-ndk
1212LOCAL_SHARED_LIBRARIES += android.hardware.wifi.common-V2-ndk
1213LOCAL_SHARED_LIBRARIES += libbase libutils
1214LOCAL_SHARED_LIBRARIES += libbinder_ndk
1215LOCAL_STATIC_LIBRARIES += libhostapd_aidl
1216endif
1217LOCAL_CFLAGS := $(L_CFLAGS)
1218LOCAL_SRC_FILES := $(OBJS)
1219LOCAL_C_INCLUDES := $(INCLUDES)
1220LOCAL_INIT_RC := hostapd.android.rc
1221include $(BUILD_EXECUTABLE)
1222
1223########################
1224include $(CLEAR_VARS)
1225LOCAL_MODULE := hostapd_noaidl
1226LOCAL_LICENSE_KINDS := SPDX-license-identifier-BSD SPDX-license-identifier-BSD-3-Clause SPDX-license-identifier-ISC legacy_unencumbered
1227LOCAL_LICENSE_CONDITIONS := notice unencumbered
1228LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../LICENSE
1229LOCAL_MODULE_TAGS := optional
1230LOCAL_PROPRIETARY_MODULE := true
1231ifdef CONFIG_DRIVER_CUSTOM
1232LOCAL_STATIC_LIBRARIES := libCustomWifi
1233endif
1234ifneq ($(BOARD_HOSTAPD_PRIVATE_LIB),)
1235LOCAL_STATIC_LIBRARIES += $(BOARD_HOSTAPD_PRIVATE_LIB)
1236endif
1237LOCAL_SHARED_LIBRARIES := libc libcutils liblog libcrypto libssl
1238ifdef CONFIG_DRIVER_NL80211
1239ifneq ($(wildcard external/libnl),)
1240LOCAL_SHARED_LIBRARIES += libnl
1241else
1242LOCAL_STATIC_LIBRARIES += libnl_2
1243endif
1244endif
1245LOCAL_CFLAGS := $(patsubst -DCONFIG_CTRL_IFACE_AIDL,,$(L_CFLAGS))
1246LOCAL_SRC_FILES := $(OBJS)
1247LOCAL_C_INCLUDES := $(INCLUDES)
1248include $(BUILD_EXECUTABLE)
1249
1250ifeq ($(HOSTAPD_USE_AIDL), y)
1251### Aidl service library ###
1252########################
1253include $(CLEAR_VARS)
1254LOCAL_MODULE := libhostapd_aidl
1255LOCAL_LICENSE_KINDS := SPDX-license-identifier-BSD SPDX-license-identifier-BSD-3-Clause SPDX-license-identifier-ISC legacy_unencumbered
1256LOCAL_LICENSE_CONDITIONS := notice unencumbered
1257LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../COPYING $(LOCAL_PATH)/../NOTICE
1258LOCAL_VENDOR_MODULE := true
1259LOCAL_CPPFLAGS := $(L_CPPFLAGS)
1260LOCAL_CFLAGS := $(L_CFLAGS)
1261LOCAL_C_INCLUDES := $(INCLUDES)
1262LOCAL_SRC_FILES := \
1263    aidl/aidl.cpp \
1264    aidl/hostapd.cpp
1265LOCAL_SHARED_LIBRARIES := \
1266    android.hardware.wifi.hostapd-V3-ndk \
1267    android.hardware.wifi.common-V2-ndk \
1268    libbinder_ndk \
1269    libbase \
1270    libutils \
1271    liblog
1272LOCAL_EXPORT_C_INCLUDE_DIRS := \
1273    $(LOCAL_PATH)/aidl
1274include $(BUILD_STATIC_LIBRARY)
1275endif # HOSTAPD_USE_AIDL == y
1276endif # ifeq ($(WPA_BUILD_HOSTAPD),true)
1277