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