blob: c569e4d850b19781ffcc881f9f1d6bc2719c9856 [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
David Benjaminc7f648c2016-04-22 15:10:46 -040046# TODO(davidben): Remove this once wpa_supplicant is updated to correctly
47# condition SSL_get_client_random, etc., on BoringSSL.
48L_CFLAGS += -DBORINGSSL_SUPPRESS_ACCESSORS
49
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070050INCLUDES = $(LOCAL_PATH)
51INCLUDES += $(LOCAL_PATH)/src
52INCLUDES += $(LOCAL_PATH)/src/utils
Stephen Smalleyf1396b42012-11-16 12:50:03 -050053INCLUDES += system/security/keystore/include
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070054ifdef CONFIG_DRIVER_NL80211
Dmitry Shmidtcd446452014-02-18 16:03:35 -080055ifneq ($(wildcard external/libnl),)
Dmitry Shmidtd620e6d2014-02-18 11:07:59 -080056INCLUDES += external/libnl/include
Dmitry Shmidtcd446452014-02-18 16:03:35 -080057else
58INCLUDES += external/libnl-headers
59endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070060endif
61
62
63ifndef CONFIG_OS
64ifdef CONFIG_NATIVE_WINDOWS
65CONFIG_OS=win32
66else
67CONFIG_OS=unix
68endif
69endif
70
71ifeq ($(CONFIG_OS), internal)
72L_CFLAGS += -DOS_NO_C_LIB_DEFINES
73endif
74
75ifdef CONFIG_NATIVE_WINDOWS
76L_CFLAGS += -DCONFIG_NATIVE_WINDOWS
77LIBS += -lws2_32
78endif
79
80OBJS = main.c
81OBJS += config_file.c
82
83OBJS += src/ap/hostapd.c
84OBJS += src/ap/wpa_auth_glue.c
85OBJS += src/ap/drv_callbacks.c
86OBJS += src/ap/ap_drv_ops.c
87OBJS += src/ap/utils.c
88OBJS += src/ap/authsrv.c
89OBJS += src/ap/ieee802_1x.c
90OBJS += src/ap/ap_config.c
Dmitry Shmidtd5e49232012-12-03 15:08:10 -080091OBJS += src/ap/eap_user_db.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070092OBJS += src/ap/ieee802_11_auth.c
93OBJS += src/ap/sta_info.c
94OBJS += src/ap/wpa_auth.c
95OBJS += src/ap/tkip_countermeasures.c
96OBJS += src/ap/ap_mlme.c
97OBJS += src/ap/wpa_auth_ie.c
98OBJS += src/ap/preauth_auth.c
99OBJS += src/ap/pmksa_cache_auth.c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800100OBJS += src/ap/ieee802_11_shared.c
101OBJS += src/ap/beacon.c
Dmitry Shmidtfb45fd52015-01-05 13:08:17 -0800102OBJS += src/ap/bss_load.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700103OBJS_d =
104OBJS_p =
105LIBS =
106LIBS_c =
107HOBJS =
108LIBS_h =
109
110NEED_RC4=y
111NEED_AES=y
112NEED_MD5=y
113NEED_SHA1=y
114
115OBJS += src/drivers/drivers.c
116L_CFLAGS += -DHOSTAPD
117
118ifdef CONFIG_WPA_TRACE
119L_CFLAGS += -DWPA_TRACE
120OBJS += src/utils/trace.c
121HOBJS += src/utils/trace.c
122LDFLAGS += -rdynamic
123L_CFLAGS += -funwind-tables
124ifdef CONFIG_WPA_TRACE_BFD
125L_CFLAGS += -DWPA_TRACE_BFD
126LIBS += -lbfd
127LIBS_c += -lbfd
128LIBS_h += -lbfd
129endif
130endif
131
132OBJS += src/utils/eloop.c
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800133
134ifdef CONFIG_ELOOP_POLL
135L_CFLAGS += -DCONFIG_ELOOP_POLL
136endif
137
138ifdef CONFIG_ELOOP_EPOLL
139L_CFLAGS += -DCONFIG_ELOOP_EPOLL
140endif
141
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700142OBJS += src/utils/common.c
143OBJS += src/utils/wpa_debug.c
144OBJS += src/utils/wpabuf.c
145OBJS += src/utils/os_$(CONFIG_OS).c
146OBJS += src/utils/ip_addr.c
147
148OBJS += src/common/ieee802_11_common.c
149OBJS += src/common/wpa_common.c
Dmitry Shmidt746bde52015-01-12 13:01:47 -0800150OBJS += src/common/hw_features_common.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700151
152OBJS += src/eapol_auth/eapol_auth_sm.c
153
154
155ifndef CONFIG_NO_DUMP_STATE
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800156# define HOSTAPD_DUMP_STATE to include support for dumping internal state
157# through control interface commands (undefine it, if you want to save in
158# binary size)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700159L_CFLAGS += -DHOSTAPD_DUMP_STATE
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700160OBJS += src/eapol_auth/eapol_auth_dump.c
161endif
162
163ifdef CONFIG_NO_RADIUS
164L_CFLAGS += -DCONFIG_NO_RADIUS
165CONFIG_NO_ACCOUNTING=y
166else
167OBJS += src/radius/radius.c
168OBJS += src/radius/radius_client.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700169OBJS += src/radius/radius_das.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700170endif
171
172ifdef CONFIG_NO_ACCOUNTING
173L_CFLAGS += -DCONFIG_NO_ACCOUNTING
174else
175OBJS += src/ap/accounting.c
176endif
177
178ifdef CONFIG_NO_VLAN
179L_CFLAGS += -DCONFIG_NO_VLAN
180else
181OBJS += src/ap/vlan_init.c
Dmitry Shmidte4663042016-04-04 10:07:49 -0700182OBJS += src/ap/vlan_ifconfig.c
Dmitry Shmidt57c2d392016-02-23 13:40:19 -0800183OBJS += src/ap/vlan.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700184ifdef CONFIG_FULL_DYNAMIC_VLAN
Dmitry Shmidte4663042016-04-04 10:07:49 -0700185# Define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
186# and VLAN interfaces for the VLAN feature.
187L_CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
188OBJS += src/ap/vlan_full.c
189ifdef CONFIG_VLAN_NETLINK
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700190OBJS += src/ap/vlan_util.c
Dmitry Shmidte4663042016-04-04 10:07:49 -0700191else
192OBJS += src/ap/vlan_ioctl.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700193endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700194endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700195endif
196
197ifdef CONFIG_NO_CTRL_IFACE
198L_CFLAGS += -DCONFIG_NO_CTRL_IFACE
199else
Dmitry Shmidt31a29cc2016-03-09 15:58:17 -0800200OBJS += src/common/ctrl_iface_common.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700201OBJS += ctrl_iface.c
202OBJS += src/ap/ctrl_iface_ap.c
203endif
204
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700205L_CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX
206
207ifdef CONFIG_IAPP
208L_CFLAGS += -DCONFIG_IAPP
209OBJS += src/ap/iapp.c
210endif
211
212ifdef CONFIG_RSN_PREAUTH
213L_CFLAGS += -DCONFIG_RSN_PREAUTH
214CONFIG_L2_PACKET=y
215endif
216
217ifdef CONFIG_PEERKEY
218L_CFLAGS += -DCONFIG_PEERKEY
219OBJS += src/ap/peerkey_auth.c
220endif
221
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800222ifdef CONFIG_HS20
223NEED_AES_OMAC1=y
Dmitry Shmidtfb45fd52015-01-05 13:08:17 -0800224CONFIG_PROXYARP=y
225endif
226
227ifdef CONFIG_PROXYARP
228CONFIG_L2_PACKET=y
229endif
230
231ifdef CONFIG_SUITEB
232L_CFLAGS += -DCONFIG_SUITEB
233NEED_SHA256=y
234NEED_AES_OMAC1=y
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800235endif
236
Dmitry Shmidt40b07202015-01-27 13:40:23 -0800237ifdef CONFIG_SUITEB192
238L_CFLAGS += -DCONFIG_SUITEB192
239NEED_SHA384=y
240endif
241
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700242ifdef CONFIG_IEEE80211W
243L_CFLAGS += -DCONFIG_IEEE80211W
244NEED_SHA256=y
245NEED_AES_OMAC1=y
246endif
247
248ifdef CONFIG_IEEE80211R
249L_CFLAGS += -DCONFIG_IEEE80211R
250OBJS += src/ap/wpa_auth_ft.c
251NEED_SHA256=y
252NEED_AES_OMAC1=y
253NEED_AES_UNWRAP=y
254endif
255
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800256ifdef CONFIG_SAE
257L_CFLAGS += -DCONFIG_SAE
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800258OBJS += src/common/sae.c
259NEED_ECC=y
260NEED_DH_GROUPS=y
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800261endif
262
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800263ifdef CONFIG_WNM
264L_CFLAGS += -DCONFIG_WNM
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700265OBJS += src/ap/wnm_ap.c
266endif
267
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700268ifdef CONFIG_IEEE80211N
269L_CFLAGS += -DCONFIG_IEEE80211N
270endif
271
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700272ifdef CONFIG_IEEE80211AC
273L_CFLAGS += -DCONFIG_IEEE80211AC
274endif
275
Dmitry Shmidt57c2d392016-02-23 13:40:19 -0800276ifdef CONFIG_MBO
277L_CFLAGS += -DCONFIG_MBO
278OBJS += src/ap/mbo_ap.c
279endif
280
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800281ifdef CONFIG_FST
282L_CFLAGS += -DCONFIG_FST
283OBJS += src/fst/fst.c
284OBJS += src/fst/fst_group.c
285OBJS += src/fst/fst_iface.c
286OBJS += src/fst/fst_session.c
287OBJS += src/fst/fst_ctrl_aux.c
288ifdef CONFIG_FST_TEST
289L_CFLAGS += -DCONFIG_FST_TEST
290endif
291ifndef CONFIG_NO_CTRL_IFACE
292OBJS += src/fst/fst_ctrl_iface.c
293endif
294endif
295
296
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700297include $(LOCAL_PATH)/src/drivers/drivers.mk
298
299OBJS += $(DRV_AP_OBJS)
300L_CFLAGS += $(DRV_AP_CFLAGS)
301LDFLAGS += $(DRV_AP_LDFLAGS)
302LIBS += $(DRV_AP_LIBS)
303
304ifdef CONFIG_L2_PACKET
305ifdef CONFIG_DNET_PCAP
306ifdef CONFIG_L2_FREEBSD
307LIBS += -lpcap
308OBJS += src/l2_packet/l2_packet_freebsd.c
309else
310LIBS += -ldnet -lpcap
311OBJS += src/l2_packet/l2_packet_pcap.c
312endif
313else
314OBJS += src/l2_packet/l2_packet_linux.c
315endif
316else
317OBJS += src/l2_packet/l2_packet_none.c
318endif
319
320
321ifdef CONFIG_EAP_MD5
322L_CFLAGS += -DEAP_SERVER_MD5
323OBJS += src/eap_server/eap_server_md5.c
324CHAP=y
325endif
326
327ifdef CONFIG_EAP_TLS
328L_CFLAGS += -DEAP_SERVER_TLS
329OBJS += src/eap_server/eap_server_tls.c
330TLS_FUNCS=y
331endif
332
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700333ifdef CONFIG_EAP_UNAUTH_TLS
334L_CFLAGS += -DEAP_SERVER_UNAUTH_TLS
335ifndef CONFIG_EAP_TLS
336OBJS += src/eap_server/eap_server_tls.c
337TLS_FUNCS=y
338endif
339endif
340
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700341ifdef CONFIG_EAP_PEAP
342L_CFLAGS += -DEAP_SERVER_PEAP
343OBJS += src/eap_server/eap_server_peap.c
344OBJS += src/eap_common/eap_peap_common.c
345TLS_FUNCS=y
346CONFIG_EAP_MSCHAPV2=y
347endif
348
349ifdef CONFIG_EAP_TTLS
350L_CFLAGS += -DEAP_SERVER_TTLS
351OBJS += src/eap_server/eap_server_ttls.c
352TLS_FUNCS=y
353CHAP=y
354endif
355
356ifdef CONFIG_EAP_MSCHAPV2
357L_CFLAGS += -DEAP_SERVER_MSCHAPV2
358OBJS += src/eap_server/eap_server_mschapv2.c
359MS_FUNCS=y
360endif
361
362ifdef CONFIG_EAP_GTC
363L_CFLAGS += -DEAP_SERVER_GTC
364OBJS += src/eap_server/eap_server_gtc.c
365endif
366
367ifdef CONFIG_EAP_SIM
368L_CFLAGS += -DEAP_SERVER_SIM
369OBJS += src/eap_server/eap_server_sim.c
370CONFIG_EAP_SIM_COMMON=y
371NEED_AES_CBC=y
372endif
373
374ifdef CONFIG_EAP_AKA
375L_CFLAGS += -DEAP_SERVER_AKA
376OBJS += src/eap_server/eap_server_aka.c
377CONFIG_EAP_SIM_COMMON=y
378NEED_SHA256=y
379NEED_AES_CBC=y
380endif
381
382ifdef CONFIG_EAP_AKA_PRIME
383L_CFLAGS += -DEAP_SERVER_AKA_PRIME
384endif
385
386ifdef CONFIG_EAP_SIM_COMMON
387OBJS += src/eap_common/eap_sim_common.c
388# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
389# replaced with another file implementating the interface specified in
390# eap_sim_db.h.
391OBJS += src/eap_server/eap_sim_db.c
392NEED_FIPS186_2_PRF=y
393endif
394
395ifdef CONFIG_EAP_PAX
396L_CFLAGS += -DEAP_SERVER_PAX
397OBJS += src/eap_server/eap_server_pax.c src/eap_common/eap_pax_common.c
398endif
399
400ifdef CONFIG_EAP_PSK
401L_CFLAGS += -DEAP_SERVER_PSK
402OBJS += src/eap_server/eap_server_psk.c src/eap_common/eap_psk_common.c
403NEED_AES_OMAC1=y
404NEED_AES_ENCBLOCK=y
405NEED_AES_EAX=y
406endif
407
408ifdef CONFIG_EAP_SAKE
409L_CFLAGS += -DEAP_SERVER_SAKE
410OBJS += src/eap_server/eap_server_sake.c src/eap_common/eap_sake_common.c
411endif
412
413ifdef CONFIG_EAP_GPSK
414L_CFLAGS += -DEAP_SERVER_GPSK
415OBJS += src/eap_server/eap_server_gpsk.c src/eap_common/eap_gpsk_common.c
416ifdef CONFIG_EAP_GPSK_SHA256
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800417L_CFLAGS += -DEAP_GPSK_SHA256
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700418endif
419NEED_SHA256=y
420NEED_AES_OMAC1=y
421endif
422
423ifdef CONFIG_EAP_PWD
424L_CFLAGS += -DEAP_SERVER_PWD
425OBJS += src/eap_server/eap_server_pwd.c src/eap_common/eap_pwd_common.c
426NEED_SHA256=y
427endif
428
Dmitry Shmidt34af3062013-07-11 10:46:32 -0700429ifdef CONFIG_EAP_EKE
430L_CFLAGS += -DEAP_SERVER_EKE
431OBJS += src/eap_server/eap_server_eke.c src/eap_common/eap_eke_common.c
432NEED_DH_GROUPS=y
433NEED_DH_GROUPS_ALL=y
434endif
435
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700436ifdef CONFIG_EAP_VENDOR_TEST
437L_CFLAGS += -DEAP_SERVER_VENDOR_TEST
438OBJS += src/eap_server/eap_server_vendor_test.c
439endif
440
441ifdef CONFIG_EAP_FAST
442L_CFLAGS += -DEAP_SERVER_FAST
443OBJS += src/eap_server/eap_server_fast.c
444OBJS += src/eap_common/eap_fast_common.c
445TLS_FUNCS=y
446NEED_T_PRF=y
447NEED_AES_UNWRAP=y
448endif
449
450ifdef CONFIG_WPS
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700451L_CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
452OBJS += src/utils/uuid.c
453OBJS += src/ap/wps_hostapd.c
454OBJS += src/eap_server/eap_server_wsc.c src/eap_common/eap_wsc_common.c
455OBJS += src/wps/wps.c
456OBJS += src/wps/wps_common.c
457OBJS += src/wps/wps_attr_parse.c
458OBJS += src/wps/wps_attr_build.c
459OBJS += src/wps/wps_attr_process.c
460OBJS += src/wps/wps_dev_attr.c
461OBJS += src/wps/wps_enrollee.c
462OBJS += src/wps/wps_registrar.c
463NEED_DH_GROUPS=y
464NEED_SHA256=y
465NEED_BASE64=y
466NEED_AES_CBC=y
467NEED_MODEXP=y
468CONFIG_EAP=y
469
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700470ifdef CONFIG_WPS_NFC
471L_CFLAGS += -DCONFIG_WPS_NFC
472OBJS += src/wps/ndef.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700473NEED_WPS_OOB=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700474endif
475
476ifdef NEED_WPS_OOB
477L_CFLAGS += -DCONFIG_WPS_OOB
478endif
479
480ifdef CONFIG_WPS_UPNP
481L_CFLAGS += -DCONFIG_WPS_UPNP
482OBJS += src/wps/wps_upnp.c
483OBJS += src/wps/wps_upnp_ssdp.c
484OBJS += src/wps/wps_upnp_web.c
485OBJS += src/wps/wps_upnp_event.c
486OBJS += src/wps/wps_upnp_ap.c
487OBJS += src/wps/upnp_xml.c
488OBJS += src/wps/httpread.c
489OBJS += src/wps/http_client.c
490OBJS += src/wps/http_server.c
491endif
492
493ifdef CONFIG_WPS_STRICT
494L_CFLAGS += -DCONFIG_WPS_STRICT
495OBJS += src/wps/wps_validate.c
496endif
497
498ifdef CONFIG_WPS_TESTING
499L_CFLAGS += -DCONFIG_WPS_TESTING
500endif
501
502endif
503
504ifdef CONFIG_EAP_IKEV2
505L_CFLAGS += -DEAP_SERVER_IKEV2
506OBJS += src/eap_server/eap_server_ikev2.c src/eap_server/ikev2.c
507OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
508NEED_DH_GROUPS=y
509NEED_DH_GROUPS_ALL=y
510NEED_MODEXP=y
511NEED_CIPHER=y
512endif
513
514ifdef CONFIG_EAP_TNC
515L_CFLAGS += -DEAP_SERVER_TNC
516OBJS += src/eap_server/eap_server_tnc.c
517OBJS += src/eap_server/tncs.c
518NEED_BASE64=y
519ifndef CONFIG_DRIVER_BSD
520LIBS += -ldl
521endif
522endif
523
524# Basic EAP functionality is needed for EAPOL
525OBJS += eap_register.c
526OBJS += src/eap_server/eap_server.c
527OBJS += src/eap_common/eap_common.c
528OBJS += src/eap_server/eap_server_methods.c
529OBJS += src/eap_server/eap_server_identity.c
530L_CFLAGS += -DEAP_SERVER_IDENTITY
531
532ifdef CONFIG_EAP
533L_CFLAGS += -DEAP_SERVER
534endif
535
536ifdef CONFIG_PKCS12
537L_CFLAGS += -DPKCS12_FUNCS
538endif
539
540ifdef MS_FUNCS
541OBJS += src/crypto/ms_funcs.c
542NEED_DES=y
543NEED_MD4=y
544endif
545
546ifdef CHAP
547OBJS += src/eap_common/chap.c
548endif
549
550ifdef TLS_FUNCS
551NEED_DES=y
552# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
553L_CFLAGS += -DEAP_TLS_FUNCS
554OBJS += src/eap_server/eap_server_tls_common.c
555NEED_TLS_PRF=y
556endif
557
558ifndef CONFIG_TLS
559CONFIG_TLS=openssl
560endif
561
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700562ifdef CONFIG_TLSV11
563L_CFLAGS += -DCONFIG_TLSV11
564endif
565
566ifdef CONFIG_TLSV12
567L_CFLAGS += -DCONFIG_TLSV12
568NEED_SHA256=y
569endif
570
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700571ifeq ($(CONFIG_TLS), openssl)
572ifdef TLS_FUNCS
573OBJS += src/crypto/tls_openssl.c
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800574OBJS += src/crypto/tls_openssl_ocsp.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700575LIBS += -lssl
576endif
577OBJS += src/crypto/crypto_openssl.c
578HOBJS += src/crypto/crypto_openssl.c
579ifdef NEED_FIPS186_2_PRF
580OBJS += src/crypto/fips_prf_openssl.c
581endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800582NEED_SHA256=y
583NEED_TLS_PRF_SHA256=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700584LIBS += -lcrypto
585LIBS_h += -lcrypto
586endif
587
588ifeq ($(CONFIG_TLS), gnutls)
589ifdef TLS_FUNCS
590OBJS += src/crypto/tls_gnutls.c
591LIBS += -lgnutls -lgpg-error
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700592endif
593OBJS += src/crypto/crypto_gnutls.c
594HOBJS += src/crypto/crypto_gnutls.c
595ifdef NEED_FIPS186_2_PRF
Dmitry Shmidt98660862014-03-11 17:26:21 -0700596OBJS += src/crypto/fips_prf_internal.c
597OBJS += src/crypto/sha1-internal.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700598endif
599LIBS += -lgcrypt
600LIBS_h += -lgcrypt
601CONFIG_INTERNAL_SHA256=y
602CONFIG_INTERNAL_RC4=y
603CONFIG_INTERNAL_DH_GROUP5=y
604endif
605
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700606ifeq ($(CONFIG_TLS), internal)
607ifndef CONFIG_CRYPTO
608CONFIG_CRYPTO=internal
609endif
610ifdef TLS_FUNCS
611OBJS += src/crypto/crypto_internal-rsa.c
612OBJS += src/crypto/tls_internal.c
613OBJS += src/tls/tlsv1_common.c
614OBJS += src/tls/tlsv1_record.c
615OBJS += src/tls/tlsv1_cred.c
616OBJS += src/tls/tlsv1_server.c
617OBJS += src/tls/tlsv1_server_write.c
618OBJS += src/tls/tlsv1_server_read.c
619OBJS += src/tls/asn1.c
620OBJS += src/tls/rsa.c
621OBJS += src/tls/x509v3.c
622OBJS += src/tls/pkcs1.c
623OBJS += src/tls/pkcs5.c
624OBJS += src/tls/pkcs8.c
625NEED_SHA256=y
626NEED_BASE64=y
627NEED_TLS_PRF=y
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700628ifdef CONFIG_TLSV12
629NEED_TLS_PRF_SHA256=y
630endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700631NEED_MODEXP=y
632NEED_CIPHER=y
633L_CFLAGS += -DCONFIG_TLS_INTERNAL
634L_CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
635endif
636ifdef NEED_CIPHER
637NEED_DES=y
638OBJS += src/crypto/crypto_internal-cipher.c
639endif
640ifdef NEED_MODEXP
641OBJS += src/crypto/crypto_internal-modexp.c
642OBJS += src/tls/bignum.c
643endif
644ifeq ($(CONFIG_CRYPTO), libtomcrypt)
645OBJS += src/crypto/crypto_libtomcrypt.c
646LIBS += -ltomcrypt -ltfm
647LIBS_h += -ltomcrypt -ltfm
648CONFIG_INTERNAL_SHA256=y
649CONFIG_INTERNAL_RC4=y
650CONFIG_INTERNAL_DH_GROUP5=y
651endif
652ifeq ($(CONFIG_CRYPTO), internal)
653OBJS += src/crypto/crypto_internal.c
654NEED_AES_DEC=y
655L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL
656ifdef CONFIG_INTERNAL_LIBTOMMATH
657L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
658ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
659L_CFLAGS += -DLTM_FAST
660endif
661else
662LIBS += -ltommath
663LIBS_h += -ltommath
664endif
665CONFIG_INTERNAL_AES=y
666CONFIG_INTERNAL_DES=y
667CONFIG_INTERNAL_SHA1=y
668CONFIG_INTERNAL_MD4=y
669CONFIG_INTERNAL_MD5=y
670CONFIG_INTERNAL_SHA256=y
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800671CONFIG_INTERNAL_SHA384=y
672CONFIG_INTERNAL_SHA512=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700673CONFIG_INTERNAL_RC4=y
674CONFIG_INTERNAL_DH_GROUP5=y
675endif
676ifeq ($(CONFIG_CRYPTO), cryptoapi)
677OBJS += src/crypto/crypto_cryptoapi.c
678OBJS_p += src/crypto/crypto_cryptoapi.c
679L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
680CONFIG_INTERNAL_SHA256=y
681CONFIG_INTERNAL_RC4=y
682endif
683endif
684
685ifeq ($(CONFIG_TLS), none)
686ifdef TLS_FUNCS
687OBJS += src/crypto/tls_none.c
688L_CFLAGS += -DEAP_TLS_NONE
689CONFIG_INTERNAL_AES=y
690CONFIG_INTERNAL_SHA1=y
691CONFIG_INTERNAL_MD5=y
692endif
693OBJS += src/crypto/crypto_none.c
694OBJS_p += src/crypto/crypto_none.c
695CONFIG_INTERNAL_SHA256=y
696CONFIG_INTERNAL_RC4=y
697endif
698
699ifndef TLS_FUNCS
700OBJS += src/crypto/tls_none.c
701ifeq ($(CONFIG_TLS), internal)
702CONFIG_INTERNAL_AES=y
703CONFIG_INTERNAL_SHA1=y
704CONFIG_INTERNAL_MD5=y
705CONFIG_INTERNAL_RC4=y
706endif
707endif
708
709AESOBJS = # none so far
710ifdef CONFIG_INTERNAL_AES
711AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-enc.c
712endif
713
Dmitry Shmidtaff761d2015-02-06 10:50:36 -0800714ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700715AESOBJS += src/crypto/aes-wrap.c
Dmitry Shmidtaff761d2015-02-06 10:50:36 -0800716endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700717ifdef NEED_AES_EAX
718AESOBJS += src/crypto/aes-eax.c
719NEED_AES_CTR=y
720endif
721ifdef NEED_AES_CTR
722AESOBJS += src/crypto/aes-ctr.c
723endif
724ifdef NEED_AES_ENCBLOCK
725AESOBJS += src/crypto/aes-encblock.c
726endif
727ifdef NEED_AES_OMAC1
728AESOBJS += src/crypto/aes-omac1.c
729endif
730ifdef NEED_AES_UNWRAP
Dmitry Shmidtaff761d2015-02-06 10:50:36 -0800731ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700732NEED_AES_DEC=y
733AESOBJS += src/crypto/aes-unwrap.c
734endif
Dmitry Shmidtaff761d2015-02-06 10:50:36 -0800735endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700736ifdef NEED_AES_CBC
737NEED_AES_DEC=y
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700738ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700739AESOBJS += src/crypto/aes-cbc.c
740endif
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700741endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700742ifdef NEED_AES_DEC
743ifdef CONFIG_INTERNAL_AES
744AESOBJS += src/crypto/aes-internal-dec.c
745endif
746endif
747ifdef NEED_AES
748OBJS += $(AESOBJS)
749endif
750
751SHA1OBJS =
752ifdef NEED_SHA1
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700753ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700754SHA1OBJS += src/crypto/sha1.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700755endif
756SHA1OBJS += src/crypto/sha1-prf.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700757ifdef CONFIG_INTERNAL_SHA1
758SHA1OBJS += src/crypto/sha1-internal.c
759ifdef NEED_FIPS186_2_PRF
760SHA1OBJS += src/crypto/fips_prf_internal.c
761endif
762endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700763ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700764SHA1OBJS += src/crypto/sha1-pbkdf2.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700765endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700766ifdef NEED_T_PRF
767SHA1OBJS += src/crypto/sha1-tprf.c
768endif
769ifdef NEED_TLS_PRF
770SHA1OBJS += src/crypto/sha1-tlsprf.c
771endif
772endif
773
774ifdef NEED_SHA1
775OBJS += $(SHA1OBJS)
776endif
777
Dmitry Shmidtaff761d2015-02-06 10:50:36 -0800778ifneq ($(CONFIG_TLS), openssl)
779OBJS += src/crypto/md5.c
780endif
781
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700782ifdef NEED_MD5
783ifdef CONFIG_INTERNAL_MD5
784OBJS += src/crypto/md5-internal.c
785HOBJS += src/crypto/md5-internal.c
786endif
787endif
788
789ifdef NEED_MD4
790ifdef CONFIG_INTERNAL_MD4
791OBJS += src/crypto/md4-internal.c
792endif
793endif
794
795ifdef NEED_DES
796ifdef CONFIG_INTERNAL_DES
797OBJS += src/crypto/des-internal.c
798endif
799endif
800
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800801ifdef CONFIG_NO_RC4
802L_CFLAGS += -DCONFIG_NO_RC4
803endif
804
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700805ifdef NEED_RC4
806ifdef CONFIG_INTERNAL_RC4
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800807ifndef CONFIG_NO_RC4
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700808OBJS += src/crypto/rc4.c
809endif
810endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800811endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700812
813ifdef NEED_SHA256
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700814L_CFLAGS += -DCONFIG_SHA256
815ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700816OBJS += src/crypto/sha256.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700817endif
818OBJS += src/crypto/sha256-prf.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700819ifdef CONFIG_INTERNAL_SHA256
820OBJS += src/crypto/sha256-internal.c
821endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700822ifdef NEED_TLS_PRF_SHA256
823OBJS += src/crypto/sha256-tlsprf.c
824endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700825endif
Dmitry Shmidt40b07202015-01-27 13:40:23 -0800826ifdef NEED_SHA384
827L_CFLAGS += -DCONFIG_SHA384
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800828OBJS += src/crypto/sha384-prf.c
Dmitry Shmidt40b07202015-01-27 13:40:23 -0800829endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700830
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800831ifdef CONFIG_INTERNAL_SHA384
832L_CFLAGS += -DCONFIG_INTERNAL_SHA384
833OBJS += src/crypto/sha384-internal.c
834endif
835
836ifdef CONFIG_INTERNAL_SHA512
837L_CFLAGS += -DCONFIG_INTERNAL_SHA512
838OBJS += src/crypto/sha512-internal.c
839endif
840
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700841ifdef NEED_DH_GROUPS
842OBJS += src/crypto/dh_groups.c
843endif
844ifdef NEED_DH_GROUPS_ALL
845L_CFLAGS += -DALL_DH_GROUPS
846endif
847ifdef CONFIG_INTERNAL_DH_GROUP5
848ifdef NEED_DH_GROUPS
849OBJS += src/crypto/dh_group5.c
850endif
851endif
852
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800853ifdef NEED_ECC
854L_CFLAGS += -DCONFIG_ECC
855endif
856
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700857ifdef CONFIG_NO_RANDOM_POOL
858L_CFLAGS += -DCONFIG_NO_RANDOM_POOL
859else
860OBJS += src/crypto/random.c
861HOBJS += src/crypto/random.c
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700862HOBJS += src/utils/eloop.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700863HOBJS += $(SHA1OBJS)
Dmitry Shmidtdda10c22015-03-24 16:05:01 -0700864ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700865HOBJS += src/crypto/md5.c
866endif
Dmitry Shmidtdda10c22015-03-24 16:05:01 -0700867endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700868
869ifdef CONFIG_RADIUS_SERVER
870L_CFLAGS += -DRADIUS_SERVER
871OBJS += src/radius/radius_server.c
872endif
873
874ifdef CONFIG_IPV6
875L_CFLAGS += -DCONFIG_IPV6
876endif
877
878ifdef CONFIG_DRIVER_RADIUS_ACL
879L_CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
880endif
881
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700882ifdef NEED_BASE64
883OBJS += src/utils/base64.c
884endif
885
886ifdef NEED_AP_MLME
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700887OBJS += src/ap/wmm.c
888OBJS += src/ap/ap_list.c
889OBJS += src/ap/ieee802_11.c
890OBJS += src/ap/hw_features.c
Dmitry Shmidt051af732013-10-22 13:52:46 -0700891OBJS += src/ap/dfs.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700892L_CFLAGS += -DNEED_AP_MLME
893endif
894ifdef CONFIG_IEEE80211N
895OBJS += src/ap/ieee802_11_ht.c
896endif
897
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700898ifdef CONFIG_IEEE80211AC
899OBJS += src/ap/ieee802_11_vht.c
900endif
901
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700902ifdef CONFIG_P2P_MANAGER
903L_CFLAGS += -DCONFIG_P2P_MANAGER
904OBJS += src/ap/p2p_hostapd.c
905endif
906
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700907ifdef CONFIG_HS20
908L_CFLAGS += -DCONFIG_HS20
909OBJS += src/ap/hs20.c
910CONFIG_INTERWORKING=y
911endif
912
913ifdef CONFIG_INTERWORKING
914L_CFLAGS += -DCONFIG_INTERWORKING
915OBJS += src/common/gas.c
916OBJS += src/ap/gas_serv.c
917endif
918
Dmitry Shmidtfb45fd52015-01-05 13:08:17 -0800919ifdef CONFIG_PROXYARP
920L_CFLAGS += -DCONFIG_PROXYARP
921OBJS += src/ap/x_snoop.c
922OBJS += src/ap/dhcp_snoop.c
923ifdef CONFIG_IPV6
924OBJS += src/ap/ndisc_snoop.c
925endif
926endif
927
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800928OBJS += src/drivers/driver_common.c
929
Dmitry Shmidt54605472013-11-08 11:10:19 -0800930ifdef CONFIG_ACS
931L_CFLAGS += -DCONFIG_ACS
932OBJS += src/ap/acs.c
933LIBS += -lm
934endif
935
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700936ifdef CONFIG_NO_STDOUT_DEBUG
937L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
938endif
939
Dmitry Shmidt54605472013-11-08 11:10:19 -0800940ifdef CONFIG_DEBUG_LINUX_TRACING
941L_CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
942endif
943
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700944ifdef CONFIG_DEBUG_FILE
945L_CFLAGS += -DCONFIG_DEBUG_FILE
946endif
947
948ifdef CONFIG_ANDROID_LOG
949L_CFLAGS += -DCONFIG_ANDROID_LOG
950endif
951
952OBJS_c = hostapd_cli.c src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800953OBJS_c += src/utils/eloop.c
Dmitry Shmidta3dc3092015-06-23 11:21:28 -0700954OBJS_c += src/utils/common.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700955ifdef CONFIG_WPA_TRACE
956OBJS_c += src/utils/trace.c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800957endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700958OBJS_c += src/utils/wpa_debug.c
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800959ifdef CONFIG_WPA_CLI_EDIT
960OBJS_c += src/utils/edit.c
961else
962OBJS_c += src/utils/edit_simple.c
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700963endif
964
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700965########################
966
967include $(CLEAR_VARS)
968LOCAL_MODULE := hostapd_cli
969LOCAL_MODULE_TAGS := debug
Ying Wange93dd112013-04-09 21:53:29 -0700970LOCAL_SHARED_LIBRARIES := libc libcutils liblog
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700971LOCAL_CFLAGS := $(L_CFLAGS)
972LOCAL_SRC_FILES := $(OBJS_c)
973LOCAL_C_INCLUDES := $(INCLUDES)
974include $(BUILD_EXECUTABLE)
975
976########################
977include $(CLEAR_VARS)
978LOCAL_MODULE := hostapd
979LOCAL_MODULE_TAGS := optional
980ifdef CONFIG_DRIVER_CUSTOM
981LOCAL_STATIC_LIBRARIES := libCustomWifi
982endif
983ifneq ($(BOARD_HOSTAPD_PRIVATE_LIB),)
984LOCAL_STATIC_LIBRARIES += $(BOARD_HOSTAPD_PRIVATE_LIB)
985endif
Ying Wange93dd112013-04-09 21:53:29 -0700986LOCAL_SHARED_LIBRARIES := libc libcutils liblog libcrypto libssl
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700987ifdef CONFIG_DRIVER_NL80211
Dmitry Shmidtcd446452014-02-18 16:03:35 -0800988ifneq ($(wildcard external/libnl),)
Dmitry Shmidtd620e6d2014-02-18 11:07:59 -0800989LOCAL_SHARED_LIBRARIES += libnl
Dmitry Shmidtcd446452014-02-18 16:03:35 -0800990else
991LOCAL_STATIC_LIBRARIES += libnl_2
992endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700993endif
994LOCAL_CFLAGS := $(L_CFLAGS)
995LOCAL_SRC_FILES := $(OBJS)
996LOCAL_C_INCLUDES := $(INCLUDES)
997include $(BUILD_EXECUTABLE)
998
999endif # ifeq ($(WPA_BUILD_HOSTAPD),true)