]> git.ipfire.org Git - thirdparty/hostap.git/blame - wpa_supplicant/Makefile
dbus: Remove unused D-Bus version defines
[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
ca84eed7
JM
830ifdef CONFIG_TLSV12
831CFLAGS += -DCONFIG_TLSV12
832NEED_SHA256=y
833endif
834
6fc6879b 835ifeq ($(CONFIG_TLS), openssl)
38b46286 836ifdef TLS_FUNCS
6fc6879b
JM
837CFLAGS += -DEAP_TLS_OPENSSL
838OBJS += ../src/crypto/tls_openssl.o
38b46286
JM
839LIBS += -lssl
840endif
841OBJS += ../src/crypto/crypto_openssl.o
842OBJS_p += ../src/crypto/crypto_openssl.o
843ifdef NEED_FIPS186_2_PRF
844OBJS += ../src/crypto/fips_prf_openssl.o
845endif
846LIBS += -lcrypto
6fc6879b
JM
847LIBS_p += -lcrypto
848endif
38b46286 849
6fc6879b 850ifeq ($(CONFIG_TLS), gnutls)
38b46286 851ifdef TLS_FUNCS
6fc6879b 852OBJS += ../src/crypto/tls_gnutls.o
38b46286 853LIBS += -lgnutls -lgpg-error
6fc6879b 854endif
6fc6879b
JM
855OBJS += ../src/crypto/crypto_gnutls.o
856OBJS_p += ../src/crypto/crypto_gnutls.o
05edfe29
JB
857ifdef NEED_FIPS186_2_PRF
858OBJS += ../src/crypto/fips_prf_gnutls.o
05edfe29 859endif
38b46286
JM
860LIBS += -lgcrypt
861LIBS_p += -lgcrypt
6fc6879b 862CONFIG_INTERNAL_SHA256=y
ac73690c 863CONFIG_INTERNAL_RC4=y
f042122a 864CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 865endif
38b46286 866
6fc6879b 867ifeq ($(CONFIG_TLS), schannel)
38b46286
JM
868ifdef TLS_FUNCS
869OBJS += ../src/crypto/tls_schannel.o
870endif
6fc6879b
JM
871OBJS += ../src/crypto/crypto_cryptoapi.o
872OBJS_p += ../src/crypto/crypto_cryptoapi.o
94c3e91f
JM
873ifdef NEED_FIPS186_2_PRF
874OBJS += ../src/crypto/fips_prf_cryptoapi.o
875endif
6fc6879b 876CONFIG_INTERNAL_SHA256=y
ac73690c 877CONFIG_INTERNAL_RC4=y
f042122a 878CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b 879endif
38b46286 880
289ffc2b 881ifeq ($(CONFIG_TLS), nss)
38b46286
JM
882ifdef TLS_FUNCS
883OBJS += ../src/crypto/tls_nss.o
884LIBS += -lssl3
885endif
289ffc2b
JM
886OBJS += ../src/crypto/crypto_nss.o
887OBJS_p += ../src/crypto/crypto_nss.o
289ffc2b
JM
888ifdef NEED_FIPS186_2_PRF
889OBJS += ../src/crypto/fips_prf_nss.o
890endif
38b46286
JM
891LIBS += -lnss3
892LIBS_p += -lnss3
893CONFIG_INTERNAL_MD4=y
f042122a 894CONFIG_INTERNAL_DH_GROUP5=y
289ffc2b 895endif
38b46286 896
6fc6879b 897ifeq ($(CONFIG_TLS), internal)
38b46286
JM
898ifndef CONFIG_CRYPTO
899CONFIG_CRYPTO=internal
900endif
901ifdef TLS_FUNCS
be473f3f 902OBJS += ../src/crypto/crypto_internal-rsa.o
38b46286
JM
903OBJS += ../src/crypto/tls_internal.o
904OBJS += ../src/tls/tlsv1_common.o
905OBJS += ../src/tls/tlsv1_record.o
906OBJS += ../src/tls/tlsv1_cred.o
907OBJS += ../src/tls/tlsv1_client.o
908OBJS += ../src/tls/tlsv1_client_write.o
909OBJS += ../src/tls/tlsv1_client_read.o
910OBJS += ../src/tls/asn1.o
911OBJS += ../src/tls/rsa.o
912OBJS += ../src/tls/x509v3.o
f1739bac
JM
913OBJS += ../src/tls/pkcs1.o
914OBJS += ../src/tls/pkcs5.o
915OBJS += ../src/tls/pkcs8.o
1a707778 916NEED_SHA256=y
38b46286
JM
917NEED_BASE64=y
918NEED_TLS_PRF=y
ca84eed7
JM
919ifdef CONFIG_TLSV12
920NEED_TLS_PRF_SHA256=y
921endif
38b46286 922NEED_MODEXP=y
be473f3f 923NEED_CIPHER=y
38b46286
JM
924CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
925endif
be473f3f
JM
926ifdef NEED_CIPHER
927NEED_DES=y
928OBJS += ../src/crypto/crypto_internal-cipher.o
929endif
38b46286 930ifdef NEED_MODEXP
be473f3f 931OBJS += ../src/crypto/crypto_internal-modexp.o
38b46286 932OBJS += ../src/tls/bignum.o
38b46286 933endif
6fc6879b
JM
934ifeq ($(CONFIG_CRYPTO), libtomcrypt)
935OBJS += ../src/crypto/crypto_libtomcrypt.o
936OBJS_p += ../src/crypto/crypto_libtomcrypt.o
38b46286
JM
937LIBS += -ltomcrypt -ltfm
938LIBS_p += -ltomcrypt -ltfm
6fc6879b 939CONFIG_INTERNAL_SHA256=y
ac73690c 940CONFIG_INTERNAL_RC4=y
f042122a 941CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
942endif
943ifeq ($(CONFIG_CRYPTO), internal)
38b46286
JM
944OBJS += ../src/crypto/crypto_internal.o
945OBJS_p += ../src/crypto/crypto_internal.o
73d0ad78 946NEED_AES_ENC=y
6fc6879b 947CFLAGS += -DCONFIG_CRYPTO_INTERNAL
049a292f
JM
948ifdef CONFIG_INTERNAL_LIBTOMMATH
949CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
950ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
951CFLAGS += -DLTM_FAST
952endif
953else
954LIBS += -ltommath
955LIBS_p += -ltommath
956endif
6fc6879b
JM
957CONFIG_INTERNAL_AES=y
958CONFIG_INTERNAL_DES=y
959CONFIG_INTERNAL_SHA1=y
960CONFIG_INTERNAL_MD4=y
961CONFIG_INTERNAL_MD5=y
962CONFIG_INTERNAL_SHA256=y
ac73690c 963CONFIG_INTERNAL_RC4=y
f042122a 964CONFIG_INTERNAL_DH_GROUP5=y
6fc6879b
JM
965endif
966ifeq ($(CONFIG_CRYPTO), cryptoapi)
967OBJS += ../src/crypto/crypto_cryptoapi.o
968OBJS_p += ../src/crypto/crypto_cryptoapi.o
969CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
970CONFIG_INTERNAL_SHA256=y
ac73690c 971CONFIG_INTERNAL_RC4=y
6fc6879b
JM
972endif
973endif
38b46286 974
6fc6879b 975ifeq ($(CONFIG_TLS), none)
38b46286
JM
976ifdef TLS_FUNCS
977OBJS += ../src/crypto/tls_none.o
978CFLAGS += -DEAP_TLS_NONE
979CONFIG_INTERNAL_AES=y
980CONFIG_INTERNAL_SHA1=y
981CONFIG_INTERNAL_MD5=y
982endif
6fc6879b
JM
983OBJS += ../src/crypto/crypto_none.o
984OBJS_p += ../src/crypto/crypto_none.o
985CONFIG_INTERNAL_SHA256=y
ac73690c 986CONFIG_INTERNAL_RC4=y
6fc6879b 987endif
38b46286
JM
988
989ifdef TLS_FUNCS
990ifdef CONFIG_SMARTCARD
991ifndef CONFIG_NATIVE_WINDOWS
992ifneq ($(CONFIG_L2_PACKET), freebsd)
993LIBS += -ldl
994endif
995endif
996endif
997endif
998
999ifndef TLS_FUNCS
1000OBJS += ../src/crypto/tls_none.o
1001ifeq ($(CONFIG_TLS), internal)
6fc6879b
JM
1002CONFIG_INTERNAL_AES=y
1003CONFIG_INTERNAL_SHA1=y
1004CONFIG_INTERNAL_MD5=y
9d388d50 1005CONFIG_INTERNAL_RC4=y
6fc6879b 1006endif
38b46286 1007endif
6fc6879b 1008
38b46286 1009AESOBJS = # none so far (see below)
6fc6879b 1010ifdef CONFIG_INTERNAL_AES
381fcbc9 1011AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o
6fc6879b 1012endif
38b46286
JM
1013
1014AESOBJS += ../src/crypto/aes-unwrap.o
bd4e9d03 1015ifdef NEED_AES_EAX
38b46286 1016AESOBJS += ../src/crypto/aes-eax.o
bd4e9d03
JM
1017NEED_AES_CTR=y
1018endif
1019ifdef NEED_AES_CTR
1020AESOBJS += ../src/crypto/aes-ctr.o
1021endif
1022ifdef NEED_AES_ENCBLOCK
38b46286 1023AESOBJS += ../src/crypto/aes-encblock.o
bd4e9d03
JM
1024endif
1025ifdef NEED_AES_OMAC1
279d859b 1026NEED_AES_ENC=y
38b46286 1027AESOBJS += ../src/crypto/aes-omac1.o
bd4e9d03
JM
1028endif
1029ifdef NEED_AES_WRAP
3afe7b61 1030NEED_AES_ENC=y
38b46286
JM
1031AESOBJS += ../src/crypto/aes-wrap.o
1032endif
1033ifdef NEED_AES_CBC
279d859b
MH
1034NEED_AES_ENC=y
1035AESOBJS += ../src/crypto/aes-cbc.o
1036endif
1037ifdef NEED_AES_ENC
38b46286
JM
1038ifdef CONFIG_INTERNAL_AES
1039AESOBJS += ../src/crypto/aes-internal-enc.o
1040endif
38b46286
JM
1041endif
1042ifdef NEED_AES
1043OBJS += $(AESOBJS)
38b46286
JM
1044endif
1045
1046ifdef NEED_SHA1
1047SHA1OBJS += ../src/crypto/sha1.o
6fc6879b 1048ifdef CONFIG_INTERNAL_SHA1
928a50a3 1049SHA1OBJS += ../src/crypto/sha1-internal.o
05edfe29
JB
1050ifdef NEED_FIPS186_2_PRF
1051SHA1OBJS += ../src/crypto/fips_prf_internal.o
1052endif
6fc6879b 1053endif
62b98282
JM
1054ifdef CONFIG_NO_WPA_PASSPHRASE
1055CFLAGS += -DCONFIG_NO_PBKDF2
1056else
38b46286
JM
1057SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
1058endif
1059ifdef NEED_T_PRF
1060SHA1OBJS += ../src/crypto/sha1-tprf.o
1061endif
1062ifdef NEED_TLS_PRF
1063SHA1OBJS += ../src/crypto/sha1-tlsprf.o
1064endif
1065endif
1066
1067MD5OBJS = ../src/crypto/md5.o
1068ifdef NEED_MD5
6fc6879b 1069ifdef CONFIG_INTERNAL_MD5
ad01a531 1070MD5OBJS += ../src/crypto/md5-internal.o
6fc6879b 1071endif
38b46286
JM
1072ifdef CONFIG_FIPS
1073MD5OBJS += ../src/crypto/md5-non-fips.o
6fc6879b 1074endif
38b46286 1075OBJS += $(MD5OBJS)
3e91d242 1076OBJS_p += $(MD5OBJS)
38b46286
JM
1077endif
1078
1079ifdef NEED_MD4
1080ifdef CONFIG_INTERNAL_MD4
1081OBJS += ../src/crypto/md4-internal.o
1082endif
1083endif
bd4e2895 1084
38b46286
JM
1085DESOBJS = # none needed when not internal
1086ifdef NEED_DES
6fc6879b 1087ifdef CONFIG_INTERNAL_DES
657f0381 1088DESOBJS += ../src/crypto/des-internal.o
6fc6879b 1089endif
38b46286 1090endif
6fc6879b 1091
38b46286 1092ifdef NEED_RC4
ac73690c
JM
1093ifdef CONFIG_INTERNAL_RC4
1094OBJS += ../src/crypto/rc4.o
1095endif
1d8ce433
JM
1096endif
1097
38b46286 1098SHA256OBJS = # none by default
6fc6879b 1099ifdef NEED_SHA256
00468b46 1100CFLAGS += -DCONFIG_SHA256
598a792d 1101SHA256OBJS += ../src/crypto/sha256.o
598a792d
JB
1102ifdef CONFIG_INTERNAL_SHA256
1103SHA256OBJS += ../src/crypto/sha256-internal.o
1104endif
83074898
JM
1105ifdef NEED_TLS_PRF_SHA256
1106SHA256OBJS += ../src/crypto/sha256-tlsprf.o
1107endif
598a792d 1108OBJS += $(SHA256OBJS)
38b46286
JM
1109endif
1110
38b46286
JM
1111ifdef NEED_DH_GROUPS
1112OBJS += ../src/crypto/dh_groups.o
38b46286 1113endif
38b46286 1114ifdef NEED_DH_GROUPS_ALL
38b46286
JM
1115CFLAGS += -DALL_DH_GROUPS
1116endif
50ceddcf
JM
1117ifdef CONFIG_INTERNAL_DH_GROUP5
1118ifdef NEED_DH_GROUPS
1119OBJS += ../src/crypto/dh_group5.o
1120endif
38b46286 1121endif
6fc6879b 1122
bbb921da
JM
1123ifdef CONFIG_NO_RANDOM_POOL
1124CFLAGS += -DCONFIG_NO_RANDOM_POOL
1125else
1126OBJS += ../src/crypto/random.o
1127endif
1128
6fc6879b
JM
1129ifdef CONFIG_CTRL_IFACE
1130ifeq ($(CONFIG_CTRL_IFACE), y)
1131ifdef CONFIG_NATIVE_WINDOWS
1132CONFIG_CTRL_IFACE=named_pipe
1133else
1134CONFIG_CTRL_IFACE=unix
1135endif
1136endif
1137CFLAGS += -DCONFIG_CTRL_IFACE
1138ifeq ($(CONFIG_CTRL_IFACE), unix)
1139CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1140endif
1141ifeq ($(CONFIG_CTRL_IFACE), udp)
1142CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1143endif
1144ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1145CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1146endif
1147OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
1148endif
1149
1150ifdef CONFIG_CTRL_IFACE_DBUS
8ddef94b 1151DBUS=y
8fc2fb56 1152DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
bacfd05f 1153DBUS_OBJS += dbus/dbus_old.o dbus/dbus_old_handlers.o
36da1358 1154ifdef CONFIG_WPS
bacfd05f 1155DBUS_OBJS += dbus/dbus_old_handlers_wps.o
36da1358 1156endif
19b3211d 1157DBUS_OBJS += dbus/dbus_dict_helpers.o
6fc6879b 1158ifndef DBUS_LIBS
572a171f 1159DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
6fc6879b 1160endif
6fc6879b 1161ifndef DBUS_INCLUDE
572a171f 1162DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
6fc6879b 1163endif
8fc2fb56
WS
1164DBUS_CFLAGS += $(DBUS_INCLUDE)
1165endif
1166
1167ifdef CONFIG_CTRL_IFACE_DBUS_NEW
8ddef94b 1168DBUS=y
8fc2fb56 1169DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
19b3211d 1170DBUS_OBJS ?= dbus/dbus_dict_helpers.o
a206a29a
JM
1171DBUS_OBJS += dbus/dbus_new_helpers.o
1172DBUS_OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o
36da1358
JM
1173ifdef CONFIG_WPS
1174DBUS_OBJS += dbus/dbus_new_handlers_wps.o
1175endif
9abafccc
JB
1176ifdef CONFIG_P2P
1177DBUS_OBJS += dbus/dbus_new_handlers_p2p.o
1178endif
8fc2fb56 1179ifndef DBUS_LIBS
572a171f 1180DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
8fc2fb56
WS
1181endif
1182ifndef DBUS_INCLUDE
572a171f 1183DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
8fc2fb56
WS
1184endif
1185ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
04551ee6 1186DBUS_OBJS += dbus/dbus_new_introspect.o
8fc2fb56 1187DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
6fc6879b 1188endif
8fc2fb56
WS
1189DBUS_CFLAGS += $(DBUS_INCLUDE)
1190endif
1191
8ddef94b
JM
1192ifdef DBUS
1193DBUS_CFLAGS += -DCONFIG_DBUS
1194DBUS_OBJS += dbus/dbus_common.o
1195endif
1196
8fc2fb56
WS
1197OBJS += $(DBUS_OBJS)
1198CFLAGS += $(DBUS_CFLAGS)
1199LIBS += $(DBUS_LIBS)
6fc6879b
JM
1200
1201ifdef CONFIG_READLINE
e8ecb5fb 1202OBJS_c += ../src/utils/edit_readline.o
6fc6879b 1203LIBS_c += -lncurses -lreadline
82a855bd 1204else
aee680e8 1205ifdef CONFIG_WPA_CLI_EDIT
82a855bd
JM
1206OBJS_c += ../src/utils/edit.o
1207else
1208OBJS_c += ../src/utils/edit_simple.o
1209endif
aee680e8
JM
1210endif
1211
6fc6879b
JM
1212ifdef CONFIG_NATIVE_WINDOWS
1213CFLAGS += -DCONFIG_NATIVE_WINDOWS
1214LIBS += -lws2_32 -lgdi32 -lcrypt32
1215LIBS_c += -lws2_32
1216LIBS_p += -lws2_32 -lgdi32
1217ifeq ($(CONFIG_CRYPTO), cryptoapi)
1218LIBS_p += -lcrypt32
1219endif
1220endif
1221
1222ifdef CONFIG_NO_STDOUT_DEBUG
1223CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1224ifndef CONFIG_CTRL_IFACE
1225CFLAGS += -DCONFIG_NO_WPA_MSG
1226endif
1227endif
1228
1229ifdef CONFIG_IPV6
1230# for eapol_test only
1231CFLAGS += -DCONFIG_IPV6
1232endif
1233
6fc6879b
JM
1234ifdef NEED_BASE64
1235OBJS += ../src/utils/base64.o
1236endif
1237
c2a04078 1238ifdef NEED_SME
20e26395 1239NEED_80211_COMMON=y
c2a04078
JM
1240OBJS += sme.o
1241CFLAGS += -DCONFIG_SME
1242endif
1243
26c9d7ea
JM
1244ifdef NEED_80211_COMMON
1245OBJS += ../src/common/ieee802_11_common.o
6fc6879b
JM
1246endif
1247
25c226ea
JM
1248ifdef NEED_EAP_COMMON
1249OBJS += ../src/eap_common/eap_common.o
1250endif
1251
6fc6879b
JM
1252ifndef CONFIG_MAIN
1253CONFIG_MAIN=main
1254endif
1255
cca87731
SL
1256ifdef CONFIG_DEBUG_SYSLOG
1257CFLAGS += -DCONFIG_DEBUG_SYSLOG
3e199621
SL
1258ifdef CONFIG_DEBUG_SYSLOG_FACILITY
1259CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
1260endif
cca87731
SL
1261endif
1262
6fc6879b
JM
1263ifdef CONFIG_DEBUG_FILE
1264CFLAGS += -DCONFIG_DEBUG_FILE
1265endif
1266
46690a3b
JM
1267ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1268CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1269endif
1270
577072b1
JM
1271ifdef CONFIG_FIPS
1272CFLAGS += -DCONFIG_FIPS
577072b1
JM
1273endif
1274
657f0381 1275OBJS += $(SHA1OBJS) $(DESOBJS)
928a50a3 1276
be473f3f 1277OBJS_p += $(SHA1OBJS)
48f24f93 1278OBJS_p += $(SHA256OBJS)
6fc6879b 1279
60b94c98
JM
1280ifdef CONFIG_BGSCAN_SIMPLE
1281CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1282OBJS += bgscan_simple.o
1283NEED_BGSCAN=y
1284endif
1285
c4d71c25
JM
1286ifdef CONFIG_BGSCAN_LEARN
1287CFLAGS += -DCONFIG_BGSCAN_LEARN
1288OBJS += bgscan_learn.o
1289NEED_BGSCAN=y
1290endif
1291
60b94c98
JM
1292ifdef NEED_BGSCAN
1293CFLAGS += -DCONFIG_BGSCAN
1294OBJS += bgscan.o
1295endif
1296
0c840c33
JM
1297ifdef NEED_GAS
1298OBJS += ../src/common/gas.o
04ea7b79
JM
1299OBJS += gas_query.o
1300CFLAGS += -DCONFIG_GAS
24f6497c
JM
1301NEED_OFFCHANNEL=y
1302endif
1303
1304ifdef NEED_OFFCHANNEL
1305OBJS += offchannel.o
1306CFLAGS += -DCONFIG_OFFCHANNEL
0c840c33
JM
1307endif
1308
aea855d7
JM
1309OBJS += ../src/drivers/driver_common.o
1310
17fbb751 1311OBJS_wpa_rm := ctrl_iface.o ctrl_iface_unix.o
6fc6879b
JM
1312OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.o
1313ifdef CONFIG_AUTHENTICATOR
1314OBJS_wpa += tests/link_test.o
1315endif
1316OBJS_wpa += $(OBJS_l2)
1317OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o
74784010
JM
1318OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o
1319OBJS_t += ../src/radius/radius_client.o
a7baefda 1320OBJS_t += ../src/radius/radius.o
74784010 1321ifndef CONFIG_AP
6fc6879b 1322OBJS_t += ../src/utils/ip_addr.o
74784010 1323endif
6fc6879b
JM
1324OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
1325OBJS += $(CONFIG_MAIN).o
1326
1327ifdef CONFIG_PRIVSEP
d1f9c410 1328OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o
6fc6879b
JM
1329OBJS_priv += $(OBJS_l2)
1330OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
1331OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
1332OBJS_priv += ../src/utils/common.o
1333OBJS_priv += ../src/utils/wpa_debug.o
716d543d 1334OBJS_priv += ../src/utils/wpabuf.o
6fc6879b 1335OBJS_priv += wpa_priv.o
8d263912
JM
1336ifdef CONFIG_DRIVER_NL80211
1337OBJS_priv += ../src/common/ieee802_11_common.o
1338endif
6fc6879b 1339ifdef CONFIG_DRIVER_TEST
928a50a3 1340OBJS_priv += $(SHA1OBJS)
ad01a531 1341OBJS_priv += $(MD5OBJS)
6fc6879b
JM
1342ifeq ($(CONFIG_TLS), openssl)
1343OBJS_priv += ../src/crypto/crypto_openssl.o
1344endif
1345ifeq ($(CONFIG_TLS), gnutls)
1346OBJS_priv += ../src/crypto/crypto_gnutls.o
1347endif
289ffc2b
JM
1348ifeq ($(CONFIG_TLS), nss)
1349OBJS_priv += ../src/crypto/crypto_nss.o
1350endif
6fc6879b
JM
1351ifeq ($(CONFIG_TLS), internal)
1352ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1353OBJS_priv += ../src/crypto/crypto_libtomcrypt.o
1354else
1355OBJS_priv += ../src/crypto/crypto_internal.o
1356endif
1357endif
1358endif # CONFIG_DRIVER_TEST
1359OBJS += ../src/l2_packet/l2_packet_privsep.o
1360OBJS += ../src/drivers/driver_privsep.o
1361EXTRA_progs += wpa_priv
1362else
1363OBJS += $(OBJS_d) ../src/drivers/drivers.o
1364OBJS += $(OBJS_l2)
1365endif
1366
1367ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1368CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1369OBJS += ../src/drivers/ndis_events.o
1370EXTRALIBS += -loleaut32 -lole32 -luuid
1371ifdef PLATFORMSDKLIB
1372EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1373else
1374EXTRALIBS += WbemUuid.Lib
1375endif
1376endif
1377
1378ifndef LDO
1379LDO=$(CC)
1380endif
1381
586bad51
JM
1382Q=@
1383E=echo
1384ifeq ($(V), 1)
1385Q=
1386E=true
1387endif
1388
6fc6879b
JM
1389dynamic_eap_methods: $(EAPDYN)
1390
ba30964b 1391../src/drivers/build.wpa_supplicant:
5008cb5e 1392 @if [ -f ../src/drivers/build.hostapd ]; then \
ba30964b
JM
1393 $(MAKE) -C ../src/drivers clean; \
1394 fi
1395 @touch ../src/drivers/build.wpa_supplicant
1396
1397BCHECK=../src/drivers/build.wpa_supplicant
1398
1399wpa_priv: $(BCHECK) $(OBJS_priv)
586bad51
JM
1400 $(Q)$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS)
1401 @$(E) " LD " $@
6fc6879b 1402
8205c82a
AD
1403$(OBJS_c) $(OBJS_t) $(OBJS_t2) $(OBJS) $(BCHECK) $(EXTRA_progs): .config
1404
1405wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
586bad51
JM
1406 $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
1407 @$(E) " LD " $@
6fc6879b 1408
8205c82a 1409eapol_test: $(OBJS_t)
586bad51
JM
1410 $(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
1411 @$(E) " LD " $@
6fc6879b 1412
8205c82a 1413preauth_test: $(OBJS_t2)
586bad51
JM
1414 $(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
1415 @$(E) " LD " $@
6fc6879b
JM
1416
1417wpa_passphrase: $(OBJS_p)
586bad51
JM
1418 $(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
1419 @$(E) " LD " $@
6fc6879b
JM
1420
1421wpa_cli: $(OBJS_c)
586bad51
JM
1422 $(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
1423 @$(E) " LD " $@
6fc6879b
JM
1424
1425link_test: $(OBJS) $(OBJS_h) tests/link_test.o
586bad51
JM
1426 $(Q)$(LDO) $(LDFLAGS) -o link_test $(OBJS) $(OBJS_h) tests/link_test.o $(LIBS)
1427 @$(E) " LD " $@
6fc6879b
JM
1428
1429test_wpa: $(OBJS_wpa) $(OBJS_h)
586bad51
JM
1430 $(Q)$(LDO) $(LDFLAGS) -o test_wpa $(OBJS_wpa) $(LIBS)
1431 @$(E) " LD " $@
6fc6879b 1432
6fc6879b 1433win_if_list: win_if_list.c
586bad51
JM
1434 $(Q)$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
1435 @$(E) " LD " $@
6fc6879b
JM
1436
1437eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
466940c5 1438 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1439 -Deap_peer_psk_register=eap_peer_method_dynamic_init
1440
1441eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
466940c5 1442 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1443 -Deap_peer_pax_register=eap_peer_method_dynamic_init
1444
1445eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
466940c5 1446 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1447 -Deap_peer_sake_register=eap_peer_method_dynamic_init
1448
ad08c363 1449eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c
466940c5 1450 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
ad08c363
JM
1451 -Deap_peer_wsc_register=eap_peer_method_dynamic_init
1452
6fc6879b 1453eap_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 1454 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
6fc6879b
JM
1455 -Deap_peer_ikev2_register=eap_peer_method_dynamic_init
1456
1457%.so: %.c
466940c5 1458 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
4c2660c2 1459 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
6fc6879b 1460
b2840aaf
JB
1461%.o: %.c
1462 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1463 @$(E) " CC " $<
6fc6879b 1464
f0573c79
HG
1465%.service: %.service.in
1466 sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
1467
6897ce14
JM
1468%@.service: %.service.arg.in
1469 sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
1470
6fc6879b
JM
1471wpa_supplicant.exe: wpa_supplicant
1472 mv -f $< $@
1473wpa_cli.exe: wpa_cli
1474 mv -f $< $@
1475wpa_passphrase.exe: wpa_passphrase
1476 mv -f $< $@
1477win_if_list.exe: win_if_list
1478 mv -f $< $@
1479eapol_test.exe: eapol_test
1480 mv -f $< $@
1481
1482WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
1483
1484windows-bin: $(WINALL)
1485 $(STRIP) $(WINALL)
1486
67a52064
JM
1487wpa_gui:
1488 @echo "wpa_gui has been removed - see wpa_gui-qt4 for replacement"
6fc6879b
JM
1489
1490wpa_gui-qt4/Makefile:
1491 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro
1492
0b86f67a
JM
1493wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts
1494 lrelease wpa_gui-qt4/wpa_gui.pro
1495
1496wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm
6fc6879b
JM
1497 $(MAKE) -C wpa_gui-qt4
1498
ad01a531 1499TEST_EAP_SIM_COMMON_OBJS = $(SHA1OBJS) $(MD5OBJS) \
246157cb
JB
1500 ../src/utils/common.o ../src/utils/os_unix.o \
1501 ../src/utils/wpa_debug.o $(AESOBJS) \
6fc6879b
JM
1502 tests/test_eap_sim_common.o
1503test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS)
03da66bd 1504 $(LDO) $(LDFLAGS) -o $@ $(TEST_EAP_SIM_COMMON_OBJS) $(LIBS)
6fc6879b
JM
1505 ./test-eap_sim_common
1506 rm test-eap_sim_common
1507
f8cf3ce6 1508tests: test-eap_sim_common
6fc6879b
JM
1509
1510clean:
1511 $(MAKE) -C ../src clean
eb3b34ce 1512 $(MAKE) -C dbus clean
8055fb78 1513 rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL) eapol_test preauth_test
385f16c6 1514 rm -f wpa_priv
6fc6879b 1515
6fc6879b 1516-include $(OBJS:%.o=%.d)