1ifndef CC
2CC=gcc
3endif
4
5ifndef CFLAGS
6CFLAGS = -MMD -Wall -g
7endif
8CFLAGS += $(EXTRACFLAGS)
9
10export LIBDIR ?= /usr/local/lib/
11export BINDIR ?= /usr/local/sbin/
12
13CFLAGS += -I../src
14CFLAGS += -I../src/crypto
15CFLAGS += -I../src/utils
16CFLAGS += -I../src/common
17CFLAGS += -I../src/rsn_supp
18
19CFLAGS += -ffunction-sections -fdata-sections
20LDFLAGS += -ffunction-sections -fdata-sections -Wl,--gc-sections
21
22ALL=wpa_supplicant wpa_passphrase wpa_cli
23
24all: verify_config $(ALL) dynamic_eap_methods
25
26verify_config:
27	@if [ ! -r .config ]; then \
28		echo 'Building wpa_supplicant requires a configuration file'; \
29		echo '(.config). See README for more instructions. You can'; \
30		echo 'run "cp defconfig .config" to create an example'; \
31		echo 'configuration.'; \
32		exit 1; \
33	fi
34
35mkconfig:
36	@if [ -e .config ]; then \
37		echo '.config exists - did not replace it'; \
38		exit 1; \
39	fi
40	echo CONFIG_DRIVER_HOSTAP=y >> .config
41	echo CONFIG_DRIVER_WEXT=y >> .config
42
43install: all
44	mkdir -p $(DESTDIR)$(BINDIR)
45	for i in $(ALL); do cp $$i $(DESTDIR)$(BINDIR)/$$i; done
46	$(MAKE) -C ../src install
47
48OBJS = config.o
49OBJS += ../src/utils/common.o
50OBJS += ../src/utils/wpa_debug.o
51OBJS += ../src/utils/wpabuf.o
52OBJS += ../src/crypto/md5.o
53OBJS += ../src/crypto/rc4.o
54OBJS += ../src/crypto/md4.o
55OBJS += ../src/crypto/sha1.o
56OBJS += ../src/crypto/des.o
57OBJS_p = wpa_passphrase.o
58OBJS_p += ../src/utils/common.o
59OBJS_p += ../src/utils/wpa_debug.o
60OBJS_p += ../src/crypto/md5.o
61OBJS_p += ../src/crypto/md4.o
62OBJS_p += ../src/crypto/sha1.o
63OBJS_p += ../src/crypto/des.o
64OBJS_c = wpa_cli.o ../src/common/wpa_ctrl.o
65
66-include .config
67
68ifndef CONFIG_OS
69ifdef CONFIG_NATIVE_WINDOWS
70CONFIG_OS=win32
71else
72CONFIG_OS=unix
73endif
74endif
75
76ifeq ($(CONFIG_OS), internal)
77CFLAGS += -DOS_NO_C_LIB_DEFINES
78endif
79
80OBJS += ../src/utils/os_$(CONFIG_OS).o
81OBJS_p += ../src/utils/os_$(CONFIG_OS).o
82OBJS_c += ../src/utils/os_$(CONFIG_OS).o
83
84ifndef CONFIG_ELOOP
85CONFIG_ELOOP=eloop
86endif
87OBJS += ../src/utils/$(CONFIG_ELOOP).o
88
89
90ifdef CONFIG_EAPOL_TEST
91CFLAGS += -Werror -DEAPOL_TEST
92endif
93
94ifndef CONFIG_BACKEND
95CONFIG_BACKEND=file
96endif
97
98ifeq ($(CONFIG_BACKEND), file)
99OBJS += config_file.o
100ifndef CONFIG_NO_CONFIG_BLOBS
101NEED_BASE64=y
102endif
103CFLAGS += -DCONFIG_BACKEND_FILE
104endif
105
106ifeq ($(CONFIG_BACKEND), winreg)
107OBJS += config_winreg.o
108endif
109
110ifeq ($(CONFIG_BACKEND), none)
111OBJS += config_none.o
112endif
113
114ifdef CONFIG_NO_CONFIG_WRITE
115CFLAGS += -DCONFIG_NO_CONFIG_WRITE
116endif
117
118ifdef CONFIG_NO_CONFIG_BLOBS
119CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
120endif
121
122ifdef CONFIG_NO_SCAN_PROCESSING
123CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
124endif
125
126ifdef CONFIG_DRIVER_HOSTAP
127CFLAGS += -DCONFIG_DRIVER_HOSTAP
128OBJS_d += ../src/drivers/driver_hostap.o
129CONFIG_WIRELESS_EXTENSION=y
130endif
131
132ifdef CONFIG_DRIVER_WEXT
133CFLAGS += -DCONFIG_DRIVER_WEXT
134CONFIG_WIRELESS_EXTENSION=y
135endif
136
137ifdef CONFIG_DRIVER_NL80211
138CFLAGS += -DCONFIG_DRIVER_NL80211
139OBJS_d += ../src/drivers/driver_nl80211.o
140LIBS += -lnl
141ifdef CONFIG_CLIENT_MLME
142OBJS_d += ../src/drivers/radiotap.o
143endif
144endif
145
146ifdef CONFIG_DRIVER_PRISM54
147CFLAGS += -DCONFIG_DRIVER_PRISM54
148OBJS_d += ../src/drivers/driver_prism54.o
149CONFIG_WIRELESS_EXTENSION=y
150endif
151
152ifdef CONFIG_DRIVER_HERMES
153CFLAGS += -DCONFIG_DRIVER_HERMES
154OBJS_d += ../src/drivers/driver_hermes.o
155CONFIG_WIRELESS_EXTENSION=y
156endif
157
158ifdef CONFIG_DRIVER_MADWIFI
159CFLAGS += -DCONFIG_DRIVER_MADWIFI
160OBJS_d += ../src/drivers/driver_madwifi.o
161CONFIG_WIRELESS_EXTENSION=y
162endif
163
164ifdef CONFIG_DRIVER_ATMEL
165CFLAGS += -DCONFIG_DRIVER_ATMEL
166OBJS_d += ../src/drivers/driver_atmel.o
167CONFIG_WIRELESS_EXTENSION=y
168endif
169
170ifdef CONFIG_DRIVER_NDISWRAPPER
171CFLAGS += -DCONFIG_DRIVER_NDISWRAPPER
172OBJS_d += ../src/drivers/driver_ndiswrapper.o
173CONFIG_WIRELESS_EXTENSION=y
174endif
175
176ifdef CONFIG_DRIVER_RALINK
177CFLAGS += -DCONFIG_DRIVER_RALINK
178OBJS_d += ../src/drivers/driver_ralink.o
179endif
180
181ifdef CONFIG_DRIVER_BROADCOM
182CFLAGS += -DCONFIG_DRIVER_BROADCOM
183OBJS_d += ../src/drivers/driver_broadcom.o
184endif
185
186ifdef CONFIG_DRIVER_IPW
187CFLAGS += -DCONFIG_DRIVER_IPW
188OBJS_d += ../src/drivers/driver_ipw.o
189CONFIG_WIRELESS_EXTENSION=y
190endif
191
192ifdef CONFIG_DRIVER_BSD
193CFLAGS += -DCONFIG_DRIVER_BSD
194OBJS_d += ../src/drivers/driver_bsd.o
195ifndef CONFIG_L2_PACKET
196CONFIG_L2_PACKET=freebsd
197endif
198endif
199
200ifdef CONFIG_DRIVER_NDIS
201CFLAGS += -DCONFIG_DRIVER_NDIS
202OBJS_d += ../src/drivers/driver_ndis.o
203ifdef CONFIG_NDIS_EVENTS_INTEGRATED
204OBJS_d += ../src/drivers/driver_ndis_.o
205endif
206ifndef CONFIG_L2_PACKET
207CONFIG_L2_PACKET=pcap
208endif
209CONFIG_WINPCAP=y
210ifdef CONFIG_USE_NDISUIO
211CFLAGS += -DCONFIG_USE_NDISUIO
212endif
213endif
214
215ifdef CONFIG_DRIVER_WIRED
216CFLAGS += -DCONFIG_DRIVER_WIRED
217OBJS_d += ../src/drivers/driver_wired.o
218endif
219
220ifdef CONFIG_DRIVER_TEST
221CFLAGS += -DCONFIG_DRIVER_TEST
222OBJS_d += ../src/drivers/driver_test.o
223endif
224
225ifdef CONFIG_DRIVER_OSX
226CFLAGS += -DCONFIG_DRIVER_OSX
227OBJS_d += ../src/drivers/driver_osx.o
228LDFLAGS += -framework CoreFoundation
229LDFLAGS += -F/System/Library/PrivateFrameworks -framework Apple80211
230endif
231
232ifdef CONFIG_DRIVER_PS3
233CFLAGS += -DCONFIG_DRIVER_PS3 -m64
234OBJS_d += ../src/drivers/driver_ps3.o
235LDFLAGS += -m64
236endif
237
238ifdef CONFIG_DRIVER_IPHONE
239CFLAGS += -DCONFIG_DRIVER_IPHONE
240OBJS_d += ../src/drivers/driver_iphone.o
241OBJS_d += ../src/drivers/MobileApple80211.o
242LIBS += -framework CoreFoundation
243endif
244
245ifdef CONFIG_DRIVER_ROBOSWITCH
246CFLAGS += -DCONFIG_DRIVER_ROBOSWITCH
247OBJS_d += ../src/drivers/driver_roboswitch.o
248endif
249
250ifndef CONFIG_L2_PACKET
251CONFIG_L2_PACKET=linux
252endif
253
254OBJS_l2 += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o
255
256ifeq ($(CONFIG_L2_PACKET), pcap)
257ifdef CONFIG_WINPCAP
258CFLAGS += -DCONFIG_WINPCAP
259LIBS += -lwpcap -lpacket
260LIBS_w += -lwpcap
261else
262LIBS += -ldnet -lpcap
263endif
264endif
265
266ifeq ($(CONFIG_L2_PACKET), winpcap)
267LIBS += -lwpcap -lpacket
268LIBS_w += -lwpcap
269endif
270
271ifeq ($(CONFIG_L2_PACKET), freebsd)
272LIBS += -lpcap
273endif
274
275ifdef CONFIG_EAP_TLS
276# EAP-TLS
277ifeq ($(CONFIG_EAP_TLS), dyn)
278CFLAGS += -DEAP_TLS_DYNAMIC
279EAPDYN += ../src/eap_peer/eap_tls.so
280else
281CFLAGS += -DEAP_TLS
282OBJS += ../src/eap_peer/eap_tls.o
283OBJS_h += ../src/eap_server/eap_tls.o
284endif
285TLS_FUNCS=y
286CONFIG_IEEE8021X_EAPOL=y
287endif
288
289ifdef CONFIG_EAP_PEAP
290# EAP-PEAP
291ifeq ($(CONFIG_EAP_PEAP), dyn)
292CFLAGS += -DEAP_PEAP_DYNAMIC
293EAPDYN += ../src/eap_peer/eap_peap.so
294else
295CFLAGS += -DEAP_PEAP
296OBJS += ../src/eap_peer/eap_peap.o
297OBJS += ../src/eap_common/eap_peap_common.o
298OBJS_h += ../src/eap_server/eap_peap.o
299endif
300TLS_FUNCS=y
301CONFIG_IEEE8021X_EAPOL=y
302endif
303
304ifdef CONFIG_EAP_TTLS
305# EAP-TTLS
306ifeq ($(CONFIG_EAP_TTLS), dyn)
307CFLAGS += -DEAP_TTLS_DYNAMIC
308EAPDYN += ../src/eap_peer/eap_ttls.so
309else
310CFLAGS += -DEAP_TTLS
311OBJS += ../src/eap_peer/eap_ttls.o
312OBJS_h += ../src/eap_server/eap_ttls.o
313endif
314MS_FUNCS=y
315TLS_FUNCS=y
316CHAP=y
317CONFIG_IEEE8021X_EAPOL=y
318endif
319
320ifdef CONFIG_EAP_MD5
321# EAP-MD5
322ifeq ($(CONFIG_EAP_MD5), dyn)
323CFLAGS += -DEAP_MD5_DYNAMIC
324EAPDYN += ../src/eap_peer/eap_md5.so
325else
326CFLAGS += -DEAP_MD5
327OBJS += ../src/eap_peer/eap_md5.o
328OBJS_h += ../src/eap_server/eap_md5.o
329endif
330CHAP=y
331CONFIG_IEEE8021X_EAPOL=y
332endif
333
334# backwards compatibility for old spelling
335ifdef CONFIG_MSCHAPV2
336ifndef CONFIG_EAP_MSCHAPV2
337CONFIG_EAP_MSCHAPV2=y
338endif
339endif
340
341ifdef CONFIG_EAP_MSCHAPV2
342# EAP-MSCHAPv2
343ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
344CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
345EAPDYN += ../src/eap_peer/eap_mschapv2.so
346EAPDYN += ../src/eap_peer/mschapv2.so
347else
348CFLAGS += -DEAP_MSCHAPv2
349OBJS += ../src/eap_peer/eap_mschapv2.o
350OBJS += ../src/eap_peer/mschapv2.o
351OBJS_h += ../src/eap_server/eap_mschapv2.o
352endif
353MS_FUNCS=y
354CONFIG_IEEE8021X_EAPOL=y
355endif
356
357ifdef CONFIG_EAP_GTC
358# EAP-GTC
359ifeq ($(CONFIG_EAP_GTC), dyn)
360CFLAGS += -DEAP_GTC_DYNAMIC
361EAPDYN += ../src/eap_peer/eap_gtc.so
362else
363CFLAGS += -DEAP_GTC
364OBJS += ../src/eap_peer/eap_gtc.o
365OBJS_h += ../src/eap_server/eap_gtc.o
366endif
367CONFIG_IEEE8021X_EAPOL=y
368endif
369
370ifdef CONFIG_EAP_OTP
371# EAP-OTP
372ifeq ($(CONFIG_EAP_OTP), dyn)
373CFLAGS += -DEAP_OTP_DYNAMIC
374EAPDYN += ../src/eap_peer/eap_otp.so
375else
376CFLAGS += -DEAP_OTP
377OBJS += ../src/eap_peer/eap_otp.o
378endif
379CONFIG_IEEE8021X_EAPOL=y
380endif
381
382ifdef CONFIG_EAP_SIM
383# EAP-SIM
384ifeq ($(CONFIG_EAP_SIM), dyn)
385CFLAGS += -DEAP_SIM_DYNAMIC
386EAPDYN += ../src/eap_peer/eap_sim.so
387else
388CFLAGS += -DEAP_SIM
389OBJS += ../src/eap_peer/eap_sim.o
390OBJS_h += ../src/eap_server/eap_sim.o
391endif
392CONFIG_IEEE8021X_EAPOL=y
393CONFIG_EAP_SIM_COMMON=y
394endif
395
396ifdef CONFIG_EAP_LEAP
397# EAP-LEAP
398ifeq ($(CONFIG_EAP_LEAP), dyn)
399CFLAGS += -DEAP_LEAP_DYNAMIC
400EAPDYN += ../src/eap_peer/eap_leap.so
401else
402CFLAGS += -DEAP_LEAP
403OBJS += ../src/eap_peer/eap_leap.o
404endif
405MS_FUNCS=y
406CONFIG_IEEE8021X_EAPOL=y
407endif
408
409ifdef CONFIG_EAP_PSK
410# EAP-PSK
411ifeq ($(CONFIG_EAP_PSK), dyn)
412CFLAGS += -DEAP_PSK_DYNAMIC
413EAPDYN += ../src/eap_peer/eap_psk.so
414else
415CFLAGS += -DEAP_PSK
416OBJS += ../src/eap_peer/eap_psk.o ../src/eap_common/eap_psk_common.o
417OBJS_h += ../src/eap_server/eap_psk.o
418endif
419CONFIG_IEEE8021X_EAPOL=y
420NEED_AES=y
421endif
422
423ifdef CONFIG_EAP_AKA
424# EAP-AKA
425ifeq ($(CONFIG_EAP_AKA), dyn)
426CFLAGS += -DEAP_AKA_DYNAMIC
427EAPDYN += ../src/eap_peer/eap_aka.so
428else
429CFLAGS += -DEAP_AKA
430OBJS += ../src/eap_peer/eap_aka.o
431OBJS_h += ../src/eap_server/eap_aka.o
432endif
433CONFIG_IEEE8021X_EAPOL=y
434CONFIG_EAP_SIM_COMMON=y
435endif
436
437ifdef CONFIG_EAP_AKA_PRIME
438# EAP-AKA'
439ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
440CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
441else
442CFLAGS += -DEAP_AKA_PRIME
443endif
444NEED_SHA256=y
445endif
446
447ifdef CONFIG_EAP_SIM_COMMON
448OBJS += ../src/eap_common/eap_sim_common.o
449OBJS_h += ../src/eap_server/eap_sim_db.o
450NEED_AES=y
451NEED_FIPS186_2_PRF=y
452endif
453
454ifdef CONFIG_EAP_FAST
455# EAP-FAST
456ifeq ($(CONFIG_EAP_FAST), dyn)
457CFLAGS += -DEAP_FAST_DYNAMIC
458EAPDYN += ../src/eap_peer/eap_fast.so
459EAPDYN += ../src/eap_common/eap_fast_common.o
460else
461CFLAGS += -DEAP_FAST
462OBJS += ../src/eap_peer/eap_fast.o ../src/eap_peer/eap_fast_pac.o
463OBJS += ../src/eap_common/eap_fast_common.o
464OBJS_h += ../src/eap_server/eap_fast.o
465endif
466TLS_FUNCS=y
467CONFIG_IEEE8021X_EAPOL=y
468NEED_T_PRF=y
469endif
470
471ifdef CONFIG_EAP_PAX
472# EAP-PAX
473ifeq ($(CONFIG_EAP_PAX), dyn)
474CFLAGS += -DEAP_PAX_DYNAMIC
475EAPDYN += ../src/eap_peer/eap_pax.so
476else
477CFLAGS += -DEAP_PAX
478OBJS += ../src/eap_peer/eap_pax.o ../src/eap_common/eap_pax_common.o
479OBJS_h += ../src/eap_server/eap_pax.o
480endif
481CONFIG_IEEE8021X_EAPOL=y
482endif
483
484ifdef CONFIG_EAP_SAKE
485# EAP-SAKE
486ifeq ($(CONFIG_EAP_SAKE), dyn)
487CFLAGS += -DEAP_SAKE_DYNAMIC
488EAPDYN += ../src/eap_peer/eap_sake.so
489else
490CFLAGS += -DEAP_SAKE
491OBJS += ../src/eap_peer/eap_sake.o ../src/eap_common/eap_sake_common.o
492OBJS_h += ../src/eap_server/eap_sake.o
493endif
494CONFIG_IEEE8021X_EAPOL=y
495endif
496
497ifdef CONFIG_EAP_GPSK
498# EAP-GPSK
499ifeq ($(CONFIG_EAP_GPSK), dyn)
500CFLAGS += -DEAP_GPSK_DYNAMIC
501EAPDYN += ../src/eap_peer/eap_gpsk.so
502else
503CFLAGS += -DEAP_GPSK
504OBJS += ../src/eap_peer/eap_gpsk.o ../src/eap_common/eap_gpsk_common.o
505OBJS_h += ../src/eap_server/eap_gpsk.o
506endif
507CONFIG_IEEE8021X_EAPOL=y
508ifdef CONFIG_EAP_GPSK_SHA256
509CFLAGS += -DEAP_GPSK_SHA256
510endif
511NEED_SHA256=y
512endif
513
514ifdef CONFIG_WPS
515# EAP-WSC
516CFLAGS += -DCONFIG_WPS -DEAP_WSC
517OBJS += wps_supplicant.o
518OBJS += ../src/utils/uuid.o
519OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o
520OBJS += ../src/wps/wps.o
521OBJS += ../src/wps/wps_common.o
522OBJS += ../src/wps/wps_attr_parse.o
523OBJS += ../src/wps/wps_attr_build.o
524OBJS += ../src/wps/wps_attr_process.o
525OBJS += ../src/wps/wps_dev_attr.o
526OBJS += ../src/wps/wps_enrollee.o
527OBJS += ../src/wps/wps_registrar.o
528OBJS_h += ../src/eap_server/eap_wsc.o
529CONFIG_IEEE8021X_EAPOL=y
530NEED_DH_GROUPS=y
531NEED_SHA256=y
532NEED_BASE64=y
533NEED_CRYPTO=y
534NEED_80211_COMMON=y
535
536ifdef CONFIG_WPS_UPNP
537CFLAGS += -DCONFIG_WPS_UPNP
538OBJS += ../src/wps/wps_upnp.o
539OBJS += ../src/wps/wps_upnp_ssdp.o
540OBJS += ../src/wps/wps_upnp_web.o
541OBJS += ../src/wps/wps_upnp_event.o
542OBJS += ../src/wps/httpread.o
543endif
544
545endif
546
547ifdef CONFIG_EAP_IKEV2
548# EAP-IKEv2
549ifeq ($(CONFIG_EAP_IKEV2), dyn)
550CFLAGS += -DEAP_IKEV2_DYNAMIC
551EAPDYN += ../src/eap_peer/eap_ikev2.so ../src/eap_peer/ikev2.o
552EAPDYN += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
553else
554CFLAGS += -DEAP_IKEV2
555OBJS += ../src/eap_peer/eap_ikev2.o ../src/eap_peer/ikev2.o
556OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
557OBJS_h += ../src/eap_server/eap_ikev2.o
558OBJS_h += ../src/eap_server/ikev2.o
559endif
560CONFIG_IEEE8021X_EAPOL=y
561NEED_DH_GROUPS=y
562NEED_DH_GROUPS_ALL=y
563endif
564
565ifdef CONFIG_EAP_VENDOR_TEST
566ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
567CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
568EAPDYN += ../src/eap_peer/eap_vendor_test.so
569else
570CFLAGS += -DEAP_VENDOR_TEST
571OBJS += ../src/eap_peer/eap_vendor_test.o
572OBJS_h += ../src/eap_server/eap_vendor_test.o
573endif
574CONFIG_IEEE8021X_EAPOL=y
575endif
576
577ifdef CONFIG_EAP_TNC
578# EAP-TNC
579CFLAGS += -DEAP_TNC
580OBJS += ../src/eap_peer/eap_tnc.o
581OBJS += ../src/eap_peer/tncc.o
582NEED_BASE64=y
583ifndef CONFIG_NATIVE_WINDOWS
584ifndef CONFIG_DRIVER_BSD
585LIBS += -ldl
586endif
587endif
588endif
589
590ifdef CONFIG_IEEE8021X_EAPOL
591# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
592CFLAGS += -DIEEE8021X_EAPOL
593OBJS += ../src/eapol_supp/eapol_supp_sm.o ../src/eap_peer/eap.o ../src/eap_common/eap_common.o ../src/eap_peer/eap_methods.o
594ifdef CONFIG_DYNAMIC_EAP_METHODS
595CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
596LIBS += -ldl -rdynamic
597endif
598endif
599
600ifdef CONFIG_EAP_SERVER
601CFLAGS += -DEAP_SERVER
602OBJS_h += ../src/eap_server/eap.o
603OBJS_h += ../src/eap_server/eap_identity.o
604OBJS_h += ../src/eap_server/eap_methods.o
605endif
606
607ifdef CONFIG_RADIUS_CLIENT
608OBJS_h += ../src/utils/ip_addr.o
609OBJS_h += ../src/radius/radius.o
610OBJS_h += ../src/radius/radius_client.o
611endif
612
613ifdef CONFIG_AUTHENTICATOR
614OBJS_h += ../hostapd/eapol_sm.o
615OBJS_h += ../hostapd/ieee802_1x.o
616endif
617
618ifdef CONFIG_WPA_AUTHENTICATOR
619OBJS_h += ../hostapd/wpa.o
620OBJS_h += ../hostapd/wpa_auth_ie.o
621ifdef CONFIG_IEEE80211R
622OBJS_h += ../hostapd/wpa_ft.o
623endif
624ifdef CONFIG_PEERKEY
625OBJS_h += ../hostapd/peerkey.o
626endif
627endif
628
629ifdef CONFIG_PCSC
630# PC/SC interface for smartcards (USIM, GSM SIM)
631CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
632OBJS += ../src/utils/pcsc_funcs.o
633# -lpthread may not be needed depending on how pcsc-lite was configured
634ifdef CONFIG_NATIVE_WINDOWS
635#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
636#dynamic symbol loading that is now used in pcsc_funcs.c
637#LIBS += -lwinscard
638else
639LIBS += -lpcsclite -lpthread
640endif
641endif
642
643ifdef CONFIG_SIM_SIMULATOR
644CFLAGS += -DCONFIG_SIM_SIMULATOR
645NEED_MILENAGE=y
646endif
647
648ifdef CONFIG_USIM_SIMULATOR
649CFLAGS += -DCONFIG_USIM_SIMULATOR
650NEED_MILENAGE=y
651endif
652
653ifdef NEED_MILENAGE
654OBJS += ../src/hlr_auc_gw/milenage.o
655endif
656
657ifndef CONFIG_TLS
658CONFIG_TLS=openssl
659endif
660
661ifeq ($(CONFIG_TLS), internal)
662ifndef CONFIG_CRYPTO
663CONFIG_CRYPTO=internal
664endif
665endif
666ifeq ($(CONFIG_CRYPTO), libtomcrypt)
667CFLAGS += -DCONFIG_INTERNAL_X509
668endif
669ifeq ($(CONFIG_CRYPTO), internal)
670CFLAGS += -DCONFIG_INTERNAL_X509
671endif
672
673
674ifdef TLS_FUNCS
675# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
676CFLAGS += -DEAP_TLS_FUNCS
677OBJS += ../src/eap_peer/eap_tls_common.o
678OBJS_h += ../src/eap_server/eap_tls_common.o
679NEED_TLS_PRF=y
680ifeq ($(CONFIG_TLS), openssl)
681CFLAGS += -DEAP_TLS_OPENSSL
682OBJS += ../src/crypto/tls_openssl.o
683LIBS += -lssl -lcrypto
684LIBS_p += -lcrypto
685endif
686ifeq ($(CONFIG_TLS), gnutls)
687OBJS += ../src/crypto/tls_gnutls.o
688LIBS += -lgnutls -lgcrypt -lgpg-error
689LIBS_p += -lgcrypt
690ifdef CONFIG_GNUTLS_EXTRA
691CFLAGS += -DCONFIG_GNUTLS_EXTRA
692LIBS += -lgnutls-extra
693endif
694endif
695ifeq ($(CONFIG_TLS), schannel)
696OBJS += ../src/crypto/tls_schannel.o
697endif
698ifeq ($(CONFIG_TLS), internal)
699OBJS += ../src/crypto/tls_internal.o
700OBJS += ../src/tls/tlsv1_common.o ../src/tls/tlsv1_record.o
701OBJS += ../src/tls/tlsv1_cred.o ../src/tls/tlsv1_client.o
702OBJS += ../src/tls/tlsv1_client_write.o ../src/tls/tlsv1_client_read.o
703OBJS += ../src/tls/asn1.o ../src/tls/rsa.o ../src/tls/x509v3.o
704OBJS_p += ../src/tls/asn1.o ../src/tls/rsa.o
705OBJS_p += ../src/crypto/rc4.o ../src/crypto/aes_wrap.o ../src/crypto/aes.o
706NEED_BASE64=y
707NEED_TLS_PRF=y
708CFLAGS += -DCONFIG_TLS_INTERNAL
709CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
710ifeq ($(CONFIG_CRYPTO), internal)
711endif
712ifeq ($(CONFIG_CRYPTO), libtomcrypt)
713LIBS += -ltomcrypt -ltfm
714LIBS_p += -ltomcrypt -ltfm
715endif
716endif
717ifeq ($(CONFIG_TLS), none)
718OBJS += ../src/crypto/tls_none.o
719CFLAGS += -DEAP_TLS_NONE
720CONFIG_INTERNAL_AES=y
721CONFIG_INTERNAL_SHA1=y
722CONFIG_INTERNAL_MD5=y
723CONFIG_INTERNAL_SHA256=y
724endif
725ifdef CONFIG_SMARTCARD
726ifndef CONFIG_NATIVE_WINDOWS
727ifneq ($(CONFIG_L2_PACKET), freebsd)
728LIBS += -ldl
729endif
730endif
731endif
732NEED_CRYPTO=y
733else
734OBJS += ../src/crypto/tls_none.o
735endif
736
737ifdef CONFIG_PKCS12
738CFLAGS += -DPKCS12_FUNCS
739endif
740
741ifdef CONFIG_SMARTCARD
742CFLAGS += -DCONFIG_SMARTCARD
743endif
744
745ifdef MS_FUNCS
746OBJS += ../src/crypto/ms_funcs.o
747NEED_CRYPTO=y
748endif
749
750ifdef CHAP
751OBJS += ../src/eap_common/chap.o
752endif
753
754ifdef NEED_CRYPTO
755ifndef TLS_FUNCS
756ifeq ($(CONFIG_TLS), openssl)
757LIBS += -lcrypto
758LIBS_p += -lcrypto
759endif
760ifeq ($(CONFIG_TLS), gnutls)
761LIBS += -lgcrypt
762LIBS_p += -lgcrypt
763endif
764ifeq ($(CONFIG_TLS), schannel)
765endif
766ifeq ($(CONFIG_TLS), internal)
767ifeq ($(CONFIG_CRYPTO), libtomcrypt)
768LIBS += -ltomcrypt -ltfm
769LIBS_p += -ltomcrypt -ltfm
770endif
771endif
772endif
773ifeq ($(CONFIG_TLS), openssl)
774OBJS += ../src/crypto/crypto_openssl.o
775OBJS_p += ../src/crypto/crypto_openssl.o
776CONFIG_INTERNAL_SHA256=y
777endif
778ifeq ($(CONFIG_TLS), gnutls)
779OBJS += ../src/crypto/crypto_gnutls.o
780OBJS_p += ../src/crypto/crypto_gnutls.o
781CONFIG_INTERNAL_SHA256=y
782endif
783ifeq ($(CONFIG_TLS), schannel)
784OBJS += ../src/crypto/crypto_cryptoapi.o
785OBJS_p += ../src/crypto/crypto_cryptoapi.o
786CONFIG_INTERNAL_SHA256=y
787endif
788ifeq ($(CONFIG_TLS), internal)
789ifeq ($(CONFIG_CRYPTO), libtomcrypt)
790OBJS += ../src/crypto/crypto_libtomcrypt.o
791OBJS_p += ../src/crypto/crypto_libtomcrypt.o
792CONFIG_INTERNAL_SHA256=y
793endif
794ifeq ($(CONFIG_CRYPTO), internal)
795OBJS += ../src/crypto/crypto_internal.o ../src/tls/bignum.o
796OBJS_p += ../src/crypto/crypto_internal.o ../src/tls/bignum.o
797CFLAGS += -DCONFIG_CRYPTO_INTERNAL
798ifdef CONFIG_INTERNAL_LIBTOMMATH
799CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
800ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
801CFLAGS += -DLTM_FAST
802endif
803else
804LIBS += -ltommath
805LIBS_p += -ltommath
806endif
807CONFIG_INTERNAL_AES=y
808CONFIG_INTERNAL_DES=y
809CONFIG_INTERNAL_SHA1=y
810CONFIG_INTERNAL_MD4=y
811CONFIG_INTERNAL_MD5=y
812CONFIG_INTERNAL_SHA256=y
813endif
814ifeq ($(CONFIG_CRYPTO), cryptoapi)
815OBJS += ../src/crypto/crypto_cryptoapi.o
816OBJS_p += ../src/crypto/crypto_cryptoapi.o
817CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
818CONFIG_INTERNAL_SHA256=y
819endif
820endif
821ifeq ($(CONFIG_TLS), none)
822OBJS += ../src/crypto/crypto_none.o
823OBJS_p += ../src/crypto/crypto_none.o
824CONFIG_INTERNAL_SHA256=y
825endif
826else
827CONFIG_INTERNAL_AES=y
828CONFIG_INTERNAL_SHA1=y
829CONFIG_INTERNAL_MD5=y
830endif
831
832ifdef CONFIG_INTERNAL_AES
833CFLAGS += -DINTERNAL_AES
834endif
835ifdef CONFIG_INTERNAL_SHA1
836CFLAGS += -DINTERNAL_SHA1
837endif
838ifdef CONFIG_INTERNAL_SHA256
839CFLAGS += -DINTERNAL_SHA256
840endif
841ifdef CONFIG_INTERNAL_MD5
842CFLAGS += -DINTERNAL_MD5
843endif
844ifdef CONFIG_INTERNAL_MD4
845CFLAGS += -DINTERNAL_MD4
846endif
847ifdef CONFIG_INTERNAL_DES
848CFLAGS += -DINTERNAL_DES
849endif
850
851ifdef CONFIG_IEEE80211R
852NEED_SHA256=y
853endif
854
855ifdef CONFIG_IEEE80211W
856CFLAGS += -DCONFIG_IEEE80211W
857NEED_SHA256=y
858endif
859
860ifdef NEED_SHA256
861OBJS += ../src/crypto/sha256.o
862CFLAGS += -DNEED_SHA256
863endif
864
865ifdef CONFIG_WIRELESS_EXTENSION
866OBJS_d += ../src/drivers/driver_wext.o
867endif
868
869ifdef CONFIG_CTRL_IFACE
870ifeq ($(CONFIG_CTRL_IFACE), y)
871ifdef CONFIG_NATIVE_WINDOWS
872CONFIG_CTRL_IFACE=named_pipe
873else
874CONFIG_CTRL_IFACE=unix
875endif
876endif
877CFLAGS += -DCONFIG_CTRL_IFACE
878ifeq ($(CONFIG_CTRL_IFACE), unix)
879CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
880endif
881ifeq ($(CONFIG_CTRL_IFACE), udp)
882CFLAGS += -DCONFIG_CTRL_IFACE_UDP
883endif
884ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
885CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
886endif
887OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
888endif
889
890ifdef CONFIG_CTRL_IFACE_DBUS
891CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
892OBJS += ctrl_iface_dbus.o ctrl_iface_dbus_handlers.o dbus_dict_helpers.o
893ifndef DBUS_LIBS
894DBUS_LIBS := $(shell pkg-config --libs dbus-1)
895endif
896LIBS += $(DBUS_LIBS)
897ifndef DBUS_INCLUDE
898DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1)
899endif
900dbus_version=$(subst ., ,$(shell pkg-config --modversion dbus-1))
901DBUS_VERSION_MAJOR=$(word 1,$(dbus_version))
902DBUS_VERSION_MINOR=$(word 2,$(dbus_version))
903ifeq ($(DBUS_VERSION_MAJOR),)
904DBUS_VERSION_MAJOR=0
905endif
906ifeq ($(DBUS_VERSION_MINOR),)
907DBUS_VERSION_MINOR=0
908endif
909DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR)
910DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR)
911CFLAGS += $(DBUS_INCLUDE)
912endif
913
914ifdef CONFIG_READLINE
915CFLAGS += -DCONFIG_READLINE
916LIBS_c += -lncurses -lreadline
917endif
918
919ifdef CONFIG_NATIVE_WINDOWS
920CFLAGS += -DCONFIG_NATIVE_WINDOWS
921LIBS += -lws2_32 -lgdi32 -lcrypt32
922LIBS_c += -lws2_32
923LIBS_p += -lws2_32 -lgdi32
924ifeq ($(CONFIG_CRYPTO), cryptoapi)
925LIBS_p += -lcrypt32
926endif
927endif
928
929ifdef CONFIG_NO_STDOUT_DEBUG
930CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
931ifndef CONFIG_CTRL_IFACE
932CFLAGS += -DCONFIG_NO_WPA_MSG
933endif
934endif
935
936ifdef CONFIG_IPV6
937# for eapol_test only
938CFLAGS += -DCONFIG_IPV6
939endif
940
941ifdef CONFIG_PEERKEY
942CFLAGS += -DCONFIG_PEERKEY
943endif
944
945ifdef CONFIG_IEEE80211R
946CFLAGS += -DCONFIG_IEEE80211R
947OBJS += ../src/rsn_supp/wpa_ft.o
948endif
949
950ifndef CONFIG_NO_WPA
951OBJS += ../src/rsn_supp/wpa.o
952OBJS += ../src/rsn_supp/preauth.o
953OBJS += ../src/rsn_supp/pmksa_cache.o
954OBJS += ../src/rsn_supp/peerkey.o
955OBJS += ../src/rsn_supp/wpa_ie.o
956OBJS += ../src/common/wpa_common.o
957NEED_AES=y
958else
959CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2
960endif
961
962ifdef CONFIG_NO_WPA2
963CFLAGS += -DCONFIG_NO_WPA2
964endif
965
966ifdef CONFIG_NO_WPA_PASSPHRASE
967CFLAGS += -DCONFIG_NO_PBKDF2
968endif
969
970ifdef CONFIG_NO_AES_EXTRAS
971CFLAGS += -DCONFIG_NO_AES_WRAP
972CFLAGS += -DCONFIG_NO_AES_CTR -DCONFIG_NO_AES_OMAC1
973CFLAGS += -DCONFIG_NO_AES_EAX -DCONFIG_NO_AES_CBC
974CFLAGS += -DCONFIG_NO_AES_ENCRYPT
975CFLAGS += -DCONFIG_NO_AES_ENCRYPT_BLOCK
976endif
977
978ifdef NEED_AES
979OBJS += ../src/crypto/aes_wrap.o ../src/crypto/aes.o
980endif
981
982ifdef NEED_DH_GROUPS
983OBJS += ../src/crypto/dh_groups.o
984ifdef NEED_DH_GROUPS_ALL
985CFLAGS += -DALL_DH_GROUPS
986endif
987endif
988
989ifndef NEED_FIPS186_2_PRF
990CFLAGS += -DCONFIG_NO_FIPS186_2_PRF
991endif
992
993ifndef NEED_T_PRF
994CFLAGS += -DCONFIG_NO_T_PRF
995endif
996
997ifndef NEED_TLS_PRF
998CFLAGS += -DCONFIG_NO_TLS_PRF
999endif
1000
1001ifdef NEED_BASE64
1002OBJS += ../src/utils/base64.o
1003endif
1004
1005ifdef CONFIG_CLIENT_MLME
1006OBJS += mlme.o ../src/common/ieee802_11_common.o
1007CFLAGS += -DCONFIG_CLIENT_MLME
1008endif
1009
1010ifndef CONFIG_MAIN
1011CONFIG_MAIN=main
1012endif
1013
1014ifdef CONFIG_DEBUG_SYSLOG
1015CFLAGS += -DCONFIG_DEBUG_SYSLOG
1016endif
1017
1018ifdef CONFIG_DEBUG_FILE
1019CFLAGS += -DCONFIG_DEBUG_FILE
1020endif
1021
1022ifdef CONFIG_DEBUG_SYSLOG
1023CFLAGS += -DCONFIG_DEBUG_SYSLOG
1024endif
1025
1026ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1027CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1028endif
1029
1030OBJS += ../src/drivers/scan_helpers.o
1031
1032OBJS_wpa_rm := ctrl_iface.o mlme.o ctrl_iface_unix.o
1033OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.o
1034ifdef CONFIG_AUTHENTICATOR
1035OBJS_wpa += tests/link_test.o
1036endif
1037OBJS_wpa += $(OBJS_l2)
1038OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o
1039OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o ../src/radius/radius.o ../src/radius/radius_client.o
1040OBJS_t += ../src/utils/ip_addr.o
1041OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
1042OBJS += $(CONFIG_MAIN).o
1043
1044ifdef CONFIG_PRIVSEP
1045OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o ../src/drivers/scan_helpers.o
1046OBJS_priv += $(OBJS_l2)
1047OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
1048OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
1049OBJS_priv += ../src/utils/common.o
1050OBJS_priv += ../src/utils/wpa_debug.o
1051OBJS_priv += ../src/utils/wpabuf.o
1052OBJS_priv += wpa_priv.o
1053ifdef CONFIG_DRIVER_TEST
1054OBJS_priv += ../src/crypto/sha1.o
1055OBJS_priv += ../src/crypto/md5.o
1056ifeq ($(CONFIG_TLS), openssl)
1057OBJS_priv += ../src/crypto/crypto_openssl.o
1058endif
1059ifeq ($(CONFIG_TLS), gnutls)
1060OBJS_priv += ../src/crypto/crypto_gnutls.o
1061endif
1062ifeq ($(CONFIG_TLS), internal)
1063ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1064OBJS_priv += ../src/crypto/crypto_libtomcrypt.o
1065else
1066OBJS_priv += ../src/crypto/crypto_internal.o
1067endif
1068endif
1069endif # CONFIG_DRIVER_TEST
1070OBJS += ../src/l2_packet/l2_packet_privsep.o
1071OBJS += ../src/drivers/driver_privsep.o
1072EXTRA_progs += wpa_priv
1073else
1074OBJS += $(OBJS_d) ../src/drivers/drivers.o
1075OBJS += $(OBJS_l2)
1076endif
1077
1078ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1079CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1080OBJS += ../src/drivers/ndis_events.o
1081EXTRALIBS += -loleaut32 -lole32 -luuid
1082ifdef PLATFORMSDKLIB
1083EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1084else
1085EXTRALIBS += WbemUuid.Lib
1086endif
1087endif
1088
1089ifndef LDO
1090LDO=$(CC)
1091endif
1092
1093dynamic_eap_methods: $(EAPDYN)
1094
1095wpa_priv: $(OBJS_priv)
1096	$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS)
1097
1098wpa_supplicant: .config $(OBJS) $(EXTRA_progs)
1099	$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
1100
1101eapol_test: .config $(OBJS_t)
1102	$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
1103
1104preauth_test: .config $(OBJS_t2) 
1105	$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
1106
1107wpa_passphrase: $(OBJS_p)
1108	$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
1109
1110wpa_cli: $(OBJS_c)
1111	$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
1112
1113link_test: $(OBJS) $(OBJS_h) tests/link_test.o
1114	$(LDO) $(LDFLAGS) -o link_test $(OBJS) $(OBJS_h) tests/link_test.o $(LIBS)
1115
1116test_wpa: $(OBJS_wpa) $(OBJS_h)
1117	$(LDO) $(LDFLAGS) -o test_wpa $(OBJS_wpa) $(LIBS)
1118
1119OBJSa=../src/tls/asn1_test.o ../src/tls/asn1.o ../src/tls/x509v3.o ../src/utils/common.o ../src/utils/wpa_debug.o ../src/utils/os_unix.o \
1120	../src/crypto/crypto_$(CONFIG_CRYPTO).o ../src/crypto/md5.o ../src/crypto/sha1.o \
1121	../src/crypto/rc4.o ../src/crypto/des.o ../src/crypto/aes_wrap.o \
1122	../src/crypto/aes.o ../src/tls/bignum.o ../src/tls/rsa.o
1123asn1_test: $(OBJSa)
1124	$(LDO) $(LDFLAGS) -o asn1_test $(OBJSa)
1125
1126OBJSx=tests/test_x509v3.o ../src/tls/asn1.o ../src/tls/x509v3.o \
1127	../src/utils/common.o ../src/utils/wpa_debug.o ../src/utils/os_unix.o \
1128	../src/crypto/crypto_$(CONFIG_CRYPTO).o \
1129	../src/crypto/md5.o ../src/crypto/sha1.o ../src/crypto/aes.o \
1130	../src/crypto/rc4.o ../src/crypto/des.o ../src/crypto/aes_wrap.o \
1131	../src/crypto/sha256.o \
1132	../src/tls/bignum.o ../src/tls/rsa.o
1133test_x509v3: $(OBJSx)
1134	$(LDO) $(LDFLAGS) -o test_x509v3 $(OBJSx)
1135
1136win_if_list: win_if_list.c
1137	$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
1138
1139eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
1140	$(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1141		-Deap_peer_psk_register=eap_peer_method_dynamic_init
1142
1143eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
1144	$(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1145		-Deap_peer_pax_register=eap_peer_method_dynamic_init
1146
1147eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
1148	$(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1149		-Deap_peer_sake_register=eap_peer_method_dynamic_init
1150
1151eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c
1152	$(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1153		-Deap_peer_wsc_register=eap_peer_method_dynamic_init
1154
1155eap_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
1156	$(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1157		-Deap_peer_ikev2_register=eap_peer_method_dynamic_init
1158
1159%.so: %.c
1160	$(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
1161		-D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
1162
1163Q=@
1164E=echo
1165ifeq ($(V), 1)
1166Q=
1167E=true
1168endif
1169
1170%.o: %.c
1171	$(Q)$(CC) -c -o $@ $(CFLAGS) $<
1172	@$(E) "  CC " $<
1173
1174wpa_supplicant.exe: wpa_supplicant
1175	mv -f $< $@
1176wpa_cli.exe: wpa_cli
1177	mv -f $< $@
1178wpa_passphrase.exe: wpa_passphrase
1179	mv -f $< $@
1180win_if_list.exe: win_if_list
1181	mv -f $< $@
1182eapol_test.exe: eapol_test
1183	mv -f $< $@
1184
1185WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
1186
1187windows-bin: $(WINALL)
1188	$(STRIP) $(WINALL)
1189
1190wpa_gui/Makefile:
1191	qmake -o wpa_gui/Makefile wpa_gui/wpa_gui.pro 
1192
1193wpa_gui: wpa_gui/Makefile
1194	$(MAKE) -C wpa_gui
1195
1196wpa_gui-qt4/Makefile:
1197	qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro 
1198
1199wpa_gui-qt4: wpa_gui-qt4/Makefile
1200	$(MAKE) -C wpa_gui-qt4
1201
1202TEST_MS_FUNCS_OBJS = ../src/crypto/crypto_openssl.o ../src/crypto/sha1.o ../src/crypto/md5.o \
1203	../src/utils/os_unix.o ../src/crypto/rc4.o tests/test_ms_funcs.o
1204test-ms_funcs: $(TEST_MS_FUNCS_OBJS)
1205	$(LDO) $(LDFLAGS) -o $@ $(TEST_MS_FUNCS_OBJS) $(LIBS) -lcrypto
1206	./test-ms_funcs
1207	rm test-ms_funcs
1208
1209TEST_SHA1_OBJS = ../src/crypto/sha1.o ../src/crypto/md5.o tests/test_sha1.o #../src/crypto/crypto_openssl.o
1210test-sha1: $(TEST_SHA1_OBJS)
1211	$(LDO) $(LDFLAGS) -o $@ $(TEST_SHA1_OBJS) $(LIBS)
1212	./test-sha1
1213	rm test-sha1
1214
1215TEST_SHA256_OBJS = ../src/crypto/sha256.o ../src/crypto/md5.o tests/test_sha256.o ../src/utils/os_unix.o ../src/crypto/crypto_openssl.o
1216test-sha256: $(TEST_SHA256_OBJS)
1217	$(LDO) $(LDFLAGS) -o $@ $(TEST_SHA256_OBJS) $(LIBS)
1218	./test-sha256
1219	rm test-sha256
1220
1221TEST_AES_OBJS = ../src/crypto/aes_wrap.o ../src/crypto/aes.o tests/test_aes.o
1222test-aes: $(TEST_AES_OBJS)
1223	$(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS)
1224	./test-aes
1225	rm test-aes
1226
1227TEST_EAP_SIM_COMMON_OBJS = ../src/crypto/sha1.o ../src/crypto/md5.o \
1228	../src/crypto/aes_wrap.o ../src/utils/common.o ../src/utils/os_unix.o \
1229	../src/utils/wpa_debug.o ../src/crypto/aes.o \
1230	tests/test_eap_sim_common.o
1231test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS)
1232	$(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS)
1233	./test-eap_sim_common
1234	rm test-eap_sim_common
1235
1236TEST_MD4_OBJS = ../src/crypto/md4.o tests/test_md4.o #../src/crypto/crypto_openssl.o
1237test-md4: $(TEST_MD4_OBJS)
1238	$(LDO) $(LDFLAGS) -o $@ $(TEST_MD4_OBJS) $(LIBS)
1239	./test-md4
1240	rm test-md4
1241
1242TEST_MD5_OBJS = ../src/crypto/md5.o tests/test_md5.o #../src/crypto/crypto_openssl.o
1243test-md5: $(TEST_MD5_OBJS)
1244	$(LDO) $(LDFLAGS) -o $@ $(TEST_MD5_OBJS) $(LIBS)
1245	./test-md5
1246	rm test-md5
1247
1248tests: test-ms_funcs test-sha1 test-aes test-eap_sim_common test-md4 test-md5
1249
1250clean:
1251	$(MAKE) -C ../src clean
1252	rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL) eapol_test preauth_test
1253	rm -f wpa_priv
1254
1255%.eps: %.fig
1256	fig2dev -L eps $*.fig $*.eps
1257
1258%.png: %.fig
1259	fig2dev -L png -m 3 $*.fig | pngtopnm | pnmscale 0.4 | pnmtopng \
1260		> $*.png
1261
1262docs-pics: doc/wpa_supplicant.png doc/wpa_supplicant.eps
1263
1264docs: docs-pics
1265	(cd ..; doxygen wpa_supplicant/doc/doxygen.full; cd wpa_supplicant)
1266	$(MAKE) -C doc/latex
1267	cp doc/latex/refman.pdf wpa_supplicant-devel.pdf
1268
1269docs-fast: docs-pics
1270	(cd ..; doxygen wpa_supplicant/doc/doxygen.fast; cd wpa_supplicant)
1271
1272clean-docs:
1273	rm -rf doc/latex doc/html
1274	rm -f doc/wpa_supplicant.{eps,png} wpa_supplicant-devel.pdf
1275
1276-include $(OBJS:%.o=%.d)
1277