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