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