blob: 62f3b32446ea05ecaf308eb209ee02703f23b817 [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# Uncomment following line and set the path to your kernel tree include
31# directory if your C library does not include all header files.
32# CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include
33
34-include .config
35
Dmitry Shmidtd80a4012015-11-05 16:35:40 -080036ifndef CONFIG_NO_GITVER
37# Add VERSION_STR postfix for builds from a git repository
38ifeq ($(wildcard ../.git),../.git)
39GITVER := $(shell git describe --dirty=+)
40ifneq ($(GITVER),)
41CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\"
42endif
43endif
44endif
45
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -080046ifdef CONFIG_TESTING_OPTIONS
47CFLAGS += -DCONFIG_TESTING_OPTIONS
48CONFIG_WPS_TESTING=y
49endif
50
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070051ifndef CONFIG_OS
52ifdef CONFIG_NATIVE_WINDOWS
53CONFIG_OS=win32
54else
55CONFIG_OS=unix
56endif
57endif
58
59ifeq ($(CONFIG_OS), internal)
60CFLAGS += -DOS_NO_C_LIB_DEFINES
61endif
62
63ifdef CONFIG_NATIVE_WINDOWS
64CFLAGS += -DCONFIG_NATIVE_WINDOWS
65LIBS += -lws2_32
66endif
67
68OBJS += main.o
69OBJS += config_file.o
70
71OBJS += ../src/ap/hostapd.o
72OBJS += ../src/ap/wpa_auth_glue.o
73OBJS += ../src/ap/drv_callbacks.o
74OBJS += ../src/ap/ap_drv_ops.o
75OBJS += ../src/ap/utils.o
76OBJS += ../src/ap/authsrv.o
77OBJS += ../src/ap/ieee802_1x.o
78OBJS += ../src/ap/ap_config.o
Dmitry Shmidtd5e49232012-12-03 15:08:10 -080079OBJS += ../src/ap/eap_user_db.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070080OBJS += ../src/ap/ieee802_11_auth.o
81OBJS += ../src/ap/sta_info.o
82OBJS += ../src/ap/wpa_auth.o
83OBJS += ../src/ap/tkip_countermeasures.o
84OBJS += ../src/ap/ap_mlme.o
85OBJS += ../src/ap/wpa_auth_ie.o
86OBJS += ../src/ap/preauth_auth.o
87OBJS += ../src/ap/pmksa_cache_auth.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080088OBJS += ../src/ap/ieee802_11_shared.o
89OBJS += ../src/ap/beacon.o
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -080090OBJS += ../src/ap/bss_load.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080091
92OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070093
94NEED_RC4=y
95NEED_AES=y
96NEED_MD5=y
97NEED_SHA1=y
98
99OBJS += ../src/drivers/drivers.o
100CFLAGS += -DHOSTAPD
101
Dmitry Shmidt7f93d6f2014-02-21 11:22:49 -0800102ifdef CONFIG_MODULE_TESTS
103CFLAGS += -DCONFIG_MODULE_TESTS
104OBJS += hapd_module_tests.o
105endif
106
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700107ifdef CONFIG_WPA_TRACE
108CFLAGS += -DWPA_TRACE
109OBJS += ../src/utils/trace.o
110HOBJS += ../src/utils/trace.o
111LDFLAGS += -rdynamic
112CFLAGS += -funwind-tables
113ifdef CONFIG_WPA_TRACE_BFD
Dmitry Shmidtec58b162014-02-19 12:44:18 -0800114CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD
Dmitry Shmidt13ca8d82014-02-20 10:18:40 -0800115LIBS += -lbfd -ldl -liberty -lz
116LIBS_c += -lbfd -ldl -liberty -lz
117LIBS_h += -lbfd -ldl -liberty -lz
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700118endif
119endif
120
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800121ifndef CONFIG_ELOOP
122CONFIG_ELOOP=eloop
123endif
124OBJS += ../src/utils/$(CONFIG_ELOOP).o
125OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
Dmitry Shmidtfa3fc4a2013-11-21 13:34:38 -0800126
127ifeq ($(CONFIG_ELOOP), eloop)
128# Using glibc < 2.17 requires -lrt for clock_gettime()
129LIBS += -lrt
130LIBS_c += -lrt
131LIBS_h += -lrt
Dmitry Shmidtbd14a572014-02-18 10:33:49 -0800132LIBS_n += -lrt
Dmitry Shmidtfa3fc4a2013-11-21 13:34:38 -0800133endif
134
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800135ifdef CONFIG_ELOOP_POLL
136CFLAGS += -DCONFIG_ELOOP_POLL
137endif
138
139ifdef CONFIG_ELOOP_EPOLL
140CFLAGS += -DCONFIG_ELOOP_EPOLL
141endif
142
Dmitry Shmidtb97e4282016-02-08 10:16:07 -0800143ifdef CONFIG_ELOOP_KQUEUE
144CFLAGS += -DCONFIG_ELOOP_KQUEUE
145endif
146
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700147OBJS += ../src/utils/common.o
Dmitry Shmidta3dc3092015-06-23 11:21:28 -0700148OBJS_c += ../src/utils/common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700149OBJS += ../src/utils/wpa_debug.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800150OBJS_c += ../src/utils/wpa_debug.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700151OBJS += ../src/utils/wpabuf.o
152OBJS += ../src/utils/os_$(CONFIG_OS).o
153OBJS += ../src/utils/ip_addr.o
154
155OBJS += ../src/common/ieee802_11_common.o
156OBJS += ../src/common/wpa_common.o
Dmitry Shmidtff787d52015-01-12 13:01:47 -0800157OBJS += ../src/common/hw_features_common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700158
159OBJS += ../src/eapol_auth/eapol_auth_sm.o
160
161
Dmitry Shmidt01904cf2013-12-05 11:08:35 -0800162ifdef CONFIG_CODE_COVERAGE
163CFLAGS += -O0 -fprofile-arcs -ftest-coverage
164LIBS += -lgcov
165LIBS_c += -lgcov
166LIBS_h += -lgcov
167LIBS_n += -lgcov
168endif
169
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700170ifndef CONFIG_NO_DUMP_STATE
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800171# define HOSTAPD_DUMP_STATE to include support for dumping internal state
172# through control interface commands (undefine it, if you want to save in
173# binary size)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700174CFLAGS += -DHOSTAPD_DUMP_STATE
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700175OBJS += ../src/eapol_auth/eapol_auth_dump.o
176endif
177
178ifdef CONFIG_NO_RADIUS
179CFLAGS += -DCONFIG_NO_RADIUS
180CONFIG_NO_ACCOUNTING=y
181else
182OBJS += ../src/radius/radius.o
183OBJS += ../src/radius/radius_client.o
Dmitry Shmidt04949592012-07-19 12:16:46 -0700184OBJS += ../src/radius/radius_das.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700185endif
186
187ifdef CONFIG_NO_ACCOUNTING
188CFLAGS += -DCONFIG_NO_ACCOUNTING
189else
190OBJS += ../src/ap/accounting.o
191endif
192
193ifdef CONFIG_NO_VLAN
194CFLAGS += -DCONFIG_NO_VLAN
195else
196OBJS += ../src/ap/vlan_init.o
Dmitry Shmidt57c2d392016-02-23 13:40:19 -0800197OBJS += ../src/ap/vlan.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700198ifdef CONFIG_VLAN_NETLINK
199ifdef CONFIG_FULL_DYNAMIC_VLAN
200OBJS += ../src/ap/vlan_util.o
201endif
202CFLAGS += -DCONFIG_VLAN_NETLINK
203endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700204endif
205
206ifdef CONFIG_NO_CTRL_IFACE
207CFLAGS += -DCONFIG_NO_CTRL_IFACE
208else
209OBJS += ctrl_iface.o
210OBJS += ../src/ap/ctrl_iface_ap.o
211endif
212
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700213CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX
214
215ifdef CONFIG_IAPP
216CFLAGS += -DCONFIG_IAPP
217OBJS += ../src/ap/iapp.o
218endif
219
220ifdef CONFIG_RSN_PREAUTH
221CFLAGS += -DCONFIG_RSN_PREAUTH
222CONFIG_L2_PACKET=y
223endif
224
225ifdef CONFIG_PEERKEY
226CFLAGS += -DCONFIG_PEERKEY
227OBJS += ../src/ap/peerkey_auth.o
228endif
229
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800230ifdef CONFIG_HS20
231NEED_AES_OMAC1=y
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800232CONFIG_PROXYARP=y
233endif
234
235ifdef CONFIG_PROXYARP
236CONFIG_L2_PACKET=y
237endif
238
239ifdef CONFIG_SUITEB
240CFLAGS += -DCONFIG_SUITEB
241NEED_SHA256=y
242NEED_AES_OMAC1=y
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800243endif
244
Dmitry Shmidt807291d2015-01-27 13:40:23 -0800245ifdef CONFIG_SUITEB192
246CFLAGS += -DCONFIG_SUITEB192
247NEED_SHA384=y
248endif
249
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700250ifdef CONFIG_IEEE80211W
251CFLAGS += -DCONFIG_IEEE80211W
252NEED_SHA256=y
253NEED_AES_OMAC1=y
254endif
255
256ifdef CONFIG_IEEE80211R
257CFLAGS += -DCONFIG_IEEE80211R
258OBJS += ../src/ap/wpa_auth_ft.o
259NEED_SHA256=y
260NEED_AES_OMAC1=y
261NEED_AES_UNWRAP=y
262endif
263
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800264ifdef CONFIG_SAE
265CFLAGS += -DCONFIG_SAE
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800266OBJS += ../src/common/sae.o
267NEED_ECC=y
268NEED_DH_GROUPS=y
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700269NEED_AP_MLME=y
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800270endif
271
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800272ifdef CONFIG_WNM
273CFLAGS += -DCONFIG_WNM
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700274OBJS += ../src/ap/wnm_ap.o
275endif
276
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700277ifdef CONFIG_IEEE80211N
278CFLAGS += -DCONFIG_IEEE80211N
279endif
280
Dmitry Shmidt04949592012-07-19 12:16:46 -0700281ifdef CONFIG_IEEE80211AC
282CFLAGS += -DCONFIG_IEEE80211AC
283endif
284
Dmitry Shmidt57c2d392016-02-23 13:40:19 -0800285ifdef CONFIG_MBO
286CFLAGS += -DCONFIG_MBO
287OBJS += ../src/ap/mbo_ap.o
288endif
289
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700290include ../src/drivers/drivers.mak
291OBJS += $(DRV_AP_OBJS)
292CFLAGS += $(DRV_AP_CFLAGS)
293LDFLAGS += $(DRV_AP_LDFLAGS)
294LIBS += $(DRV_AP_LIBS)
295
296ifdef CONFIG_L2_PACKET
297ifdef CONFIG_DNET_PCAP
298ifdef CONFIG_L2_FREEBSD
299LIBS += -lpcap
300OBJS += ../src/l2_packet/l2_packet_freebsd.o
301else
302LIBS += -ldnet -lpcap
303OBJS += ../src/l2_packet/l2_packet_pcap.o
304endif
305else
306OBJS += ../src/l2_packet/l2_packet_linux.o
307endif
308else
309OBJS += ../src/l2_packet/l2_packet_none.o
310endif
311
312
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800313ifdef CONFIG_ERP
314CFLAGS += -DCONFIG_ERP
315NEED_SHA256=y
316NEED_HMAC_SHA256_KDF=y
317endif
318
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700319ifdef CONFIG_EAP_MD5
320CFLAGS += -DEAP_SERVER_MD5
321OBJS += ../src/eap_server/eap_server_md5.o
322CHAP=y
323endif
324
325ifdef CONFIG_EAP_TLS
326CFLAGS += -DEAP_SERVER_TLS
327OBJS += ../src/eap_server/eap_server_tls.o
328TLS_FUNCS=y
329endif
330
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700331ifdef CONFIG_EAP_UNAUTH_TLS
332CFLAGS += -DEAP_SERVER_UNAUTH_TLS
333ifndef CONFIG_EAP_TLS
334OBJS += ../src/eap_server/eap_server_tls.o
335TLS_FUNCS=y
336endif
337endif
338
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700339ifdef CONFIG_EAP_PEAP
340CFLAGS += -DEAP_SERVER_PEAP
341OBJS += ../src/eap_server/eap_server_peap.o
342OBJS += ../src/eap_common/eap_peap_common.o
343TLS_FUNCS=y
344CONFIG_EAP_MSCHAPV2=y
345endif
346
347ifdef CONFIG_EAP_TTLS
348CFLAGS += -DEAP_SERVER_TTLS
349OBJS += ../src/eap_server/eap_server_ttls.o
350TLS_FUNCS=y
351CHAP=y
352endif
353
354ifdef CONFIG_EAP_MSCHAPV2
355CFLAGS += -DEAP_SERVER_MSCHAPV2
356OBJS += ../src/eap_server/eap_server_mschapv2.o
357MS_FUNCS=y
358endif
359
360ifdef CONFIG_EAP_GTC
361CFLAGS += -DEAP_SERVER_GTC
362OBJS += ../src/eap_server/eap_server_gtc.o
363endif
364
365ifdef CONFIG_EAP_SIM
366CFLAGS += -DEAP_SERVER_SIM
367OBJS += ../src/eap_server/eap_server_sim.o
368CONFIG_EAP_SIM_COMMON=y
369NEED_AES_CBC=y
370endif
371
372ifdef CONFIG_EAP_AKA
373CFLAGS += -DEAP_SERVER_AKA
374OBJS += ../src/eap_server/eap_server_aka.o
375CONFIG_EAP_SIM_COMMON=y
376NEED_SHA256=y
377NEED_AES_CBC=y
378endif
379
380ifdef CONFIG_EAP_AKA_PRIME
381CFLAGS += -DEAP_SERVER_AKA_PRIME
382endif
383
384ifdef CONFIG_EAP_SIM_COMMON
385OBJS += ../src/eap_common/eap_sim_common.o
386# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
387# replaced with another file implementating the interface specified in
388# eap_sim_db.h.
389OBJS += ../src/eap_server/eap_sim_db.o
390NEED_FIPS186_2_PRF=y
391endif
392
393ifdef CONFIG_EAP_PAX
394CFLAGS += -DEAP_SERVER_PAX
395OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
396endif
397
398ifdef CONFIG_EAP_PSK
399CFLAGS += -DEAP_SERVER_PSK
400OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
401NEED_AES_OMAC1=y
402NEED_AES_ENCBLOCK=y
403NEED_AES_EAX=y
404endif
405
406ifdef CONFIG_EAP_SAKE
407CFLAGS += -DEAP_SERVER_SAKE
408OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
409endif
410
411ifdef CONFIG_EAP_GPSK
412CFLAGS += -DEAP_SERVER_GPSK
413OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
414ifdef CONFIG_EAP_GPSK_SHA256
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800415CFLAGS += -DEAP_GPSK_SHA256
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700416endif
417NEED_SHA256=y
418NEED_AES_OMAC1=y
419endif
420
421ifdef CONFIG_EAP_PWD
422CFLAGS += -DEAP_SERVER_PWD
423OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
424NEED_SHA256=y
425endif
426
Dmitry Shmidt34af3062013-07-11 10:46:32 -0700427ifdef CONFIG_EAP_EKE
428CFLAGS += -DEAP_SERVER_EKE
429OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o
430NEED_DH_GROUPS=y
431NEED_DH_GROUPS_ALL=y
432endif
433
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700434ifdef CONFIG_EAP_VENDOR_TEST
435CFLAGS += -DEAP_SERVER_VENDOR_TEST
436OBJS += ../src/eap_server/eap_server_vendor_test.o
437endif
438
439ifdef CONFIG_EAP_FAST
440CFLAGS += -DEAP_SERVER_FAST
441OBJS += ../src/eap_server/eap_server_fast.o
442OBJS += ../src/eap_common/eap_fast_common.o
443TLS_FUNCS=y
444NEED_T_PRF=y
445NEED_AES_UNWRAP=y
446endif
447
448ifdef CONFIG_WPS
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700449CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
450OBJS += ../src/utils/uuid.o
451OBJS += ../src/ap/wps_hostapd.o
452OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
453OBJS += ../src/wps/wps.o
454OBJS += ../src/wps/wps_common.o
455OBJS += ../src/wps/wps_attr_parse.o
456OBJS += ../src/wps/wps_attr_build.o
457OBJS += ../src/wps/wps_attr_process.o
458OBJS += ../src/wps/wps_dev_attr.o
459OBJS += ../src/wps/wps_enrollee.o
460OBJS += ../src/wps/wps_registrar.o
461NEED_DH_GROUPS=y
462NEED_SHA256=y
463NEED_BASE64=y
464NEED_AES_CBC=y
465NEED_MODEXP=y
466CONFIG_EAP=y
467
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700468ifdef CONFIG_WPS_NFC
469CFLAGS += -DCONFIG_WPS_NFC
470OBJS += ../src/wps/ndef.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700471NEED_WPS_OOB=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700472endif
473
474ifdef NEED_WPS_OOB
475CFLAGS += -DCONFIG_WPS_OOB
476endif
477
478ifdef CONFIG_WPS_UPNP
479CFLAGS += -DCONFIG_WPS_UPNP
480OBJS += ../src/wps/wps_upnp.o
481OBJS += ../src/wps/wps_upnp_ssdp.o
482OBJS += ../src/wps/wps_upnp_web.o
483OBJS += ../src/wps/wps_upnp_event.o
484OBJS += ../src/wps/wps_upnp_ap.o
485OBJS += ../src/wps/upnp_xml.o
486OBJS += ../src/wps/httpread.o
487OBJS += ../src/wps/http_client.o
488OBJS += ../src/wps/http_server.o
489endif
490
491ifdef CONFIG_WPS_STRICT
492CFLAGS += -DCONFIG_WPS_STRICT
493OBJS += ../src/wps/wps_validate.o
494endif
495
496ifdef CONFIG_WPS_TESTING
497CFLAGS += -DCONFIG_WPS_TESTING
498endif
499
500endif
501
502ifdef CONFIG_EAP_IKEV2
503CFLAGS += -DEAP_SERVER_IKEV2
504OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
505OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
506NEED_DH_GROUPS=y
507NEED_DH_GROUPS_ALL=y
508NEED_MODEXP=y
509NEED_CIPHER=y
510endif
511
512ifdef CONFIG_EAP_TNC
513CFLAGS += -DEAP_SERVER_TNC
514OBJS += ../src/eap_server/eap_server_tnc.o
515OBJS += ../src/eap_server/tncs.o
516NEED_BASE64=y
517ifndef CONFIG_DRIVER_BSD
518LIBS += -ldl
519endif
520endif
521
522# Basic EAP functionality is needed for EAPOL
523OBJS += eap_register.o
524OBJS += ../src/eap_server/eap_server.o
525OBJS += ../src/eap_common/eap_common.o
526OBJS += ../src/eap_server/eap_server_methods.o
527OBJS += ../src/eap_server/eap_server_identity.o
528CFLAGS += -DEAP_SERVER_IDENTITY
529
530ifdef CONFIG_EAP
531CFLAGS += -DEAP_SERVER
532endif
533
534ifdef CONFIG_PKCS12
535CFLAGS += -DPKCS12_FUNCS
536endif
537
538ifdef MS_FUNCS
539OBJS += ../src/crypto/ms_funcs.o
540NEED_DES=y
541NEED_MD4=y
542endif
543
544ifdef CHAP
545OBJS += ../src/eap_common/chap.o
546endif
547
548ifdef TLS_FUNCS
549NEED_DES=y
550# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
551CFLAGS += -DEAP_TLS_FUNCS
552OBJS += ../src/eap_server/eap_server_tls_common.o
553NEED_TLS_PRF=y
554endif
555
556ifndef CONFIG_TLS
557CONFIG_TLS=openssl
558endif
559
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800560ifdef CONFIG_TLSV11
561CFLAGS += -DCONFIG_TLSV11
562endif
563
564ifdef CONFIG_TLSV12
565CFLAGS += -DCONFIG_TLSV12
566NEED_SHA256=y
567endif
568
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700569ifeq ($(CONFIG_TLS), openssl)
570ifdef TLS_FUNCS
571OBJS += ../src/crypto/tls_openssl.o
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800572OBJS += ../src/crypto/tls_openssl_ocsp.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700573LIBS += -lssl
574endif
575OBJS += ../src/crypto/crypto_openssl.o
576HOBJS += ../src/crypto/crypto_openssl.o
577ifdef NEED_FIPS186_2_PRF
578OBJS += ../src/crypto/fips_prf_openssl.o
579endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800580NEED_SHA256=y
581NEED_TLS_PRF_SHA256=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700582LIBS += -lcrypto
583LIBS_h += -lcrypto
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800584ifdef CONFIG_TLS_ADD_DL
585LIBS += -ldl
586LIBS_h += -ldl
587endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700588endif
589
590ifeq ($(CONFIG_TLS), gnutls)
591ifdef TLS_FUNCS
592OBJS += ../src/crypto/tls_gnutls.o
593LIBS += -lgnutls -lgpg-error
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700594endif
595OBJS += ../src/crypto/crypto_gnutls.o
596HOBJS += ../src/crypto/crypto_gnutls.o
597ifdef NEED_FIPS186_2_PRF
Dmitry Shmidt98660862014-03-11 17:26:21 -0700598OBJS += ../src/crypto/fips_prf_internal.o
599SHA1OBJS += ../src/crypto/sha1-internal.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700600endif
601LIBS += -lgcrypt
602LIBS_h += -lgcrypt
603CONFIG_INTERNAL_SHA256=y
604CONFIG_INTERNAL_RC4=y
605CONFIG_INTERNAL_DH_GROUP5=y
606endif
607
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700608ifeq ($(CONFIG_TLS), internal)
609ifndef CONFIG_CRYPTO
610CONFIG_CRYPTO=internal
611endif
612ifdef TLS_FUNCS
613OBJS += ../src/crypto/crypto_internal-rsa.o
614OBJS += ../src/crypto/tls_internal.o
615OBJS += ../src/tls/tlsv1_common.o
616OBJS += ../src/tls/tlsv1_record.o
617OBJS += ../src/tls/tlsv1_cred.o
618OBJS += ../src/tls/tlsv1_server.o
619OBJS += ../src/tls/tlsv1_server_write.o
620OBJS += ../src/tls/tlsv1_server_read.o
621OBJS += ../src/tls/asn1.o
622OBJS += ../src/tls/rsa.o
623OBJS += ../src/tls/x509v3.o
624OBJS += ../src/tls/pkcs1.o
625OBJS += ../src/tls/pkcs5.o
626OBJS += ../src/tls/pkcs8.o
627NEED_SHA256=y
628NEED_BASE64=y
629NEED_TLS_PRF=y
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800630ifdef CONFIG_TLSV12
631NEED_TLS_PRF_SHA256=y
632endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700633NEED_MODEXP=y
634NEED_CIPHER=y
635CFLAGS += -DCONFIG_TLS_INTERNAL
636CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
637endif
638ifdef NEED_CIPHER
639NEED_DES=y
640OBJS += ../src/crypto/crypto_internal-cipher.o
641endif
642ifdef NEED_MODEXP
643OBJS += ../src/crypto/crypto_internal-modexp.o
644OBJS += ../src/tls/bignum.o
645endif
646ifeq ($(CONFIG_CRYPTO), libtomcrypt)
647OBJS += ../src/crypto/crypto_libtomcrypt.o
648LIBS += -ltomcrypt -ltfm
649LIBS_h += -ltomcrypt -ltfm
650CONFIG_INTERNAL_SHA256=y
651CONFIG_INTERNAL_RC4=y
652CONFIG_INTERNAL_DH_GROUP5=y
653endif
654ifeq ($(CONFIG_CRYPTO), internal)
655OBJS += ../src/crypto/crypto_internal.o
656NEED_AES_DEC=y
657CFLAGS += -DCONFIG_CRYPTO_INTERNAL
658ifdef CONFIG_INTERNAL_LIBTOMMATH
659CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
660ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
661CFLAGS += -DLTM_FAST
662endif
663else
664LIBS += -ltommath
665LIBS_h += -ltommath
666endif
667CONFIG_INTERNAL_AES=y
668CONFIG_INTERNAL_DES=y
669CONFIG_INTERNAL_SHA1=y
670CONFIG_INTERNAL_MD4=y
671CONFIG_INTERNAL_MD5=y
672CONFIG_INTERNAL_SHA256=y
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800673CONFIG_INTERNAL_SHA384=y
674CONFIG_INTERNAL_SHA512=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700675CONFIG_INTERNAL_RC4=y
676CONFIG_INTERNAL_DH_GROUP5=y
677endif
678ifeq ($(CONFIG_CRYPTO), cryptoapi)
679OBJS += ../src/crypto/crypto_cryptoapi.o
680OBJS_p += ../src/crypto/crypto_cryptoapi.o
681CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
682CONFIG_INTERNAL_SHA256=y
683CONFIG_INTERNAL_RC4=y
684endif
685endif
686
687ifeq ($(CONFIG_TLS), none)
688ifdef TLS_FUNCS
689OBJS += ../src/crypto/tls_none.o
690CFLAGS += -DEAP_TLS_NONE
691CONFIG_INTERNAL_AES=y
692CONFIG_INTERNAL_SHA1=y
693CONFIG_INTERNAL_MD5=y
694endif
695OBJS += ../src/crypto/crypto_none.o
696OBJS_p += ../src/crypto/crypto_none.o
697CONFIG_INTERNAL_SHA256=y
698CONFIG_INTERNAL_RC4=y
699endif
700
701ifndef TLS_FUNCS
702OBJS += ../src/crypto/tls_none.o
703ifeq ($(CONFIG_TLS), internal)
704CONFIG_INTERNAL_AES=y
705CONFIG_INTERNAL_SHA1=y
706CONFIG_INTERNAL_MD5=y
707CONFIG_INTERNAL_RC4=y
708endif
709endif
710
711AESOBJS = # none so far
712ifdef CONFIG_INTERNAL_AES
713AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
714endif
715
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800716ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700717AESOBJS += ../src/crypto/aes-wrap.o
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800718endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700719ifdef NEED_AES_EAX
720AESOBJS += ../src/crypto/aes-eax.o
721NEED_AES_CTR=y
722endif
723ifdef NEED_AES_CTR
724AESOBJS += ../src/crypto/aes-ctr.o
725endif
726ifdef NEED_AES_ENCBLOCK
727AESOBJS += ../src/crypto/aes-encblock.o
728endif
729ifdef NEED_AES_OMAC1
730AESOBJS += ../src/crypto/aes-omac1.o
731endif
732ifdef NEED_AES_UNWRAP
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800733ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700734NEED_AES_DEC=y
735AESOBJS += ../src/crypto/aes-unwrap.o
736endif
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800737endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700738ifdef NEED_AES_CBC
739NEED_AES_DEC=y
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700740ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700741AESOBJS += ../src/crypto/aes-cbc.o
742endif
Dmitry Shmidt912c6ec2015-03-30 13:16:51 -0700743endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700744ifdef NEED_AES_DEC
745ifdef CONFIG_INTERNAL_AES
746AESOBJS += ../src/crypto/aes-internal-dec.o
747endif
748endif
749ifdef NEED_AES
750OBJS += $(AESOBJS)
751endif
752
753ifdef NEED_SHA1
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700754ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700755SHA1OBJS += ../src/crypto/sha1.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700756endif
757SHA1OBJS += ../src/crypto/sha1-prf.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700758ifdef CONFIG_INTERNAL_SHA1
759SHA1OBJS += ../src/crypto/sha1-internal.o
760ifdef NEED_FIPS186_2_PRF
761SHA1OBJS += ../src/crypto/fips_prf_internal.o
762endif
763endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700764ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700765SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700766endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700767ifdef NEED_T_PRF
768SHA1OBJS += ../src/crypto/sha1-tprf.o
769endif
770ifdef NEED_TLS_PRF
771SHA1OBJS += ../src/crypto/sha1-tlsprf.o
772endif
773endif
774
775ifdef NEED_SHA1
776OBJS += $(SHA1OBJS)
777endif
778
Dmitry Shmidt216983b2015-02-06 10:50:36 -0800779ifneq ($(CONFIG_TLS), openssl)
780OBJS += ../src/crypto/md5.o
781endif
782
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700783ifdef NEED_MD5
784ifdef CONFIG_INTERNAL_MD5
785OBJS += ../src/crypto/md5-internal.o
786HOBJS += ../src/crypto/md5-internal.o
787endif
788endif
789
790ifdef NEED_MD4
791ifdef CONFIG_INTERNAL_MD4
792OBJS += ../src/crypto/md4-internal.o
793endif
794endif
795
796ifdef NEED_DES
797ifdef CONFIG_INTERNAL_DES
798OBJS += ../src/crypto/des-internal.o
799endif
800endif
801
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800802ifdef CONFIG_NO_RC4
803CFLAGS += -DCONFIG_NO_RC4
804endif
805
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700806ifdef NEED_RC4
807ifdef CONFIG_INTERNAL_RC4
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800808ifndef CONFIG_NO_RC4
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700809OBJS += ../src/crypto/rc4.o
810endif
811endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800812endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700813
814ifdef NEED_SHA256
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800815CFLAGS += -DCONFIG_SHA256
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700816ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700817OBJS += ../src/crypto/sha256.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700818endif
819OBJS += ../src/crypto/sha256-prf.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700820ifdef CONFIG_INTERNAL_SHA256
821OBJS += ../src/crypto/sha256-internal.o
822endif
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800823ifdef NEED_TLS_PRF_SHA256
824OBJS += ../src/crypto/sha256-tlsprf.o
825endif
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800826ifdef NEED_HMAC_SHA256_KDF
827OBJS += ../src/crypto/sha256-kdf.o
828endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700829endif
Dmitry Shmidt807291d2015-01-27 13:40:23 -0800830ifdef NEED_SHA384
831CFLAGS += -DCONFIG_SHA384
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800832OBJS += ../src/crypto/sha384-prf.o
Dmitry Shmidt807291d2015-01-27 13:40:23 -0800833endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700834
Dmitry Shmidtd7ff03d2015-12-04 14:49:35 -0800835ifdef CONFIG_INTERNAL_SHA384
836CFLAGS += -DCONFIG_INTERNAL_SHA384
837OBJS += ../src/crypto/sha384-internal.o
838endif
839
840ifdef CONFIG_INTERNAL_SHA512
841CFLAGS += -DCONFIG_INTERNAL_SHA512
842OBJS += ../src/crypto/sha512-internal.o
843endif
844
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700845ifdef NEED_DH_GROUPS
846OBJS += ../src/crypto/dh_groups.o
847endif
848ifdef NEED_DH_GROUPS_ALL
849CFLAGS += -DALL_DH_GROUPS
850endif
851ifdef CONFIG_INTERNAL_DH_GROUP5
852ifdef NEED_DH_GROUPS
853OBJS += ../src/crypto/dh_group5.o
854endif
855endif
856
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800857ifdef NEED_ECC
858CFLAGS += -DCONFIG_ECC
859endif
860
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700861ifdef CONFIG_NO_RANDOM_POOL
862CFLAGS += -DCONFIG_NO_RANDOM_POOL
863else
864OBJS += ../src/crypto/random.o
865HOBJS += ../src/crypto/random.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800866HOBJS += ../src/utils/eloop.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700867HOBJS += $(SHA1OBJS)
Dmitry Shmidtdda10c22015-03-24 16:05:01 -0700868ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700869HOBJS += ../src/crypto/md5.o
870endif
Dmitry Shmidtdda10c22015-03-24 16:05:01 -0700871endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700872
873ifdef CONFIG_RADIUS_SERVER
874CFLAGS += -DRADIUS_SERVER
875OBJS += ../src/radius/radius_server.o
876endif
877
878ifdef CONFIG_IPV6
879CFLAGS += -DCONFIG_IPV6
880endif
881
882ifdef CONFIG_DRIVER_RADIUS_ACL
883CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
884endif
885
886ifdef CONFIG_FULL_DYNAMIC_VLAN
887# define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
888# and vlan interfaces for the vlan feature.
889CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
890endif
891
892ifdef NEED_BASE64
893OBJS += ../src/utils/base64.o
894endif
895
896ifdef NEED_AP_MLME
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700897OBJS += ../src/ap/wmm.o
898OBJS += ../src/ap/ap_list.o
899OBJS += ../src/ap/ieee802_11.o
900OBJS += ../src/ap/hw_features.o
Dmitry Shmidt051af732013-10-22 13:52:46 -0700901OBJS += ../src/ap/dfs.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700902CFLAGS += -DNEED_AP_MLME
903endif
904ifdef CONFIG_IEEE80211N
905OBJS += ../src/ap/ieee802_11_ht.o
906endif
907
Dmitry Shmidt04949592012-07-19 12:16:46 -0700908ifdef CONFIG_IEEE80211AC
909OBJS += ../src/ap/ieee802_11_vht.o
910endif
911
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700912ifdef CONFIG_P2P_MANAGER
913CFLAGS += -DCONFIG_P2P_MANAGER
914OBJS += ../src/ap/p2p_hostapd.o
915endif
916
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700917ifdef CONFIG_HS20
918CFLAGS += -DCONFIG_HS20
919OBJS += ../src/ap/hs20.o
920CONFIG_INTERWORKING=y
921endif
922
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800923ifdef CONFIG_INTERWORKING
924CFLAGS += -DCONFIG_INTERWORKING
Dmitry Shmidt04949592012-07-19 12:16:46 -0700925OBJS += ../src/common/gas.o
926OBJS += ../src/ap/gas_serv.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800927endif
928
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800929ifdef CONFIG_PROXYARP
930CFLAGS += -DCONFIG_PROXYARP
931OBJS += ../src/ap/x_snoop.o
932OBJS += ../src/ap/dhcp_snoop.o
933ifdef CONFIG_IPV6
934OBJS += ../src/ap/ndisc_snoop.o
935endif
936endif
937
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800938OBJS += ../src/drivers/driver_common.o
939
940ifdef CONFIG_WPA_CLI_EDIT
941OBJS_c += ../src/utils/edit.o
942else
943OBJS_c += ../src/utils/edit_simple.o
944endif
945
Dmitry Shmidt391c59f2013-09-03 12:16:28 -0700946ifdef CONFIG_ACS
947CFLAGS += -DCONFIG_ACS
948OBJS += ../src/ap/acs.o
949LIBS += -lm
950endif
951
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700952ifdef CONFIG_NO_STDOUT_DEBUG
953CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
954endif
955
Dmitry Shmidtcce06662013-11-04 18:44:24 -0800956ifdef CONFIG_DEBUG_LINUX_TRACING
957CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
958endif
959
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700960ifdef CONFIG_DEBUG_FILE
961CFLAGS += -DCONFIG_DEBUG_FILE
962endif
963
Dmitry Shmidt4530cfd2012-09-09 15:20:40 -0700964ifdef CONFIG_SQLITE
965CFLAGS += -DCONFIG_SQLITE
966LIBS += -lsqlite3
967LIBS_h += -lsqlite3
968endif
969
Dmitry Shmidtd80a4012015-11-05 16:35:40 -0800970ifdef CONFIG_FST
971CFLAGS += -DCONFIG_FST
972OBJS += ../src/fst/fst.o
973OBJS += ../src/fst/fst_group.o
974OBJS += ../src/fst/fst_iface.o
975OBJS += ../src/fst/fst_session.o
976OBJS += ../src/fst/fst_ctrl_aux.o
977ifdef CONFIG_FST_TEST
978CFLAGS += -DCONFIG_FST_TEST
979endif
980ifndef CONFIG_NO_CTRL_IFACE
981OBJS += ../src/fst/fst_ctrl_iface.o
982endif
983endif
984
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700985ALL=hostapd hostapd_cli
986
987all: verify_config $(ALL)
988
989Q=@
990E=echo
991ifeq ($(V), 1)
992Q=
993E=true
994endif
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800995ifeq ($(QUIET), 1)
996Q=@
997E=true
998endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700999
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001000ifdef CONFIG_CODE_COVERAGE
1001%.o: %.c
1002 @$(E) " CC " $<
1003 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<)
1004else
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001005%.o: %.c
1006 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1007 @$(E) " CC " $<
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001008endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001009
1010verify_config:
1011 @if [ ! -r .config ]; then \
1012 echo 'Building hostapd requires a configuration file'; \
1013 echo '(.config). See README for more instructions. You can'; \
1014 echo 'run "cp defconfig .config" to create an example'; \
1015 echo 'configuration.'; \
1016 exit 1; \
1017 fi
1018
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001019$(DESTDIR)$(BINDIR)/%: %
1020 install -D $(<) $(@)
1021
1022install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL))
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001023
1024../src/drivers/build.hostapd:
1025 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \
1026 $(MAKE) -C ../src/drivers clean; \
1027 fi
1028 @touch ../src/drivers/build.hostapd
1029
1030BCHECK=../src/drivers/build.hostapd
1031
1032hostapd: $(BCHECK) $(OBJS)
1033 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
1034 @$(E) " LD " $@
1035
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001036ifdef CONFIG_WPA_TRACE
1037OBJS_c += ../src/utils/trace.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001038endif
1039hostapd_cli: $(OBJS_c)
1040 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
1041 @$(E) " LD " $@
1042
Dmitry Shmidt216983b2015-02-06 10:50:36 -08001043NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
Dmitry Shmidtff787d52015-01-12 13:01:47 -08001044NOBJS += ../src/utils/common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001045ifdef NEED_RC4
1046ifdef CONFIG_INTERNAL_RC4
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001047ifndef CONFIG_NO_RC4
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001048NOBJS += ../src/crypto/rc4.o
1049endif
1050endif
Dmitry Shmidtd80a4012015-11-05 16:35:40 -08001051endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001052ifdef CONFIG_INTERNAL_MD5
1053NOBJS += ../src/crypto/md5-internal.o
1054endif
1055NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o
1056NOBJS += ../src/utils/wpa_debug.o
1057NOBJS += ../src/utils/wpabuf.o
1058ifdef CONFIG_WPA_TRACE
1059NOBJS += ../src/utils/trace.o
1060LIBS_n += -lbfd
1061endif
1062ifdef TLS_FUNCS
1063LIBS_n += -lcrypto
1064endif
1065
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001066HOBJS += 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
1067HOBJS += ../src/crypto/aes-encblock.o
1068ifdef CONFIG_INTERNAL_AES
1069HOBJS += ../src/crypto/aes-internal.o
1070HOBJS += ../src/crypto/aes-internal-enc.o
1071endif
1072
1073nt_password_hash: $(NOBJS)
1074 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
1075 @$(E) " LD " $@
1076
1077hlr_auc_gw: $(HOBJS)
1078 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
1079 @$(E) " LD " $@
1080
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001081lcov-html:
1082 lcov -c -d .. > lcov.info
1083 genhtml lcov.info --output-directory lcov-html
1084
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001085clean:
1086 $(MAKE) -C ../src clean
1087 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
Dmitry Shmidt01904cf2013-12-05 11:08:35 -08001088 rm -f *.d *.gcno *.gcda *.gcov
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001089 rm -f lcov.info
1090 rm -rf lcov-html
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001091
1092-include $(OBJS:%.o=%.d)