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