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