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