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