blob: baa78196750b1ef40cbf6b87d20e5be37be5de0d [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
90OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070091
92NEED_RC4=y
93NEED_AES=y
94NEED_MD5=y
95NEED_SHA1=y
96
97OBJS += ../src/drivers/drivers.o
98CFLAGS += -DHOSTAPD
99
Dmitry Shmidt7f93d6f2014-02-21 11:22:49 -0800100ifdef CONFIG_MODULE_TESTS
101CFLAGS += -DCONFIG_MODULE_TESTS
102OBJS += hapd_module_tests.o
103endif
104
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700105ifdef CONFIG_WPA_TRACE
106CFLAGS += -DWPA_TRACE
107OBJS += ../src/utils/trace.o
108HOBJS += ../src/utils/trace.o
109LDFLAGS += -rdynamic
110CFLAGS += -funwind-tables
111ifdef CONFIG_WPA_TRACE_BFD
Dmitry Shmidtec58b162014-02-19 12:44:18 -0800112CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD
Dmitry Shmidt13ca8d82014-02-20 10:18:40 -0800113LIBS += -lbfd -ldl -liberty -lz
114LIBS_c += -lbfd -ldl -liberty -lz
115LIBS_h += -lbfd -ldl -liberty -lz
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700116endif
117endif
118
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800119ifndef CONFIG_ELOOP
120CONFIG_ELOOP=eloop
121endif
122OBJS += ../src/utils/$(CONFIG_ELOOP).o
123OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
Dmitry Shmidtfa3fc4a2013-11-21 13:34:38 -0800124
125ifeq ($(CONFIG_ELOOP), eloop)
126# Using glibc < 2.17 requires -lrt for clock_gettime()
127LIBS += -lrt
128LIBS_c += -lrt
129LIBS_h += -lrt
Dmitry Shmidtbd14a572014-02-18 10:33:49 -0800130LIBS_n += -lrt
Dmitry Shmidtfa3fc4a2013-11-21 13:34:38 -0800131endif
132
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800133ifdef CONFIG_ELOOP_POLL
134CFLAGS += -DCONFIG_ELOOP_POLL
135endif
136
137ifdef CONFIG_ELOOP_EPOLL
138CFLAGS += -DCONFIG_ELOOP_EPOLL
139endif
140
Dmitry Shmidtb97e4282016-02-08 10:16:07 -0800141ifdef CONFIG_ELOOP_KQUEUE
142CFLAGS += -DCONFIG_ELOOP_KQUEUE
143endif
144
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700145OBJS += ../src/utils/common.o
Dmitry Shmidta3dc3092015-06-23 11:21:28 -0700146OBJS_c += ../src/utils/common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700147OBJS += ../src/utils/wpa_debug.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800148OBJS_c += ../src/utils/wpa_debug.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700149OBJS += ../src/utils/wpabuf.o
150OBJS += ../src/utils/os_$(CONFIG_OS).o
151OBJS += ../src/utils/ip_addr.o
152
153OBJS += ../src/common/ieee802_11_common.o
154OBJS += ../src/common/wpa_common.o
Dmitry Shmidtff787d52015-01-12 13:01:47 -0800155OBJS += ../src/common/hw_features_common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700156
157OBJS += ../src/eapol_auth/eapol_auth_sm.o
158
159
Dmitry Shmidt01904cf2013-12-05 11:08:35 -0800160ifdef CONFIG_CODE_COVERAGE
161CFLAGS += -O0 -fprofile-arcs -ftest-coverage
162LIBS += -lgcov
163LIBS_c += -lgcov
164LIBS_h += -lgcov
165LIBS_n += -lgcov
166endif
167
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700168ifndef CONFIG_NO_DUMP_STATE
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800169# define HOSTAPD_DUMP_STATE to include support for dumping internal state
170# through control interface commands (undefine it, if you want to save in
171# binary size)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700172CFLAGS += -DHOSTAPD_DUMP_STATE
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700173OBJS += ../src/eapol_auth/eapol_auth_dump.o
174endif
175
176ifdef CONFIG_NO_RADIUS
177CFLAGS += -DCONFIG_NO_RADIUS
178CONFIG_NO_ACCOUNTING=y
179else
180OBJS += ../src/radius/radius.o
181OBJS += ../src/radius/radius_client.o
Dmitry Shmidt04949592012-07-19 12:16:46 -0700182OBJS += ../src/radius/radius_das.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700183endif
184
185ifdef CONFIG_NO_ACCOUNTING
186CFLAGS += -DCONFIG_NO_ACCOUNTING
187else
188OBJS += ../src/ap/accounting.o
189endif
190
191ifdef CONFIG_NO_VLAN
192CFLAGS += -DCONFIG_NO_VLAN
193else
194OBJS += ../src/ap/vlan_init.o
Dmitry Shmidte4663042016-04-04 10:07:49 -0700195OBJS += ../src/ap/vlan_ifconfig.o
Dmitry Shmidt57c2d392016-02-23 13:40:19 -0800196OBJS += ../src/ap/vlan.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700197ifdef CONFIG_FULL_DYNAMIC_VLAN
Dmitry Shmidte4663042016-04-04 10:07:49 -0700198# Define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
199# and VLAN interfaces for the VLAN feature.
200CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
201OBJS += ../src/ap/vlan_full.o
202ifdef CONFIG_VLAN_NETLINK
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700203OBJS += ../src/ap/vlan_util.o
Dmitry Shmidte4663042016-04-04 10:07:49 -0700204else
205OBJS += ../src/ap/vlan_ioctl.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700206endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700207endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700208endif
209
210ifdef CONFIG_NO_CTRL_IFACE
211CFLAGS += -DCONFIG_NO_CTRL_IFACE
212else
Dmitry Shmidt31a29cc2016-03-09 15:58:17 -0800213ifeq ($(CONFIG_CTRL_IFACE), udp)
214CFLAGS += -DCONFIG_CTRL_IFACE_UDP
215else
216ifeq ($(CONFIG_CTRL_IFACE), udp6)
217CFLAGS += -DCONFIG_CTRL_IFACE_UDP
218CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
219else
220ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
221CFLAGS += -DCONFIG_CTRL_IFACE_UDP
222CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
223else
224ifeq ($(CONFIG_CTRL_IFACE), udp6-remote)
225CFLAGS += -DCONFIG_CTRL_IFACE_UDP
226CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
227CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
228else
229CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
230endif
231endif
232endif
233endif
234OBJS += ../src/common/ctrl_iface_common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700235OBJS += ctrl_iface.o
236OBJS += ../src/ap/ctrl_iface_ap.o
237endif
238
Dmitry Shmidt31a29cc2016-03-09 15:58:17 -0800239ifndef CONFIG_NO_CTRL_IFACE
240CFLAGS += -DCONFIG_CTRL_IFACE
241endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700242
243ifdef CONFIG_IAPP
244CFLAGS += -DCONFIG_IAPP
245OBJS += ../src/ap/iapp.o
246endif
247
248ifdef CONFIG_RSN_PREAUTH
249CFLAGS += -DCONFIG_RSN_PREAUTH
250CONFIG_L2_PACKET=y
251endif
252
253ifdef CONFIG_PEERKEY
254CFLAGS += -DCONFIG_PEERKEY
255OBJS += ../src/ap/peerkey_auth.o
256endif
257
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800258ifdef CONFIG_HS20
259NEED_AES_OMAC1=y
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800260CONFIG_PROXYARP=y
261endif
262
263ifdef CONFIG_PROXYARP
264CONFIG_L2_PACKET=y
265endif
266
267ifdef CONFIG_SUITEB
268CFLAGS += -DCONFIG_SUITEB
269NEED_SHA256=y
270NEED_AES_OMAC1=y
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800271endif
272
Dmitry Shmidt807291d2015-01-27 13:40:23 -0800273ifdef CONFIG_SUITEB192
274CFLAGS += -DCONFIG_SUITEB192
275NEED_SHA384=y
276endif
277
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700278ifdef CONFIG_IEEE80211W
279CFLAGS += -DCONFIG_IEEE80211W
280NEED_SHA256=y
281NEED_AES_OMAC1=y
282endif
283
284ifdef CONFIG_IEEE80211R
285CFLAGS += -DCONFIG_IEEE80211R
286OBJS += ../src/ap/wpa_auth_ft.o
287NEED_SHA256=y
288NEED_AES_OMAC1=y
289NEED_AES_UNWRAP=y
290endif
291
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800292ifdef CONFIG_SAE
293CFLAGS += -DCONFIG_SAE
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800294OBJS += ../src/common/sae.o
295NEED_ECC=y
296NEED_DH_GROUPS=y
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700297NEED_AP_MLME=y
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800298endif
299
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800300ifdef CONFIG_WNM
301CFLAGS += -DCONFIG_WNM
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700302OBJS += ../src/ap/wnm_ap.o
303endif
304
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700305ifdef CONFIG_IEEE80211N
306CFLAGS += -DCONFIG_IEEE80211N
307endif
308
Dmitry Shmidt04949592012-07-19 12:16:46 -0700309ifdef CONFIG_IEEE80211AC
310CFLAGS += -DCONFIG_IEEE80211AC
311endif
312
Dmitry Shmidt57c2d392016-02-23 13:40:19 -0800313ifdef CONFIG_MBO
314CFLAGS += -DCONFIG_MBO
315OBJS += ../src/ap/mbo_ap.o
316endif
317
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700318include ../src/drivers/drivers.mak
319OBJS += $(DRV_AP_OBJS)
320CFLAGS += $(DRV_AP_CFLAGS)
321LDFLAGS += $(DRV_AP_LDFLAGS)
322LIBS += $(DRV_AP_LIBS)
323
324ifdef CONFIG_L2_PACKET
325ifdef CONFIG_DNET_PCAP
326ifdef CONFIG_L2_FREEBSD
327LIBS += -lpcap
328OBJS += ../src/l2_packet/l2_packet_freebsd.o
329else
330LIBS += -ldnet -lpcap
331OBJS += ../src/l2_packet/l2_packet_pcap.o
332endif
333else
334OBJS += ../src/l2_packet/l2_packet_linux.o
335endif
336else
337OBJS += ../src/l2_packet/l2_packet_none.o
338endif
339
340
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800341ifdef CONFIG_ERP
342CFLAGS += -DCONFIG_ERP
343NEED_SHA256=y
344NEED_HMAC_SHA256_KDF=y
345endif
346
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700347ifdef CONFIG_EAP_MD5
348CFLAGS += -DEAP_SERVER_MD5
349OBJS += ../src/eap_server/eap_server_md5.o
350CHAP=y
351endif
352
353ifdef CONFIG_EAP_TLS
354CFLAGS += -DEAP_SERVER_TLS
355OBJS += ../src/eap_server/eap_server_tls.o
356TLS_FUNCS=y
357endif
358
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700359ifdef CONFIG_EAP_UNAUTH_TLS
360CFLAGS += -DEAP_SERVER_UNAUTH_TLS
361ifndef CONFIG_EAP_TLS
362OBJS += ../src/eap_server/eap_server_tls.o
363TLS_FUNCS=y
364endif
365endif
366
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700367ifdef CONFIG_EAP_PEAP
368CFLAGS += -DEAP_SERVER_PEAP
369OBJS += ../src/eap_server/eap_server_peap.o
370OBJS += ../src/eap_common/eap_peap_common.o
371TLS_FUNCS=y
372CONFIG_EAP_MSCHAPV2=y
373endif
374
375ifdef CONFIG_EAP_TTLS
376CFLAGS += -DEAP_SERVER_TTLS
377OBJS += ../src/eap_server/eap_server_ttls.o
378TLS_FUNCS=y
379CHAP=y
380endif
381
382ifdef CONFIG_EAP_MSCHAPV2
383CFLAGS += -DEAP_SERVER_MSCHAPV2
384OBJS += ../src/eap_server/eap_server_mschapv2.o
385MS_FUNCS=y
386endif
387
388ifdef CONFIG_EAP_GTC
389CFLAGS += -DEAP_SERVER_GTC
390OBJS += ../src/eap_server/eap_server_gtc.o
391endif
392
393ifdef CONFIG_EAP_SIM
394CFLAGS += -DEAP_SERVER_SIM
395OBJS += ../src/eap_server/eap_server_sim.o
396CONFIG_EAP_SIM_COMMON=y
397NEED_AES_CBC=y
398endif
399
400ifdef CONFIG_EAP_AKA
401CFLAGS += -DEAP_SERVER_AKA
402OBJS += ../src/eap_server/eap_server_aka.o
403CONFIG_EAP_SIM_COMMON=y
404NEED_SHA256=y
405NEED_AES_CBC=y
406endif
407
408ifdef CONFIG_EAP_AKA_PRIME
409CFLAGS += -DEAP_SERVER_AKA_PRIME
410endif
411
412ifdef CONFIG_EAP_SIM_COMMON
413OBJS += ../src/eap_common/eap_sim_common.o
414# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
415# replaced with another file implementating the interface specified in
416# eap_sim_db.h.
417OBJS += ../src/eap_server/eap_sim_db.o
418NEED_FIPS186_2_PRF=y
419endif
420
421ifdef CONFIG_EAP_PAX
422CFLAGS += -DEAP_SERVER_PAX
423OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
424endif
425
426ifdef CONFIG_EAP_PSK
427CFLAGS += -DEAP_SERVER_PSK
428OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
429NEED_AES_OMAC1=y
430NEED_AES_ENCBLOCK=y
431NEED_AES_EAX=y
432endif
433
434ifdef CONFIG_EAP_SAKE
435CFLAGS += -DEAP_SERVER_SAKE
436OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
437endif
438
439ifdef CONFIG_EAP_GPSK
440CFLAGS += -DEAP_SERVER_GPSK
441OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
442ifdef CONFIG_EAP_GPSK_SHA256
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800443CFLAGS += -DEAP_GPSK_SHA256
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700444endif
445NEED_SHA256=y
446NEED_AES_OMAC1=y
447endif
448
449ifdef CONFIG_EAP_PWD
450CFLAGS += -DEAP_SERVER_PWD
451OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
452NEED_SHA256=y
453endif
454
Dmitry Shmidt34af3062013-07-11 10:46:32 -0700455ifdef CONFIG_EAP_EKE
456CFLAGS += -DEAP_SERVER_EKE
457OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o
458NEED_DH_GROUPS=y
459NEED_DH_GROUPS_ALL=y
460endif
461
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700462ifdef CONFIG_EAP_VENDOR_TEST
463CFLAGS += -DEAP_SERVER_VENDOR_TEST
464OBJS += ../src/eap_server/eap_server_vendor_test.o
465endif
466
467ifdef CONFIG_EAP_FAST
468CFLAGS += -DEAP_SERVER_FAST
469OBJS += ../src/eap_server/eap_server_fast.o
470OBJS += ../src/eap_common/eap_fast_common.o
471TLS_FUNCS=y
472NEED_T_PRF=y
473NEED_AES_UNWRAP=y
474endif
475
476ifdef CONFIG_WPS
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700477CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
478OBJS += ../src/utils/uuid.o
479OBJS += ../src/ap/wps_hostapd.o
480OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
481OBJS += ../src/wps/wps.o
482OBJS += ../src/wps/wps_common.o
483OBJS += ../src/wps/wps_attr_parse.o
484OBJS += ../src/wps/wps_attr_build.o
485OBJS += ../src/wps/wps_attr_process.o
486OBJS += ../src/wps/wps_dev_attr.o
487OBJS += ../src/wps/wps_enrollee.o
488OBJS += ../src/wps/wps_registrar.o
489NEED_DH_GROUPS=y
490NEED_SHA256=y
491NEED_BASE64=y
492NEED_AES_CBC=y
493NEED_MODEXP=y
494CONFIG_EAP=y
495
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700496ifdef CONFIG_WPS_NFC
497CFLAGS += -DCONFIG_WPS_NFC
498OBJS += ../src/wps/ndef.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700499NEED_WPS_OOB=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700500endif
501
502ifdef NEED_WPS_OOB
503CFLAGS += -DCONFIG_WPS_OOB
504endif
505
506ifdef CONFIG_WPS_UPNP
507CFLAGS += -DCONFIG_WPS_UPNP
508OBJS += ../src/wps/wps_upnp.o
509OBJS += ../src/wps/wps_upnp_ssdp.o
510OBJS += ../src/wps/wps_upnp_web.o
511OBJS += ../src/wps/wps_upnp_event.o
512OBJS += ../src/wps/wps_upnp_ap.o
513OBJS += ../src/wps/upnp_xml.o
514OBJS += ../src/wps/httpread.o
515OBJS += ../src/wps/http_client.o
516OBJS += ../src/wps/http_server.o
517endif
518
519ifdef CONFIG_WPS_STRICT
520CFLAGS += -DCONFIG_WPS_STRICT
521OBJS += ../src/wps/wps_validate.o
522endif
523
524ifdef CONFIG_WPS_TESTING
525CFLAGS += -DCONFIG_WPS_TESTING
526endif
527
528endif
529
530ifdef CONFIG_EAP_IKEV2
531CFLAGS += -DEAP_SERVER_IKEV2
532OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
533OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
534NEED_DH_GROUPS=y
535NEED_DH_GROUPS_ALL=y
536NEED_MODEXP=y
537NEED_CIPHER=y
538endif
539
540ifdef CONFIG_EAP_TNC
541CFLAGS += -DEAP_SERVER_TNC
542OBJS += ../src/eap_server/eap_server_tnc.o
543OBJS += ../src/eap_server/tncs.o
544NEED_BASE64=y
545ifndef CONFIG_DRIVER_BSD
546LIBS += -ldl
547endif
548endif
549
550# Basic EAP functionality is needed for EAPOL
551OBJS += eap_register.o
552OBJS += ../src/eap_server/eap_server.o
553OBJS += ../src/eap_common/eap_common.o
554OBJS += ../src/eap_server/eap_server_methods.o
555OBJS += ../src/eap_server/eap_server_identity.o
556CFLAGS += -DEAP_SERVER_IDENTITY
557
558ifdef CONFIG_EAP
559CFLAGS += -DEAP_SERVER
560endif
561
562ifdef CONFIG_PKCS12
563CFLAGS += -DPKCS12_FUNCS
564endif
565
566ifdef MS_FUNCS
567OBJS += ../src/crypto/ms_funcs.o
568NEED_DES=y
569NEED_MD4=y
570endif
571
572ifdef CHAP
573OBJS += ../src/eap_common/chap.o
574endif
575
576ifdef TLS_FUNCS
577NEED_DES=y
578# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
579CFLAGS += -DEAP_TLS_FUNCS
580OBJS += ../src/eap_server/eap_server_tls_common.o
581NEED_TLS_PRF=y
582endif
583
584ifndef CONFIG_TLS
585CONFIG_TLS=openssl
586endif
587
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800588ifdef CONFIG_TLSV11
589CFLAGS += -DCONFIG_TLSV11
590endif
591
592ifdef CONFIG_TLSV12
593CFLAGS += -DCONFIG_TLSV12
594NEED_SHA256=y
595endif
596
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700597ifeq ($(CONFIG_TLS), openssl)
598ifdef TLS_FUNCS
599OBJS += ../src/crypto/tls_openssl.o
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800600OBJS += ../src/crypto/tls_openssl_ocsp.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700601LIBS += -lssl
602endif
603OBJS += ../src/crypto/crypto_openssl.o
604HOBJS += ../src/crypto/crypto_openssl.o
605ifdef NEED_FIPS186_2_PRF
606OBJS += ../src/crypto/fips_prf_openssl.o
607endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800608NEED_SHA256=y
609NEED_TLS_PRF_SHA256=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700610LIBS += -lcrypto
611LIBS_h += -lcrypto
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800612ifdef CONFIG_TLS_ADD_DL
613LIBS += -ldl
614LIBS_h += -ldl
615endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700616endif
617
618ifeq ($(CONFIG_TLS), gnutls)
619ifdef TLS_FUNCS
620OBJS += ../src/crypto/tls_gnutls.o
621LIBS += -lgnutls -lgpg-error
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700622endif
623OBJS += ../src/crypto/crypto_gnutls.o
624HOBJS += ../src/crypto/crypto_gnutls.o
625ifdef NEED_FIPS186_2_PRF
Dmitry Shmidt98660862014-03-11 17:26:21 -0700626OBJS += ../src/crypto/fips_prf_internal.o
627SHA1OBJS += ../src/crypto/sha1-internal.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700628endif
629LIBS += -lgcrypt
630LIBS_h += -lgcrypt
631CONFIG_INTERNAL_SHA256=y
632CONFIG_INTERNAL_RC4=y
633CONFIG_INTERNAL_DH_GROUP5=y
634endif
635
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700636ifeq ($(CONFIG_TLS), internal)
637ifndef CONFIG_CRYPTO
638CONFIG_CRYPTO=internal
639endif
640ifdef TLS_FUNCS
641OBJS += ../src/crypto/crypto_internal-rsa.o
642OBJS += ../src/crypto/tls_internal.o
643OBJS += ../src/tls/tlsv1_common.o
644OBJS += ../src/tls/tlsv1_record.o
645OBJS += ../src/tls/tlsv1_cred.o
646OBJS += ../src/tls/tlsv1_server.o
647OBJS += ../src/tls/tlsv1_server_write.o
648OBJS += ../src/tls/tlsv1_server_read.o
649OBJS += ../src/tls/asn1.o
650OBJS += ../src/tls/rsa.o
651OBJS += ../src/tls/x509v3.o
652OBJS += ../src/tls/pkcs1.o
653OBJS += ../src/tls/pkcs5.o
654OBJS += ../src/tls/pkcs8.o
655NEED_SHA256=y
656NEED_BASE64=y
657NEED_TLS_PRF=y
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800658ifdef CONFIG_TLSV12
659NEED_TLS_PRF_SHA256=y
660endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700661NEED_MODEXP=y
662NEED_CIPHER=y
663CFLAGS += -DCONFIG_TLS_INTERNAL
664CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
665endif
666ifdef NEED_CIPHER
667NEED_DES=y
668OBJS += ../src/crypto/crypto_internal-cipher.o
669endif
670ifdef NEED_MODEXP
671OBJS += ../src/crypto/crypto_internal-modexp.o
672OBJS += ../src/tls/bignum.o
673endif
674ifeq ($(CONFIG_CRYPTO), libtomcrypt)
675OBJS += ../src/crypto/crypto_libtomcrypt.o
676LIBS += -ltomcrypt -ltfm
677LIBS_h += -ltomcrypt -ltfm
678CONFIG_INTERNAL_SHA256=y
679CONFIG_INTERNAL_RC4=y
680CONFIG_INTERNAL_DH_GROUP5=y
681endif
682ifeq ($(CONFIG_CRYPTO), internal)
683OBJS += ../src/crypto/crypto_internal.o
684NEED_AES_DEC=y
685CFLAGS += -DCONFIG_CRYPTO_INTERNAL
686ifdef CONFIG_INTERNAL_LIBTOMMATH
687CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
688ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
689CFLAGS += -DLTM_FAST
690endif
691else
692LIBS += -ltommath
693LIBS_h += -ltommath
694endif
695CONFIG_INTERNAL_AES=y
696CONFIG_INTERNAL_DES=y
697CONFIG_INTERNAL_SHA1=y
698CONFIG_INTERNAL_MD4=y
699CONFIG_INTERNAL_MD5=y
700CONFIG_INTERNAL_SHA256=y
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800701CONFIG_INTERNAL_SHA384=y
702CONFIG_INTERNAL_SHA512=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700703CONFIG_INTERNAL_RC4=y
704CONFIG_INTERNAL_DH_GROUP5=y
705endif
706ifeq ($(CONFIG_CRYPTO), cryptoapi)
707OBJS += ../src/crypto/crypto_cryptoapi.o
708OBJS_p += ../src/crypto/crypto_cryptoapi.o
709CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
710CONFIG_INTERNAL_SHA256=y
711CONFIG_INTERNAL_RC4=y
712endif
713endif
714
715ifeq ($(CONFIG_TLS), none)
716ifdef TLS_FUNCS
717OBJS += ../src/crypto/tls_none.o
718CFLAGS += -DEAP_TLS_NONE
719CONFIG_INTERNAL_AES=y
720CONFIG_INTERNAL_SHA1=y
721CONFIG_INTERNAL_MD5=y
722endif
723OBJS += ../src/crypto/crypto_none.o
724OBJS_p += ../src/crypto/crypto_none.o
725CONFIG_INTERNAL_SHA256=y
726CONFIG_INTERNAL_RC4=y
727endif
728
729ifndef TLS_FUNCS
730OBJS += ../src/crypto/tls_none.o
731ifeq ($(CONFIG_TLS), internal)
732CONFIG_INTERNAL_AES=y
733CONFIG_INTERNAL_SHA1=y
734CONFIG_INTERNAL_MD5=y
735CONFIG_INTERNAL_RC4=y
736endif
737endif
738
739AESOBJS = # none so far
740ifdef CONFIG_INTERNAL_AES
741AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
742endif
743
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800744ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700745AESOBJS += ../src/crypto/aes-wrap.o
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800746endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700747ifdef NEED_AES_EAX
748AESOBJS += ../src/crypto/aes-eax.o
749NEED_AES_CTR=y
750endif
751ifdef NEED_AES_CTR
752AESOBJS += ../src/crypto/aes-ctr.o
753endif
754ifdef NEED_AES_ENCBLOCK
755AESOBJS += ../src/crypto/aes-encblock.o
756endif
757ifdef NEED_AES_OMAC1
758AESOBJS += ../src/crypto/aes-omac1.o
759endif
760ifdef NEED_AES_UNWRAP
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800761ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700762NEED_AES_DEC=y
763AESOBJS += ../src/crypto/aes-unwrap.o
764endif
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800765endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700766ifdef NEED_AES_CBC
767NEED_AES_DEC=y
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700768ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700769AESOBJS += ../src/crypto/aes-cbc.o
770endif
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700771endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700772ifdef NEED_AES_DEC
773ifdef CONFIG_INTERNAL_AES
774AESOBJS += ../src/crypto/aes-internal-dec.o
775endif
776endif
777ifdef NEED_AES
778OBJS += $(AESOBJS)
779endif
780
781ifdef NEED_SHA1
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700782ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700783SHA1OBJS += ../src/crypto/sha1.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700784endif
785SHA1OBJS += ../src/crypto/sha1-prf.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700786ifdef CONFIG_INTERNAL_SHA1
787SHA1OBJS += ../src/crypto/sha1-internal.o
788ifdef NEED_FIPS186_2_PRF
789SHA1OBJS += ../src/crypto/fips_prf_internal.o
790endif
791endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700792ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700793SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700794endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700795ifdef NEED_T_PRF
796SHA1OBJS += ../src/crypto/sha1-tprf.o
797endif
798ifdef NEED_TLS_PRF
799SHA1OBJS += ../src/crypto/sha1-tlsprf.o
800endif
801endif
802
803ifdef NEED_SHA1
804OBJS += $(SHA1OBJS)
805endif
806
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800807ifneq ($(CONFIG_TLS), openssl)
808OBJS += ../src/crypto/md5.o
809endif
810
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700811ifdef NEED_MD5
812ifdef CONFIG_INTERNAL_MD5
813OBJS += ../src/crypto/md5-internal.o
814HOBJS += ../src/crypto/md5-internal.o
815endif
816endif
817
818ifdef NEED_MD4
819ifdef CONFIG_INTERNAL_MD4
820OBJS += ../src/crypto/md4-internal.o
821endif
822endif
823
824ifdef NEED_DES
825ifdef CONFIG_INTERNAL_DES
826OBJS += ../src/crypto/des-internal.o
827endif
828endif
829
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800830ifdef CONFIG_NO_RC4
831CFLAGS += -DCONFIG_NO_RC4
832endif
833
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700834ifdef NEED_RC4
835ifdef CONFIG_INTERNAL_RC4
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800836ifndef CONFIG_NO_RC4
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700837OBJS += ../src/crypto/rc4.o
838endif
839endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800840endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700841
842ifdef NEED_SHA256
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800843CFLAGS += -DCONFIG_SHA256
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700844ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700845OBJS += ../src/crypto/sha256.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700846endif
847OBJS += ../src/crypto/sha256-prf.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700848ifdef CONFIG_INTERNAL_SHA256
849OBJS += ../src/crypto/sha256-internal.o
850endif
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800851ifdef NEED_TLS_PRF_SHA256
852OBJS += ../src/crypto/sha256-tlsprf.o
853endif
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800854ifdef NEED_HMAC_SHA256_KDF
855OBJS += ../src/crypto/sha256-kdf.o
856endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700857endif
Dmitry Shmidt807291d2015-01-27 13:40:23 -0800858ifdef NEED_SHA384
859CFLAGS += -DCONFIG_SHA384
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800860OBJS += ../src/crypto/sha384-prf.o
Dmitry Shmidt807291d2015-01-27 13:40:23 -0800861endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700862
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800863ifdef CONFIG_INTERNAL_SHA384
864CFLAGS += -DCONFIG_INTERNAL_SHA384
865OBJS += ../src/crypto/sha384-internal.o
866endif
867
868ifdef CONFIG_INTERNAL_SHA512
869CFLAGS += -DCONFIG_INTERNAL_SHA512
870OBJS += ../src/crypto/sha512-internal.o
871endif
872
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700873ifdef NEED_DH_GROUPS
874OBJS += ../src/crypto/dh_groups.o
875endif
876ifdef NEED_DH_GROUPS_ALL
877CFLAGS += -DALL_DH_GROUPS
878endif
879ifdef CONFIG_INTERNAL_DH_GROUP5
880ifdef NEED_DH_GROUPS
881OBJS += ../src/crypto/dh_group5.o
882endif
883endif
884
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800885ifdef NEED_ECC
886CFLAGS += -DCONFIG_ECC
887endif
888
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700889ifdef CONFIG_NO_RANDOM_POOL
890CFLAGS += -DCONFIG_NO_RANDOM_POOL
891else
892OBJS += ../src/crypto/random.o
893HOBJS += ../src/crypto/random.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800894HOBJS += ../src/utils/eloop.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700895HOBJS += $(SHA1OBJS)
Dmitry Shmidtdda10c22015-03-24 16:05:01 -0700896ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700897HOBJS += ../src/crypto/md5.o
898endif
Dmitry Shmidtdda10c22015-03-24 16:05:01 -0700899endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700900
901ifdef CONFIG_RADIUS_SERVER
902CFLAGS += -DRADIUS_SERVER
903OBJS += ../src/radius/radius_server.o
904endif
905
906ifdef CONFIG_IPV6
907CFLAGS += -DCONFIG_IPV6
908endif
909
910ifdef CONFIG_DRIVER_RADIUS_ACL
911CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
912endif
913
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700914ifdef NEED_BASE64
915OBJS += ../src/utils/base64.o
916endif
917
918ifdef NEED_AP_MLME
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700919OBJS += ../src/ap/wmm.o
920OBJS += ../src/ap/ap_list.o
921OBJS += ../src/ap/ieee802_11.o
922OBJS += ../src/ap/hw_features.o
Dmitry Shmidt051af732013-10-22 13:52:46 -0700923OBJS += ../src/ap/dfs.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700924CFLAGS += -DNEED_AP_MLME
925endif
926ifdef CONFIG_IEEE80211N
927OBJS += ../src/ap/ieee802_11_ht.o
928endif
929
Dmitry Shmidt04949592012-07-19 12:16:46 -0700930ifdef CONFIG_IEEE80211AC
931OBJS += ../src/ap/ieee802_11_vht.o
932endif
933
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700934ifdef CONFIG_P2P_MANAGER
935CFLAGS += -DCONFIG_P2P_MANAGER
936OBJS += ../src/ap/p2p_hostapd.o
937endif
938
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700939ifdef CONFIG_HS20
940CFLAGS += -DCONFIG_HS20
941OBJS += ../src/ap/hs20.o
942CONFIG_INTERWORKING=y
943endif
944
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800945ifdef CONFIG_INTERWORKING
946CFLAGS += -DCONFIG_INTERWORKING
Dmitry Shmidt04949592012-07-19 12:16:46 -0700947OBJS += ../src/common/gas.o
948OBJS += ../src/ap/gas_serv.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800949endif
950
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800951ifdef CONFIG_PROXYARP
952CFLAGS += -DCONFIG_PROXYARP
953OBJS += ../src/ap/x_snoop.o
954OBJS += ../src/ap/dhcp_snoop.o
955ifdef CONFIG_IPV6
956OBJS += ../src/ap/ndisc_snoop.o
957endif
958endif
959
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800960OBJS += ../src/drivers/driver_common.o
961
962ifdef CONFIG_WPA_CLI_EDIT
963OBJS_c += ../src/utils/edit.o
964else
965OBJS_c += ../src/utils/edit_simple.o
966endif
967
Dmitry Shmidt391c59f2013-09-03 12:16:28 -0700968ifdef CONFIG_ACS
969CFLAGS += -DCONFIG_ACS
970OBJS += ../src/ap/acs.o
971LIBS += -lm
972endif
973
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700974ifdef CONFIG_NO_STDOUT_DEBUG
975CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
976endif
977
Dmitry Shmidtcce06662013-11-04 18:44:24 -0800978ifdef CONFIG_DEBUG_LINUX_TRACING
979CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
980endif
981
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700982ifdef CONFIG_DEBUG_FILE
983CFLAGS += -DCONFIG_DEBUG_FILE
984endif
985
Dmitry Shmidt4530cfd2012-09-09 15:20:40 -0700986ifdef CONFIG_SQLITE
987CFLAGS += -DCONFIG_SQLITE
988LIBS += -lsqlite3
989LIBS_h += -lsqlite3
990endif
991
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800992ifdef CONFIG_FST
993CFLAGS += -DCONFIG_FST
994OBJS += ../src/fst/fst.o
995OBJS += ../src/fst/fst_group.o
996OBJS += ../src/fst/fst_iface.o
997OBJS += ../src/fst/fst_session.o
998OBJS += ../src/fst/fst_ctrl_aux.o
999ifdef CONFIG_FST_TEST
1000CFLAGS += -DCONFIG_FST_TEST
1001endif
1002ifndef CONFIG_NO_CTRL_IFACE
1003OBJS += ../src/fst/fst_ctrl_iface.o
1004endif
1005endif
1006
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001007ALL=hostapd hostapd_cli
1008
1009all: verify_config $(ALL)
1010
1011Q=@
1012E=echo
1013ifeq ($(V), 1)
1014Q=
1015E=true
1016endif
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001017ifeq ($(QUIET), 1)
1018Q=@
1019E=true
1020endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001021
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001022ifdef CONFIG_CODE_COVERAGE
1023%.o: %.c
1024 @$(E) " CC " $<
1025 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<)
1026else
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001027%.o: %.c
1028 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1029 @$(E) " CC " $<
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001030endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001031
1032verify_config:
1033 @if [ ! -r .config ]; then \
1034 echo 'Building hostapd requires a configuration file'; \
1035 echo '(.config). See README for more instructions. You can'; \
1036 echo 'run "cp defconfig .config" to create an example'; \
1037 echo 'configuration.'; \
1038 exit 1; \
1039 fi
1040
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001041$(DESTDIR)$(BINDIR)/%: %
1042 install -D $(<) $(@)
1043
1044install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL))
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001045
1046../src/drivers/build.hostapd:
1047 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \
1048 $(MAKE) -C ../src/drivers clean; \
1049 fi
1050 @touch ../src/drivers/build.hostapd
1051
1052BCHECK=../src/drivers/build.hostapd
1053
1054hostapd: $(BCHECK) $(OBJS)
1055 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
1056 @$(E) " LD " $@
1057
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001058ifdef CONFIG_WPA_TRACE
1059OBJS_c += ../src/utils/trace.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001060endif
1061hostapd_cli: $(OBJS_c)
1062 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
1063 @$(E) " LD " $@
1064
Dmitry Shmidt216983b2015-02-06 10:50:36 -08001065NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
Dmitry Shmidtff787d52015-01-12 13:01:47 -08001066NOBJS += ../src/utils/common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001067ifdef NEED_RC4
1068ifdef CONFIG_INTERNAL_RC4
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001069ifndef CONFIG_NO_RC4
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001070NOBJS += ../src/crypto/rc4.o
1071endif
1072endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001073endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001074ifdef CONFIG_INTERNAL_MD5
1075NOBJS += ../src/crypto/md5-internal.o
1076endif
1077NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o
1078NOBJS += ../src/utils/wpa_debug.o
1079NOBJS += ../src/utils/wpabuf.o
1080ifdef CONFIG_WPA_TRACE
1081NOBJS += ../src/utils/trace.o
1082LIBS_n += -lbfd
1083endif
1084ifdef TLS_FUNCS
1085LIBS_n += -lcrypto
1086endif
1087
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001088HOBJS += 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
1089HOBJS += ../src/crypto/aes-encblock.o
1090ifdef CONFIG_INTERNAL_AES
1091HOBJS += ../src/crypto/aes-internal.o
1092HOBJS += ../src/crypto/aes-internal-enc.o
1093endif
1094
1095nt_password_hash: $(NOBJS)
1096 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
1097 @$(E) " LD " $@
1098
1099hlr_auc_gw: $(HOBJS)
1100 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
1101 @$(E) " LD " $@
1102
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001103lcov-html:
1104 lcov -c -d .. > lcov.info
1105 genhtml lcov.info --output-directory lcov-html
1106
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001107clean:
1108 $(MAKE) -C ../src clean
1109 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
Dmitry Shmidt01904cf2013-12-05 11:08:35 -08001110 rm -f *.d *.gcno *.gcda *.gcov
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001111 rm -f lcov.info
1112 rm -rf lcov-html
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001113
1114-include $(OBJS:%.o=%.d)