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