]> git.ipfire.org Git - thirdparty/hostap.git/blame - hostapd/Makefile
eapol_test: Add -v for displaying version information
[thirdparty/hostap.git] / hostapd / Makefile
CommitLineData
6fc6879b
JM
1ifndef CC
2CC=gcc
3endif
4
5ifndef CFLAGS
6CFLAGS = -MMD -O2 -Wall -g
7endif
8
b42f539e 9CFLAGS += $(EXTRA_CFLAGS)
a4cfb486
JM
10CFLAGS += -I$(abspath ../src)
11CFLAGS += -I$(abspath ../src/utils)
6fc6879b 12
9108ea09
PB
13export BINDIR ?= /usr/local/bin/
14
6fc6879b
JM
15# Uncomment following line and set the path to your kernel tree include
16# directory if your C library does not include all header files.
17# CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include
18
19-include .config
20
9d2cb3ec
JM
21ifdef CONFIG_TESTING_OPTIONS
22CFLAGS += -DCONFIG_TESTING_OPTIONS
23CONFIG_WPS_TESTING=y
24endif
25
6fc6879b
JM
26ifndef CONFIG_OS
27ifdef CONFIG_NATIVE_WINDOWS
28CONFIG_OS=win32
29else
30CONFIG_OS=unix
31endif
32endif
33
34ifeq ($(CONFIG_OS), internal)
35CFLAGS += -DOS_NO_C_LIB_DEFINES
36endif
37
38ifdef CONFIG_NATIVE_WINDOWS
39CFLAGS += -DCONFIG_NATIVE_WINDOWS
40LIBS += -lws2_32
41endif
42
1057d78e
JM
43OBJS += main.o
44OBJS += config_file.o
1057d78e 45
70db2ab3
JM
46OBJS += ../src/ap/hostapd.o
47OBJS += ../src/ap/wpa_auth_glue.o
48OBJS += ../src/ap/drv_callbacks.o
49OBJS += ../src/ap/ap_drv_ops.o
32da61d9 50OBJS += ../src/ap/utils.o
2586bc64 51OBJS += ../src/ap/authsrv.o
1057d78e 52OBJS += ../src/ap/ieee802_1x.o
6226e38d 53OBJS += ../src/ap/ap_config.o
ee431d77 54OBJS += ../src/ap/eap_user_db.o
1057d78e
JM
55OBJS += ../src/ap/ieee802_11_auth.o
56OBJS += ../src/ap/sta_info.o
6226e38d 57OBJS += ../src/ap/wpa_auth.o
1057d78e 58OBJS += ../src/ap/tkip_countermeasures.o
6226e38d 59OBJS += ../src/ap/ap_mlme.o
1057d78e 60OBJS += ../src/ap/wpa_auth_ie.o
6226e38d
JM
61OBJS += ../src/ap/preauth_auth.o
62OBJS += ../src/ap/pmksa_cache_auth.o
d4370eac 63OBJS += ../src/ap/ieee802_11_shared.o
062390ef 64OBJS += ../src/ap/beacon.o
ec8f36af 65OBJS += ../src/ap/bss_load.o
1057d78e 66
42838059
JM
67OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o
68
38b46286
JM
69NEED_RC4=y
70NEED_AES=y
71NEED_MD5=y
72NEED_SHA1=y
6fc6879b 73
c5121837 74OBJS += ../src/drivers/drivers.o
c5121837
JM
75CFLAGS += -DHOSTAPD
76
ea449b5b
JM
77ifdef CONFIG_MODULE_TESTS
78CFLAGS += -DCONFIG_MODULE_TESTS
79OBJS += hapd_module_tests.o
80endif
81
930f704a
JM
82ifdef CONFIG_WPA_TRACE
83CFLAGS += -DWPA_TRACE
84OBJS += ../src/utils/trace.o
e5851439 85HOBJS += ../src/utils/trace.o
f2f7d965
JM
86LDFLAGS += -rdynamic
87CFLAGS += -funwind-tables
88ifdef CONFIG_WPA_TRACE_BFD
b7cac412 89CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD
848905b1
RZ
90LIBS += -lbfd -ldl -liberty -lz
91LIBS_c += -lbfd -ldl -liberty -lz
92LIBS_h += -lbfd -ldl -liberty -lz
f2f7d965 93endif
930f704a
JM
94endif
95
42838059
JM
96ifndef CONFIG_ELOOP
97CONFIG_ELOOP=eloop
98endif
99OBJS += ../src/utils/$(CONFIG_ELOOP).o
100OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
594516b4
JB
101
102ifeq ($(CONFIG_ELOOP), eloop)
103# Using glibc < 2.17 requires -lrt for clock_gettime()
104LIBS += -lrt
105LIBS_c += -lrt
106LIBS_h += -lrt
9aab8114 107LIBS_n += -lrt
594516b4
JB
108endif
109
de01710b
JM
110ifdef CONFIG_ELOOP_POLL
111CFLAGS += -DCONFIG_ELOOP_POLL
112endif
113
114ifdef CONFIG_ELOOP_EPOLL
115CFLAGS += -DCONFIG_ELOOP_EPOLL
116endif
117
6fc6879b 118OBJS += ../src/utils/common.o
b4c0f584 119OBJS_c += ../src/utils/common.o
6fc6879b 120OBJS += ../src/utils/wpa_debug.o
b5cb528d 121OBJS_c += ../src/utils/wpa_debug.o
6fc6879b
JM
122OBJS += ../src/utils/wpabuf.o
123OBJS += ../src/utils/os_$(CONFIG_OS).o
124OBJS += ../src/utils/ip_addr.o
125
cb7b04c8 126OBJS += ../src/common/ieee802_11_common.o
6fc6879b 127OBJS += ../src/common/wpa_common.o
269dfe23 128OBJS += ../src/common/hw_features_common.o
6fc6879b 129
281c950b
JM
130OBJS += ../src/eapol_auth/eapol_auth_sm.o
131
b60d6f61 132
7feff065
JM
133ifdef CONFIG_CODE_COVERAGE
134CFLAGS += -O0 -fprofile-arcs -ftest-coverage
135LIBS += -lgcov
136LIBS_c += -lgcov
137LIBS_h += -lgcov
138LIBS_n += -lgcov
139endif
140
b60d6f61 141ifndef CONFIG_NO_DUMP_STATE
a1a31b6c
JM
142# define HOSTAPD_DUMP_STATE to include support for dumping internal state
143# through control interface commands (undefine it, if you want to save in
144# binary size)
b60d6f61 145CFLAGS += -DHOSTAPD_DUMP_STATE
b60d6f61
JM
146OBJS += ../src/eapol_auth/eapol_auth_dump.o
147endif
148
f88bd288
JM
149ifdef CONFIG_NO_RADIUS
150CFLAGS += -DCONFIG_NO_RADIUS
151CONFIG_NO_ACCOUNTING=y
152else
6fc6879b
JM
153OBJS += ../src/radius/radius.o
154OBJS += ../src/radius/radius_client.o
b031338c 155OBJS += ../src/radius/radius_das.o
f88bd288
JM
156endif
157
158ifdef CONFIG_NO_ACCOUNTING
159CFLAGS += -DCONFIG_NO_ACCOUNTING
160else
1057d78e 161OBJS += ../src/ap/accounting.o
f88bd288 162endif
6fc6879b 163
30b32314
JM
164ifdef CONFIG_NO_VLAN
165CFLAGS += -DCONFIG_NO_VLAN
166else
1057d78e 167OBJS += ../src/ap/vlan_init.o
03a6a2e9
MB
168ifdef CONFIG_VLAN_NETLINK
169ifdef CONFIG_FULL_DYNAMIC_VLAN
170OBJS += ../src/ap/vlan_util.o
171endif
172CFLAGS += -DCONFIG_VLAN_NETLINK
173endif
30b32314
JM
174endif
175
7fd46d46
JM
176ifdef CONFIG_NO_CTRL_IFACE
177CFLAGS += -DCONFIG_NO_CTRL_IFACE
178else
179OBJS += ctrl_iface.o
0e2d35c6 180OBJS += ../src/ap/ctrl_iface_ap.o
7fd46d46
JM
181endif
182
6fc6879b
JM
183CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX
184
185ifdef CONFIG_IAPP
186CFLAGS += -DCONFIG_IAPP
ad44e244 187OBJS += ../src/ap/iapp.o
6fc6879b
JM
188endif
189
190ifdef CONFIG_RSN_PREAUTH
191CFLAGS += -DCONFIG_RSN_PREAUTH
192CONFIG_L2_PACKET=y
193endif
194
195ifdef CONFIG_PEERKEY
196CFLAGS += -DCONFIG_PEERKEY
6226e38d 197OBJS += ../src/ap/peerkey_auth.o
6fc6879b
JM
198endif
199
a5d75636
JM
200ifdef CONFIG_HS20
201NEED_AES_OMAC1=y
7d597d46
KP
202CONFIG_PROXYARP=y
203endif
204
205ifdef CONFIG_PROXYARP
206CONFIG_L2_PACKET=y
a5d75636
JM
207endif
208
087a1f4e
JM
209ifdef CONFIG_SUITEB
210CFLAGS += -DCONFIG_SUITEB
211NEED_SHA256=y
212NEED_AES_OMAC1=y
213endif
214
5e3b5197
JM
215ifdef CONFIG_SUITEB192
216CFLAGS += -DCONFIG_SUITEB192
217NEED_SHA384=y
218endif
219
6fc6879b
JM
220ifdef CONFIG_IEEE80211W
221CFLAGS += -DCONFIG_IEEE80211W
222NEED_SHA256=y
279d859b 223NEED_AES_OMAC1=y
6fc6879b
JM
224endif
225
226ifdef CONFIG_IEEE80211R
227CFLAGS += -DCONFIG_IEEE80211R
6226e38d 228OBJS += ../src/ap/wpa_auth_ft.o
6fc6879b 229NEED_SHA256=y
279d859b 230NEED_AES_OMAC1=y
786c4fee 231NEED_AES_UNWRAP=y
6fc6879b
JM
232endif
233
c10347f2
JM
234ifdef CONFIG_SAE
235CFLAGS += -DCONFIG_SAE
8e31e955 236OBJS += ../src/common/sae.o
aadabe70 237NEED_ECC=y
fbfb0e65 238NEED_DH_GROUPS=y
154a1d5f 239NEED_AP_MLME=y
c10347f2
JM
240endif
241
ad3872a3
JM
242ifdef CONFIG_WNM
243CFLAGS += -DCONFIG_WNM
d32d94db
XC
244OBJS += ../src/ap/wnm_ap.o
245endif
246
de9289c8
JM
247ifdef CONFIG_IEEE80211N
248CFLAGS += -DCONFIG_IEEE80211N
249endif
250
efe45d14
MP
251ifdef CONFIG_IEEE80211AC
252CFLAGS += -DCONFIG_IEEE80211AC
253endif
254
e7cd16ca
JB
255include ../src/drivers/drivers.mak
256OBJS += $(DRV_AP_OBJS)
257CFLAGS += $(DRV_AP_CFLAGS)
258LDFLAGS += $(DRV_AP_LDFLAGS)
259LIBS += $(DRV_AP_LIBS)
d64dabee 260
6fc6879b
JM
261ifdef CONFIG_L2_PACKET
262ifdef CONFIG_DNET_PCAP
263ifdef CONFIG_L2_FREEBSD
264LIBS += -lpcap
265OBJS += ../src/l2_packet/l2_packet_freebsd.o
266else
267LIBS += -ldnet -lpcap
268OBJS += ../src/l2_packet/l2_packet_pcap.o
269endif
270else
271OBJS += ../src/l2_packet/l2_packet_linux.o
272endif
477df071
JM
273else
274OBJS += ../src/l2_packet/l2_packet_none.o
6fc6879b
JM
275endif
276
277
d3bddd8b
JM
278ifdef CONFIG_ERP
279CFLAGS += -DCONFIG_ERP
280NEED_SHA256=y
281NEED_HMAC_SHA256_KDF=y
282endif
283
6fc6879b 284ifdef CONFIG_EAP_MD5
1e5839e0 285CFLAGS += -DEAP_SERVER_MD5
94d9bfd5 286OBJS += ../src/eap_server/eap_server_md5.o
6fc6879b
JM
287CHAP=y
288endif
289
290ifdef CONFIG_EAP_TLS
1e5839e0 291CFLAGS += -DEAP_SERVER_TLS
94d9bfd5 292OBJS += ../src/eap_server/eap_server_tls.o
6fc6879b
JM
293TLS_FUNCS=y
294endif
295
065d2895
JM
296ifdef CONFIG_EAP_UNAUTH_TLS
297CFLAGS += -DEAP_SERVER_UNAUTH_TLS
298ifndef CONFIG_EAP_TLS
299OBJS += ../src/eap_server/eap_server_tls.o
300TLS_FUNCS=y
301endif
302endif
303
6fc6879b 304ifdef CONFIG_EAP_PEAP
1e5839e0 305CFLAGS += -DEAP_SERVER_PEAP
94d9bfd5 306OBJS += ../src/eap_server/eap_server_peap.o
2eeaa5c9 307OBJS += ../src/eap_common/eap_peap_common.o
6fc6879b 308TLS_FUNCS=y
6fc6879b
JM
309CONFIG_EAP_MSCHAPV2=y
310endif
311
312ifdef CONFIG_EAP_TTLS
1e5839e0 313CFLAGS += -DEAP_SERVER_TTLS
94d9bfd5 314OBJS += ../src/eap_server/eap_server_ttls.o
6fc6879b
JM
315TLS_FUNCS=y
316CHAP=y
317endif
318
319ifdef CONFIG_EAP_MSCHAPV2
1e5839e0 320CFLAGS += -DEAP_SERVER_MSCHAPV2
94d9bfd5 321OBJS += ../src/eap_server/eap_server_mschapv2.o
6fc6879b
JM
322MS_FUNCS=y
323endif
324
325ifdef CONFIG_EAP_GTC
1e5839e0 326CFLAGS += -DEAP_SERVER_GTC
94d9bfd5 327OBJS += ../src/eap_server/eap_server_gtc.o
6fc6879b
JM
328endif
329
330ifdef CONFIG_EAP_SIM
1e5839e0 331CFLAGS += -DEAP_SERVER_SIM
94d9bfd5 332OBJS += ../src/eap_server/eap_server_sim.o
6fc6879b 333CONFIG_EAP_SIM_COMMON=y
bd4e9d03 334NEED_AES_CBC=y
6fc6879b
JM
335endif
336
337ifdef CONFIG_EAP_AKA
1e5839e0 338CFLAGS += -DEAP_SERVER_AKA
94d9bfd5 339OBJS += ../src/eap_server/eap_server_aka.o
6fc6879b 340CONFIG_EAP_SIM_COMMON=y
36c88ec8 341NEED_SHA256=y
bd4e9d03 342NEED_AES_CBC=y
6fc6879b
JM
343endif
344
8c37556c 345ifdef CONFIG_EAP_AKA_PRIME
1e5839e0 346CFLAGS += -DEAP_SERVER_AKA_PRIME
8c37556c
JM
347endif
348
6fc6879b
JM
349ifdef CONFIG_EAP_SIM_COMMON
350OBJS += ../src/eap_common/eap_sim_common.o
351# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
352# replaced with another file implementating the interface specified in
353# eap_sim_db.h.
354OBJS += ../src/eap_server/eap_sim_db.o
355NEED_FIPS186_2_PRF=y
356endif
357
358ifdef CONFIG_EAP_PAX
1e5839e0 359CFLAGS += -DEAP_SERVER_PAX
94d9bfd5 360OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
6fc6879b
JM
361endif
362
363ifdef CONFIG_EAP_PSK
1e5839e0 364CFLAGS += -DEAP_SERVER_PSK
94d9bfd5 365OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
bd4e9d03
JM
366NEED_AES_OMAC1=y
367NEED_AES_ENCBLOCK=y
368NEED_AES_EAX=y
6fc6879b
JM
369endif
370
371ifdef CONFIG_EAP_SAKE
1e5839e0 372CFLAGS += -DEAP_SERVER_SAKE
94d9bfd5 373OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
6fc6879b
JM
374endif
375
376ifdef CONFIG_EAP_GPSK
1e5839e0 377CFLAGS += -DEAP_SERVER_GPSK
94d9bfd5 378OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
6fc6879b 379ifdef CONFIG_EAP_GPSK_SHA256
7271ee87 380CFLAGS += -DEAP_GPSK_SHA256
6fc6879b
JM
381endif
382NEED_SHA256=y
bd4e9d03 383NEED_AES_OMAC1=y
6fc6879b
JM
384endif
385
df684d82
DH
386ifdef CONFIG_EAP_PWD
387CFLAGS += -DEAP_SERVER_PWD
388OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
389NEED_SHA256=y
390endif
391
fe65847b
JM
392ifdef CONFIG_EAP_EKE
393CFLAGS += -DEAP_SERVER_EKE
394OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o
395NEED_DH_GROUPS=y
396NEED_DH_GROUPS_ALL=y
397endif
398
6fc6879b 399ifdef CONFIG_EAP_VENDOR_TEST
1e5839e0 400CFLAGS += -DEAP_SERVER_VENDOR_TEST
94d9bfd5 401OBJS += ../src/eap_server/eap_server_vendor_test.o
6fc6879b
JM
402endif
403
6fc6879b 404ifdef CONFIG_EAP_FAST
1e5839e0 405CFLAGS += -DEAP_SERVER_FAST
94d9bfd5 406OBJS += ../src/eap_server/eap_server_fast.o
a4819630 407OBJS += ../src/eap_common/eap_fast_common.o
6fc6879b
JM
408TLS_FUNCS=y
409NEED_T_PRF=y
786c4fee 410NEED_AES_UNWRAP=y
6fc6879b
JM
411endif
412
ad08c363 413ifdef CONFIG_WPS
1e5839e0 414CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
ad08c363 415OBJS += ../src/utils/uuid.o
32da61d9 416OBJS += ../src/ap/wps_hostapd.o
94d9bfd5 417OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
ad08c363
JM
418OBJS += ../src/wps/wps.o
419OBJS += ../src/wps/wps_common.o
7d7b8e96
JM
420OBJS += ../src/wps/wps_attr_parse.o
421OBJS += ../src/wps/wps_attr_build.o
422OBJS += ../src/wps/wps_attr_process.o
ad08c363
JM
423OBJS += ../src/wps/wps_dev_attr.o
424OBJS += ../src/wps/wps_enrollee.o
425OBJS += ../src/wps/wps_registrar.o
426NEED_DH_GROUPS=y
427NEED_SHA256=y
d9f56262 428NEED_BASE64=y
0dba0175 429NEED_AES_CBC=y
38b46286 430NEED_MODEXP=y
125c74cd 431CONFIG_EAP=y
f620268f 432
e1ee6b60
MH
433ifdef CONFIG_WPS_NFC
434CFLAGS += -DCONFIG_WPS_NFC
435OBJS += ../src/wps/ndef.o
e1ee6b60 436NEED_WPS_OOB=y
e1ee6b60
MH
437endif
438
116f7bb0
JM
439ifdef NEED_WPS_OOB
440CFLAGS += -DCONFIG_WPS_OOB
390cd310
JM
441endif
442
f620268f
JM
443ifdef CONFIG_WPS_UPNP
444CFLAGS += -DCONFIG_WPS_UPNP
445OBJS += ../src/wps/wps_upnp.o
446OBJS += ../src/wps/wps_upnp_ssdp.o
447OBJS += ../src/wps/wps_upnp_web.o
448OBJS += ../src/wps/wps_upnp_event.o
7e683cee 449OBJS += ../src/wps/wps_upnp_ap.o
0b40d033 450OBJS += ../src/wps/upnp_xml.o
f620268f 451OBJS += ../src/wps/httpread.o
092794f4 452OBJS += ../src/wps/http_client.o
b905c4a3 453OBJS += ../src/wps/http_server.o
f620268f
JM
454endif
455
cae67937
JM
456ifdef CONFIG_WPS_STRICT
457CFLAGS += -DCONFIG_WPS_STRICT
458OBJS += ../src/wps/wps_validate.o
459endif
460
b4e34f2f
JM
461ifdef CONFIG_WPS_TESTING
462CFLAGS += -DCONFIG_WPS_TESTING
463endif
464
ad08c363
JM
465endif
466
6fc6879b 467ifdef CONFIG_EAP_IKEV2
1e5839e0 468CFLAGS += -DEAP_SERVER_IKEV2
94d9bfd5 469OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
6fc6879b
JM
470OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
471NEED_DH_GROUPS=y
dd01b1ff 472NEED_DH_GROUPS_ALL=y
38b46286 473NEED_MODEXP=y
be473f3f 474NEED_CIPHER=y
6fc6879b
JM
475endif
476
da08a7c7 477ifdef CONFIG_EAP_TNC
1e5839e0 478CFLAGS += -DEAP_SERVER_TNC
94d9bfd5 479OBJS += ../src/eap_server/eap_server_tnc.o
da08a7c7
JM
480OBJS += ../src/eap_server/tncs.o
481NEED_BASE64=y
7d737d6b 482ifndef CONFIG_DRIVER_BSD
b77eab28 483LIBS += -ldl
da08a7c7 484endif
7d737d6b 485endif
da08a7c7 486
6fc6879b 487# Basic EAP functionality is needed for EAPOL
12760815 488OBJS += eap_register.o
94d9bfd5 489OBJS += ../src/eap_server/eap_server.o
6fc6879b 490OBJS += ../src/eap_common/eap_common.o
94d9bfd5
JM
491OBJS += ../src/eap_server/eap_server_methods.o
492OBJS += ../src/eap_server/eap_server_identity.o
12760815 493CFLAGS += -DEAP_SERVER_IDENTITY
6fc6879b
JM
494
495ifdef CONFIG_EAP
496CFLAGS += -DEAP_SERVER
497endif
498
71374569
JM
499ifdef CONFIG_PKCS12
500CFLAGS += -DPKCS12_FUNCS
501endif
502
503ifdef MS_FUNCS
504OBJS += ../src/crypto/ms_funcs.o
38b46286
JM
505NEED_DES=y
506NEED_MD4=y
71374569
JM
507endif
508
509ifdef CHAP
510OBJS += ../src/eap_common/chap.o
511endif
512
6fc6879b 513ifdef TLS_FUNCS
38b46286 514NEED_DES=y
6fc6879b
JM
515# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
516CFLAGS += -DEAP_TLS_FUNCS
94d9bfd5 517OBJS += ../src/eap_server/eap_server_tls_common.o
815d2189 518NEED_TLS_PRF=y
000bbd77
JM
519endif
520
38b46286
JM
521ifndef CONFIG_TLS
522CONFIG_TLS=openssl
523endif
524
5c47af9a
JM
525ifdef CONFIG_TLSV11
526CFLAGS += -DCONFIG_TLSV11
527endif
528
ca84eed7
JM
529ifdef CONFIG_TLSV12
530CFLAGS += -DCONFIG_TLSV12
531NEED_SHA256=y
532endif
533
6fc6879b 534ifeq ($(CONFIG_TLS), openssl)
38b46286 535ifdef TLS_FUNCS
6fc6879b 536OBJS += ../src/crypto/tls_openssl.o
38b46286
JM
537LIBS += -lssl
538endif
539OBJS += ../src/crypto/crypto_openssl.o
540HOBJS += ../src/crypto/crypto_openssl.o
541ifdef NEED_FIPS186_2_PRF
542OBJS += ../src/crypto/fips_prf_openssl.o
543endif
16bc3b89
JM
544NEED_SHA256=y
545NEED_TLS_PRF_SHA256=y
38b46286 546LIBS += -lcrypto
6fc6879b 547LIBS_h += -lcrypto
6ee66b42
JM
548ifdef CONFIG_TLS_ADD_DL
549LIBS += -ldl
550LIBS_h += -ldl
551endif
6fc6879b 552endif
38b46286 553
6fc6879b 554ifeq ($(CONFIG_TLS), gnutls)
38b46286 555ifdef TLS_FUNCS
6fc6879b 556OBJS += ../src/crypto/tls_gnutls.o
38b46286 557LIBS += -lgnutls -lgpg-error
000bbd77 558endif
38b46286
JM
559OBJS += ../src/crypto/crypto_gnutls.o
560HOBJS += ../src/crypto/crypto_gnutls.o
561ifdef NEED_FIPS186_2_PRF
09eef142
JM
562OBJS += ../src/crypto/fips_prf_internal.o
563SHA1OBJS += ../src/crypto/sha1-internal.o
38b46286
JM
564endif
565LIBS += -lgcrypt
566LIBS_h += -lgcrypt
567CONFIG_INTERNAL_SHA256=y
568CONFIG_INTERNAL_RC4=y
569CONFIG_INTERNAL_DH_GROUP5=y
570endif
571
6fc6879b 572ifeq ($(CONFIG_TLS), internal)
38b46286
JM
573ifndef CONFIG_CRYPTO
574CONFIG_CRYPTO=internal
575endif
576ifdef TLS_FUNCS
be473f3f 577OBJS += ../src/crypto/crypto_internal-rsa.o
6fc6879b 578OBJS += ../src/crypto/tls_internal.o
38b46286
JM
579OBJS += ../src/tls/tlsv1_common.o
580OBJS += ../src/tls/tlsv1_record.o
581OBJS += ../src/tls/tlsv1_cred.o
582OBJS += ../src/tls/tlsv1_server.o
583OBJS += ../src/tls/tlsv1_server_write.o
584OBJS += ../src/tls/tlsv1_server_read.o
585OBJS += ../src/tls/asn1.o
586OBJS += ../src/tls/rsa.o
587OBJS += ../src/tls/x509v3.o
f1739bac
JM
588OBJS += ../src/tls/pkcs1.o
589OBJS += ../src/tls/pkcs5.o
590OBJS += ../src/tls/pkcs8.o
1a707778 591NEED_SHA256=y
6fc6879b 592NEED_BASE64=y
38b46286 593NEED_TLS_PRF=y
ca84eed7
JM
594ifdef CONFIG_TLSV12
595NEED_TLS_PRF_SHA256=y
596endif
38b46286 597NEED_MODEXP=y
be473f3f 598NEED_CIPHER=y
6fc6879b
JM
599CFLAGS += -DCONFIG_TLS_INTERNAL
600CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
6fc6879b 601endif
be473f3f
JM
602ifdef NEED_CIPHER
603NEED_DES=y
604OBJS += ../src/crypto/crypto_internal-cipher.o
605endif
38b46286 606ifdef NEED_MODEXP
be473f3f 607OBJS += ../src/crypto/crypto_internal-modexp.o
38b46286 608OBJS += ../src/tls/bignum.o
6fc6879b 609endif
6fc6879b 610ifeq ($(CONFIG_CRYPTO), libtomcrypt)
38b46286 611OBJS += ../src/crypto/crypto_libtomcrypt.o
6fc6879b 612LIBS += -ltomcrypt -ltfm
000bbd77 613LIBS_h += -ltomcrypt -ltfm
6fc6879b 614CONFIG_INTERNAL_SHA256=y
ac73690c 615CONFIG_INTERNAL_RC4=y
f042122a 616CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
617endif
618ifeq ($(CONFIG_CRYPTO), internal)
38b46286 619OBJS += ../src/crypto/crypto_internal.o
73d0ad78 620NEED_AES_DEC=y
6fc6879b 621CFLAGS += -DCONFIG_CRYPTO_INTERNAL
b63303b8
JM
622ifdef CONFIG_INTERNAL_LIBTOMMATH
623CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
624ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
625CFLAGS += -DLTM_FAST
626endif
627else
628LIBS += -ltommath
000bbd77 629LIBS_h += -ltommath
b63303b8 630endif
6fc6879b
JM
631CONFIG_INTERNAL_AES=y
632CONFIG_INTERNAL_DES=y
633CONFIG_INTERNAL_SHA1=y
634CONFIG_INTERNAL_MD4=y
635CONFIG_INTERNAL_MD5=y
636CONFIG_INTERNAL_SHA256=y
ac73690c 637CONFIG_INTERNAL_RC4=y
f042122a 638CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 639endif
38b46286
JM
640ifeq ($(CONFIG_CRYPTO), cryptoapi)
641OBJS += ../src/crypto/crypto_cryptoapi.o
642OBJS_p += ../src/crypto/crypto_cryptoapi.o
643CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
644CONFIG_INTERNAL_SHA256=y
645CONFIG_INTERNAL_RC4=y
6fc6879b 646endif
38b46286
JM
647endif
648
649ifeq ($(CONFIG_TLS), none)
650ifdef TLS_FUNCS
651OBJS += ../src/crypto/tls_none.o
652CFLAGS += -DEAP_TLS_NONE
6fc6879b
JM
653CONFIG_INTERNAL_AES=y
654CONFIG_INTERNAL_SHA1=y
655CONFIG_INTERNAL_MD5=y
38b46286
JM
656endif
657OBJS += ../src/crypto/crypto_none.o
658OBJS_p += ../src/crypto/crypto_none.o
659CONFIG_INTERNAL_SHA256=y
ac73690c 660CONFIG_INTERNAL_RC4=y
6fc6879b
JM
661endif
662
38b46286
JM
663ifndef TLS_FUNCS
664OBJS += ../src/crypto/tls_none.o
665ifeq ($(CONFIG_TLS), internal)
666CONFIG_INTERNAL_AES=y
667CONFIG_INTERNAL_SHA1=y
668CONFIG_INTERNAL_MD5=y
669CONFIG_INTERNAL_RC4=y
670endif
671endif
672
38b46286 673AESOBJS = # none so far
6fc6879b 674ifdef CONFIG_INTERNAL_AES
27da6d4a 675AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
6fc6879b 676endif
38b46286 677
f19c9078 678ifneq ($(CONFIG_TLS), openssl)
38b46286 679AESOBJS += ../src/crypto/aes-wrap.o
f19c9078 680endif
bd4e9d03 681ifdef NEED_AES_EAX
38b46286 682AESOBJS += ../src/crypto/aes-eax.o
bd4e9d03
JM
683NEED_AES_CTR=y
684endif
685ifdef NEED_AES_CTR
686AESOBJS += ../src/crypto/aes-ctr.o
687endif
688ifdef NEED_AES_ENCBLOCK
38b46286 689AESOBJS += ../src/crypto/aes-encblock.o
bd4e9d03
JM
690endif
691ifdef NEED_AES_OMAC1
38b46286 692AESOBJS += ../src/crypto/aes-omac1.o
bd4e9d03
JM
693endif
694ifdef NEED_AES_UNWRAP
f19c9078 695ifneq ($(CONFIG_TLS), openssl)
279d859b 696NEED_AES_DEC=y
38b46286
JM
697AESOBJS += ../src/crypto/aes-unwrap.o
698endif
f19c9078 699endif
38b46286 700ifdef NEED_AES_CBC
279d859b 701NEED_AES_DEC=y
65a7b21f 702ifneq ($(CONFIG_TLS), openssl)
279d859b
MH
703AESOBJS += ../src/crypto/aes-cbc.o
704endif
65a7b21f 705endif
279d859b 706ifdef NEED_AES_DEC
38b46286
JM
707ifdef CONFIG_INTERNAL_AES
708AESOBJS += ../src/crypto/aes-internal-dec.o
709endif
38b46286
JM
710endif
711ifdef NEED_AES
712OBJS += $(AESOBJS)
713endif
714
715ifdef NEED_SHA1
030d062f 716ifneq ($(CONFIG_TLS), openssl)
38b46286 717SHA1OBJS += ../src/crypto/sha1.o
030d062f 718endif
d6150094 719SHA1OBJS += ../src/crypto/sha1-prf.o
6fc6879b 720ifdef CONFIG_INTERNAL_SHA1
6f693b5d 721SHA1OBJS += ../src/crypto/sha1-internal.o
05edfe29 722ifdef NEED_FIPS186_2_PRF
6f693b5d 723SHA1OBJS += ../src/crypto/fips_prf_internal.o
05edfe29 724endif
6fc6879b 725endif
e40c86ad 726ifneq ($(CONFIG_TLS), openssl)
38b46286 727SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
e40c86ad 728endif
38b46286
JM
729ifdef NEED_T_PRF
730SHA1OBJS += ../src/crypto/sha1-tprf.o
731endif
732ifdef NEED_TLS_PRF
733SHA1OBJS += ../src/crypto/sha1-tlsprf.o
734endif
735endif
736
737ifdef NEED_SHA1
738OBJS += $(SHA1OBJS)
739endif
740
983c6a60
JM
741ifneq ($(CONFIG_TLS), openssl)
742OBJS += ../src/crypto/md5.o
743endif
744
38b46286 745ifdef NEED_MD5
6fc6879b 746ifdef CONFIG_INTERNAL_MD5
ad01a531 747OBJS += ../src/crypto/md5-internal.o
bbb921da 748HOBJS += ../src/crypto/md5-internal.o
6fc6879b 749endif
38b46286
JM
750endif
751
752ifdef NEED_MD4
6fc6879b 753ifdef CONFIG_INTERNAL_MD4
bd4e2895 754OBJS += ../src/crypto/md4-internal.o
6fc6879b 755endif
38b46286
JM
756endif
757
758ifdef NEED_DES
6fc6879b 759ifdef CONFIG_INTERNAL_DES
657f0381 760OBJS += ../src/crypto/des-internal.o
6fc6879b 761endif
38b46286
JM
762endif
763
7cb53ded
JM
764ifdef CONFIG_NO_RC4
765CFLAGS += -DCONFIG_NO_RC4
766endif
767
38b46286 768ifdef NEED_RC4
ac73690c 769ifdef CONFIG_INTERNAL_RC4
7cb53ded 770ifndef CONFIG_NO_RC4
ac73690c
JM
771OBJS += ../src/crypto/rc4.o
772endif
38b46286 773endif
7cb53ded 774endif
6fc6879b
JM
775
776ifdef NEED_SHA256
90cba4e7 777CFLAGS += -DCONFIG_SHA256
26a37922 778ifneq ($(CONFIG_TLS), openssl)
6fc6879b 779OBJS += ../src/crypto/sha256.o
26a37922 780endif
ab637dcb 781OBJS += ../src/crypto/sha256-prf.o
598a792d
JB
782ifdef CONFIG_INTERNAL_SHA256
783OBJS += ../src/crypto/sha256-internal.o
784endif
83074898
JM
785ifdef NEED_TLS_PRF_SHA256
786OBJS += ../src/crypto/sha256-tlsprf.o
787endif
d3bddd8b
JM
788ifdef NEED_HMAC_SHA256_KDF
789OBJS += ../src/crypto/sha256-kdf.o
790endif
6fc6879b 791endif
97ae35a8
JM
792ifdef NEED_SHA384
793CFLAGS += -DCONFIG_SHA384
d9c807ca 794OBJS += ../src/crypto/sha384-prf.o
97ae35a8 795endif
6fc6879b
JM
796
797ifdef NEED_DH_GROUPS
798OBJS += ../src/crypto/dh_groups.o
799endif
f042122a 800ifdef NEED_DH_GROUPS_ALL
f042122a
JM
801CFLAGS += -DALL_DH_GROUPS
802endif
50ceddcf
JM
803ifdef CONFIG_INTERNAL_DH_GROUP5
804ifdef NEED_DH_GROUPS
805OBJS += ../src/crypto/dh_group5.o
806endif
f042122a 807endif
6fc6879b 808
aadabe70
JM
809ifdef NEED_ECC
810CFLAGS += -DCONFIG_ECC
811endif
812
bbb921da
JM
813ifdef CONFIG_NO_RANDOM_POOL
814CFLAGS += -DCONFIG_NO_RANDOM_POOL
815else
816OBJS += ../src/crypto/random.o
817HOBJS += ../src/crypto/random.o
a49214d4 818HOBJS += ../src/utils/eloop.o
bbb921da 819HOBJS += $(SHA1OBJS)
58e115b8 820ifneq ($(CONFIG_TLS), openssl)
bbb921da
JM
821HOBJS += ../src/crypto/md5.o
822endif
58e115b8 823endif
bbb921da 824
6fc6879b
JM
825ifdef CONFIG_RADIUS_SERVER
826CFLAGS += -DRADIUS_SERVER
827OBJS += ../src/radius/radius_server.o
828endif
829
830ifdef CONFIG_IPV6
831CFLAGS += -DCONFIG_IPV6
832endif
833
6affdaee
CZ
834ifdef CONFIG_DRIVER_RADIUS_ACL
835CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
836endif
837
6fc6879b
JM
838ifdef CONFIG_FULL_DYNAMIC_VLAN
839# define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
840# and vlan interfaces for the vlan feature.
841CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
842endif
843
844ifdef NEED_BASE64
845OBJS += ../src/utils/base64.o
846endif
847
e7cd16ca 848ifdef NEED_AP_MLME
1057d78e
JM
849OBJS += ../src/ap/wmm.o
850OBJS += ../src/ap/ap_list.o
851OBJS += ../src/ap/ieee802_11.o
70db2ab3 852OBJS += ../src/ap/hw_features.o
e76da505 853OBJS += ../src/ap/dfs.o
b070460b
JM
854CFLAGS += -DNEED_AP_MLME
855endif
d45354be 856ifdef CONFIG_IEEE80211N
1057d78e 857OBJS += ../src/ap/ieee802_11_ht.o
d45354be 858endif
9c584c06 859
532b16c7
MP
860ifdef CONFIG_IEEE80211AC
861OBJS += ../src/ap/ieee802_11_vht.o
862endif
863
dce044cc
JM
864ifdef CONFIG_P2P_MANAGER
865CFLAGS += -DCONFIG_P2P_MANAGER
866OBJS += ../src/ap/p2p_hostapd.o
867endif
868
159c89ab
JK
869ifdef CONFIG_HS20
870CFLAGS += -DCONFIG_HS20
19a8ad99 871OBJS += ../src/ap/hs20.o
159c89ab
JK
872CONFIG_INTERWORKING=y
873endif
874
b83e3e93
JM
875ifdef CONFIG_INTERWORKING
876CFLAGS += -DCONFIG_INTERWORKING
dca30c3f
JK
877OBJS += ../src/common/gas.o
878OBJS += ../src/ap/gas_serv.o
b83e3e93
JM
879endif
880
7d597d46
KP
881ifdef CONFIG_PROXYARP
882CFLAGS += -DCONFIG_PROXYARP
c127355c 883OBJS += ../src/ap/x_snoop.o
7d597d46 884OBJS += ../src/ap/dhcp_snoop.o
a437378f 885ifdef CONFIG_IPV6
bd00c431 886OBJS += ../src/ap/ndisc_snoop.o
7d597d46 887endif
a437378f 888endif
7d597d46 889
aea855d7
JM
890OBJS += ../src/drivers/driver_common.o
891
42838059
JM
892ifdef CONFIG_WPA_CLI_EDIT
893OBJS_c += ../src/utils/edit.o
894else
895OBJS_c += ../src/utils/edit_simple.o
896endif
897
50f4f2a0
MK
898ifdef CONFIG_ACS
899CFLAGS += -DCONFIG_ACS
900OBJS += ../src/ap/acs.o
901LIBS += -lm
902endif
903
03018d3e
JM
904ifdef CONFIG_NO_STDOUT_DEBUG
905CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
906endif
907
0648c3b8
JB
908ifdef CONFIG_DEBUG_LINUX_TRACING
909CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
910endif
911
b41a47c0
BG
912ifdef CONFIG_DEBUG_FILE
913CFLAGS += -DCONFIG_DEBUG_FILE
914endif
915
66979bb8
JM
916ifdef CONFIG_SQLITE
917CFLAGS += -DCONFIG_SQLITE
918LIBS += -lsqlite3
919LIBS_h += -lsqlite3
920endif
921
8cf53ec9
AN
922ifdef CONFIG_FST
923CFLAGS += -DCONFIG_FST
924OBJS += ../src/fst/fst.o
925OBJS += ../src/fst/fst_group.o
926OBJS += ../src/fst/fst_iface.o
927OBJS += ../src/fst/fst_session.o
928OBJS += ../src/fst/fst_ctrl_aux.o
a8dab08a
AN
929ifdef CONFIG_FST_TEST
930CFLAGS += -DCONFIG_FST_TEST
931endif
8cf53ec9
AN
932ifndef CONFIG_NO_CTRL_IFACE
933OBJS += ../src/fst/fst_ctrl_iface.o
934endif
935endif
936
6fc6879b
JM
937ALL=hostapd hostapd_cli
938
939all: verify_config $(ALL)
940
b2840aaf
JB
941Q=@
942E=echo
943ifeq ($(V), 1)
944Q=
945E=true
946endif
010fa245
JM
947ifeq ($(QUIET), 1)
948Q=@
949E=true
950endif
b2840aaf 951
a4cfb486
JM
952ifdef CONFIG_CODE_COVERAGE
953%.o: %.c
954 @$(E) " CC " $<
955 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<)
956else
b2840aaf
JB
957%.o: %.c
958 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
959 @$(E) " CC " $<
a4cfb486 960endif
b2840aaf 961
6fc6879b
JM
962verify_config:
963 @if [ ! -r .config ]; then \
964 echo 'Building hostapd requires a configuration file'; \
965 echo '(.config). See README for more instructions. You can'; \
966 echo 'run "cp defconfig .config" to create an example'; \
967 echo 'configuration.'; \
968 exit 1; \
969 fi
970
9108ea09
PB
971$(DESTDIR)$(BINDIR)/%: %
972 install -D $(<) $(@)
973
974install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL))
6fc6879b 975
ba30964b 976../src/drivers/build.hostapd:
5008cb5e 977 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \
ba30964b
JM
978 $(MAKE) -C ../src/drivers clean; \
979 fi
980 @touch ../src/drivers/build.hostapd
981
982BCHECK=../src/drivers/build.hostapd
983
984hostapd: $(BCHECK) $(OBJS)
586bad51
JM
985 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
986 @$(E) " LD " $@
6fc6879b 987
fb4baa68
JM
988ifdef CONFIG_WPA_TRACE
989OBJS_c += ../src/utils/trace.o
fb4baa68 990endif
6fc6879b 991hostapd_cli: $(OBJS_c)
586bad51
JM
992 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
993 @$(E) " LD " $@
6fc6879b 994
983c6a60 995NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
77a2c394 996NOBJS += ../src/utils/common.o
73b21757
JM
997ifdef NEED_RC4
998ifdef CONFIG_INTERNAL_RC4
7cb53ded 999ifndef CONFIG_NO_RC4
73b21757
JM
1000NOBJS += ../src/crypto/rc4.o
1001endif
1002endif
7cb53ded 1003endif
ad01a531
JB
1004ifdef CONFIG_INTERNAL_MD5
1005NOBJS += ../src/crypto/md5-internal.o
1006endif
6fc6879b 1007NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o
73b21757
JM
1008NOBJS += ../src/utils/wpa_debug.o
1009NOBJS += ../src/utils/wpabuf.o
1010ifdef CONFIG_WPA_TRACE
1011NOBJS += ../src/utils/trace.o
1012LIBS_n += -lbfd
1013endif
6fc6879b
JM
1014ifdef TLS_FUNCS
1015LIBS_n += -lcrypto
1016endif
1017
0e574b07 1018HOBJS += 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
1019HOBJS += ../src/crypto/aes-encblock.o
1020ifdef CONFIG_INTERNAL_AES
1021HOBJS += ../src/crypto/aes-internal.o
1022HOBJS += ../src/crypto/aes-internal-enc.o
1023endif
246157cb 1024
6fc6879b 1025nt_password_hash: $(NOBJS)
586bad51
JM
1026 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
1027 @$(E) " LD " $@
6fc6879b
JM
1028
1029hlr_auc_gw: $(HOBJS)
586bad51
JM
1030 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
1031 @$(E) " LD " $@
6fc6879b 1032
a4cfb486
JM
1033lcov-html:
1034 lcov -c -d .. > lcov.info
1035 genhtml lcov.info --output-directory lcov-html
1036
6fc6879b
JM
1037clean:
1038 $(MAKE) -C ../src clean
1039 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
7feff065 1040 rm -f *.d *.gcno *.gcda *.gcov
a4cfb486
JM
1041 rm -f lcov.info
1042 rm -rf lcov-html
6fc6879b 1043
6fc6879b 1044-include $(OBJS:%.o=%.d)