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