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