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