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