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