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