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