]> git.ipfire.org Git - thirdparty/hostap.git/blob - hostapd/Makefile
WNM: Add advertisement of BSS max idle period
[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 CFLAGS += -I../src
10 CFLAGS += -I../src/utils
11
12 # Uncomment following line and set the path to your kernel tree include
13 # directory if your C library does not include all header files.
14 # CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include
15
16 -include .config
17
18 ifndef CONFIG_OS
19 ifdef CONFIG_NATIVE_WINDOWS
20 CONFIG_OS=win32
21 else
22 CONFIG_OS=unix
23 endif
24 endif
25
26 ifeq ($(CONFIG_OS), internal)
27 CFLAGS += -DOS_NO_C_LIB_DEFINES
28 endif
29
30 ifdef CONFIG_NATIVE_WINDOWS
31 CFLAGS += -DCONFIG_NATIVE_WINDOWS
32 LIBS += -lws2_32
33 endif
34
35 OBJS += main.o
36 OBJS += config_file.o
37
38 OBJS += ../src/ap/hostapd.o
39 OBJS += ../src/ap/wpa_auth_glue.o
40 OBJS += ../src/ap/drv_callbacks.o
41 OBJS += ../src/ap/ap_drv_ops.o
42 OBJS += ../src/ap/utils.o
43 OBJS += ../src/ap/authsrv.o
44 OBJS += ../src/ap/ieee802_1x.o
45 OBJS += ../src/ap/ap_config.o
46 OBJS += ../src/ap/ieee802_11_auth.o
47 OBJS += ../src/ap/sta_info.o
48 OBJS += ../src/ap/wpa_auth.o
49 OBJS += ../src/ap/tkip_countermeasures.o
50 OBJS += ../src/ap/ap_mlme.o
51 OBJS += ../src/ap/wpa_auth_ie.o
52 OBJS += ../src/ap/preauth_auth.o
53 OBJS += ../src/ap/pmksa_cache_auth.o
54 OBJS += ../src/ap/ieee802_11_shared.o
55 OBJS += ../src/ap/beacon.o
56
57 OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o
58
59 NEED_RC4=y
60 NEED_AES=y
61 NEED_MD5=y
62 NEED_SHA1=y
63
64 OBJS += ../src/drivers/drivers.o
65 CFLAGS += -DHOSTAPD
66
67 ifdef CONFIG_WPA_TRACE
68 CFLAGS += -DWPA_TRACE
69 OBJS += ../src/utils/trace.o
70 HOBJS += ../src/utils/trace.o
71 LDFLAGS += -rdynamic
72 CFLAGS += -funwind-tables
73 ifdef CONFIG_WPA_TRACE_BFD
74 CFLAGS += -DWPA_TRACE_BFD
75 LIBS += -lbfd
76 LIBS_c += -lbfd
77 LIBS_h += -lbfd
78 endif
79 endif
80
81 ifndef CONFIG_ELOOP
82 CONFIG_ELOOP=eloop
83 endif
84 OBJS += ../src/utils/$(CONFIG_ELOOP).o
85 OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
86 OBJS += ../src/utils/common.o
87 OBJS += ../src/utils/wpa_debug.o
88 OBJS_c += ../src/utils/wpa_debug.o
89 OBJS += ../src/utils/wpabuf.o
90 OBJS += ../src/utils/os_$(CONFIG_OS).o
91 OBJS += ../src/utils/ip_addr.o
92
93 OBJS += ../src/common/ieee802_11_common.o
94 OBJS += ../src/common/wpa_common.o
95
96 OBJS += ../src/eapol_auth/eapol_auth_sm.o
97
98
99 ifndef CONFIG_NO_DUMP_STATE
100 # define HOSTAPD_DUMP_STATE to include SIGUSR1 handler for dumping state to
101 # a file (undefine it, if you want to save in binary size)
102 CFLAGS += -DHOSTAPD_DUMP_STATE
103 OBJS += dump_state.o
104 OBJS += ../src/eapol_auth/eapol_auth_dump.o
105 endif
106
107 ifdef CONFIG_NO_RADIUS
108 CFLAGS += -DCONFIG_NO_RADIUS
109 CONFIG_NO_ACCOUNTING=y
110 else
111 OBJS += ../src/radius/radius.o
112 OBJS += ../src/radius/radius_client.o
113 OBJS += ../src/radius/radius_das.o
114 endif
115
116 ifdef CONFIG_NO_ACCOUNTING
117 CFLAGS += -DCONFIG_NO_ACCOUNTING
118 else
119 OBJS += ../src/ap/accounting.o
120 endif
121
122 ifdef CONFIG_NO_VLAN
123 CFLAGS += -DCONFIG_NO_VLAN
124 else
125 OBJS += ../src/ap/vlan_init.o
126 endif
127
128 ifdef CONFIG_NO_CTRL_IFACE
129 CFLAGS += -DCONFIG_NO_CTRL_IFACE
130 else
131 OBJS += ctrl_iface.o
132 OBJS += ../src/ap/ctrl_iface_ap.o
133 endif
134
135 OBJS += ../src/crypto/md5.o
136
137 CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX
138
139 ifdef CONFIG_IAPP
140 CFLAGS += -DCONFIG_IAPP
141 OBJS += ../src/ap/iapp.o
142 endif
143
144 ifdef CONFIG_RSN_PREAUTH
145 CFLAGS += -DCONFIG_RSN_PREAUTH
146 CONFIG_L2_PACKET=y
147 endif
148
149 ifdef CONFIG_PEERKEY
150 CFLAGS += -DCONFIG_PEERKEY
151 OBJS += ../src/ap/peerkey_auth.o
152 endif
153
154 ifdef CONFIG_IEEE80211W
155 CFLAGS += -DCONFIG_IEEE80211W
156 NEED_SHA256=y
157 NEED_AES_OMAC1=y
158 endif
159
160 ifdef CONFIG_IEEE80211R
161 CFLAGS += -DCONFIG_IEEE80211R
162 OBJS += ../src/ap/wpa_auth_ft.o
163 NEED_SHA256=y
164 NEED_AES_OMAC1=y
165 NEED_AES_UNWRAP=y
166 endif
167
168 ifdef CONFIG_IEEE80211N
169 CFLAGS += -DCONFIG_IEEE80211N
170 endif
171
172 ifdef CONFIG_WNM
173 CFLAGS += -DCONFIG_WNM
174 endif
175
176 include ../src/drivers/drivers.mak
177 OBJS += $(DRV_AP_OBJS)
178 CFLAGS += $(DRV_AP_CFLAGS)
179 LDFLAGS += $(DRV_AP_LDFLAGS)
180 LIBS += $(DRV_AP_LIBS)
181
182 ifdef CONFIG_L2_PACKET
183 ifdef CONFIG_DNET_PCAP
184 ifdef CONFIG_L2_FREEBSD
185 LIBS += -lpcap
186 OBJS += ../src/l2_packet/l2_packet_freebsd.o
187 else
188 LIBS += -ldnet -lpcap
189 OBJS += ../src/l2_packet/l2_packet_pcap.o
190 endif
191 else
192 OBJS += ../src/l2_packet/l2_packet_linux.o
193 endif
194 else
195 OBJS += ../src/l2_packet/l2_packet_none.o
196 endif
197
198
199 ifdef CONFIG_EAP_MD5
200 CFLAGS += -DEAP_SERVER_MD5
201 OBJS += ../src/eap_server/eap_server_md5.o
202 CHAP=y
203 endif
204
205 ifdef CONFIG_EAP_TLS
206 CFLAGS += -DEAP_SERVER_TLS
207 OBJS += ../src/eap_server/eap_server_tls.o
208 TLS_FUNCS=y
209 endif
210
211 ifdef CONFIG_EAP_PEAP
212 CFLAGS += -DEAP_SERVER_PEAP
213 OBJS += ../src/eap_server/eap_server_peap.o
214 OBJS += ../src/eap_common/eap_peap_common.o
215 TLS_FUNCS=y
216 CONFIG_EAP_MSCHAPV2=y
217 endif
218
219 ifdef CONFIG_EAP_TTLS
220 CFLAGS += -DEAP_SERVER_TTLS
221 OBJS += ../src/eap_server/eap_server_ttls.o
222 TLS_FUNCS=y
223 CHAP=y
224 endif
225
226 ifdef CONFIG_EAP_MSCHAPV2
227 CFLAGS += -DEAP_SERVER_MSCHAPV2
228 OBJS += ../src/eap_server/eap_server_mschapv2.o
229 MS_FUNCS=y
230 endif
231
232 ifdef CONFIG_EAP_GTC
233 CFLAGS += -DEAP_SERVER_GTC
234 OBJS += ../src/eap_server/eap_server_gtc.o
235 endif
236
237 ifdef CONFIG_EAP_SIM
238 CFLAGS += -DEAP_SERVER_SIM
239 OBJS += ../src/eap_server/eap_server_sim.o
240 CONFIG_EAP_SIM_COMMON=y
241 NEED_AES_CBC=y
242 endif
243
244 ifdef CONFIG_EAP_AKA
245 CFLAGS += -DEAP_SERVER_AKA
246 OBJS += ../src/eap_server/eap_server_aka.o
247 CONFIG_EAP_SIM_COMMON=y
248 NEED_SHA256=y
249 NEED_AES_CBC=y
250 endif
251
252 ifdef CONFIG_EAP_AKA_PRIME
253 CFLAGS += -DEAP_SERVER_AKA_PRIME
254 endif
255
256 ifdef CONFIG_EAP_SIM_COMMON
257 OBJS += ../src/eap_common/eap_sim_common.o
258 # Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
259 # replaced with another file implementating the interface specified in
260 # eap_sim_db.h.
261 OBJS += ../src/eap_server/eap_sim_db.o
262 NEED_FIPS186_2_PRF=y
263 endif
264
265 ifdef CONFIG_EAP_PAX
266 CFLAGS += -DEAP_SERVER_PAX
267 OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
268 endif
269
270 ifdef CONFIG_EAP_PSK
271 CFLAGS += -DEAP_SERVER_PSK
272 OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
273 NEED_AES_OMAC1=y
274 NEED_AES_ENCBLOCK=y
275 NEED_AES_EAX=y
276 endif
277
278 ifdef CONFIG_EAP_SAKE
279 CFLAGS += -DEAP_SERVER_SAKE
280 OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
281 endif
282
283 ifdef CONFIG_EAP_GPSK
284 CFLAGS += -DEAP_SERVER_GPSK
285 OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
286 ifdef CONFIG_EAP_GPSK_SHA256
287 CFLAGS += -DEAP_SERVER_GPSK_SHA256
288 endif
289 NEED_SHA256=y
290 NEED_AES_OMAC1=y
291 endif
292
293 ifdef CONFIG_EAP_PWD
294 CFLAGS += -DEAP_SERVER_PWD
295 OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
296 NEED_SHA256=y
297 endif
298
299 ifdef CONFIG_EAP_VENDOR_TEST
300 CFLAGS += -DEAP_SERVER_VENDOR_TEST
301 OBJS += ../src/eap_server/eap_server_vendor_test.o
302 endif
303
304 ifdef CONFIG_EAP_FAST
305 CFLAGS += -DEAP_SERVER_FAST
306 OBJS += ../src/eap_server/eap_server_fast.o
307 OBJS += ../src/eap_common/eap_fast_common.o
308 TLS_FUNCS=y
309 NEED_T_PRF=y
310 NEED_AES_UNWRAP=y
311 endif
312
313 ifdef CONFIG_WPS
314 ifdef CONFIG_WPS2
315 CFLAGS += -DCONFIG_WPS2
316 endif
317
318 CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
319 OBJS += ../src/utils/uuid.o
320 OBJS += ../src/ap/wps_hostapd.o
321 OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
322 OBJS += ../src/wps/wps.o
323 OBJS += ../src/wps/wps_common.o
324 OBJS += ../src/wps/wps_attr_parse.o
325 OBJS += ../src/wps/wps_attr_build.o
326 OBJS += ../src/wps/wps_attr_process.o
327 OBJS += ../src/wps/wps_dev_attr.o
328 OBJS += ../src/wps/wps_enrollee.o
329 OBJS += ../src/wps/wps_registrar.o
330 NEED_DH_GROUPS=y
331 NEED_SHA256=y
332 NEED_BASE64=y
333 NEED_AES_CBC=y
334 NEED_MODEXP=y
335 CONFIG_EAP=y
336
337 ifdef CONFIG_WPS_UFD
338 CFLAGS += -DCONFIG_WPS_UFD
339 OBJS += ../src/wps/wps_ufd.o
340 NEED_WPS_OOB=y
341 endif
342
343 ifdef CONFIG_WPS_NFC
344 CFLAGS += -DCONFIG_WPS_NFC
345 OBJS += ../src/wps/ndef.o
346 OBJS += ../src/wps/wps_nfc.o
347 NEED_WPS_OOB=y
348 ifdef CONFIG_WPS_NFC_PN531
349 PN531_PATH ?= /usr/local/src/nfc
350 CFLAGS += -DCONFIG_WPS_NFC_PN531
351 CFLAGS += -I${PN531_PATH}/inc
352 OBJS += ../src/wps/wps_nfc_pn531.o
353 LIBS += ${PN531_PATH}/lib/wpsnfc.dll
354 LIBS += ${PN531_PATH}/lib/libnfc_mapping_pn53x.dll
355 endif
356 endif
357
358 ifdef NEED_WPS_OOB
359 CFLAGS += -DCONFIG_WPS_OOB
360 endif
361
362 ifdef CONFIG_WPS_UPNP
363 CFLAGS += -DCONFIG_WPS_UPNP
364 OBJS += ../src/wps/wps_upnp.o
365 OBJS += ../src/wps/wps_upnp_ssdp.o
366 OBJS += ../src/wps/wps_upnp_web.o
367 OBJS += ../src/wps/wps_upnp_event.o
368 OBJS += ../src/wps/wps_upnp_ap.o
369 OBJS += ../src/wps/upnp_xml.o
370 OBJS += ../src/wps/httpread.o
371 OBJS += ../src/wps/http_client.o
372 OBJS += ../src/wps/http_server.o
373 endif
374
375 ifdef CONFIG_WPS_STRICT
376 CFLAGS += -DCONFIG_WPS_STRICT
377 OBJS += ../src/wps/wps_validate.o
378 endif
379
380 ifdef CONFIG_WPS_TESTING
381 CFLAGS += -DCONFIG_WPS_TESTING
382 endif
383
384 endif
385
386 ifdef CONFIG_EAP_IKEV2
387 CFLAGS += -DEAP_SERVER_IKEV2
388 OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
389 OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
390 NEED_DH_GROUPS=y
391 NEED_DH_GROUPS_ALL=y
392 NEED_MODEXP=y
393 NEED_CIPHER=y
394 endif
395
396 ifdef CONFIG_EAP_TNC
397 CFLAGS += -DEAP_SERVER_TNC
398 OBJS += ../src/eap_server/eap_server_tnc.o
399 OBJS += ../src/eap_server/tncs.o
400 NEED_BASE64=y
401 ifndef CONFIG_DRIVER_BSD
402 LIBS += -ldl
403 endif
404 endif
405
406 # Basic EAP functionality is needed for EAPOL
407 OBJS += eap_register.o
408 OBJS += ../src/eap_server/eap_server.o
409 OBJS += ../src/eap_common/eap_common.o
410 OBJS += ../src/eap_server/eap_server_methods.o
411 OBJS += ../src/eap_server/eap_server_identity.o
412 CFLAGS += -DEAP_SERVER_IDENTITY
413
414 ifdef CONFIG_EAP
415 CFLAGS += -DEAP_SERVER
416 endif
417
418 ifdef CONFIG_PKCS12
419 CFLAGS += -DPKCS12_FUNCS
420 endif
421
422 ifdef MS_FUNCS
423 OBJS += ../src/crypto/ms_funcs.o
424 NEED_DES=y
425 NEED_MD4=y
426 endif
427
428 ifdef CHAP
429 OBJS += ../src/eap_common/chap.o
430 endif
431
432 ifdef TLS_FUNCS
433 NEED_DES=y
434 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
435 CFLAGS += -DEAP_TLS_FUNCS
436 OBJS += ../src/eap_server/eap_server_tls_common.o
437 NEED_TLS_PRF=y
438 endif
439
440 ifndef CONFIG_TLS
441 CONFIG_TLS=openssl
442 endif
443
444 ifdef CONFIG_TLSV11
445 CFLAGS += -DCONFIG_TLSV11
446 endif
447
448 ifdef CONFIG_TLSV12
449 CFLAGS += -DCONFIG_TLSV12
450 NEED_SHA256=y
451 endif
452
453 ifeq ($(CONFIG_TLS), openssl)
454 ifdef TLS_FUNCS
455 OBJS += ../src/crypto/tls_openssl.o
456 LIBS += -lssl
457 endif
458 OBJS += ../src/crypto/crypto_openssl.o
459 HOBJS += ../src/crypto/crypto_openssl.o
460 ifdef NEED_FIPS186_2_PRF
461 OBJS += ../src/crypto/fips_prf_openssl.o
462 endif
463 LIBS += -lcrypto
464 LIBS_h += -lcrypto
465 endif
466
467 ifeq ($(CONFIG_TLS), gnutls)
468 ifdef TLS_FUNCS
469 OBJS += ../src/crypto/tls_gnutls.o
470 LIBS += -lgnutls -lgpg-error
471 endif
472 OBJS += ../src/crypto/crypto_gnutls.o
473 HOBJS += ../src/crypto/crypto_gnutls.o
474 ifdef NEED_FIPS186_2_PRF
475 OBJS += ../src/crypto/fips_prf_gnutls.o
476 endif
477 LIBS += -lgcrypt
478 LIBS_h += -lgcrypt
479 CONFIG_INTERNAL_SHA256=y
480 CONFIG_INTERNAL_RC4=y
481 CONFIG_INTERNAL_DH_GROUP5=y
482 endif
483
484 ifeq ($(CONFIG_TLS), schannel)
485 ifdef TLS_FUNCS
486 OBJS += ../src/crypto/tls_schannel.o
487 endif
488 OBJS += ../src/crypto/crypto_cryptoapi.o
489 OBJS_p += ../src/crypto/crypto_cryptoapi.o
490 CONFIG_INTERNAL_SHA256=y
491 CONFIG_INTERNAL_RC4=y
492 CONFIG_INTERNAL_DH_GROUP5=y
493 endif
494
495 ifeq ($(CONFIG_TLS), nss)
496 ifdef TLS_FUNCS
497 OBJS += ../src/crypto/tls_nss.o
498 LIBS += -lssl3
499 endif
500 OBJS += ../src/crypto/crypto_nss.o
501 ifdef NEED_FIPS186_2_PRF
502 OBJS += ../src/crypto/fips_prf_nss.o
503 endif
504 LIBS += -lnss3
505 LIBS_h += -lnss3
506 CONFIG_INTERNAL_MD4=y
507 CONFIG_INTERNAL_DH_GROUP5=y
508 endif
509
510 ifeq ($(CONFIG_TLS), internal)
511 ifndef CONFIG_CRYPTO
512 CONFIG_CRYPTO=internal
513 endif
514 ifdef TLS_FUNCS
515 OBJS += ../src/crypto/crypto_internal-rsa.o
516 OBJS += ../src/crypto/tls_internal.o
517 OBJS += ../src/tls/tlsv1_common.o
518 OBJS += ../src/tls/tlsv1_record.o
519 OBJS += ../src/tls/tlsv1_cred.o
520 OBJS += ../src/tls/tlsv1_server.o
521 OBJS += ../src/tls/tlsv1_server_write.o
522 OBJS += ../src/tls/tlsv1_server_read.o
523 OBJS += ../src/tls/asn1.o
524 OBJS += ../src/tls/rsa.o
525 OBJS += ../src/tls/x509v3.o
526 OBJS += ../src/tls/pkcs1.o
527 OBJS += ../src/tls/pkcs5.o
528 OBJS += ../src/tls/pkcs8.o
529 NEED_SHA256=y
530 NEED_BASE64=y
531 NEED_TLS_PRF=y
532 ifdef CONFIG_TLSV12
533 NEED_TLS_PRF_SHA256=y
534 endif
535 NEED_MODEXP=y
536 NEED_CIPHER=y
537 CFLAGS += -DCONFIG_TLS_INTERNAL
538 CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
539 endif
540 ifdef NEED_CIPHER
541 NEED_DES=y
542 OBJS += ../src/crypto/crypto_internal-cipher.o
543 endif
544 ifdef NEED_MODEXP
545 OBJS += ../src/crypto/crypto_internal-modexp.o
546 OBJS += ../src/tls/bignum.o
547 endif
548 ifeq ($(CONFIG_CRYPTO), libtomcrypt)
549 OBJS += ../src/crypto/crypto_libtomcrypt.o
550 LIBS += -ltomcrypt -ltfm
551 LIBS_h += -ltomcrypt -ltfm
552 CONFIG_INTERNAL_SHA256=y
553 CONFIG_INTERNAL_RC4=y
554 CONFIG_INTERNAL_DH_GROUP5=y
555 endif
556 ifeq ($(CONFIG_CRYPTO), internal)
557 OBJS += ../src/crypto/crypto_internal.o
558 NEED_AES_DEC=y
559 CFLAGS += -DCONFIG_CRYPTO_INTERNAL
560 ifdef CONFIG_INTERNAL_LIBTOMMATH
561 CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
562 ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
563 CFLAGS += -DLTM_FAST
564 endif
565 else
566 LIBS += -ltommath
567 LIBS_h += -ltommath
568 endif
569 CONFIG_INTERNAL_AES=y
570 CONFIG_INTERNAL_DES=y
571 CONFIG_INTERNAL_SHA1=y
572 CONFIG_INTERNAL_MD4=y
573 CONFIG_INTERNAL_MD5=y
574 CONFIG_INTERNAL_SHA256=y
575 CONFIG_INTERNAL_RC4=y
576 CONFIG_INTERNAL_DH_GROUP5=y
577 endif
578 ifeq ($(CONFIG_CRYPTO), cryptoapi)
579 OBJS += ../src/crypto/crypto_cryptoapi.o
580 OBJS_p += ../src/crypto/crypto_cryptoapi.o
581 CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
582 CONFIG_INTERNAL_SHA256=y
583 CONFIG_INTERNAL_RC4=y
584 endif
585 endif
586
587 ifeq ($(CONFIG_TLS), none)
588 ifdef TLS_FUNCS
589 OBJS += ../src/crypto/tls_none.o
590 CFLAGS += -DEAP_TLS_NONE
591 CONFIG_INTERNAL_AES=y
592 CONFIG_INTERNAL_SHA1=y
593 CONFIG_INTERNAL_MD5=y
594 endif
595 OBJS += ../src/crypto/crypto_none.o
596 OBJS_p += ../src/crypto/crypto_none.o
597 CONFIG_INTERNAL_SHA256=y
598 CONFIG_INTERNAL_RC4=y
599 endif
600
601 ifndef TLS_FUNCS
602 OBJS += ../src/crypto/tls_none.o
603 ifeq ($(CONFIG_TLS), internal)
604 CONFIG_INTERNAL_AES=y
605 CONFIG_INTERNAL_SHA1=y
606 CONFIG_INTERNAL_MD5=y
607 CONFIG_INTERNAL_RC4=y
608 endif
609 endif
610
611 AESOBJS = # none so far
612 ifdef CONFIG_INTERNAL_AES
613 AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
614 endif
615
616 AESOBJS += ../src/crypto/aes-wrap.o
617 ifdef NEED_AES_EAX
618 AESOBJS += ../src/crypto/aes-eax.o
619 NEED_AES_CTR=y
620 endif
621 ifdef NEED_AES_CTR
622 AESOBJS += ../src/crypto/aes-ctr.o
623 endif
624 ifdef NEED_AES_ENCBLOCK
625 AESOBJS += ../src/crypto/aes-encblock.o
626 endif
627 ifdef NEED_AES_OMAC1
628 AESOBJS += ../src/crypto/aes-omac1.o
629 endif
630 ifdef NEED_AES_UNWRAP
631 NEED_AES_DEC=y
632 AESOBJS += ../src/crypto/aes-unwrap.o
633 endif
634 ifdef NEED_AES_CBC
635 NEED_AES_DEC=y
636 AESOBJS += ../src/crypto/aes-cbc.o
637 endif
638 ifdef NEED_AES_DEC
639 ifdef CONFIG_INTERNAL_AES
640 AESOBJS += ../src/crypto/aes-internal-dec.o
641 endif
642 endif
643 ifdef NEED_AES
644 OBJS += $(AESOBJS)
645 endif
646
647 ifdef NEED_SHA1
648 SHA1OBJS += ../src/crypto/sha1.o
649 ifdef CONFIG_INTERNAL_SHA1
650 SHA1OBJS += ../src/crypto/sha1-internal.o
651 ifdef NEED_FIPS186_2_PRF
652 SHA1OBJS += ../src/crypto/fips_prf_internal.o
653 endif
654 endif
655 SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
656 ifdef NEED_T_PRF
657 SHA1OBJS += ../src/crypto/sha1-tprf.o
658 endif
659 ifdef NEED_TLS_PRF
660 SHA1OBJS += ../src/crypto/sha1-tlsprf.o
661 endif
662 endif
663
664 ifdef NEED_SHA1
665 OBJS += $(SHA1OBJS)
666 endif
667
668 ifdef NEED_MD5
669 ifdef CONFIG_INTERNAL_MD5
670 OBJS += ../src/crypto/md5-internal.o
671 HOBJS += ../src/crypto/md5-internal.o
672 endif
673 endif
674
675 ifdef NEED_MD4
676 ifdef CONFIG_INTERNAL_MD4
677 OBJS += ../src/crypto/md4-internal.o
678 endif
679 endif
680
681 ifdef NEED_DES
682 ifdef CONFIG_INTERNAL_DES
683 OBJS += ../src/crypto/des-internal.o
684 endif
685 endif
686
687 ifdef NEED_RC4
688 ifdef CONFIG_INTERNAL_RC4
689 OBJS += ../src/crypto/rc4.o
690 endif
691 endif
692
693 ifdef NEED_SHA256
694 CFLAGS += -DCONFIG_SHA256
695 OBJS += ../src/crypto/sha256.o
696 ifdef CONFIG_INTERNAL_SHA256
697 OBJS += ../src/crypto/sha256-internal.o
698 endif
699 ifdef NEED_TLS_PRF_SHA256
700 OBJS += ../src/crypto/sha256-tlsprf.o
701 endif
702 endif
703
704 ifdef NEED_DH_GROUPS
705 OBJS += ../src/crypto/dh_groups.o
706 endif
707 ifdef NEED_DH_GROUPS_ALL
708 CFLAGS += -DALL_DH_GROUPS
709 endif
710 ifdef CONFIG_INTERNAL_DH_GROUP5
711 ifdef NEED_DH_GROUPS
712 OBJS += ../src/crypto/dh_group5.o
713 endif
714 endif
715
716 ifdef CONFIG_NO_RANDOM_POOL
717 CFLAGS += -DCONFIG_NO_RANDOM_POOL
718 else
719 OBJS += ../src/crypto/random.o
720 HOBJS += ../src/crypto/random.o
721 HOBJS += ../src/utils/eloop.o
722 HOBJS += $(SHA1OBJS)
723 HOBJS += ../src/crypto/md5.o
724 endif
725
726 ifdef CONFIG_RADIUS_SERVER
727 CFLAGS += -DRADIUS_SERVER
728 OBJS += ../src/radius/radius_server.o
729 endif
730
731 ifdef CONFIG_IPV6
732 CFLAGS += -DCONFIG_IPV6
733 endif
734
735 ifdef CONFIG_DRIVER_RADIUS_ACL
736 CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
737 endif
738
739 ifdef CONFIG_FULL_DYNAMIC_VLAN
740 # define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
741 # and vlan interfaces for the vlan feature.
742 CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
743 endif
744
745 ifdef NEED_BASE64
746 OBJS += ../src/utils/base64.o
747 endif
748
749 ifdef NEED_AP_MLME
750 OBJS += ../src/ap/wmm.o
751 OBJS += ../src/ap/ap_list.o
752 OBJS += ../src/ap/ieee802_11.o
753 OBJS += ../src/ap/hw_features.o
754 CFLAGS += -DNEED_AP_MLME
755 endif
756 ifdef CONFIG_IEEE80211N
757 OBJS += ../src/ap/ieee802_11_ht.o
758 endif
759
760 ifdef CONFIG_P2P_MANAGER
761 CFLAGS += -DCONFIG_P2P_MANAGER
762 OBJS += ../src/ap/p2p_hostapd.o
763 endif
764
765 ifdef CONFIG_INTERWORKING
766 CFLAGS += -DCONFIG_INTERWORKING
767 OBJS += ../src/common/gas.o
768 OBJS += ../src/ap/gas_serv.o
769 endif
770
771 OBJS += ../src/drivers/driver_common.o
772
773 ifdef CONFIG_WPA_CLI_EDIT
774 OBJS_c += ../src/utils/edit.o
775 else
776 OBJS_c += ../src/utils/edit_simple.o
777 endif
778
779 ifdef CONFIG_NO_STDOUT_DEBUG
780 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
781 endif
782
783 ifdef CONFIG_DEBUG_FILE
784 CFLAGS += -DCONFIG_DEBUG_FILE
785 endif
786
787 ALL=hostapd hostapd_cli
788
789 all: verify_config $(ALL)
790
791 Q=@
792 E=echo
793 ifeq ($(V), 1)
794 Q=
795 E=true
796 endif
797
798 %.o: %.c
799 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
800 @$(E) " CC " $<
801
802 verify_config:
803 @if [ ! -r .config ]; then \
804 echo 'Building hostapd requires a configuration file'; \
805 echo '(.config). See README for more instructions. You can'; \
806 echo 'run "cp defconfig .config" to create an example'; \
807 echo 'configuration.'; \
808 exit 1; \
809 fi
810
811 install: all
812 mkdir -p $(DESTDIR)/usr/local/bin
813 for i in $(ALL); do cp -f $$i $(DESTDIR)/usr/local/bin/$$i; done
814
815 ../src/drivers/build.hostapd:
816 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \
817 $(MAKE) -C ../src/drivers clean; \
818 fi
819 @touch ../src/drivers/build.hostapd
820
821 BCHECK=../src/drivers/build.hostapd
822
823 hostapd: $(BCHECK) $(OBJS)
824 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
825 @$(E) " LD " $@
826
827 ifdef CONFIG_WPA_TRACE
828 OBJS_c += ../src/utils/trace.o
829 endif
830 hostapd_cli: $(OBJS_c)
831 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
832 @$(E) " LD " $@
833
834 NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) ../src/crypto/md5.o
835 ifdef NEED_RC4
836 ifdef CONFIG_INTERNAL_RC4
837 NOBJS += ../src/crypto/rc4.o
838 endif
839 endif
840 ifdef CONFIG_INTERNAL_MD5
841 NOBJS += ../src/crypto/md5-internal.o
842 endif
843 NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o
844 NOBJS += ../src/utils/wpa_debug.o
845 NOBJS += ../src/utils/wpabuf.o
846 ifdef CONFIG_WPA_TRACE
847 NOBJS += ../src/utils/trace.o
848 LIBS_n += -lbfd
849 endif
850 ifdef TLS_FUNCS
851 LIBS_n += -lcrypto
852 endif
853
854 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
855 HOBJS += ../src/crypto/aes-encblock.o
856 ifdef CONFIG_INTERNAL_AES
857 HOBJS += ../src/crypto/aes-internal.o
858 HOBJS += ../src/crypto/aes-internal-enc.o
859 endif
860
861 nt_password_hash: $(NOBJS)
862 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
863 @$(E) " LD " $@
864
865 hlr_auc_gw: $(HOBJS)
866 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
867 @$(E) " LD " $@
868
869 clean:
870 $(MAKE) -C ../src clean
871 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
872 rm -f *.d
873
874 -include $(OBJS:%.o=%.d)