blob: 6e263c5a4afcb110e244f3209721425751bb4ce5 [file] [log] [blame]
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001ifndef CC
2CC=gcc
3endif
4
5ifndef CFLAGS
6CFLAGS = -MMD -O2 -Wall -g
7endif
8
Dmitry Shmidt014a3ff2015-12-28 13:27:49 -08009ifdef LIBS
10# If LIBS is set with some global build system defaults, clone those for
11# LIBS_c, LIBS_h, and LIBS_n to cover hostapd_cli, hlr_auc_gw, and
12# nt_password_hash as well.
13ifndef LIBS_c
14LIBS_c := $(LIBS)
15endif
16ifndef LIBS_h
17LIBS_h := $(LIBS)
18endif
19ifndef LIBS_n
20LIBS_n := $(LIBS)
21endif
22endif
23
Dmitry Shmidt216983b2015-02-06 10:50:36 -080024CFLAGS += $(EXTRA_CFLAGS)
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -080025CFLAGS += -I$(abspath ../src)
26CFLAGS += -I$(abspath ../src/utils)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070027
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -080028export BINDIR ?= /usr/local/bin/
29
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070030-include .config
31
Dmitry Shmidtd80a4012015-11-05 16:35:40 -080032ifndef CONFIG_NO_GITVER
33# Add VERSION_STR postfix for builds from a git repository
34ifeq ($(wildcard ../.git),../.git)
35GITVER := $(shell git describe --dirty=+)
36ifneq ($(GITVER),)
37CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\"
38endif
39endif
40endif
41
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -080042ifdef CONFIG_TESTING_OPTIONS
43CFLAGS += -DCONFIG_TESTING_OPTIONS
44CONFIG_WPS_TESTING=y
45endif
46
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070047ifndef CONFIG_OS
48ifdef CONFIG_NATIVE_WINDOWS
49CONFIG_OS=win32
50else
51CONFIG_OS=unix
52endif
53endif
54
55ifeq ($(CONFIG_OS), internal)
56CFLAGS += -DOS_NO_C_LIB_DEFINES
57endif
58
59ifdef CONFIG_NATIVE_WINDOWS
60CFLAGS += -DCONFIG_NATIVE_WINDOWS
61LIBS += -lws2_32
62endif
63
64OBJS += main.o
65OBJS += config_file.o
66
67OBJS += ../src/ap/hostapd.o
68OBJS += ../src/ap/wpa_auth_glue.o
69OBJS += ../src/ap/drv_callbacks.o
70OBJS += ../src/ap/ap_drv_ops.o
71OBJS += ../src/ap/utils.o
72OBJS += ../src/ap/authsrv.o
73OBJS += ../src/ap/ieee802_1x.o
74OBJS += ../src/ap/ap_config.o
Dmitry Shmidtd5e49232012-12-03 15:08:10 -080075OBJS += ../src/ap/eap_user_db.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070076OBJS += ../src/ap/ieee802_11_auth.o
77OBJS += ../src/ap/sta_info.o
78OBJS += ../src/ap/wpa_auth.o
79OBJS += ../src/ap/tkip_countermeasures.o
80OBJS += ../src/ap/ap_mlme.o
81OBJS += ../src/ap/wpa_auth_ie.o
82OBJS += ../src/ap/preauth_auth.o
83OBJS += ../src/ap/pmksa_cache_auth.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080084OBJS += ../src/ap/ieee802_11_shared.o
85OBJS += ../src/ap/beacon.o
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -080086OBJS += ../src/ap/bss_load.o
Dmitry Shmidt849734c2016-05-27 09:59:01 -070087OBJS += ../src/ap/neighbor_db.o
88OBJS += ../src/ap/rrm.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080089
Dmitry Shmidt7f2c7532016-08-15 09:48:12 -070090OBJS_c = hostapd_cli.o
91OBJS_c += ../src/common/wpa_ctrl.o
92OBJS_c += ../src/utils/os_$(CONFIG_OS).o
93OBJS_c += ../src/common/cli.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070094
95NEED_RC4=y
96NEED_AES=y
97NEED_MD5=y
98NEED_SHA1=y
99
100OBJS += ../src/drivers/drivers.o
101CFLAGS += -DHOSTAPD
102
Dmitry Shmidtaca489e2016-09-28 15:44:14 -0700103ifdef CONFIG_TAXONOMY
104CFLAGS += -DCONFIG_TAXONOMY
105OBJS += ../src/ap/taxonomy.o
106endif
107
Dmitry Shmidt7f93d6f2014-02-21 11:22:49 -0800108ifdef CONFIG_MODULE_TESTS
109CFLAGS += -DCONFIG_MODULE_TESTS
110OBJS += hapd_module_tests.o
111endif
112
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700113ifdef CONFIG_WPA_TRACE
114CFLAGS += -DWPA_TRACE
115OBJS += ../src/utils/trace.o
116HOBJS += ../src/utils/trace.o
117LDFLAGS += -rdynamic
118CFLAGS += -funwind-tables
119ifdef CONFIG_WPA_TRACE_BFD
Dmitry Shmidtec58b162014-02-19 12:44:18 -0800120CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD
Dmitry Shmidt13ca8d82014-02-20 10:18:40 -0800121LIBS += -lbfd -ldl -liberty -lz
122LIBS_c += -lbfd -ldl -liberty -lz
123LIBS_h += -lbfd -ldl -liberty -lz
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700124endif
125endif
126
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800127ifndef CONFIG_ELOOP
128CONFIG_ELOOP=eloop
129endif
130OBJS += ../src/utils/$(CONFIG_ELOOP).o
131OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
Dmitry Shmidtfa3fc4a2013-11-21 13:34:38 -0800132
133ifeq ($(CONFIG_ELOOP), eloop)
134# Using glibc < 2.17 requires -lrt for clock_gettime()
135LIBS += -lrt
136LIBS_c += -lrt
137LIBS_h += -lrt
Dmitry Shmidtbd14a572014-02-18 10:33:49 -0800138LIBS_n += -lrt
Dmitry Shmidtfa3fc4a2013-11-21 13:34:38 -0800139endif
140
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800141ifdef CONFIG_ELOOP_POLL
142CFLAGS += -DCONFIG_ELOOP_POLL
143endif
144
145ifdef CONFIG_ELOOP_EPOLL
146CFLAGS += -DCONFIG_ELOOP_EPOLL
147endif
148
Dmitry Shmidtb97e4282016-02-08 10:16:07 -0800149ifdef CONFIG_ELOOP_KQUEUE
150CFLAGS += -DCONFIG_ELOOP_KQUEUE
151endif
152
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700153OBJS += ../src/utils/common.o
Dmitry Shmidta3dc3092015-06-23 11:21:28 -0700154OBJS_c += ../src/utils/common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700155OBJS += ../src/utils/wpa_debug.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800156OBJS_c += ../src/utils/wpa_debug.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700157OBJS += ../src/utils/wpabuf.o
158OBJS += ../src/utils/os_$(CONFIG_OS).o
159OBJS += ../src/utils/ip_addr.o
160
161OBJS += ../src/common/ieee802_11_common.o
162OBJS += ../src/common/wpa_common.o
Dmitry Shmidtff787d52015-01-12 13:01:47 -0800163OBJS += ../src/common/hw_features_common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700164
165OBJS += ../src/eapol_auth/eapol_auth_sm.o
166
167
Dmitry Shmidt01904cf2013-12-05 11:08:35 -0800168ifdef CONFIG_CODE_COVERAGE
169CFLAGS += -O0 -fprofile-arcs -ftest-coverage
170LIBS += -lgcov
171LIBS_c += -lgcov
172LIBS_h += -lgcov
173LIBS_n += -lgcov
174endif
175
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700176ifndef CONFIG_NO_DUMP_STATE
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800177# define HOSTAPD_DUMP_STATE to include support for dumping internal state
178# through control interface commands (undefine it, if you want to save in
179# binary size)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700180CFLAGS += -DHOSTAPD_DUMP_STATE
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700181OBJS += ../src/eapol_auth/eapol_auth_dump.o
182endif
183
184ifdef CONFIG_NO_RADIUS
185CFLAGS += -DCONFIG_NO_RADIUS
186CONFIG_NO_ACCOUNTING=y
187else
188OBJS += ../src/radius/radius.o
189OBJS += ../src/radius/radius_client.o
Dmitry Shmidt04949592012-07-19 12:16:46 -0700190OBJS += ../src/radius/radius_das.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700191endif
192
193ifdef CONFIG_NO_ACCOUNTING
194CFLAGS += -DCONFIG_NO_ACCOUNTING
195else
196OBJS += ../src/ap/accounting.o
197endif
198
199ifdef CONFIG_NO_VLAN
200CFLAGS += -DCONFIG_NO_VLAN
201else
202OBJS += ../src/ap/vlan_init.o
Dmitry Shmidte4663042016-04-04 10:07:49 -0700203OBJS += ../src/ap/vlan_ifconfig.o
Dmitry Shmidt57c2d392016-02-23 13:40:19 -0800204OBJS += ../src/ap/vlan.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700205ifdef CONFIG_FULL_DYNAMIC_VLAN
Dmitry Shmidte4663042016-04-04 10:07:49 -0700206# Define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
207# and VLAN interfaces for the VLAN feature.
208CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
209OBJS += ../src/ap/vlan_full.o
210ifdef CONFIG_VLAN_NETLINK
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700211OBJS += ../src/ap/vlan_util.o
Dmitry Shmidte4663042016-04-04 10:07:49 -0700212else
213OBJS += ../src/ap/vlan_ioctl.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700214endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700215endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700216endif
217
218ifdef CONFIG_NO_CTRL_IFACE
219CFLAGS += -DCONFIG_NO_CTRL_IFACE
220else
Dmitry Shmidt31a29cc2016-03-09 15:58:17 -0800221ifeq ($(CONFIG_CTRL_IFACE), udp)
222CFLAGS += -DCONFIG_CTRL_IFACE_UDP
223else
224ifeq ($(CONFIG_CTRL_IFACE), udp6)
225CFLAGS += -DCONFIG_CTRL_IFACE_UDP
226CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
227else
228ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
229CFLAGS += -DCONFIG_CTRL_IFACE_UDP
230CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
231else
232ifeq ($(CONFIG_CTRL_IFACE), udp6-remote)
233CFLAGS += -DCONFIG_CTRL_IFACE_UDP
234CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
235CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
236else
237CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
238endif
239endif
240endif
241endif
242OBJS += ../src/common/ctrl_iface_common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700243OBJS += ctrl_iface.o
244OBJS += ../src/ap/ctrl_iface_ap.o
245endif
246
Dmitry Shmidt31a29cc2016-03-09 15:58:17 -0800247ifndef CONFIG_NO_CTRL_IFACE
248CFLAGS += -DCONFIG_CTRL_IFACE
249endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700250
251ifdef CONFIG_IAPP
252CFLAGS += -DCONFIG_IAPP
253OBJS += ../src/ap/iapp.o
254endif
255
256ifdef CONFIG_RSN_PREAUTH
257CFLAGS += -DCONFIG_RSN_PREAUTH
258CONFIG_L2_PACKET=y
259endif
260
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800261ifdef CONFIG_HS20
262NEED_AES_OMAC1=y
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800263CONFIG_PROXYARP=y
264endif
265
266ifdef CONFIG_PROXYARP
267CONFIG_L2_PACKET=y
268endif
269
270ifdef CONFIG_SUITEB
271CFLAGS += -DCONFIG_SUITEB
272NEED_SHA256=y
273NEED_AES_OMAC1=y
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800274endif
275
Dmitry Shmidt807291d2015-01-27 13:40:23 -0800276ifdef CONFIG_SUITEB192
277CFLAGS += -DCONFIG_SUITEB192
278NEED_SHA384=y
279endif
280
Hai Shalom74f70d42019-02-11 14:42:39 -0800281ifdef CONFIG_OCV
282CFLAGS += -DCONFIG_OCV
283OBJS += ../src/common/ocv.o
284CONFIG_IEEE80211W=y
285endif
286
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700287ifdef CONFIG_IEEE80211W
288CFLAGS += -DCONFIG_IEEE80211W
289NEED_SHA256=y
290NEED_AES_OMAC1=y
291endif
292
293ifdef CONFIG_IEEE80211R
Dmitry Shmidt9839ecd2016-11-07 11:05:47 -0800294CFLAGS += -DCONFIG_IEEE80211R -DCONFIG_IEEE80211R_AP
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700295OBJS += ../src/ap/wpa_auth_ft.o
296NEED_SHA256=y
297NEED_AES_OMAC1=y
298NEED_AES_UNWRAP=y
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700299NEED_AES_SIV=y
300NEED_ETH_P_OUI=y
301NEED_SHA256=y
302NEED_HMAC_SHA256_KDF=y
303endif
304
305ifdef NEED_ETH_P_OUI
306CFLAGS += -DCONFIG_ETH_P_OUI
307OBJS += ../src/ap/eth_p_oui.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700308endif
309
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800310ifdef CONFIG_SAE
311CFLAGS += -DCONFIG_SAE
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800312OBJS += ../src/common/sae.o
313NEED_ECC=y
314NEED_DH_GROUPS=y
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700315NEED_AP_MLME=y
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800316endif
317
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700318ifdef CONFIG_OWE
319CFLAGS += -DCONFIG_OWE
320NEED_ECC=y
321NEED_HMAC_SHA256_KDF=y
322NEED_HMAC_SHA384_KDF=y
323NEED_HMAC_SHA512_KDF=y
324NEED_SHA256=y
325NEED_SHA384=y
326NEED_SHA512=y
327endif
328
Dmitry Shmidt9839ecd2016-11-07 11:05:47 -0800329ifdef CONFIG_FILS
330CFLAGS += -DCONFIG_FILS
Dmitry Shmidtebd93af2017-02-21 13:40:44 -0800331OBJS += ../src/ap/fils_hlp.o
Dmitry Shmidt9839ecd2016-11-07 11:05:47 -0800332NEED_SHA384=y
333NEED_AES_SIV=y
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700334ifdef CONFIG_FILS_SK_PFS
335CFLAGS += -DCONFIG_FILS_SK_PFS
336NEED_ECC=y
337endif
Dmitry Shmidt9839ecd2016-11-07 11:05:47 -0800338endif
339
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800340ifdef CONFIG_WNM
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700341CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700342OBJS += ../src/ap/wnm_ap.o
343endif
344
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700345ifdef CONFIG_IEEE80211N
346CFLAGS += -DCONFIG_IEEE80211N
347endif
348
Dmitry Shmidt04949592012-07-19 12:16:46 -0700349ifdef CONFIG_IEEE80211AC
350CFLAGS += -DCONFIG_IEEE80211AC
351endif
352
Dmitry Shmidtebd93af2017-02-21 13:40:44 -0800353ifdef CONFIG_IEEE80211AX
354CFLAGS += -DCONFIG_IEEE80211AX
355OBJS += ../src/ap/ieee802_11_he.o
356endif
357
Dmitry Shmidt57c2d392016-02-23 13:40:19 -0800358ifdef CONFIG_MBO
359CFLAGS += -DCONFIG_MBO
360OBJS += ../src/ap/mbo_ap.o
361endif
362
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700363include ../src/drivers/drivers.mak
364OBJS += $(DRV_AP_OBJS)
365CFLAGS += $(DRV_AP_CFLAGS)
366LDFLAGS += $(DRV_AP_LDFLAGS)
367LIBS += $(DRV_AP_LIBS)
368
369ifdef CONFIG_L2_PACKET
370ifdef CONFIG_DNET_PCAP
371ifdef CONFIG_L2_FREEBSD
372LIBS += -lpcap
373OBJS += ../src/l2_packet/l2_packet_freebsd.o
374else
375LIBS += -ldnet -lpcap
376OBJS += ../src/l2_packet/l2_packet_pcap.o
377endif
378else
379OBJS += ../src/l2_packet/l2_packet_linux.o
380endif
381else
382OBJS += ../src/l2_packet/l2_packet_none.o
383endif
384
385
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800386ifdef CONFIG_ERP
387CFLAGS += -DCONFIG_ERP
388NEED_SHA256=y
389NEED_HMAC_SHA256_KDF=y
390endif
391
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700392ifdef CONFIG_EAP_MD5
393CFLAGS += -DEAP_SERVER_MD5
394OBJS += ../src/eap_server/eap_server_md5.o
395CHAP=y
396endif
397
398ifdef CONFIG_EAP_TLS
399CFLAGS += -DEAP_SERVER_TLS
400OBJS += ../src/eap_server/eap_server_tls.o
401TLS_FUNCS=y
402endif
403
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700404ifdef CONFIG_EAP_UNAUTH_TLS
405CFLAGS += -DEAP_SERVER_UNAUTH_TLS
406ifndef CONFIG_EAP_TLS
407OBJS += ../src/eap_server/eap_server_tls.o
408TLS_FUNCS=y
409endif
410endif
411
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700412ifdef CONFIG_EAP_PEAP
413CFLAGS += -DEAP_SERVER_PEAP
414OBJS += ../src/eap_server/eap_server_peap.o
415OBJS += ../src/eap_common/eap_peap_common.o
416TLS_FUNCS=y
417CONFIG_EAP_MSCHAPV2=y
418endif
419
420ifdef CONFIG_EAP_TTLS
421CFLAGS += -DEAP_SERVER_TTLS
422OBJS += ../src/eap_server/eap_server_ttls.o
423TLS_FUNCS=y
424CHAP=y
425endif
426
427ifdef CONFIG_EAP_MSCHAPV2
428CFLAGS += -DEAP_SERVER_MSCHAPV2
429OBJS += ../src/eap_server/eap_server_mschapv2.o
430MS_FUNCS=y
431endif
432
433ifdef CONFIG_EAP_GTC
434CFLAGS += -DEAP_SERVER_GTC
435OBJS += ../src/eap_server/eap_server_gtc.o
436endif
437
438ifdef CONFIG_EAP_SIM
439CFLAGS += -DEAP_SERVER_SIM
440OBJS += ../src/eap_server/eap_server_sim.o
441CONFIG_EAP_SIM_COMMON=y
442NEED_AES_CBC=y
443endif
444
445ifdef CONFIG_EAP_AKA
446CFLAGS += -DEAP_SERVER_AKA
447OBJS += ../src/eap_server/eap_server_aka.o
448CONFIG_EAP_SIM_COMMON=y
449NEED_SHA256=y
450NEED_AES_CBC=y
451endif
452
453ifdef CONFIG_EAP_AKA_PRIME
454CFLAGS += -DEAP_SERVER_AKA_PRIME
455endif
456
457ifdef CONFIG_EAP_SIM_COMMON
458OBJS += ../src/eap_common/eap_sim_common.o
459# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
460# replaced with another file implementating the interface specified in
461# eap_sim_db.h.
462OBJS += ../src/eap_server/eap_sim_db.o
463NEED_FIPS186_2_PRF=y
464endif
465
466ifdef CONFIG_EAP_PAX
467CFLAGS += -DEAP_SERVER_PAX
468OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
469endif
470
471ifdef CONFIG_EAP_PSK
472CFLAGS += -DEAP_SERVER_PSK
473OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
474NEED_AES_OMAC1=y
475NEED_AES_ENCBLOCK=y
476NEED_AES_EAX=y
477endif
478
479ifdef CONFIG_EAP_SAKE
480CFLAGS += -DEAP_SERVER_SAKE
481OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
482endif
483
484ifdef CONFIG_EAP_GPSK
485CFLAGS += -DEAP_SERVER_GPSK
486OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
487ifdef CONFIG_EAP_GPSK_SHA256
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800488CFLAGS += -DEAP_GPSK_SHA256
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700489endif
490NEED_SHA256=y
491NEED_AES_OMAC1=y
492endif
493
494ifdef CONFIG_EAP_PWD
495CFLAGS += -DEAP_SERVER_PWD
496OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
497NEED_SHA256=y
Roshan Pius3a1667e2018-07-03 15:17:14 -0700498NEED_ECC=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700499endif
500
Dmitry Shmidt34af3062013-07-11 10:46:32 -0700501ifdef CONFIG_EAP_EKE
502CFLAGS += -DEAP_SERVER_EKE
503OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o
504NEED_DH_GROUPS=y
505NEED_DH_GROUPS_ALL=y
506endif
507
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700508ifdef CONFIG_EAP_VENDOR_TEST
509CFLAGS += -DEAP_SERVER_VENDOR_TEST
510OBJS += ../src/eap_server/eap_server_vendor_test.o
511endif
512
513ifdef CONFIG_EAP_FAST
514CFLAGS += -DEAP_SERVER_FAST
515OBJS += ../src/eap_server/eap_server_fast.o
516OBJS += ../src/eap_common/eap_fast_common.o
517TLS_FUNCS=y
518NEED_T_PRF=y
519NEED_AES_UNWRAP=y
520endif
521
522ifdef CONFIG_WPS
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700523CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
524OBJS += ../src/utils/uuid.o
525OBJS += ../src/ap/wps_hostapd.o
526OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
527OBJS += ../src/wps/wps.o
528OBJS += ../src/wps/wps_common.o
529OBJS += ../src/wps/wps_attr_parse.o
530OBJS += ../src/wps/wps_attr_build.o
531OBJS += ../src/wps/wps_attr_process.o
532OBJS += ../src/wps/wps_dev_attr.o
533OBJS += ../src/wps/wps_enrollee.o
534OBJS += ../src/wps/wps_registrar.o
535NEED_DH_GROUPS=y
536NEED_SHA256=y
537NEED_BASE64=y
538NEED_AES_CBC=y
539NEED_MODEXP=y
540CONFIG_EAP=y
541
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700542ifdef CONFIG_WPS_NFC
543CFLAGS += -DCONFIG_WPS_NFC
544OBJS += ../src/wps/ndef.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700545NEED_WPS_OOB=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700546endif
547
548ifdef NEED_WPS_OOB
549CFLAGS += -DCONFIG_WPS_OOB
550endif
551
552ifdef CONFIG_WPS_UPNP
553CFLAGS += -DCONFIG_WPS_UPNP
554OBJS += ../src/wps/wps_upnp.o
555OBJS += ../src/wps/wps_upnp_ssdp.o
556OBJS += ../src/wps/wps_upnp_web.o
557OBJS += ../src/wps/wps_upnp_event.o
558OBJS += ../src/wps/wps_upnp_ap.o
559OBJS += ../src/wps/upnp_xml.o
560OBJS += ../src/wps/httpread.o
561OBJS += ../src/wps/http_client.o
562OBJS += ../src/wps/http_server.o
563endif
564
565ifdef CONFIG_WPS_STRICT
566CFLAGS += -DCONFIG_WPS_STRICT
567OBJS += ../src/wps/wps_validate.o
568endif
569
570ifdef CONFIG_WPS_TESTING
571CFLAGS += -DCONFIG_WPS_TESTING
572endif
573
574endif
575
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700576ifdef CONFIG_DPP
577CFLAGS += -DCONFIG_DPP
578OBJS += ../src/common/dpp.o
579OBJS += ../src/ap/dpp_hostapd.o
580OBJS += ../src/ap/gas_query_ap.o
581NEED_AES_SIV=y
582NEED_HMAC_SHA256_KDF=y
583NEED_HMAC_SHA384_KDF=y
584NEED_HMAC_SHA512_KDF=y
585NEED_SHA256=y
586NEED_SHA384=y
587NEED_SHA512=y
588NEED_JSON=y
589NEED_GAS=y
590NEED_BASE64=y
Hai Shalom021b0b52019-04-10 11:17:58 -0700591ifdef CONFIG_DPP2
592CFLAGS += -DCONFIG_DPP2
593endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700594endif
595
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700596ifdef CONFIG_EAP_IKEV2
597CFLAGS += -DEAP_SERVER_IKEV2
598OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
599OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
600NEED_DH_GROUPS=y
601NEED_DH_GROUPS_ALL=y
602NEED_MODEXP=y
603NEED_CIPHER=y
604endif
605
606ifdef CONFIG_EAP_TNC
607CFLAGS += -DEAP_SERVER_TNC
608OBJS += ../src/eap_server/eap_server_tnc.o
609OBJS += ../src/eap_server/tncs.o
610NEED_BASE64=y
611ifndef CONFIG_DRIVER_BSD
612LIBS += -ldl
613endif
614endif
615
616# Basic EAP functionality is needed for EAPOL
617OBJS += eap_register.o
618OBJS += ../src/eap_server/eap_server.o
619OBJS += ../src/eap_common/eap_common.o
620OBJS += ../src/eap_server/eap_server_methods.o
621OBJS += ../src/eap_server/eap_server_identity.o
622CFLAGS += -DEAP_SERVER_IDENTITY
623
624ifdef CONFIG_EAP
625CFLAGS += -DEAP_SERVER
626endif
627
628ifdef CONFIG_PKCS12
629CFLAGS += -DPKCS12_FUNCS
630endif
631
632ifdef MS_FUNCS
633OBJS += ../src/crypto/ms_funcs.o
634NEED_DES=y
635NEED_MD4=y
636endif
637
638ifdef CHAP
639OBJS += ../src/eap_common/chap.o
640endif
641
642ifdef TLS_FUNCS
643NEED_DES=y
644# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
645CFLAGS += -DEAP_TLS_FUNCS
646OBJS += ../src/eap_server/eap_server_tls_common.o
647NEED_TLS_PRF=y
648endif
649
650ifndef CONFIG_TLS
651CONFIG_TLS=openssl
652endif
653
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800654ifdef CONFIG_TLSV11
655CFLAGS += -DCONFIG_TLSV11
656endif
657
658ifdef CONFIG_TLSV12
659CFLAGS += -DCONFIG_TLSV12
660NEED_SHA256=y
661endif
662
Roshan Pius3a1667e2018-07-03 15:17:14 -0700663ifeq ($(CONFIG_TLS), wolfssl)
664CONFIG_CRYPTO=wolfssl
665ifdef TLS_FUNCS
666OBJS += ../src/crypto/tls_wolfssl.o
667LIBS += -lwolfssl -lm
668endif
669OBJS += ../src/crypto/crypto_wolfssl.o
670HOBJS += ../src/crypto/crypto_wolfssl.o
671ifdef NEED_FIPS186_2_PRF
672OBJS += ../src/crypto/fips_prf_wolfssl.o
673endif
674NEED_SHA256=y
675NEED_TLS_PRF_SHA256=y
676LIBS += -lwolfssl -lm
677LIBS_h += -lwolfssl -lm
678ifdef CONFIG_TLS_ADD_DL
679LIBS += -ldl
680LIBS_h += -ldl
681endif
682endif
683
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700684ifeq ($(CONFIG_TLS), openssl)
Roshan Pius3a1667e2018-07-03 15:17:14 -0700685CONFIG_CRYPTO=openssl
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700686ifdef TLS_FUNCS
687OBJS += ../src/crypto/tls_openssl.o
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800688OBJS += ../src/crypto/tls_openssl_ocsp.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700689LIBS += -lssl
690endif
691OBJS += ../src/crypto/crypto_openssl.o
692HOBJS += ../src/crypto/crypto_openssl.o
693ifdef NEED_FIPS186_2_PRF
694OBJS += ../src/crypto/fips_prf_openssl.o
695endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800696NEED_SHA256=y
697NEED_TLS_PRF_SHA256=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700698LIBS += -lcrypto
699LIBS_h += -lcrypto
Roshan Pius3a1667e2018-07-03 15:17:14 -0700700LIBS_n += -lcrypto
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800701ifdef CONFIG_TLS_ADD_DL
702LIBS += -ldl
703LIBS_h += -ldl
704endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700705ifndef CONFIG_TLS_DEFAULT_CIPHERS
706CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW"
707endif
708CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\"
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700709endif
710
711ifeq ($(CONFIG_TLS), gnutls)
Roshan Pius3a1667e2018-07-03 15:17:14 -0700712ifndef CONFIG_CRYPTO
713# default to libgcrypt
714CONFIG_CRYPTO=gnutls
715endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700716ifdef TLS_FUNCS
717OBJS += ../src/crypto/tls_gnutls.o
718LIBS += -lgnutls -lgpg-error
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700719endif
Roshan Pius3a1667e2018-07-03 15:17:14 -0700720OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
721HOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700722ifdef NEED_FIPS186_2_PRF
Dmitry Shmidt98660862014-03-11 17:26:21 -0700723OBJS += ../src/crypto/fips_prf_internal.o
724SHA1OBJS += ../src/crypto/sha1-internal.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700725endif
Roshan Pius3a1667e2018-07-03 15:17:14 -0700726ifeq ($(CONFIG_CRYPTO), gnutls)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700727LIBS += -lgcrypt
728LIBS_h += -lgcrypt
Roshan Pius3a1667e2018-07-03 15:17:14 -0700729LIBS_n += -lgcrypt
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700730CONFIG_INTERNAL_RC4=y
731CONFIG_INTERNAL_DH_GROUP5=y
732endif
Roshan Pius3a1667e2018-07-03 15:17:14 -0700733ifeq ($(CONFIG_CRYPTO), nettle)
734LIBS += -lnettle -lgmp
735LIBS_p += -lnettle -lgmp
736CONFIG_INTERNAL_RC4=y
737CONFIG_INTERNAL_DH_GROUP5=y
738endif
739endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700740
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700741ifeq ($(CONFIG_TLS), internal)
742ifndef CONFIG_CRYPTO
743CONFIG_CRYPTO=internal
744endif
745ifdef TLS_FUNCS
746OBJS += ../src/crypto/crypto_internal-rsa.o
747OBJS += ../src/crypto/tls_internal.o
748OBJS += ../src/tls/tlsv1_common.o
749OBJS += ../src/tls/tlsv1_record.o
750OBJS += ../src/tls/tlsv1_cred.o
751OBJS += ../src/tls/tlsv1_server.o
752OBJS += ../src/tls/tlsv1_server_write.o
753OBJS += ../src/tls/tlsv1_server_read.o
754OBJS += ../src/tls/asn1.o
755OBJS += ../src/tls/rsa.o
756OBJS += ../src/tls/x509v3.o
757OBJS += ../src/tls/pkcs1.o
758OBJS += ../src/tls/pkcs5.o
759OBJS += ../src/tls/pkcs8.o
760NEED_SHA256=y
761NEED_BASE64=y
762NEED_TLS_PRF=y
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800763ifdef CONFIG_TLSV12
764NEED_TLS_PRF_SHA256=y
765endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700766NEED_MODEXP=y
767NEED_CIPHER=y
768CFLAGS += -DCONFIG_TLS_INTERNAL
769CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
770endif
771ifdef NEED_CIPHER
772NEED_DES=y
773OBJS += ../src/crypto/crypto_internal-cipher.o
774endif
775ifdef NEED_MODEXP
776OBJS += ../src/crypto/crypto_internal-modexp.o
777OBJS += ../src/tls/bignum.o
778endif
779ifeq ($(CONFIG_CRYPTO), libtomcrypt)
780OBJS += ../src/crypto/crypto_libtomcrypt.o
781LIBS += -ltomcrypt -ltfm
782LIBS_h += -ltomcrypt -ltfm
783CONFIG_INTERNAL_SHA256=y
784CONFIG_INTERNAL_RC4=y
785CONFIG_INTERNAL_DH_GROUP5=y
786endif
787ifeq ($(CONFIG_CRYPTO), internal)
788OBJS += ../src/crypto/crypto_internal.o
789NEED_AES_DEC=y
790CFLAGS += -DCONFIG_CRYPTO_INTERNAL
791ifdef CONFIG_INTERNAL_LIBTOMMATH
792CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
793ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
794CFLAGS += -DLTM_FAST
795endif
796else
797LIBS += -ltommath
798LIBS_h += -ltommath
799endif
800CONFIG_INTERNAL_AES=y
801CONFIG_INTERNAL_DES=y
802CONFIG_INTERNAL_SHA1=y
803CONFIG_INTERNAL_MD4=y
804CONFIG_INTERNAL_MD5=y
805CONFIG_INTERNAL_SHA256=y
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800806CONFIG_INTERNAL_SHA384=y
807CONFIG_INTERNAL_SHA512=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700808CONFIG_INTERNAL_RC4=y
809CONFIG_INTERNAL_DH_GROUP5=y
810endif
811ifeq ($(CONFIG_CRYPTO), cryptoapi)
812OBJS += ../src/crypto/crypto_cryptoapi.o
813OBJS_p += ../src/crypto/crypto_cryptoapi.o
814CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
815CONFIG_INTERNAL_SHA256=y
816CONFIG_INTERNAL_RC4=y
817endif
818endif
819
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700820ifeq ($(CONFIG_TLS), linux)
821OBJS += ../src/crypto/crypto_linux.o
822ifdef TLS_FUNCS
823OBJS += ../src/crypto/crypto_internal-rsa.o
824OBJS += ../src/crypto/tls_internal.o
825OBJS += ../src/tls/tlsv1_common.o
826OBJS += ../src/tls/tlsv1_record.o
827OBJS += ../src/tls/tlsv1_cred.o
828OBJS += ../src/tls/tlsv1_server.o
829OBJS += ../src/tls/tlsv1_server_write.o
830OBJS += ../src/tls/tlsv1_server_read.o
831OBJS += ../src/tls/asn1.o
832OBJS += ../src/tls/rsa.o
833OBJS += ../src/tls/x509v3.o
834OBJS += ../src/tls/pkcs1.o
835OBJS += ../src/tls/pkcs5.o
836OBJS += ../src/tls/pkcs8.o
837NEED_SHA256=y
838NEED_BASE64=y
839NEED_TLS_PRF=y
840ifdef CONFIG_TLSV12
841NEED_TLS_PRF_SHA256=y
842endif
843NEED_MODEXP=y
844NEED_CIPHER=y
845CFLAGS += -DCONFIG_TLS_INTERNAL
846CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
847endif
848ifdef NEED_MODEXP
849OBJS += ../src/crypto/crypto_internal-modexp.o
850OBJS += ../src/tls/bignum.o
851CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
852CFLAGS += -DLTM_FAST
853endif
854CONFIG_INTERNAL_DH_GROUP5=y
855ifdef NEED_FIPS186_2_PRF
856OBJS += ../src/crypto/fips_prf_internal.o
857OBJS += ../src/crypto/sha1-internal.o
858endif
859endif
860
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700861ifeq ($(CONFIG_TLS), none)
862ifdef TLS_FUNCS
863OBJS += ../src/crypto/tls_none.o
864CFLAGS += -DEAP_TLS_NONE
865CONFIG_INTERNAL_AES=y
866CONFIG_INTERNAL_SHA1=y
867CONFIG_INTERNAL_MD5=y
868endif
869OBJS += ../src/crypto/crypto_none.o
870OBJS_p += ../src/crypto/crypto_none.o
871CONFIG_INTERNAL_SHA256=y
872CONFIG_INTERNAL_RC4=y
873endif
874
875ifndef TLS_FUNCS
876OBJS += ../src/crypto/tls_none.o
877ifeq ($(CONFIG_TLS), internal)
878CONFIG_INTERNAL_AES=y
879CONFIG_INTERNAL_SHA1=y
880CONFIG_INTERNAL_MD5=y
881CONFIG_INTERNAL_RC4=y
882endif
883endif
884
885AESOBJS = # none so far
886ifdef CONFIG_INTERNAL_AES
887AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
888endif
889
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800890ifneq ($(CONFIG_TLS), openssl)
Roshan Pius3a1667e2018-07-03 15:17:14 -0700891ifneq ($(CONFIG_TLS), wolfssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700892AESOBJS += ../src/crypto/aes-wrap.o
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800893endif
Roshan Pius3a1667e2018-07-03 15:17:14 -0700894endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700895ifdef NEED_AES_EAX
896AESOBJS += ../src/crypto/aes-eax.o
897NEED_AES_CTR=y
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700898NEED_AES_OMAC1=y
899endif
900ifdef NEED_AES_SIV
901AESOBJS += ../src/crypto/aes-siv.o
902NEED_AES_CTR=y
903NEED_AES_OMAC1=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700904endif
905ifdef NEED_AES_CTR
906AESOBJS += ../src/crypto/aes-ctr.o
907endif
908ifdef NEED_AES_ENCBLOCK
909AESOBJS += ../src/crypto/aes-encblock.o
910endif
911ifdef NEED_AES_OMAC1
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700912ifneq ($(CONFIG_TLS), linux)
Roshan Pius3a1667e2018-07-03 15:17:14 -0700913ifneq ($(CONFIG_TLS), wolfssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700914AESOBJS += ../src/crypto/aes-omac1.o
915endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700916endif
Roshan Pius3a1667e2018-07-03 15:17:14 -0700917endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700918ifdef NEED_AES_UNWRAP
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800919ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700920ifneq ($(CONFIG_TLS), linux)
Roshan Pius3a1667e2018-07-03 15:17:14 -0700921ifneq ($(CONFIG_TLS), wolfssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700922NEED_AES_DEC=y
923AESOBJS += ../src/crypto/aes-unwrap.o
924endif
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800925endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700926endif
Roshan Pius3a1667e2018-07-03 15:17:14 -0700927endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700928ifdef NEED_AES_CBC
929NEED_AES_DEC=y
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700930ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700931ifneq ($(CONFIG_TLS), linux)
Roshan Pius3a1667e2018-07-03 15:17:14 -0700932ifneq ($(CONFIG_TLS), wolfssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700933AESOBJS += ../src/crypto/aes-cbc.o
934endif
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700935endif
Dmitry Shmidt9839ecd2016-11-07 11:05:47 -0800936endif
Roshan Pius3a1667e2018-07-03 15:17:14 -0700937endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700938ifdef NEED_AES_DEC
939ifdef CONFIG_INTERNAL_AES
940AESOBJS += ../src/crypto/aes-internal-dec.o
941endif
942endif
943ifdef NEED_AES
944OBJS += $(AESOBJS)
945endif
946
947ifdef NEED_SHA1
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700948ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700949ifneq ($(CONFIG_TLS), linux)
Roshan Pius3a1667e2018-07-03 15:17:14 -0700950ifneq ($(CONFIG_TLS), gnutls)
951ifneq ($(CONFIG_TLS), wolfssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700952SHA1OBJS += ../src/crypto/sha1.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700953endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700954endif
Roshan Pius3a1667e2018-07-03 15:17:14 -0700955endif
956endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700957SHA1OBJS += ../src/crypto/sha1-prf.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700958ifdef CONFIG_INTERNAL_SHA1
959SHA1OBJS += ../src/crypto/sha1-internal.o
960ifdef NEED_FIPS186_2_PRF
961SHA1OBJS += ../src/crypto/fips_prf_internal.o
962endif
963endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700964ifneq ($(CONFIG_TLS), openssl)
Roshan Pius3a1667e2018-07-03 15:17:14 -0700965ifneq ($(CONFIG_TLS), wolfssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700966SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700967endif
Roshan Pius3a1667e2018-07-03 15:17:14 -0700968endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700969ifdef NEED_T_PRF
970SHA1OBJS += ../src/crypto/sha1-tprf.o
971endif
972ifdef NEED_TLS_PRF
973SHA1OBJS += ../src/crypto/sha1-tlsprf.o
974endif
975endif
976
977ifdef NEED_SHA1
978OBJS += $(SHA1OBJS)
979endif
980
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800981ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700982ifneq ($(CONFIG_TLS), linux)
Roshan Pius3a1667e2018-07-03 15:17:14 -0700983ifneq ($(CONFIG_TLS), gnutls)
984ifneq ($(CONFIG_TLS), wolfssl)
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800985OBJS += ../src/crypto/md5.o
986endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -0700987endif
Roshan Pius3a1667e2018-07-03 15:17:14 -0700988endif
989endif
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800990
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700991ifdef NEED_MD5
992ifdef CONFIG_INTERNAL_MD5
993OBJS += ../src/crypto/md5-internal.o
994HOBJS += ../src/crypto/md5-internal.o
995endif
996endif
997
998ifdef NEED_MD4
999ifdef CONFIG_INTERNAL_MD4
1000OBJS += ../src/crypto/md4-internal.o
1001endif
1002endif
1003
1004ifdef NEED_DES
Roshan Pius3a1667e2018-07-03 15:17:14 -07001005CFLAGS += -DCONFIG_DES
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001006ifdef CONFIG_INTERNAL_DES
1007OBJS += ../src/crypto/des-internal.o
1008endif
1009endif
1010
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001011ifdef CONFIG_NO_RC4
1012CFLAGS += -DCONFIG_NO_RC4
1013endif
1014
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001015ifdef NEED_RC4
1016ifdef CONFIG_INTERNAL_RC4
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001017ifndef CONFIG_NO_RC4
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001018OBJS += ../src/crypto/rc4.o
1019endif
1020endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001021endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001022
1023ifdef NEED_SHA256
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001024CFLAGS += -DCONFIG_SHA256
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001025ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001026ifneq ($(CONFIG_TLS), linux)
Roshan Pius3a1667e2018-07-03 15:17:14 -07001027ifneq ($(CONFIG_TLS), gnutls)
1028ifneq ($(CONFIG_TLS), wolfssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001029OBJS += ../src/crypto/sha256.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001030endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001031endif
Roshan Pius3a1667e2018-07-03 15:17:14 -07001032endif
1033endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001034OBJS += ../src/crypto/sha256-prf.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001035ifdef CONFIG_INTERNAL_SHA256
1036OBJS += ../src/crypto/sha256-internal.o
1037endif
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001038ifdef NEED_TLS_PRF_SHA256
1039OBJS += ../src/crypto/sha256-tlsprf.o
1040endif
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001041ifdef NEED_HMAC_SHA256_KDF
1042OBJS += ../src/crypto/sha256-kdf.o
1043endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001044ifdef NEED_HMAC_SHA384_KDF
1045OBJS += ../src/crypto/sha384-kdf.o
1046endif
1047ifdef NEED_HMAC_SHA512_KDF
1048OBJS += ../src/crypto/sha512-kdf.o
1049endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001050endif
Dmitry Shmidt807291d2015-01-27 13:40:23 -08001051ifdef NEED_SHA384
1052CFLAGS += -DCONFIG_SHA384
Dmitry Shmidtebd93af2017-02-21 13:40:44 -08001053ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001054ifneq ($(CONFIG_TLS), linux)
Roshan Pius3a1667e2018-07-03 15:17:14 -07001055ifneq ($(CONFIG_TLS), gnutls)
1056ifneq ($(CONFIG_TLS), wolfssl)
Dmitry Shmidtebd93af2017-02-21 13:40:44 -08001057OBJS += ../src/crypto/sha384.o
1058endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001059endif
Roshan Pius3a1667e2018-07-03 15:17:14 -07001060endif
1061endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001062OBJS += ../src/crypto/sha384-prf.o
Dmitry Shmidt807291d2015-01-27 13:40:23 -08001063endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001064ifdef NEED_SHA512
1065CFLAGS += -DCONFIG_SHA512
1066ifneq ($(CONFIG_TLS), openssl)
1067ifneq ($(CONFIG_TLS), linux)
Roshan Pius3a1667e2018-07-03 15:17:14 -07001068ifneq ($(CONFIG_TLS), gnutls)
1069ifneq ($(CONFIG_TLS), wolfssl)
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001070OBJS += ../src/crypto/sha512.o
1071endif
1072endif
Roshan Pius3a1667e2018-07-03 15:17:14 -07001073endif
1074endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001075OBJS += ../src/crypto/sha512-prf.o
1076endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001077
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -08001078ifdef CONFIG_INTERNAL_SHA384
1079CFLAGS += -DCONFIG_INTERNAL_SHA384
1080OBJS += ../src/crypto/sha384-internal.o
1081endif
1082
1083ifdef CONFIG_INTERNAL_SHA512
1084CFLAGS += -DCONFIG_INTERNAL_SHA512
1085OBJS += ../src/crypto/sha512-internal.o
1086endif
1087
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001088ifdef NEED_DH_GROUPS
1089OBJS += ../src/crypto/dh_groups.o
1090endif
1091ifdef NEED_DH_GROUPS_ALL
1092CFLAGS += -DALL_DH_GROUPS
1093endif
1094ifdef CONFIG_INTERNAL_DH_GROUP5
1095ifdef NEED_DH_GROUPS
1096OBJS += ../src/crypto/dh_group5.o
1097endif
1098endif
1099
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -08001100ifdef NEED_ECC
1101CFLAGS += -DCONFIG_ECC
1102endif
1103
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001104ifdef CONFIG_NO_RANDOM_POOL
1105CFLAGS += -DCONFIG_NO_RANDOM_POOL
1106else
Hai Shalom74f70d42019-02-11 14:42:39 -08001107ifdef CONFIG_GETRANDOM
1108CFLAGS += -DCONFIG_GETRANDOM
1109endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001110OBJS += ../src/crypto/random.o
1111HOBJS += ../src/crypto/random.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001112HOBJS += ../src/utils/eloop.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001113HOBJS += $(SHA1OBJS)
Dmitry Shmidtdda10c22015-03-24 16:05:01 -07001114ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001115ifneq ($(CONFIG_TLS), linux)
Roshan Pius3a1667e2018-07-03 15:17:14 -07001116ifneq ($(CONFIG_TLS), wolfssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001117HOBJS += ../src/crypto/md5.o
1118endif
Dmitry Shmidtdda10c22015-03-24 16:05:01 -07001119endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001120endif
Roshan Pius3a1667e2018-07-03 15:17:14 -07001121endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001122
1123ifdef CONFIG_RADIUS_SERVER
1124CFLAGS += -DRADIUS_SERVER
1125OBJS += ../src/radius/radius_server.o
1126endif
1127
1128ifdef CONFIG_IPV6
1129CFLAGS += -DCONFIG_IPV6
1130endif
1131
1132ifdef CONFIG_DRIVER_RADIUS_ACL
1133CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
1134endif
1135
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001136ifdef NEED_BASE64
1137OBJS += ../src/utils/base64.o
1138endif
1139
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001140ifdef NEED_JSON
1141OBJS += ../src/utils/json.o
1142CFLAGS += -DCONFIG_JSON
1143endif
1144
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001145ifdef NEED_AP_MLME
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001146OBJS += ../src/ap/wmm.o
1147OBJS += ../src/ap/ap_list.o
1148OBJS += ../src/ap/ieee802_11.o
1149OBJS += ../src/ap/hw_features.o
Dmitry Shmidt051af732013-10-22 13:52:46 -07001150OBJS += ../src/ap/dfs.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001151CFLAGS += -DNEED_AP_MLME
1152endif
1153ifdef CONFIG_IEEE80211N
1154OBJS += ../src/ap/ieee802_11_ht.o
1155endif
1156
Dmitry Shmidt04949592012-07-19 12:16:46 -07001157ifdef CONFIG_IEEE80211AC
1158OBJS += ../src/ap/ieee802_11_vht.o
1159endif
1160
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001161ifdef CONFIG_P2P_MANAGER
1162CFLAGS += -DCONFIG_P2P_MANAGER
1163OBJS += ../src/ap/p2p_hostapd.o
1164endif
1165
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001166ifdef CONFIG_HS20
1167CFLAGS += -DCONFIG_HS20
1168OBJS += ../src/ap/hs20.o
1169CONFIG_INTERWORKING=y
1170endif
1171
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001172ifdef CONFIG_INTERWORKING
1173CFLAGS += -DCONFIG_INTERWORKING
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001174NEED_GAS=y
1175endif
1176
1177ifdef NEED_GAS
Dmitry Shmidt04949592012-07-19 12:16:46 -07001178OBJS += ../src/common/gas.o
1179OBJS += ../src/ap/gas_serv.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001180endif
1181
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001182ifdef CONFIG_PROXYARP
1183CFLAGS += -DCONFIG_PROXYARP
1184OBJS += ../src/ap/x_snoop.o
1185OBJS += ../src/ap/dhcp_snoop.o
1186ifdef CONFIG_IPV6
1187OBJS += ../src/ap/ndisc_snoop.o
1188endif
1189endif
1190
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001191OBJS += ../src/drivers/driver_common.o
1192
1193ifdef CONFIG_WPA_CLI_EDIT
1194OBJS_c += ../src/utils/edit.o
1195else
1196OBJS_c += ../src/utils/edit_simple.o
1197endif
1198
Dmitry Shmidt391c59f2013-09-03 12:16:28 -07001199ifdef CONFIG_ACS
1200CFLAGS += -DCONFIG_ACS
1201OBJS += ../src/ap/acs.o
1202LIBS += -lm
1203endif
1204
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001205ifdef CONFIG_NO_STDOUT_DEBUG
1206CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1207endif
1208
Paul Stewart092955c2017-02-06 09:13:09 -08001209ifdef CONFIG_DEBUG_SYSLOG
1210CFLAGS += -DCONFIG_DEBUG_SYSLOG
1211endif
1212
Dmitry Shmidtcce06662013-11-04 18:44:24 -08001213ifdef CONFIG_DEBUG_LINUX_TRACING
1214CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
1215endif
1216
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001217ifdef CONFIG_DEBUG_FILE
1218CFLAGS += -DCONFIG_DEBUG_FILE
1219endif
1220
Dmitry Shmidt4530cfd2012-09-09 15:20:40 -07001221ifdef CONFIG_SQLITE
1222CFLAGS += -DCONFIG_SQLITE
1223LIBS += -lsqlite3
1224LIBS_h += -lsqlite3
1225endif
1226
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001227ifdef CONFIG_FST
1228CFLAGS += -DCONFIG_FST
1229OBJS += ../src/fst/fst.o
1230OBJS += ../src/fst/fst_group.o
1231OBJS += ../src/fst/fst_iface.o
1232OBJS += ../src/fst/fst_session.o
1233OBJS += ../src/fst/fst_ctrl_aux.o
1234ifdef CONFIG_FST_TEST
1235CFLAGS += -DCONFIG_FST_TEST
1236endif
1237ifndef CONFIG_NO_CTRL_IFACE
1238OBJS += ../src/fst/fst_ctrl_iface.o
1239endif
1240endif
1241
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001242ALL=hostapd hostapd_cli
1243
1244all: verify_config $(ALL)
1245
1246Q=@
1247E=echo
1248ifeq ($(V), 1)
1249Q=
1250E=true
1251endif
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001252ifeq ($(QUIET), 1)
1253Q=@
1254E=true
1255endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001256
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001257ifdef CONFIG_CODE_COVERAGE
1258%.o: %.c
1259 @$(E) " CC " $<
1260 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<)
1261else
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001262%.o: %.c
1263 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1264 @$(E) " CC " $<
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001265endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001266
1267verify_config:
1268 @if [ ! -r .config ]; then \
1269 echo 'Building hostapd requires a configuration file'; \
1270 echo '(.config). See README for more instructions. You can'; \
1271 echo 'run "cp defconfig .config" to create an example'; \
1272 echo 'configuration.'; \
1273 exit 1; \
1274 fi
1275
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001276$(DESTDIR)$(BINDIR)/%: %
1277 install -D $(<) $(@)
1278
1279install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL))
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001280
1281../src/drivers/build.hostapd:
1282 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \
1283 $(MAKE) -C ../src/drivers clean; \
1284 fi
1285 @touch ../src/drivers/build.hostapd
1286
1287BCHECK=../src/drivers/build.hostapd
1288
1289hostapd: $(BCHECK) $(OBJS)
1290 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
1291 @$(E) " LD " $@
1292
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001293ifdef CONFIG_WPA_TRACE
1294OBJS_c += ../src/utils/trace.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001295endif
1296hostapd_cli: $(OBJS_c)
1297 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
1298 @$(E) " LD " $@
1299
Dmitry Shmidt216983b2015-02-06 10:50:36 -08001300NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
Dmitry Shmidtff787d52015-01-12 13:01:47 -08001301NOBJS += ../src/utils/common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001302ifdef NEED_RC4
1303ifdef CONFIG_INTERNAL_RC4
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001304ifndef CONFIG_NO_RC4
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001305NOBJS += ../src/crypto/rc4.o
1306endif
1307endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001308endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001309ifdef CONFIG_INTERNAL_MD5
1310NOBJS += ../src/crypto/md5-internal.o
1311endif
Roshan Pius3a1667e2018-07-03 15:17:14 -07001312NOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1313NOBJS += ../src/utils/os_$(CONFIG_OS).o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001314NOBJS += ../src/utils/wpa_debug.o
1315NOBJS += ../src/utils/wpabuf.o
1316ifdef CONFIG_WPA_TRACE
1317NOBJS += ../src/utils/trace.o
1318LIBS_n += -lbfd
1319endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001320
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001321HOBJS += hlr_auc_gw.o ../src/utils/common.o ../src/utils/wpa_debug.o ../src/utils/os_$(CONFIG_OS).o ../src/utils/wpabuf.o ../src/crypto/milenage.o
1322HOBJS += ../src/crypto/aes-encblock.o
1323ifdef CONFIG_INTERNAL_AES
1324HOBJS += ../src/crypto/aes-internal.o
1325HOBJS += ../src/crypto/aes-internal-enc.o
1326endif
Dmitry Shmidtd2986c22017-10-23 14:22:09 -07001327ifeq ($(CONFIG_TLS), linux)
1328HOBJS += ../src/crypto/crypto_linux.o
1329endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001330
1331nt_password_hash: $(NOBJS)
1332 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
1333 @$(E) " LD " $@
1334
1335hlr_auc_gw: $(HOBJS)
1336 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
1337 @$(E) " LD " $@
1338
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001339lcov-html:
1340 lcov -c -d .. > lcov.info
1341 genhtml lcov.info --output-directory lcov-html
1342
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001343clean:
1344 $(MAKE) -C ../src clean
1345 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
Dmitry Shmidt01904cf2013-12-05 11:08:35 -08001346 rm -f *.d *.gcno *.gcda *.gcov
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001347 rm -f lcov.info
1348 rm -rf lcov-html
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001349
1350-include $(OBJS:%.o=%.d)