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