]> git.ipfire.org Git - thirdparty/hostap.git/blame - hostapd/Makefile
Remove IAPP functionality from hostapd
[thirdparty/hostap.git] / hostapd / Makefile
CommitLineData
6fc6879b
JM
1ifndef CC
2CC=gcc
3endif
4
5ifndef CFLAGS
6CFLAGS = -MMD -O2 -Wall -g
7endif
8
f98674aa
JM
9ifdef 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
b42f539e 24CFLAGS += $(EXTRA_CFLAGS)
a4cfb486
JM
25CFLAGS += -I$(abspath ../src)
26CFLAGS += -I$(abspath ../src/utils)
6fc6879b 27
9108ea09
PB
28export BINDIR ?= /usr/local/bin/
29
6fc6879b
JM
30-include .config
31
ca33a5e8
JM
32ifndef 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
9d2cb3ec
JM
42ifdef CONFIG_TESTING_OPTIONS
43CFLAGS += -DCONFIG_TESTING_OPTIONS
44CONFIG_WPS_TESTING=y
45endif
46
6fc6879b
JM
47ifndef 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
1057d78e
JM
64OBJS += main.o
65OBJS += config_file.o
1057d78e 66
70db2ab3
JM
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
32da61d9 71OBJS += ../src/ap/utils.o
2586bc64 72OBJS += ../src/ap/authsrv.o
1057d78e 73OBJS += ../src/ap/ieee802_1x.o
6226e38d 74OBJS += ../src/ap/ap_config.o
ee431d77 75OBJS += ../src/ap/eap_user_db.o
1057d78e
JM
76OBJS += ../src/ap/ieee802_11_auth.o
77OBJS += ../src/ap/sta_info.o
6226e38d 78OBJS += ../src/ap/wpa_auth.o
1057d78e 79OBJS += ../src/ap/tkip_countermeasures.o
6226e38d 80OBJS += ../src/ap/ap_mlme.o
1057d78e 81OBJS += ../src/ap/wpa_auth_ie.o
6226e38d
JM
82OBJS += ../src/ap/preauth_auth.o
83OBJS += ../src/ap/pmksa_cache_auth.o
d4370eac 84OBJS += ../src/ap/ieee802_11_shared.o
062390ef 85OBJS += ../src/ap/beacon.o
ec8f36af 86OBJS += ../src/ap/bss_load.o
9b4b2264 87OBJS += ../src/ap/neighbor_db.o
2572df34 88OBJS += ../src/ap/rrm.o
1057d78e 89
977c0796
MK
90OBJS_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
42838059 94
38b46286
JM
95NEED_RC4=y
96NEED_AES=y
97NEED_MD5=y
98NEED_SHA1=y
6fc6879b 99
c5121837 100OBJS += ../src/drivers/drivers.o
c5121837
JM
101CFLAGS += -DHOSTAPD
102
04059ab8
DG
103ifdef CONFIG_TAXONOMY
104CFLAGS += -DCONFIG_TAXONOMY
105OBJS += ../src/ap/taxonomy.o
106endif
107
ea449b5b
JM
108ifdef CONFIG_MODULE_TESTS
109CFLAGS += -DCONFIG_MODULE_TESTS
110OBJS += hapd_module_tests.o
111endif
112
930f704a
JM
113ifdef CONFIG_WPA_TRACE
114CFLAGS += -DWPA_TRACE
115OBJS += ../src/utils/trace.o
e5851439 116HOBJS += ../src/utils/trace.o
f2f7d965
JM
117LDFLAGS += -rdynamic
118CFLAGS += -funwind-tables
119ifdef CONFIG_WPA_TRACE_BFD
b7cac412 120CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD
848905b1
RZ
121LIBS += -lbfd -ldl -liberty -lz
122LIBS_c += -lbfd -ldl -liberty -lz
123LIBS_h += -lbfd -ldl -liberty -lz
f2f7d965 124endif
930f704a
JM
125endif
126
42838059
JM
127ifndef CONFIG_ELOOP
128CONFIG_ELOOP=eloop
129endif
130OBJS += ../src/utils/$(CONFIG_ELOOP).o
131OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
594516b4
JB
132
133ifeq ($(CONFIG_ELOOP), eloop)
134# Using glibc < 2.17 requires -lrt for clock_gettime()
135LIBS += -lrt
136LIBS_c += -lrt
137LIBS_h += -lrt
9aab8114 138LIBS_n += -lrt
594516b4
JB
139endif
140
de01710b
JM
141ifdef CONFIG_ELOOP_POLL
142CFLAGS += -DCONFIG_ELOOP_POLL
143endif
144
145ifdef CONFIG_ELOOP_EPOLL
146CFLAGS += -DCONFIG_ELOOP_EPOLL
147endif
148
f9982b32
RM
149ifdef CONFIG_ELOOP_KQUEUE
150CFLAGS += -DCONFIG_ELOOP_KQUEUE
151endif
152
6fc6879b 153OBJS += ../src/utils/common.o
b4c0f584 154OBJS_c += ../src/utils/common.o
6fc6879b 155OBJS += ../src/utils/wpa_debug.o
b5cb528d 156OBJS_c += ../src/utils/wpa_debug.o
6fc6879b
JM
157OBJS += ../src/utils/wpabuf.o
158OBJS += ../src/utils/os_$(CONFIG_OS).o
159OBJS += ../src/utils/ip_addr.o
160
cb7b04c8 161OBJS += ../src/common/ieee802_11_common.o
6fc6879b 162OBJS += ../src/common/wpa_common.o
269dfe23 163OBJS += ../src/common/hw_features_common.o
6fc6879b 164
281c950b
JM
165OBJS += ../src/eapol_auth/eapol_auth_sm.o
166
b60d6f61 167
7feff065
JM
168ifdef CONFIG_CODE_COVERAGE
169CFLAGS += -O0 -fprofile-arcs -ftest-coverage
170LIBS += -lgcov
171LIBS_c += -lgcov
172LIBS_h += -lgcov
173LIBS_n += -lgcov
174endif
175
b60d6f61 176ifndef CONFIG_NO_DUMP_STATE
a1a31b6c
JM
177# 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)
b60d6f61 180CFLAGS += -DHOSTAPD_DUMP_STATE
b60d6f61
JM
181OBJS += ../src/eapol_auth/eapol_auth_dump.o
182endif
183
f88bd288
JM
184ifdef CONFIG_NO_RADIUS
185CFLAGS += -DCONFIG_NO_RADIUS
186CONFIG_NO_ACCOUNTING=y
187else
6fc6879b
JM
188OBJS += ../src/radius/radius.o
189OBJS += ../src/radius/radius_client.o
b031338c 190OBJS += ../src/radius/radius_das.o
f88bd288
JM
191endif
192
193ifdef CONFIG_NO_ACCOUNTING
194CFLAGS += -DCONFIG_NO_ACCOUNTING
195else
1057d78e 196OBJS += ../src/ap/accounting.o
f88bd288 197endif
6fc6879b 198
30b32314
JM
199ifdef CONFIG_NO_VLAN
200CFLAGS += -DCONFIG_NO_VLAN
201else
1057d78e 202OBJS += ../src/ap/vlan_init.o
7c03c082 203OBJS += ../src/ap/vlan_ifconfig.o
1889af2e 204OBJS += ../src/ap/vlan.o
03a6a2e9 205ifdef CONFIG_FULL_DYNAMIC_VLAN
84d67551
JM
206# Define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
207# and VLAN interfaces for the VLAN feature.
208CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
59d63904 209OBJS += ../src/ap/vlan_full.o
84d67551 210ifdef CONFIG_VLAN_NETLINK
03a6a2e9 211OBJS += ../src/ap/vlan_util.o
84d67551
JM
212else
213OBJS += ../src/ap/vlan_ioctl.o
03a6a2e9 214endif
03a6a2e9 215endif
30b32314
JM
216endif
217
7fd46d46
JM
218ifdef CONFIG_NO_CTRL_IFACE
219CFLAGS += -DCONFIG_NO_CTRL_IFACE
220else
56885eec
JD
221ifeq ($(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
89b781bc 242OBJS += ../src/common/ctrl_iface_common.o
7fd46d46 243OBJS += ctrl_iface.o
0e2d35c6 244OBJS += ../src/ap/ctrl_iface_ap.o
7fd46d46
JM
245endif
246
56885eec
JD
247ifndef CONFIG_NO_CTRL_IFACE
248CFLAGS += -DCONFIG_CTRL_IFACE
249endif
6fc6879b 250
6fc6879b
JM
251ifdef CONFIG_RSN_PREAUTH
252CFLAGS += -DCONFIG_RSN_PREAUTH
253CONFIG_L2_PACKET=y
254endif
255
a5d75636 256ifdef CONFIG_HS20
7d597d46
KP
257CONFIG_PROXYARP=y
258endif
259
260ifdef CONFIG_PROXYARP
261CONFIG_L2_PACKET=y
a5d75636
JM
262endif
263
087a1f4e
JM
264ifdef CONFIG_SUITEB
265CFLAGS += -DCONFIG_SUITEB
087a1f4e
JM
266endif
267
5e3b5197
JM
268ifdef CONFIG_SUITEB192
269CFLAGS += -DCONFIG_SUITEB192
270NEED_SHA384=y
271endif
272
138205d6
MV
273ifdef CONFIG_OCV
274CFLAGS += -DCONFIG_OCV
6ab73efa 275OBJS += ../src/common/ocv.o
6fc6879b
JM
276endif
277
278ifdef CONFIG_IEEE80211R
4ec1fd8e 279CFLAGS += -DCONFIG_IEEE80211R -DCONFIG_IEEE80211R_AP
6226e38d 280OBJS += ../src/ap/wpa_auth_ft.o
786c4fee 281NEED_AES_UNWRAP=y
245fc96e 282NEED_AES_SIV=y
50bd8e0a 283NEED_ETH_P_OUI=y
245fc96e 284NEED_HMAC_SHA256_KDF=y
50bd8e0a
MB
285endif
286
287ifdef NEED_ETH_P_OUI
288CFLAGS += -DCONFIG_ETH_P_OUI
289OBJS += ../src/ap/eth_p_oui.o
6fc6879b
JM
290endif
291
c10347f2
JM
292ifdef CONFIG_SAE
293CFLAGS += -DCONFIG_SAE
8e31e955 294OBJS += ../src/common/sae.o
aadabe70 295NEED_ECC=y
fbfb0e65 296NEED_DH_GROUPS=y
154a1d5f 297NEED_AP_MLME=y
2b84ca4d 298NEED_DRAGONFLY=y
c10347f2
JM
299endif
300
61152384
JM
301ifdef CONFIG_OWE
302CFLAGS += -DCONFIG_OWE
303NEED_ECC=y
304NEED_HMAC_SHA256_KDF=y
7a12edd1
JM
305NEED_HMAC_SHA384_KDF=y
306NEED_HMAC_SHA512_KDF=y
7a12edd1
JM
307NEED_SHA384=y
308NEED_SHA512=y
61152384
JM
309endif
310
ef721751
THJ
311ifdef CONFIG_AIRTIME_POLICY
312CFLAGS += -DCONFIG_AIRTIME_POLICY
313OBJS += ../src/ap/airtime_policy.o
314endif
315
903ecbe8
JM
316ifdef CONFIG_FILS
317CFLAGS += -DCONFIG_FILS
54b04d6f 318OBJS += ../src/ap/fils_hlp.o
903ecbe8 319NEED_SHA384=y
3b5b7aa8 320NEED_AES_SIV=y
1764559e
JM
321ifdef CONFIG_FILS_SK_PFS
322CFLAGS += -DCONFIG_FILS_SK_PFS
323NEED_ECC=y
324endif
903ecbe8
JM
325endif
326
ad3872a3 327ifdef CONFIG_WNM
b5bf84ba 328CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP
d32d94db
XC
329OBJS += ../src/ap/wnm_ap.o
330endif
331
de9289c8
JM
332ifdef CONFIG_IEEE80211N
333CFLAGS += -DCONFIG_IEEE80211N
334endif
335
efe45d14
MP
336ifdef CONFIG_IEEE80211AC
337CFLAGS += -DCONFIG_IEEE80211AC
338endif
339
94380cb4
PX
340ifdef CONFIG_IEEE80211AX
341CFLAGS += -DCONFIG_IEEE80211AX
d512f406 342OBJS += ../src/ap/ieee802_11_he.o
94380cb4
PX
343endif
344
fb9a1c3e
AS
345ifdef CONFIG_MBO
346CFLAGS += -DCONFIG_MBO
6332aaf3 347OBJS += ../src/ap/mbo_ap.o
fb9a1c3e
AS
348endif
349
e7cd16ca
JB
350include ../src/drivers/drivers.mak
351OBJS += $(DRV_AP_OBJS)
352CFLAGS += $(DRV_AP_CFLAGS)
353LDFLAGS += $(DRV_AP_LDFLAGS)
354LIBS += $(DRV_AP_LIBS)
d64dabee 355
6fc6879b
JM
356ifdef CONFIG_L2_PACKET
357ifdef CONFIG_DNET_PCAP
358ifdef CONFIG_L2_FREEBSD
359LIBS += -lpcap
360OBJS += ../src/l2_packet/l2_packet_freebsd.o
361else
362LIBS += -ldnet -lpcap
363OBJS += ../src/l2_packet/l2_packet_pcap.o
364endif
365else
366OBJS += ../src/l2_packet/l2_packet_linux.o
367endif
477df071
JM
368else
369OBJS += ../src/l2_packet/l2_packet_none.o
6fc6879b
JM
370endif
371
372
d3bddd8b
JM
373ifdef CONFIG_ERP
374CFLAGS += -DCONFIG_ERP
d3bddd8b
JM
375NEED_HMAC_SHA256_KDF=y
376endif
377
6fc6879b 378ifdef CONFIG_EAP_MD5
1e5839e0 379CFLAGS += -DEAP_SERVER_MD5
94d9bfd5 380OBJS += ../src/eap_server/eap_server_md5.o
6fc6879b
JM
381CHAP=y
382endif
383
384ifdef CONFIG_EAP_TLS
1e5839e0 385CFLAGS += -DEAP_SERVER_TLS
94d9bfd5 386OBJS += ../src/eap_server/eap_server_tls.o
6fc6879b
JM
387TLS_FUNCS=y
388endif
389
065d2895
JM
390ifdef CONFIG_EAP_UNAUTH_TLS
391CFLAGS += -DEAP_SERVER_UNAUTH_TLS
392ifndef CONFIG_EAP_TLS
393OBJS += ../src/eap_server/eap_server_tls.o
394TLS_FUNCS=y
395endif
396endif
397
6fc6879b 398ifdef CONFIG_EAP_PEAP
1e5839e0 399CFLAGS += -DEAP_SERVER_PEAP
94d9bfd5 400OBJS += ../src/eap_server/eap_server_peap.o
2eeaa5c9 401OBJS += ../src/eap_common/eap_peap_common.o
6fc6879b 402TLS_FUNCS=y
6fc6879b
JM
403CONFIG_EAP_MSCHAPV2=y
404endif
405
406ifdef CONFIG_EAP_TTLS
1e5839e0 407CFLAGS += -DEAP_SERVER_TTLS
94d9bfd5 408OBJS += ../src/eap_server/eap_server_ttls.o
6fc6879b
JM
409TLS_FUNCS=y
410CHAP=y
411endif
412
413ifdef CONFIG_EAP_MSCHAPV2
1e5839e0 414CFLAGS += -DEAP_SERVER_MSCHAPV2
94d9bfd5 415OBJS += ../src/eap_server/eap_server_mschapv2.o
6fc6879b
JM
416MS_FUNCS=y
417endif
418
419ifdef CONFIG_EAP_GTC
1e5839e0 420CFLAGS += -DEAP_SERVER_GTC
94d9bfd5 421OBJS += ../src/eap_server/eap_server_gtc.o
6fc6879b
JM
422endif
423
424ifdef CONFIG_EAP_SIM
1e5839e0 425CFLAGS += -DEAP_SERVER_SIM
94d9bfd5 426OBJS += ../src/eap_server/eap_server_sim.o
6fc6879b 427CONFIG_EAP_SIM_COMMON=y
bd4e9d03 428NEED_AES_CBC=y
6fc6879b
JM
429endif
430
431ifdef CONFIG_EAP_AKA
1e5839e0 432CFLAGS += -DEAP_SERVER_AKA
94d9bfd5 433OBJS += ../src/eap_server/eap_server_aka.o
6fc6879b 434CONFIG_EAP_SIM_COMMON=y
bd4e9d03 435NEED_AES_CBC=y
6fc6879b
JM
436endif
437
8c37556c 438ifdef CONFIG_EAP_AKA_PRIME
1e5839e0 439CFLAGS += -DEAP_SERVER_AKA_PRIME
8c37556c
JM
440endif
441
6fc6879b
JM
442ifdef CONFIG_EAP_SIM_COMMON
443OBJS += ../src/eap_common/eap_sim_common.o
444# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
445# replaced with another file implementating the interface specified in
446# eap_sim_db.h.
447OBJS += ../src/eap_server/eap_sim_db.o
448NEED_FIPS186_2_PRF=y
449endif
450
451ifdef CONFIG_EAP_PAX
1e5839e0 452CFLAGS += -DEAP_SERVER_PAX
94d9bfd5 453OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
6fc6879b
JM
454endif
455
456ifdef CONFIG_EAP_PSK
1e5839e0 457CFLAGS += -DEAP_SERVER_PSK
94d9bfd5 458OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
bd4e9d03
JM
459NEED_AES_ENCBLOCK=y
460NEED_AES_EAX=y
6fc6879b
JM
461endif
462
463ifdef CONFIG_EAP_SAKE
1e5839e0 464CFLAGS += -DEAP_SERVER_SAKE
94d9bfd5 465OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
6fc6879b
JM
466endif
467
468ifdef CONFIG_EAP_GPSK
1e5839e0 469CFLAGS += -DEAP_SERVER_GPSK
94d9bfd5 470OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
6fc6879b 471ifdef CONFIG_EAP_GPSK_SHA256
7271ee87 472CFLAGS += -DEAP_GPSK_SHA256
6fc6879b 473endif
6fc6879b
JM
474endif
475
df684d82
DH
476ifdef CONFIG_EAP_PWD
477CFLAGS += -DEAP_SERVER_PWD
478OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
04b1bcc5 479NEED_ECC=y
2b84ca4d 480NEED_DRAGONFLY=y
df684d82
DH
481endif
482
fe65847b
JM
483ifdef CONFIG_EAP_EKE
484CFLAGS += -DEAP_SERVER_EKE
485OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o
486NEED_DH_GROUPS=y
487NEED_DH_GROUPS_ALL=y
488endif
489
6fc6879b 490ifdef CONFIG_EAP_VENDOR_TEST
1e5839e0 491CFLAGS += -DEAP_SERVER_VENDOR_TEST
94d9bfd5 492OBJS += ../src/eap_server/eap_server_vendor_test.o
6fc6879b
JM
493endif
494
6fc6879b 495ifdef CONFIG_EAP_FAST
1e5839e0 496CFLAGS += -DEAP_SERVER_FAST
94d9bfd5 497OBJS += ../src/eap_server/eap_server_fast.o
a4819630 498OBJS += ../src/eap_common/eap_fast_common.o
6fc6879b
JM
499TLS_FUNCS=y
500NEED_T_PRF=y
786c4fee 501NEED_AES_UNWRAP=y
6fc6879b
JM
502endif
503
0ed57c5e
JM
504ifdef CONFIG_EAP_TEAP
505CFLAGS += -DEAP_SERVER_TEAP
506OBJS += ../src/eap_server/eap_server_teap.o
507OBJS += ../src/eap_common/eap_teap_common.o
508TLS_FUNCS=y
509NEED_T_PRF=y
510NEED_SHA384=y
52069c7e
JM
511NEED_TLS_PRF_SHA256=y
512NEED_TLS_PRF_SHA384=y
0ed57c5e
JM
513NEED_AES_UNWRAP=y
514endif
515
ad08c363 516ifdef CONFIG_WPS
1e5839e0 517CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
ad08c363 518OBJS += ../src/utils/uuid.o
32da61d9 519OBJS += ../src/ap/wps_hostapd.o
94d9bfd5 520OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
ad08c363
JM
521OBJS += ../src/wps/wps.o
522OBJS += ../src/wps/wps_common.o
7d7b8e96
JM
523OBJS += ../src/wps/wps_attr_parse.o
524OBJS += ../src/wps/wps_attr_build.o
525OBJS += ../src/wps/wps_attr_process.o
ad08c363
JM
526OBJS += ../src/wps/wps_dev_attr.o
527OBJS += ../src/wps/wps_enrollee.o
528OBJS += ../src/wps/wps_registrar.o
529NEED_DH_GROUPS=y
d9f56262 530NEED_BASE64=y
0dba0175 531NEED_AES_CBC=y
38b46286 532NEED_MODEXP=y
125c74cd 533CONFIG_EAP=y
f620268f 534
e1ee6b60
MH
535ifdef CONFIG_WPS_NFC
536CFLAGS += -DCONFIG_WPS_NFC
537OBJS += ../src/wps/ndef.o
e1ee6b60 538NEED_WPS_OOB=y
e1ee6b60
MH
539endif
540
116f7bb0
JM
541ifdef NEED_WPS_OOB
542CFLAGS += -DCONFIG_WPS_OOB
390cd310
JM
543endif
544
f620268f
JM
545ifdef CONFIG_WPS_UPNP
546CFLAGS += -DCONFIG_WPS_UPNP
547OBJS += ../src/wps/wps_upnp.o
548OBJS += ../src/wps/wps_upnp_ssdp.o
549OBJS += ../src/wps/wps_upnp_web.o
550OBJS += ../src/wps/wps_upnp_event.o
7e683cee 551OBJS += ../src/wps/wps_upnp_ap.o
0b40d033 552OBJS += ../src/wps/upnp_xml.o
f620268f 553OBJS += ../src/wps/httpread.o
092794f4 554OBJS += ../src/wps/http_client.o
b905c4a3 555OBJS += ../src/wps/http_server.o
f620268f
JM
556endif
557
cae67937
JM
558ifdef CONFIG_WPS_STRICT
559CFLAGS += -DCONFIG_WPS_STRICT
560OBJS += ../src/wps/wps_validate.o
561endif
562
b4e34f2f
JM
563ifdef CONFIG_WPS_TESTING
564CFLAGS += -DCONFIG_WPS_TESTING
565endif
566
ad08c363
JM
567endif
568
9c2b8204
JM
569ifdef CONFIG_DPP
570CFLAGS += -DCONFIG_DPP
571OBJS += ../src/common/dpp.o
572OBJS += ../src/ap/dpp_hostapd.o
573OBJS += ../src/ap/gas_query_ap.o
574NEED_AES_SIV=y
575NEED_HMAC_SHA256_KDF=y
576NEED_HMAC_SHA384_KDF=y
577NEED_HMAC_SHA512_KDF=y
9c2b8204
JM
578NEED_SHA384=y
579NEED_SHA512=y
6bf6c6fe 580NEED_ECC=y
9c2b8204
JM
581NEED_JSON=y
582NEED_GAS=y
a6f238f2 583NEED_BASE64=y
ce7effd0
JM
584ifdef CONFIG_DPP2
585CFLAGS += -DCONFIG_DPP2
586endif
9c2b8204
JM
587endif
588
6fc6879b 589ifdef CONFIG_EAP_IKEV2
1e5839e0 590CFLAGS += -DEAP_SERVER_IKEV2
94d9bfd5 591OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
6fc6879b
JM
592OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
593NEED_DH_GROUPS=y
dd01b1ff 594NEED_DH_GROUPS_ALL=y
38b46286 595NEED_MODEXP=y
be473f3f 596NEED_CIPHER=y
6fc6879b
JM
597endif
598
da08a7c7 599ifdef CONFIG_EAP_TNC
1e5839e0 600CFLAGS += -DEAP_SERVER_TNC
94d9bfd5 601OBJS += ../src/eap_server/eap_server_tnc.o
da08a7c7
JM
602OBJS += ../src/eap_server/tncs.o
603NEED_BASE64=y
7d737d6b 604ifndef CONFIG_DRIVER_BSD
b77eab28 605LIBS += -ldl
da08a7c7 606endif
7d737d6b 607endif
da08a7c7 608
a93b369c 609ifdef CONFIG_MACSEC
610CFLAGS += -DCONFIG_MACSEC
611OBJS += ../src/ap/wpa_auth_kay.o
612OBJS += ../src/pae/ieee802_1x_cp.o
613OBJS += ../src/pae/ieee802_1x_kay.o
614OBJS += ../src/pae/ieee802_1x_key.o
615OBJS += ../src/pae/ieee802_1x_secy_ops.o
616endif
617
6fc6879b 618# Basic EAP functionality is needed for EAPOL
12760815 619OBJS += eap_register.o
94d9bfd5 620OBJS += ../src/eap_server/eap_server.o
6fc6879b 621OBJS += ../src/eap_common/eap_common.o
94d9bfd5
JM
622OBJS += ../src/eap_server/eap_server_methods.o
623OBJS += ../src/eap_server/eap_server_identity.o
12760815 624CFLAGS += -DEAP_SERVER_IDENTITY
6fc6879b
JM
625
626ifdef CONFIG_EAP
627CFLAGS += -DEAP_SERVER
628endif
629
71374569
JM
630ifdef CONFIG_PKCS12
631CFLAGS += -DPKCS12_FUNCS
632endif
633
2b84ca4d
JM
634ifdef NEED_DRAGONFLY
635OBJS += ../src/common/dragonfly.o
636endif
637
71374569
JM
638ifdef MS_FUNCS
639OBJS += ../src/crypto/ms_funcs.o
38b46286
JM
640NEED_DES=y
641NEED_MD4=y
71374569
JM
642endif
643
644ifdef CHAP
645OBJS += ../src/eap_common/chap.o
646endif
647
6fc6879b 648ifdef TLS_FUNCS
38b46286 649NEED_DES=y
6fc6879b
JM
650# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
651CFLAGS += -DEAP_TLS_FUNCS
94d9bfd5 652OBJS += ../src/eap_server/eap_server_tls_common.o
815d2189 653NEED_TLS_PRF=y
000bbd77
JM
654endif
655
38b46286
JM
656ifndef CONFIG_TLS
657CONFIG_TLS=openssl
658endif
659
5c47af9a
JM
660ifdef CONFIG_TLSV11
661CFLAGS += -DCONFIG_TLSV11
662endif
663
ca84eed7
JM
664ifdef CONFIG_TLSV12
665CFLAGS += -DCONFIG_TLSV12
ca84eed7
JM
666endif
667
fec03f98
SP
668ifeq ($(CONFIG_TLS), wolfssl)
669CONFIG_CRYPTO=wolfssl
670ifdef TLS_FUNCS
671OBJS += ../src/crypto/tls_wolfssl.o
672LIBS += -lwolfssl -lm
673endif
674OBJS += ../src/crypto/crypto_wolfssl.o
675HOBJS += ../src/crypto/crypto_wolfssl.o
676ifdef NEED_FIPS186_2_PRF
677OBJS += ../src/crypto/fips_prf_wolfssl.o
678endif
fec03f98
SP
679NEED_TLS_PRF_SHA256=y
680LIBS += -lwolfssl -lm
681LIBS_h += -lwolfssl -lm
682ifdef CONFIG_TLS_ADD_DL
683LIBS += -ldl
684LIBS_h += -ldl
685endif
686endif
687
6fc6879b 688ifeq ($(CONFIG_TLS), openssl)
fec03f98 689CONFIG_CRYPTO=openssl
38b46286 690ifdef TLS_FUNCS
6fc6879b 691OBJS += ../src/crypto/tls_openssl.o
213e158c 692OBJS += ../src/crypto/tls_openssl_ocsp.o
38b46286
JM
693LIBS += -lssl
694endif
695OBJS += ../src/crypto/crypto_openssl.o
696HOBJS += ../src/crypto/crypto_openssl.o
697ifdef NEED_FIPS186_2_PRF
698OBJS += ../src/crypto/fips_prf_openssl.o
699endif
16bc3b89 700NEED_TLS_PRF_SHA256=y
38b46286 701LIBS += -lcrypto
6fc6879b 702LIBS_h += -lcrypto
4449efeb 703LIBS_n += -lcrypto
6ee66b42
JM
704ifdef CONFIG_TLS_ADD_DL
705LIBS += -ldl
706LIBS_h += -ldl
707endif
2b9891bd
BG
708ifndef CONFIG_TLS_DEFAULT_CIPHERS
709CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW"
710endif
711CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\"
6fc6879b 712endif
38b46286 713
6fc6879b 714ifeq ($(CONFIG_TLS), gnutls)
b7ed9483
JM
715ifndef CONFIG_CRYPTO
716# default to libgcrypt
717CONFIG_CRYPTO=gnutls
718endif
38b46286 719ifdef TLS_FUNCS
6fc6879b 720OBJS += ../src/crypto/tls_gnutls.o
38b46286 721LIBS += -lgnutls -lgpg-error
000bbd77 722endif
b7ed9483
JM
723OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
724HOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
38b46286 725ifdef NEED_FIPS186_2_PRF
09eef142
JM
726OBJS += ../src/crypto/fips_prf_internal.o
727SHA1OBJS += ../src/crypto/sha1-internal.o
38b46286 728endif
b7ed9483 729ifeq ($(CONFIG_CRYPTO), gnutls)
38b46286
JM
730LIBS += -lgcrypt
731LIBS_h += -lgcrypt
4449efeb 732LIBS_n += -lgcrypt
38b46286
JM
733CONFIG_INTERNAL_RC4=y
734CONFIG_INTERNAL_DH_GROUP5=y
735endif
b7ed9483
JM
736ifeq ($(CONFIG_CRYPTO), nettle)
737LIBS += -lnettle -lgmp
738LIBS_p += -lnettle -lgmp
739CONFIG_INTERNAL_RC4=y
740CONFIG_INTERNAL_DH_GROUP5=y
741endif
742endif
38b46286 743
6fc6879b 744ifeq ($(CONFIG_TLS), internal)
38b46286
JM
745ifndef CONFIG_CRYPTO
746CONFIG_CRYPTO=internal
747endif
748ifdef TLS_FUNCS
be473f3f 749OBJS += ../src/crypto/crypto_internal-rsa.o
6fc6879b 750OBJS += ../src/crypto/tls_internal.o
38b46286
JM
751OBJS += ../src/tls/tlsv1_common.o
752OBJS += ../src/tls/tlsv1_record.o
753OBJS += ../src/tls/tlsv1_cred.o
754OBJS += ../src/tls/tlsv1_server.o
755OBJS += ../src/tls/tlsv1_server_write.o
756OBJS += ../src/tls/tlsv1_server_read.o
757OBJS += ../src/tls/asn1.o
758OBJS += ../src/tls/rsa.o
759OBJS += ../src/tls/x509v3.o
f1739bac
JM
760OBJS += ../src/tls/pkcs1.o
761OBJS += ../src/tls/pkcs5.o
762OBJS += ../src/tls/pkcs8.o
6fc6879b 763NEED_BASE64=y
38b46286 764NEED_TLS_PRF=y
ca84eed7
JM
765ifdef CONFIG_TLSV12
766NEED_TLS_PRF_SHA256=y
767endif
38b46286 768NEED_MODEXP=y
be473f3f 769NEED_CIPHER=y
6fc6879b
JM
770CFLAGS += -DCONFIG_TLS_INTERNAL
771CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
6fc6879b 772endif
be473f3f
JM
773ifdef NEED_CIPHER
774NEED_DES=y
775OBJS += ../src/crypto/crypto_internal-cipher.o
776endif
38b46286 777ifdef NEED_MODEXP
be473f3f 778OBJS += ../src/crypto/crypto_internal-modexp.o
38b46286 779OBJS += ../src/tls/bignum.o
6fc6879b 780endif
6fc6879b 781ifeq ($(CONFIG_CRYPTO), libtomcrypt)
38b46286 782OBJS += ../src/crypto/crypto_libtomcrypt.o
6fc6879b 783LIBS += -ltomcrypt -ltfm
000bbd77 784LIBS_h += -ltomcrypt -ltfm
6fc6879b 785CONFIG_INTERNAL_SHA256=y
ac73690c 786CONFIG_INTERNAL_RC4=y
f042122a 787CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
788endif
789ifeq ($(CONFIG_CRYPTO), internal)
38b46286 790OBJS += ../src/crypto/crypto_internal.o
73d0ad78 791NEED_AES_DEC=y
6fc6879b 792CFLAGS += -DCONFIG_CRYPTO_INTERNAL
b63303b8
JM
793ifdef CONFIG_INTERNAL_LIBTOMMATH
794CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
795ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
796CFLAGS += -DLTM_FAST
797endif
798else
799LIBS += -ltommath
000bbd77 800LIBS_h += -ltommath
b63303b8 801endif
6fc6879b
JM
802CONFIG_INTERNAL_AES=y
803CONFIG_INTERNAL_DES=y
804CONFIG_INTERNAL_SHA1=y
805CONFIG_INTERNAL_MD4=y
806CONFIG_INTERNAL_MD5=y
807CONFIG_INTERNAL_SHA256=y
6bb6a9ce
PR
808CONFIG_INTERNAL_SHA384=y
809CONFIG_INTERNAL_SHA512=y
ac73690c 810CONFIG_INTERNAL_RC4=y
f042122a 811CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 812endif
38b46286
JM
813ifeq ($(CONFIG_CRYPTO), cryptoapi)
814OBJS += ../src/crypto/crypto_cryptoapi.o
815OBJS_p += ../src/crypto/crypto_cryptoapi.o
816CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
817CONFIG_INTERNAL_SHA256=y
818CONFIG_INTERNAL_RC4=y
6fc6879b 819endif
38b46286
JM
820endif
821
206516e8
JM
822ifeq ($(CONFIG_TLS), linux)
823OBJS += ../src/crypto/crypto_linux.o
824ifdef TLS_FUNCS
825OBJS += ../src/crypto/crypto_internal-rsa.o
826OBJS += ../src/crypto/tls_internal.o
827OBJS += ../src/tls/tlsv1_common.o
828OBJS += ../src/tls/tlsv1_record.o
829OBJS += ../src/tls/tlsv1_cred.o
830OBJS += ../src/tls/tlsv1_server.o
831OBJS += ../src/tls/tlsv1_server_write.o
832OBJS += ../src/tls/tlsv1_server_read.o
833OBJS += ../src/tls/asn1.o
834OBJS += ../src/tls/rsa.o
835OBJS += ../src/tls/x509v3.o
836OBJS += ../src/tls/pkcs1.o
837OBJS += ../src/tls/pkcs5.o
838OBJS += ../src/tls/pkcs8.o
206516e8
JM
839NEED_BASE64=y
840NEED_TLS_PRF=y
841ifdef CONFIG_TLSV12
842NEED_TLS_PRF_SHA256=y
843endif
844NEED_MODEXP=y
845NEED_CIPHER=y
846CFLAGS += -DCONFIG_TLS_INTERNAL
847CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
848endif
849ifdef NEED_MODEXP
850OBJS += ../src/crypto/crypto_internal-modexp.o
851OBJS += ../src/tls/bignum.o
852CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
853CFLAGS += -DLTM_FAST
854endif
855CONFIG_INTERNAL_DH_GROUP5=y
856ifdef NEED_FIPS186_2_PRF
857OBJS += ../src/crypto/fips_prf_internal.o
858OBJS += ../src/crypto/sha1-internal.o
859endif
860endif
861
38b46286
JM
862ifeq ($(CONFIG_TLS), none)
863ifdef TLS_FUNCS
864OBJS += ../src/crypto/tls_none.o
865CFLAGS += -DEAP_TLS_NONE
6fc6879b
JM
866CONFIG_INTERNAL_AES=y
867CONFIG_INTERNAL_SHA1=y
868CONFIG_INTERNAL_MD5=y
38b46286
JM
869endif
870OBJS += ../src/crypto/crypto_none.o
871OBJS_p += ../src/crypto/crypto_none.o
872CONFIG_INTERNAL_SHA256=y
ac73690c 873CONFIG_INTERNAL_RC4=y
6fc6879b
JM
874endif
875
38b46286
JM
876ifndef TLS_FUNCS
877OBJS += ../src/crypto/tls_none.o
878ifeq ($(CONFIG_TLS), internal)
879CONFIG_INTERNAL_AES=y
880CONFIG_INTERNAL_SHA1=y
881CONFIG_INTERNAL_MD5=y
882CONFIG_INTERNAL_RC4=y
883endif
884endif
885
38b46286 886AESOBJS = # none so far
6fc6879b 887ifdef CONFIG_INTERNAL_AES
27da6d4a 888AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
6fc6879b 889endif
38b46286 890
f19c9078 891ifneq ($(CONFIG_TLS), openssl)
fec03f98 892ifneq ($(CONFIG_TLS), wolfssl)
38b46286 893AESOBJS += ../src/crypto/aes-wrap.o
f19c9078 894endif
fec03f98 895endif
bd4e9d03 896ifdef NEED_AES_EAX
38b46286 897AESOBJS += ../src/crypto/aes-eax.o
bd4e9d03 898NEED_AES_CTR=y
c4bb3970
JM
899endif
900ifdef NEED_AES_SIV
901AESOBJS += ../src/crypto/aes-siv.o
902NEED_AES_CTR=y
bd4e9d03
JM
903endif
904ifdef NEED_AES_CTR
905AESOBJS += ../src/crypto/aes-ctr.o
906endif
907ifdef NEED_AES_ENCBLOCK
38b46286 908AESOBJS += ../src/crypto/aes-encblock.o
bd4e9d03 909endif
206516e8 910ifneq ($(CONFIG_TLS), linux)
31221217 911ifneq ($(CONFIG_TLS), wolfssl)
38b46286 912AESOBJS += ../src/crypto/aes-omac1.o
bd4e9d03 913endif
206516e8 914endif
bd4e9d03 915ifdef NEED_AES_UNWRAP
f19c9078 916ifneq ($(CONFIG_TLS), openssl)
206516e8 917ifneq ($(CONFIG_TLS), linux)
fec03f98 918ifneq ($(CONFIG_TLS), wolfssl)
279d859b 919NEED_AES_DEC=y
38b46286
JM
920AESOBJS += ../src/crypto/aes-unwrap.o
921endif
f19c9078 922endif
206516e8 923endif
fec03f98 924endif
38b46286 925ifdef NEED_AES_CBC
279d859b 926NEED_AES_DEC=y
65a7b21f 927ifneq ($(CONFIG_TLS), openssl)
206516e8 928ifneq ($(CONFIG_TLS), linux)
fec03f98 929ifneq ($(CONFIG_TLS), wolfssl)
279d859b
MH
930AESOBJS += ../src/crypto/aes-cbc.o
931endif
65a7b21f 932endif
206516e8 933endif
fec03f98 934endif
279d859b 935ifdef NEED_AES_DEC
38b46286
JM
936ifdef CONFIG_INTERNAL_AES
937AESOBJS += ../src/crypto/aes-internal-dec.o
938endif
38b46286
JM
939endif
940ifdef NEED_AES
941OBJS += $(AESOBJS)
942endif
943
944ifdef NEED_SHA1
030d062f 945ifneq ($(CONFIG_TLS), openssl)
206516e8 946ifneq ($(CONFIG_TLS), linux)
133f8d09 947ifneq ($(CONFIG_TLS), gnutls)
fec03f98 948ifneq ($(CONFIG_TLS), wolfssl)
38b46286 949SHA1OBJS += ../src/crypto/sha1.o
030d062f 950endif
206516e8 951endif
133f8d09 952endif
fec03f98 953endif
d6150094 954SHA1OBJS += ../src/crypto/sha1-prf.o
6fc6879b 955ifdef CONFIG_INTERNAL_SHA1
6f693b5d 956SHA1OBJS += ../src/crypto/sha1-internal.o
05edfe29 957ifdef NEED_FIPS186_2_PRF
6f693b5d 958SHA1OBJS += ../src/crypto/fips_prf_internal.o
05edfe29 959endif
6fc6879b 960endif
e40c86ad 961ifneq ($(CONFIG_TLS), openssl)
fec03f98 962ifneq ($(CONFIG_TLS), wolfssl)
38b46286 963SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
e40c86ad 964endif
fec03f98 965endif
38b46286
JM
966ifdef NEED_T_PRF
967SHA1OBJS += ../src/crypto/sha1-tprf.o
968endif
969ifdef NEED_TLS_PRF
970SHA1OBJS += ../src/crypto/sha1-tlsprf.o
971endif
972endif
973
974ifdef NEED_SHA1
975OBJS += $(SHA1OBJS)
976endif
977
983c6a60 978ifneq ($(CONFIG_TLS), openssl)
206516e8 979ifneq ($(CONFIG_TLS), linux)
133f8d09 980ifneq ($(CONFIG_TLS), gnutls)
fec03f98 981ifneq ($(CONFIG_TLS), wolfssl)
983c6a60
JM
982OBJS += ../src/crypto/md5.o
983endif
206516e8 984endif
133f8d09 985endif
fec03f98 986endif
983c6a60 987
38b46286 988ifdef NEED_MD5
6fc6879b 989ifdef CONFIG_INTERNAL_MD5
ad01a531 990OBJS += ../src/crypto/md5-internal.o
bbb921da 991HOBJS += ../src/crypto/md5-internal.o
6fc6879b 992endif
38b46286
JM
993endif
994
995ifdef NEED_MD4
6fc6879b 996ifdef CONFIG_INTERNAL_MD4
bd4e2895 997OBJS += ../src/crypto/md4-internal.o
6fc6879b 998endif
38b46286
JM
999endif
1000
1001ifdef NEED_DES
fec03f98 1002CFLAGS += -DCONFIG_DES
6fc6879b 1003ifdef CONFIG_INTERNAL_DES
657f0381 1004OBJS += ../src/crypto/des-internal.o
6fc6879b 1005endif
38b46286
JM
1006endif
1007
7cb53ded
JM
1008ifdef CONFIG_NO_RC4
1009CFLAGS += -DCONFIG_NO_RC4
1010endif
1011
38b46286 1012ifdef NEED_RC4
ac73690c 1013ifdef CONFIG_INTERNAL_RC4
7cb53ded 1014ifndef CONFIG_NO_RC4
ac73690c
JM
1015OBJS += ../src/crypto/rc4.o
1016endif
38b46286 1017endif
7cb53ded 1018endif
6fc6879b 1019
90cba4e7 1020CFLAGS += -DCONFIG_SHA256
26a37922 1021ifneq ($(CONFIG_TLS), openssl)
206516e8 1022ifneq ($(CONFIG_TLS), linux)
133f8d09 1023ifneq ($(CONFIG_TLS), gnutls)
fec03f98 1024ifneq ($(CONFIG_TLS), wolfssl)
6fc6879b 1025OBJS += ../src/crypto/sha256.o
26a37922 1026endif
206516e8 1027endif
133f8d09 1028endif
fec03f98 1029endif
ab637dcb 1030OBJS += ../src/crypto/sha256-prf.o
598a792d
JB
1031ifdef CONFIG_INTERNAL_SHA256
1032OBJS += ../src/crypto/sha256-internal.o
1033endif
83074898
JM
1034ifdef NEED_TLS_PRF_SHA256
1035OBJS += ../src/crypto/sha256-tlsprf.o
1036endif
52069c7e
JM
1037ifdef NEED_TLS_PRF_SHA384
1038OBJS += ../src/crypto/sha384-tlsprf.o
1039endif
d3bddd8b
JM
1040ifdef NEED_HMAC_SHA256_KDF
1041OBJS += ../src/crypto/sha256-kdf.o
1042endif
77f273c8
JM
1043ifdef NEED_HMAC_SHA384_KDF
1044OBJS += ../src/crypto/sha384-kdf.o
1045endif
1046ifdef NEED_HMAC_SHA512_KDF
1047OBJS += ../src/crypto/sha512-kdf.o
1048endif
97ae35a8
JM
1049ifdef NEED_SHA384
1050CFLAGS += -DCONFIG_SHA384
62944f7d 1051ifneq ($(CONFIG_TLS), openssl)
206516e8 1052ifneq ($(CONFIG_TLS), linux)
133f8d09 1053ifneq ($(CONFIG_TLS), gnutls)
fec03f98 1054ifneq ($(CONFIG_TLS), wolfssl)
62944f7d
JM
1055OBJS += ../src/crypto/sha384.o
1056endif
206516e8 1057endif
133f8d09 1058endif
fec03f98 1059endif
d9c807ca 1060OBJS += ../src/crypto/sha384-prf.o
97ae35a8 1061endif
77f273c8
JM
1062ifdef NEED_SHA512
1063CFLAGS += -DCONFIG_SHA512
1064ifneq ($(CONFIG_TLS), openssl)
1065ifneq ($(CONFIG_TLS), linux)
133f8d09 1066ifneq ($(CONFIG_TLS), gnutls)
fec03f98 1067ifneq ($(CONFIG_TLS), wolfssl)
77f273c8
JM
1068OBJS += ../src/crypto/sha512.o
1069endif
1070endif
133f8d09 1071endif
fec03f98 1072endif
77f273c8
JM
1073OBJS += ../src/crypto/sha512-prf.o
1074endif
6fc6879b 1075
6bb6a9ce
PR
1076ifdef CONFIG_INTERNAL_SHA384
1077CFLAGS += -DCONFIG_INTERNAL_SHA384
1078OBJS += ../src/crypto/sha384-internal.o
1079endif
1080
1081ifdef CONFIG_INTERNAL_SHA512
1082CFLAGS += -DCONFIG_INTERNAL_SHA512
1083OBJS += ../src/crypto/sha512-internal.o
1084endif
1085
6fc6879b
JM
1086ifdef NEED_DH_GROUPS
1087OBJS += ../src/crypto/dh_groups.o
1088endif
f042122a 1089ifdef NEED_DH_GROUPS_ALL
f042122a
JM
1090CFLAGS += -DALL_DH_GROUPS
1091endif
50ceddcf
JM
1092ifdef CONFIG_INTERNAL_DH_GROUP5
1093ifdef NEED_DH_GROUPS
1094OBJS += ../src/crypto/dh_group5.o
1095endif
f042122a 1096endif
6fc6879b 1097
aadabe70
JM
1098ifdef NEED_ECC
1099CFLAGS += -DCONFIG_ECC
1100endif
1101
bbb921da
JM
1102ifdef CONFIG_NO_RANDOM_POOL
1103CFLAGS += -DCONFIG_NO_RANDOM_POOL
1104else
89a7cdd6
LR
1105ifdef CONFIG_GETRANDOM
1106CFLAGS += -DCONFIG_GETRANDOM
1107endif
bbb921da
JM
1108OBJS += ../src/crypto/random.o
1109HOBJS += ../src/crypto/random.o
a49214d4 1110HOBJS += ../src/utils/eloop.o
bbb921da 1111HOBJS += $(SHA1OBJS)
58e115b8 1112ifneq ($(CONFIG_TLS), openssl)
206516e8 1113ifneq ($(CONFIG_TLS), linux)
fec03f98 1114ifneq ($(CONFIG_TLS), wolfssl)
bbb921da
JM
1115HOBJS += ../src/crypto/md5.o
1116endif
58e115b8 1117endif
206516e8 1118endif
fec03f98 1119endif
bbb921da 1120
6fc6879b
JM
1121ifdef CONFIG_RADIUS_SERVER
1122CFLAGS += -DRADIUS_SERVER
1123OBJS += ../src/radius/radius_server.o
1124endif
1125
1126ifdef CONFIG_IPV6
1127CFLAGS += -DCONFIG_IPV6
1128endif
1129
6affdaee
CZ
1130ifdef CONFIG_DRIVER_RADIUS_ACL
1131CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
1132endif
1133
6fc6879b
JM
1134ifdef NEED_BASE64
1135OBJS += ../src/utils/base64.o
1136endif
1137
005be3da
JM
1138ifdef NEED_JSON
1139OBJS += ../src/utils/json.o
1140CFLAGS += -DCONFIG_JSON
1141endif
1142
e7cd16ca 1143ifdef NEED_AP_MLME
1057d78e
JM
1144OBJS += ../src/ap/wmm.o
1145OBJS += ../src/ap/ap_list.o
1146OBJS += ../src/ap/ieee802_11.o
70db2ab3 1147OBJS += ../src/ap/hw_features.o
e76da505 1148OBJS += ../src/ap/dfs.o
b070460b
JM
1149CFLAGS += -DNEED_AP_MLME
1150endif
d45354be 1151ifdef CONFIG_IEEE80211N
1057d78e 1152OBJS += ../src/ap/ieee802_11_ht.o
d45354be 1153endif
9c584c06 1154
532b16c7
MP
1155ifdef CONFIG_IEEE80211AC
1156OBJS += ../src/ap/ieee802_11_vht.o
1157endif
1158
dce044cc
JM
1159ifdef CONFIG_P2P_MANAGER
1160CFLAGS += -DCONFIG_P2P_MANAGER
1161OBJS += ../src/ap/p2p_hostapd.o
1162endif
1163
159c89ab
JK
1164ifdef CONFIG_HS20
1165CFLAGS += -DCONFIG_HS20
19a8ad99 1166OBJS += ../src/ap/hs20.o
159c89ab
JK
1167CONFIG_INTERWORKING=y
1168endif
1169
b83e3e93
JM
1170ifdef CONFIG_INTERWORKING
1171CFLAGS += -DCONFIG_INTERWORKING
9c2b8204
JM
1172NEED_GAS=y
1173endif
1174
1175ifdef NEED_GAS
dca30c3f
JK
1176OBJS += ../src/common/gas.o
1177OBJS += ../src/ap/gas_serv.o
b83e3e93
JM
1178endif
1179
7d597d46
KP
1180ifdef CONFIG_PROXYARP
1181CFLAGS += -DCONFIG_PROXYARP
c127355c 1182OBJS += ../src/ap/x_snoop.o
7d597d46 1183OBJS += ../src/ap/dhcp_snoop.o
a437378f 1184ifdef CONFIG_IPV6
bd00c431 1185OBJS += ../src/ap/ndisc_snoop.o
7d597d46 1186endif
a437378f 1187endif
7d597d46 1188
aea855d7
JM
1189OBJS += ../src/drivers/driver_common.o
1190
42838059
JM
1191ifdef CONFIG_WPA_CLI_EDIT
1192OBJS_c += ../src/utils/edit.o
1193else
1194OBJS_c += ../src/utils/edit_simple.o
1195endif
1196
50f4f2a0
MK
1197ifdef CONFIG_ACS
1198CFLAGS += -DCONFIG_ACS
1199OBJS += ../src/ap/acs.o
1200LIBS += -lm
1201endif
1202
03018d3e
JM
1203ifdef CONFIG_NO_STDOUT_DEBUG
1204CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1205endif
1206
cc3dae85
WD
1207ifdef CONFIG_DEBUG_SYSLOG
1208CFLAGS += -DCONFIG_DEBUG_SYSLOG
1209endif
1210
0648c3b8
JB
1211ifdef CONFIG_DEBUG_LINUX_TRACING
1212CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
1213endif
1214
b41a47c0
BG
1215ifdef CONFIG_DEBUG_FILE
1216CFLAGS += -DCONFIG_DEBUG_FILE
1217endif
1218
66979bb8
JM
1219ifdef CONFIG_SQLITE
1220CFLAGS += -DCONFIG_SQLITE
1221LIBS += -lsqlite3
1222LIBS_h += -lsqlite3
1223endif
1224
8cf53ec9
AN
1225ifdef CONFIG_FST
1226CFLAGS += -DCONFIG_FST
1227OBJS += ../src/fst/fst.o
1228OBJS += ../src/fst/fst_group.o
1229OBJS += ../src/fst/fst_iface.o
1230OBJS += ../src/fst/fst_session.o
1231OBJS += ../src/fst/fst_ctrl_aux.o
a8dab08a
AN
1232ifdef CONFIG_FST_TEST
1233CFLAGS += -DCONFIG_FST_TEST
1234endif
8cf53ec9
AN
1235ifndef CONFIG_NO_CTRL_IFACE
1236OBJS += ../src/fst/fst_ctrl_iface.o
1237endif
1238endif
1239
6fc6879b
JM
1240ALL=hostapd hostapd_cli
1241
1242all: verify_config $(ALL)
1243
b2840aaf
JB
1244Q=@
1245E=echo
1246ifeq ($(V), 1)
1247Q=
1248E=true
1249endif
010fa245
JM
1250ifeq ($(QUIET), 1)
1251Q=@
1252E=true
1253endif
b2840aaf 1254
a4cfb486
JM
1255ifdef CONFIG_CODE_COVERAGE
1256%.o: %.c
1257 @$(E) " CC " $<
1258 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<)
1259else
b2840aaf
JB
1260%.o: %.c
1261 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1262 @$(E) " CC " $<
a4cfb486 1263endif
b2840aaf 1264
6fc6879b
JM
1265verify_config:
1266 @if [ ! -r .config ]; then \
1267 echo 'Building hostapd requires a configuration file'; \
1268 echo '(.config). See README for more instructions. You can'; \
1269 echo 'run "cp defconfig .config" to create an example'; \
1270 echo 'configuration.'; \
1271 exit 1; \
1272 fi
1273
9108ea09
PB
1274$(DESTDIR)$(BINDIR)/%: %
1275 install -D $(<) $(@)
1276
1277install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL))
6fc6879b 1278
ba30964b 1279../src/drivers/build.hostapd:
5008cb5e 1280 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \
ba30964b
JM
1281 $(MAKE) -C ../src/drivers clean; \
1282 fi
1283 @touch ../src/drivers/build.hostapd
1284
1285BCHECK=../src/drivers/build.hostapd
1286
1287hostapd: $(BCHECK) $(OBJS)
586bad51
JM
1288 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
1289 @$(E) " LD " $@
6fc6879b 1290
fb4baa68
JM
1291ifdef CONFIG_WPA_TRACE
1292OBJS_c += ../src/utils/trace.o
fb4baa68 1293endif
6fc6879b 1294hostapd_cli: $(OBJS_c)
586bad51
JM
1295 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
1296 @$(E) " LD " $@
6fc6879b 1297
983c6a60 1298NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
77a2c394 1299NOBJS += ../src/utils/common.o
73b21757
JM
1300ifdef NEED_RC4
1301ifdef CONFIG_INTERNAL_RC4
7cb53ded 1302ifndef CONFIG_NO_RC4
73b21757
JM
1303NOBJS += ../src/crypto/rc4.o
1304endif
1305endif
7cb53ded 1306endif
ad01a531
JB
1307ifdef CONFIG_INTERNAL_MD5
1308NOBJS += ../src/crypto/md5-internal.o
1309endif
fec03f98
SP
1310NOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1311NOBJS += ../src/utils/os_$(CONFIG_OS).o
73b21757
JM
1312NOBJS += ../src/utils/wpa_debug.o
1313NOBJS += ../src/utils/wpabuf.o
1314ifdef CONFIG_WPA_TRACE
1315NOBJS += ../src/utils/trace.o
1316LIBS_n += -lbfd
1317endif
6fc6879b 1318
0e574b07 1319HOBJS += 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
061971b5
JM
1320HOBJS += ../src/crypto/aes-encblock.o
1321ifdef CONFIG_INTERNAL_AES
1322HOBJS += ../src/crypto/aes-internal.o
1323HOBJS += ../src/crypto/aes-internal-enc.o
1324endif
206516e8
JM
1325ifeq ($(CONFIG_TLS), linux)
1326HOBJS += ../src/crypto/crypto_linux.o
1327endif
246157cb 1328
6fc6879b 1329nt_password_hash: $(NOBJS)
586bad51
JM
1330 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
1331 @$(E) " LD " $@
6fc6879b
JM
1332
1333hlr_auc_gw: $(HOBJS)
586bad51
JM
1334 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
1335 @$(E) " LD " $@
6fc6879b 1336
a4cfb486
JM
1337lcov-html:
1338 lcov -c -d .. > lcov.info
1339 genhtml lcov.info --output-directory lcov-html
1340
6fc6879b
JM
1341clean:
1342 $(MAKE) -C ../src clean
1343 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
7feff065 1344 rm -f *.d *.gcno *.gcda *.gcov
a4cfb486
JM
1345 rm -f lcov.info
1346 rm -rf lcov-html
6fc6879b 1347
6fc6879b 1348-include $(OBJS:%.o=%.d)