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