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