blob: 65ec4fd02da2120eb83275826c6444ff8f387339 [file] [log] [blame]
Dmitry Shmidtc81d5b62012-05-14 13:35:02 -07001# 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
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07007LOCAL_PATH := $(call my-dir)
8
9WPA_BUILD_HOSTAPD := false
Jeff Brownbbda6272011-07-11 22:12:15 -070010ifneq ($(BOARD_HOSTAPD_DRIVER),)
11 WPA_BUILD_HOSTAPD := true
12 CONFIG_DRIVER_$(BOARD_HOSTAPD_DRIVER) := y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070013endif
14
Dmitry Shmidte61a2d62011-06-27 10:59:51 -070015ifeq ($(WPA_BUILD_HOSTAPD),true)
16
Dmitry Shmidt7dd0f202012-02-21 16:49:00 -080017include $(LOCAL_PATH)/android.config
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070018
19# To ignore possible wrong network configurations
20L_CFLAGS = -DWPA_IGNORE_CONFIG_ERRORS
21
Dmitry Shmidt95613e42011-10-25 10:50:42 -070022L_CFLAGS += -DVERSION_STR_POSTFIX=\"-$(PLATFORM_VERSION)\"
23
Dmitry Shmidt648b7492011-09-30 15:03:42 -070024# Set Android log name
25L_CFLAGS += -DANDROID_LOG_NAME=\"hostapd\"
26
Dmitry Shmidtf9bdef92014-04-25 10:46:36 -070027# Disable unused parameter warnings
28L_CFLAGS += -Wno-unused-parameter
29
Dmitry Shmidtb58836e2014-04-29 14:35:56 -070030# Set Android extended P2P functionality
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080031L_CFLAGS += -DANDROID_P2P
Dmitry Shmidt41712582015-06-29 11:02:15 -070032
Dmitry Shmidtb58836e2014-04-29 14:35:56 -070033ifeq ($(BOARD_HOSTAPD_PRIVATE_LIB),)
Dmitry Shmidt41712582015-06-29 11:02:15 -070034L_CFLAGS += -DANDROID_LIB_STUB
Mike J. Chen0cc49e82012-12-05 11:20:29 -080035endif
36
Jeff Johnson205f2142012-09-03 22:12:17 -070037# 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
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070041# To force sizeof(enum) = 4
42ifeq ($(TARGET_ARCH),arm)
43L_CFLAGS += -mabi=aapcs-linux
44endif
45
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070046INCLUDES = $(LOCAL_PATH)
47INCLUDES += $(LOCAL_PATH)/src
48INCLUDES += $(LOCAL_PATH)/src/utils
Stephen Smalleyf1396b42012-11-16 12:50:03 -050049INCLUDES += system/security/keystore/include
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070050ifdef CONFIG_DRIVER_NL80211
Dmitry Shmidtcd446452014-02-18 16:03:35 -080051ifneq ($(wildcard external/libnl),)
Dmitry Shmidtd620e6d2014-02-18 11:07:59 -080052INCLUDES += external/libnl/include
Dmitry Shmidtcd446452014-02-18 16:03:35 -080053else
54INCLUDES += external/libnl-headers
55endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070056endif
57
58
59ifndef CONFIG_OS
60ifdef CONFIG_NATIVE_WINDOWS
61CONFIG_OS=win32
62else
63CONFIG_OS=unix
64endif
65endif
66
67ifeq ($(CONFIG_OS), internal)
68L_CFLAGS += -DOS_NO_C_LIB_DEFINES
69endif
70
71ifdef CONFIG_NATIVE_WINDOWS
72L_CFLAGS += -DCONFIG_NATIVE_WINDOWS
73LIBS += -lws2_32
74endif
75
76OBJS = main.c
77OBJS += config_file.c
78
79OBJS += src/ap/hostapd.c
80OBJS += src/ap/wpa_auth_glue.c
81OBJS += src/ap/drv_callbacks.c
82OBJS += src/ap/ap_drv_ops.c
83OBJS += src/ap/utils.c
84OBJS += src/ap/authsrv.c
85OBJS += src/ap/ieee802_1x.c
86OBJS += src/ap/ap_config.c
Dmitry Shmidtd5e49232012-12-03 15:08:10 -080087OBJS += src/ap/eap_user_db.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070088OBJS += src/ap/ieee802_11_auth.c
89OBJS += src/ap/sta_info.c
90OBJS += src/ap/wpa_auth.c
91OBJS += src/ap/tkip_countermeasures.c
92OBJS += src/ap/ap_mlme.c
93OBJS += src/ap/wpa_auth_ie.c
94OBJS += src/ap/preauth_auth.c
95OBJS += src/ap/pmksa_cache_auth.c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080096OBJS += src/ap/ieee802_11_shared.c
97OBJS += src/ap/beacon.c
Dmitry Shmidtfb45fd52015-01-05 13:08:17 -080098OBJS += src/ap/bss_load.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070099OBJS_d =
100OBJS_p =
101LIBS =
102LIBS_c =
103HOBJS =
104LIBS_h =
105
106NEED_RC4=y
107NEED_AES=y
108NEED_MD5=y
109NEED_SHA1=y
110
111OBJS += src/drivers/drivers.c
112L_CFLAGS += -DHOSTAPD
113
114ifdef CONFIG_WPA_TRACE
115L_CFLAGS += -DWPA_TRACE
116OBJS += src/utils/trace.c
117HOBJS += src/utils/trace.c
118LDFLAGS += -rdynamic
119L_CFLAGS += -funwind-tables
120ifdef CONFIG_WPA_TRACE_BFD
121L_CFLAGS += -DWPA_TRACE_BFD
122LIBS += -lbfd
123LIBS_c += -lbfd
124LIBS_h += -lbfd
125endif
126endif
127
128OBJS += src/utils/eloop.c
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800129
130ifdef CONFIG_ELOOP_POLL
131L_CFLAGS += -DCONFIG_ELOOP_POLL
132endif
133
134ifdef CONFIG_ELOOP_EPOLL
135L_CFLAGS += -DCONFIG_ELOOP_EPOLL
136endif
137
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700138OBJS += src/utils/common.c
139OBJS += src/utils/wpa_debug.c
140OBJS += src/utils/wpabuf.c
141OBJS += src/utils/os_$(CONFIG_OS).c
142OBJS += src/utils/ip_addr.c
143
144OBJS += src/common/ieee802_11_common.c
145OBJS += src/common/wpa_common.c
Dmitry Shmidt746bde52015-01-12 13:01:47 -0800146OBJS += src/common/hw_features_common.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700147
148OBJS += src/eapol_auth/eapol_auth_sm.c
149
150
151ifndef CONFIG_NO_DUMP_STATE
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800152# define HOSTAPD_DUMP_STATE to include support for dumping internal state
153# through control interface commands (undefine it, if you want to save in
154# binary size)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700155L_CFLAGS += -DHOSTAPD_DUMP_STATE
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700156OBJS += src/eapol_auth/eapol_auth_dump.c
157endif
158
159ifdef CONFIG_NO_RADIUS
160L_CFLAGS += -DCONFIG_NO_RADIUS
161CONFIG_NO_ACCOUNTING=y
162else
163OBJS += src/radius/radius.c
164OBJS += src/radius/radius_client.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700165OBJS += src/radius/radius_das.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700166endif
167
168ifdef CONFIG_NO_ACCOUNTING
169L_CFLAGS += -DCONFIG_NO_ACCOUNTING
170else
171OBJS += src/ap/accounting.c
172endif
173
174ifdef CONFIG_NO_VLAN
175L_CFLAGS += -DCONFIG_NO_VLAN
176else
177OBJS += src/ap/vlan_init.c
Dmitry Shmidt57c2d392016-02-23 13:40:19 -0800178OBJS += src/ap/vlan.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700179ifdef CONFIG_VLAN_NETLINK
180ifdef CONFIG_FULL_DYNAMIC_VLAN
181OBJS += src/ap/vlan_util.c
182endif
183L_CFLAGS += -DCONFIG_VLAN_NETLINK
184endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700185endif
186
187ifdef CONFIG_NO_CTRL_IFACE
188L_CFLAGS += -DCONFIG_NO_CTRL_IFACE
189else
190OBJS += ctrl_iface.c
191OBJS += src/ap/ctrl_iface_ap.c
192endif
193
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700194L_CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX
195
196ifdef CONFIG_IAPP
197L_CFLAGS += -DCONFIG_IAPP
198OBJS += src/ap/iapp.c
199endif
200
201ifdef CONFIG_RSN_PREAUTH
202L_CFLAGS += -DCONFIG_RSN_PREAUTH
203CONFIG_L2_PACKET=y
204endif
205
206ifdef CONFIG_PEERKEY
207L_CFLAGS += -DCONFIG_PEERKEY
208OBJS += src/ap/peerkey_auth.c
209endif
210
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800211ifdef CONFIG_HS20
212NEED_AES_OMAC1=y
Dmitry Shmidtfb45fd52015-01-05 13:08:17 -0800213CONFIG_PROXYARP=y
214endif
215
216ifdef CONFIG_PROXYARP
217CONFIG_L2_PACKET=y
218endif
219
220ifdef CONFIG_SUITEB
221L_CFLAGS += -DCONFIG_SUITEB
222NEED_SHA256=y
223NEED_AES_OMAC1=y
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800224endif
225
Dmitry Shmidt40b07202015-01-27 13:40:23 -0800226ifdef CONFIG_SUITEB192
227L_CFLAGS += -DCONFIG_SUITEB192
228NEED_SHA384=y
229endif
230
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700231ifdef CONFIG_IEEE80211W
232L_CFLAGS += -DCONFIG_IEEE80211W
233NEED_SHA256=y
234NEED_AES_OMAC1=y
235endif
236
237ifdef CONFIG_IEEE80211R
238L_CFLAGS += -DCONFIG_IEEE80211R
239OBJS += src/ap/wpa_auth_ft.c
240NEED_SHA256=y
241NEED_AES_OMAC1=y
242NEED_AES_UNWRAP=y
243endif
244
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800245ifdef CONFIG_SAE
246L_CFLAGS += -DCONFIG_SAE
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800247OBJS += src/common/sae.c
248NEED_ECC=y
249NEED_DH_GROUPS=y
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800250endif
251
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800252ifdef CONFIG_WNM
253L_CFLAGS += -DCONFIG_WNM
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700254OBJS += src/ap/wnm_ap.c
255endif
256
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700257ifdef CONFIG_IEEE80211N
258L_CFLAGS += -DCONFIG_IEEE80211N
259endif
260
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700261ifdef CONFIG_IEEE80211AC
262L_CFLAGS += -DCONFIG_IEEE80211AC
263endif
264
Dmitry Shmidt57c2d392016-02-23 13:40:19 -0800265ifdef CONFIG_MBO
266L_CFLAGS += -DCONFIG_MBO
267OBJS += src/ap/mbo_ap.c
268endif
269
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800270ifdef CONFIG_FST
271L_CFLAGS += -DCONFIG_FST
272OBJS += src/fst/fst.c
273OBJS += src/fst/fst_group.c
274OBJS += src/fst/fst_iface.c
275OBJS += src/fst/fst_session.c
276OBJS += src/fst/fst_ctrl_aux.c
277ifdef CONFIG_FST_TEST
278L_CFLAGS += -DCONFIG_FST_TEST
279endif
280ifndef CONFIG_NO_CTRL_IFACE
281OBJS += src/fst/fst_ctrl_iface.c
282endif
283endif
284
285
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700286include $(LOCAL_PATH)/src/drivers/drivers.mk
287
288OBJS += $(DRV_AP_OBJS)
289L_CFLAGS += $(DRV_AP_CFLAGS)
290LDFLAGS += $(DRV_AP_LDFLAGS)
291LIBS += $(DRV_AP_LIBS)
292
293ifdef CONFIG_L2_PACKET
294ifdef CONFIG_DNET_PCAP
295ifdef CONFIG_L2_FREEBSD
296LIBS += -lpcap
297OBJS += src/l2_packet/l2_packet_freebsd.c
298else
299LIBS += -ldnet -lpcap
300OBJS += src/l2_packet/l2_packet_pcap.c
301endif
302else
303OBJS += src/l2_packet/l2_packet_linux.c
304endif
305else
306OBJS += src/l2_packet/l2_packet_none.c
307endif
308
309
310ifdef CONFIG_EAP_MD5
311L_CFLAGS += -DEAP_SERVER_MD5
312OBJS += src/eap_server/eap_server_md5.c
313CHAP=y
314endif
315
316ifdef CONFIG_EAP_TLS
317L_CFLAGS += -DEAP_SERVER_TLS
318OBJS += src/eap_server/eap_server_tls.c
319TLS_FUNCS=y
320endif
321
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700322ifdef CONFIG_EAP_UNAUTH_TLS
323L_CFLAGS += -DEAP_SERVER_UNAUTH_TLS
324ifndef CONFIG_EAP_TLS
325OBJS += src/eap_server/eap_server_tls.c
326TLS_FUNCS=y
327endif
328endif
329
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700330ifdef CONFIG_EAP_PEAP
331L_CFLAGS += -DEAP_SERVER_PEAP
332OBJS += src/eap_server/eap_server_peap.c
333OBJS += src/eap_common/eap_peap_common.c
334TLS_FUNCS=y
335CONFIG_EAP_MSCHAPV2=y
336endif
337
338ifdef CONFIG_EAP_TTLS
339L_CFLAGS += -DEAP_SERVER_TTLS
340OBJS += src/eap_server/eap_server_ttls.c
341TLS_FUNCS=y
342CHAP=y
343endif
344
345ifdef CONFIG_EAP_MSCHAPV2
346L_CFLAGS += -DEAP_SERVER_MSCHAPV2
347OBJS += src/eap_server/eap_server_mschapv2.c
348MS_FUNCS=y
349endif
350
351ifdef CONFIG_EAP_GTC
352L_CFLAGS += -DEAP_SERVER_GTC
353OBJS += src/eap_server/eap_server_gtc.c
354endif
355
356ifdef CONFIG_EAP_SIM
357L_CFLAGS += -DEAP_SERVER_SIM
358OBJS += src/eap_server/eap_server_sim.c
359CONFIG_EAP_SIM_COMMON=y
360NEED_AES_CBC=y
361endif
362
363ifdef CONFIG_EAP_AKA
364L_CFLAGS += -DEAP_SERVER_AKA
365OBJS += src/eap_server/eap_server_aka.c
366CONFIG_EAP_SIM_COMMON=y
367NEED_SHA256=y
368NEED_AES_CBC=y
369endif
370
371ifdef CONFIG_EAP_AKA_PRIME
372L_CFLAGS += -DEAP_SERVER_AKA_PRIME
373endif
374
375ifdef CONFIG_EAP_SIM_COMMON
376OBJS += src/eap_common/eap_sim_common.c
377# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
378# replaced with another file implementating the interface specified in
379# eap_sim_db.h.
380OBJS += src/eap_server/eap_sim_db.c
381NEED_FIPS186_2_PRF=y
382endif
383
384ifdef CONFIG_EAP_PAX
385L_CFLAGS += -DEAP_SERVER_PAX
386OBJS += src/eap_server/eap_server_pax.c src/eap_common/eap_pax_common.c
387endif
388
389ifdef CONFIG_EAP_PSK
390L_CFLAGS += -DEAP_SERVER_PSK
391OBJS += src/eap_server/eap_server_psk.c src/eap_common/eap_psk_common.c
392NEED_AES_OMAC1=y
393NEED_AES_ENCBLOCK=y
394NEED_AES_EAX=y
395endif
396
397ifdef CONFIG_EAP_SAKE
398L_CFLAGS += -DEAP_SERVER_SAKE
399OBJS += src/eap_server/eap_server_sake.c src/eap_common/eap_sake_common.c
400endif
401
402ifdef CONFIG_EAP_GPSK
403L_CFLAGS += -DEAP_SERVER_GPSK
404OBJS += src/eap_server/eap_server_gpsk.c src/eap_common/eap_gpsk_common.c
405ifdef CONFIG_EAP_GPSK_SHA256
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800406L_CFLAGS += -DEAP_GPSK_SHA256
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700407endif
408NEED_SHA256=y
409NEED_AES_OMAC1=y
410endif
411
412ifdef CONFIG_EAP_PWD
413L_CFLAGS += -DEAP_SERVER_PWD
414OBJS += src/eap_server/eap_server_pwd.c src/eap_common/eap_pwd_common.c
415NEED_SHA256=y
416endif
417
Dmitry Shmidt34af3062013-07-11 10:46:32 -0700418ifdef CONFIG_EAP_EKE
419L_CFLAGS += -DEAP_SERVER_EKE
420OBJS += src/eap_server/eap_server_eke.c src/eap_common/eap_eke_common.c
421NEED_DH_GROUPS=y
422NEED_DH_GROUPS_ALL=y
423endif
424
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700425ifdef CONFIG_EAP_VENDOR_TEST
426L_CFLAGS += -DEAP_SERVER_VENDOR_TEST
427OBJS += src/eap_server/eap_server_vendor_test.c
428endif
429
430ifdef CONFIG_EAP_FAST
431L_CFLAGS += -DEAP_SERVER_FAST
432OBJS += src/eap_server/eap_server_fast.c
433OBJS += src/eap_common/eap_fast_common.c
434TLS_FUNCS=y
435NEED_T_PRF=y
436NEED_AES_UNWRAP=y
437endif
438
439ifdef CONFIG_WPS
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700440L_CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
441OBJS += src/utils/uuid.c
442OBJS += src/ap/wps_hostapd.c
443OBJS += src/eap_server/eap_server_wsc.c src/eap_common/eap_wsc_common.c
444OBJS += src/wps/wps.c
445OBJS += src/wps/wps_common.c
446OBJS += src/wps/wps_attr_parse.c
447OBJS += src/wps/wps_attr_build.c
448OBJS += src/wps/wps_attr_process.c
449OBJS += src/wps/wps_dev_attr.c
450OBJS += src/wps/wps_enrollee.c
451OBJS += src/wps/wps_registrar.c
452NEED_DH_GROUPS=y
453NEED_SHA256=y
454NEED_BASE64=y
455NEED_AES_CBC=y
456NEED_MODEXP=y
457CONFIG_EAP=y
458
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700459ifdef CONFIG_WPS_NFC
460L_CFLAGS += -DCONFIG_WPS_NFC
461OBJS += src/wps/ndef.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700462NEED_WPS_OOB=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700463endif
464
465ifdef NEED_WPS_OOB
466L_CFLAGS += -DCONFIG_WPS_OOB
467endif
468
469ifdef CONFIG_WPS_UPNP
470L_CFLAGS += -DCONFIG_WPS_UPNP
471OBJS += src/wps/wps_upnp.c
472OBJS += src/wps/wps_upnp_ssdp.c
473OBJS += src/wps/wps_upnp_web.c
474OBJS += src/wps/wps_upnp_event.c
475OBJS += src/wps/wps_upnp_ap.c
476OBJS += src/wps/upnp_xml.c
477OBJS += src/wps/httpread.c
478OBJS += src/wps/http_client.c
479OBJS += src/wps/http_server.c
480endif
481
482ifdef CONFIG_WPS_STRICT
483L_CFLAGS += -DCONFIG_WPS_STRICT
484OBJS += src/wps/wps_validate.c
485endif
486
487ifdef CONFIG_WPS_TESTING
488L_CFLAGS += -DCONFIG_WPS_TESTING
489endif
490
491endif
492
493ifdef CONFIG_EAP_IKEV2
494L_CFLAGS += -DEAP_SERVER_IKEV2
495OBJS += src/eap_server/eap_server_ikev2.c src/eap_server/ikev2.c
496OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
497NEED_DH_GROUPS=y
498NEED_DH_GROUPS_ALL=y
499NEED_MODEXP=y
500NEED_CIPHER=y
501endif
502
503ifdef CONFIG_EAP_TNC
504L_CFLAGS += -DEAP_SERVER_TNC
505OBJS += src/eap_server/eap_server_tnc.c
506OBJS += src/eap_server/tncs.c
507NEED_BASE64=y
508ifndef CONFIG_DRIVER_BSD
509LIBS += -ldl
510endif
511endif
512
513# Basic EAP functionality is needed for EAPOL
514OBJS += eap_register.c
515OBJS += src/eap_server/eap_server.c
516OBJS += src/eap_common/eap_common.c
517OBJS += src/eap_server/eap_server_methods.c
518OBJS += src/eap_server/eap_server_identity.c
519L_CFLAGS += -DEAP_SERVER_IDENTITY
520
521ifdef CONFIG_EAP
522L_CFLAGS += -DEAP_SERVER
523endif
524
525ifdef CONFIG_PKCS12
526L_CFLAGS += -DPKCS12_FUNCS
527endif
528
529ifdef MS_FUNCS
530OBJS += src/crypto/ms_funcs.c
531NEED_DES=y
532NEED_MD4=y
533endif
534
535ifdef CHAP
536OBJS += src/eap_common/chap.c
537endif
538
539ifdef TLS_FUNCS
540NEED_DES=y
541# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
542L_CFLAGS += -DEAP_TLS_FUNCS
543OBJS += src/eap_server/eap_server_tls_common.c
544NEED_TLS_PRF=y
545endif
546
547ifndef CONFIG_TLS
548CONFIG_TLS=openssl
549endif
550
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700551ifdef CONFIG_TLSV11
552L_CFLAGS += -DCONFIG_TLSV11
553endif
554
555ifdef CONFIG_TLSV12
556L_CFLAGS += -DCONFIG_TLSV12
557NEED_SHA256=y
558endif
559
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700560ifeq ($(CONFIG_TLS), openssl)
561ifdef TLS_FUNCS
562OBJS += src/crypto/tls_openssl.c
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800563OBJS += src/crypto/tls_openssl_ocsp.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700564LIBS += -lssl
565endif
566OBJS += src/crypto/crypto_openssl.c
567HOBJS += src/crypto/crypto_openssl.c
568ifdef NEED_FIPS186_2_PRF
569OBJS += src/crypto/fips_prf_openssl.c
570endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800571NEED_SHA256=y
572NEED_TLS_PRF_SHA256=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700573LIBS += -lcrypto
574LIBS_h += -lcrypto
575endif
576
577ifeq ($(CONFIG_TLS), gnutls)
578ifdef TLS_FUNCS
579OBJS += src/crypto/tls_gnutls.c
580LIBS += -lgnutls -lgpg-error
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700581endif
582OBJS += src/crypto/crypto_gnutls.c
583HOBJS += src/crypto/crypto_gnutls.c
584ifdef NEED_FIPS186_2_PRF
Dmitry Shmidt98660862014-03-11 17:26:21 -0700585OBJS += src/crypto/fips_prf_internal.c
586OBJS += src/crypto/sha1-internal.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700587endif
588LIBS += -lgcrypt
589LIBS_h += -lgcrypt
590CONFIG_INTERNAL_SHA256=y
591CONFIG_INTERNAL_RC4=y
592CONFIG_INTERNAL_DH_GROUP5=y
593endif
594
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700595ifeq ($(CONFIG_TLS), internal)
596ifndef CONFIG_CRYPTO
597CONFIG_CRYPTO=internal
598endif
599ifdef TLS_FUNCS
600OBJS += src/crypto/crypto_internal-rsa.c
601OBJS += src/crypto/tls_internal.c
602OBJS += src/tls/tlsv1_common.c
603OBJS += src/tls/tlsv1_record.c
604OBJS += src/tls/tlsv1_cred.c
605OBJS += src/tls/tlsv1_server.c
606OBJS += src/tls/tlsv1_server_write.c
607OBJS += src/tls/tlsv1_server_read.c
608OBJS += src/tls/asn1.c
609OBJS += src/tls/rsa.c
610OBJS += src/tls/x509v3.c
611OBJS += src/tls/pkcs1.c
612OBJS += src/tls/pkcs5.c
613OBJS += src/tls/pkcs8.c
614NEED_SHA256=y
615NEED_BASE64=y
616NEED_TLS_PRF=y
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700617ifdef CONFIG_TLSV12
618NEED_TLS_PRF_SHA256=y
619endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700620NEED_MODEXP=y
621NEED_CIPHER=y
622L_CFLAGS += -DCONFIG_TLS_INTERNAL
623L_CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
624endif
625ifdef NEED_CIPHER
626NEED_DES=y
627OBJS += src/crypto/crypto_internal-cipher.c
628endif
629ifdef NEED_MODEXP
630OBJS += src/crypto/crypto_internal-modexp.c
631OBJS += src/tls/bignum.c
632endif
633ifeq ($(CONFIG_CRYPTO), libtomcrypt)
634OBJS += src/crypto/crypto_libtomcrypt.c
635LIBS += -ltomcrypt -ltfm
636LIBS_h += -ltomcrypt -ltfm
637CONFIG_INTERNAL_SHA256=y
638CONFIG_INTERNAL_RC4=y
639CONFIG_INTERNAL_DH_GROUP5=y
640endif
641ifeq ($(CONFIG_CRYPTO), internal)
642OBJS += src/crypto/crypto_internal.c
643NEED_AES_DEC=y
644L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL
645ifdef CONFIG_INTERNAL_LIBTOMMATH
646L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
647ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
648L_CFLAGS += -DLTM_FAST
649endif
650else
651LIBS += -ltommath
652LIBS_h += -ltommath
653endif
654CONFIG_INTERNAL_AES=y
655CONFIG_INTERNAL_DES=y
656CONFIG_INTERNAL_SHA1=y
657CONFIG_INTERNAL_MD4=y
658CONFIG_INTERNAL_MD5=y
659CONFIG_INTERNAL_SHA256=y
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800660CONFIG_INTERNAL_SHA384=y
661CONFIG_INTERNAL_SHA512=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700662CONFIG_INTERNAL_RC4=y
663CONFIG_INTERNAL_DH_GROUP5=y
664endif
665ifeq ($(CONFIG_CRYPTO), cryptoapi)
666OBJS += src/crypto/crypto_cryptoapi.c
667OBJS_p += src/crypto/crypto_cryptoapi.c
668L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
669CONFIG_INTERNAL_SHA256=y
670CONFIG_INTERNAL_RC4=y
671endif
672endif
673
674ifeq ($(CONFIG_TLS), none)
675ifdef TLS_FUNCS
676OBJS += src/crypto/tls_none.c
677L_CFLAGS += -DEAP_TLS_NONE
678CONFIG_INTERNAL_AES=y
679CONFIG_INTERNAL_SHA1=y
680CONFIG_INTERNAL_MD5=y
681endif
682OBJS += src/crypto/crypto_none.c
683OBJS_p += src/crypto/crypto_none.c
684CONFIG_INTERNAL_SHA256=y
685CONFIG_INTERNAL_RC4=y
686endif
687
688ifndef TLS_FUNCS
689OBJS += src/crypto/tls_none.c
690ifeq ($(CONFIG_TLS), internal)
691CONFIG_INTERNAL_AES=y
692CONFIG_INTERNAL_SHA1=y
693CONFIG_INTERNAL_MD5=y
694CONFIG_INTERNAL_RC4=y
695endif
696endif
697
698AESOBJS = # none so far
699ifdef CONFIG_INTERNAL_AES
700AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-enc.c
701endif
702
Dmitry Shmidtaff761d2015-02-06 10:50:36 -0800703ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700704AESOBJS += src/crypto/aes-wrap.c
Dmitry Shmidtaff761d2015-02-06 10:50:36 -0800705endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700706ifdef NEED_AES_EAX
707AESOBJS += src/crypto/aes-eax.c
708NEED_AES_CTR=y
709endif
710ifdef NEED_AES_CTR
711AESOBJS += src/crypto/aes-ctr.c
712endif
713ifdef NEED_AES_ENCBLOCK
714AESOBJS += src/crypto/aes-encblock.c
715endif
716ifdef NEED_AES_OMAC1
717AESOBJS += src/crypto/aes-omac1.c
718endif
719ifdef NEED_AES_UNWRAP
Dmitry Shmidtaff761d2015-02-06 10:50:36 -0800720ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700721NEED_AES_DEC=y
722AESOBJS += src/crypto/aes-unwrap.c
723endif
Dmitry Shmidtaff761d2015-02-06 10:50:36 -0800724endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700725ifdef NEED_AES_CBC
726NEED_AES_DEC=y
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700727ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700728AESOBJS += src/crypto/aes-cbc.c
729endif
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700730endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700731ifdef NEED_AES_DEC
732ifdef CONFIG_INTERNAL_AES
733AESOBJS += src/crypto/aes-internal-dec.c
734endif
735endif
736ifdef NEED_AES
737OBJS += $(AESOBJS)
738endif
739
740SHA1OBJS =
741ifdef NEED_SHA1
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700742ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700743SHA1OBJS += src/crypto/sha1.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700744endif
745SHA1OBJS += src/crypto/sha1-prf.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700746ifdef CONFIG_INTERNAL_SHA1
747SHA1OBJS += src/crypto/sha1-internal.c
748ifdef NEED_FIPS186_2_PRF
749SHA1OBJS += src/crypto/fips_prf_internal.c
750endif
751endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700752ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700753SHA1OBJS += src/crypto/sha1-pbkdf2.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700754endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700755ifdef NEED_T_PRF
756SHA1OBJS += src/crypto/sha1-tprf.c
757endif
758ifdef NEED_TLS_PRF
759SHA1OBJS += src/crypto/sha1-tlsprf.c
760endif
761endif
762
763ifdef NEED_SHA1
764OBJS += $(SHA1OBJS)
765endif
766
Dmitry Shmidtaff761d2015-02-06 10:50:36 -0800767ifneq ($(CONFIG_TLS), openssl)
768OBJS += src/crypto/md5.c
769endif
770
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700771ifdef NEED_MD5
772ifdef CONFIG_INTERNAL_MD5
773OBJS += src/crypto/md5-internal.c
774HOBJS += src/crypto/md5-internal.c
775endif
776endif
777
778ifdef NEED_MD4
779ifdef CONFIG_INTERNAL_MD4
780OBJS += src/crypto/md4-internal.c
781endif
782endif
783
784ifdef NEED_DES
785ifdef CONFIG_INTERNAL_DES
786OBJS += src/crypto/des-internal.c
787endif
788endif
789
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800790ifdef CONFIG_NO_RC4
791L_CFLAGS += -DCONFIG_NO_RC4
792endif
793
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700794ifdef NEED_RC4
795ifdef CONFIG_INTERNAL_RC4
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800796ifndef CONFIG_NO_RC4
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700797OBJS += src/crypto/rc4.c
798endif
799endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800800endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700801
802ifdef NEED_SHA256
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700803L_CFLAGS += -DCONFIG_SHA256
804ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700805OBJS += src/crypto/sha256.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700806endif
807OBJS += src/crypto/sha256-prf.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700808ifdef CONFIG_INTERNAL_SHA256
809OBJS += src/crypto/sha256-internal.c
810endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700811ifdef NEED_TLS_PRF_SHA256
812OBJS += src/crypto/sha256-tlsprf.c
813endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700814endif
Dmitry Shmidt40b07202015-01-27 13:40:23 -0800815ifdef NEED_SHA384
816L_CFLAGS += -DCONFIG_SHA384
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800817OBJS += src/crypto/sha384-prf.c
Dmitry Shmidt40b07202015-01-27 13:40:23 -0800818endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700819
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800820ifdef CONFIG_INTERNAL_SHA384
821L_CFLAGS += -DCONFIG_INTERNAL_SHA384
822OBJS += src/crypto/sha384-internal.c
823endif
824
825ifdef CONFIG_INTERNAL_SHA512
826L_CFLAGS += -DCONFIG_INTERNAL_SHA512
827OBJS += src/crypto/sha512-internal.c
828endif
829
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700830ifdef NEED_DH_GROUPS
831OBJS += src/crypto/dh_groups.c
832endif
833ifdef NEED_DH_GROUPS_ALL
834L_CFLAGS += -DALL_DH_GROUPS
835endif
836ifdef CONFIG_INTERNAL_DH_GROUP5
837ifdef NEED_DH_GROUPS
838OBJS += src/crypto/dh_group5.c
839endif
840endif
841
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800842ifdef NEED_ECC
843L_CFLAGS += -DCONFIG_ECC
844endif
845
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700846ifdef CONFIG_NO_RANDOM_POOL
847L_CFLAGS += -DCONFIG_NO_RANDOM_POOL
848else
849OBJS += src/crypto/random.c
850HOBJS += src/crypto/random.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700851HOBJS += src/utils/eloop.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700852HOBJS += $(SHA1OBJS)
Dmitry Shmidtdda10c22015-03-24 16:05:01 -0700853ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700854HOBJS += src/crypto/md5.c
855endif
Dmitry Shmidtdda10c22015-03-24 16:05:01 -0700856endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700857
858ifdef CONFIG_RADIUS_SERVER
859L_CFLAGS += -DRADIUS_SERVER
860OBJS += src/radius/radius_server.c
861endif
862
863ifdef CONFIG_IPV6
864L_CFLAGS += -DCONFIG_IPV6
865endif
866
867ifdef CONFIG_DRIVER_RADIUS_ACL
868L_CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
869endif
870
871ifdef CONFIG_FULL_DYNAMIC_VLAN
872# define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
873# and vlan interfaces for the vlan feature.
874L_CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
875endif
876
877ifdef NEED_BASE64
878OBJS += src/utils/base64.c
879endif
880
881ifdef NEED_AP_MLME
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700882OBJS += src/ap/wmm.c
883OBJS += src/ap/ap_list.c
884OBJS += src/ap/ieee802_11.c
885OBJS += src/ap/hw_features.c
Dmitry Shmidt051af732013-10-22 13:52:46 -0700886OBJS += src/ap/dfs.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700887L_CFLAGS += -DNEED_AP_MLME
888endif
889ifdef CONFIG_IEEE80211N
890OBJS += src/ap/ieee802_11_ht.c
891endif
892
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700893ifdef CONFIG_IEEE80211AC
894OBJS += src/ap/ieee802_11_vht.c
895endif
896
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700897ifdef CONFIG_P2P_MANAGER
898L_CFLAGS += -DCONFIG_P2P_MANAGER
899OBJS += src/ap/p2p_hostapd.c
900endif
901
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700902ifdef CONFIG_HS20
903L_CFLAGS += -DCONFIG_HS20
904OBJS += src/ap/hs20.c
905CONFIG_INTERWORKING=y
906endif
907
908ifdef CONFIG_INTERWORKING
909L_CFLAGS += -DCONFIG_INTERWORKING
910OBJS += src/common/gas.c
911OBJS += src/ap/gas_serv.c
912endif
913
Dmitry Shmidtfb45fd52015-01-05 13:08:17 -0800914ifdef CONFIG_PROXYARP
915L_CFLAGS += -DCONFIG_PROXYARP
916OBJS += src/ap/x_snoop.c
917OBJS += src/ap/dhcp_snoop.c
918ifdef CONFIG_IPV6
919OBJS += src/ap/ndisc_snoop.c
920endif
921endif
922
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800923OBJS += src/drivers/driver_common.c
924
Dmitry Shmidt54605472013-11-08 11:10:19 -0800925ifdef CONFIG_ACS
926L_CFLAGS += -DCONFIG_ACS
927OBJS += src/ap/acs.c
928LIBS += -lm
929endif
930
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700931ifdef CONFIG_NO_STDOUT_DEBUG
932L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
933endif
934
Dmitry Shmidt54605472013-11-08 11:10:19 -0800935ifdef CONFIG_DEBUG_LINUX_TRACING
936L_CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
937endif
938
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700939ifdef CONFIG_DEBUG_FILE
940L_CFLAGS += -DCONFIG_DEBUG_FILE
941endif
942
943ifdef CONFIG_ANDROID_LOG
944L_CFLAGS += -DCONFIG_ANDROID_LOG
945endif
946
947OBJS_c = hostapd_cli.c src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800948OBJS_c += src/utils/eloop.c
Dmitry Shmidta3dc3092015-06-23 11:21:28 -0700949OBJS_c += src/utils/common.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700950ifdef CONFIG_WPA_TRACE
951OBJS_c += src/utils/trace.c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800952endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700953OBJS_c += src/utils/wpa_debug.c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800954ifdef CONFIG_WPA_CLI_EDIT
955OBJS_c += src/utils/edit.c
956else
957OBJS_c += src/utils/edit_simple.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700958endif
959
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700960########################
961
962include $(CLEAR_VARS)
963LOCAL_MODULE := hostapd_cli
964LOCAL_MODULE_TAGS := debug
Ying Wange93dd112013-04-09 21:53:29 -0700965LOCAL_SHARED_LIBRARIES := libc libcutils liblog
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700966LOCAL_CFLAGS := $(L_CFLAGS)
967LOCAL_SRC_FILES := $(OBJS_c)
968LOCAL_C_INCLUDES := $(INCLUDES)
969include $(BUILD_EXECUTABLE)
970
971########################
972include $(CLEAR_VARS)
973LOCAL_MODULE := hostapd
974LOCAL_MODULE_TAGS := optional
975ifdef CONFIG_DRIVER_CUSTOM
976LOCAL_STATIC_LIBRARIES := libCustomWifi
977endif
978ifneq ($(BOARD_HOSTAPD_PRIVATE_LIB),)
979LOCAL_STATIC_LIBRARIES += $(BOARD_HOSTAPD_PRIVATE_LIB)
980endif
Ying Wange93dd112013-04-09 21:53:29 -0700981LOCAL_SHARED_LIBRARIES := libc libcutils liblog libcrypto libssl
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700982ifdef CONFIG_DRIVER_NL80211
Dmitry Shmidtcd446452014-02-18 16:03:35 -0800983ifneq ($(wildcard external/libnl),)
Dmitry Shmidtd620e6d2014-02-18 11:07:59 -0800984LOCAL_SHARED_LIBRARIES += libnl
Dmitry Shmidtcd446452014-02-18 16:03:35 -0800985else
986LOCAL_STATIC_LIBRARIES += libnl_2
987endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700988endif
989LOCAL_CFLAGS := $(L_CFLAGS)
990LOCAL_SRC_FILES := $(OBJS)
991LOCAL_C_INCLUDES := $(INCLUDES)
992include $(BUILD_EXECUTABLE)
993
994endif # ifeq ($(WPA_BUILD_HOSTAPD),true)