blob: e64c249762466090ba1f431d377374c221ce676e [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
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08009CFLAGS += -I$(abspath ../src)
10CFLAGS += -I$(abspath ../src/utils)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070011
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -080012export BINDIR ?= /usr/local/bin/
13
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070014# Uncomment following line and set the path to your kernel tree include
15# directory if your C library does not include all header files.
16# CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include
17
18-include .config
19
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -080020ifdef CONFIG_TESTING_OPTIONS
21CFLAGS += -DCONFIG_TESTING_OPTIONS
22CONFIG_WPS_TESTING=y
23endif
24
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070025ifndef CONFIG_OS
26ifdef CONFIG_NATIVE_WINDOWS
27CONFIG_OS=win32
28else
29CONFIG_OS=unix
30endif
31endif
32
33ifeq ($(CONFIG_OS), internal)
34CFLAGS += -DOS_NO_C_LIB_DEFINES
35endif
36
37ifdef CONFIG_NATIVE_WINDOWS
38CFLAGS += -DCONFIG_NATIVE_WINDOWS
39LIBS += -lws2_32
40endif
41
42OBJS += main.o
43OBJS += config_file.o
44
45OBJS += ../src/ap/hostapd.o
46OBJS += ../src/ap/wpa_auth_glue.o
47OBJS += ../src/ap/drv_callbacks.o
48OBJS += ../src/ap/ap_drv_ops.o
49OBJS += ../src/ap/utils.o
50OBJS += ../src/ap/authsrv.o
51OBJS += ../src/ap/ieee802_1x.o
52OBJS += ../src/ap/ap_config.o
Dmitry Shmidtd5e49232012-12-03 15:08:10 -080053OBJS += ../src/ap/eap_user_db.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070054OBJS += ../src/ap/ieee802_11_auth.o
55OBJS += ../src/ap/sta_info.o
56OBJS += ../src/ap/wpa_auth.o
57OBJS += ../src/ap/tkip_countermeasures.o
58OBJS += ../src/ap/ap_mlme.o
59OBJS += ../src/ap/wpa_auth_ie.o
60OBJS += ../src/ap/preauth_auth.o
61OBJS += ../src/ap/pmksa_cache_auth.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080062OBJS += ../src/ap/ieee802_11_shared.o
63OBJS += ../src/ap/beacon.o
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -080064OBJS += ../src/ap/bss_load.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080065
66OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070067
68NEED_RC4=y
69NEED_AES=y
70NEED_MD5=y
71NEED_SHA1=y
72
73OBJS += ../src/drivers/drivers.o
74CFLAGS += -DHOSTAPD
75
Dmitry Shmidt7f93d6f2014-02-21 11:22:49 -080076ifdef CONFIG_MODULE_TESTS
77CFLAGS += -DCONFIG_MODULE_TESTS
78OBJS += hapd_module_tests.o
79endif
80
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070081ifdef CONFIG_WPA_TRACE
82CFLAGS += -DWPA_TRACE
83OBJS += ../src/utils/trace.o
84HOBJS += ../src/utils/trace.o
85LDFLAGS += -rdynamic
86CFLAGS += -funwind-tables
87ifdef CONFIG_WPA_TRACE_BFD
Dmitry Shmidtec58b162014-02-19 12:44:18 -080088CFLAGS += -DPACKAGE="hostapd" -DWPA_TRACE_BFD
Dmitry Shmidt13ca8d82014-02-20 10:18:40 -080089LIBS += -lbfd -ldl -liberty -lz
90LIBS_c += -lbfd -ldl -liberty -lz
91LIBS_h += -lbfd -ldl -liberty -lz
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070092endif
93endif
94
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080095ifndef CONFIG_ELOOP
96CONFIG_ELOOP=eloop
97endif
98OBJS += ../src/utils/$(CONFIG_ELOOP).o
99OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
Dmitry Shmidtfa3fc4a2013-11-21 13:34:38 -0800100
101ifeq ($(CONFIG_ELOOP), eloop)
102# Using glibc < 2.17 requires -lrt for clock_gettime()
103LIBS += -lrt
104LIBS_c += -lrt
105LIBS_h += -lrt
Dmitry Shmidtbd14a572014-02-18 10:33:49 -0800106LIBS_n += -lrt
Dmitry Shmidtfa3fc4a2013-11-21 13:34:38 -0800107endif
108
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700109OBJS += ../src/utils/common.o
110OBJS += ../src/utils/wpa_debug.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800111OBJS_c += ../src/utils/wpa_debug.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700112OBJS += ../src/utils/wpabuf.o
113OBJS += ../src/utils/os_$(CONFIG_OS).o
114OBJS += ../src/utils/ip_addr.o
115
116OBJS += ../src/common/ieee802_11_common.o
117OBJS += ../src/common/wpa_common.o
118
119OBJS += ../src/eapol_auth/eapol_auth_sm.o
120
121
Dmitry Shmidt01904cf2013-12-05 11:08:35 -0800122ifdef CONFIG_CODE_COVERAGE
123CFLAGS += -O0 -fprofile-arcs -ftest-coverage
124LIBS += -lgcov
125LIBS_c += -lgcov
126LIBS_h += -lgcov
127LIBS_n += -lgcov
128endif
129
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700130ifndef CONFIG_NO_DUMP_STATE
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800131# define HOSTAPD_DUMP_STATE to include support for dumping internal state
132# through control interface commands (undefine it, if you want to save in
133# binary size)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700134CFLAGS += -DHOSTAPD_DUMP_STATE
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700135OBJS += ../src/eapol_auth/eapol_auth_dump.o
136endif
137
138ifdef CONFIG_NO_RADIUS
139CFLAGS += -DCONFIG_NO_RADIUS
140CONFIG_NO_ACCOUNTING=y
141else
142OBJS += ../src/radius/radius.o
143OBJS += ../src/radius/radius_client.o
Dmitry Shmidt04949592012-07-19 12:16:46 -0700144OBJS += ../src/radius/radius_das.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700145endif
146
147ifdef CONFIG_NO_ACCOUNTING
148CFLAGS += -DCONFIG_NO_ACCOUNTING
149else
150OBJS += ../src/ap/accounting.o
151endif
152
153ifdef CONFIG_NO_VLAN
154CFLAGS += -DCONFIG_NO_VLAN
155else
156OBJS += ../src/ap/vlan_init.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700157ifdef CONFIG_VLAN_NETLINK
158ifdef CONFIG_FULL_DYNAMIC_VLAN
159OBJS += ../src/ap/vlan_util.o
160endif
161CFLAGS += -DCONFIG_VLAN_NETLINK
162endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700163endif
164
165ifdef CONFIG_NO_CTRL_IFACE
166CFLAGS += -DCONFIG_NO_CTRL_IFACE
167else
168OBJS += ctrl_iface.o
169OBJS += ../src/ap/ctrl_iface_ap.o
170endif
171
172OBJS += ../src/crypto/md5.o
173
174CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX
175
176ifdef CONFIG_IAPP
177CFLAGS += -DCONFIG_IAPP
178OBJS += ../src/ap/iapp.o
179endif
180
181ifdef CONFIG_RSN_PREAUTH
182CFLAGS += -DCONFIG_RSN_PREAUTH
183CONFIG_L2_PACKET=y
184endif
185
186ifdef CONFIG_PEERKEY
187CFLAGS += -DCONFIG_PEERKEY
188OBJS += ../src/ap/peerkey_auth.o
189endif
190
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800191ifdef CONFIG_HS20
192NEED_AES_OMAC1=y
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800193CONFIG_PROXYARP=y
194endif
195
196ifdef CONFIG_PROXYARP
197CONFIG_L2_PACKET=y
198endif
199
200ifdef CONFIG_SUITEB
201CFLAGS += -DCONFIG_SUITEB
202NEED_SHA256=y
203NEED_AES_OMAC1=y
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800204endif
205
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700206ifdef CONFIG_IEEE80211W
207CFLAGS += -DCONFIG_IEEE80211W
208NEED_SHA256=y
209NEED_AES_OMAC1=y
210endif
211
212ifdef CONFIG_IEEE80211R
213CFLAGS += -DCONFIG_IEEE80211R
214OBJS += ../src/ap/wpa_auth_ft.o
215NEED_SHA256=y
216NEED_AES_OMAC1=y
217NEED_AES_UNWRAP=y
218endif
219
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800220ifdef CONFIG_SAE
221CFLAGS += -DCONFIG_SAE
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800222OBJS += ../src/common/sae.o
223NEED_ECC=y
224NEED_DH_GROUPS=y
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800225endif
226
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800227ifdef CONFIG_WNM
228CFLAGS += -DCONFIG_WNM
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700229OBJS += ../src/ap/wnm_ap.o
230endif
231
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700232ifdef CONFIG_IEEE80211N
233CFLAGS += -DCONFIG_IEEE80211N
234endif
235
Dmitry Shmidt04949592012-07-19 12:16:46 -0700236ifdef CONFIG_IEEE80211AC
237CFLAGS += -DCONFIG_IEEE80211AC
238endif
239
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700240include ../src/drivers/drivers.mak
241OBJS += $(DRV_AP_OBJS)
242CFLAGS += $(DRV_AP_CFLAGS)
243LDFLAGS += $(DRV_AP_LDFLAGS)
244LIBS += $(DRV_AP_LIBS)
245
246ifdef CONFIG_L2_PACKET
247ifdef CONFIG_DNET_PCAP
248ifdef CONFIG_L2_FREEBSD
249LIBS += -lpcap
250OBJS += ../src/l2_packet/l2_packet_freebsd.o
251else
252LIBS += -ldnet -lpcap
253OBJS += ../src/l2_packet/l2_packet_pcap.o
254endif
255else
256OBJS += ../src/l2_packet/l2_packet_linux.o
257endif
258else
259OBJS += ../src/l2_packet/l2_packet_none.o
260endif
261
262
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800263ifdef CONFIG_ERP
264CFLAGS += -DCONFIG_ERP
265NEED_SHA256=y
266NEED_HMAC_SHA256_KDF=y
267endif
268
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700269ifdef CONFIG_EAP_MD5
270CFLAGS += -DEAP_SERVER_MD5
271OBJS += ../src/eap_server/eap_server_md5.o
272CHAP=y
273endif
274
275ifdef CONFIG_EAP_TLS
276CFLAGS += -DEAP_SERVER_TLS
277OBJS += ../src/eap_server/eap_server_tls.o
278TLS_FUNCS=y
279endif
280
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700281ifdef CONFIG_EAP_UNAUTH_TLS
282CFLAGS += -DEAP_SERVER_UNAUTH_TLS
283ifndef CONFIG_EAP_TLS
284OBJS += ../src/eap_server/eap_server_tls.o
285TLS_FUNCS=y
286endif
287endif
288
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700289ifdef CONFIG_EAP_PEAP
290CFLAGS += -DEAP_SERVER_PEAP
291OBJS += ../src/eap_server/eap_server_peap.o
292OBJS += ../src/eap_common/eap_peap_common.o
293TLS_FUNCS=y
294CONFIG_EAP_MSCHAPV2=y
295endif
296
297ifdef CONFIG_EAP_TTLS
298CFLAGS += -DEAP_SERVER_TTLS
299OBJS += ../src/eap_server/eap_server_ttls.o
300TLS_FUNCS=y
301CHAP=y
302endif
303
304ifdef CONFIG_EAP_MSCHAPV2
305CFLAGS += -DEAP_SERVER_MSCHAPV2
306OBJS += ../src/eap_server/eap_server_mschapv2.o
307MS_FUNCS=y
308endif
309
310ifdef CONFIG_EAP_GTC
311CFLAGS += -DEAP_SERVER_GTC
312OBJS += ../src/eap_server/eap_server_gtc.o
313endif
314
315ifdef CONFIG_EAP_SIM
316CFLAGS += -DEAP_SERVER_SIM
317OBJS += ../src/eap_server/eap_server_sim.o
318CONFIG_EAP_SIM_COMMON=y
319NEED_AES_CBC=y
320endif
321
322ifdef CONFIG_EAP_AKA
323CFLAGS += -DEAP_SERVER_AKA
324OBJS += ../src/eap_server/eap_server_aka.o
325CONFIG_EAP_SIM_COMMON=y
326NEED_SHA256=y
327NEED_AES_CBC=y
328endif
329
330ifdef CONFIG_EAP_AKA_PRIME
331CFLAGS += -DEAP_SERVER_AKA_PRIME
332endif
333
334ifdef CONFIG_EAP_SIM_COMMON
335OBJS += ../src/eap_common/eap_sim_common.o
336# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
337# replaced with another file implementating the interface specified in
338# eap_sim_db.h.
339OBJS += ../src/eap_server/eap_sim_db.o
340NEED_FIPS186_2_PRF=y
341endif
342
343ifdef CONFIG_EAP_PAX
344CFLAGS += -DEAP_SERVER_PAX
345OBJS += ../src/eap_server/eap_server_pax.o ../src/eap_common/eap_pax_common.o
346endif
347
348ifdef CONFIG_EAP_PSK
349CFLAGS += -DEAP_SERVER_PSK
350OBJS += ../src/eap_server/eap_server_psk.o ../src/eap_common/eap_psk_common.o
351NEED_AES_OMAC1=y
352NEED_AES_ENCBLOCK=y
353NEED_AES_EAX=y
354endif
355
356ifdef CONFIG_EAP_SAKE
357CFLAGS += -DEAP_SERVER_SAKE
358OBJS += ../src/eap_server/eap_server_sake.o ../src/eap_common/eap_sake_common.o
359endif
360
361ifdef CONFIG_EAP_GPSK
362CFLAGS += -DEAP_SERVER_GPSK
363OBJS += ../src/eap_server/eap_server_gpsk.o ../src/eap_common/eap_gpsk_common.o
364ifdef CONFIG_EAP_GPSK_SHA256
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800365CFLAGS += -DEAP_GPSK_SHA256
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700366endif
367NEED_SHA256=y
368NEED_AES_OMAC1=y
369endif
370
371ifdef CONFIG_EAP_PWD
372CFLAGS += -DEAP_SERVER_PWD
373OBJS += ../src/eap_server/eap_server_pwd.o ../src/eap_common/eap_pwd_common.o
374NEED_SHA256=y
375endif
376
Dmitry Shmidt34af3062013-07-11 10:46:32 -0700377ifdef CONFIG_EAP_EKE
378CFLAGS += -DEAP_SERVER_EKE
379OBJS += ../src/eap_server/eap_server_eke.o ../src/eap_common/eap_eke_common.o
380NEED_DH_GROUPS=y
381NEED_DH_GROUPS_ALL=y
382endif
383
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700384ifdef CONFIG_EAP_VENDOR_TEST
385CFLAGS += -DEAP_SERVER_VENDOR_TEST
386OBJS += ../src/eap_server/eap_server_vendor_test.o
387endif
388
389ifdef CONFIG_EAP_FAST
390CFLAGS += -DEAP_SERVER_FAST
391OBJS += ../src/eap_server/eap_server_fast.o
392OBJS += ../src/eap_common/eap_fast_common.o
393TLS_FUNCS=y
394NEED_T_PRF=y
395NEED_AES_UNWRAP=y
396endif
397
398ifdef CONFIG_WPS
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700399CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
400OBJS += ../src/utils/uuid.o
401OBJS += ../src/ap/wps_hostapd.o
402OBJS += ../src/eap_server/eap_server_wsc.o ../src/eap_common/eap_wsc_common.o
403OBJS += ../src/wps/wps.o
404OBJS += ../src/wps/wps_common.o
405OBJS += ../src/wps/wps_attr_parse.o
406OBJS += ../src/wps/wps_attr_build.o
407OBJS += ../src/wps/wps_attr_process.o
408OBJS += ../src/wps/wps_dev_attr.o
409OBJS += ../src/wps/wps_enrollee.o
410OBJS += ../src/wps/wps_registrar.o
411NEED_DH_GROUPS=y
412NEED_SHA256=y
413NEED_BASE64=y
414NEED_AES_CBC=y
415NEED_MODEXP=y
416CONFIG_EAP=y
417
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700418ifdef CONFIG_WPS_NFC
419CFLAGS += -DCONFIG_WPS_NFC
420OBJS += ../src/wps/ndef.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700421NEED_WPS_OOB=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700422endif
423
424ifdef NEED_WPS_OOB
425CFLAGS += -DCONFIG_WPS_OOB
426endif
427
428ifdef CONFIG_WPS_UPNP
429CFLAGS += -DCONFIG_WPS_UPNP
430OBJS += ../src/wps/wps_upnp.o
431OBJS += ../src/wps/wps_upnp_ssdp.o
432OBJS += ../src/wps/wps_upnp_web.o
433OBJS += ../src/wps/wps_upnp_event.o
434OBJS += ../src/wps/wps_upnp_ap.o
435OBJS += ../src/wps/upnp_xml.o
436OBJS += ../src/wps/httpread.o
437OBJS += ../src/wps/http_client.o
438OBJS += ../src/wps/http_server.o
439endif
440
441ifdef CONFIG_WPS_STRICT
442CFLAGS += -DCONFIG_WPS_STRICT
443OBJS += ../src/wps/wps_validate.o
444endif
445
446ifdef CONFIG_WPS_TESTING
447CFLAGS += -DCONFIG_WPS_TESTING
448endif
449
450endif
451
452ifdef CONFIG_EAP_IKEV2
453CFLAGS += -DEAP_SERVER_IKEV2
454OBJS += ../src/eap_server/eap_server_ikev2.o ../src/eap_server/ikev2.o
455OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
456NEED_DH_GROUPS=y
457NEED_DH_GROUPS_ALL=y
458NEED_MODEXP=y
459NEED_CIPHER=y
460endif
461
462ifdef CONFIG_EAP_TNC
463CFLAGS += -DEAP_SERVER_TNC
464OBJS += ../src/eap_server/eap_server_tnc.o
465OBJS += ../src/eap_server/tncs.o
466NEED_BASE64=y
467ifndef CONFIG_DRIVER_BSD
468LIBS += -ldl
469endif
470endif
471
472# Basic EAP functionality is needed for EAPOL
473OBJS += eap_register.o
474OBJS += ../src/eap_server/eap_server.o
475OBJS += ../src/eap_common/eap_common.o
476OBJS += ../src/eap_server/eap_server_methods.o
477OBJS += ../src/eap_server/eap_server_identity.o
478CFLAGS += -DEAP_SERVER_IDENTITY
479
480ifdef CONFIG_EAP
481CFLAGS += -DEAP_SERVER
482endif
483
484ifdef CONFIG_PKCS12
485CFLAGS += -DPKCS12_FUNCS
486endif
487
488ifdef MS_FUNCS
489OBJS += ../src/crypto/ms_funcs.o
490NEED_DES=y
491NEED_MD4=y
492endif
493
494ifdef CHAP
495OBJS += ../src/eap_common/chap.o
496endif
497
498ifdef TLS_FUNCS
499NEED_DES=y
500# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
501CFLAGS += -DEAP_TLS_FUNCS
502OBJS += ../src/eap_server/eap_server_tls_common.o
503NEED_TLS_PRF=y
504endif
505
506ifndef CONFIG_TLS
507CONFIG_TLS=openssl
508endif
509
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800510ifdef CONFIG_TLSV11
511CFLAGS += -DCONFIG_TLSV11
512endif
513
514ifdef CONFIG_TLSV12
515CFLAGS += -DCONFIG_TLSV12
516NEED_SHA256=y
517endif
518
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700519ifeq ($(CONFIG_TLS), openssl)
520ifdef TLS_FUNCS
521OBJS += ../src/crypto/tls_openssl.o
522LIBS += -lssl
523endif
524OBJS += ../src/crypto/crypto_openssl.o
525HOBJS += ../src/crypto/crypto_openssl.o
526ifdef NEED_FIPS186_2_PRF
527OBJS += ../src/crypto/fips_prf_openssl.o
528endif
529LIBS += -lcrypto
530LIBS_h += -lcrypto
531endif
532
533ifeq ($(CONFIG_TLS), gnutls)
534ifdef TLS_FUNCS
535OBJS += ../src/crypto/tls_gnutls.o
536LIBS += -lgnutls -lgpg-error
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700537endif
538OBJS += ../src/crypto/crypto_gnutls.o
539HOBJS += ../src/crypto/crypto_gnutls.o
540ifdef NEED_FIPS186_2_PRF
Dmitry Shmidt98660862014-03-11 17:26:21 -0700541OBJS += ../src/crypto/fips_prf_internal.o
542SHA1OBJS += ../src/crypto/sha1-internal.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700543endif
544LIBS += -lgcrypt
545LIBS_h += -lgcrypt
546CONFIG_INTERNAL_SHA256=y
547CONFIG_INTERNAL_RC4=y
548CONFIG_INTERNAL_DH_GROUP5=y
549endif
550
551ifeq ($(CONFIG_TLS), schannel)
552ifdef TLS_FUNCS
553OBJS += ../src/crypto/tls_schannel.o
554endif
555OBJS += ../src/crypto/crypto_cryptoapi.o
556OBJS_p += ../src/crypto/crypto_cryptoapi.o
557CONFIG_INTERNAL_SHA256=y
558CONFIG_INTERNAL_RC4=y
559CONFIG_INTERNAL_DH_GROUP5=y
560endif
561
562ifeq ($(CONFIG_TLS), nss)
563ifdef TLS_FUNCS
564OBJS += ../src/crypto/tls_nss.o
565LIBS += -lssl3
566endif
567OBJS += ../src/crypto/crypto_nss.o
568ifdef NEED_FIPS186_2_PRF
Dmitry Shmidt98660862014-03-11 17:26:21 -0700569OBJS += ../src/crypto/fips_prf_internal.o
570SHA1OBJS += ../src/crypto/sha1-internal.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700571endif
572LIBS += -lnss3
573LIBS_h += -lnss3
574CONFIG_INTERNAL_MD4=y
575CONFIG_INTERNAL_DH_GROUP5=y
576endif
577
578ifeq ($(CONFIG_TLS), internal)
579ifndef CONFIG_CRYPTO
580CONFIG_CRYPTO=internal
581endif
582ifdef TLS_FUNCS
583OBJS += ../src/crypto/crypto_internal-rsa.o
584OBJS += ../src/crypto/tls_internal.o
585OBJS += ../src/tls/tlsv1_common.o
586OBJS += ../src/tls/tlsv1_record.o
587OBJS += ../src/tls/tlsv1_cred.o
588OBJS += ../src/tls/tlsv1_server.o
589OBJS += ../src/tls/tlsv1_server_write.o
590OBJS += ../src/tls/tlsv1_server_read.o
591OBJS += ../src/tls/asn1.o
592OBJS += ../src/tls/rsa.o
593OBJS += ../src/tls/x509v3.o
594OBJS += ../src/tls/pkcs1.o
595OBJS += ../src/tls/pkcs5.o
596OBJS += ../src/tls/pkcs8.o
597NEED_SHA256=y
598NEED_BASE64=y
599NEED_TLS_PRF=y
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800600ifdef CONFIG_TLSV12
601NEED_TLS_PRF_SHA256=y
602endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700603NEED_MODEXP=y
604NEED_CIPHER=y
605CFLAGS += -DCONFIG_TLS_INTERNAL
606CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
607endif
608ifdef NEED_CIPHER
609NEED_DES=y
610OBJS += ../src/crypto/crypto_internal-cipher.o
611endif
612ifdef NEED_MODEXP
613OBJS += ../src/crypto/crypto_internal-modexp.o
614OBJS += ../src/tls/bignum.o
615endif
616ifeq ($(CONFIG_CRYPTO), libtomcrypt)
617OBJS += ../src/crypto/crypto_libtomcrypt.o
618LIBS += -ltomcrypt -ltfm
619LIBS_h += -ltomcrypt -ltfm
620CONFIG_INTERNAL_SHA256=y
621CONFIG_INTERNAL_RC4=y
622CONFIG_INTERNAL_DH_GROUP5=y
623endif
624ifeq ($(CONFIG_CRYPTO), internal)
625OBJS += ../src/crypto/crypto_internal.o
626NEED_AES_DEC=y
627CFLAGS += -DCONFIG_CRYPTO_INTERNAL
628ifdef CONFIG_INTERNAL_LIBTOMMATH
629CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
630ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
631CFLAGS += -DLTM_FAST
632endif
633else
634LIBS += -ltommath
635LIBS_h += -ltommath
636endif
637CONFIG_INTERNAL_AES=y
638CONFIG_INTERNAL_DES=y
639CONFIG_INTERNAL_SHA1=y
640CONFIG_INTERNAL_MD4=y
641CONFIG_INTERNAL_MD5=y
642CONFIG_INTERNAL_SHA256=y
643CONFIG_INTERNAL_RC4=y
644CONFIG_INTERNAL_DH_GROUP5=y
645endif
646ifeq ($(CONFIG_CRYPTO), cryptoapi)
647OBJS += ../src/crypto/crypto_cryptoapi.o
648OBJS_p += ../src/crypto/crypto_cryptoapi.o
649CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
650CONFIG_INTERNAL_SHA256=y
651CONFIG_INTERNAL_RC4=y
652endif
653endif
654
655ifeq ($(CONFIG_TLS), none)
656ifdef TLS_FUNCS
657OBJS += ../src/crypto/tls_none.o
658CFLAGS += -DEAP_TLS_NONE
659CONFIG_INTERNAL_AES=y
660CONFIG_INTERNAL_SHA1=y
661CONFIG_INTERNAL_MD5=y
662endif
663OBJS += ../src/crypto/crypto_none.o
664OBJS_p += ../src/crypto/crypto_none.o
665CONFIG_INTERNAL_SHA256=y
666CONFIG_INTERNAL_RC4=y
667endif
668
669ifndef TLS_FUNCS
670OBJS += ../src/crypto/tls_none.o
671ifeq ($(CONFIG_TLS), internal)
672CONFIG_INTERNAL_AES=y
673CONFIG_INTERNAL_SHA1=y
674CONFIG_INTERNAL_MD5=y
675CONFIG_INTERNAL_RC4=y
676endif
677endif
678
679AESOBJS = # none so far
680ifdef CONFIG_INTERNAL_AES
681AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
682endif
683
684AESOBJS += ../src/crypto/aes-wrap.o
685ifdef NEED_AES_EAX
686AESOBJS += ../src/crypto/aes-eax.o
687NEED_AES_CTR=y
688endif
689ifdef NEED_AES_CTR
690AESOBJS += ../src/crypto/aes-ctr.o
691endif
692ifdef NEED_AES_ENCBLOCK
693AESOBJS += ../src/crypto/aes-encblock.o
694endif
695ifdef NEED_AES_OMAC1
696AESOBJS += ../src/crypto/aes-omac1.o
697endif
698ifdef NEED_AES_UNWRAP
699NEED_AES_DEC=y
700AESOBJS += ../src/crypto/aes-unwrap.o
701endif
702ifdef NEED_AES_CBC
703NEED_AES_DEC=y
704AESOBJS += ../src/crypto/aes-cbc.o
705endif
706ifdef NEED_AES_DEC
707ifdef CONFIG_INTERNAL_AES
708AESOBJS += ../src/crypto/aes-internal-dec.o
709endif
710endif
711ifdef NEED_AES
712OBJS += $(AESOBJS)
713endif
714
715ifdef NEED_SHA1
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700716ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700717SHA1OBJS += ../src/crypto/sha1.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700718endif
719SHA1OBJS += ../src/crypto/sha1-prf.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700720ifdef CONFIG_INTERNAL_SHA1
721SHA1OBJS += ../src/crypto/sha1-internal.o
722ifdef NEED_FIPS186_2_PRF
723SHA1OBJS += ../src/crypto/fips_prf_internal.o
724endif
725endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700726ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700727SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700728endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700729ifdef NEED_T_PRF
730SHA1OBJS += ../src/crypto/sha1-tprf.o
731endif
732ifdef NEED_TLS_PRF
733SHA1OBJS += ../src/crypto/sha1-tlsprf.o
734endif
735endif
736
737ifdef NEED_SHA1
738OBJS += $(SHA1OBJS)
739endif
740
741ifdef NEED_MD5
742ifdef CONFIG_INTERNAL_MD5
743OBJS += ../src/crypto/md5-internal.o
744HOBJS += ../src/crypto/md5-internal.o
745endif
746endif
747
748ifdef NEED_MD4
749ifdef CONFIG_INTERNAL_MD4
750OBJS += ../src/crypto/md4-internal.o
751endif
752endif
753
754ifdef NEED_DES
755ifdef CONFIG_INTERNAL_DES
756OBJS += ../src/crypto/des-internal.o
757endif
758endif
759
760ifdef NEED_RC4
761ifdef CONFIG_INTERNAL_RC4
762OBJS += ../src/crypto/rc4.o
763endif
764endif
765
766ifdef NEED_SHA256
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800767CFLAGS += -DCONFIG_SHA256
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700768ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700769OBJS += ../src/crypto/sha256.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700770endif
771OBJS += ../src/crypto/sha256-prf.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700772ifdef CONFIG_INTERNAL_SHA256
773OBJS += ../src/crypto/sha256-internal.o
774endif
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800775ifdef NEED_TLS_PRF_SHA256
776OBJS += ../src/crypto/sha256-tlsprf.o
777endif
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800778ifdef NEED_HMAC_SHA256_KDF
779OBJS += ../src/crypto/sha256-kdf.o
780endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700781endif
782
783ifdef NEED_DH_GROUPS
784OBJS += ../src/crypto/dh_groups.o
785endif
786ifdef NEED_DH_GROUPS_ALL
787CFLAGS += -DALL_DH_GROUPS
788endif
789ifdef CONFIG_INTERNAL_DH_GROUP5
790ifdef NEED_DH_GROUPS
791OBJS += ../src/crypto/dh_group5.o
792endif
793endif
794
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800795ifdef NEED_ECC
796CFLAGS += -DCONFIG_ECC
797endif
798
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700799ifdef CONFIG_NO_RANDOM_POOL
800CFLAGS += -DCONFIG_NO_RANDOM_POOL
801else
802OBJS += ../src/crypto/random.o
803HOBJS += ../src/crypto/random.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800804HOBJS += ../src/utils/eloop.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700805HOBJS += $(SHA1OBJS)
806HOBJS += ../src/crypto/md5.o
807endif
808
809ifdef CONFIG_RADIUS_SERVER
810CFLAGS += -DRADIUS_SERVER
811OBJS += ../src/radius/radius_server.o
812endif
813
814ifdef CONFIG_IPV6
815CFLAGS += -DCONFIG_IPV6
816endif
817
818ifdef CONFIG_DRIVER_RADIUS_ACL
819CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
820endif
821
822ifdef CONFIG_FULL_DYNAMIC_VLAN
823# define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
824# and vlan interfaces for the vlan feature.
825CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
826endif
827
828ifdef NEED_BASE64
829OBJS += ../src/utils/base64.o
830endif
831
832ifdef NEED_AP_MLME
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700833OBJS += ../src/ap/wmm.o
834OBJS += ../src/ap/ap_list.o
835OBJS += ../src/ap/ieee802_11.o
836OBJS += ../src/ap/hw_features.o
Dmitry Shmidt051af732013-10-22 13:52:46 -0700837OBJS += ../src/ap/dfs.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700838CFLAGS += -DNEED_AP_MLME
839endif
840ifdef CONFIG_IEEE80211N
841OBJS += ../src/ap/ieee802_11_ht.o
842endif
843
Dmitry Shmidt04949592012-07-19 12:16:46 -0700844ifdef CONFIG_IEEE80211AC
845OBJS += ../src/ap/ieee802_11_vht.o
846endif
847
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700848ifdef CONFIG_P2P_MANAGER
849CFLAGS += -DCONFIG_P2P_MANAGER
850OBJS += ../src/ap/p2p_hostapd.o
851endif
852
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700853ifdef CONFIG_HS20
854CFLAGS += -DCONFIG_HS20
855OBJS += ../src/ap/hs20.o
856CONFIG_INTERWORKING=y
857endif
858
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800859ifdef CONFIG_INTERWORKING
860CFLAGS += -DCONFIG_INTERWORKING
Dmitry Shmidt04949592012-07-19 12:16:46 -0700861OBJS += ../src/common/gas.o
862OBJS += ../src/ap/gas_serv.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800863endif
864
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800865ifdef CONFIG_PROXYARP
866CFLAGS += -DCONFIG_PROXYARP
867OBJS += ../src/ap/x_snoop.o
868OBJS += ../src/ap/dhcp_snoop.o
869ifdef CONFIG_IPV6
870OBJS += ../src/ap/ndisc_snoop.o
871endif
872endif
873
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800874OBJS += ../src/drivers/driver_common.o
875
876ifdef CONFIG_WPA_CLI_EDIT
877OBJS_c += ../src/utils/edit.o
878else
879OBJS_c += ../src/utils/edit_simple.o
880endif
881
Dmitry Shmidt391c59f2013-09-03 12:16:28 -0700882ifdef CONFIG_ACS
883CFLAGS += -DCONFIG_ACS
884OBJS += ../src/ap/acs.o
885LIBS += -lm
886endif
887
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700888ifdef CONFIG_NO_STDOUT_DEBUG
889CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
890endif
891
Dmitry Shmidtcce06662013-11-04 18:44:24 -0800892ifdef CONFIG_DEBUG_LINUX_TRACING
893CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
894endif
895
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700896ifdef CONFIG_DEBUG_FILE
897CFLAGS += -DCONFIG_DEBUG_FILE
898endif
899
Dmitry Shmidt4530cfd2012-09-09 15:20:40 -0700900ifdef CONFIG_SQLITE
901CFLAGS += -DCONFIG_SQLITE
902LIBS += -lsqlite3
903LIBS_h += -lsqlite3
904endif
905
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700906ALL=hostapd hostapd_cli
907
908all: verify_config $(ALL)
909
910Q=@
911E=echo
912ifeq ($(V), 1)
913Q=
914E=true
915endif
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800916ifeq ($(QUIET), 1)
917Q=@
918E=true
919endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700920
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800921ifdef CONFIG_CODE_COVERAGE
922%.o: %.c
923 @$(E) " CC " $<
924 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<)
925else
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700926%.o: %.c
927 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
928 @$(E) " CC " $<
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800929endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700930
931verify_config:
932 @if [ ! -r .config ]; then \
933 echo 'Building hostapd requires a configuration file'; \
934 echo '(.config). See README for more instructions. You can'; \
935 echo 'run "cp defconfig .config" to create an example'; \
936 echo 'configuration.'; \
937 exit 1; \
938 fi
939
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800940$(DESTDIR)$(BINDIR)/%: %
941 install -D $(<) $(@)
942
943install: $(addprefix $(DESTDIR)$(BINDIR)/,$(ALL))
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700944
945../src/drivers/build.hostapd:
946 @if [ -f ../src/drivers/build.wpa_supplicant ]; then \
947 $(MAKE) -C ../src/drivers clean; \
948 fi
949 @touch ../src/drivers/build.hostapd
950
951BCHECK=../src/drivers/build.hostapd
952
953hostapd: $(BCHECK) $(OBJS)
954 $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
955 @$(E) " LD " $@
956
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700957ifdef CONFIG_WPA_TRACE
958OBJS_c += ../src/utils/trace.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700959endif
960hostapd_cli: $(OBJS_c)
961 $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
962 @$(E) " LD " $@
963
964NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) ../src/crypto/md5.o
965ifdef NEED_RC4
966ifdef CONFIG_INTERNAL_RC4
967NOBJS += ../src/crypto/rc4.o
968endif
969endif
970ifdef CONFIG_INTERNAL_MD5
971NOBJS += ../src/crypto/md5-internal.o
972endif
973NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o
974NOBJS += ../src/utils/wpa_debug.o
975NOBJS += ../src/utils/wpabuf.o
976ifdef CONFIG_WPA_TRACE
977NOBJS += ../src/utils/trace.o
978LIBS_n += -lbfd
979endif
980ifdef TLS_FUNCS
981LIBS_n += -lcrypto
982endif
983
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700984HOBJS += 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
985HOBJS += ../src/crypto/aes-encblock.o
986ifdef CONFIG_INTERNAL_AES
987HOBJS += ../src/crypto/aes-internal.o
988HOBJS += ../src/crypto/aes-internal-enc.o
989endif
990
991nt_password_hash: $(NOBJS)
992 $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
993 @$(E) " LD " $@
994
995hlr_auc_gw: $(HOBJS)
996 $(Q)$(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
997 @$(E) " LD " $@
998
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -0800999lcov-html:
1000 lcov -c -d .. > lcov.info
1001 genhtml lcov.info --output-directory lcov-html
1002
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001003clean:
1004 $(MAKE) -C ../src clean
1005 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
Dmitry Shmidt01904cf2013-12-05 11:08:35 -08001006 rm -f *.d *.gcno *.gcda *.gcov
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001007 rm -f lcov.info
1008 rm -rf lcov-html
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001009
1010-include $(OBJS:%.o=%.d)