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