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