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