1ALL=hostapd hostapd_cli
2CONFIG_FILE = .config
3
4include ../src/build.rules
5
6ifdef LIBS
7# If LIBS is set with some global build system defaults, clone those for
8# LIBS_c, LIBS_h, and LIBS_n to cover hostapd_cli, hlr_auc_gw, and
9# nt_password_hash as well.
10ifndef LIBS_c
11LIBS_c := $(LIBS)
12endif
13ifndef LIBS_h
14LIBS_h := $(LIBS)
15endif
16ifndef LIBS_n
17LIBS_n := $(LIBS)
18endif
19ifndef LIBS_s
20LIBS_s := $(LIBS)
21endif
22endif
23
24CFLAGS += $(EXTRA_CFLAGS)
25CFLAGS += -I$(abspath ../src)
26CFLAGS += -I$(abspath ../src/utils)
27
28export BINDIR ?= /usr/local/bin/
29
30ifndef CONFIG_NO_GITVER
31# Add VERSION_STR postfix for builds from a git repository
32ifeq ($(wildcard ../.git),../.git)
33GITVER := $(shell git describe --dirty=+)
34ifneq ($(GITVER),)
35CFLAGS += -DGIT_VERSION_STR_POSTFIX=\"-$(GITVER)\"
36endif
37endif
38endif
39
40ifdef CONFIG_TESTING_OPTIONS
41CFLAGS += -DCONFIG_TESTING_OPTIONS
42CONFIG_WPS_TESTING=y
43endif
44
45ifndef CONFIG_OS
46ifdef CONFIG_NATIVE_WINDOWS
47CONFIG_OS=win32
48else
49CONFIG_OS=unix
50endif
51endif
52
53ifeq ($(CONFIG_OS), internal)
54CFLAGS += -DOS_NO_C_LIB_DEFINES
55endif
56
57ifdef CONFIG_NATIVE_WINDOWS
58CFLAGS += -DCONFIG_NATIVE_WINDOWS
59LIBS += -lws2_32
60endif
61
62OBJS += main.o
63OBJS += config_file.o
64
65OBJS += ../src/ap/hostapd.o
66OBJS += ../src/ap/wpa_auth_glue.o
67OBJS += ../src/ap/drv_callbacks.o
68OBJS += ../src/ap/ap_drv_ops.o
69OBJS += ../src/ap/utils.o
70OBJS += ../src/ap/authsrv.o
71OBJS += ../src/ap/ieee802_1x.o
72OBJS += ../src/ap/ap_config.o
73OBJS += ../src/ap/eap_user_db.o
74OBJS += ../src/ap/ieee802_11_auth.o
75OBJS += ../src/ap/sta_info.o
76OBJS += ../src/ap/wpa_auth.o
77OBJS += ../src/ap/tkip_countermeasures.o
78OBJS += ../src/ap/ap_mlme.o
79OBJS += ../src/ap/wpa_auth_ie.o
80OBJS += ../src/ap/preauth_auth.o
81OBJS += ../src/ap/pmksa_cache_auth.o
82OBJS += ../src/ap/ieee802_11_shared.o
83OBJS += ../src/ap/beacon.o
84OBJS += ../src/ap/bss_load.o
85OBJS += ../src/ap/neighbor_db.o
86OBJS += ../src/ap/rrm.o
87OBJS += ../src/common/ptksa_cache.o
88
89OBJS_c = hostapd_cli.o
90OBJS_c += ../src/common/wpa_ctrl.o
91OBJS_c += ../src/utils/os_$(CONFIG_OS).o
92OBJS_c += ../src/common/cli.o
93
94NEED_RC4=y
95NEED_AES=y
96NEED_MD5=y
97NEED_SHA1=y
98
99OBJS += ../src/drivers/drivers.o
100CFLAGS += -DHOSTAPD
101
102ifdef CONFIG_TAXONOMY
103CFLAGS += -DCONFIG_TAXONOMY
104OBJS += ../src/ap/taxonomy.o
105endif
106
107ifdef CONFIG_MODULE_TESTS
108CFLAGS += -DCONFIG_MODULE_TESTS
109OBJS += hapd_module_tests.o
110endif
111
112ifdef CONFIG_WPA_TRACE
113CFLAGS += -DWPA_TRACE
114OBJS += ../src/utils/trace.o
115HOBJS += ../src/utils/trace.o
116LDFLAGS += -rdynamic
117CFLAGS += -funwind-tables
118ifdef CONFIG_WPA_TRACE_BFD
119CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD -fno-inline -fno-optimize-sibling-calls
120LIBS += -lbfd -ldl -liberty -lz
121LIBS_c += -lbfd -ldl -liberty -lz
122LIBS_h += -lbfd -ldl -liberty -lz
123LIBS_n += -lbfd -ldl -liberty -lz
124LIBS_s += -lbfd -ldl -liberty -lz
125endif
126endif
127
128ifndef CONFIG_ELOOP
129CONFIG_ELOOP=eloop
130endif
131OBJS += ../src/utils/$(CONFIG_ELOOP).o
132OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
133
134ifeq ($(CONFIG_ELOOP), eloop)
135# Using glibc < 2.17 requires -lrt for clock_gettime()
136LIBS += -lrt
137LIBS_c += -lrt
138LIBS_h += -lrt
139LIBS_n += -lrt
140endif
141
142ifdef CONFIG_ELOOP_POLL
143CFLAGS += -DCONFIG_ELOOP_POLL
144endif
145
146ifdef CONFIG_ELOOP_EPOLL
147CFLAGS += -DCONFIG_ELOOP_EPOLL
148endif
149
150ifdef CONFIG_ELOOP_KQUEUE
151CFLAGS += -DCONFIG_ELOOP_KQUEUE
152endif
153
154OBJS += ../src/utils/common.o
155OBJS_c += ../src/utils/common.o
156OBJS += ../src/utils/wpa_debug.o
157OBJS_c += ../src/utils/wpa_debug.o
158OBJS += ../src/utils/wpabuf.o
159OBJS += ../src/utils/os_$(CONFIG_OS).o
160OBJS += ../src/utils/ip_addr.o
161OBJS += ../src/utils/crc32.o
162
163OBJS += ../src/common/ieee802_11_common.o
164OBJS += ../src/common/wpa_common.o
165OBJS += ../src/common/hw_features_common.o
166
167OBJS += ../src/eapol_auth/eapol_auth_sm.o
168
169
170ifdef CONFIG_CODE_COVERAGE
171CFLAGS += -O0 -fprofile-arcs -ftest-coverage -U_FORTIFY_SOURCE
172LIBS += -lgcov
173LIBS_c += -lgcov
174LIBS_h += -lgcov
175LIBS_n += -lgcov
176endif
177
178ifndef CONFIG_NO_DUMP_STATE
179# define HOSTAPD_DUMP_STATE to include support for dumping internal state
180# through control interface commands (undefine it, if you want to save in
181# binary size)
182CFLAGS += -DHOSTAPD_DUMP_STATE
183OBJS += ../src/eapol_auth/eapol_auth_dump.o
184endif
185
186ifdef CONFIG_NO_RADIUS
187CFLAGS += -DCONFIG_NO_RADIUS
188CONFIG_NO_ACCOUNTING=y
189else
190OBJS += ../src/radius/radius.o
191OBJS += ../src/radius/radius_client.o
192OBJS += ../src/radius/radius_das.o
193endif
194
195ifdef CONFIG_NO_ACCOUNTING
196CFLAGS += -DCONFIG_NO_ACCOUNTING
197else
198OBJS += ../src/ap/accounting.o
199endif
200
201ifdef CONFIG_NO_VLAN
202CFLAGS += -DCONFIG_NO_VLAN
203else
204OBJS += ../src/ap/vlan_init.o
205OBJS += ../src/ap/vlan_ifconfig.o
206OBJS += ../src/ap/vlan.o
207ifdef CONFIG_FULL_DYNAMIC_VLAN
208# Define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
209# and VLAN interfaces for the VLAN feature.
210CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
211OBJS += ../src/ap/vlan_full.o
212ifdef CONFIG_VLAN_NETLINK
213OBJS += ../src/ap/vlan_util.o
214else
215OBJS += ../src/ap/vlan_ioctl.o
216endif
217endif
218endif
219
220ifdef CONFIG_NO_CTRL_IFACE
221CFLAGS += -DCONFIG_NO_CTRL_IFACE
222else
223ifeq ($(CONFIG_CTRL_IFACE), udp)
224CFLAGS += -DCONFIG_CTRL_IFACE_UDP
225else
226ifeq ($(CONFIG_CTRL_IFACE), udp6)
227CFLAGS += -DCONFIG_CTRL_IFACE_UDP
228CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
229else
230ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
231CFLAGS += -DCONFIG_CTRL_IFACE_UDP
232CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
233else
234ifeq ($(CONFIG_CTRL_IFACE), udp6-remote)
235CFLAGS += -DCONFIG_CTRL_IFACE_UDP
236CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
237CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
238else
239CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
240endif
241endif
242endif
243endif
244OBJS += ../src/common/ctrl_iface_common.o
245OBJS += ctrl_iface.o
246OBJS += ../src/ap/ctrl_iface_ap.o
247endif
248
249ifndef CONFIG_NO_CTRL_IFACE
250CFLAGS += -DCONFIG_CTRL_IFACE
251endif
252
253ifdef CONFIG_RSN_PREAUTH
254CFLAGS += -DCONFIG_RSN_PREAUTH
255CONFIG_L2_PACKET=y
256endif
257
258ifdef CONFIG_HS20
259CONFIG_PROXYARP=y
260endif
261
262ifdef CONFIG_PROXYARP
263CONFIG_L2_PACKET=y
264endif
265
266ifdef CONFIG_SUITEB
267CFLAGS += -DCONFIG_SUITEB
268endif
269
270ifdef CONFIG_SUITEB192
271CFLAGS += -DCONFIG_SUITEB192
272NEED_SHA384=y
273endif
274
275ifdef CONFIG_OCV
276CFLAGS += -DCONFIG_OCV
277OBJS += ../src/common/ocv.o
278endif
279
280NEED_AES_UNWRAP=y
281
282ifdef CONFIG_IEEE80211R
283CFLAGS += -DCONFIG_IEEE80211R -DCONFIG_IEEE80211R_AP
284OBJS += ../src/ap/wpa_auth_ft.o
285NEED_AES_UNWRAP=y
286NEED_AES_SIV=y
287NEED_ETH_P_OUI=y
288NEED_HMAC_SHA256_KDF=y
289endif
290
291ifdef NEED_ETH_P_OUI
292CFLAGS += -DCONFIG_ETH_P_OUI
293OBJS += ../src/ap/eth_p_oui.o
294endif
295
296ifdef CONFIG_SAE
297CFLAGS += -DCONFIG_SAE
298OBJS += ../src/common/sae.o
299ifdef CONFIG_SAE_PK
300CFLAGS += -DCONFIG_SAE_PK
301NEED_AES_SIV=y
302NEED_BASE64=y
303OBJS += ../src/common/sae_pk.o
304endif
305NEED_ECC=y
306NEED_DH_GROUPS=y
307NEED_HMAC_SHA256_KDF=y
308NEED_AP_MLME=y
309NEED_DRAGONFLY=y
310endif
311
312ifdef CONFIG_OWE
313CFLAGS += -DCONFIG_OWE
314NEED_ECC=y
315NEED_HMAC_SHA256_KDF=y
316NEED_HMAC_SHA384_KDF=y
317NEED_HMAC_SHA512_KDF=y
318NEED_SHA384=y
319NEED_SHA512=y
320endif
321
322ifdef CONFIG_AIRTIME_POLICY
323CFLAGS += -DCONFIG_AIRTIME_POLICY
324OBJS += ../src/ap/airtime_policy.o
325endif
326
327ifdef CONFIG_FILS
328CFLAGS += -DCONFIG_FILS
329OBJS += ../src/ap/fils_hlp.o
330NEED_SHA384=y
331NEED_AES_SIV=y
332ifdef CONFIG_FILS_SK_PFS
333CFLAGS += -DCONFIG_FILS_SK_PFS
334NEED_ECC=y
335endif
336endif
337
338ifdef CONFIG_WNM
339CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP
340OBJS += ../src/ap/wnm_ap.o
341endif
342
343ifdef CONFIG_IEEE80211AC
344CFLAGS += -DCONFIG_IEEE80211AC
345endif
346
347ifdef CONFIG_IEEE80211BE
348CONFIG_IEEE80211AX=y
349CFLAGS += -DCONFIG_IEEE80211BE
350OBJS += ../src/ap/ieee802_11_eht.o
351endif
352
353ifdef CONFIG_IEEE80211AX
354CFLAGS += -DCONFIG_IEEE80211AX
355OBJS += ../src/ap/ieee802_11_he.o
356endif
357
358ifdef CONFIG_MBO
359CFLAGS += -DCONFIG_MBO
360OBJS += ../src/ap/mbo_ap.o
361endif
362
363include ../src/drivers/drivers.mak
364OBJS += $(DRV_AP_OBJS)
365CFLAGS += $(DRV_AP_CFLAGS)
366LDFLAGS += $(DRV_AP_LDFLAGS)
367LIBS += $(DRV_AP_LIBS)
368
369ifdef CONFIG_L2_PACKET
370ifdef CONFIG_DNET_PCAP
371ifdef CONFIG_L2_FREEBSD
372LIBS += -lpcap
373OBJS += ../src/l2_packet/l2_packet_freebsd.o
374else
375LIBS += -ldnet -lpcap
376OBJS += ../src/l2_packet/l2_packet_pcap.o
377endif
378else
379OBJS += ../src/l2_packet/l2_packet_linux.o
380endif
381else
382OBJS += ../src/l2_packet/l2_packet_none.o
383endif
384
385
386ifdef CONFIG_ERP
387CFLAGS += -DCONFIG_ERP
388NEED_HMAC_SHA256_KDF=y
389endif
390
391ifdef CONFIG_EAP_MD5
392CFLAGS += -DEAP_SERVER_MD5
393OBJS += ../src/eap_server/eap_server_md5.o
394CHAP=y
395endif
396
397ifdef CONFIG_EAP_TLS
398CFLAGS += -DEAP_SERVER_TLS
399OBJS += ../src/eap_server/eap_server_tls.o
400TLS_FUNCS=y
401endif
402
403ifdef CONFIG_EAP_UNAUTH_TLS
404CFLAGS += -DEAP_SERVER_UNAUTH_TLS
405ifndef CONFIG_EAP_TLS
406OBJS += ../src/eap_server/eap_server_tls.o
407TLS_FUNCS=y
408endif
409endif
410
411ifdef CONFIG_EAP_PEAP
412CFLAGS += -DEAP_SERVER_PEAP
413OBJS += ../src/eap_server/eap_server_peap.o
414OBJS += ../src/eap_common/eap_peap_common.o
415TLS_FUNCS=y
416CONFIG_EAP_MSCHAPV2=y
417endif
418
419ifdef CONFIG_EAP_TTLS
420CFLAGS += -DEAP_SERVER_TTLS
421OBJS += ../src/eap_server/eap_server_ttls.o
422TLS_FUNCS=y
423CHAP=y
424endif
425
426ifdef CONFIG_EAP_MSCHAPV2
427CFLAGS += -DEAP_SERVER_MSCHAPV2
428OBJS += ../src/eap_server/eap_server_mschapv2.o
429MS_FUNCS=y
430endif
431
432ifdef CONFIG_EAP_GTC
433CFLAGS += -DEAP_SERVER_GTC
434OBJS += ../src/eap_server/eap_server_gtc.o
435endif
436
437ifdef CONFIG_EAP_SIM
438CFLAGS += -DEAP_SERVER_SIM
439OBJS += ../src/eap_server/eap_server_sim.o
440CONFIG_EAP_SIM_COMMON=y
441NEED_AES_CBC=y
442endif
443
444ifdef CONFIG_EAP_AKA
445CFLAGS += -DEAP_SERVER_AKA
446OBJS += ../src/eap_server/eap_server_aka.o
447CONFIG_EAP_SIM_COMMON=y
448NEED_AES_CBC=y
449endif
450
451ifdef CONFIG_EAP_AKA_PRIME
452CFLAGS += -DEAP_SERVER_AKA_PRIME
453endif
454
455ifdef CONFIG_EAP_SIM_COMMON
456OBJS += ../src/eap_common/eap_sim_common.o
457# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
458# replaced with another file implementing the interface specified in
459# eap_sim_db.h.
460OBJS += ../src/eap_server/eap_sim_db.o
461NEED_FIPS186_2_PRF=y
462endif
463
464ifdef CONFIG_EAP_PAX
465CFLAGS += -DEAP_SERVER_PAX
466OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
467endif
468
469ifdef CONFIG_EAP_PSK
470CFLAGS += -DEAP_SERVER_PSK
471OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
472NEED_AES_ENCBLOCK=y
473NEED_AES_EAX=y
474endif
475
476ifdef CONFIG_EAP_SAKE
477CFLAGS += -DEAP_SERVER_SAKE
478OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
479endif
480
481ifdef CONFIG_EAP_GPSK
482CFLAGS += -DEAP_SERVER_GPSK
483OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
484ifdef CONFIG_EAP_GPSK_SHA256
485CFLAGS += -DEAP_GPSK_SHA256
486endif
487endif
488
489ifdef CONFIG_EAP_PWD
490CFLAGS += -DEAP_SERVER_PWD
491OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
492NEED_ECC=y
493NEED_DRAGONFLY=y
494endif
495
496ifdef CONFIG_EAP_EKE
497CFLAGS += -DEAP_SERVER_EKE
498OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o
499NEED_DH_GROUPS=y
500NEED_DH_GROUPS_ALL=y
501endif
502
503ifdef CONFIG_EAP_VENDOR_TEST
504CFLAGS += -DEAP_SERVER_VENDOR_TEST
505OBJS += ../src/eap_server/eap_server_vendor_test.o
506endif
507
508ifdef CONFIG_EAP_FAST
509CFLAGS += -DEAP_SERVER_FAST
510OBJS += ../src/eap_server/eap_server_fast.o
511OBJS += ../src/eap_common/eap_fast_common.o
512TLS_FUNCS=y
513NEED_T_PRF=y
514NEED_AES_UNWRAP=y
515endif
516
517ifdef CONFIG_EAP_TEAP
518CFLAGS += -DEAP_SERVER_TEAP
519OBJS += ../src/eap_server/eap_server_teap.o
520OBJS += ../src/eap_common/eap_teap_common.o
521TLS_FUNCS=y
522NEED_T_PRF=y
523NEED_SHA384=y
524NEED_TLS_PRF_SHA256=y
525NEED_TLS_PRF_SHA384=y
526NEED_AES_UNWRAP=y
527endif
528
529ifdef CONFIG_WPS
530CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
531OBJS += ../src/utils/uuid.o
532OBJS += ../src/ap/wps_hostapd.o
533OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
534OBJS += ../src/wps/wps.o
535OBJS += ../src/wps/wps_common.o
536OBJS += ../src/wps/wps_attr_parse.o
537OBJS += ../src/wps/wps_attr_build.o
538OBJS += ../src/wps/wps_attr_process.o
539OBJS += ../src/wps/wps_dev_attr.o
540OBJS += ../src/wps/wps_enrollee.o
541OBJS += ../src/wps/wps_registrar.o
542NEED_DH_GROUPS=y
543NEED_BASE64=y
544NEED_AES_CBC=y
545NEED_MODEXP=y
546CONFIG_EAP=y
547
548ifdef CONFIG_WPS_NFC
549CFLAGS += -DCONFIG_WPS_NFC
550OBJS += ../src/wps/ndef.o
551NEED_WPS_OOB=y
552endif
553
554ifdef NEED_WPS_OOB
555CFLAGS += -DCONFIG_WPS_OOB
556endif
557
558ifdef CONFIG_WPS_UPNP
559CFLAGS += -DCONFIG_WPS_UPNP
560OBJS += ../src/wps/wps_upnp.o
561OBJS += ../src/wps/wps_upnp_ssdp.o
562OBJS += ../src/wps/wps_upnp_web.o
563OBJS += ../src/wps/wps_upnp_event.o
564OBJS += ../src/wps/wps_upnp_ap.o
565OBJS += ../src/wps/upnp_xml.o
566OBJS += ../src/wps/httpread.o
567OBJS += ../src/wps/http_client.o
568OBJS += ../src/wps/http_server.o
569endif
570
571ifdef CONFIG_WPS_STRICT
572CFLAGS += -DCONFIG_WPS_STRICT
573OBJS += ../src/wps/wps_validate.o
574endif
575
576ifdef CONFIG_WPS_TESTING
577CFLAGS += -DCONFIG_WPS_TESTING
578endif
579
580endif
581
582ifdef CONFIG_DPP
583CFLAGS += -DCONFIG_DPP
584OBJS += ../src/common/dpp.o
585OBJS += ../src/common/dpp_auth.o
586OBJS += ../src/common/dpp_backup.o
587OBJS += ../src/common/dpp_crypto.o
588OBJS += ../src/common/dpp_pkex.o
589OBJS += ../src/common/dpp_reconfig.o
590OBJS += ../src/common/dpp_tcp.o
591OBJS += ../src/ap/dpp_hostapd.o
592OBJS += ../src/ap/gas_query_ap.o
593NEED_AES_SIV=y
594NEED_HMAC_SHA256_KDF=y
595NEED_HMAC_SHA384_KDF=y
596NEED_HMAC_SHA512_KDF=y
597NEED_SHA384=y
598NEED_SHA512=y
599NEED_ECC=y
600NEED_JSON=y
601NEED_GAS=y
602NEED_BASE64=y
603NEED_ASN1=y
604ifdef CONFIG_DPP2
605CFLAGS += -DCONFIG_DPP2
606endif
607ifdef CONFIG_DPP3
608CFLAGS += -DCONFIG_DPP3
609endif
610endif
611
612ifdef CONFIG_NAN_USD
613OBJS += ../src/common/nan_de.o
614OBJS += ../src/ap/nan_usd_ap.o
615CFLAGS += -DCONFIG_NAN_USD
616endif
617
618ifdef CONFIG_PASN
619CFLAGS += -DCONFIG_PASN
620CFLAGS += -DCONFIG_PTKSA_CACHE
621NEED_HMAC_SHA256_KDF=y
622NEED_HMAC_SHA384_KDF=y
623NEED_SHA256=y
624NEED_SHA384=y
625endif
626
627ifdef CONFIG_EAP_IKEV2
628CFLAGS += -DEAP_SERVER_IKEV2
629OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
630OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
631NEED_DH_GROUPS=y
632NEED_DH_GROUPS_ALL=y
633NEED_MODEXP=y
634NEED_CIPHER=y
635endif
636
637ifdef CONFIG_EAP_TNC
638CFLAGS += -DEAP_SERVER_TNC
639OBJS += ../src/eap_server/eap_server_tnc.o
640OBJS += ../src/eap_server/tncs.o
641NEED_BASE64=y
642ifndef CONFIG_DRIVER_BSD
643LIBS += -ldl
644endif
645endif
646
647ifdef CONFIG_MACSEC
648CFLAGS += -DCONFIG_MACSEC
649OBJS += ../src/ap/wpa_auth_kay.o
650OBJS += ../src/pae/ieee802_1x_cp.o
651OBJS += ../src/pae/ieee802_1x_kay.o
652OBJS += ../src/pae/ieee802_1x_key.o
653OBJS += ../src/pae/ieee802_1x_secy_ops.o
654endif
655
656# Basic EAP functionality is needed for EAPOL
657OBJS += eap_register.o
658OBJS += ../src/eap_server/eap_server.o
659OBJS += ../src/eap_common/eap_common.o
660OBJS += ../src/eap_server/eap_server_methods.o
661OBJS += ../src/eap_server/eap_server_identity.o
662CFLAGS += -DEAP_SERVER_IDENTITY
663
664ifdef CONFIG_EAP
665CFLAGS += -DEAP_SERVER
666endif
667
668ifdef CONFIG_PKCS12
669CFLAGS += -DPKCS12_FUNCS
670endif
671
672ifdef NEED_DRAGONFLY
673OBJS += ../src/common/dragonfly.o
674endif
675
676ifdef MS_FUNCS
677OBJS += ../src/crypto/ms_funcs.o
678NEED_DES=y
679NEED_MD4=y
680endif
681
682ifdef CHAP
683OBJS += ../src/eap_common/chap.o
684endif
685
686ifdef CONFIG_RADIUS_TLS
687TLS_FUNCS=y
688CFLAGS += -DCONFIG_RADIUS_TLS
689endif
690
691ifdef TLS_FUNCS
692NEED_DES=y
693# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
694CFLAGS += -DEAP_TLS_FUNCS
695OBJS += ../src/eap_server/eap_server_tls_common.o
696NEED_TLS_PRF=y
697endif
698
699ifndef CONFIG_TLS
700CONFIG_TLS=openssl
701endif
702
703ifdef CONFIG_TLSV11
704CFLAGS += -DCONFIG_TLSV11
705endif
706
707ifdef CONFIG_TLSV12
708CFLAGS += -DCONFIG_TLSV12
709endif
710
711ifeq ($(CONFIG_TLS), wolfssl)
712CFLAGS += -DCRYPTO_RSA_OAEP_SHA256
713CONFIG_CRYPTO=wolfssl
714ifdef TLS_FUNCS
715OBJS += ../src/crypto/tls_wolfssl.o
716LIBS += -lwolfssl -lm
717endif
718OBJS += ../src/crypto/crypto_wolfssl.o
719HOBJS += ../src/crypto/crypto_wolfssl.o
720ifdef NEED_FIPS186_2_PRF
721OBJS += ../src/crypto/fips_prf_wolfssl.o
722endif
723NEED_TLS_PRF_SHA256=y
724LIBS += -lwolfssl -lm
725LIBS_h += -lwolfssl -lm
726ifdef CONFIG_TLS_ADD_DL
727LIBS += -ldl
728LIBS_h += -ldl
729endif
730endif
731
732ifeq ($(CONFIG_TLS), openssl)
733CFLAGS += -DCRYPTO_RSA_OAEP_SHA256
734CONFIG_CRYPTO=openssl
735ifdef TLS_FUNCS
736OBJS += ../src/crypto/tls_openssl.o
737OBJS += ../src/crypto/tls_openssl_ocsp.o
738LIBS += -lssl
739endif
740OBJS += ../src/crypto/crypto_openssl.o
741HOBJS += ../src/crypto/crypto_openssl.o
742SOBJS += ../src/crypto/crypto_openssl.o
743ifdef NEED_FIPS186_2_PRF
744OBJS += ../src/crypto/fips_prf_openssl.o
745endif
746NEED_TLS_PRF_SHA256=y
747LIBS += -lcrypto
748LIBS_h += -lcrypto
749LIBS_n += -lcrypto
750LIBS_s += -lcrypto
751ifdef CONFIG_TLS_ADD_DL
752LIBS += -ldl
753LIBS_h += -ldl
754LIBS_s += -ldl
755endif
756ifndef CONFIG_TLS_DEFAULT_CIPHERS
757CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW"
758endif
759CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\"
760endif
761
762ifeq ($(CONFIG_TLS), gnutls)
763ifndef CONFIG_CRYPTO
764# default to libgcrypt
765CONFIG_CRYPTO=gnutls
766endif
767ifdef TLS_FUNCS
768OBJS += ../src/crypto/tls_gnutls.o
769LIBS += -lgnutls -lgpg-error
770endif
771OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
772HOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
773ifdef NEED_FIPS186_2_PRF
774OBJS += ../src/crypto/fips_prf_internal.o
775SHA1OBJS += ../src/crypto/sha1-internal.o
776endif
777ifeq ($(CONFIG_CRYPTO), gnutls)
778LIBS += -lgcrypt
779LIBS_h += -lgcrypt
780LIBS_n += -lgcrypt
781CONFIG_INTERNAL_RC4=y
782CONFIG_INTERNAL_DH_GROUP5=y
783endif
784ifeq ($(CONFIG_CRYPTO), nettle)
785LIBS += -lnettle -lgmp
786LIBS_p += -lnettle -lgmp
787CONFIG_INTERNAL_RC4=y
788CONFIG_INTERNAL_DH_GROUP5=y
789endif
790endif
791
792ifeq ($(CONFIG_TLS), internal)
793ifndef CONFIG_CRYPTO
794CONFIG_CRYPTO=internal
795endif
796ifdef TLS_FUNCS
797OBJS += ../src/crypto/crypto_internal-rsa.o
798OBJS += ../src/crypto/tls_internal.o
799OBJS += ../src/tls/tlsv1_common.o
800OBJS += ../src/tls/tlsv1_record.o
801OBJS += ../src/tls/tlsv1_cred.o
802OBJS += ../src/tls/tlsv1_server.o
803OBJS += ../src/tls/tlsv1_server_write.o
804OBJS += ../src/tls/tlsv1_server_read.o
805OBJS += ../src/tls/rsa.o
806OBJS += ../src/tls/x509v3.o
807OBJS += ../src/tls/pkcs1.o
808OBJS += ../src/tls/pkcs5.o
809OBJS += ../src/tls/pkcs8.o
810NEED_ASN1=y
811NEED_BASE64=y
812NEED_TLS_PRF=y
813ifdef CONFIG_TLSV12
814NEED_TLS_PRF_SHA256=y
815endif
816NEED_MODEXP=y
817NEED_CIPHER=y
818CFLAGS += -DCONFIG_TLS_INTERNAL
819CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
820endif
821ifdef NEED_CIPHER
822NEED_DES=y
823OBJS += ../src/crypto/crypto_internal-cipher.o
824endif
825ifdef NEED_MODEXP
826OBJS += ../src/crypto/crypto_internal-modexp.o
827OBJS += ../src/tls/bignum.o
828endif
829ifeq ($(CONFIG_CRYPTO), libtomcrypt)
830OBJS += ../src/crypto/crypto_libtomcrypt.o
831LIBS += -ltomcrypt -ltfm
832LIBS_h += -ltomcrypt -ltfm
833CONFIG_INTERNAL_SHA256=y
834CONFIG_INTERNAL_RC4=y
835CONFIG_INTERNAL_DH_GROUP5=y
836endif
837ifeq ($(CONFIG_CRYPTO), internal)
838OBJS += ../src/crypto/crypto_internal.o
839NEED_AES_DEC=y
840CFLAGS += -DCONFIG_CRYPTO_INTERNAL
841ifdef CONFIG_INTERNAL_LIBTOMMATH
842CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
843ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
844CFLAGS += -DLTM_FAST
845endif
846else
847LIBS += -ltommath
848LIBS_h += -ltommath
849endif
850CONFIG_INTERNAL_AES=y
851CONFIG_INTERNAL_DES=y
852CONFIG_INTERNAL_SHA1=y
853CONFIG_INTERNAL_MD4=y
854CONFIG_INTERNAL_MD5=y
855CONFIG_INTERNAL_SHA256=y
856CONFIG_INTERNAL_SHA384=y
857CONFIG_INTERNAL_SHA512=y
858CONFIG_INTERNAL_RC4=y
859CONFIG_INTERNAL_DH_GROUP5=y
860endif
861ifeq ($(CONFIG_CRYPTO), cryptoapi)
862OBJS += ../src/crypto/crypto_cryptoapi.o
863OBJS_p += ../src/crypto/crypto_cryptoapi.o
864CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
865CONFIG_INTERNAL_SHA256=y
866CONFIG_INTERNAL_RC4=y
867endif
868endif
869
870ifeq ($(CONFIG_TLS), linux)
871OBJS += ../src/crypto/crypto_linux.o
872ifdef TLS_FUNCS
873OBJS += ../src/crypto/crypto_internal-rsa.o
874OBJS += ../src/crypto/tls_internal.o
875OBJS += ../src/tls/tlsv1_common.o
876OBJS += ../src/tls/tlsv1_record.o
877OBJS += ../src/tls/tlsv1_cred.o
878OBJS += ../src/tls/tlsv1_server.o
879OBJS += ../src/tls/tlsv1_server_write.o
880OBJS += ../src/tls/tlsv1_server_read.o
881OBJS += ../src/tls/rsa.o
882OBJS += ../src/tls/x509v3.o
883OBJS += ../src/tls/pkcs1.o
884OBJS += ../src/tls/pkcs5.o
885OBJS += ../src/tls/pkcs8.o
886NEED_ASN1=y
887NEED_BASE64=y
888NEED_TLS_PRF=y
889ifdef CONFIG_TLSV12
890NEED_TLS_PRF_SHA256=y
891endif
892NEED_MODEXP=y
893NEED_CIPHER=y
894CFLAGS += -DCONFIG_TLS_INTERNAL
895CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
896endif
897ifdef NEED_MODEXP
898OBJS += ../src/crypto/crypto_internal-modexp.o
899OBJS += ../src/tls/bignum.o
900CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
901CFLAGS += -DLTM_FAST
902endif
903CONFIG_INTERNAL_DH_GROUP5=y
904ifdef NEED_FIPS186_2_PRF
905OBJS += ../src/crypto/fips_prf_internal.o
906OBJS += ../src/crypto/sha1-internal.o
907endif
908endif
909
910ifeq ($(CONFIG_TLS), none)
911ifdef TLS_FUNCS
912OBJS += ../src/crypto/tls_none.o
913CFLAGS += -DEAP_TLS_NONE
914CONFIG_INTERNAL_AES=y
915CONFIG_INTERNAL_SHA1=y
916CONFIG_INTERNAL_MD5=y
917endif
918OBJS += ../src/crypto/crypto_none.o
919OBJS_p += ../src/crypto/crypto_none.o
920CONFIG_INTERNAL_SHA256=y
921CONFIG_INTERNAL_RC4=y
922endif
923
924ifndef TLS_FUNCS
925OBJS += ../src/crypto/tls_none.o
926ifeq ($(CONFIG_TLS), internal)
927CONFIG_INTERNAL_AES=y
928CONFIG_INTERNAL_SHA1=y
929CONFIG_INTERNAL_MD5=y
930CONFIG_INTERNAL_RC4=y
931endif
932endif
933
934AESOBJS = # none so far
935ifdef CONFIG_INTERNAL_AES
936AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
937endif
938
939ifneq ($(CONFIG_TLS), openssl)
940ifneq ($(CONFIG_TLS), wolfssl)
941AESOBJS += ../src/crypto/aes-wrap.o
942endif
943endif
944ifdef NEED_AES_EAX
945AESOBJS += ../src/crypto/aes-eax.o
946NEED_AES_CTR=y
947endif
948ifdef NEED_AES_SIV
949AESOBJS += ../src/crypto/aes-siv.o
950NEED_AES_CTR=y
951endif
952ifdef NEED_AES_CTR
953AESOBJS += ../src/crypto/aes-ctr.o
954endif
955ifdef NEED_AES_ENCBLOCK
956AESOBJS += ../src/crypto/aes-encblock.o
957endif
958ifneq ($(CONFIG_TLS), openssl)
959ifneq ($(CONFIG_TLS), linux)
960ifneq ($(CONFIG_TLS), wolfssl)
961AESOBJS += ../src/crypto/aes-omac1.o
962endif
963endif
964endif
965ifdef NEED_AES_UNWRAP
966ifneq ($(CONFIG_TLS), openssl)
967ifneq ($(CONFIG_TLS), linux)
968ifneq ($(CONFIG_TLS), wolfssl)
969NEED_AES_DEC=y
970AESOBJS += ../src/crypto/aes-unwrap.o
971endif
972endif
973endif
974endif
975ifdef NEED_AES_CBC
976NEED_AES_DEC=y
977ifneq ($(CONFIG_TLS), openssl)
978ifneq ($(CONFIG_TLS), linux)
979ifneq ($(CONFIG_TLS), wolfssl)
980AESOBJS += ../src/crypto/aes-cbc.o
981endif
982endif
983endif
984endif
985ifdef NEED_AES_DEC
986ifdef CONFIG_INTERNAL_AES
987AESOBJS += ../src/crypto/aes-internal-dec.o
988endif
989endif
990ifdef NEED_AES
991OBJS += $(AESOBJS)
992endif
993
994ifdef NEED_SHA1
995ifneq ($(CONFIG_TLS), openssl)
996ifneq ($(CONFIG_TLS), linux)
997ifneq ($(CONFIG_TLS), gnutls)
998ifneq ($(CONFIG_TLS), wolfssl)
999SHA1OBJS += ../src/crypto/sha1.o
1000endif
1001endif
1002endif
1003endif
1004SHA1OBJS += ../src/crypto/sha1-prf.o
1005ifdef CONFIG_INTERNAL_SHA1
1006SHA1OBJS += ../src/crypto/sha1-internal.o
1007ifdef NEED_FIPS186_2_PRF
1008SHA1OBJS += ../src/crypto/fips_prf_internal.o
1009endif
1010endif
1011ifneq ($(CONFIG_TLS), openssl)
1012ifneq ($(CONFIG_TLS), wolfssl)
1013SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
1014endif
1015endif
1016ifdef NEED_T_PRF
1017SHA1OBJS += ../src/crypto/sha1-tprf.o
1018endif
1019ifdef NEED_TLS_PRF
1020SHA1OBJS += ../src/crypto/sha1-tlsprf.o
1021endif
1022endif
1023
1024ifdef NEED_SHA1
1025OBJS += $(SHA1OBJS)
1026endif
1027
1028ifneq ($(CONFIG_TLS), openssl)
1029ifneq ($(CONFIG_TLS), linux)
1030ifneq ($(CONFIG_TLS), gnutls)
1031ifneq ($(CONFIG_TLS), wolfssl)
1032OBJS += ../src/crypto/md5.o
1033endif
1034endif
1035endif
1036endif
1037
1038ifdef NEED_MD5
1039ifdef CONFIG_INTERNAL_MD5
1040OBJS += ../src/crypto/md5-internal.o
1041HOBJS += ../src/crypto/md5-internal.o
1042endif
1043endif
1044
1045ifdef NEED_MD4
1046ifdef CONFIG_INTERNAL_MD4
1047OBJS += ../src/crypto/md4-internal.o
1048endif
1049endif
1050
1051ifdef NEED_DES
1052CFLAGS += -DCONFIG_DES
1053ifdef CONFIG_INTERNAL_DES
1054OBJS += ../src/crypto/des-internal.o
1055endif
1056endif
1057
1058ifdef CONFIG_NO_RC4
1059CFLAGS += -DCONFIG_NO_RC4
1060endif
1061
1062ifdef NEED_RC4
1063ifdef CONFIG_INTERNAL_RC4
1064ifndef CONFIG_NO_RC4
1065OBJS += ../src/crypto/rc4.o
1066endif
1067endif
1068endif
1069
1070ifdef CONFIG_SAE
1071ifdef NEED_SHA384
1072# Need to add HMAC-SHA384 KDF as well, if SHA384 was enabled.
1073NEED_HMAC_SHA384_KDF=y
1074endif
1075ifdef NEED_SHA512
1076# Need to add HMAC-SHA512 KDF as well, if SHA512 was enabled.
1077NEED_HMAC_SHA512_KDF=y
1078endif
1079endif
1080
1081CFLAGS += -DCONFIG_SHA256
1082ifneq ($(CONFIG_TLS), openssl)
1083ifneq ($(CONFIG_TLS), linux)
1084ifneq ($(CONFIG_TLS), gnutls)
1085ifneq ($(CONFIG_TLS), wolfssl)
1086OBJS += ../src/crypto/sha256.o
1087endif
1088endif
1089endif
1090endif
1091OBJS += ../src/crypto/sha256-prf.o
1092ifdef CONFIG_INTERNAL_SHA256
1093OBJS += ../src/crypto/sha256-internal.o
1094endif
1095ifdef NEED_TLS_PRF_SHA256
1096OBJS += ../src/crypto/sha256-tlsprf.o
1097endif
1098ifdef NEED_TLS_PRF_SHA384
1099OBJS += ../src/crypto/sha384-tlsprf.o
1100endif
1101ifdef NEED_HMAC_SHA256_KDF
1102OBJS += ../src/crypto/sha256-kdf.o
1103endif
1104ifdef NEED_HMAC_SHA384_KDF
1105OBJS += ../src/crypto/sha384-kdf.o
1106endif
1107ifdef NEED_HMAC_SHA512_KDF
1108OBJS += ../src/crypto/sha512-kdf.o
1109endif
1110ifdef NEED_SHA384
1111CFLAGS += -DCONFIG_SHA384
1112ifneq ($(CONFIG_TLS), openssl)
1113ifneq ($(CONFIG_TLS), linux)
1114ifneq ($(CONFIG_TLS), gnutls)
1115ifneq ($(CONFIG_TLS), wolfssl)
1116OBJS += ../src/crypto/sha384.o
1117endif
1118endif
1119endif
1120endif
1121OBJS += ../src/crypto/sha384-prf.o
1122endif
1123ifdef NEED_SHA512
1124CFLAGS += -DCONFIG_SHA512
1125ifneq ($(CONFIG_TLS), openssl)
1126ifneq ($(CONFIG_TLS), linux)
1127ifneq ($(CONFIG_TLS), gnutls)
1128ifneq ($(CONFIG_TLS), wolfssl)
1129OBJS += ../src/crypto/sha512.o
1130endif
1131endif
1132endif
1133endif
1134OBJS += ../src/crypto/sha512-prf.o
1135endif
1136
1137ifdef CONFIG_INTERNAL_SHA384
1138CFLAGS += -DCONFIG_INTERNAL_SHA384
1139OBJS += ../src/crypto/sha384-internal.o
1140endif
1141
1142ifdef CONFIG_INTERNAL_SHA512
1143CFLAGS += -DCONFIG_INTERNAL_SHA512
1144OBJS += ../src/crypto/sha512-internal.o
1145endif
1146
1147ifdef NEED_ASN1
1148OBJS += ../src/tls/asn1.o
1149endif
1150
1151ifdef NEED_DH_GROUPS
1152OBJS += ../src/crypto/dh_groups.o
1153endif
1154ifdef NEED_DH_GROUPS_ALL
1155CFLAGS += -DALL_DH_GROUPS
1156endif
1157ifdef CONFIG_INTERNAL_DH_GROUP5
1158ifdef NEED_DH_GROUPS
1159OBJS += ../src/crypto/dh_group5.o
1160endif
1161endif
1162
1163ifdef NEED_ECC
1164CFLAGS += -DCONFIG_ECC
1165endif
1166
1167ifdef CONFIG_NO_RANDOM_POOL
1168CFLAGS += -DCONFIG_NO_RANDOM_POOL
1169else
1170ifdef CONFIG_GETRANDOM
1171CFLAGS += -DCONFIG_GETRANDOM
1172endif
1173OBJS += ../src/crypto/random.o
1174HOBJS += ../src/crypto/random.o
1175HOBJS += ../src/utils/eloop.o
1176HOBJS += $(SHA1OBJS)
1177ifneq ($(CONFIG_TLS), openssl)
1178ifneq ($(CONFIG_TLS), linux)
1179ifneq ($(CONFIG_TLS), wolfssl)
1180HOBJS += ../src/crypto/md5.o
1181endif
1182endif
1183endif
1184endif
1185
1186ifdef CONFIG_RADIUS_SERVER
1187CFLAGS += -DRADIUS_SERVER
1188OBJS += ../src/radius/radius_server.o
1189endif
1190
1191ifdef CONFIG_IPV6
1192CFLAGS += -DCONFIG_IPV6
1193endif
1194
1195ifdef CONFIG_DRIVER_RADIUS_ACL
1196CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
1197endif
1198
1199ifdef NEED_BASE64
1200OBJS += ../src/utils/base64.o
1201endif
1202
1203ifdef NEED_JSON
1204OBJS += ../src/utils/json.o
1205CFLAGS += -DCONFIG_JSON
1206endif
1207
1208ifdef NEED_AP_MLME
1209OBJS += ../src/ap/wmm.o
1210OBJS += ../src/ap/ap_list.o
1211OBJS += ../src/ap/comeback_token.o
1212OBJS += ../src/pasn/pasn_responder.o
1213OBJS += ../src/pasn/pasn_common.o
1214OBJS += ../src/ap/ieee802_11.o
1215OBJS += ../src/ap/hw_features.o
1216OBJS += ../src/ap/dfs.o
1217CFLAGS += -DNEED_AP_MLME
1218endif
1219OBJS += ../src/ap/ieee802_11_ht.o
1220
1221ifdef CONFIG_IEEE80211AC
1222OBJS += ../src/ap/ieee802_11_vht.o
1223endif
1224
1225ifdef CONFIG_P2P_MANAGER
1226CFLAGS += -DCONFIG_P2P_MANAGER
1227OBJS += ../src/ap/p2p_hostapd.o
1228endif
1229
1230ifdef CONFIG_HS20
1231CFLAGS += -DCONFIG_HS20
1232OBJS += ../src/ap/hs20.o
1233CONFIG_INTERWORKING=y
1234endif
1235
1236ifdef CONFIG_INTERWORKING
1237CFLAGS += -DCONFIG_INTERWORKING
1238NEED_GAS=y
1239endif
1240
1241ifdef NEED_GAS
1242OBJS += ../src/common/gas.o
1243OBJS += ../src/ap/gas_serv.o
1244endif
1245
1246ifdef CONFIG_PROXYARP
1247CFLAGS += -DCONFIG_PROXYARP
1248OBJS += ../src/ap/x_snoop.o
1249OBJS += ../src/ap/dhcp_snoop.o
1250ifdef CONFIG_IPV6
1251OBJS += ../src/ap/ndisc_snoop.o
1252endif
1253endif
1254
1255OBJS += ../src/drivers/driver_common.o
1256
1257ifdef CONFIG_WPA_CLI_EDIT
1258OBJS_c += ../src/utils/edit.o
1259else
1260OBJS_c += ../src/utils/edit_simple.o
1261endif
1262
1263ifdef CONFIG_ACS
1264CFLAGS += -DCONFIG_ACS
1265OBJS += ../src/ap/acs.o
1266LIBS += -lm
1267endif
1268
1269ifdef CONFIG_NO_STDOUT_DEBUG
1270CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1271endif
1272
1273ifdef CONFIG_DEBUG_SYSLOG
1274CFLAGS += -DCONFIG_DEBUG_SYSLOG
1275endif
1276
1277ifdef CONFIG_DEBUG_LINUX_TRACING
1278CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
1279endif
1280
1281ifdef CONFIG_DEBUG_FILE
1282CFLAGS += -DCONFIG_DEBUG_FILE
1283endif
1284
1285ifdef CONFIG_SQLITE
1286CFLAGS += -DCONFIG_SQLITE
1287LIBS += -lsqlite3
1288LIBS_h += -lsqlite3
1289endif
1290
1291ifdef CONFIG_FST
1292CFLAGS += -DCONFIG_FST
1293OBJS += ../src/fst/fst.o
1294OBJS += ../src/fst/fst_group.o
1295OBJS += ../src/fst/fst_iface.o
1296OBJS += ../src/fst/fst_session.o
1297OBJS += ../src/fst/fst_ctrl_aux.o
1298ifdef CONFIG_FST_TEST
1299CFLAGS += -DCONFIG_FST_TEST
1300endif
1301ifndef CONFIG_NO_CTRL_IFACE
1302OBJS += ../src/fst/fst_ctrl_iface.o
1303endif
1304endif
1305
1306ifdef CONFIG_WEP
1307CFLAGS += -DCONFIG_WEP
1308endif
1309
1310ifdef CONFIG_NO_TKIP
1311CFLAGS += -DCONFIG_NO_TKIP
1312endif
1313
1314$(DESTDIR)$(BINDIR)/%: %
1315	install -D $(<) $(@)
1316
1317install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL))
1318
1319_OBJS_VAR := OBJS
1320include ../src/objs.mk
1321
1322hostapd: $(OBJS)
1323	$(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
1324	@$(E) "  LD " $@
1325
1326ifdef CONFIG_WPA_TRACE
1327OBJS_c += ../src/utils/trace.o
1328endif
1329
1330_OBJS_VAR := OBJS_c
1331include ../src/objs.mk
1332
1333hostapd_cli: $(OBJS_c)
1334	$(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
1335	@$(E) "  LD " $@
1336
1337NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
1338NOBJS += ../src/utils/common.o
1339ifdef NEED_RC4
1340ifdef CONFIG_INTERNAL_RC4
1341ifndef CONFIG_NO_RC4
1342NOBJS += ../src/crypto/rc4.o
1343endif
1344endif
1345endif
1346ifdef CONFIG_INTERNAL_MD5
1347NOBJS += ../src/crypto/md5-internal.o
1348endif
1349NOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1350NOBJS += ../src/utils/os_$(CONFIG_OS).o
1351NOBJS += ../src/utils/wpa_debug.o
1352NOBJS += ../src/utils/wpabuf.o
1353ifdef CONFIG_WPA_TRACE
1354NOBJS += ../src/utils/trace.o
1355endif
1356
1357HOBJS += 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
1358HOBJS += ../src/crypto/aes-encblock.o
1359ifdef CONFIG_INTERNAL_AES
1360HOBJS += ../src/crypto/aes-internal.o
1361HOBJS += ../src/crypto/aes-internal-enc.o
1362endif
1363ifeq ($(CONFIG_TLS), linux)
1364HOBJS += ../src/crypto/crypto_linux.o
1365endif
1366
1367SOBJS += sae_pk_gen.o
1368SOBJS +=  ../src/utils/common.o
1369SOBJS += ../src/utils/os_$(CONFIG_OS).o
1370SOBJS += ../src/utils/base64.o
1371SOBJS += ../src/utils/wpa_debug.o
1372SOBJS += ../src/utils/wpabuf.o
1373ifdef CONFIG_WPA_TRACE
1374SOBJS += ../src/utils/trace.o
1375endif
1376SOBJS += ../src/common/ieee802_11_common.o
1377SOBJS += ../src/common/sae.o
1378SOBJS += ../src/common/sae_pk.o
1379SOBJS += ../src/common/dragonfly.o
1380SOBJS += $(AESOBJS)
1381SOBJS += ../src/crypto/sha384.o
1382SOBJS += ../src/crypto/sha512.o
1383SOBJS += ../src/crypto/sha256-prf.o
1384SOBJS += ../src/crypto/sha384-prf.o
1385SOBJS += ../src/crypto/sha512-prf.o
1386SOBJS += ../src/crypto/dh_groups.o
1387SOBJS += ../src/crypto/sha256-kdf.o
1388SOBJS += ../src/crypto/sha384-kdf.o
1389SOBJS += ../src/crypto/sha512-kdf.o
1390SOBJS += ../src/common/wpa_common.o
1391SOBJS += ../src/crypto/random.o
1392SOBJS += ../src/crypto/sha1-prf.o
1393SOBJS += ../src/utils/eloop.o
1394
1395_OBJS_VAR := NOBJS
1396include ../src/objs.mk
1397_OBJS_VAR := HOBJS
1398include ../src/objs.mk
1399_OBJS_VAR := SOBJS
1400include ../src/objs.mk
1401
1402nt_password_hash: $(NOBJS)
1403	$(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
1404	@$(E) "  LD " $@
1405
1406hlr_auc_gw: $(HOBJS)
1407	$(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
1408	@$(E) "  LD " $@
1409
1410sae_pk_gen: $(SOBJS)
1411	$(Q)$(CC) $(LDFLAGS) -o sae_pk_gen $(SOBJS) $(LIBS_s)
1412	@$(E) "  LD " $@
1413
1414.PHONY: lcov-html
1415lcov-html:
1416	lcov -c -d $(BUILDDIR) > lcov.info
1417	genhtml lcov.info --output-directory lcov-html
1418
1419clean: common-clean
1420	rm -f core *~ nt_password_hash hlr_auc_gw
1421	rm -f sae_pk_gen
1422	rm -f lcov.info
1423	rm -rf lcov-html
1424