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