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