]> git.ipfire.org Git - thirdparty/hostap.git/blame - wpa_supplicant/Makefile
Add CONFIG_WPS_REG_DISABLE_OPEN to defconfig
[thirdparty/hostap.git] / wpa_supplicant / Makefile
CommitLineData
6fc6879b
JM
1ifndef CC
2CC=gcc
3endif
4
5ifndef CFLAGS
6CFLAGS = -MMD -O2 -Wall -g
7endif
8
d94d4baf
DM
9export LIBDIR ?= /usr/local/lib/
10export BINDIR ?= /usr/local/sbin/
572a171f 11PKG_CONFIG ?= pkg-config
d94d4baf 12
6fc6879b 13CFLAGS += -I../src
6fc6879b 14CFLAGS += -I../src/utils
6fc6879b 15
62b98282
JM
16-include .config
17
18ALL=wpa_supplicant wpa_cli
19
20ifndef CONFIG_NO_WPA_PASSPHRASE
21ALL += wpa_passphrase
22endif
6fc6879b 23
f0573c79
HG
24ALL += systemd/wpa_supplicant.service
25ALL += systemd/wpa_supplicant@.service
26ALL += systemd/wpa_supplicant-nl80211@.service
27ALL += systemd/wpa_supplicant-wired@.service
28ALL += dbus/fi.epitest.hostap.WPASupplicant.service
29ALL += dbus/fi.w1.wpa_supplicant1.service
30
31
6fc6879b
JM
32all: verify_config $(ALL) dynamic_eap_methods
33
34verify_config:
35 @if [ ! -r .config ]; then \
36 echo 'Building wpa_supplicant requires a configuration file'; \
37 echo '(.config). See README for more instructions. You can'; \
38 echo 'run "cp defconfig .config" to create an example'; \
39 echo 'configuration.'; \
40 exit 1; \
41 fi
42
43mkconfig:
5008cb5e 44 @if [ -f .config ]; then \
6fc6879b
JM
45 echo '.config exists - did not replace it'; \
46 exit 1; \
47 fi
48 echo CONFIG_DRIVER_HOSTAP=y >> .config
49 echo CONFIG_DRIVER_WEXT=y >> .config
6fc6879b
JM
50
51install: all
d94d4baf
DM
52 mkdir -p $(DESTDIR)$(BINDIR)
53 for i in $(ALL); do cp $$i $(DESTDIR)$(BINDIR)/$$i; done
54 $(MAKE) -C ../src install
6fc6879b
JM
55
56OBJS = config.o
8bac466b 57OBJS += notify.o
34359a3f 58OBJS += bss.o
12760815 59OBJS += eap_register.o
6fc6879b
JM
60OBJS += ../src/utils/common.o
61OBJS += ../src/utils/wpa_debug.o
62OBJS += ../src/utils/wpabuf.o
6fc6879b
JM
63OBJS_p = wpa_passphrase.o
64OBJS_p += ../src/utils/common.o
65OBJS_p += ../src/utils/wpa_debug.o
f042122a 66OBJS_p += ../src/utils/wpabuf.o
6fc6879b 67OBJS_c = wpa_cli.o ../src/common/wpa_ctrl.o
aee680e8 68OBJS_c += ../src/utils/wpa_debug.o
6fc6879b 69
6fc6879b
JM
70ifndef CONFIG_OS
71ifdef CONFIG_NATIVE_WINDOWS
72CONFIG_OS=win32
73else
74CONFIG_OS=unix
75endif
76endif
77
78ifeq ($(CONFIG_OS), internal)
79CFLAGS += -DOS_NO_C_LIB_DEFINES
80endif
81
82OBJS += ../src/utils/os_$(CONFIG_OS).o
83OBJS_p += ../src/utils/os_$(CONFIG_OS).o
84OBJS_c += ../src/utils/os_$(CONFIG_OS).o
85
930f704a
JM
86ifdef CONFIG_WPA_TRACE
87CFLAGS += -DWPA_TRACE
88OBJS += ../src/utils/trace.o
fb4baa68
JM
89OBJS_p += ../src/utils/trace.o
90OBJS_c += ../src/utils/trace.o
d5695081 91OBJS_priv += ../src/utils/trace.o
f2f7d965
JM
92LDFLAGS += -rdynamic
93CFLAGS += -funwind-tables
94ifdef CONFIG_WPA_TRACE_BFD
95CFLAGS += -DWPA_TRACE_BFD
96LIBS += -lbfd
97LIBS_p += -lbfd
98LIBS_c += -lbfd
99endif
930f704a
JM
100endif
101
6fc6879b
JM
102ifndef CONFIG_ELOOP
103CONFIG_ELOOP=eloop
104endif
105OBJS += ../src/utils/$(CONFIG_ELOOP).o
cd101567 106OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
6fc6879b
JM
107
108
109ifdef CONFIG_EAPOL_TEST
110CFLAGS += -Werror -DEAPOL_TEST
111endif
112
113ifndef CONFIG_BACKEND
114CONFIG_BACKEND=file
115endif
116
117ifeq ($(CONFIG_BACKEND), file)
118OBJS += config_file.o
119ifndef CONFIG_NO_CONFIG_BLOBS
120NEED_BASE64=y
121endif
122CFLAGS += -DCONFIG_BACKEND_FILE
123endif
124
125ifeq ($(CONFIG_BACKEND), winreg)
126OBJS += config_winreg.o
127endif
128
129ifeq ($(CONFIG_BACKEND), none)
130OBJS += config_none.o
131endif
132
133ifdef CONFIG_NO_CONFIG_WRITE
134CFLAGS += -DCONFIG_NO_CONFIG_WRITE
135endif
136
137ifdef CONFIG_NO_CONFIG_BLOBS
138CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
139endif
140
141ifdef CONFIG_NO_SCAN_PROCESSING
142CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
143endif
144
38b46286
JM
145ifdef CONFIG_IEEE80211W
146CFLAGS += -DCONFIG_IEEE80211W
147NEED_SHA256=y
279d859b 148NEED_AES_OMAC1=y
38b46286
JM
149endif
150
151ifdef CONFIG_IEEE80211R
152CFLAGS += -DCONFIG_IEEE80211R
153OBJS += ../src/rsn_supp/wpa_ft.o
154NEED_80211_COMMON=y
155NEED_SHA256=y
279d859b 156NEED_AES_OMAC1=y
38b46286
JM
157endif
158
281ff0aa
GP
159ifdef CONFIG_TDLS
160CFLAGS += -DCONFIG_TDLS
161OBJS += ../src/rsn_supp/tdls.o
162NEED_SHA256=y
163NEED_AES_OMAC1=y
164endif
165
38b46286
JM
166ifdef CONFIG_PEERKEY
167CFLAGS += -DCONFIG_PEERKEY
168endif
169
170ifndef CONFIG_NO_WPA
171OBJS += ../src/rsn_supp/wpa.o
172OBJS += ../src/rsn_supp/preauth.o
173OBJS += ../src/rsn_supp/pmksa_cache.o
174OBJS += ../src/rsn_supp/peerkey.o
175OBJS += ../src/rsn_supp/wpa_ie.o
176OBJS += ../src/common/wpa_common.o
177NEED_AES=y
178NEED_SHA1=y
179NEED_MD5=y
180NEED_RC4=y
181else
182CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2
183endif
184
185ifdef CONFIG_IBSS_RSN
3680a5db 186NEED_RSN_AUTHENTICATOR=y
38b46286
JM
187CFLAGS += -DCONFIG_IBSS_RSN
188OBJS += ibss_rsn.o
38b46286
JM
189endif
190
b22128ef
JM
191ifdef CONFIG_P2P
192OBJS += p2p_supplicant.o
193OBJS += ../src/p2p/p2p.o
194OBJS += ../src/p2p/p2p_utils.o
195OBJS += ../src/p2p/p2p_parse.o
196OBJS += ../src/p2p/p2p_build.o
197OBJS += ../src/p2p/p2p_go_neg.o
198OBJS += ../src/p2p/p2p_sd.o
199OBJS += ../src/p2p/p2p_pd.o
200OBJS += ../src/p2p/p2p_invitation.o
201OBJS += ../src/p2p/p2p_dev_disc.o
202OBJS += ../src/p2p/p2p_group.o
203OBJS += ../src/ap/p2p_hostapd.o
204CFLAGS += -DCONFIG_P2P
0c840c33 205NEED_GAS=y
24f6497c 206NEED_OFFCHANNEL=y
b22128ef
JM
207NEED_80211_COMMON=y
208ifdef CONFIG_P2P_STRICT
209CFLAGS += -DCONFIG_P2P_STRICT
210endif
211endif
212
46ee0427 213ifdef CONFIG_INTERWORKING
afc064fe 214OBJS += interworking.o
46ee0427
JM
215CFLAGS += -DCONFIG_INTERWORKING
216NEED_GAS=y
217endif
218
38b46286
JM
219ifdef CONFIG_NO_WPA2
220CFLAGS += -DCONFIG_NO_WPA2
221endif
222
e7cd16ca
JB
223include ../src/drivers/drivers.mak
224ifdef CONFIG_AP
225OBJS_d += $(DRV_BOTH_OBJS)
226CFLAGS += $(DRV_BOTH_CFLAGS)
227LDFLAGS += $(DRV_BOTH_LDFLAGS)
228LIBS += $(DRV_BOTH_LIBS)
229else
230NEED_AP_MLME=
231OBJS_d += $(DRV_WPA_OBJS)
232CFLAGS += $(DRV_WPA_CFLAGS)
233LDFLAGS += $(DRV_WPA_LDFLAGS)
234LIBS += $(DRV_WPA_LIBS)
e519314e
JW
235endif
236
6fc6879b
JM
237ifndef CONFIG_L2_PACKET
238CONFIG_L2_PACKET=linux
239endif
240
241OBJS_l2 += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o
242
243ifeq ($(CONFIG_L2_PACKET), pcap)
244ifdef CONFIG_WINPCAP
245CFLAGS += -DCONFIG_WINPCAP
246LIBS += -lwpcap -lpacket
247LIBS_w += -lwpcap
248else
249LIBS += -ldnet -lpcap
250endif
251endif
252
253ifeq ($(CONFIG_L2_PACKET), winpcap)
254LIBS += -lwpcap -lpacket
255LIBS_w += -lwpcap
256endif
257
258ifeq ($(CONFIG_L2_PACKET), freebsd)
259LIBS += -lpcap
260endif
261
262ifdef CONFIG_EAP_TLS
263# EAP-TLS
264ifeq ($(CONFIG_EAP_TLS), dyn)
265CFLAGS += -DEAP_TLS_DYNAMIC
266EAPDYN += ../src/eap_peer/eap_tls.so
267else
268CFLAGS += -DEAP_TLS
269OBJS += ../src/eap_peer/eap_tls.o
94d9bfd5 270OBJS_h += ../src/eap_server/eap_server_tls.o
6fc6879b
JM
271endif
272TLS_FUNCS=y
273CONFIG_IEEE8021X_EAPOL=y
274endif
275
276ifdef CONFIG_EAP_PEAP
277# EAP-PEAP
278ifeq ($(CONFIG_EAP_PEAP), dyn)
279CFLAGS += -DEAP_PEAP_DYNAMIC
280EAPDYN += ../src/eap_peer/eap_peap.so
281else
282CFLAGS += -DEAP_PEAP
283OBJS += ../src/eap_peer/eap_peap.o
2eeaa5c9 284OBJS += ../src/eap_common/eap_peap_common.o
94d9bfd5 285OBJS_h += ../src/eap_server/eap_server_peap.o
6fc6879b
JM
286endif
287TLS_FUNCS=y
288CONFIG_IEEE8021X_EAPOL=y
6fc6879b
JM
289endif
290
291ifdef CONFIG_EAP_TTLS
292# EAP-TTLS
293ifeq ($(CONFIG_EAP_TTLS), dyn)
294CFLAGS += -DEAP_TTLS_DYNAMIC
295EAPDYN += ../src/eap_peer/eap_ttls.so
296else
297CFLAGS += -DEAP_TTLS
298OBJS += ../src/eap_peer/eap_ttls.o
94d9bfd5 299OBJS_h += ../src/eap_server/eap_server_ttls.o
6fc6879b
JM
300endif
301MS_FUNCS=y
302TLS_FUNCS=y
303CHAP=y
304CONFIG_IEEE8021X_EAPOL=y
305endif
306
307ifdef CONFIG_EAP_MD5
308# EAP-MD5
309ifeq ($(CONFIG_EAP_MD5), dyn)
310CFLAGS += -DEAP_MD5_DYNAMIC
311EAPDYN += ../src/eap_peer/eap_md5.so
312else
313CFLAGS += -DEAP_MD5
314OBJS += ../src/eap_peer/eap_md5.o
94d9bfd5 315OBJS_h += ../src/eap_server/eap_server_md5.o
6fc6879b
JM
316endif
317CHAP=y
318CONFIG_IEEE8021X_EAPOL=y
319endif
320
321# backwards compatibility for old spelling
322ifdef CONFIG_MSCHAPV2
323ifndef CONFIG_EAP_MSCHAPV2
324CONFIG_EAP_MSCHAPV2=y
325endif
326endif
327
328ifdef CONFIG_EAP_MSCHAPV2
329# EAP-MSCHAPv2
330ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
331CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
332EAPDYN += ../src/eap_peer/eap_mschapv2.so
333EAPDYN += ../src/eap_peer/mschapv2.so
334else
335CFLAGS += -DEAP_MSCHAPv2
336OBJS += ../src/eap_peer/eap_mschapv2.o
337OBJS += ../src/eap_peer/mschapv2.o
94d9bfd5 338OBJS_h += ../src/eap_server/eap_server_mschapv2.o
6fc6879b
JM
339endif
340MS_FUNCS=y
341CONFIG_IEEE8021X_EAPOL=y
342endif
343
344ifdef CONFIG_EAP_GTC
345# EAP-GTC
346ifeq ($(CONFIG_EAP_GTC), dyn)
347CFLAGS += -DEAP_GTC_DYNAMIC
348EAPDYN += ../src/eap_peer/eap_gtc.so
349else
350CFLAGS += -DEAP_GTC
351OBJS += ../src/eap_peer/eap_gtc.o
94d9bfd5 352OBJS_h += ../src/eap_server/eap_server_gtc.o
6fc6879b
JM
353endif
354CONFIG_IEEE8021X_EAPOL=y
355endif
356
357ifdef CONFIG_EAP_OTP
358# EAP-OTP
359ifeq ($(CONFIG_EAP_OTP), dyn)
360CFLAGS += -DEAP_OTP_DYNAMIC
361EAPDYN += ../src/eap_peer/eap_otp.so
362else
363CFLAGS += -DEAP_OTP
364OBJS += ../src/eap_peer/eap_otp.o
365endif
366CONFIG_IEEE8021X_EAPOL=y
367endif
368
369ifdef CONFIG_EAP_SIM
370# EAP-SIM
371ifeq ($(CONFIG_EAP_SIM), dyn)
372CFLAGS += -DEAP_SIM_DYNAMIC
373EAPDYN += ../src/eap_peer/eap_sim.so
374else
375CFLAGS += -DEAP_SIM
376OBJS += ../src/eap_peer/eap_sim.o
94d9bfd5 377OBJS_h += ../src/eap_server/eap_server_sim.o
6fc6879b
JM
378endif
379CONFIG_IEEE8021X_EAPOL=y
380CONFIG_EAP_SIM_COMMON=y
bd4e9d03 381NEED_AES_CBC=y
6fc6879b
JM
382endif
383
384ifdef CONFIG_EAP_LEAP
385# EAP-LEAP
386ifeq ($(CONFIG_EAP_LEAP), dyn)
387CFLAGS += -DEAP_LEAP_DYNAMIC
388EAPDYN += ../src/eap_peer/eap_leap.so
389else
390CFLAGS += -DEAP_LEAP
391OBJS += ../src/eap_peer/eap_leap.o
392endif
393MS_FUNCS=y
394CONFIG_IEEE8021X_EAPOL=y
395endif
396
397ifdef CONFIG_EAP_PSK
398# EAP-PSK
399ifeq ($(CONFIG_EAP_PSK), dyn)
400CFLAGS += -DEAP_PSK_DYNAMIC
401EAPDYN += ../src/eap_peer/eap_psk.so
402else
403CFLAGS += -DEAP_PSK
404OBJS += ../src/eap_peer/eap_psk.o ../src/eap_common/eap_psk_common.o
94d9bfd5 405OBJS_h += ../src/eap_server/eap_server_psk.o
6fc6879b
JM
406endif
407CONFIG_IEEE8021X_EAPOL=y
408NEED_AES=y
bd4e9d03
JM
409NEED_AES_OMAC1=y
410NEED_AES_ENCBLOCK=y
411NEED_AES_EAX=y
6fc6879b
JM
412endif
413
414ifdef CONFIG_EAP_AKA
415# EAP-AKA
416ifeq ($(CONFIG_EAP_AKA), dyn)
417CFLAGS += -DEAP_AKA_DYNAMIC
418EAPDYN += ../src/eap_peer/eap_aka.so
419else
420CFLAGS += -DEAP_AKA
421OBJS += ../src/eap_peer/eap_aka.o
94d9bfd5 422OBJS_h += ../src/eap_server/eap_server_aka.o
6fc6879b
JM
423endif
424CONFIG_IEEE8021X_EAPOL=y
425CONFIG_EAP_SIM_COMMON=y
bd4e9d03 426NEED_AES_CBC=y
6fc6879b
JM
427endif
428
8c37556c
JM
429ifdef CONFIG_EAP_AKA_PRIME
430# EAP-AKA'
431ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
432CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
8c37556c
JM
433else
434CFLAGS += -DEAP_AKA_PRIME
8c37556c 435endif
1edb9533 436NEED_SHA256=y
8c37556c
JM
437endif
438
6fc6879b
JM
439ifdef CONFIG_EAP_SIM_COMMON
440OBJS += ../src/eap_common/eap_sim_common.o
441OBJS_h += ../src/eap_server/eap_sim_db.o
442NEED_AES=y
443NEED_FIPS186_2_PRF=y
444endif
445
6fc6879b
JM
446ifdef CONFIG_EAP_FAST
447# EAP-FAST
448ifeq ($(CONFIG_EAP_FAST), dyn)
449CFLAGS += -DEAP_FAST_DYNAMIC
450EAPDYN += ../src/eap_peer/eap_fast.so
a4819630 451EAPDYN += ../src/eap_common/eap_fast_common.o
6fc6879b
JM
452else
453CFLAGS += -DEAP_FAST
454OBJS += ../src/eap_peer/eap_fast.o ../src/eap_peer/eap_fast_pac.o
a4819630 455OBJS += ../src/eap_common/eap_fast_common.o
94d9bfd5 456OBJS_h += ../src/eap_server/eap_server_fast.o
6fc6879b
JM
457endif
458TLS_FUNCS=y
58d1f6d1 459CONFIG_IEEE8021X_EAPOL=y
6fc6879b
JM
460NEED_T_PRF=y
461endif
462
463ifdef CONFIG_EAP_PAX
464# EAP-PAX
465ifeq ($(CONFIG_EAP_PAX), dyn)
466CFLAGS += -DEAP_PAX_DYNAMIC
467EAPDYN += ../src/eap_peer/eap_pax.so
468else
469CFLAGS += -DEAP_PAX
470OBJS += ../src/eap_peer/eap_pax.o ../src/eap_common/eap_pax_common.o
94d9bfd5 471OBJS_h += ../src/eap_server/eap_server_pax.o
6fc6879b
JM
472endif
473CONFIG_IEEE8021X_EAPOL=y
474endif
475
476ifdef CONFIG_EAP_SAKE
477# EAP-SAKE
478ifeq ($(CONFIG_EAP_SAKE), dyn)
479CFLAGS += -DEAP_SAKE_DYNAMIC
480EAPDYN += ../src/eap_peer/eap_sake.so
481else
482CFLAGS += -DEAP_SAKE
483OBJS += ../src/eap_peer/eap_sake.o ../src/eap_common/eap_sake_common.o
94d9bfd5 484OBJS_h += ../src/eap_server/eap_server_sake.o
6fc6879b
JM
485endif
486CONFIG_IEEE8021X_EAPOL=y
487endif
488
489ifdef CONFIG_EAP_GPSK
490# EAP-GPSK
491ifeq ($(CONFIG_EAP_GPSK), dyn)
492CFLAGS += -DEAP_GPSK_DYNAMIC
493EAPDYN += ../src/eap_peer/eap_gpsk.so
494else
495CFLAGS += -DEAP_GPSK
496OBJS += ../src/eap_peer/eap_gpsk.o ../src/eap_common/eap_gpsk_common.o
94d9bfd5 497OBJS_h += ../src/eap_server/eap_server_gpsk.o
6fc6879b
JM
498endif
499CONFIG_IEEE8021X_EAPOL=y
500ifdef CONFIG_EAP_GPSK_SHA256
501CFLAGS += -DEAP_GPSK_SHA256
502endif
503NEED_SHA256=y
bd4e9d03 504NEED_AES_OMAC1=y
6fc6879b
JM
505endif
506
df684d82
DH
507ifdef CONFIG_EAP_PWD
508CFLAGS += -DEAP_PWD
509OBJS += ../src/eap_peer/eap_pwd.o ../src/eap_common/eap_pwd_common.o
510OBJS_h += ../src/eap_server/eap_pwd.o
511CONFIG_IEEE8021X_EAPOL=y
512NEED_SHA256=y
513endif
514
ad08c363 515ifdef CONFIG_WPS
53587ec1
JM
516ifdef CONFIG_WPS2
517CFLAGS += -DCONFIG_WPS2
518endif
519
ad08c363 520# EAP-WSC
ad08c363 521CFLAGS += -DCONFIG_WPS -DEAP_WSC
fa201b69 522OBJS += wps_supplicant.o
ad08c363
JM
523OBJS += ../src/utils/uuid.o
524OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o
525OBJS += ../src/wps/wps.o
526OBJS += ../src/wps/wps_common.o
7d7b8e96
JM
527OBJS += ../src/wps/wps_attr_parse.o
528OBJS += ../src/wps/wps_attr_build.o
529OBJS += ../src/wps/wps_attr_process.o
ad08c363
JM
530OBJS += ../src/wps/wps_dev_attr.o
531OBJS += ../src/wps/wps_enrollee.o
532OBJS += ../src/wps/wps_registrar.o
94d9bfd5 533OBJS_h += ../src/eap_server/eap_server_wsc.o
ad08c363
JM
534CONFIG_IEEE8021X_EAPOL=y
535NEED_DH_GROUPS=y
1edb9533 536NEED_SHA256=y
d9f56262 537NEED_BASE64=y
f1b0de09 538NEED_80211_COMMON=y
0dba0175 539NEED_AES_CBC=y
38b46286 540NEED_MODEXP=y
e1c7954d 541
390cd310
JM
542ifdef CONFIG_WPS_UFD
543CFLAGS += -DCONFIG_WPS_UFD
544OBJS += ../src/wps/wps_ufd.o
116f7bb0
JM
545NEED_WPS_OOB=y
546endif
547
e1ee6b60
MH
548ifdef CONFIG_WPS_NFC
549CFLAGS += -DCONFIG_WPS_NFC
550OBJS += ../src/wps/ndef.o
551OBJS += ../src/wps/wps_nfc.o
552NEED_WPS_OOB=y
553ifdef CONFIG_WPS_NFC_PN531
9cf548c0 554PN531_PATH ?= /usr/local/src/nfc
e1ee6b60
MH
555CFLAGS += -DCONFIG_WPS_NFC_PN531
556CFLAGS += -I${PN531_PATH}/inc
557OBJS += ../src/wps/wps_nfc_pn531.o
558LIBS += ${PN531_PATH}/lib/wpsnfc.dll
559LIBS += ${PN531_PATH}/lib/libnfc_mapping_pn53x.dll
560endif
561endif
562
116f7bb0
JM
563ifdef NEED_WPS_OOB
564CFLAGS += -DCONFIG_WPS_OOB
390cd310
JM
565endif
566
e9bcfebf
JM
567ifdef CONFIG_WPS_ER
568CONFIG_WPS_UPNP=y
569CFLAGS += -DCONFIG_WPS_ER
570OBJS += ../src/wps/wps_er.o
ec72bd0c 571OBJS += ../src/wps/wps_er_ssdp.o
e9bcfebf
JM
572endif
573
e1c7954d
JM
574ifdef CONFIG_WPS_UPNP
575CFLAGS += -DCONFIG_WPS_UPNP
576OBJS += ../src/wps/wps_upnp.o
577OBJS += ../src/wps/wps_upnp_ssdp.o
578OBJS += ../src/wps/wps_upnp_web.o
579OBJS += ../src/wps/wps_upnp_event.o
7e683cee 580OBJS += ../src/wps/wps_upnp_ap.o
0b40d033 581OBJS += ../src/wps/upnp_xml.o
e1c7954d 582OBJS += ../src/wps/httpread.o
092794f4 583OBJS += ../src/wps/http_client.o
b905c4a3 584OBJS += ../src/wps/http_server.o
e1c7954d
JM
585endif
586
cae67937
JM
587ifdef CONFIG_WPS_STRICT
588CFLAGS += -DCONFIG_WPS_STRICT
589OBJS += ../src/wps/wps_validate.o
590endif
591
b4e34f2f
JM
592ifdef CONFIG_WPS_TESTING
593CFLAGS += -DCONFIG_WPS_TESTING
594endif
595
f981eabc
JM
596ifdef CONFIG_WPS_REG_DISABLE_OPEN
597CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN
598endif
599
ad08c363
JM
600endif
601
6fc6879b
JM
602ifdef CONFIG_EAP_IKEV2
603# EAP-IKEv2
604ifeq ($(CONFIG_EAP_IKEV2), dyn)
605CFLAGS += -DEAP_IKEV2_DYNAMIC
606EAPDYN += ../src/eap_peer/eap_ikev2.so ../src/eap_peer/ikev2.o
607EAPDYN += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
608else
609CFLAGS += -DEAP_IKEV2
610OBJS += ../src/eap_peer/eap_ikev2.o ../src/eap_peer/ikev2.o
611OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
94d9bfd5 612OBJS_h += ../src/eap_server/eap_server_ikev2.o
6fc6879b
JM
613OBJS_h += ../src/eap_server/ikev2.o
614endif
615CONFIG_IEEE8021X_EAPOL=y
616NEED_DH_GROUPS=y
dd01b1ff 617NEED_DH_GROUPS_ALL=y
38b46286 618NEED_MODEXP=y
be473f3f 619NEED_CIPHER=y
6fc6879b
JM
620endif
621
622ifdef CONFIG_EAP_VENDOR_TEST
623ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
624CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
625EAPDYN += ../src/eap_peer/eap_vendor_test.so
626else
627CFLAGS += -DEAP_VENDOR_TEST
628OBJS += ../src/eap_peer/eap_vendor_test.o
94d9bfd5 629OBJS_h += ../src/eap_server/eap_server_vendor_test.o
6fc6879b
JM
630endif
631CONFIG_IEEE8021X_EAPOL=y
632endif
633
634ifdef CONFIG_EAP_TNC
635# EAP-TNC
636CFLAGS += -DEAP_TNC
637OBJS += ../src/eap_peer/eap_tnc.o
638OBJS += ../src/eap_peer/tncc.o
94d9bfd5 639OBJS_h += ../src/eap_server/eap_server_tnc.o
93ea8ed0 640OBJS_h += ../src/eap_server/tncs.o
6fc6879b 641NEED_BASE64=y
53c256a4 642ifndef CONFIG_NATIVE_WINDOWS
7d737d6b 643ifndef CONFIG_DRIVER_BSD
b77eab28 644LIBS += -ldl
6fc6879b 645endif
53c256a4 646endif
7d737d6b 647endif
6fc6879b
JM
648
649ifdef CONFIG_IEEE8021X_EAPOL
650# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
651CFLAGS += -DIEEE8021X_EAPOL
25c226ea
JM
652OBJS += ../src/eapol_supp/eapol_supp_sm.o
653OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o
654NEED_EAP_COMMON=y
6fc6879b
JM
655ifdef CONFIG_DYNAMIC_EAP_METHODS
656CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
657LIBS += -ldl -rdynamic
658endif
659endif
660
1581b38b 661ifdef CONFIG_AP
37a86b7b 662NEED_80211_COMMON=y
25c226ea 663NEED_EAP_COMMON=y
3680a5db 664NEED_RSN_AUTHENTICATOR=y
1581b38b 665CFLAGS += -DCONFIG_AP
f1a48710
JM
666OBJS += ap.o
667CFLAGS += -DCONFIG_NO_RADIUS
668CFLAGS += -DCONFIG_NO_ACCOUNTING
669CFLAGS += -DCONFIG_NO_VLAN
70db2ab3
JM
670OBJS += ../src/ap/hostapd.o
671OBJS += ../src/ap/wpa_auth_glue.o
32da61d9 672OBJS += ../src/ap/utils.o
2586bc64 673OBJS += ../src/ap/authsrv.o
6226e38d 674OBJS += ../src/ap/ap_config.o
2d5b792d 675OBJS += ../src/utils/ip_addr.o
1057d78e
JM
676OBJS += ../src/ap/sta_info.o
677OBJS += ../src/ap/tkip_countermeasures.o
6226e38d 678OBJS += ../src/ap/ap_mlme.o
1057d78e 679OBJS += ../src/ap/ieee802_1x.o
281c950b 680OBJS += ../src/eapol_auth/eapol_auth_sm.o
1057d78e 681OBJS += ../src/ap/ieee802_11_auth.o
d4370eac 682OBJS += ../src/ap/ieee802_11_shared.o
70db2ab3
JM
683OBJS += ../src/ap/drv_callbacks.o
684OBJS += ../src/ap/ap_drv_ops.o
062390ef 685OBJS += ../src/ap/beacon.o
34dbfc0c
JM
686ifdef CONFIG_IEEE80211N
687OBJS += ../src/ap/ieee802_11_ht.o
688endif
e653b622 689ifdef CONFIG_CTRL_IFACE
0e2d35c6 690OBJS += ../src/ap/ctrl_iface_ap.o
e653b622 691endif
f1a48710 692
12760815 693CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
94d9bfd5
JM
694OBJS += ../src/eap_server/eap_server.o
695OBJS += ../src/eap_server/eap_server_identity.o
696OBJS += ../src/eap_server/eap_server_methods.o
f1a48710 697
803a811b
JM
698ifdef CONFIG_IEEE80211N
699CFLAGS += -DCONFIG_IEEE80211N
700endif
701
f1a48710 702ifdef NEED_AP_MLME
1057d78e
JM
703OBJS += ../src/ap/wmm.o
704OBJS += ../src/ap/ap_list.o
705OBJS += ../src/ap/ieee802_11.o
70db2ab3 706OBJS += ../src/ap/hw_features.o
fe6bdb77 707CFLAGS += -DNEED_AP_MLME
f1a48710
JM
708endif
709ifdef CONFIG_WPS
710CFLAGS += -DEAP_SERVER_WSC
32da61d9 711OBJS += ../src/ap/wps_hostapd.o
94d9bfd5 712OBJS += ../src/eap_server/eap_server_wsc.o
f1a48710 713endif
1581b38b
JM
714endif
715
3680a5db
JM
716ifdef NEED_RSN_AUTHENTICATOR
717CFLAGS += -DCONFIG_NO_RADIUS
718NEED_AES_WRAP=y
6226e38d 719OBJS += ../src/ap/wpa_auth.o
1057d78e 720OBJS += ../src/ap/wpa_auth_ie.o
6226e38d 721OBJS += ../src/ap/pmksa_cache_auth.o
3680a5db 722ifdef CONFIG_IEEE80211R
6226e38d 723OBJS += ../src/ap/wpa_auth_ft.o
3680a5db
JM
724endif
725ifdef CONFIG_PEERKEY
6226e38d 726OBJS += ../src/ap/peerkey_auth.o
3680a5db
JM
727endif
728endif
729
6fc6879b
JM
730ifdef CONFIG_EAP_SERVER
731CFLAGS += -DEAP_SERVER
94d9bfd5
JM
732OBJS_h += ../src/eap_server/eap_server.o
733OBJS_h += ../src/eap_server/eap_server_identity.o
734OBJS_h += ../src/eap_server/eap_server_methods.o
6fc6879b
JM
735endif
736
737ifdef CONFIG_RADIUS_CLIENT
738OBJS_h += ../src/utils/ip_addr.o
739OBJS_h += ../src/radius/radius.o
740OBJS_h += ../src/radius/radius_client.o
741endif
742
743ifdef CONFIG_AUTHENTICATOR
bed4d574 744OBJS_h += ../src/eapol_auth/eapol_auth_sm.o
1057d78e 745OBJS_h += ../src/ap/ieee802_1x.o
6fc6879b
JM
746endif
747
748ifdef CONFIG_WPA_AUTHENTICATOR
6226e38d 749OBJS_h += ../src/ap/wpa_auth.o
1057d78e 750OBJS_h += ../src/ap/wpa_auth_ie.o
6226e38d 751OBJS_h += ../src/ap/pmksa_cache_auth.o
6fc6879b 752ifdef CONFIG_IEEE80211R
6226e38d 753OBJS_h += ../src/ap/wpa_auth_ft.o
6fc6879b
JM
754endif
755ifdef CONFIG_PEERKEY
6226e38d 756OBJS_h += ../src/ap/peerkey_auth.o
6fc6879b
JM
757endif
758endif
759
760ifdef CONFIG_PCSC
761# PC/SC interface for smartcards (USIM, GSM SIM)
762CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
763OBJS += ../src/utils/pcsc_funcs.o
764# -lpthread may not be needed depending on how pcsc-lite was configured
765ifdef CONFIG_NATIVE_WINDOWS
766#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
767#dynamic symbol loading that is now used in pcsc_funcs.c
768#LIBS += -lwinscard
769else
770LIBS += -lpcsclite -lpthread
771endif
772endif
773
81eec387
JM
774ifdef CONFIG_SIM_SIMULATOR
775CFLAGS += -DCONFIG_SIM_SIMULATOR
776NEED_MILENAGE=y
777endif
778
2a24bb31
JM
779ifdef CONFIG_USIM_SIMULATOR
780CFLAGS += -DCONFIG_USIM_SIMULATOR
81eec387
JM
781NEED_MILENAGE=y
782endif
783
784ifdef NEED_MILENAGE
43df4cc2 785OBJS += ../src/crypto/milenage.o
5e67037b 786NEED_AES_ENCBLOCK=y
2a24bb31
JM
787endif
788
71374569
JM
789ifdef CONFIG_PKCS12
790CFLAGS += -DPKCS12_FUNCS
791endif
792
793ifdef CONFIG_SMARTCARD
794CFLAGS += -DCONFIG_SMARTCARD
795endif
796
797ifdef MS_FUNCS
798OBJS += ../src/crypto/ms_funcs.o
38b46286
JM
799NEED_DES=y
800NEED_MD4=y
71374569
JM
801endif
802
803ifdef CHAP
804OBJS += ../src/eap_common/chap.o
805endif
806
6fc6879b 807ifdef TLS_FUNCS
38b46286 808NEED_DES=y
6fc6879b 809# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
6fc6879b 810OBJS += ../src/eap_peer/eap_tls_common.o
94d9bfd5 811OBJS_h += ../src/eap_server/eap_server_tls_common.o
6fc6879b 812NEED_TLS_PRF=y
000bbd77
JM
813endif
814
38b46286
JM
815ifndef CONFIG_TLS
816CONFIG_TLS=openssl
817endif
818
5c47af9a
JM
819ifdef CONFIG_TLSV11
820CFLAGS += -DCONFIG_TLSV11
821endif
822
6fc6879b 823ifeq ($(CONFIG_TLS), openssl)
38b46286 824ifdef TLS_FUNCS
6fc6879b
JM
825CFLAGS += -DEAP_TLS_OPENSSL
826OBJS += ../src/crypto/tls_openssl.o
38b46286
JM
827LIBS += -lssl
828endif
829OBJS += ../src/crypto/crypto_openssl.o
830OBJS_p += ../src/crypto/crypto_openssl.o
831ifdef NEED_FIPS186_2_PRF
832OBJS += ../src/crypto/fips_prf_openssl.o
833endif
834LIBS += -lcrypto
6fc6879b
JM
835LIBS_p += -lcrypto
836endif
38b46286 837
6fc6879b 838ifeq ($(CONFIG_TLS), gnutls)
38b46286 839ifdef TLS_FUNCS
6fc6879b 840OBJS += ../src/crypto/tls_gnutls.o
38b46286 841LIBS += -lgnutls -lgpg-error
6fc6879b 842endif
6fc6879b
JM
843OBJS += ../src/crypto/crypto_gnutls.o
844OBJS_p += ../src/crypto/crypto_gnutls.o
05edfe29
JB
845ifdef NEED_FIPS186_2_PRF
846OBJS += ../src/crypto/fips_prf_gnutls.o
05edfe29 847endif
38b46286
JM
848LIBS += -lgcrypt
849LIBS_p += -lgcrypt
6fc6879b 850CONFIG_INTERNAL_SHA256=y
ac73690c 851CONFIG_INTERNAL_RC4=y
f042122a 852CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 853endif
38b46286 854
6fc6879b 855ifeq ($(CONFIG_TLS), schannel)
38b46286
JM
856ifdef TLS_FUNCS
857OBJS += ../src/crypto/tls_schannel.o
858endif
6fc6879b
JM
859OBJS += ../src/crypto/crypto_cryptoapi.o
860OBJS_p += ../src/crypto/crypto_cryptoapi.o
94c3e91f
JM
861ifdef NEED_FIPS186_2_PRF
862OBJS += ../src/crypto/fips_prf_cryptoapi.o
863endif
6fc6879b 864CONFIG_INTERNAL_SHA256=y
ac73690c 865CONFIG_INTERNAL_RC4=y
f042122a 866CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 867endif
38b46286 868
289ffc2b 869ifeq ($(CONFIG_TLS), nss)
38b46286
JM
870ifdef TLS_FUNCS
871OBJS += ../src/crypto/tls_nss.o
872LIBS += -lssl3
873endif
289ffc2b
JM
874OBJS += ../src/crypto/crypto_nss.o
875OBJS_p += ../src/crypto/crypto_nss.o
289ffc2b
JM
876ifdef NEED_FIPS186_2_PRF
877OBJS += ../src/crypto/fips_prf_nss.o
878endif
38b46286
JM
879LIBS += -lnss3
880LIBS_p += -lnss3
881CONFIG_INTERNAL_MD4=y
f042122a 882CONFIG_INTERNAL_DH_GROUP5=y
289ffc2b 883endif
38b46286 884
6fc6879b 885ifeq ($(CONFIG_TLS), internal)
38b46286
JM
886ifndef CONFIG_CRYPTO
887CONFIG_CRYPTO=internal
888endif
889ifdef TLS_FUNCS
be473f3f 890OBJS += ../src/crypto/crypto_internal-rsa.o
38b46286
JM
891OBJS += ../src/crypto/tls_internal.o
892OBJS += ../src/tls/tlsv1_common.o
893OBJS += ../src/tls/tlsv1_record.o
894OBJS += ../src/tls/tlsv1_cred.o
895OBJS += ../src/tls/tlsv1_client.o
896OBJS += ../src/tls/tlsv1_client_write.o
897OBJS += ../src/tls/tlsv1_client_read.o
898OBJS += ../src/tls/asn1.o
899OBJS += ../src/tls/rsa.o
900OBJS += ../src/tls/x509v3.o
f1739bac
JM
901OBJS += ../src/tls/pkcs1.o
902OBJS += ../src/tls/pkcs5.o
903OBJS += ../src/tls/pkcs8.o
1a707778 904NEED_SHA256=y
38b46286
JM
905NEED_BASE64=y
906NEED_TLS_PRF=y
907NEED_MODEXP=y
be473f3f 908NEED_CIPHER=y
38b46286
JM
909CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
910endif
be473f3f
JM
911ifdef NEED_CIPHER
912NEED_DES=y
913OBJS += ../src/crypto/crypto_internal-cipher.o
914endif
38b46286 915ifdef NEED_MODEXP
be473f3f 916OBJS += ../src/crypto/crypto_internal-modexp.o
38b46286 917OBJS += ../src/tls/bignum.o
38b46286 918endif
6fc6879b
JM
919ifeq ($(CONFIG_CRYPTO), libtomcrypt)
920OBJS += ../src/crypto/crypto_libtomcrypt.o
921OBJS_p += ../src/crypto/crypto_libtomcrypt.o
38b46286
JM
922LIBS += -ltomcrypt -ltfm
923LIBS_p += -ltomcrypt -ltfm
6fc6879b 924CONFIG_INTERNAL_SHA256=y
ac73690c 925CONFIG_INTERNAL_RC4=y
f042122a 926CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
927endif
928ifeq ($(CONFIG_CRYPTO), internal)
38b46286
JM
929OBJS += ../src/crypto/crypto_internal.o
930OBJS_p += ../src/crypto/crypto_internal.o
73d0ad78 931NEED_AES_ENC=y
6fc6879b 932CFLAGS += -DCONFIG_CRYPTO_INTERNAL
049a292f
JM
933ifdef CONFIG_INTERNAL_LIBTOMMATH
934CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
935ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
936CFLAGS += -DLTM_FAST
937endif
938else
939LIBS += -ltommath
940LIBS_p += -ltommath
941endif
6fc6879b
JM
942CONFIG_INTERNAL_AES=y
943CONFIG_INTERNAL_DES=y
944CONFIG_INTERNAL_SHA1=y
945CONFIG_INTERNAL_MD4=y
946CONFIG_INTERNAL_MD5=y
947CONFIG_INTERNAL_SHA256=y
ac73690c 948CONFIG_INTERNAL_RC4=y
f042122a 949CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
950endif
951ifeq ($(CONFIG_CRYPTO), cryptoapi)
952OBJS += ../src/crypto/crypto_cryptoapi.o
953OBJS_p += ../src/crypto/crypto_cryptoapi.o
954CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
955CONFIG_INTERNAL_SHA256=y
ac73690c 956CONFIG_INTERNAL_RC4=y
6fc6879b
JM
957endif
958endif
38b46286 959
6fc6879b 960ifeq ($(CONFIG_TLS), none)
38b46286
JM
961ifdef TLS_FUNCS
962OBJS += ../src/crypto/tls_none.o
963CFLAGS += -DEAP_TLS_NONE
964CONFIG_INTERNAL_AES=y
965CONFIG_INTERNAL_SHA1=y
966CONFIG_INTERNAL_MD5=y
967endif
6fc6879b
JM
968OBJS += ../src/crypto/crypto_none.o
969OBJS_p += ../src/crypto/crypto_none.o
970CONFIG_INTERNAL_SHA256=y
ac73690c 971CONFIG_INTERNAL_RC4=y
6fc6879b 972endif
38b46286
JM
973
974ifdef TLS_FUNCS
975ifdef CONFIG_SMARTCARD
976ifndef CONFIG_NATIVE_WINDOWS
977ifneq ($(CONFIG_L2_PACKET), freebsd)
978LIBS += -ldl
979endif
980endif
981endif
982endif
983
984ifndef TLS_FUNCS
985OBJS += ../src/crypto/tls_none.o
986ifeq ($(CONFIG_TLS), internal)
6fc6879b
JM
987CONFIG_INTERNAL_AES=y
988CONFIG_INTERNAL_SHA1=y
989CONFIG_INTERNAL_MD5=y
9d388d50 990CONFIG_INTERNAL_RC4=y
6fc6879b 991endif
38b46286 992endif
6fc6879b 993
38b46286 994AESOBJS = # none so far (see below)
6fc6879b 995ifdef CONFIG_INTERNAL_AES
381fcbc9 996AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o
6fc6879b 997endif
38b46286
JM
998
999AESOBJS += ../src/crypto/aes-unwrap.o
bd4e9d03 1000ifdef NEED_AES_EAX
38b46286 1001AESOBJS += ../src/crypto/aes-eax.o
bd4e9d03
JM
1002NEED_AES_CTR=y
1003endif
1004ifdef NEED_AES_CTR
1005AESOBJS += ../src/crypto/aes-ctr.o
1006endif
1007ifdef NEED_AES_ENCBLOCK
38b46286 1008AESOBJS += ../src/crypto/aes-encblock.o
bd4e9d03
JM
1009endif
1010ifdef NEED_AES_OMAC1
279d859b 1011NEED_AES_ENC=y
38b46286 1012AESOBJS += ../src/crypto/aes-omac1.o
bd4e9d03
JM
1013endif
1014ifdef NEED_AES_WRAP
3afe7b61 1015NEED_AES_ENC=y
38b46286
JM
1016AESOBJS += ../src/crypto/aes-wrap.o
1017endif
1018ifdef NEED_AES_CBC
279d859b
MH
1019NEED_AES_ENC=y
1020AESOBJS += ../src/crypto/aes-cbc.o
1021endif
1022ifdef NEED_AES_ENC
38b46286
JM
1023ifdef CONFIG_INTERNAL_AES
1024AESOBJS += ../src/crypto/aes-internal-enc.o
1025endif
38b46286
JM
1026endif
1027ifdef NEED_AES
1028OBJS += $(AESOBJS)
38b46286
JM
1029endif
1030
1031ifdef NEED_SHA1
1032SHA1OBJS += ../src/crypto/sha1.o
6fc6879b 1033ifdef CONFIG_INTERNAL_SHA1
928a50a3 1034SHA1OBJS += ../src/crypto/sha1-internal.o
05edfe29
JB
1035ifdef NEED_FIPS186_2_PRF
1036SHA1OBJS += ../src/crypto/fips_prf_internal.o
1037endif
6fc6879b 1038endif
62b98282
JM
1039ifdef CONFIG_NO_WPA_PASSPHRASE
1040CFLAGS += -DCONFIG_NO_PBKDF2
1041else
38b46286
JM
1042SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
1043endif
1044ifdef NEED_T_PRF
1045SHA1OBJS += ../src/crypto/sha1-tprf.o
1046endif
1047ifdef NEED_TLS_PRF
1048SHA1OBJS += ../src/crypto/sha1-tlsprf.o
1049endif
1050endif
1051
1052MD5OBJS = ../src/crypto/md5.o
1053ifdef NEED_MD5
6fc6879b 1054ifdef CONFIG_INTERNAL_MD5
ad01a531 1055MD5OBJS += ../src/crypto/md5-internal.o
6fc6879b 1056endif
38b46286
JM
1057ifdef CONFIG_FIPS
1058MD5OBJS += ../src/crypto/md5-non-fips.o
6fc6879b 1059endif
38b46286 1060OBJS += $(MD5OBJS)
3e91d242 1061OBJS_p += $(MD5OBJS)
38b46286
JM
1062endif
1063
1064ifdef NEED_MD4
1065ifdef CONFIG_INTERNAL_MD4
1066OBJS += ../src/crypto/md4-internal.o
1067endif
1068endif
bd4e2895 1069
38b46286
JM
1070DESOBJS = # none needed when not internal
1071ifdef NEED_DES
6fc6879b 1072ifdef CONFIG_INTERNAL_DES
657f0381 1073DESOBJS += ../src/crypto/des-internal.o
6fc6879b 1074endif
38b46286 1075endif
6fc6879b 1076
38b46286 1077ifdef NEED_RC4
ac73690c
JM
1078ifdef CONFIG_INTERNAL_RC4
1079OBJS += ../src/crypto/rc4.o
1080endif
1d8ce433
JM
1081endif
1082
38b46286 1083SHA256OBJS = # none by default
6fc6879b 1084ifdef NEED_SHA256
00468b46 1085CFLAGS += -DCONFIG_SHA256
598a792d 1086SHA256OBJS += ../src/crypto/sha256.o
598a792d
JB
1087ifdef CONFIG_INTERNAL_SHA256
1088SHA256OBJS += ../src/crypto/sha256-internal.o
1089endif
598a792d 1090OBJS += $(SHA256OBJS)
38b46286
JM
1091endif
1092
38b46286
JM
1093ifdef NEED_DH_GROUPS
1094OBJS += ../src/crypto/dh_groups.o
38b46286 1095endif
38b46286 1096ifdef NEED_DH_GROUPS_ALL
38b46286
JM
1097CFLAGS += -DALL_DH_GROUPS
1098endif
50ceddcf
JM
1099ifdef CONFIG_INTERNAL_DH_GROUP5
1100ifdef NEED_DH_GROUPS
1101OBJS += ../src/crypto/dh_group5.o
1102endif
38b46286 1103endif
6fc6879b 1104
bbb921da
JM
1105ifdef CONFIG_NO_RANDOM_POOL
1106CFLAGS += -DCONFIG_NO_RANDOM_POOL
1107else
1108OBJS += ../src/crypto/random.o
1109endif
1110
6fc6879b
JM
1111ifdef CONFIG_CTRL_IFACE
1112ifeq ($(CONFIG_CTRL_IFACE), y)
1113ifdef CONFIG_NATIVE_WINDOWS
1114CONFIG_CTRL_IFACE=named_pipe
1115else
1116CONFIG_CTRL_IFACE=unix
1117endif
1118endif
1119CFLAGS += -DCONFIG_CTRL_IFACE
1120ifeq ($(CONFIG_CTRL_IFACE), unix)
1121CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1122endif
1123ifeq ($(CONFIG_CTRL_IFACE), udp)
1124CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1125endif
1126ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1127CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1128endif
1129OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
1130endif
1131
1132ifdef CONFIG_CTRL_IFACE_DBUS
8ddef94b 1133DBUS=y
8fc2fb56 1134DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
bacfd05f 1135DBUS_OBJS += dbus/dbus_old.o dbus/dbus_old_handlers.o
36da1358 1136ifdef CONFIG_WPS
bacfd05f 1137DBUS_OBJS += dbus/dbus_old_handlers_wps.o
36da1358 1138endif
19b3211d 1139DBUS_OBJS += dbus/dbus_dict_helpers.o
6fc6879b 1140ifndef DBUS_LIBS
572a171f 1141DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
6fc6879b 1142endif
6fc6879b 1143ifndef DBUS_INCLUDE
572a171f 1144DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
6fc6879b 1145endif
572a171f 1146dbus_version=$(subst ., ,$(shell $(PKG_CONFIG) --modversion dbus-1))
6fc6879b
JM
1147DBUS_VERSION_MAJOR=$(word 1,$(dbus_version))
1148DBUS_VERSION_MINOR=$(word 2,$(dbus_version))
1149ifeq ($(DBUS_VERSION_MAJOR),)
1150DBUS_VERSION_MAJOR=0
1151endif
1152ifeq ($(DBUS_VERSION_MINOR),)
1153DBUS_VERSION_MINOR=0
1154endif
1155DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR)
1156DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR)
8fc2fb56
WS
1157DBUS_CFLAGS += $(DBUS_INCLUDE)
1158endif
1159
1160ifdef CONFIG_CTRL_IFACE_DBUS_NEW
8ddef94b 1161DBUS=y
8fc2fb56 1162DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
19b3211d 1163DBUS_OBJS ?= dbus/dbus_dict_helpers.o
a206a29a
JM
1164DBUS_OBJS += dbus/dbus_new_helpers.o
1165DBUS_OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o
36da1358
JM
1166ifdef CONFIG_WPS
1167DBUS_OBJS += dbus/dbus_new_handlers_wps.o
1168endif
9abafccc
JB
1169ifdef CONFIG_P2P
1170DBUS_OBJS += dbus/dbus_new_handlers_p2p.o
1171endif
8fc2fb56 1172ifndef DBUS_LIBS
572a171f 1173DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
8fc2fb56
WS
1174endif
1175ifndef DBUS_INCLUDE
572a171f 1176DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
8fc2fb56
WS
1177endif
1178ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
04551ee6 1179DBUS_OBJS += dbus/dbus_new_introspect.o
8fc2fb56 1180DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
6fc6879b 1181endif
8fc2fb56
WS
1182DBUS_CFLAGS += $(DBUS_INCLUDE)
1183endif
1184
8ddef94b
JM
1185ifdef DBUS
1186DBUS_CFLAGS += -DCONFIG_DBUS
1187DBUS_OBJS += dbus/dbus_common.o
1188endif
1189
8fc2fb56
WS
1190OBJS += $(DBUS_OBJS)
1191CFLAGS += $(DBUS_CFLAGS)
1192LIBS += $(DBUS_LIBS)
6fc6879b
JM
1193
1194ifdef CONFIG_READLINE
e8ecb5fb 1195OBJS_c += ../src/utils/edit_readline.o
6fc6879b 1196LIBS_c += -lncurses -lreadline
82a855bd 1197else
aee680e8 1198ifdef CONFIG_WPA_CLI_EDIT
82a855bd
JM
1199OBJS_c += ../src/utils/edit.o
1200else
1201OBJS_c += ../src/utils/edit_simple.o
1202endif
aee680e8
JM
1203endif
1204
6fc6879b
JM
1205ifdef CONFIG_NATIVE_WINDOWS
1206CFLAGS += -DCONFIG_NATIVE_WINDOWS
1207LIBS += -lws2_32 -lgdi32 -lcrypt32
1208LIBS_c += -lws2_32
1209LIBS_p += -lws2_32 -lgdi32
1210ifeq ($(CONFIG_CRYPTO), cryptoapi)
1211LIBS_p += -lcrypt32
1212endif
1213endif
1214
1215ifdef CONFIG_NO_STDOUT_DEBUG
1216CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1217ifndef CONFIG_CTRL_IFACE
1218CFLAGS += -DCONFIG_NO_WPA_MSG
1219endif
1220endif
1221
1222ifdef CONFIG_IPV6
1223# for eapol_test only
1224CFLAGS += -DCONFIG_IPV6
1225endif
1226
6fc6879b
JM
1227ifdef NEED_BASE64
1228OBJS += ../src/utils/base64.o
1229endif
1230
c2a04078 1231ifdef NEED_SME
20e26395 1232NEED_80211_COMMON=y
c2a04078
JM
1233OBJS += sme.o
1234CFLAGS += -DCONFIG_SME
1235endif
1236
6fc6879b 1237ifdef CONFIG_CLIENT_MLME
26c9d7ea 1238OBJS += mlme.o
6fc6879b 1239CFLAGS += -DCONFIG_CLIENT_MLME
26c9d7ea
JM
1240NEED_80211_COMMON=y
1241endif
1242
1243ifdef NEED_80211_COMMON
1244OBJS += ../src/common/ieee802_11_common.o
6fc6879b
JM
1245endif
1246
25c226ea
JM
1247ifdef NEED_EAP_COMMON
1248OBJS += ../src/eap_common/eap_common.o
1249endif
1250
6fc6879b
JM
1251ifndef CONFIG_MAIN
1252CONFIG_MAIN=main
1253endif
1254
cca87731
SL
1255ifdef CONFIG_DEBUG_SYSLOG
1256CFLAGS += -DCONFIG_DEBUG_SYSLOG
3e199621
SL
1257ifdef CONFIG_DEBUG_SYSLOG_FACILITY
1258CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
1259endif
cca87731
SL
1260endif
1261
6fc6879b
JM
1262ifdef CONFIG_DEBUG_FILE
1263CFLAGS += -DCONFIG_DEBUG_FILE
1264endif
1265
46690a3b
JM
1266ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1267CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1268endif
1269
577072b1
JM
1270ifdef CONFIG_FIPS
1271CFLAGS += -DCONFIG_FIPS
577072b1
JM
1272endif
1273
657f0381 1274OBJS += $(SHA1OBJS) $(DESOBJS)
928a50a3 1275
be473f3f 1276OBJS_p += $(SHA1OBJS)
6fc6879b 1277
60b94c98
JM
1278ifdef CONFIG_BGSCAN_SIMPLE
1279CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1280OBJS += bgscan_simple.o
1281NEED_BGSCAN=y
1282endif
1283
c4d71c25
JM
1284ifdef CONFIG_BGSCAN_LEARN
1285CFLAGS += -DCONFIG_BGSCAN_LEARN
1286OBJS += bgscan_learn.o
1287NEED_BGSCAN=y
1288endif
1289
60b94c98
JM
1290ifdef NEED_BGSCAN
1291CFLAGS += -DCONFIG_BGSCAN
1292OBJS += bgscan.o
1293endif
1294
0c840c33
JM
1295ifdef NEED_GAS
1296OBJS += ../src/common/gas.o
04ea7b79
JM
1297OBJS += gas_query.o
1298CFLAGS += -DCONFIG_GAS
24f6497c
JM
1299NEED_OFFCHANNEL=y
1300endif
1301
1302ifdef NEED_OFFCHANNEL
1303OBJS += offchannel.o
1304CFLAGS += -DCONFIG_OFFCHANNEL
0c840c33
JM
1305endif
1306
6fc6879b
JM
1307OBJS_wpa_rm := ctrl_iface.o mlme.o ctrl_iface_unix.o
1308OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.o
1309ifdef CONFIG_AUTHENTICATOR
1310OBJS_wpa += tests/link_test.o
1311endif
1312OBJS_wpa += $(OBJS_l2)
1313OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o
74784010
JM
1314OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o
1315OBJS_t += ../src/radius/radius_client.o
a7baefda 1316OBJS_t += ../src/radius/radius.o
74784010 1317ifndef CONFIG_AP
6fc6879b 1318OBJS_t += ../src/utils/ip_addr.o
74784010 1319endif
6fc6879b
JM
1320OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
1321OBJS += $(CONFIG_MAIN).o
1322
1323ifdef CONFIG_PRIVSEP
d1f9c410 1324OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o
6fc6879b
JM
1325OBJS_priv += $(OBJS_l2)
1326OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
1327OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
1328OBJS_priv += ../src/utils/common.o
1329OBJS_priv += ../src/utils/wpa_debug.o
716d543d 1330OBJS_priv += ../src/utils/wpabuf.o
6fc6879b 1331OBJS_priv += wpa_priv.o
8d263912
JM
1332ifdef CONFIG_DRIVER_NL80211
1333OBJS_priv += ../src/common/ieee802_11_common.o
1334endif
6fc6879b 1335ifdef CONFIG_DRIVER_TEST
928a50a3 1336OBJS_priv += $(SHA1OBJS)
ad01a531 1337OBJS_priv += $(MD5OBJS)
6fc6879b
JM
1338ifeq ($(CONFIG_TLS), openssl)
1339OBJS_priv += ../src/crypto/crypto_openssl.o
1340endif
1341ifeq ($(CONFIG_TLS), gnutls)
1342OBJS_priv += ../src/crypto/crypto_gnutls.o
1343endif
289ffc2b
JM
1344ifeq ($(CONFIG_TLS), nss)
1345OBJS_priv += ../src/crypto/crypto_nss.o
1346endif
6fc6879b
JM
1347ifeq ($(CONFIG_TLS), internal)
1348ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1349OBJS_priv += ../src/crypto/crypto_libtomcrypt.o
1350else
1351OBJS_priv += ../src/crypto/crypto_internal.o
1352endif
1353endif
1354endif # CONFIG_DRIVER_TEST
1355OBJS += ../src/l2_packet/l2_packet_privsep.o
1356OBJS += ../src/drivers/driver_privsep.o
1357EXTRA_progs += wpa_priv
1358else
1359OBJS += $(OBJS_d) ../src/drivers/drivers.o
1360OBJS += $(OBJS_l2)
1361endif
1362
1363ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1364CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1365OBJS += ../src/drivers/ndis_events.o
1366EXTRALIBS += -loleaut32 -lole32 -luuid
1367ifdef PLATFORMSDKLIB
1368EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1369else
1370EXTRALIBS += WbemUuid.Lib
1371endif
1372endif
1373
1374ifndef LDO
1375LDO=$(CC)
1376endif
1377
586bad51
JM
1378Q=@
1379E=echo
1380ifeq ($(V), 1)
1381Q=
1382E=true
1383endif
1384
6fc6879b
JM
1385dynamic_eap_methods: $(EAPDYN)
1386
ba30964b 1387../src/drivers/build.wpa_supplicant:
5008cb5e 1388 @if [ -f ../src/drivers/build.hostapd ]; then \
ba30964b
JM
1389 $(MAKE) -C ../src/drivers clean; \
1390 fi
1391 @touch ../src/drivers/build.wpa_supplicant
1392
1393BCHECK=../src/drivers/build.wpa_supplicant
1394
1395wpa_priv: $(BCHECK) $(OBJS_priv)
586bad51
JM
1396 $(Q)$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS)
1397 @$(E) " LD " $@
6fc6879b 1398
ba30964b 1399wpa_supplicant: .config $(BCHECK) $(OBJS) $(EXTRA_progs)
586bad51
JM
1400 $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
1401 @$(E) " LD " $@
6fc6879b
JM
1402
1403eapol_test: .config $(OBJS_t)
586bad51
JM
1404 $(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
1405 @$(E) " LD " $@
6fc6879b
JM
1406
1407preauth_test: .config $(OBJS_t2)
586bad51
JM
1408 $(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
1409 @$(E) " LD " $@
6fc6879b
JM
1410
1411wpa_passphrase: $(OBJS_p)
586bad51
JM
1412 $(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
1413 @$(E) " LD " $@
6fc6879b
JM
1414
1415wpa_cli: $(OBJS_c)
586bad51
JM
1416 $(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
1417 @$(E) " LD " $@
6fc6879b
JM
1418
1419link_test: $(OBJS) $(OBJS_h) tests/link_test.o
586bad51
JM
1420 $(Q)$(LDO) $(LDFLAGS) -o link_test $(OBJS) $(OBJS_h) tests/link_test.o $(LIBS)
1421 @$(E) " LD " $@
6fc6879b
JM
1422
1423test_wpa: $(OBJS_wpa) $(OBJS_h)
586bad51
JM
1424 $(Q)$(LDO) $(LDFLAGS) -o test_wpa $(OBJS_wpa) $(LIBS)
1425 @$(E) " LD " $@
6fc6879b 1426
6fc6879b 1427win_if_list: win_if_list.c
586bad51
JM
1428 $(Q)$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
1429 @$(E) " LD " $@
6fc6879b
JM
1430
1431eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
466940c5 1432 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1433 -Deap_peer_psk_register=eap_peer_method_dynamic_init
1434
1435eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
466940c5 1436 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1437 -Deap_peer_pax_register=eap_peer_method_dynamic_init
1438
1439eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
466940c5 1440 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1441 -Deap_peer_sake_register=eap_peer_method_dynamic_init
1442
ad08c363 1443eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c
466940c5 1444 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
ad08c363
JM
1445 -Deap_peer_wsc_register=eap_peer_method_dynamic_init
1446
6fc6879b 1447eap_ikev2.so: ../src/eap_peer/eap_ikev2.c ../src/eap_peer/ikev2.c ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.c
466940c5 1448 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1449 -Deap_peer_ikev2_register=eap_peer_method_dynamic_init
1450
1451%.so: %.c
466940c5 1452 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
4c2660c2 1453 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
6fc6879b 1454
b2840aaf
JB
1455%.o: %.c
1456 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1457 @$(E) " CC " $<
6fc6879b 1458
f0573c79
HG
1459%.service: %.service.in
1460 sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
1461
6fc6879b
JM
1462wpa_supplicant.exe: wpa_supplicant
1463 mv -f $< $@
1464wpa_cli.exe: wpa_cli
1465 mv -f $< $@
1466wpa_passphrase.exe: wpa_passphrase
1467 mv -f $< $@
1468win_if_list.exe: win_if_list
1469 mv -f $< $@
1470eapol_test.exe: eapol_test
1471 mv -f $< $@
1472
1473WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
1474
1475windows-bin: $(WINALL)
1476 $(STRIP) $(WINALL)
1477
1478wpa_gui/Makefile:
1479 qmake -o wpa_gui/Makefile wpa_gui/wpa_gui.pro
1480
1481wpa_gui: wpa_gui/Makefile
1482 $(MAKE) -C wpa_gui
1483
1484wpa_gui-qt4/Makefile:
1485 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro
1486
0b86f67a
JM
1487wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts
1488 lrelease wpa_gui-qt4/wpa_gui.pro
1489
1490wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm
6fc6879b
JM
1491 $(MAKE) -C wpa_gui-qt4
1492
ad01a531 1493TEST_EAP_SIM_COMMON_OBJS = $(SHA1OBJS) $(MD5OBJS) \
246157cb
JB
1494 ../src/utils/common.o ../src/utils/os_unix.o \
1495 ../src/utils/wpa_debug.o $(AESOBJS) \
6fc6879b
JM
1496 tests/test_eap_sim_common.o
1497test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS)
03da66bd 1498 $(LDO) $(LDFLAGS) -o $@ $(TEST_EAP_SIM_COMMON_OBJS) $(LIBS)
6fc6879b
JM
1499 ./test-eap_sim_common
1500 rm test-eap_sim_common
1501
f8cf3ce6 1502tests: test-eap_sim_common
6fc6879b
JM
1503
1504clean:
1505 $(MAKE) -C ../src clean
eb3b34ce 1506 $(MAKE) -C dbus clean
8055fb78 1507 rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL) eapol_test preauth_test
385f16c6 1508 rm -f wpa_priv
6fc6879b 1509
6fc6879b 1510-include $(OBJS:%.o=%.d)