]> git.ipfire.org Git - thirdparty/hostap.git/blame - hostapd/Makefile
Change EAPOL authenticator hapd pointers to be opaque context
[thirdparty/hostap.git] / hostapd / Makefile
CommitLineData
6fc6879b
JM
1ifndef CC
2CC=gcc
3endif
4
5ifndef CFLAGS
6CFLAGS = -MMD -O2 -Wall -g
7endif
8
9# define HOSTAPD_DUMP_STATE to include SIGUSR1 handler for dumping state to
10# a file (undefine it, if you want to save in binary size)
11CFLAGS += -DHOSTAPD_DUMP_STATE
12
13CFLAGS += -I../src
14CFLAGS += -I../src/crypto
15CFLAGS += -I../src/utils
6fc6879b
JM
16
17# Uncomment following line and set the path to your kernel tree include
18# directory if your C library does not include all header files.
19# CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include
20
21-include .config
22
23ifndef CONFIG_OS
24ifdef CONFIG_NATIVE_WINDOWS
25CONFIG_OS=win32
26else
27CONFIG_OS=unix
28endif
29endif
30
31ifeq ($(CONFIG_OS), internal)
32CFLAGS += -DOS_NO_C_LIB_DEFINES
33endif
34
35ifdef CONFIG_NATIVE_WINDOWS
36CFLAGS += -DCONFIG_NATIVE_WINDOWS
37LIBS += -lws2_32
38endif
39
5c333467 40OBJS = hostapd.o main.o ieee802_1x.o eapol_sm.o \
f88bd288 41 config.o ieee802_11_auth.o \
7fd46d46 42 sta_info.o wpa.o \
c5121837 43 preauth.o pmksa_cache.o \
b5b969e9 44 drv_callbacks.o \
81897f4c 45 tkip_countermeasures.o \
38b46286
JM
46 mlme.o wpa_auth_ie.o
47NEED_RC4=y
48NEED_AES=y
49NEED_MD5=y
50NEED_SHA1=y
6fc6879b 51
c5121837
JM
52OBJS += ../src/drivers/drivers.o
53OBJS += ../src/drivers/scan_helpers.o
54CFLAGS += -DHOSTAPD
55
6fc6879b
JM
56OBJS += ../src/utils/eloop.o
57OBJS += ../src/utils/common.o
58OBJS += ../src/utils/wpa_debug.o
59OBJS += ../src/utils/wpabuf.o
60OBJS += ../src/utils/os_$(CONFIG_OS).o
61OBJS += ../src/utils/ip_addr.o
62
cb7b04c8 63OBJS += ../src/common/ieee802_11_common.o
6fc6879b
JM
64OBJS += ../src/common/wpa_common.o
65
f88bd288
JM
66ifdef CONFIG_NO_RADIUS
67CFLAGS += -DCONFIG_NO_RADIUS
68CONFIG_NO_ACCOUNTING=y
69else
6fc6879b
JM
70OBJS += ../src/radius/radius.o
71OBJS += ../src/radius/radius_client.o
f88bd288
JM
72endif
73
74ifdef CONFIG_NO_ACCOUNTING
75CFLAGS += -DCONFIG_NO_ACCOUNTING
76else
77OBJS += accounting.o
78endif
6fc6879b 79
30b32314
JM
80ifdef CONFIG_NO_VLAN
81CFLAGS += -DCONFIG_NO_VLAN
82else
83OBJS += vlan_init.o
84endif
85
7fd46d46
JM
86ifdef CONFIG_NO_CTRL_IFACE
87CFLAGS += -DCONFIG_NO_CTRL_IFACE
88else
89OBJS += ctrl_iface.o
ded30a6b 90OBJS += ctrl_iface_ap.o
7fd46d46
JM
91endif
92
6fc6879b 93OBJS += ../src/crypto/md5.o
6fc6879b 94
6fc6879b
JM
95CFLAGS += -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX
96
97ifdef CONFIG_IAPP
98CFLAGS += -DCONFIG_IAPP
99OBJS += iapp.o
100endif
101
102ifdef CONFIG_RSN_PREAUTH
103CFLAGS += -DCONFIG_RSN_PREAUTH
104CONFIG_L2_PACKET=y
105endif
106
107ifdef CONFIG_PEERKEY
108CFLAGS += -DCONFIG_PEERKEY
109OBJS += peerkey.o
110endif
111
112ifdef CONFIG_IEEE80211W
113CFLAGS += -DCONFIG_IEEE80211W
114NEED_SHA256=y
279d859b 115NEED_AES_OMAC1=y
6fc6879b
JM
116endif
117
118ifdef CONFIG_IEEE80211R
119CFLAGS += -DCONFIG_IEEE80211R
120OBJS += wpa_ft.o
121NEED_SHA256=y
279d859b 122NEED_AES_OMAC1=y
786c4fee 123NEED_AES_UNWRAP=y
6fc6879b
JM
124endif
125
de9289c8
JM
126ifdef CONFIG_IEEE80211N
127CFLAGS += -DCONFIG_IEEE80211N
128endif
129
e7cd16ca
JB
130include ../src/drivers/drivers.mak
131OBJS += $(DRV_AP_OBJS)
132CFLAGS += $(DRV_AP_CFLAGS)
133LDFLAGS += $(DRV_AP_LDFLAGS)
134LIBS += $(DRV_AP_LIBS)
d64dabee 135
6fc6879b
JM
136ifdef CONFIG_L2_PACKET
137ifdef CONFIG_DNET_PCAP
138ifdef CONFIG_L2_FREEBSD
139LIBS += -lpcap
140OBJS += ../src/l2_packet/l2_packet_freebsd.o
141else
142LIBS += -ldnet -lpcap
143OBJS += ../src/l2_packet/l2_packet_pcap.o
144endif
145else
146OBJS += ../src/l2_packet/l2_packet_linux.o
147endif
477df071
JM
148else
149OBJS += ../src/l2_packet/l2_packet_none.o
6fc6879b
JM
150endif
151
152
153ifdef CONFIG_EAP_MD5
1e5839e0 154CFLAGS += -DEAP_SERVER_MD5
6fc6879b
JM
155OBJS += ../src/eap_server/eap_md5.o
156CHAP=y
157endif
158
159ifdef CONFIG_EAP_TLS
1e5839e0 160CFLAGS += -DEAP_SERVER_TLS
6fc6879b
JM
161OBJS += ../src/eap_server/eap_tls.o
162TLS_FUNCS=y
163endif
164
165ifdef CONFIG_EAP_PEAP
1e5839e0 166CFLAGS += -DEAP_SERVER_PEAP
6fc6879b 167OBJS += ../src/eap_server/eap_peap.o
2eeaa5c9 168OBJS += ../src/eap_common/eap_peap_common.o
6fc6879b 169TLS_FUNCS=y
6fc6879b
JM
170CONFIG_EAP_MSCHAPV2=y
171endif
172
173ifdef CONFIG_EAP_TTLS
1e5839e0 174CFLAGS += -DEAP_SERVER_TTLS
6fc6879b
JM
175OBJS += ../src/eap_server/eap_ttls.o
176TLS_FUNCS=y
177CHAP=y
178endif
179
180ifdef CONFIG_EAP_MSCHAPV2
1e5839e0 181CFLAGS += -DEAP_SERVER_MSCHAPV2
6fc6879b
JM
182OBJS += ../src/eap_server/eap_mschapv2.o
183MS_FUNCS=y
184endif
185
186ifdef CONFIG_EAP_GTC
1e5839e0 187CFLAGS += -DEAP_SERVER_GTC
6fc6879b
JM
188OBJS += ../src/eap_server/eap_gtc.o
189endif
190
191ifdef CONFIG_EAP_SIM
1e5839e0 192CFLAGS += -DEAP_SERVER_SIM
6fc6879b
JM
193OBJS += ../src/eap_server/eap_sim.o
194CONFIG_EAP_SIM_COMMON=y
bd4e9d03 195NEED_AES_CBC=y
6fc6879b
JM
196endif
197
198ifdef CONFIG_EAP_AKA
1e5839e0 199CFLAGS += -DEAP_SERVER_AKA
6fc6879b
JM
200OBJS += ../src/eap_server/eap_aka.o
201CONFIG_EAP_SIM_COMMON=y
36c88ec8 202NEED_SHA256=y
bd4e9d03 203NEED_AES_CBC=y
6fc6879b
JM
204endif
205
8c37556c 206ifdef CONFIG_EAP_AKA_PRIME
1e5839e0 207CFLAGS += -DEAP_SERVER_AKA_PRIME
8c37556c
JM
208endif
209
6fc6879b
JM
210ifdef CONFIG_EAP_SIM_COMMON
211OBJS += ../src/eap_common/eap_sim_common.o
212# Example EAP-SIM/AKA interface for GSM/UMTS authentication. This can be
213# replaced with another file implementating the interface specified in
214# eap_sim_db.h.
215OBJS += ../src/eap_server/eap_sim_db.o
216NEED_FIPS186_2_PRF=y
217endif
218
219ifdef CONFIG_EAP_PAX
1e5839e0 220CFLAGS += -DEAP_SERVER_PAX
6fc6879b
JM
221OBJS += ../src/eap_server/eap_pax.o ../src/eap_common/eap_pax_common.o
222endif
223
224ifdef CONFIG_EAP_PSK
1e5839e0 225CFLAGS += -DEAP_SERVER_PSK
6fc6879b 226OBJS += ../src/eap_server/eap_psk.o ../src/eap_common/eap_psk_common.o
bd4e9d03
JM
227NEED_AES_OMAC1=y
228NEED_AES_ENCBLOCK=y
229NEED_AES_EAX=y
6fc6879b
JM
230endif
231
232ifdef CONFIG_EAP_SAKE
1e5839e0 233CFLAGS += -DEAP_SERVER_SAKE
6fc6879b
JM
234OBJS += ../src/eap_server/eap_sake.o ../src/eap_common/eap_sake_common.o
235endif
236
237ifdef CONFIG_EAP_GPSK
1e5839e0 238CFLAGS += -DEAP_SERVER_GPSK
6fc6879b
JM
239OBJS += ../src/eap_server/eap_gpsk.o ../src/eap_common/eap_gpsk_common.o
240ifdef CONFIG_EAP_GPSK_SHA256
1e5839e0 241CFLAGS += -DEAP_SERVER_GPSK_SHA256
6fc6879b
JM
242endif
243NEED_SHA256=y
bd4e9d03 244NEED_AES_OMAC1=y
6fc6879b
JM
245endif
246
247ifdef CONFIG_EAP_VENDOR_TEST
1e5839e0 248CFLAGS += -DEAP_SERVER_VENDOR_TEST
6fc6879b
JM
249OBJS += ../src/eap_server/eap_vendor_test.o
250endif
251
6fc6879b 252ifdef CONFIG_EAP_FAST
1e5839e0 253CFLAGS += -DEAP_SERVER_FAST
6fc6879b 254OBJS += ../src/eap_server/eap_fast.o
a4819630 255OBJS += ../src/eap_common/eap_fast_common.o
6fc6879b
JM
256TLS_FUNCS=y
257NEED_T_PRF=y
786c4fee 258NEED_AES_UNWRAP=y
6fc6879b
JM
259endif
260
ad08c363 261ifdef CONFIG_WPS
1e5839e0 262CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
ad08c363
JM
263OBJS += ../src/utils/uuid.o
264OBJS += wps_hostapd.o
265OBJS += ../src/eap_server/eap_wsc.o ../src/eap_common/eap_wsc_common.o
266OBJS += ../src/wps/wps.o
267OBJS += ../src/wps/wps_common.o
7d7b8e96
JM
268OBJS += ../src/wps/wps_attr_parse.o
269OBJS += ../src/wps/wps_attr_build.o
270OBJS += ../src/wps/wps_attr_process.o
ad08c363
JM
271OBJS += ../src/wps/wps_dev_attr.o
272OBJS += ../src/wps/wps_enrollee.o
273OBJS += ../src/wps/wps_registrar.o
274NEED_DH_GROUPS=y
275NEED_SHA256=y
d9f56262 276NEED_BASE64=y
0dba0175 277NEED_AES_CBC=y
38b46286 278NEED_MODEXP=y
f620268f 279
390cd310
JM
280ifdef CONFIG_WPS_UFD
281CFLAGS += -DCONFIG_WPS_UFD
282OBJS += ../src/wps/wps_ufd.o
116f7bb0
JM
283NEED_WPS_OOB=y
284endif
285
e1ee6b60
MH
286ifdef CONFIG_WPS_NFC
287CFLAGS += -DCONFIG_WPS_NFC
288OBJS += ../src/wps/ndef.o
289OBJS += ../src/wps/wps_nfc.o
290NEED_WPS_OOB=y
291ifdef CONFIG_WPS_NFC_PN531
9cf548c0 292PN531_PATH ?= /usr/local/src/nfc
e1ee6b60
MH
293CFLAGS += -DCONFIG_WPS_NFC_PN531
294CFLAGS += -I${PN531_PATH}/inc
295OBJS += ../src/wps/wps_nfc_pn531.o
296LIBS += ${PN531_PATH}/lib/wpsnfc.dll
297LIBS += ${PN531_PATH}/lib/libnfc_mapping_pn53x.dll
298endif
299endif
300
116f7bb0
JM
301ifdef NEED_WPS_OOB
302CFLAGS += -DCONFIG_WPS_OOB
390cd310
JM
303endif
304
f620268f
JM
305ifdef CONFIG_WPS_UPNP
306CFLAGS += -DCONFIG_WPS_UPNP
307OBJS += ../src/wps/wps_upnp.o
308OBJS += ../src/wps/wps_upnp_ssdp.o
309OBJS += ../src/wps/wps_upnp_web.o
310OBJS += ../src/wps/wps_upnp_event.o
0b40d033 311OBJS += ../src/wps/upnp_xml.o
f620268f 312OBJS += ../src/wps/httpread.o
092794f4 313OBJS += ../src/wps/http_client.o
b905c4a3 314OBJS += ../src/wps/http_server.o
f620268f
JM
315endif
316
ad08c363
JM
317endif
318
6fc6879b 319ifdef CONFIG_EAP_IKEV2
1e5839e0 320CFLAGS += -DEAP_SERVER_IKEV2
6fc6879b
JM
321OBJS += ../src/eap_server/eap_ikev2.o ../src/eap_server/ikev2.o
322OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
323NEED_DH_GROUPS=y
dd01b1ff 324NEED_DH_GROUPS_ALL=y
38b46286 325NEED_MODEXP=y
6fc6879b
JM
326endif
327
da08a7c7 328ifdef CONFIG_EAP_TNC
1e5839e0 329CFLAGS += -DEAP_SERVER_TNC
da08a7c7
JM
330OBJS += ../src/eap_server/eap_tnc.o
331OBJS += ../src/eap_server/tncs.o
332NEED_BASE64=y
7d737d6b 333ifndef CONFIG_DRIVER_BSD
b77eab28 334LIBS += -ldl
da08a7c7 335endif
7d737d6b 336endif
da08a7c7 337
6fc6879b
JM
338# Basic EAP functionality is needed for EAPOL
339OBJS += ../src/eap_server/eap.o
340OBJS += ../src/eap_common/eap_common.o
341OBJS += ../src/eap_server/eap_methods.o
342OBJS += ../src/eap_server/eap_identity.o
343
344ifdef CONFIG_EAP
345CFLAGS += -DEAP_SERVER
346endif
347
71374569
JM
348ifdef CONFIG_PKCS12
349CFLAGS += -DPKCS12_FUNCS
350endif
351
352ifdef MS_FUNCS
353OBJS += ../src/crypto/ms_funcs.o
38b46286
JM
354NEED_DES=y
355NEED_MD4=y
71374569
JM
356endif
357
358ifdef CHAP
359OBJS += ../src/eap_common/chap.o
360endif
361
6fc6879b 362ifdef TLS_FUNCS
38b46286 363NEED_DES=y
6fc6879b
JM
364# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, and EAP_TTLS)
365CFLAGS += -DEAP_TLS_FUNCS
366OBJS += ../src/eap_server/eap_tls_common.o
815d2189 367NEED_TLS_PRF=y
000bbd77
JM
368endif
369
38b46286
JM
370ifndef CONFIG_TLS
371CONFIG_TLS=openssl
372endif
373
6fc6879b 374ifeq ($(CONFIG_TLS), openssl)
38b46286 375ifdef TLS_FUNCS
6fc6879b 376OBJS += ../src/crypto/tls_openssl.o
38b46286
JM
377LIBS += -lssl
378endif
379OBJS += ../src/crypto/crypto_openssl.o
380HOBJS += ../src/crypto/crypto_openssl.o
381ifdef NEED_FIPS186_2_PRF
382OBJS += ../src/crypto/fips_prf_openssl.o
383endif
384LIBS += -lcrypto
6fc6879b
JM
385LIBS_h += -lcrypto
386endif
38b46286 387
6fc6879b 388ifeq ($(CONFIG_TLS), gnutls)
38b46286 389ifdef TLS_FUNCS
6fc6879b 390OBJS += ../src/crypto/tls_gnutls.o
38b46286 391LIBS += -lgnutls -lgpg-error
6fc6879b
JM
392ifdef CONFIG_GNUTLS_EXTRA
393CFLAGS += -DCONFIG_GNUTLS_EXTRA
394LIBS += -lgnutls-extra
395endif
000bbd77 396endif
38b46286
JM
397OBJS += ../src/crypto/crypto_gnutls.o
398HOBJS += ../src/crypto/crypto_gnutls.o
399ifdef NEED_FIPS186_2_PRF
400OBJS += ../src/crypto/fips_prf_gnutls.o
401endif
402LIBS += -lgcrypt
403LIBS_h += -lgcrypt
404CONFIG_INTERNAL_SHA256=y
405CONFIG_INTERNAL_RC4=y
406CONFIG_INTERNAL_DH_GROUP5=y
407endif
408
000bbd77 409ifeq ($(CONFIG_TLS), schannel)
38b46286 410ifdef TLS_FUNCS
000bbd77
JM
411OBJS += ../src/crypto/tls_schannel.o
412endif
38b46286
JM
413OBJS += ../src/crypto/crypto_cryptoapi.o
414OBJS_p += ../src/crypto/crypto_cryptoapi.o
415CONFIG_INTERNAL_SHA256=y
416CONFIG_INTERNAL_RC4=y
417CONFIG_INTERNAL_DH_GROUP5=y
418endif
419
000bbd77 420ifeq ($(CONFIG_TLS), nss)
38b46286 421ifdef TLS_FUNCS
000bbd77 422OBJS += ../src/crypto/tls_nss.o
38b46286
JM
423LIBS += -lssl3
424endif
425OBJS += ../src/crypto/crypto_nss.o
426ifdef NEED_FIPS186_2_PRF
427OBJS += ../src/crypto/fips_prf_nss.o
428endif
429LIBS += -lnss3
000bbd77 430LIBS_h += -lnss3
38b46286
JM
431CONFIG_INTERNAL_MD4=y
432CONFIG_INTERNAL_DH_GROUP5=y
000bbd77 433endif
38b46286 434
6fc6879b 435ifeq ($(CONFIG_TLS), internal)
38b46286
JM
436ifndef CONFIG_CRYPTO
437CONFIG_CRYPTO=internal
438endif
439ifdef TLS_FUNCS
6fc6879b 440OBJS += ../src/crypto/tls_internal.o
38b46286
JM
441OBJS += ../src/tls/tlsv1_common.o
442OBJS += ../src/tls/tlsv1_record.o
443OBJS += ../src/tls/tlsv1_cred.o
444OBJS += ../src/tls/tlsv1_server.o
445OBJS += ../src/tls/tlsv1_server_write.o
446OBJS += ../src/tls/tlsv1_server_read.o
447OBJS += ../src/tls/asn1.o
448OBJS += ../src/tls/rsa.o
449OBJS += ../src/tls/x509v3.o
f1739bac
JM
450OBJS += ../src/tls/pkcs1.o
451OBJS += ../src/tls/pkcs5.o
452OBJS += ../src/tls/pkcs8.o
6fc6879b 453NEED_BASE64=y
38b46286
JM
454NEED_TLS_PRF=y
455NEED_MODEXP=y
6fc6879b
JM
456CFLAGS += -DCONFIG_TLS_INTERNAL
457CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
6fc6879b 458endif
38b46286
JM
459ifdef NEED_MODEXP
460OBJS += ../src/tls/bignum.o
6fc6879b 461endif
6fc6879b 462ifeq ($(CONFIG_CRYPTO), libtomcrypt)
38b46286
JM
463CFLAGS += -DCONFIG_INTERNAL_X509
464OBJS += ../src/crypto/crypto_libtomcrypt.o
6fc6879b 465LIBS += -ltomcrypt -ltfm
000bbd77 466LIBS_h += -ltomcrypt -ltfm
6fc6879b 467CONFIG_INTERNAL_SHA256=y
ac73690c 468CONFIG_INTERNAL_RC4=y
f042122a 469CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
470endif
471ifeq ($(CONFIG_CRYPTO), internal)
38b46286
JM
472CFLAGS += -DCONFIG_INTERNAL_X509
473OBJS += ../src/crypto/crypto_internal.o
73d0ad78 474NEED_AES_DEC=y
6fc6879b 475CFLAGS += -DCONFIG_CRYPTO_INTERNAL
b63303b8
JM
476ifdef CONFIG_INTERNAL_LIBTOMMATH
477CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
478ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
479CFLAGS += -DLTM_FAST
480endif
481else
482LIBS += -ltommath
000bbd77 483LIBS_h += -ltommath
b63303b8 484endif
6fc6879b
JM
485CONFIG_INTERNAL_AES=y
486CONFIG_INTERNAL_DES=y
487CONFIG_INTERNAL_SHA1=y
488CONFIG_INTERNAL_MD4=y
489CONFIG_INTERNAL_MD5=y
490CONFIG_INTERNAL_SHA256=y
ac73690c 491CONFIG_INTERNAL_RC4=y
f042122a 492CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 493endif
38b46286
JM
494ifeq ($(CONFIG_CRYPTO), cryptoapi)
495OBJS += ../src/crypto/crypto_cryptoapi.o
496OBJS_p += ../src/crypto/crypto_cryptoapi.o
497CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
498CONFIG_INTERNAL_SHA256=y
499CONFIG_INTERNAL_RC4=y
6fc6879b 500endif
38b46286
JM
501endif
502
503ifeq ($(CONFIG_TLS), none)
504ifdef TLS_FUNCS
505OBJS += ../src/crypto/tls_none.o
506CFLAGS += -DEAP_TLS_NONE
6fc6879b
JM
507CONFIG_INTERNAL_AES=y
508CONFIG_INTERNAL_SHA1=y
509CONFIG_INTERNAL_MD5=y
38b46286
JM
510endif
511OBJS += ../src/crypto/crypto_none.o
512OBJS_p += ../src/crypto/crypto_none.o
513CONFIG_INTERNAL_SHA256=y
ac73690c 514CONFIG_INTERNAL_RC4=y
6fc6879b
JM
515endif
516
38b46286
JM
517ifndef TLS_FUNCS
518OBJS += ../src/crypto/tls_none.o
519ifeq ($(CONFIG_TLS), internal)
520CONFIG_INTERNAL_AES=y
521CONFIG_INTERNAL_SHA1=y
522CONFIG_INTERNAL_MD5=y
523CONFIG_INTERNAL_RC4=y
524endif
525endif
526
527ifdef NEED_MODEXP
528CFLAGS += -DCONFIG_MODEXP
529endif
530
531AESOBJS = # none so far
6fc6879b 532ifdef CONFIG_INTERNAL_AES
27da6d4a 533AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-enc.o
6fc6879b 534endif
38b46286
JM
535
536AESOBJS += ../src/crypto/aes-wrap.o
bd4e9d03 537ifdef NEED_AES_EAX
38b46286 538AESOBJS += ../src/crypto/aes-eax.o
bd4e9d03
JM
539NEED_AES_CTR=y
540endif
541ifdef NEED_AES_CTR
542AESOBJS += ../src/crypto/aes-ctr.o
543endif
544ifdef NEED_AES_ENCBLOCK
38b46286 545AESOBJS += ../src/crypto/aes-encblock.o
bd4e9d03
JM
546endif
547ifdef NEED_AES_OMAC1
38b46286 548AESOBJS += ../src/crypto/aes-omac1.o
bd4e9d03
JM
549endif
550ifdef NEED_AES_UNWRAP
279d859b 551NEED_AES_DEC=y
38b46286
JM
552AESOBJS += ../src/crypto/aes-unwrap.o
553endif
554ifdef NEED_AES_CBC
279d859b
MH
555NEED_AES_DEC=y
556AESOBJS += ../src/crypto/aes-cbc.o
557endif
558ifdef NEED_AES_DEC
38b46286
JM
559ifdef CONFIG_INTERNAL_AES
560AESOBJS += ../src/crypto/aes-internal-dec.o
561endif
38b46286
JM
562endif
563ifdef NEED_AES
564OBJS += $(AESOBJS)
565endif
566
567ifdef NEED_SHA1
568SHA1OBJS += ../src/crypto/sha1.o
6fc6879b 569ifdef CONFIG_INTERNAL_SHA1
6f693b5d 570SHA1OBJS += ../src/crypto/sha1-internal.o
05edfe29 571ifdef NEED_FIPS186_2_PRF
6f693b5d 572SHA1OBJS += ../src/crypto/fips_prf_internal.o
05edfe29 573endif
6fc6879b 574endif
38b46286
JM
575SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
576ifdef NEED_T_PRF
577SHA1OBJS += ../src/crypto/sha1-tprf.o
578endif
579ifdef NEED_TLS_PRF
580SHA1OBJS += ../src/crypto/sha1-tlsprf.o
581endif
582endif
583
584ifdef NEED_SHA1
585OBJS += $(SHA1OBJS)
586endif
587
588ifdef NEED_MD5
6fc6879b 589ifdef CONFIG_INTERNAL_MD5
ad01a531 590OBJS += ../src/crypto/md5-internal.o
6fc6879b 591endif
38b46286
JM
592endif
593
594ifdef NEED_MD4
6fc6879b 595ifdef CONFIG_INTERNAL_MD4
bd4e2895 596OBJS += ../src/crypto/md4-internal.o
6fc6879b 597endif
38b46286
JM
598endif
599
600ifdef NEED_DES
6fc6879b 601ifdef CONFIG_INTERNAL_DES
657f0381 602OBJS += ../src/crypto/des-internal.o
6fc6879b 603endif
38b46286
JM
604endif
605
606ifdef NEED_RC4
ac73690c
JM
607ifdef CONFIG_INTERNAL_RC4
608OBJS += ../src/crypto/rc4.o
609endif
38b46286 610endif
6fc6879b
JM
611
612ifdef NEED_SHA256
613OBJS += ../src/crypto/sha256.o
598a792d
JB
614ifdef CONFIG_INTERNAL_SHA256
615OBJS += ../src/crypto/sha256-internal.o
616endif
6fc6879b
JM
617endif
618
f042122a 619ifdef CONFIG_INTERNAL_DH_GROUP5
6fc6879b
JM
620ifdef NEED_DH_GROUPS
621OBJS += ../src/crypto/dh_groups.o
f042122a 622OBJS += ../src/crypto/dh_group5.o
dd01b1ff
JM
623ifdef NEED_DH_GROUPS_ALL
624CFLAGS += -DALL_DH_GROUPS
625endif
6fc6879b 626endif
f042122a
JM
627else
628ifdef NEED_DH_GROUPS_ALL
629OBJS += ../src/crypto/dh_groups.o
630CFLAGS += -DALL_DH_GROUPS
631endif
632endif
6fc6879b 633
6fc6879b
JM
634ifdef CONFIG_RADIUS_SERVER
635CFLAGS += -DRADIUS_SERVER
636OBJS += ../src/radius/radius_server.o
637endif
638
639ifdef CONFIG_IPV6
640CFLAGS += -DCONFIG_IPV6
641endif
642
6affdaee
CZ
643ifdef CONFIG_DRIVER_RADIUS_ACL
644CFLAGS += -DCONFIG_DRIVER_RADIUS_ACL
645endif
646
6fc6879b
JM
647ifdef CONFIG_FULL_DYNAMIC_VLAN
648# define CONFIG_FULL_DYNAMIC_VLAN to have hostapd manipulate bridges
649# and vlan interfaces for the vlan feature.
650CFLAGS += -DCONFIG_FULL_DYNAMIC_VLAN
651endif
652
653ifdef NEED_BASE64
654OBJS += ../src/utils/base64.o
655endif
656
e7cd16ca 657ifdef NEED_AP_MLME
9c584c06 658OBJS += beacon.o wme.o ap_list.o ieee802_11.o
a9843f61 659OBJS += hw_features.o
fe6bdb77 660CFLAGS += -DNEED_AP_MLME
9c584c06
JM
661endif
662
03018d3e
JM
663ifdef CONFIG_NO_STDOUT_DEBUG
664CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
665endif
666
6fc6879b
JM
667ALL=hostapd hostapd_cli
668
669all: verify_config $(ALL)
670
b2840aaf
JB
671Q=@
672E=echo
673ifeq ($(V), 1)
674Q=
675E=true
676endif
677
678%.o: %.c
679 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
680 @$(E) " CC " $<
681
6fc6879b
JM
682verify_config:
683 @if [ ! -r .config ]; then \
684 echo 'Building hostapd requires a configuration file'; \
685 echo '(.config). See README for more instructions. You can'; \
686 echo 'run "cp defconfig .config" to create an example'; \
687 echo 'configuration.'; \
688 exit 1; \
689 fi
690
691install: all
692 for i in $(ALL); do cp $$i /usr/local/bin/$$i; done
693
ba30964b
JM
694../src/drivers/build.hostapd:
695 @if [ -e ../src/drivers/build.wpa_supplicant ]; then \
696 $(MAKE) -C ../src/drivers clean; \
697 fi
698 @touch ../src/drivers/build.hostapd
699
700BCHECK=../src/drivers/build.hostapd
701
702hostapd: $(BCHECK) $(OBJS)
466940c5 703 $(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
6fc6879b
JM
704
705OBJS_c = hostapd_cli.o ../src/common/wpa_ctrl.o ../src/utils/os_$(CONFIG_OS).o
706hostapd_cli: $(OBJS_c)
466940c5 707 $(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c)
6fc6879b 708
6f693b5d 709NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) ../src/crypto/rc4.o ../src/crypto/md5.o
ad01a531
JB
710ifdef CONFIG_INTERNAL_MD5
711NOBJS += ../src/crypto/md5-internal.o
712endif
6fc6879b
JM
713NOBJS += ../src/crypto/crypto_openssl.o ../src/utils/os_$(CONFIG_OS).o
714ifdef TLS_FUNCS
715LIBS_n += -lcrypto
716endif
717
1d68e4c7 718HOBJS += ../src/hlr_auc_gw/hlr_auc_gw.o ../src/utils/common.o ../src/utils/wpa_debug.o ../src/utils/os_$(CONFIG_OS).o ../src/utils/wpabuf.o ../src/hlr_auc_gw/milenage.o
061971b5
JM
719HOBJS += ../src/crypto/aes-encblock.o
720ifdef CONFIG_INTERNAL_AES
721HOBJS += ../src/crypto/aes-internal.o
722HOBJS += ../src/crypto/aes-internal-enc.o
723endif
246157cb 724
6fc6879b 725nt_password_hash: $(NOBJS)
466940c5 726 $(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
6fc6879b
JM
727
728hlr_auc_gw: $(HOBJS)
466940c5 729 $(CC) $(LDFLAGS) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
6fc6879b
JM
730
731clean:
732 $(MAKE) -C ../src clean
733 rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
734 rm -f *.d
735
4c9e03e0
JB
736TEST_SRC_MILENAGE = ../src/hlr_auc_gw/milenage.c ../src/crypto/aes-internal.c ../src/crypto/aes-internal-dec.c \
737 ../src/crypto/aes-cbc.c \
738 ../src/crypto/aes-ctr.c \
739 ../src/crypto/aes-eax.c \
740 ../src/crypto/aes-encblock.c \
741 ../src/crypto/aes-internal-enc.c \
742 ../src/crypto/aes-omac1.c \
743 ../src/crypto/aes-unwrap.c \
744 ../src/crypto/aes-wrap.c \
381fcbc9 745 ../src/utils/common.c ../src/utils/wpa_debug.o ../src/utils/os_$(CONFIG_OS).c
6fc6879b 746test-milenage: $(TEST_SRC_MILENAGE)
466940c5 747 $(CC) $(LDFLAGS) -o test-milenage -Wall -Werror $(TEST_SRC_MILENAGE) \
246157cb 748 -DTEST_MAIN_MILENAGE -I. \
6fc6879b
JM
749 -I../src/crypto -I../src/utils
750 ./test-milenage
751 rm test-milenage
752
6fc6879b 753-include $(OBJS:%.o=%.d)