• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_WAPI_INTERFACE
323L_CFLAGS += -DCONFIG_WAPI_INTERFACE
324endif
325
326ifdef CONFIG_AIRTIME_POLICY
327CFLAGS += -DCONFIG_AIRTIME_POLICY
328OBJS += ../src/ap/airtime_policy.o
329endif
330
331ifdef CONFIG_FILS
332CFLAGS += -DCONFIG_FILS
333OBJS += ../src/ap/fils_hlp.o
334NEED_SHA384=y
335NEED_AES_SIV=y
336ifdef CONFIG_FILS_SK_PFS
337CFLAGS += -DCONFIG_FILS_SK_PFS
338NEED_ECC=y
339endif
340endif
341
342ifdef CONFIG_WNM
343CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP
344OBJS += ../src/ap/wnm_ap.o
345endif
346
347ifdef CONFIG_IEEE80211AC
348CFLAGS += -DCONFIG_IEEE80211AC
349endif
350
351ifdef CONFIG_IEEE80211BE
352CONFIG_IEEE80211AX=y
353CFLAGS += -DCONFIG_IEEE80211BE
354OBJS += ../src/ap/ieee802_11_eht.o
355endif
356
357ifdef CONFIG_IEEE80211AX
358CFLAGS += -DCONFIG_IEEE80211AX
359OBJS += ../src/ap/ieee802_11_he.o
360endif
361
362ifdef CONFIG_MBO
363CFLAGS += -DCONFIG_MBO
364OBJS += ../src/ap/mbo_ap.o
365endif
366
367include ../src/drivers/drivers.mak
368OBJS += $(DRV_AP_OBJS)
369CFLAGS += $(DRV_AP_CFLAGS)
370LDFLAGS += $(DRV_AP_LDFLAGS)
371LIBS += $(DRV_AP_LIBS)
372
373ifdef CONFIG_L2_PACKET
374ifdef CONFIG_DNET_PCAP
375ifdef CONFIG_L2_FREEBSD
376LIBS += -lpcap
377OBJS += ../src/l2_packet/l2_packet_freebsd.o
378else
379LIBS += -ldnet -lpcap
380OBJS += ../src/l2_packet/l2_packet_pcap.o
381endif
382else
383OBJS += ../src/l2_packet/l2_packet_linux.o
384endif
385else
386OBJS += ../src/l2_packet/l2_packet_none.o
387endif
388
389
390ifdef CONFIG_ERP
391CFLAGS += -DCONFIG_ERP
392NEED_HMAC_SHA256_KDF=y
393endif
394
395ifdef CONFIG_EAP_MD5
396CFLAGS += -DEAP_SERVER_MD5
397OBJS += ../src/eap_server/eap_server_md5.o
398CHAP=y
399endif
400
401ifdef CONFIG_EAP_TLS
402CFLAGS += -DEAP_SERVER_TLS
403OBJS += ../src/eap_server/eap_server_tls.o
404TLS_FUNCS=y
405endif
406
407ifdef CONFIG_EAP_UNAUTH_TLS
408CFLAGS += -DEAP_SERVER_UNAUTH_TLS
409ifndef CONFIG_EAP_TLS
410OBJS += ../src/eap_server/eap_server_tls.o
411TLS_FUNCS=y
412endif
413endif
414
415ifdef CONFIG_EAP_PEAP
416CFLAGS += -DEAP_SERVER_PEAP
417OBJS += ../src/eap_server/eap_server_peap.o
418OBJS += ../src/eap_common/eap_peap_common.o
419TLS_FUNCS=y
420CONFIG_EAP_MSCHAPV2=y
421endif
422
423ifdef CONFIG_EAP_TTLS
424CFLAGS += -DEAP_SERVER_TTLS
425OBJS += ../src/eap_server/eap_server_ttls.o
426TLS_FUNCS=y
427CHAP=y
428endif
429
430ifdef CONFIG_EAP_MSCHAPV2
431CFLAGS += -DEAP_SERVER_MSCHAPV2
432OBJS += ../src/eap_server/eap_server_mschapv2.o
433MS_FUNCS=y
434endif
435
436ifdef CONFIG_EAP_GTC
437CFLAGS += -DEAP_SERVER_GTC
438OBJS += ../src/eap_server/eap_server_gtc.o
439endif
440
441ifdef CONFIG_EAP_SIM
442CFLAGS += -DEAP_SERVER_SIM
443OBJS += ../src/eap_server/eap_server_sim.o
444CONFIG_EAP_SIM_COMMON=y
445NEED_AES_CBC=y
446endif
447
448ifdef CONFIG_EAP_AKA
449CFLAGS += -DEAP_SERVER_AKA
450OBJS += ../src/eap_server/eap_server_aka.o
451CONFIG_EAP_SIM_COMMON=y
452NEED_AES_CBC=y
453endif
454
455ifdef CONFIG_EAP_AKA_PRIME
456CFLAGS += -DEAP_SERVER_AKA_PRIME
457endif
458
459ifdef CONFIG_EAP_SIM_COMMON
460OBJS += ../src/eap_common/eap_sim_common.o
461# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
462# replaced with another file implementing the interface specified in
463# eap_sim_db.h.
464OBJS += ../src/eap_server/eap_sim_db.o
465NEED_FIPS186_2_PRF=y
466endif
467
468ifdef CONFIG_EAP_PAX
469CFLAGS += -DEAP_SERVER_PAX
470OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
471endif
472
473ifdef CONFIG_EAP_PSK
474CFLAGS += -DEAP_SERVER_PSK
475OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
476NEED_AES_ENCBLOCK=y
477NEED_AES_EAX=y
478endif
479
480ifdef CONFIG_EAP_SAKE
481CFLAGS += -DEAP_SERVER_SAKE
482OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
483endif
484
485ifdef CONFIG_EAP_GPSK
486CFLAGS += -DEAP_SERVER_GPSK
487OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
488ifdef CONFIG_EAP_GPSK_SHA256
489CFLAGS += -DEAP_GPSK_SHA256
490endif
491endif
492
493ifdef CONFIG_EAP_PWD
494CFLAGS += -DEAP_SERVER_PWD
495OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
496NEED_ECC=y
497NEED_DRAGONFLY=y
498endif
499
500ifdef CONFIG_EAP_EKE
501CFLAGS += -DEAP_SERVER_EKE
502OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o
503NEED_DH_GROUPS=y
504NEED_DH_GROUPS_ALL=y
505endif
506
507ifdef CONFIG_EAP_VENDOR_TEST
508CFLAGS += -DEAP_SERVER_VENDOR_TEST
509OBJS += ../src/eap_server/eap_server_vendor_test.o
510endif
511
512ifdef CONFIG_EAP_FAST
513CFLAGS += -DEAP_SERVER_FAST
514OBJS += ../src/eap_server/eap_server_fast.o
515OBJS += ../src/eap_common/eap_fast_common.o
516TLS_FUNCS=y
517NEED_T_PRF=y
518NEED_AES_UNWRAP=y
519endif
520
521ifdef CONFIG_EAP_TEAP
522CFLAGS += -DEAP_SERVER_TEAP
523OBJS += ../src/eap_server/eap_server_teap.o
524OBJS += ../src/eap_common/eap_teap_common.o
525TLS_FUNCS=y
526NEED_T_PRF=y
527NEED_SHA384=y
528NEED_TLS_PRF_SHA256=y
529NEED_TLS_PRF_SHA384=y
530NEED_AES_UNWRAP=y
531endif
532
533ifdef CONFIG_WPS
534CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
535OBJS += ../src/utils/uuid.o
536OBJS += ../src/ap/wps_hostapd.o
537OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
538OBJS += ../src/wps/wps.o
539OBJS += ../src/wps/wps_common.o
540OBJS += ../src/wps/wps_attr_parse.o
541OBJS += ../src/wps/wps_attr_build.o
542OBJS += ../src/wps/wps_attr_process.o
543OBJS += ../src/wps/wps_dev_attr.o
544OBJS += ../src/wps/wps_enrollee.o
545OBJS += ../src/wps/wps_registrar.o
546NEED_DH_GROUPS=y
547NEED_BASE64=y
548NEED_AES_CBC=y
549NEED_MODEXP=y
550CONFIG_EAP=y
551
552ifdef CONFIG_WPS_NFC
553CFLAGS += -DCONFIG_WPS_NFC
554OBJS += ../src/wps/ndef.o
555NEED_WPS_OOB=y
556endif
557
558ifdef NEED_WPS_OOB
559CFLAGS += -DCONFIG_WPS_OOB
560endif
561
562ifdef CONFIG_WPS_UPNP
563CFLAGS += -DCONFIG_WPS_UPNP
564OBJS += ../src/wps/wps_upnp.o
565OBJS += ../src/wps/wps_upnp_ssdp.o
566OBJS += ../src/wps/wps_upnp_web.o
567OBJS += ../src/wps/wps_upnp_event.o
568OBJS += ../src/wps/wps_upnp_ap.o
569OBJS += ../src/wps/upnp_xml.o
570OBJS += ../src/wps/httpread.o
571OBJS += ../src/wps/http_client.o
572OBJS += ../src/wps/http_server.o
573endif
574
575ifdef CONFIG_WPS_STRICT
576CFLAGS += -DCONFIG_WPS_STRICT
577OBJS += ../src/wps/wps_validate.o
578endif
579
580ifdef CONFIG_WPS_TESTING
581CFLAGS += -DCONFIG_WPS_TESTING
582endif
583
584endif
585
586ifdef CONFIG_DPP
587CFLAGS += -DCONFIG_DPP
588OBJS += ../src/common/dpp.o
589OBJS += ../src/common/dpp_auth.o
590OBJS += ../src/common/dpp_backup.o
591OBJS += ../src/common/dpp_crypto.o
592OBJS += ../src/common/dpp_pkex.o
593OBJS += ../src/common/dpp_reconfig.o
594OBJS += ../src/common/dpp_tcp.o
595OBJS += ../src/ap/dpp_hostapd.o
596OBJS += ../src/ap/gas_query_ap.o
597NEED_AES_SIV=y
598NEED_HMAC_SHA256_KDF=y
599NEED_HMAC_SHA384_KDF=y
600NEED_HMAC_SHA512_KDF=y
601NEED_SHA384=y
602NEED_SHA512=y
603NEED_ECC=y
604NEED_JSON=y
605NEED_GAS=y
606NEED_BASE64=y
607NEED_ASN1=y
608ifdef CONFIG_DPP2
609CFLAGS += -DCONFIG_DPP2
610endif
611ifdef CONFIG_DPP3
612CFLAGS += -DCONFIG_DPP3
613endif
614endif
615
616ifdef CONFIG_NAN_USD
617OBJS += ../src/common/nan_de.o
618OBJS += ../src/ap/nan_usd_ap.o
619CFLAGS += -DCONFIG_NAN_USD
620endif
621
622ifdef CONFIG_PASN
623CFLAGS += -DCONFIG_PASN
624CFLAGS += -DCONFIG_PTKSA_CACHE
625NEED_HMAC_SHA256_KDF=y
626NEED_HMAC_SHA384_KDF=y
627NEED_SHA256=y
628NEED_SHA384=y
629endif
630
631ifdef CONFIG_EAP_IKEV2
632CFLAGS += -DEAP_SERVER_IKEV2
633OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
634OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
635NEED_DH_GROUPS=y
636NEED_DH_GROUPS_ALL=y
637NEED_MODEXP=y
638NEED_CIPHER=y
639endif
640
641ifdef CONFIG_EAP_TNC
642CFLAGS += -DEAP_SERVER_TNC
643OBJS += ../src/eap_server/eap_server_tnc.o
644OBJS += ../src/eap_server/tncs.o
645NEED_BASE64=y
646ifndef CONFIG_DRIVER_BSD
647LIBS += -ldl
648endif
649endif
650
651ifdef CONFIG_MACSEC
652CFLAGS += -DCONFIG_MACSEC
653OBJS += ../src/ap/wpa_auth_kay.o
654OBJS += ../src/pae/ieee802_1x_cp.o
655OBJS += ../src/pae/ieee802_1x_kay.o
656OBJS += ../src/pae/ieee802_1x_key.o
657OBJS += ../src/pae/ieee802_1x_secy_ops.o
658endif
659
660# Basic EAP functionality is needed for EAPOL
661OBJS += eap_register.o
662OBJS += ../src/eap_server/eap_server.o
663OBJS += ../src/eap_common/eap_common.o
664OBJS += ../src/eap_server/eap_server_methods.o
665OBJS += ../src/eap_server/eap_server_identity.o
666CFLAGS += -DEAP_SERVER_IDENTITY
667
668ifdef CONFIG_EAP
669CFLAGS += -DEAP_SERVER
670endif
671
672ifdef CONFIG_PKCS12
673CFLAGS += -DPKCS12_FUNCS
674endif
675
676ifdef NEED_DRAGONFLY
677OBJS += ../src/common/dragonfly.o
678endif
679
680ifdef MS_FUNCS
681OBJS += ../src/crypto/ms_funcs.o
682NEED_DES=y
683NEED_MD4=y
684endif
685
686ifdef CHAP
687OBJS += ../src/eap_common/chap.o
688endif
689
690ifdef CONFIG_RADIUS_TLS
691TLS_FUNCS=y
692CFLAGS += -DCONFIG_RADIUS_TLS
693endif
694
695ifdef TLS_FUNCS
696NEED_DES=y
697# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
698CFLAGS += -DEAP_TLS_FUNCS
699OBJS += ../src/eap_server/eap_server_tls_common.o
700NEED_TLS_PRF=y
701endif
702
703ifndef CONFIG_TLS
704CONFIG_TLS=openssl
705endif
706
707ifdef CONFIG_TLSV11
708CFLAGS += -DCONFIG_TLSV11
709endif
710
711ifdef CONFIG_TLSV12
712CFLAGS += -DCONFIG_TLSV12
713endif
714
715ifeq ($(CONFIG_TLS), wolfssl)
716CFLAGS += -DCRYPTO_RSA_OAEP_SHA256
717CONFIG_CRYPTO=wolfssl
718ifdef TLS_FUNCS
719OBJS += ../src/crypto/tls_wolfssl.o
720LIBS += -lwolfssl -lm
721endif
722OBJS += ../src/crypto/crypto_wolfssl.o
723HOBJS += ../src/crypto/crypto_wolfssl.o
724ifdef NEED_FIPS186_2_PRF
725OBJS += ../src/crypto/fips_prf_wolfssl.o
726endif
727NEED_TLS_PRF_SHA256=y
728LIBS += -lwolfssl -lm
729LIBS_h += -lwolfssl -lm
730ifdef CONFIG_TLS_ADD_DL
731LIBS += -ldl
732LIBS_h += -ldl
733endif
734endif
735
736ifeq ($(CONFIG_TLS), openssl)
737CFLAGS += -DCRYPTO_RSA_OAEP_SHA256
738CONFIG_CRYPTO=openssl
739ifdef TLS_FUNCS
740OBJS += ../src/crypto/tls_openssl.o
741OBJS += ../src/crypto/tls_openssl_ocsp.o
742LIBS += -lssl
743endif
744OBJS += ../src/crypto/crypto_openssl.o
745HOBJS += ../src/crypto/crypto_openssl.o
746SOBJS += ../src/crypto/crypto_openssl.o
747ifdef NEED_FIPS186_2_PRF
748OBJS += ../src/crypto/fips_prf_openssl.o
749endif
750NEED_TLS_PRF_SHA256=y
751LIBS += -lcrypto
752LIBS_h += -lcrypto
753LIBS_n += -lcrypto
754LIBS_s += -lcrypto
755ifdef CONFIG_TLS_ADD_DL
756LIBS += -ldl
757LIBS_h += -ldl
758LIBS_s += -ldl
759endif
760ifndef CONFIG_TLS_DEFAULT_CIPHERS
761CONFIG_TLS_DEFAULT_CIPHERS = "DEFAULT:!EXP:!LOW"
762endif
763CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\"
764endif
765
766ifeq ($(CONFIG_TLS), gnutls)
767ifndef CONFIG_CRYPTO
768# default to libgcrypt
769CONFIG_CRYPTO=gnutls
770endif
771ifdef TLS_FUNCS
772OBJS += ../src/crypto/tls_gnutls.o
773LIBS += -lgnutls -lgpg-error
774endif
775OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
776HOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
777ifdef NEED_FIPS186_2_PRF
778OBJS += ../src/crypto/fips_prf_internal.o
779SHA1OBJS += ../src/crypto/sha1-internal.o
780endif
781ifeq ($(CONFIG_CRYPTO), gnutls)
782LIBS += -lgcrypt
783LIBS_h += -lgcrypt
784LIBS_n += -lgcrypt
785CONFIG_INTERNAL_RC4=y
786CONFIG_INTERNAL_DH_GROUP5=y
787endif
788ifeq ($(CONFIG_CRYPTO), nettle)
789LIBS += -lnettle -lgmp
790LIBS_p += -lnettle -lgmp
791CONFIG_INTERNAL_RC4=y
792CONFIG_INTERNAL_DH_GROUP5=y
793endif
794endif
795
796ifeq ($(CONFIG_TLS), internal)
797ifndef CONFIG_CRYPTO
798CONFIG_CRYPTO=internal
799endif
800ifdef TLS_FUNCS
801OBJS += ../src/crypto/crypto_internal-rsa.o
802OBJS += ../src/crypto/tls_internal.o
803OBJS += ../src/tls/tlsv1_common.o
804OBJS += ../src/tls/tlsv1_record.o
805OBJS += ../src/tls/tlsv1_cred.o
806OBJS += ../src/tls/tlsv1_server.o
807OBJS += ../src/tls/tlsv1_server_write.o
808OBJS += ../src/tls/tlsv1_server_read.o
809OBJS += ../src/tls/rsa.o
810OBJS += ../src/tls/x509v3.o
811OBJS += ../src/tls/pkcs1.o
812OBJS += ../src/tls/pkcs5.o
813OBJS += ../src/tls/pkcs8.o
814NEED_ASN1=y
815NEED_BASE64=y
816NEED_TLS_PRF=y
817ifdef CONFIG_TLSV12
818NEED_TLS_PRF_SHA256=y
819endif
820NEED_MODEXP=y
821NEED_CIPHER=y
822CFLAGS += -DCONFIG_TLS_INTERNAL
823CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
824endif
825ifdef NEED_CIPHER
826NEED_DES=y
827OBJS += ../src/crypto/crypto_internal-cipher.o
828endif
829ifdef NEED_MODEXP
830OBJS += ../src/crypto/crypto_internal-modexp.o
831OBJS += ../src/tls/bignum.o
832endif
833ifeq ($(CONFIG_CRYPTO), libtomcrypt)
834OBJS += ../src/crypto/crypto_libtomcrypt.o
835LIBS += -ltomcrypt -ltfm
836LIBS_h += -ltomcrypt -ltfm
837CONFIG_INTERNAL_SHA256=y
838CONFIG_INTERNAL_RC4=y
839CONFIG_INTERNAL_DH_GROUP5=y
840endif
841ifeq ($(CONFIG_CRYPTO), internal)
842OBJS += ../src/crypto/crypto_internal.o
843NEED_AES_DEC=y
844CFLAGS += -DCONFIG_CRYPTO_INTERNAL
845ifdef CONFIG_INTERNAL_LIBTOMMATH
846CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
847ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
848CFLAGS += -DLTM_FAST
849endif
850else
851LIBS += -ltommath
852LIBS_h += -ltommath
853endif
854CONFIG_INTERNAL_AES=y
855CONFIG_INTERNAL_DES=y
856CONFIG_INTERNAL_SHA1=y
857CONFIG_INTERNAL_MD4=y
858CONFIG_INTERNAL_MD5=y
859CONFIG_INTERNAL_SHA256=y
860CONFIG_INTERNAL_SHA384=y
861CONFIG_INTERNAL_SHA512=y
862CONFIG_INTERNAL_RC4=y
863CONFIG_INTERNAL_DH_GROUP5=y
864endif
865ifeq ($(CONFIG_CRYPTO), cryptoapi)
866OBJS += ../src/crypto/crypto_cryptoapi.o
867OBJS_p += ../src/crypto/crypto_cryptoapi.o
868CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
869CONFIG_INTERNAL_SHA256=y
870CONFIG_INTERNAL_RC4=y
871endif
872endif
873
874ifeq ($(CONFIG_TLS), linux)
875OBJS += ../src/crypto/crypto_linux.o
876ifdef TLS_FUNCS
877OBJS += ../src/crypto/crypto_internal-rsa.o
878OBJS += ../src/crypto/tls_internal.o
879OBJS += ../src/tls/tlsv1_common.o
880OBJS += ../src/tls/tlsv1_record.o
881OBJS += ../src/tls/tlsv1_cred.o
882OBJS += ../src/tls/tlsv1_server.o
883OBJS += ../src/tls/tlsv1_server_write.o
884OBJS += ../src/tls/tlsv1_server_read.o
885OBJS += ../src/tls/rsa.o
886OBJS += ../src/tls/x509v3.o
887OBJS += ../src/tls/pkcs1.o
888OBJS += ../src/tls/pkcs5.o
889OBJS += ../src/tls/pkcs8.o
890NEED_ASN1=y
891NEED_BASE64=y
892NEED_TLS_PRF=y
893ifdef CONFIG_TLSV12
894NEED_TLS_PRF_SHA256=y
895endif
896NEED_MODEXP=y
897NEED_CIPHER=y
898CFLAGS += -DCONFIG_TLS_INTERNAL
899CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
900endif
901ifdef NEED_MODEXP
902OBJS += ../src/crypto/crypto_internal-modexp.o
903OBJS += ../src/tls/bignum.o
904CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
905CFLAGS += -DLTM_FAST
906endif
907CONFIG_INTERNAL_DH_GROUP5=y
908ifdef NEED_FIPS186_2_PRF
909OBJS += ../src/crypto/fips_prf_internal.o
910OBJS += ../src/crypto/sha1-internal.o
911endif
912endif
913
914ifeq ($(CONFIG_TLS), none)
915ifdef TLS_FUNCS
916OBJS += ../src/crypto/tls_none.o
917CFLAGS += -DEAP_TLS_NONE
918CONFIG_INTERNAL_AES=y
919CONFIG_INTERNAL_SHA1=y
920CONFIG_INTERNAL_MD5=y
921endif
922OBJS += ../src/crypto/crypto_none.o
923OBJS_p += ../src/crypto/crypto_none.o
924CONFIG_INTERNAL_SHA256=y
925CONFIG_INTERNAL_RC4=y
926endif
927
928ifndef TLS_FUNCS
929OBJS += ../src/crypto/tls_none.o
930ifeq ($(CONFIG_TLS), internal)
931CONFIG_INTERNAL_AES=y
932CONFIG_INTERNAL_SHA1=y
933CONFIG_INTERNAL_MD5=y
934CONFIG_INTERNAL_RC4=y
935endif
936endif
937
938AESOBJS = # none so far
939ifdef CONFIG_INTERNAL_AES
940AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
941endif
942
943ifneq ($(CONFIG_TLS), openssl)
944ifneq ($(CONFIG_TLS), wolfssl)
945AESOBJS += ../src/crypto/aes-wrap.o
946endif
947endif
948ifdef NEED_AES_EAX
949AESOBJS += ../src/crypto/aes-eax.o
950NEED_AES_CTR=y
951endif
952ifdef NEED_AES_SIV
953AESOBJS += ../src/crypto/aes-siv.o
954NEED_AES_CTR=y
955endif
956ifdef NEED_AES_CTR
957AESOBJS += ../src/crypto/aes-ctr.o
958endif
959ifdef NEED_AES_ENCBLOCK
960AESOBJS += ../src/crypto/aes-encblock.o
961endif
962ifneq ($(CONFIG_TLS), openssl)
963ifneq ($(CONFIG_TLS), linux)
964ifneq ($(CONFIG_TLS), wolfssl)
965AESOBJS += ../src/crypto/aes-omac1.o
966endif
967endif
968endif
969ifdef NEED_AES_UNWRAP
970ifneq ($(CONFIG_TLS), openssl)
971ifneq ($(CONFIG_TLS), linux)
972ifneq ($(CONFIG_TLS), wolfssl)
973NEED_AES_DEC=y
974AESOBJS += ../src/crypto/aes-unwrap.o
975endif
976endif
977endif
978endif
979ifdef NEED_AES_CBC
980NEED_AES_DEC=y
981ifneq ($(CONFIG_TLS), openssl)
982ifneq ($(CONFIG_TLS), linux)
983ifneq ($(CONFIG_TLS), wolfssl)
984AESOBJS += ../src/crypto/aes-cbc.o
985endif
986endif
987endif
988endif
989ifdef NEED_AES_DEC
990ifdef CONFIG_INTERNAL_AES
991AESOBJS += ../src/crypto/aes-internal-dec.o
992endif
993endif
994ifdef NEED_AES
995OBJS += $(AESOBJS)
996endif
997
998ifdef NEED_SHA1
999ifneq ($(CONFIG_TLS), openssl)
1000ifneq ($(CONFIG_TLS), linux)
1001ifneq ($(CONFIG_TLS), gnutls)
1002ifneq ($(CONFIG_TLS), wolfssl)
1003SHA1OBJS += ../src/crypto/sha1.o
1004endif
1005endif
1006endif
1007endif
1008SHA1OBJS += ../src/crypto/sha1-prf.o
1009ifdef CONFIG_INTERNAL_SHA1
1010SHA1OBJS += ../src/crypto/sha1-internal.o
1011ifdef NEED_FIPS186_2_PRF
1012SHA1OBJS += ../src/crypto/fips_prf_internal.o
1013endif
1014endif
1015ifneq ($(CONFIG_TLS), openssl)
1016ifneq ($(CONFIG_TLS), wolfssl)
1017SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
1018endif
1019endif
1020ifdef NEED_T_PRF
1021SHA1OBJS += ../src/crypto/sha1-tprf.o
1022endif
1023ifdef NEED_TLS_PRF
1024SHA1OBJS += ../src/crypto/sha1-tlsprf.o
1025endif
1026endif
1027
1028ifdef NEED_SHA1
1029OBJS += $(SHA1OBJS)
1030endif
1031
1032ifneq ($(CONFIG_TLS), openssl)
1033ifneq ($(CONFIG_TLS), linux)
1034ifneq ($(CONFIG_TLS), gnutls)
1035ifneq ($(CONFIG_TLS), wolfssl)
1036OBJS += ../src/crypto/md5.o
1037endif
1038endif
1039endif
1040endif
1041
1042ifdef NEED_MD5
1043ifdef CONFIG_INTERNAL_MD5
1044OBJS += ../src/crypto/md5-internal.o
1045HOBJS += ../src/crypto/md5-internal.o
1046endif
1047endif
1048
1049ifdef NEED_MD4
1050ifdef CONFIG_INTERNAL_MD4
1051OBJS += ../src/crypto/md4-internal.o
1052endif
1053endif
1054
1055ifdef NEED_DES
1056CFLAGS += -DCONFIG_DES
1057ifdef CONFIG_INTERNAL_DES
1058OBJS += ../src/crypto/des-internal.o
1059endif
1060endif
1061
1062ifdef CONFIG_NO_RC4
1063CFLAGS += -DCONFIG_NO_RC4
1064endif
1065
1066ifdef NEED_RC4
1067ifdef CONFIG_INTERNAL_RC4
1068ifndef CONFIG_NO_RC4
1069OBJS += ../src/crypto/rc4.o
1070endif
1071endif
1072endif
1073
1074ifdef CONFIG_SAE
1075ifdef NEED_SHA384
1076# Need to add HMAC-SHA384 KDF as well, if SHA384 was enabled.
1077NEED_HMAC_SHA384_KDF=y
1078endif
1079ifdef NEED_SHA512
1080# Need to add HMAC-SHA512 KDF as well, if SHA512 was enabled.
1081NEED_HMAC_SHA512_KDF=y
1082endif
1083endif
1084
1085CFLAGS += -DCONFIG_SHA256
1086ifneq ($(CONFIG_TLS), openssl)
1087ifneq ($(CONFIG_TLS), linux)
1088ifneq ($(CONFIG_TLS), gnutls)
1089ifneq ($(CONFIG_TLS), wolfssl)
1090OBJS += ../src/crypto/sha256.o
1091endif
1092endif
1093endif
1094endif
1095OBJS += ../src/crypto/sha256-prf.o
1096ifdef CONFIG_INTERNAL_SHA256
1097OBJS += ../src/crypto/sha256-internal.o
1098endif
1099ifdef NEED_TLS_PRF_SHA256
1100OBJS += ../src/crypto/sha256-tlsprf.o
1101endif
1102ifdef NEED_TLS_PRF_SHA384
1103OBJS += ../src/crypto/sha384-tlsprf.o
1104endif
1105ifdef NEED_HMAC_SHA256_KDF
1106OBJS += ../src/crypto/sha256-kdf.o
1107endif
1108ifdef NEED_HMAC_SHA384_KDF
1109OBJS += ../src/crypto/sha384-kdf.o
1110endif
1111ifdef NEED_HMAC_SHA512_KDF
1112OBJS += ../src/crypto/sha512-kdf.o
1113endif
1114ifdef NEED_SHA384
1115CFLAGS += -DCONFIG_SHA384
1116ifneq ($(CONFIG_TLS), openssl)
1117ifneq ($(CONFIG_TLS), linux)
1118ifneq ($(CONFIG_TLS), gnutls)
1119ifneq ($(CONFIG_TLS), wolfssl)
1120OBJS += ../src/crypto/sha384.o
1121endif
1122endif
1123endif
1124endif
1125OBJS += ../src/crypto/sha384-prf.o
1126endif
1127ifdef NEED_SHA512
1128CFLAGS += -DCONFIG_SHA512
1129ifneq ($(CONFIG_TLS), openssl)
1130ifneq ($(CONFIG_TLS), linux)
1131ifneq ($(CONFIG_TLS), gnutls)
1132ifneq ($(CONFIG_TLS), wolfssl)
1133OBJS += ../src/crypto/sha512.o
1134endif
1135endif
1136endif
1137endif
1138OBJS += ../src/crypto/sha512-prf.o
1139endif
1140
1141ifdef CONFIG_INTERNAL_SHA384
1142CFLAGS += -DCONFIG_INTERNAL_SHA384
1143OBJS += ../src/crypto/sha384-internal.o
1144endif
1145
1146ifdef CONFIG_INTERNAL_SHA512
1147CFLAGS += -DCONFIG_INTERNAL_SHA512
1148OBJS += ../src/crypto/sha512-internal.o
1149endif
1150
1151ifdef NEED_ASN1
1152OBJS += ../src/tls/asn1.o
1153endif
1154
1155ifdef NEED_DH_GROUPS
1156OBJS += ../src/crypto/dh_groups.o
1157endif
1158ifdef NEED_DH_GROUPS_ALL
1159CFLAGS += -DALL_DH_GROUPS
1160endif
1161ifdef CONFIG_INTERNAL_DH_GROUP5
1162ifdef NEED_DH_GROUPS
1163OBJS += ../src/crypto/dh_group5.o
1164endif
1165endif
1166
1167ifdef NEED_ECC
1168CFLAGS += -DCONFIG_ECC
1169endif
1170
1171ifdef CONFIG_NO_RANDOM_POOL
1172CFLAGS += -DCONFIG_NO_RANDOM_POOL
1173else
1174ifdef CONFIG_GETRANDOM
1175CFLAGS += -DCONFIG_GETRANDOM
1176endif
1177OBJS += ../src/crypto/random.o
1178HOBJS += ../src/crypto/random.o
1179HOBJS += ../src/utils/eloop.o
1180HOBJS += $(SHA1OBJS)
1181ifneq ($(CONFIG_TLS), openssl)
1182ifneq ($(CONFIG_TLS), linux)
1183ifneq ($(CONFIG_TLS), wolfssl)
1184HOBJS += ../src/crypto/md5.o
1185endif
1186endif
1187endif
1188endif
1189
1190ifdef CONFIG_RADIUS_SERVER
1191CFLAGS += -DRADIUS_SERVER
1192OBJS += ../src/radius/radius_server.o
1193endif
1194
1195ifdef CONFIG_IPV6
1196CFLAGS += -DCONFIG_IPV6
1197endif
1198
1199ifdef CONFIG_DRIVER_RADIUS_ACL
1200CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
1201endif
1202
1203ifdef NEED_BASE64
1204OBJS += ../src/utils/base64.o
1205endif
1206
1207ifdef NEED_JSON
1208OBJS += ../src/utils/json.o
1209CFLAGS += -DCONFIG_JSON
1210endif
1211
1212ifdef NEED_AP_MLME
1213OBJS += ../src/ap/wmm.o
1214OBJS += ../src/ap/ap_list.o
1215OBJS += ../src/ap/comeback_token.o
1216OBJS += ../src/pasn/pasn_responder.o
1217OBJS += ../src/pasn/pasn_common.o
1218OBJS += ../src/ap/ieee802_11.o
1219OBJS += ../src/ap/hw_features.o
1220OBJS += ../src/ap/dfs.o
1221CFLAGS += -DNEED_AP_MLME
1222endif
1223OBJS += ../src/ap/ieee802_11_ht.o
1224
1225ifdef CONFIG_IEEE80211AC
1226OBJS += ../src/ap/ieee802_11_vht.o
1227endif
1228
1229ifdef CONFIG_P2P_MANAGER
1230CFLAGS += -DCONFIG_P2P_MANAGER
1231OBJS += ../src/ap/p2p_hostapd.o
1232endif
1233
1234ifdef CONFIG_HS20
1235CFLAGS += -DCONFIG_HS20
1236OBJS += ../src/ap/hs20.o
1237CONFIG_INTERWORKING=y
1238endif
1239
1240ifdef CONFIG_INTERWORKING
1241CFLAGS += -DCONFIG_INTERWORKING
1242NEED_GAS=y
1243endif
1244
1245ifdef NEED_GAS
1246OBJS += ../src/common/gas.o
1247OBJS += ../src/ap/gas_serv.o
1248endif
1249
1250ifdef CONFIG_PROXYARP
1251CFLAGS += -DCONFIG_PROXYARP
1252OBJS += ../src/ap/x_snoop.o
1253OBJS += ../src/ap/dhcp_snoop.o
1254ifdef CONFIG_IPV6
1255OBJS += ../src/ap/ndisc_snoop.o
1256endif
1257endif
1258
1259OBJS += ../src/drivers/driver_common.o
1260
1261ifdef CONFIG_WPA_CLI_EDIT
1262OBJS_c += ../src/utils/edit.o
1263else
1264OBJS_c += ../src/utils/edit_simple.o
1265endif
1266
1267ifdef CONFIG_ACS
1268CFLAGS += -DCONFIG_ACS
1269OBJS += ../src/ap/acs.o
1270LIBS += -lm
1271endif
1272
1273ifdef CONFIG_NO_STDOUT_DEBUG
1274CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1275endif
1276
1277ifdef CONFIG_DEBUG_SYSLOG
1278CFLAGS += -DCONFIG_DEBUG_SYSLOG
1279endif
1280
1281ifdef CONFIG_DEBUG_LINUX_TRACING
1282CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
1283endif
1284
1285ifdef CONFIG_DEBUG_FILE
1286CFLAGS += -DCONFIG_DEBUG_FILE
1287endif
1288
1289ifdef CONFIG_SQLITE
1290CFLAGS += -DCONFIG_SQLITE
1291LIBS += -lsqlite3
1292LIBS_h += -lsqlite3
1293endif
1294
1295ifdef CONFIG_FST
1296CFLAGS += -DCONFIG_FST
1297OBJS += ../src/fst/fst.o
1298OBJS += ../src/fst/fst_group.o
1299OBJS += ../src/fst/fst_iface.o
1300OBJS += ../src/fst/fst_session.o
1301OBJS += ../src/fst/fst_ctrl_aux.o
1302ifdef CONFIG_FST_TEST
1303CFLAGS += -DCONFIG_FST_TEST
1304endif
1305ifndef CONFIG_NO_CTRL_IFACE
1306OBJS += ../src/fst/fst_ctrl_iface.o
1307endif
1308endif
1309
1310ifdef CONFIG_WEP
1311CFLAGS += -DCONFIG_WEP
1312endif
1313
1314ifdef CONFIG_NO_TKIP
1315CFLAGS += -DCONFIG_NO_TKIP
1316endif
1317
1318$(DESTDIR)$(BINDIR)/%: %
1319	install -D $(<) $(@)
1320
1321install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL))
1322
1323_OBJS_VAR := OBJS
1324include ../src/objs.mk
1325
1326hostapd: $(OBJS)
1327	$(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
1328	@$(E) "  LD " $@
1329
1330ifdef CONFIG_WPA_TRACE
1331OBJS_c += ../src/utils/trace.o
1332endif
1333
1334_OBJS_VAR := OBJS_c
1335include ../src/objs.mk
1336
1337hostapd_cli: $(OBJS_c)
1338	$(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
1339	@$(E) "  LD " $@
1340
1341NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
1342NOBJS += ../src/utils/common.o
1343ifdef NEED_RC4
1344ifdef CONFIG_INTERNAL_RC4
1345ifndef CONFIG_NO_RC4
1346NOBJS += ../src/crypto/rc4.o
1347endif
1348endif
1349endif
1350ifdef CONFIG_INTERNAL_MD5
1351NOBJS += ../src/crypto/md5-internal.o
1352endif
1353NOBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
1354NOBJS += ../src/utils/os_$(CONFIG_OS).o
1355NOBJS += ../src/utils/wpa_debug.o
1356NOBJS += ../src/utils/wpabuf.o
1357ifdef CONFIG_WPA_TRACE
1358NOBJS += ../src/utils/trace.o
1359endif
1360
1361HOBJS += 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
1362HOBJS += ../src/crypto/aes-encblock.o
1363ifdef CONFIG_INTERNAL_AES
1364HOBJS += ../src/crypto/aes-internal.o
1365HOBJS += ../src/crypto/aes-internal-enc.o
1366endif
1367ifeq ($(CONFIG_TLS), linux)
1368HOBJS += ../src/crypto/crypto_linux.o
1369endif
1370
1371SOBJS += sae_pk_gen.o
1372SOBJS +=  ../src/utils/common.o
1373SOBJS += ../src/utils/os_$(CONFIG_OS).o
1374SOBJS += ../src/utils/base64.o
1375SOBJS += ../src/utils/wpa_debug.o
1376SOBJS += ../src/utils/wpabuf.o
1377ifdef CONFIG_WPA_TRACE
1378SOBJS += ../src/utils/trace.o
1379endif
1380SOBJS += ../src/common/ieee802_11_common.o
1381SOBJS += ../src/common/sae.o
1382SOBJS += ../src/common/sae_pk.o
1383SOBJS += ../src/common/dragonfly.o
1384SOBJS += $(AESOBJS)
1385SOBJS += ../src/crypto/sha384.o
1386SOBJS += ../src/crypto/sha512.o
1387SOBJS += ../src/crypto/sha256-prf.o
1388SOBJS += ../src/crypto/sha384-prf.o
1389SOBJS += ../src/crypto/sha512-prf.o
1390SOBJS += ../src/crypto/dh_groups.o
1391SOBJS += ../src/crypto/sha256-kdf.o
1392SOBJS += ../src/crypto/sha384-kdf.o
1393SOBJS += ../src/crypto/sha512-kdf.o
1394SOBJS += ../src/common/wpa_common.o
1395SOBJS += ../src/crypto/random.o
1396SOBJS += ../src/crypto/sha1-prf.o
1397SOBJS += ../src/utils/eloop.o
1398
1399_OBJS_VAR := NOBJS
1400include ../src/objs.mk
1401_OBJS_VAR := HOBJS
1402include ../src/objs.mk
1403_OBJS_VAR := SOBJS
1404include ../src/objs.mk
1405
1406nt_password_hash: $(NOBJS)
1407	$(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
1408	@$(E) "  LD " $@
1409
1410hlr_auc_gw: $(HOBJS)
1411	$(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
1412	@$(E) "  LD " $@
1413
1414sae_pk_gen: $(SOBJS)
1415	$(Q)$(CC) $(LDFLAGS) -o sae_pk_gen $(SOBJS) $(LIBS_s)
1416	@$(E) "  LD " $@
1417
1418.PHONY: lcov-html
1419lcov-html:
1420	lcov -c -d $(BUILDDIR) > lcov.info
1421	genhtml lcov.info --output-directory lcov-html
1422
1423clean: common-clean
1424	rm -f core *~ nt_password_hash hlr_auc_gw
1425	rm -f sae_pk_gen
1426	rm -f lcov.info
1427	rm -rf lcov-html
1428