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