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